extract server image version and unit tests
This commit is contained in:
		| @ -68,7 +68,7 @@ https_client_ret_t https_clientInitialize() | ||||
|     return i32RetHTTPClient; | ||||
| } | ||||
|  | ||||
| https_client_ret_t https_clientRetrieveData(unsigned char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32BytesRead) | ||||
| https_client_ret_t https_clientRetrieveData(char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32BytesRead) | ||||
| { | ||||
|     https_client_ret_t i32RetHTTPClient = HTTPS_CLIENT_OK; | ||||
|     int32_t i32RetRetrieveData = ESP_OK; | ||||
|  | ||||
| @ -66,7 +66,7 @@ typedef int32_t https_client_ret_t; | ||||
| typedef struct HTTPS_Client HTTPS_Client_t; | ||||
|   | ||||
| https_client_ret_t https_clientInitialize(); | ||||
| https_client_ret_t https_clientRetrieveData(unsigned char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32BytesRead); | ||||
| https_client_ret_t https_clientRetrieveData(char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32BytesRead); | ||||
| https_client_ret_t https_clientDeinitialize(); | ||||
|  | ||||
| #endif /* H_HTTPS_CLIENT */ | ||||
|  | ||||
| @ -17,7 +17,7 @@ | ||||
|  | ||||
| bool bNewerVersion(const char* pu8Local, const char* pu8Remote); | ||||
|  | ||||
| esp_err_t errExtractVersionNumber(unsigned char* pu8Data, uint32_t* pu32DataLenght, char* pc8RemoteVersionNumber); | ||||
| esp_err_t errFindImageStart(unsigned char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32StartOffset); | ||||
| esp_err_t errExtractVersionNumber(const  char* pu8Data, uint32_t* pu32DataLenght, char* pc8RemoteVersionNumber); | ||||
| esp_err_t errFindImageStart(const  char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32StartOffset); | ||||
|  | ||||
| #endif /* H_MESH_OTA */ | ||||
|  | ||||
| @ -41,7 +41,7 @@ bool bNewerVersion(const char* pu8Local, const  char* pu8Remote) { | ||||
|     return bReturn; | ||||
| } | ||||
|  | ||||
| esp_err_t errFindImageStart(unsigned char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32StartOffset) | ||||
| esp_err_t errFindImageStart(const char* pu8Data, uint32_t* pu32DataLenght, uint32_t* pu32StartOffset) | ||||
| { | ||||
|     /* | ||||
|     Offset  value | ||||
| @ -68,9 +68,7 @@ esp_err_t errFindImageStart(unsigned char* pu8Data, uint32_t* pu32DataLenght, ui | ||||
|         if(pu8Data[u32DataIndex] == 0xe9) | ||||
|         { | ||||
|             //magic byte found | ||||
|  | ||||
|             printf("\n magic byte found: %i\n", u32DataIndex); | ||||
|  | ||||
|             //printf("\n magic byte found: %i\n", u32DataIndex); | ||||
|             while ((u8FirstDotIndex < 3) && (u32FirstDotOffset == 0)) | ||||
|             { | ||||
|                 //search first dot in version number | ||||
| @ -80,7 +78,7 @@ esp_err_t errFindImageStart(unsigned char* pu8Data, uint32_t* pu32DataLenght, ui | ||||
|                     { | ||||
|                         //first do found | ||||
|                         u32FirstDotOffset = (u32DataIndex+49+u8FirstDotIndex); | ||||
|                         printf("First dot offset: %i\n", u32FirstDotOffset); | ||||
|                         //printf("First dot offset: %i\n", u32FirstDotOffset); | ||||
|                     } | ||||
|                 } | ||||
|              u8FirstDotIndex++; | ||||
| @ -96,7 +94,7 @@ esp_err_t errFindImageStart(unsigned char* pu8Data, uint32_t* pu32DataLenght, ui | ||||
|                     { | ||||
|                         //second do found | ||||
|                         u32SecondDotOffset = (u32FirstDotOffset+(u8SecondDotIndex+2)); | ||||
|                         printf("Second dot offset: %i\n", u32SecondDotOffset); | ||||
|                         //printf("Second dot offset: %i\n", u32SecondDotOffset); | ||||
|                     } | ||||
|                 } | ||||
|                 u8SecondDotIndex++; | ||||
| @ -131,7 +129,7 @@ esp_err_t errFindImageStart(unsigned char* pu8Data, uint32_t* pu32DataLenght, ui | ||||
|     return errReturn; | ||||
| } | ||||
|  | ||||
| esp_err_t errExtractVersionNumber(unsigned char* pu8Data, uint32_t* pu32DataLenght, char* pc8RemoteVersionNumber) | ||||
| esp_err_t errExtractVersionNumber(const char* pu8Data, uint32_t* pu32DataLenght, char* pc8RemoteVersionNumber) | ||||
| { | ||||
|     strcpy(pc8RemoteVersionNumber, "999.999.999"); //init value | ||||
|  | ||||
| @ -142,11 +140,13 @@ esp_err_t errExtractVersionNumber(unsigned char* pu8Data, uint32_t* pu32DataLeng | ||||
|     if(err == ESP_OK) | ||||
|     { | ||||
|  | ||||
|     printf("\n Image start found: %i\n", u32StartOffset); | ||||
|     //printf("\nImage start found: %i\n", u32StartOffset); | ||||
|  | ||||
|     //extract image version | ||||
|  | ||||
|     printf("remote version number %s\n", pc8RemoteVersionNumber); | ||||
|     strncpy(pc8RemoteVersionNumber, pu8Data+(u32StartOffset+48),  11); | ||||
|      | ||||
|     pc8RemoteVersionNumber[12] = '\0'; | ||||
|      | ||||
|     //printf("remote version number %s\n\n", pc8RemoteVersionNumber); | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -3,7 +3,7 @@ | ||||
|  | ||||
|  | ||||
| //with http response +  0.0.1 | ||||
| uint8_t dataWithHttpRespone0_0_1[] =  | ||||
| char dataWithHttpRespone0_0_1[] =  | ||||
| { | ||||
| 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x6e, 0x67, 0x69, 0x6e, 0x78, 0x2f, 0x31, 0x2e, 0x31, 0x34, 0x2e, 0x32, 0xd, 0xa, 0x44, | ||||
| 0x61, 0x74, 0x65, 0x3a, 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x37, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x31, 0x33, 0x3a, 0x34, 0x38, 0x3a, 0x32, 0x36, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74, | ||||
| @ -34,7 +34,7 @@ uint8_t dataWithHttpRespone0_0_1[] = | ||||
|  | ||||
|  | ||||
| //without http response +  0.0.1 | ||||
| uint8_t dataWithoutHttpRespone0_0_1[] =  | ||||
| char dataWithoutHttpRespone0_0_1[] =  | ||||
| { | ||||
| 0xe9, 0x7, 0x2, 0x20, 0x5c, 0x12, 0x8, 0x40, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | ||||
| 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x20, 0x0, 0x40, 0x3f, 0xe4, 0x55, 0x3, 0x0, 0x32, 0x54, 0xcd, 0xab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | ||||
| @ -57,7 +57,7 @@ uint8_t dataWithoutHttpRespone0_0_1[] = | ||||
| }; | ||||
|      | ||||
| //without http response +  9999.999.999 | ||||
| uint8_t dataWithoutHttpRespone999_999_999[] =  | ||||
| char dataWithoutHttpRespone999_999_999[] =  | ||||
| { | ||||
| 0xe9, 0x7, 0x2, 0x20, 0x5c, 0x12, 0x8, 0x40, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | ||||
| 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x20, 0x0, 0x40, 0x3f, 0xec, 0x44, 0x3, 0x0, 0x32, 0x54, 0xcd, 0xab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x39, 0x39, 0x2e, 0x39, 0x39, 0x39, 0x2e, 0x39, 0x39, 0x39, 0x0, 0x0, | ||||
| @ -82,7 +82,7 @@ uint8_t dataWithoutHttpRespone999_999_999[] = | ||||
|  | ||||
|  | ||||
| //with http response +  999.999.999 | ||||
| uint8_t dataWithHttpRespone999_999_999[] =  | ||||
| char dataWithHttpRespone999_999_999[] =  | ||||
| { | ||||
| 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x6e, 0x67, 0x69, 0x6e, 0x78, 0x2f, 0x31, 0x2e, 0x31, 0x34, 0x2e, 0x32, 0xd, 0xa, 0x44, | ||||
| 0x61, 0x74, 0x65, 0x3a, 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x37, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x31, 0x35, 0x3a, 0x31, 0x33, 0x3a, 0x32, 0x39, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74, | ||||
| @ -112,7 +112,7 @@ uint8_t dataWithHttpRespone999_999_999[] = | ||||
| }; | ||||
|  | ||||
| //with http response +  999.9.999 | ||||
| uint8_t dataWithHttpRespone999_9_999[] =  | ||||
| char dataWithHttpRespone999_9_999[] =  | ||||
| { | ||||
| 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x6e, 0x67, 0x69, 0x6e, 0x78, 0x2f, 0x31, 0x2e, 0x31, 0x34, 0x2e, 0x32, 0xd, 0xa, 0x44, | ||||
| 0x61, 0x74, 0x65, 0x3a, 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x37, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x31, 0x35, 0x3a, 0x31, 0x33, 0x3a, 0x32, 0x39, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74, | ||||
| @ -142,7 +142,7 @@ uint8_t dataWithHttpRespone999_9_999[] = | ||||
| }; | ||||
|  | ||||
| //with http response +  999.99.999 | ||||
| uint8_t dataWithHttpRespone999_99_999[] =  | ||||
| char dataWithHttpRespone999_99_999[] =  | ||||
| { | ||||
| 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x6e, 0x67, 0x69, 0x6e, 0x78, 0x2f, 0x31, 0x2e, 0x31, 0x34, 0x2e, 0x32, 0xd, 0xa, 0x44, | ||||
| 0x61, 0x74, 0x65, 0x3a, 0x20, 0x54, 0x68, 0x75, 0x2c, 0x20, 0x30, 0x37, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x32, 0x30, 0x32, 0x31, 0x20, 0x31, 0x35, 0x3a, 0x31, 0x33, 0x3a, 0x32, 0x39, 0x20, 0x47, 0x4d, 0x54, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x74, | ||||
|  | ||||
| @ -156,8 +156,55 @@ TEST_CASE("with http response +  999.99.999", "[find start offset in firmware im | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| // ### ### ###  distinguish newer image version ### ### ### | ||||
|  | ||||
| TEST_CASE("extract version 0.0.1", "[extract image version number]") | ||||
| { | ||||
|     char versionLocal[] = "0.0.0";  //current running image | ||||
|     char versionRemote[12];//image from server | ||||
|     uint32_t u32DataLenght = sizeof(dataWithHttpRespone0_0_1)/sizeof(dataWithHttpRespone0_0_1[0]); | ||||
|     esp_err_t err = errExtractVersionNumber(dataWithHttpRespone0_0_1, &u32DataLenght, versionRemote); | ||||
|     if(err == ESP_OK) | ||||
|     { | ||||
|         TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote)  ); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         TEST_ASSERT_EQUAL_INT(ESP_OK, err); | ||||
|     } | ||||
| } | ||||
|  | ||||
| TEST_CASE("extract version 999.999.999", "[extract image version number]") | ||||
| { | ||||
|     char versionLocal[] = "0.0.0";  //current running image | ||||
|     char versionRemote[12];//image from server | ||||
|     uint32_t u32DataLenght = sizeof(dataWithHttpRespone999_999_999)/sizeof(dataWithHttpRespone999_999_999[0]); | ||||
|     esp_err_t err = errExtractVersionNumber(dataWithHttpRespone999_999_999, &u32DataLenght, versionRemote); | ||||
|     if(err == ESP_OK) | ||||
|     { | ||||
|         TEST_ASSERT_TRUE( bNewerVersion(versionLocal, versionRemote)  ); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         TEST_ASSERT_EQUAL_INT(ESP_OK, err); | ||||
|     } | ||||
| } | ||||
|  | ||||
| TEST_CASE("extract version 999.99.999", "[extract image version number]") | ||||
| { | ||||
|     char versionLocal[] = "999.100.999";  //current running image | ||||
|     char versionRemote[12];//image from server | ||||
|     uint32_t u32DataLenght = sizeof(dataWithHttpRespone999_99_999)/sizeof(dataWithHttpRespone999_99_999[0]); | ||||
|     esp_err_t err = errExtractVersionNumber(dataWithHttpRespone999_99_999, &u32DataLenght, versionRemote); | ||||
|     if(err == ESP_OK) | ||||
|     { | ||||
|         TEST_ASSERT_FALSE( bNewerVersion(versionLocal, versionRemote)  ); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         TEST_ASSERT_EQUAL_INT(ESP_OK, err); | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -488,7 +488,7 @@ static void test(void *pvParameters) | ||||
| { | ||||
|     esp_err_t err; | ||||
|     uint32_t u32BufferLenght = 1024U; | ||||
|     unsigned char buffer[1024U]; | ||||
|     char buffer[1024U]; | ||||
|     uint32_t u32BytesRead = 0; | ||||
|     char pcRemoteVersionNumber[12]; | ||||
|  | ||||
|  | ||||
| @ -32,7 +32,7 @@ CONFIG_APP_COMPILE_TIME_DATE=y | ||||
| # CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set | ||||
| # CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set | ||||
| CONFIG_APP_PROJECT_VER_FROM_CONFIG=y | ||||
| CONFIG_APP_PROJECT_VER="999.9.999" | ||||
| CONFIG_APP_PROJECT_VER="0.0.1" | ||||
| CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 | ||||
| # end of Application manager | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user