给编译脚本增加固件参数。版本号根据蓝牙协议改为三位major,mid,minor。通过修改autobuild.sh 中DEFAULT_CUSTOM_FW_VERSION... 171/1 171/head 172/target/1
authorSnickerSun <snickersun@163.com>
Tue, 14 May 2024 11:43:48 +0000 (19:43 +0800)
committerSnickerSun <snickersun@163.com>
Tue, 14 May 2024 11:43:48 +0000 (19:43 +0800)
autobuild.sh
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c
code/sdk/build/script/cmake_builder.py
code/sdk/build/script/enviroment.py
code/sdk/build/script/sdk_generator/sdk_generator.py
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils.h
code/sdk/middleware/utils/build_version/CMakeLists.txt

index 954225c..cd2cbba 100755 (executable)
@@ -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
index 59dffd6..ebf93ce 100644 (file)
@@ -2255,11 +2255,14 @@ static void GetAlarmDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *t
 //关于本机内容\r
 static void aboutDeviceCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totaldata,uint8_t crcvalue)\r
 {\r
+\r
+    uint8_t _major,_mid,_minor;\r
+    uapi_get_fw_version(&_major,&_mid,&_minor);\r
     cJSON *dataJSON = cJSON_CreateObject();\r
     cJSON_AddNumberToObject(dataJSON,"code",1);\r
-    cJSON_AddNumberToObject(dataJSON,"major",0);\r
-    cJSON_AddNumberToObject(dataJSON,"mid",3);\r
-    cJSON_AddNumberToObject(dataJSON,"minor",2);\r
+    cJSON_AddNumberToObject(dataJSON,"major",_major);\r
+    cJSON_AddNumberToObject(dataJSON,"mid",_mid);\r
+    cJSON_AddNumberToObject(dataJSON,"minor",_minor);\r
     unsigned char addr[6];\r
     bluetooth_get_local_addr(&addr[0],6);\r
     char mac_data[24];\r
index 62955e4..f387ac7 100644 (file)
@@ -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);\r
     adv_data[adv_data_len++] = 0x05;//未知 app\r
     adv_data[adv_data_len++] = 0x05;\r
-    const char str[20];\r
-    sprintf(str,"%s",get_version_string());\r
-    // printf("str:%s\r\n",str);//V1.1\r
-    uint8_t ver1 = 0;//预留\r
-    uint8_t ver2 = 0;\r
-    uint8_t ver3 = 0;\r
-    ver2 = char_to_dec(str[1]);\r
-    ver3 = char_to_dec(str[3]);\r
-    adv_data[adv_data_len++] = 0x00;\r
-    adv_data[adv_data_len++] = ver2;\r
-    adv_data[adv_data_len++] = ver3;\r
+\r
+    uint8_t _major,_mid,_minor;\r
+    uapi_get_fw_version(&_major,&_mid,&_minor);\r
+    adv_data[adv_data_len++] = _major;\r
+    adv_data[adv_data_len++] = _mid;\r
+    adv_data[adv_data_len++] = _minor;\r
     \r
     if(adv_data_len > BLE_ADV_DATA_MAX_LENGTH)\r
     {\r
@@ -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;//当前表盘几\r
     battery_point_val[2] = 1;\r
 \r
-    const char str[20];\r
-    sprintf(str,"%s",get_version_string());\r
-    // printf("str:%s\r\n",str);//V1.1.1\r
-    uint8_t ver1 = 0;//预留\r
-    uint8_t ver2 = 0;\r
-    uint8_t ver3 = 0;\r
-    if(strlen(str) == 4)\r
-    {\r
-        ver2 = char_to_dec(str[1]);\r
-        ver3 = char_to_dec(str[3]);\r
-    }else if(strlen(str) == 6)\r
-    {\r
-        ver1= char_to_dec(str[1]);\r
-        ver2 = char_to_dec(str[3]);\r
-        ver3 = char_to_dec(str[5]);\r
-    }\r
-    \r
+    uint8_t _major,_mid,_minor;\r
+    uapi_get_fw_version(&_major,&_mid,&_minor);\r
 \r
-    battery_point_val[3] = ver1;//固件版本号\r
-    battery_point_val[4] = ver2;\r
-    battery_point_val[5] = ver3;\r
+    battery_point_val[3] = _major;//固件版本号\r
+    battery_point_val[4] = _mid;\r
+    battery_point_val[5] = _minor;\r
 \r
     bd_addr_t addr_info;\r
     ret = gap_ble_get_local_addr(&addr_info);\r
index 70c02a4..33d994c 100755 (executable)
@@ -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):
index 9d15e18..bea81d1 100755 (executable)
@@ -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='):
index ee54a13..2fe9590 100755 (executable)
@@ -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':
index 842114f..fd80eab 100644 (file)
@@ -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)
index 725584b..4fe064a 100644 (file)
@@ -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);
+
 /**
  * @}
  */
index cf1351e..117eb6c 100755 (executable)
@@ -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