|
@@ -14,12 +14,7 @@
|
|
|
////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#define _dword_offset(m) (offsetof(GFA_APP_IMG_HEADER, m) / sizeof(uint32_t) - 2)
|
|
|
-
|
|
|
-#ifdef _DEBUG
|
|
|
#define _EXEC_CALLBACK(pfn, ...) if(pfn) (*pfn)(__FILE__, __LINE__, __VA_ARGS__)
|
|
|
-#else // _DEBUG
|
|
|
-#define _EXEC_CALLBACK(pfn, ...) if(pfn) (*pfn)(__VA_ARGS__)
|
|
|
-#endif // _DEBUG
|
|
|
|
|
|
#define _BOOTLOADER_EXEC_WAIT_TIME 250
|
|
|
#define _GFA_MAX_DUMP_DWORDS 16
|
|
@@ -39,38 +34,6 @@ typedef const GFA_BLM *LPCGFA_BLM;
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
-#define GFA_APP_BOOTLOADER_START_ADDRESS ((uint32_t)0x00000000)
|
|
|
-#define GFA_APP_APPLICATION_START_ADDRESS ((uint32_t)0x00002000)
|
|
|
-#define GFA_APP_IMG_HEADER_PREFIX_0 ((uint32_t)0xFF01FF02)
|
|
|
-#define GFA_APP_IMG_HEADER_PREFIX_1 ((uint32_t)0xFF03FF04)
|
|
|
-
|
|
|
-////////////////////////////////////////////////////////////////////////////////////
|
|
|
-
|
|
|
-typedef struct _GFA_APP_IMG_HEADER
|
|
|
-{
|
|
|
- const uint32_t nPrefix0;
|
|
|
- const uint32_t nPrefix1;
|
|
|
- const uint32_t nImgLength;
|
|
|
- const uint32_t nImgCRC32;
|
|
|
- const uint32_t nReserved[4];
|
|
|
- union
|
|
|
- {
|
|
|
- struct
|
|
|
- {
|
|
|
- const char * const pszImgMaterialNum;
|
|
|
- const char * const pszImgNameBuild;
|
|
|
- }app;
|
|
|
- struct
|
|
|
- {
|
|
|
- const char szImgMaterialNum[GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH];
|
|
|
- const char szImgNameBuild[GFA_APP_MAX_IMG_NAME_BUILD_LENGTH];
|
|
|
- }bl;
|
|
|
- };
|
|
|
-}GFA_APP_IMG_HEADER, *LPGFA_APP_IMG_HEADER;
|
|
|
-typedef const GFA_APP_IMG_HEADER *LPCGFA_APP_IMG_HEADER;
|
|
|
-
|
|
|
-////////////////////////////////////////////////////////////////////////////////////
|
|
|
-
|
|
|
HGFABLM GfaBlmOpen(LPCGFA_BLM_CFG_PARAMS pblmcfg)
|
|
|
{
|
|
|
if(pblmcfg)
|
|
@@ -1281,7 +1244,7 @@ int GfaBlmGetInfoBI(HGFABLM hBlm, uint8_t nNodeAddr, LPGFA_BL_APP_IMG_INFO paii)
|
|
|
|
|
|
int GfaBlmReadMaterialAndSerialID(HGFABLM hBlm, uint8_t nNodeAddr, char *pszMaterial, size_t nCbMaterial, char *pszSerial, size_t nCbSerial)
|
|
|
{
|
|
|
- if(hBlm && pszMaterial && (nCbMaterial >= 16) && pszSerial && (nCbSerial >= 16) && !NODE_IS_MULTICAST(nNodeAddr))
|
|
|
+ if(hBlm && pszMaterial && (nCbMaterial >= GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH) && pszSerial && (nCbSerial >= GFA_APP_MAX_IMG_SERIAL_NUM_LENGTH) && !NODE_IS_MULTICAST(nNodeAddr))
|
|
|
{
|
|
|
uint8_t nIndex;
|
|
|
ssize_t nRet, nLen;
|
|
@@ -1300,22 +1263,22 @@ int GfaBlmReadMaterialAndSerialID(HGFABLM hBlm, uint8_t nNodeAddr, char *pszMate
|
|
|
|
|
|
if(nRet == MINET_SLAVE_RESPONSE_SUCCESS)
|
|
|
{
|
|
|
- if((nRet = GfaMininetMasterGetDataFromSlaveFrame(rxb, nLen, data, sizeof(data))) != 32)
|
|
|
+ if((nRet = GfaMininetMasterGetDataFromSlaveFrame(rxb, nLen, data, sizeof(data))) != (GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH + GFA_APP_MAX_IMG_SERIAL_NUM_LENGTH))
|
|
|
return -1;
|
|
|
- memcpy(pszMaterial, data, 16);
|
|
|
- pszMaterial[15] = '\0';
|
|
|
- memcpy(pszSerial, &data[16], 16);
|
|
|
- pszSerial[15] = '\0';
|
|
|
+ memcpy(pszMaterial, data, GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH);
|
|
|
+ pszMaterial[GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH - 1] = '\0';
|
|
|
+ memcpy(pszSerial, &data[GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH], GFA_APP_MAX_IMG_SERIAL_NUM_LENGTH);
|
|
|
+ pszSerial[GFA_APP_MAX_IMG_SERIAL_NUM_LENGTH - 1] = '\0';
|
|
|
return 0;
|
|
|
}
|
|
|
else if(nRet == MINET_SLAVE_RESPONSE_ACK)
|
|
|
{
|
|
|
if((nRet = GfaBlmBUCmdPollData(hBlm, nNodeAddr, data, sizeof(data), 200)) != (ssize_t)sizeof(data))
|
|
|
return -1;
|
|
|
- memcpy(pszMaterial, data, 16);
|
|
|
- pszMaterial[15] = '\0';
|
|
|
- memcpy(pszSerial, &data[16], 16);
|
|
|
- pszSerial[15] = '\0';
|
|
|
+ memcpy(pszMaterial, data, GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH);
|
|
|
+ pszMaterial[GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH - 1] = '\0';
|
|
|
+ memcpy(pszSerial, &data[GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH], GFA_APP_MAX_IMG_SERIAL_NUM_LENGTH);
|
|
|
+ pszSerial[GFA_APP_MAX_IMG_SERIAL_NUM_LENGTH - 1] = '\0';
|
|
|
return 0;
|
|
|
}
|
|
|
else if(nRet == MINET_SLAVE_RESPONSE_INDEX_IS_STATUS_CODE)
|