From: SnickerSun Date: Tue, 14 May 2024 11:43:48 +0000 (+0800) Subject: 给编译脚本增加固件参数。版本号根据蓝牙协议改为三位major,mid,minor。通过修改autobuild.sh 中DEFAULT_CUSTOM_FW_VERSION... X-Git-Tag: release_V1.2.70_20241020_135402~1115^2~4 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=refs%2Fchanges%2F171%2F1;p=mirrors%2FFD230.git 给编译脚本增加固件参数。版本号根据蓝牙协议改为三位major,mid,minor。通过修改autobuild.sh 中DEFAULT_CUSTOM_FW_VERSION=1.0.0 来改变版本号。 --- diff --git a/autobuild.sh b/autobuild.sh index 954225c7f..cd2cbbae3 100755 --- a/autobuild.sh +++ b/autobuild.sh @@ -5,6 +5,7 @@ DATE=$(date +%Y%m%d_%H%M%S) HOMEDIR=$PWD DEFAULT_BUILD_TYPE=release DEFAULT_TARGET_PACK_NAME=pack_brandy_native_js +DEFAULT_CUSTOM_FW_VERSION=1.0.0 TARGET_PACK_NAME=$DEFAULT_TARGET_PACK_NAME RELEASE_BUILD=$DEFAULT_BUILD_TYPE @@ -64,8 +65,9 @@ build_target() { cd $HOMEDIR/code/sdk/ - echo ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE $TARGET_PACK_NAME 2>&1 - ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE $TARGET_PACK_NAME 2>&1 + echo ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1 + ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1 + #./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE $TARGET_PACK_NAME 2>&1 ret_code=$? if [ $ret_code == 0 ] then diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c index 59dffd6b1..ebf93ce5d 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -2255,11 +2255,14 @@ static void GetAlarmDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *t //关于本机内容 static void aboutDeviceCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue) { + + uint8_t _major,_mid,_minor; + uapi_get_fw_version(&_major,&_mid,&_minor); cJSON *dataJSON = cJSON_CreateObject(); cJSON_AddNumberToObject(dataJSON,"code",1); - cJSON_AddNumberToObject(dataJSON,"major",0); - cJSON_AddNumberToObject(dataJSON,"mid",3); - cJSON_AddNumberToObject(dataJSON,"minor",2); + cJSON_AddNumberToObject(dataJSON,"major",_major); + cJSON_AddNumberToObject(dataJSON,"mid",_mid); + cJSON_AddNumberToObject(dataJSON,"minor",_minor); unsigned char addr[6]; bluetooth_get_local_addr(&addr[0],6); char mac_data[24]; diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c index 62955e404..f387ac741 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleService.c @@ -210,17 +210,12 @@ static void svr_ble_adv_data_set(int adv_id) WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "adv_data_info.adv_length.adv_data_len:%d\r\n",adv_data_len); adv_data[adv_data_len++] = 0x05;//未知 app adv_data[adv_data_len++] = 0x05; - const char str[20]; - sprintf(str,"%s",get_version_string()); - // printf("str:%s\r\n",str);//V1.1 - uint8_t ver1 = 0;//预留 - uint8_t ver2 = 0; - uint8_t ver3 = 0; - ver2 = char_to_dec(str[1]); - ver3 = char_to_dec(str[3]); - adv_data[adv_data_len++] = 0x00; - adv_data[adv_data_len++] = ver2; - adv_data[adv_data_len++] = ver3; + + uint8_t _major,_mid,_minor; + uapi_get_fw_version(&_major,&_mid,&_minor); + adv_data[adv_data_len++] = _major; + adv_data[adv_data_len++] = _mid; + adv_data[adv_data_len++] = _minor; if(adv_data_len > BLE_ADV_DATA_MAX_LENGTH) { @@ -447,27 +442,12 @@ static void srv_ble_add_chart_decr_battery(uint8_t server_id,uint16_t srv_handle battery_point_val[1] = 0;//当前表盘几 battery_point_val[2] = 1; - const char str[20]; - sprintf(str,"%s",get_version_string()); - // printf("str:%s\r\n",str);//V1.1.1 - uint8_t ver1 = 0;//预留 - uint8_t ver2 = 0; - uint8_t ver3 = 0; - if(strlen(str) == 4) - { - ver2 = char_to_dec(str[1]); - ver3 = char_to_dec(str[3]); - }else if(strlen(str) == 6) - { - ver1= char_to_dec(str[1]); - ver2 = char_to_dec(str[3]); - ver3 = char_to_dec(str[5]); - } - + uint8_t _major,_mid,_minor; + uapi_get_fw_version(&_major,&_mid,&_minor); - battery_point_val[3] = ver1;//固件版本号 - battery_point_val[4] = ver2; - battery_point_val[5] = ver3; + battery_point_val[3] = _major;//固件版本号 + battery_point_val[4] = _mid; + battery_point_val[5] = _minor; bd_addr_t addr_info; ret = gap_ble_get_local_addr(&addr_info); diff --git a/code/sdk/build/script/cmake_builder.py b/code/sdk/build/script/cmake_builder.py index 70c02a4fc..33d994cf6 100755 --- a/code/sdk/build/script/cmake_builder.py +++ b/code/sdk/build/script/cmake_builder.py @@ -109,7 +109,7 @@ class CMakeBuilder(BuildEnvironment): output_path = sdk_target_env.get_output_path() self.compile_target(sdk_target, sdk_target_env) self.sdk.copy_depends('%s/cmake_trace.txt' % output_path) - self.sdk.sdk_build(self.build_time, self.no_hso, self.build_level) + self.sdk.sdk_build(self.build_time, self.no_hso, self.build_level,self.custom_fw_version) self.sdk = None return @@ -177,7 +177,8 @@ class CMakeBuilder(BuildEnvironment): self.add_cmake_param('-DPY_PATH=%s' % self.python_path) if self.build_time != '': self.add_cmake_param('-DBUILD_TIME=%s' % self.build_time) - + if self.custom_fw_version != '': + self.add_cmake_param('-DCUSTOM_FW_VERSION=%s' % self.custom_fw_version) def pre_sdk(self, output_path, env): if not self.sdk: return @@ -288,6 +289,7 @@ class CMakeBuilder(BuildEnvironment): """ accept string only """ + print(param) self.cmake_cmd.append(param) def add_cmake_def(self, env, item): diff --git a/code/sdk/build/script/enviroment.py b/code/sdk/build/script/enviroment.py index 9d15e1891..bea81d1c0 100755 --- a/code/sdk/build/script/enviroment.py +++ b/code/sdk/build/script/enviroment.py @@ -334,6 +334,7 @@ class BuildEnvironment: self.generator = "Ninja" self.dump = False self.build_time = '' + self.custom_fw_version = '' self.parse_cmd(param_list) def parse_cmd(self, param_list): @@ -347,6 +348,8 @@ class BuildEnvironment: self.extr_defines.extend(param[5:].split(',')) elif param.startswith('-build_time='): self.build_time = param[12:].split(',')[0] + elif param.startswith('-custom_fw_version='): + self.custom_fw_version = param[19:].split(',')[0] elif param.startswith('-component='): self.component.extend(param[11:].split(',')) elif param.startswith('-out_libs='): diff --git a/code/sdk/build/script/sdk_generator/sdk_generator.py b/code/sdk/build/script/sdk_generator/sdk_generator.py index ee54a133f..2fe9590cb 100755 --- a/code/sdk/build/script/sdk_generator/sdk_generator.py +++ b/code/sdk/build/script/sdk_generator/sdk_generator.py @@ -207,7 +207,7 @@ class SdkGenerator: rm_pyc(os.path.join(output_root, 'sdk', 'build')) rm_pyc(os.path.join(output_root, 'sdk', 'tools', 'pkg')) - def sdk_build(self, build_time, nhso, build_level): + def sdk_build(self, build_time, nhso, build_level, custom_fw_version): org_pwd = os.getcwd() os.chdir(self.sdk_root_path) build_targets = self.env.get('pkg_target_name', cmake_type=False) @@ -217,6 +217,8 @@ class SdkGenerator: sdk_build_cmd = ['./build.py', target] if build_time != '': sdk_build_cmd.append("-build_time=%s" %build_time) + if custom_fw_version != '': + sdk_build_cmd.append("-custom_fw_version=%s" %custom_fw_version) if nhso == True: sdk_build_cmd.append("-nhso") if build_level == 'release': diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index 842114fc4..fd80eab99 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -1160,11 +1160,11 @@ errcode_t uapi_get_buildversion(uint8_t *para, uint32_t para_len) char str[VER_STR_MAX]; #if !(defined BUILD_TIME) #warning no BUILD_TIME - (void)sprintf_s(str, VER_STR_MAX, "%s", + (void)sprintf_s(str, VER_STR_MAX, "V%s", get_version_string()); #else - (void)sprintf_s(str, VER_STR_MAX, "%s_%s", + (void)sprintf_s(str, VER_STR_MAX, "V%s_%s", get_version_string(), BUILD_TIME); #endif @@ -1174,7 +1174,44 @@ errcode_t uapi_get_buildversion(uint8_t *para, uint32_t para_len) return ERRCODE_SUCC; } +errcode_t uapi_get_fw_version(uint8_t *_major, uint8_t *_mid,uint8_t *_minor) +{ + if (_major==NULL || _mid == NULL || _minor == NULL) + return ERRCODE_FAIL; + + const char* version = get_version_string(); + uint8_t tmpverlen = strlen(version); + if (tmpverlen>20) return ERRCODE_FAIL; + char * tmpver = (char*) malloc(tmpverlen); + if (tmpver==NULL) + { + *_major = 1; + *_mid = 0; + *_minor = 0; + + }else{ + memcpy_s(tmpver,tmpverlen,version,tmpverlen); + char *pchStrTmpIn = NULL; + char *tokbuf=NULL; + tokbuf=strtok_r(tmpver,".",&pchStrTmpIn); + if(tokbuf!=NULL) + *_major = atoi(tokbuf); + tokbuf=strtok_r(NULL,".",&pchStrTmpIn); + if(tokbuf!=NULL) + *_mid = atoi(tokbuf); + tokbuf=strtok_r(NULL,".",&pchStrTmpIn); + if(tokbuf!=NULL) + *_minor = atoi(tokbuf); + printf("major %d,mid %d , minor %d\n",*_major,*_mid,*_minor); + + free(tmpver); + tmpver=NULL; + } + + + return ERRCODE_SUCC; +} #include "vibrator.h" void vibrator_cyclicity(uint16_t duty , uint16_t cycle_time_ms,uint16_t duration_time_ms) diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index 725584b2b..4fe064a8b 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -84,6 +84,10 @@ errcode_t uapi_create_osThread_custom(app_task_definition_t *task_cfg); errcode_t uapi_terminate_thread(void* thread_id); errcode_t uapi_get_buildversion(uint8_t *para, uint32_t para_len); + +//获取固件版本号 +errcode_t uapi_get_fw_version(uint8_t *_major, uint8_t *_mid,uint8_t *_minor); + /** * @} */ diff --git a/code/sdk/middleware/utils/build_version/CMakeLists.txt b/code/sdk/middleware/utils/build_version/CMakeLists.txt index cf1351e2e..117eb6c92 100755 --- a/code/sdk/middleware/utils/build_version/CMakeLists.txt +++ b/code/sdk/middleware/utils/build_version/CMakeLists.txt @@ -18,8 +18,16 @@ set(PRIVATE_HEADER set(PRIVATE_DEFINES ) -set(PUBLIC_DEFINES -) + +if (DEFINED CUSTOM_FW_VERSION) + set(PUBLIC_DEFINES + FIRMWARE_VERSION_STRING="${CUSTOM_FW_VERSION}" + ) +else() + set(PUBLIC_DEFINES + ) +endif() + # use this when you want to add ccflags like -include xxx set(COMPONENT_PUBLIC_CCFLAGS