From 8904af6a8b381fa526b6a8fefbe6c4b15bf149f3 Mon Sep 17 00:00:00 2001 From: Frank Voorburg Date: Fri, 3 Aug 2018 12:40:47 +0000 Subject: [PATCH] Refs #593. Merged branch with support for high ping firmware updates via TCP/IP back into the trunk. git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@579 5dc33758-31d5-4daf-9ae8-b24bf3d40d73 --- Doc/doxygen/DoxyfileBootCommander | 2 +- Doc/doxygen/DoxyfileLibOpenBLT | 2 +- Host/Source/BootCommander/main.c | 21 ++- .../LibOpenBLT/bindings/pascal/openblt.pas | 1 + .../LibOpenBLT/bindings/python/openblt/lib.py | 4 + Host/Source/LibOpenBLT/openblt.c | 5 +- Host/Source/LibOpenBLT/openblt.h | 1 + Host/Source/LibOpenBLT/xcploader.c | 7 +- Host/Source/LibOpenBLT/xcploader.h | 2 + Host/Source/MicroBoot/MicroBoot.lps | 147 +++++++++--------- Host/Source/MicroBoot/configgroups.pas | 5 + Host/Source/MicroBoot/firmwareupdate.pas | 3 + Host/Source/MicroBoot/mainunit.pas | 2 +- Host/Source/MicroBoot/sessionxcpdialog.lfm | 84 ++++++---- Host/Source/MicroBoot/sessionxcpdialog.pas | 10 ++ 15 files changed, 175 insertions(+), 121 deletions(-) diff --git a/Doc/doxygen/DoxyfileBootCommander b/Doc/doxygen/DoxyfileBootCommander index c59287df..495ee254 100644 --- a/Doc/doxygen/DoxyfileBootCommander +++ b/Doc/doxygen/DoxyfileBootCommander @@ -38,7 +38,7 @@ PROJECT_NAME = "BootCommander - Reference Manual" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.4.0 +PROJECT_NUMBER = 1.4.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Doc/doxygen/DoxyfileLibOpenBLT b/Doc/doxygen/DoxyfileLibOpenBLT index 1dfc69d3..35a1c06a 100644 --- a/Doc/doxygen/DoxyfileLibOpenBLT +++ b/Doc/doxygen/DoxyfileLibOpenBLT @@ -38,7 +38,7 @@ PROJECT_NAME = "OpenBLT Host Library - Reference Manual" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.3.1 +PROJECT_NUMBER = 1.3.2 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Host/Source/BootCommander/main.c b/Host/Source/BootCommander/main.c index 26af01fe..67f8ecd8 100644 --- a/Host/Source/BootCommander/main.c +++ b/Host/Source/BootCommander/main.c @@ -268,7 +268,8 @@ int main(int argc, char const * const argv[]) { printf("[" OUTPUT_YELLOW "TIMEOUT" OUTPUT_RESET "]\n"); /* No response. Prompt the user to reset the system. */ - printf("Reset target system..."); (void)fflush(stdout); + printf("Attempting backdoor entry (reset system if this takes too long)..."); + (void)fflush(stdout); /* Now keep trying until we get a response. */ while (BltSessionStart() != BLT_RESULT_OK) { @@ -471,8 +472,8 @@ int main(int argc, char const * const argv[]) static void DisplayProgramInfo(void) { printf("--------------------------------------------------------------------------\n"); - printf("BootCommander version 1.04. Performs firmware updates on a microcontroller\n"); - printf("based system that runs the OpenBLT bootloader.\n\n"); + printf("BootCommander version 1.04.01. Performs firmware updates on a micro-\n"); + printf("controller based system that runs the OpenBLT bootloader.\n\n"); printf("Copyright (c) 2017 by Feaser http://www.feaser.com\n"); printf("-------------------------------------------------------------------------\n"); } /*** end of DisplayProgramInfo ***/ @@ -507,6 +508,8 @@ static void DisplayProgramUsage(void) printf(" value (Default = 10000 ms).\n"); printf(" -t5=[timeout] Program memory and target reset timeout in milli-\n"); printf(" seconds as a 16-bit value (Default = 1000 ms).\n"); + printf(" -t6=[timeout] Connect response timeout in milliseconds as a 16-bit\n"); + printf(" value (Default = 50 ms).\n"); printf(" -t7=[timeout] Busy wait timer timeout in milliseconds as a 16-bit\n"); printf(" value (Default = 2000 ms).\n"); printf(" -sk=[file] Seed/key algorithm library filename (Optional).\n"); @@ -607,6 +610,7 @@ static void DisplaySessionInfo(uint32_t sessionType, void const * sessionSetting printf(" -> Timeout T3: %hu ms\n", xcpSettings->timeoutT3); printf(" -> Timeout T4: %hu ms\n", xcpSettings->timeoutT4); printf(" -> Timeout T5: %hu ms\n", xcpSettings->timeoutT5); + printf(" -> Timeout T6: %hu ms\n", xcpSettings->timeoutT6); printf(" -> Timeout T7: %hu ms\n", xcpSettings->timeoutT7); printf(" -> Seed/Key file: "); if (xcpSettings->seedKeyFile != NULL) @@ -925,6 +929,7 @@ static void * ExtractSessionSettingsFromCommandLine(int argc, char const * const * -t3=[timeout] -> Start programming timeout in milliseconds. * -t4=[timeout] -> Erase memory timeout in milliseconds. * -t5=[timeout] -> Program memory and reset timeout in milliseconds. + * -t6=[timeout] -> Connect response timeout in milliseconds. * -t7=[timeout] -> Busy wait timer timeout in milliseconds. * -sk=[file] -> Seed/key algorithm library filename. * -cm=[value] -> Connection mode parameter in XCP connect command. @@ -941,6 +946,7 @@ static void * ExtractSessionSettingsFromCommandLine(int argc, char const * const xcpSettings->timeoutT3 = 2000; xcpSettings->timeoutT4 = 10000; xcpSettings->timeoutT5 = 1000; + xcpSettings->timeoutT6 = 50; xcpSettings->timeoutT7 = 2000; xcpSettings->seedKeyFile = NULL; xcpSettings->connectMode = 0; @@ -985,6 +991,15 @@ static void * ExtractSessionSettingsFromCommandLine(int argc, char const * const /* Continue with next loop iteration. */ continue; } + /* Is this the -t6=[timeout] parameter? */ + if ( (strstr(argv[paramIdx], "-t6=") != NULL) && + (strlen(argv[paramIdx]) > 4) ) + { + /* Extract the timeout value. */ + sscanf(&argv[paramIdx][4], "%hu", &(xcpSettings->timeoutT6)); + /* Continue with next loop iteration. */ + continue; + } /* Is this the -t7=[timeout] parameter? */ if ( (strstr(argv[paramIdx], "-t7=") != NULL) && (strlen(argv[paramIdx]) > 4) ) diff --git a/Host/Source/LibOpenBLT/bindings/pascal/openblt.pas b/Host/Source/LibOpenBLT/bindings/pascal/openblt.pas index a99415d3..fd41c49c 100644 --- a/Host/Source/LibOpenBLT/bindings/pascal/openblt.pas +++ b/Host/Source/LibOpenBLT/bindings/pascal/openblt.pas @@ -86,6 +86,7 @@ type timeoutT3: Word; // Start programming timeout in milliseconds. timeoutT4: Word; // Erase memory timeout in milliseonds. timeoutT5: Word; // Program memory and reset timeout in milliseonds. + timeoutT6: Word; // Connect response timeout in milliseonds. timeoutT7: Word; // Busy wait timer timeout in milliseonds. seedKeyFile: PAnsiChar; // Seed/key algorithm library filename. connectMode: Byte; // Connection mode parameter in XCP connect command. diff --git a/Host/Source/LibOpenBLT/bindings/python/openblt/lib.py b/Host/Source/LibOpenBLT/bindings/python/openblt/lib.py index 18d10edd..97d3096d 100644 --- a/Host/Source/LibOpenBLT/bindings/python/openblt/lib.py +++ b/Host/Source/LibOpenBLT/bindings/python/openblt/lib.py @@ -834,6 +834,7 @@ class BltSessionSettingsXcpV10: self.timeoutT3 = 2000 # Start programming timeout in milliseconds. self.timeoutT4 = 10000 # Erase memory timeout in milliseonds. self.timeoutT5 = 1000 # Program memory and reset timeout in milliseconds. + self.timeoutT6 = 50 # Command response timeout in milliseconds. self.timeoutT7 = 2000 # Busy wait timer timeout in milliseconds. self.seedKeyFile = '' # Seed/key algorithm library filename. self.connectMode = 0 # Connection mode parameter in XCP connect command. @@ -929,6 +930,7 @@ def session_init(session_type, session_settings, transport_type, transport_setti session_settings.timeoutT3 = 2000 session_settings.timeoutT4 = 10000 session_settings.timeoutT5 = 1000 + session_settings.timeoutT6 = 50 session_settings.timeoutT7 = 2000 session_settings.seedKeyFile = '' session_settings.connectMode = 0 @@ -947,6 +949,7 @@ def session_init(session_type, session_settings, transport_type, transport_setti ('timeoutT3', ctypes.c_uint16), ('timeoutT4', ctypes.c_uint16), ('timeoutT5', ctypes.c_uint16), + ('timeoutT6', ctypes.c_uint16), ('timeoutT7', ctypes.c_uint16), ('seedKeyFile', ctypes.c_char_p), ('connectMode', ctypes.c_uint8)] @@ -984,6 +987,7 @@ def session_init(session_type, session_settings, transport_type, transport_setti session_settings_struct.timeoutT3 = ctypes.c_uint16(session_settings.timeoutT3) session_settings_struct.timeoutT4 = ctypes.c_uint16(session_settings.timeoutT4) session_settings_struct.timeoutT5 = ctypes.c_uint16(session_settings.timeoutT5) + session_settings_struct.timeoutT6 = ctypes.c_uint16(session_settings.timeoutT6) session_settings_struct.timeoutT7 = ctypes.c_uint16(session_settings.timeoutT7) session_settings_struct.seedKeyFile = \ ctypes.c_char_p(session_settings.seedKeyFile.encode('utf-8')) diff --git a/Host/Source/LibOpenBLT/openblt.c b/Host/Source/LibOpenBLT/openblt.c index a71cd6e0..b6104519 100644 --- a/Host/Source/LibOpenBLT/openblt.c +++ b/Host/Source/LibOpenBLT/openblt.c @@ -51,10 +51,10 @@ * for major-, minor-, and patch-version. Version 1.05.12 would for example be * 10512. */ -#define BLT_VERSION_NUMBER (10301u) +#define BLT_VERSION_NUMBER (10302u) /** \brief The version number of the library as a null-terminated string. */ -#define BLT_VERSION_STRING "1.03.01" +#define BLT_VERSION_STRING "1.03.02" /**************************************************************************************** @@ -140,6 +140,7 @@ LIBOPENBLT_EXPORT void BltSessionInit(uint32_t sessionType, xcpLoaderSettings.timeoutT3 = bltSessionSettingsXcpV10Ptr->timeoutT3; xcpLoaderSettings.timeoutT4 = bltSessionSettingsXcpV10Ptr->timeoutT4; xcpLoaderSettings.timeoutT5 = bltSessionSettingsXcpV10Ptr->timeoutT5; + xcpLoaderSettings.timeoutT6 = bltSessionSettingsXcpV10Ptr->timeoutT6; xcpLoaderSettings.timeoutT7 = bltSessionSettingsXcpV10Ptr->timeoutT7; xcpLoaderSettings.seedKeyFile = bltSessionSettingsXcpV10Ptr->seedKeyFile; xcpLoaderSettings.connectMode = bltSessionSettingsXcpV10Ptr->connectMode; diff --git a/Host/Source/LibOpenBLT/openblt.h b/Host/Source/LibOpenBLT/openblt.h index d7cd1b52..30d655d8 100644 --- a/Host/Source/LibOpenBLT/openblt.h +++ b/Host/Source/LibOpenBLT/openblt.h @@ -124,6 +124,7 @@ typedef struct t_blt_session_settings_xcp_v10 uint16_t timeoutT3; /**< Start programming timeout in milliseconds. */ uint16_t timeoutT4; /**< Erase memory timeout in milliseconds. */ uint16_t timeoutT5; /**< Program memory and reset timeout in milliseconds.*/ + uint16_t timeoutT6; /**< Connect response timeout in milliseconds. */ uint16_t timeoutT7; /**< Busy wait timer timeout in milliseonds. */ char const * seedKeyFile; /**< Seed/key algorithm library filename. */ uint8_t connectMode; /**< Connection mode parameter in XCP connect command.*/ diff --git a/Host/Source/LibOpenBLT/xcploader.c b/Host/Source/LibOpenBLT/xcploader.c index 027951d4..bf3a82e4 100644 --- a/Host/Source/LibOpenBLT/xcploader.c +++ b/Host/Source/LibOpenBLT/xcploader.c @@ -59,9 +59,6 @@ /* XCP response packet IDs as defined by the protocol. */ #define XCPLOADER_CMD_PID_RES (0xFFu) /**< positive response */ -/** \brief Maximum timeout for the XCP connect command. */ -#define XCPLOADER_CONNECT_TIMEOUT_MS (50u) - /** \brief Number of retries to connect to the XCP slave. */ #define XCPLOADER_CONNECT_RETRIES (5u) @@ -169,6 +166,7 @@ static void XcpLoaderInit(void const * settings) xcpSettings.timeoutT3 = 2000; xcpSettings.timeoutT4 = 10000; xcpSettings.timeoutT5 = 1000; + xcpSettings.timeoutT6 = 50; xcpSettings.timeoutT7 = 2000; xcpSettings.connectMode = 0; xcpSettings.seedKeyFile = NULL; @@ -244,6 +242,7 @@ static void XcpLoaderTerminate(void) xcpSettings.timeoutT3 = 2000; xcpSettings.timeoutT4 = 10000; xcpSettings.timeoutT5 = 1000; + xcpSettings.timeoutT6 = 50; xcpSettings.timeoutT7 = 2000; xcpSettings.connectMode = 0; xcpSettings.seedKeyFile = NULL; @@ -695,7 +694,7 @@ static bool XcpLoaderSendCmdConnect(void) cmdPacket.len = 2; /* Send the packet. */ if (!xcpSettings.transport->SendPacket(&cmdPacket, &resPacket, - XCPLOADER_CONNECT_TIMEOUT_MS)) + xcpSettings.timeoutT6)) { /* Could not send packet or receive response within the specified timeout. */ result = false; diff --git a/Host/Source/LibOpenBLT/xcploader.h b/Host/Source/LibOpenBLT/xcploader.h index 4be29766..0aeecb1c 100644 --- a/Host/Source/LibOpenBLT/xcploader.h +++ b/Host/Source/LibOpenBLT/xcploader.h @@ -90,6 +90,8 @@ typedef struct t_xcp_loader_settings uint16_t timeoutT4; /** \brief Program memory and reset timeout in milliseconds. */ uint16_t timeoutT5; + /** \brief Connect response timeout in milliseconds. */ + uint16_t timeoutT6; /** \brief Busy wait timer timeout in milliseconds. */ uint16_t timeoutT7; /** \brief Connection mode used in the XCP connect command. */ diff --git a/Host/Source/MicroBoot/MicroBoot.lps b/Host/Source/MicroBoot/MicroBoot.lps index c43352de..24a7fdb1 100644 --- a/Host/Source/MicroBoot/MicroBoot.lps +++ b/Host/Source/MicroBoot/MicroBoot.lps @@ -19,8 +19,9 @@ - - + + + @@ -31,7 +32,7 @@ - + @@ -39,18 +40,17 @@ - - + + - - - - + + + @@ -61,11 +61,10 @@ - + - @@ -74,10 +73,12 @@ - - - + + + + + @@ -152,12 +153,12 @@ - - - + + + - + @@ -174,11 +175,10 @@ - + - @@ -296,126 +296,119 @@ - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - - - - - - - - diff --git a/Host/Source/MicroBoot/configgroups.pas b/Host/Source/MicroBoot/configgroups.pas index 98d21ddc..80d357ac 100644 --- a/Host/Source/MicroBoot/configgroups.pas +++ b/Host/Source/MicroBoot/configgroups.pas @@ -95,6 +95,7 @@ type FTimeoutT3: Integer; FTimeoutT4: Integer; FTimeoutT5: Integer; + FTimeoutT6: Integer; FTimeoutT7: Integer; FConnectMode: Integer; FSeedKey: String; @@ -108,6 +109,7 @@ type property TimeoutT3: Integer read FTimeoutT3 write FTimeoutT3; property TimeoutT4: Integer read FTimeoutT4 write FTimeoutT4; property TimeoutT5: Integer read FTimeoutT5 write FTimeoutT5; + property TimeoutT6: Integer read FTimeoutT6 write FTimeoutT6; property TimeoutT7: Integer read FTimeoutT7 write FTimeoutT7; property ConnectMode: Integer read FConnectMode write FConnectMode; property SeedKey: String read FSeedKey write FSeedKey; @@ -444,6 +446,7 @@ begin FTimeoutT3 := 2000; FTimeoutT4 := 10000; FTimeoutT5 := 1000; + FTimeoutT6 := 50; FTimeoutT7 := 2000; FConnectMode := 0; FSeedKey := ''; @@ -467,6 +470,7 @@ begin FTimeoutT3 := XmlConfig.GetValue('timeout_t3', FTimeoutT3); FTimeoutT4 := XmlConfig.GetValue('timeout_t4', FTimeoutT4); FTimeoutT5 := XmlConfig.GetValue('timeout_t5', FTimeoutT5); + FTimeoutT6 := XmlConfig.GetValue('timeout_t6', FTimeoutT6); FTimeoutT7 := XmlConfig.GetValue('timeout_t7', FTimeoutT7); FConnectMode := XmlConfig.GetValue('connect_mode', FConnectMode); FSeedKey := String(XmlConfig.GetValue('seed_key', UnicodeString(FSeedKey))); @@ -492,6 +496,7 @@ begin XmlConfig.SetValue('timeout_t3', FTimeoutT3); XmlConfig.SetValue('timeout_t4', FTimeoutT4); XmlConfig.SetValue('timeout_t5', FTimeoutT5); + XmlConfig.SetValue('timeout_t6', FTimeoutT6); XmlConfig.SetValue('timeout_t7', FTimeoutT7); XmlConfig.SetValue('connect_mode', FConnectMode); XmlConfig.SetValue('seed_key', UnicodeString(FSeedKey)); diff --git a/Host/Source/MicroBoot/firmwareupdate.pas b/Host/Source/MicroBoot/firmwareupdate.pas index fdf5cd6a..62f7cf0b 100644 --- a/Host/Source/MicroBoot/firmwareupdate.pas +++ b/Host/Source/MicroBoot/firmwareupdate.pas @@ -788,6 +788,7 @@ begin sessionSettingsXcp.timeoutT3 := sessionXcpConfig.TimeoutT3; sessionSettingsXcp.timeoutT4 := sessionXcpConfig.TimeoutT4; sessionSettingsXcp.timeoutT5 := sessionXcpConfig.TimeoutT5; + sessionSettingsXcp.timeoutT6 := sessionXcpConfig.TimeoutT6; sessionSettingsXcp.timeoutT7 := sessionXcpConfig.TimeoutT7; sessionSettingsXcp.connectMode := sessionXcpConfig.ConnectMode; sessionSettingsXcp.seedKeyFile := PAnsiChar(AnsiString(sessionXcpConfig.SeedKey)); @@ -926,6 +927,8 @@ begin Synchronize(@SynchronizeLogEvent); FLogString := ' -> Timeout T5: ' + IntToStr(sessionXcpConfig.TimeoutT5) + ' ms'; Synchronize(@SynchronizeLogEvent); + FLogString := ' -> Timeout T6: ' + IntToStr(sessionXcpConfig.TimeoutT6) + ' ms'; + Synchronize(@SynchronizeLogEvent); FLogString := ' -> Timeout T7: ' + IntToStr(sessionXcpConfig.TimeoutT7) + ' ms'; Synchronize(@SynchronizeLogEvent); if sessionXcpConfig.SeedKey <> '' then diff --git a/Host/Source/MicroBoot/mainunit.pas b/Host/Source/MicroBoot/mainunit.pas index 26f9ca30..51c181fe 100644 --- a/Host/Source/MicroBoot/mainunit.pas +++ b/Host/Source/MicroBoot/mainunit.pas @@ -48,7 +48,7 @@ uses //*************************************************************************************** const PROGRAM_NAME_STR = 'MicroBoot'; - PROGRAM_VERSION_STR = 'v2.00'; + PROGRAM_VERSION_STR = 'v2.01'; //*************************************************************************************** diff --git a/Host/Source/MicroBoot/sessionxcpdialog.lfm b/Host/Source/MicroBoot/sessionxcpdialog.lfm index 394ea264..3323c1f6 100644 --- a/Host/Source/MicroBoot/sessionxcpdialog.lfm +++ b/Host/Source/MicroBoot/sessionxcpdialog.lfm @@ -1,19 +1,19 @@ object SessionXcpForm: TSessionXcpForm - Left = 1306 + Left = 582 Height = 308 - Top = 661 + Top = 371 Width = 407 Caption = 'XCP Session' ClientHeight = 308 ClientWidth = 407 OnCreate = FormCreate OnDestroy = FormDestroy - LCLVersion = '1.6.2.0' + LCLVersion = '1.8.2.0' object LblTimeouts: TLabel Left = 8 - Height = 17 + Height = 16 Top = 160 - Width = 56 + Width = 59 Caption = 'Timeouts' Font.Style = [fsBold] ParentColor = False @@ -21,15 +21,15 @@ object SessionXcpForm: TSessionXcpForm end object LblTimeoutT1: TLabel Left = 23 - Height = 17 + Height = 16 Top = 187 - Width = 45 + Width = 47 Caption = 'T1 (ms):' ParentColor = False end object EdtTimeoutT1: TEdit Left = 80 - Height = 29 + Height = 28 Hint = 'Command response timeout in milliseconds as a 16-bit value (Default = 1000 ms)' Top = 184 Width = 115 @@ -41,15 +41,15 @@ object SessionXcpForm: TSessionXcpForm end object LblTimeoutT3: TLabel Left = 23 - Height = 17 + Height = 16 Top = 227 - Width = 45 + Width = 47 Caption = 'T3 (ms):' ParentColor = False end object EdtTimeoutT3: TEdit Left = 80 - Height = 29 + Height = 28 Hint = 'Start programming timeout in milliseconds as a 16-bit value (Default = 2000 ms)' Top = 224 Width = 115 @@ -61,15 +61,15 @@ object SessionXcpForm: TSessionXcpForm end object LblTimeoutT4: TLabel Left = 23 - Height = 17 + Height = 16 Top = 267 - Width = 45 + Width = 47 Caption = 'T4 (ms):' ParentColor = False end object EdtTimeoutT4: TEdit Left = 80 - Height = 29 + Height = 28 Hint = 'Erase memory timeout in milliseconds as a 16-bit value (Default = 10000 ms)' Top = 264 Width = 115 @@ -81,15 +81,15 @@ object SessionXcpForm: TSessionXcpForm end object LblTimeoutT5: TLabel Left = 226 - Height = 17 + Height = 16 Top = 187 - Width = 45 + Width = 47 Caption = 'T5 (ms):' ParentColor = False end object EdtTimeoutT5: TEdit Left = 280 - Height = 29 + Height = 28 Hint = 'Program memory and target reset timeout in milliseconds as a 16-bit value (Default = 1000 ms)' Top = 184 Width = 115 @@ -101,17 +101,17 @@ object SessionXcpForm: TSessionXcpForm end object LblTimeoutT7: TLabel Left = 226 - Height = 17 - Top = 227 - Width = 45 + Height = 16 + Top = 267 + Width = 47 Caption = 'T7 (ms):' ParentColor = False end object EdtTimeoutT7: TEdit Left = 280 - Height = 29 + Height = 28 Hint = 'Busy wait timer timeout in milliseconds as a 16-bit value (Default = 2000 ms)' - Top = 224 + Top = 264 Width = 115 OnChange = EdtTimeoutChange OnKeyPress = EdtTimeoutKeyPress @@ -121,9 +121,9 @@ object SessionXcpForm: TSessionXcpForm end object LblConnection: TLabel Left = 8 - Height = 17 + Height = 16 Top = 8 - Width = 68 + Width = 74 Caption = 'Connection' Font.Style = [fsBold] ParentColor = False @@ -131,15 +131,15 @@ object SessionXcpForm: TSessionXcpForm end object LblConnectMode: TLabel Left = 23 - Height = 17 + Height = 16 Top = 38 - Width = 35 + Width = 38 Caption = 'Mode:' ParentColor = False end object CmbConnectMode: TComboBox Left = 80 - Height = 27 + Height = 26 Hint = 'Connection mode value sent in the XCP connect command as a 8-bit value (Default=0)' Top = 35 Width = 120 @@ -411,9 +411,9 @@ object SessionXcpForm: TSessionXcpForm end object LblSecurity: TLabel Left = 8 - Height = 17 + Height = 16 Top = 72 - Width = 49 + Width = 54 Caption = 'Security' Font.Style = [fsBold] ParentColor = False @@ -421,15 +421,15 @@ object SessionXcpForm: TSessionXcpForm end object LblSeedKey: TLabel Left = 23 - Height = 17 + Height = 16 Top = 96 - Width = 276 + Width = 298 Caption = 'Select your seed/key algorithm shared library file:' ParentColor = False end object EdtSeedKey: TEdit Left = 23 - Height = 29 + Height = 28 Hint = 'Seed/key algorithm shared library filename (Optional)' Top = 120 Width = 281 @@ -446,6 +446,26 @@ object SessionXcpForm: TSessionXcpForm OnClick = BtnSeedKeyClick TabOrder = 2 end + object LblTimeoutT6: TLabel + Left = 224 + Height = 16 + Top = 227 + Width = 47 + Caption = 'T6 (ms):' + ParentColor = False + end + object EdtTimeoutT6: TEdit + Left = 280 + Height = 28 + Hint = 'Connect response timeout in milliseconds as a 16-bit value (Default = 50 ms)' + Top = 224 + Width = 115 + OnChange = EdtTimeoutChange + OnKeyPress = EdtTimeoutKeyPress + ParentShowHint = False + ShowHint = True + TabOrder = 8 + end object OpenDialog: TOpenDialog Filter = 'Shared libraries (*.dll;*.so)|*.dll;*.so|All files (*.*)|*.*' Options = [ofFileMustExist, ofEnableSizing, ofViewDetail] diff --git a/Host/Source/MicroBoot/sessionxcpdialog.pas b/Host/Source/MicroBoot/sessionxcpdialog.pas index f59762dd..84d7bd69 100644 --- a/Host/Source/MicroBoot/sessionxcpdialog.pas +++ b/Host/Source/MicroBoot/sessionxcpdialog.pas @@ -47,6 +47,9 @@ uses //*************************************************************************************** type //------------------------------ TSessionXcpForm ---------------------------------------- + + { TSessionXcpForm } + TSessionXcpForm = class(TForm) BtnSeedKey: TButton; CmbConnectMode: TComboBox; @@ -55,6 +58,7 @@ type EdtTimeoutT3: TEdit; EdtTimeoutT4: TEdit; EdtTimeoutT5: TEdit; + EdtTimeoutT6: TEdit; EdtTimeoutT7: TEdit; LblConnection: TLabel; LblSeedKey: TLabel; @@ -65,6 +69,7 @@ type LblTimeoutT3: TLabel; LblTimeoutT4: TLabel; LblTimeoutT5: TLabel; + LblTimeoutT6: TLabel; LblTimeoutT7: TLabel; OpenDialog: TOpenDialog; procedure BtnSeedKeyClick(Sender: TObject); @@ -211,6 +216,7 @@ begin FSessionXcpConfig.TimeoutT3 := Config.TimeoutT3; FSessionXcpConfig.TimeoutT4 := Config.TimeoutT4; FSessionXcpConfig.TimeoutT5 := Config.TimeoutT5; + FSessionXcpConfig.TimeoutT6 := Config.TimeoutT6; FSessionXcpConfig.TimeoutT7 := Config.TimeoutT7; FSessionXcpConfig.ConnectMode := Config.ConnectMode; FSessionXcpConfig.SeedKey := Config.SeedKey; @@ -221,6 +227,7 @@ begin EdtTimeoutT3.Text := IntToStr(FSessionXcpConfig.TimeoutT3); EdtTimeoutT4.Text := IntToStr(FSessionXcpConfig.TimeoutT4); EdtTimeoutT5.Text := IntToStr(FSessionXcpConfig.TimeoutT5); + EdtTimeoutT6.Text := IntToStr(FSessionXcpConfig.TimeoutT6); EdtTimeoutT7.Text := IntToStr(FSessionXcpConfig.TimeoutT7); end; //*** end of LoadConfig *** @@ -248,6 +255,8 @@ begin FSessionXcpConfig.TimeoutT4 := StrToInt(EdtTimeoutT4.Text); if EdtTimeoutT5.Text <> '' then FSessionXcpConfig.TimeoutT5 := StrToInt(EdtTimeoutT5.Text); + if EdtTimeoutT6.Text <> '' then + FSessionXcpConfig.TimeoutT6 := StrToInt(EdtTimeoutT6.Text); if EdtTimeoutT7.Text <> '' then FSessionXcpConfig.TimeoutT7 := StrToInt(EdtTimeoutT7.Text); // Store configuration. @@ -255,6 +264,7 @@ begin Config.TimeoutT3 := FSessionXcpConfig.TimeoutT3; Config.TimeoutT4 := FSessionXcpConfig.TimeoutT4; Config.TimeoutT5 := FSessionXcpConfig.TimeoutT5; + Config.TimeoutT6 := FSessionXcpConfig.TimeoutT6; Config.TimeoutT7 := FSessionXcpConfig.TimeoutT7; Config.ConnectMode := FSessionXcpConfig.ConnectMode; Config.SeedKey := FSessionXcpConfig.SeedKey;