From 0e707de0ec3c481446b80224f743a44f51e105e2 Mon Sep 17 00:00:00 2001 From: Frank Voorburg Date: Mon, 18 Sep 2017 21:31:22 +0000 Subject: [PATCH] Refs #335. Added XCP Connection Mode configuration setting to LibOpenBLT and BootCommander. git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@366 5dc33758-31d5-4daf-9ae8-b24bf3d40d73 --- Host/BootCommander.exe | Bin 163840 -> 164864 bytes Host/Source/BootCommander/main.c | 16 +++++++++++++++- Host/Source/LibOpenBLT/openblt.c | 1 + Host/Source/LibOpenBLT/openblt.h | 1 + Host/Source/LibOpenBLT/openblt.pas | 3 ++- Host/Source/LibOpenBLT/xcploader.c | 2 +- Host/Source/LibOpenBLT/xcploader.h | 4 +++- Host/libopenblt.dll | Bin 142336 -> 142336 bytes 8 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Host/BootCommander.exe b/Host/BootCommander.exe index 7e5f131bea4e5912b2088fffaf99097b575dcbec..8588fad9824cab2757651f90410e3ffac8ceacaf 100644 GIT binary patch delta 30077 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%0D$#+}A1#wb&aNp6ZW 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 Connection mode: %hhu\n", xcpSettings->connectMode); } break; } @@ -832,7 +835,8 @@ static void * ExtractSessionSettingsFromCommandLine(int argc, char const * const * -t4=[timeout] -> Erase memory timeout in milliseconds. * -t5=[timeout] -> Program memory and reset timeout in milliseconds. * -t7=[timeout] -> Busy wait timer timeout in milliseconds. - * -sk=[file] -> Seed/key algorithm library filename. + * -sk=[file] -> Seed/key algorithm library filename. + * -cm=[value] -> Connection mode parameter in XCP connect command. */ /* Allocate memory for storing the settings and check the result. */ result = malloc(sizeof(tBltSessionSettingsXcpV10)); @@ -848,6 +852,7 @@ static void * ExtractSessionSettingsFromCommandLine(int argc, char const * const xcpSettings->timeoutT5 = 1000; xcpSettings->timeoutT7 = 2000; xcpSettings->seedKeyFile = NULL; + xcpSettings->connectMode = 0; /* Loop through all the command line parameters, just skip the 1st one because * this is the name of the program, which we are not interested in. */ @@ -907,6 +912,15 @@ static void * ExtractSessionSettingsFromCommandLine(int argc, char const * const /* Continue with next loop iteration. */ continue; } + /* Is this the -cm=[value] parameter? */ + if ( (strstr(argv[paramIdx], "-cm=") != NULL) && + (strlen(argv[paramIdx]) > 4) ) + { + /* Extract the connection mode value. */ + sscanf(&argv[paramIdx][4], "%hhu", &(xcpSettings->connectMode)); + /* Continue with next loop iteration. */ + continue; + } } } break; diff --git a/Host/Source/LibOpenBLT/openblt.c b/Host/Source/LibOpenBLT/openblt.c index 8c05737c..1b7304df 100644 --- a/Host/Source/LibOpenBLT/openblt.c +++ b/Host/Source/LibOpenBLT/openblt.c @@ -137,6 +137,7 @@ LIBOPENBLT_EXPORT void BltSessionInit(uint32_t sessionType, xcpLoaderSettings.timeoutT4 = bltSessionSettingsXcpV10Ptr->timeoutT4; xcpLoaderSettings.timeoutT5 = bltSessionSettingsXcpV10Ptr->timeoutT5; xcpLoaderSettings.timeoutT7 = bltSessionSettingsXcpV10Ptr->timeoutT7; + xcpLoaderSettings.connectMode = bltSessionSettingsXcpV10Ptr->connectMode; xcpLoaderSettings.transport = NULL; xcpLoaderSettings.transportSettings = NULL; /* Link the correct transport layer. */ diff --git a/Host/Source/LibOpenBLT/openblt.h b/Host/Source/LibOpenBLT/openblt.h index dba3bdad..f3aacada 100644 --- a/Host/Source/LibOpenBLT/openblt.h +++ b/Host/Source/LibOpenBLT/openblt.h @@ -116,6 +116,7 @@ typedef struct t_blt_session_settings_xcp_v10 uint16_t timeoutT5; /**< Program memory and reset timeout in milliseonds. */ 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.*/ } tBltSessionSettingsXcpV10; /** \brief Structure layout of the XCP version 1.0 RS232 transport layer settings. The diff --git a/Host/Source/LibOpenBLT/openblt.pas b/Host/Source/LibOpenBLT/openblt.pas index f21073f9..32ec8f32 100644 --- a/Host/Source/LibOpenBLT/openblt.pas +++ b/Host/Source/LibOpenBLT/openblt.pas @@ -82,7 +82,8 @@ type timeoutT4: Word; // Erase memory timeout in milliseonds. timeoutT5: Word; // Program memory and reset timeout in milliseonds. timeoutT7: Word; // Busy wait timer timeout in milliseonds. - seedKeyFile: PAnsiChar; // Seed/key algorithm library filename. + seedKeyFile: PAnsiChar; // Seed/key algorithm library filename. + connectMode: Byte; // Connection mode parameter in XCP connect command. end; // Structure layout of the XCP version 1.0 RS232 transport layer settings. diff --git a/Host/Source/LibOpenBLT/xcploader.c b/Host/Source/LibOpenBLT/xcploader.c index f6ef9020..baa84ac6 100644 --- a/Host/Source/LibOpenBLT/xcploader.c +++ b/Host/Source/LibOpenBLT/xcploader.c @@ -529,7 +529,7 @@ static bool XcpLoaderSendCmdConnect(void) result = true; /* Prepare the command packet. */ cmdPacket.data[0] = XCPLOADER_CMD_CONNECT; - cmdPacket.data[1] = 0; /* normal mode */ + cmdPacket.data[1] = xcpSettings.connectMode; cmdPacket.len = 2; /* Send the packet. */ if (!xcpSettings.transport->SendPacket(&cmdPacket, &resPacket, diff --git a/Host/Source/LibOpenBLT/xcploader.h b/Host/Source/LibOpenBLT/xcploader.h index 503c32b0..84b60907 100644 --- a/Host/Source/LibOpenBLT/xcploader.h +++ b/Host/Source/LibOpenBLT/xcploader.h @@ -91,7 +91,9 @@ typedef struct t_xcp_loader_settings /** \brief Program memory and reset timeout in milliseonds. */ uint16_t timeoutT5; /** \brief Busy wait timer timeout in milliseonds. */ - uint16_t timeoutT7; + uint16_t timeoutT7; + /** \brief Connection mode used in the XCP connect command. */ + uint8_t connectMode; /** \brief Pointer to the transport layer to use during protocol communications. */ tXcpTransport const * transport; /** \brief Pointer to the settings for the transport layer. */ diff --git a/Host/libopenblt.dll b/Host/libopenblt.dll index b85a6b518598c972cba0a23fbf161d178e322756..0de04829cd2cce790ce4bad54b6c1b6975122eba 100644 GIT binary patch delta 1032 zcmZ9Le@t6d6vyv*6xTVL_d@yt&J3nPHQAQHTOW+lfwH{?lhv@rCd`0Nx6H2mu|I6t zh+#mwnzj!Vb7rOqB#Zp9{Q+@XO^e2C6dHa+YnU4C5|;f4CQnCP&H9H5+wtNP8nkzZpF!S-F&mb2cffoQa$FB-81wKHxx(hndueJ{8-i=tB z6w&@z&~l8v1uf5~P`|{2-JyOv3qGgkeV@>hPwE57SJMlUDUa0)QYc;4oHyQ^;;@|s zcIaMv)VrcMB|yaO4NvX!*rT4T?#&Xs zpNElg$P$&?xz@6JyESS%$TbmdWfL9$AyQO+y@-U);K_y^-Ja!$t&>)$8qZ_+iq%HE ztA~wn#xy&OqqGuATMz4*juF{tW0J9RlCjP=-g+~Xu4`U1&XT47+C8V6Ks(G4uxgs7 zo%9C&*-(K};}}?Qs__)m;I=&usKxzzBA{W0^a0G1K92oOAHgu%T&LhN_PfU5XWZKC zfM4(x8nftYJ`YduF=-QP+!5G@Q|=F;9o>5!@G2hL+XwI9ZPLfk(y|C+m}zmqIObbE zh3h!d>VO;ZFI!zNK^PytTP??Ii7G*g443AgnC86pNYL|s1;6lD3tQjEWq%b|@u9zJ zKul=s;TiGV?{to@_`z=86BFlcYmezN?n7|%d})f(z=KUi!KOLWvse-RdxmhYEh6{G;p0y-3aAG1&{DYkZx@VSqOF8}j z=+s?n$>NEqjnh0@p6CpbTvJ!BSbSEqS0UW8n7}KzYfO8m)!R}WGbW^UDvK0nN7D{UzzTDF<#r1 z-0p(ar}?W)Zqi_Ux%#L2TlIJ9LD`~|D@}@~98$UzpK?*TqG>kcyekt)YMLw4hMGXa{JxrWMTEJX#F~+=6LRpQ zPn!aXE!Ek~07~k@CsV2hSXl-M^O~mF5a$qo-EwSCXY*%AzS@7peYDIv-EYc0*EBM%Jm%C~yGSp0mipJ9AcT*mg0o)Zw6cs)Sq@Hk zHuBNPB60)I%-)h8S??W_X#2*LUD32t&ooqcR{8Gb;4I(2h?<*>cW>?mE$|S$Yo<-{ zQqBsC1v((Bu?&NHsF2?>iS|K(?IB?bcRreT!6M%Lfdz~|=$J9_(f+&~ zpEDa$tzjX7Zi}1p?2dcPDlqo{z2lF}hRN1ZM#da0VU0%ogdE4(n56MB3p48N9bauP zUs-V0^AaC3F>7!_zov0Ih82k2*DAGqlt~s5Q^kF zlJoxnJG+B8y9Ns-C?veJsiTx${-SEUxZQHI3}54i$S2H6!LMj9kRk`W4?@rud*=;E z7F&G--S0m6plkO}cTX=|H56E5>m4v($ewbnK!K4|+3m_y<^9U1l?Jg;6vY~Gm*^G` ziRZ*i;*>ZqF2$w