修改界面用蓝牙开关开启 spp服务,测试蓝牙ota成功。
authorSnickerSun <snickersun@163.com>
Tue, 5 Mar 2024 16:46:43 +0000 (00:46 +0800)
committerSnickerSun <snickersun@163.com>
Tue, 5 Mar 2024 16:46:43 +0000 (00:46 +0800)
autobuild.sh
code/sdk/application/wearable/fd230app/nativeui/classicbluetooth/src/ClassicBlueToothPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemAboutTheWatchView.cpp
code/sdk/application/wstp/at_service/app/app_at_process.c
code/sdk/build/config/target_config/brandy/fota/fota.cfg
code/sdk/drivers/boards/brandy_evb/product/product.h
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils.h
code/sdk/middleware/chips/brandy/update/include/upg_common_porting.h

index 213c4a2..005950e 100644 (file)
@@ -57,8 +57,8 @@ build_target()
 {
 
        cd $HOMEDIR/code/sdk/
-       echo ./build.py -nhso $CLEAN -$RELEASE_BUILD $TARGET_PACK_NAME 2>&1 
-       ./build.py -nhso $CLEAN -$RELEASE_BUILD $TARGET_PACK_NAME 2>&1 
+       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 
        ret_code=$?
        if [ $ret_code == 0 ]
        then
index a96d6a5..bb50991 100644 (file)
@@ -3,6 +3,7 @@
 #include "graphic_math.h"\r
 #include "classicbluetooth/include/ClassicBlueToothPresenter.h"\r
 #include "classicbluetooth/include/ClassicBlueToothModel.h"\r
+#include "custom_utils.h"\r
 namespace OHOS\r
 {\r
     // 当前Presenter属性实例化的内存指针\r
@@ -111,11 +112,11 @@ namespace OHOS
         {\r
         case UICheckBox::SELECTED:\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BlueTooth Capability Is Enabled");\r
-\r
+            init_btaddr_btname();\r
             break;\r
         case UICheckBox::UNSELECTED:\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BlueTooth Capability Is Disabled");\r
-\r
+            disable_bt_service();\r
             break;\r
         default:\r
             break;\r
index 88f1040..0642e93 100644 (file)
@@ -74,7 +74,7 @@ namespace OHOS
         label->SetStyle(STYLE_LINE_HEIGHT, labelConfig.lineHeigh);                                    // 字体行高\r
         label->SetText(labelConfig.text);                                                             // 内容\r
         label->SetLineBreakMode(labelConfig.lineBreakMode);                                           // 断行模式。\r
-        label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_TOP);\r
         label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelConfig.fontSize);\r
         return label;\r
     }\r
@@ -185,15 +185,18 @@ namespace OHOS
         }\r
         SystemAboutTheWatchScrollView->Add(FirmwareVersionTitle);\r
         /* -------------------------------------------------------------------------- */\r
+        char version_buf[128]={0};\r
+        uint32_t version_len=128;\r
+        uapi_get_buildversion((uint8_t*)version_buf,version_len);\r
         Config = {\r
             .left = 37,\r
-            .top = 361,\r
+            .top = 341,\r
             .width = 400,\r
             .height = 30,\r
             .fontSize = 26,\r
             .lineHeigh = 30,\r
-            .text = "V1.0",\r
-            .lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS,\r
+            .text = (char*)version_buf,\r
+            .lineBreakMode = UILabel::LINE_BREAK_WRAP,\r
         };\r
         FirmwareVersion = InitLabel(Config);\r
         if (FirmwareVersion == nullptr)\r
@@ -261,8 +264,8 @@ namespace OHOS
         /* -------------------------------------------------------------------------- */\r
         uint8_t btaddr[64]={0};\r
         uint32_t len = 64;\r
-        uapi_get_btaddr((uint8_t*)btaddr,&len);\r
-\r
+        errcode_t ret = uapi_get_btaddr((uint8_t*)btaddr,&len);\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"get btaddr %s , ret 0x%X\n",btaddr,ret);\r
         Config = {\r
             .left = 37,\r
             .top = 651,\r
@@ -284,42 +287,48 @@ namespace OHOS
         BluetoothAddress->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x87));\r
         SystemAboutTheWatchScrollView->Add(BluetoothAddress);\r
         /* -------------------------------------------------------------------------- */\r
-        // Config = {\r
-        //     .left = 173,\r
-        //     .top = 740,\r
-        //     .width = 120,\r
-        //     .height = 35,\r
-        //     .fontSize = 30,\r
-        //     .lineHeigh = 35,\r
-        //     .text = "局域网地址",\r
-        //     .lineBreakMode = UILabel::LINE_BREAK_ADAPT,\r
-        // };\r
-        // LANAddressTitle = InitLabel(Config);\r
-        // if (LANAddressTitle == nullptr)\r
-        // {\r
-        //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::LANAddressTitle new fail!");\r
-        //     return nullptr;\r
-        // }\r
-        // SystemAboutTheWatchScrollView->Add(LANAddressTitle);\r
-        // /* -------------------------------------------------------------------------- */\r
-        // Config = {\r
-        //     .left = 37,\r
-        //     .top = 796,\r
-        //     .width = 400,\r
-        //     .height = 30,\r
-        //     .fontSize = 26,\r
-        //     .lineHeigh = 30,\r
-        //     .text = "D4:FF:E3:12:00:A4",\r
-        //     .lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS,\r
-        // };\r
-        // LANAddress = InitLabel(Config);\r
-        // if (LANAddress == nullptr)\r
-        // {\r
-        //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::LANAddress new fail!");\r
-        //     return nullptr;\r
-        // }\r
-        // LANAddress->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x87));\r
-        // SystemAboutTheWatchScrollView->Add(LANAddress);\r
+        Config = {\r
+            .left = 173,\r
+            .top = 740,\r
+            .width = 120,\r
+            .height = 35,\r
+            .fontSize = 30,\r
+            .lineHeigh = 35,\r
+            .text = "蓝牙名称",\r
+            .lineBreakMode = UILabel::LINE_BREAK_ADAPT,\r
+        };\r
+        LANAddressTitle = InitLabel(Config);\r
+        if (LANAddressTitle == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::LANAddressTitle new fail!");\r
+            return nullptr;\r
+        }\r
+        SystemAboutTheWatchScrollView->Add(LANAddressTitle);\r
+        /* -------------------------------------------------------------------------- */\r
+       \r
+         uint8_t ble_name[20] = {0};\r
+        uint32_t ble_name_len ;\r
+        ret = uapi_get_btname(ble_name, &ble_name_len);\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"get btname %s ,ret 0x%X\n",ble_name,ret);\r
+       \r
+        Config = {\r
+            .left = 37,\r
+            .top = 796,\r
+            .width = 400,\r
+            .height = 30,\r
+            .fontSize = 26,\r
+            .lineHeigh = 30,\r
+            .text = (char*)ble_name,\r
+            .lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS,\r
+        };\r
+        LANAddress = InitLabel(Config);\r
+        if (LANAddress == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::BTNAME new fail!");\r
+            return nullptr;\r
+        }\r
+        LANAddress->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x87));\r
+        SystemAboutTheWatchScrollView->Add(LANAddress);\r
         /* -------------------------------------------------------------------------- */\r
         Config = {\r
             .left = 173,\r
index 55db99d..36d0ef5 100755 (executable)
@@ -722,6 +722,7 @@ static uint32_t mcu_get_wstp_version(uint8_t *para, uint32_t para_len)
     (void)sprintf_s(str, VER_STR_MAX, "\r\nVersion:%s %s %s\r\n",\r
                     get_version_string(), TARGET_NAME, BUILD_TIME);\r
 #else\r
+#warning no BUILD_TIME\r
     (void)sprintf_s(str, VER_STR_MAX, "\r\nVersion:%s\r\n", get_version_string());\r
 #endif\r
     wstp_print(str);\r
index a282d98..6e3017a 100755 (executable)
@@ -239,7 +239,7 @@ ImageId=0x4B0F2D2D
     # 0x3C7896E1 - compressed image
     # 0x44494646 - diff image
     # other :原始镜像不处理
-DecompressFlag=0x3C7896E1
+DecompressFlag=0x44494646
 
 # ReRncFlag:升级镜像加密标记
     # 0x3C7896E1:加密
index 986eb40..f537080 100755 (executable)
@@ -31,7 +31,7 @@
 #endif
 
 #if (defined BRANDY_PRODUCT_EVB4)
-#define APPLICATION_VERSION_STRING "B602"
+#define APPLICATION_VERSION_STRING "V1.1"
 #include "product_evb4_standard.h"
 #endif
 
index e6f4b32..b763235 100644 (file)
@@ -357,6 +357,242 @@ void ScreenAlwaysOnCtr(uint8_t turnOnFlag)
 
 #include "bts_le_gap.h"
 
+
+
+extern void wstp_spp_cmd_server_create(const char *spp_uuid, const char *name, uint8_t name_len);
+extern void wstp_spp_cmd_server_accept(uint32_t server_id);
+extern errcode_t enable_bt_stack(void);
+extern errcode_t disable_bt_stack(void);
+extern errcode_t enable_ble(void);
+extern errcode_t bluetooth_set_local_addr(unsigned char *mac, unsigned int len);
+extern errcode_t bluetooth_get_local_addr(unsigned char *mac, unsigned int len);
+extern errcode_t bluetooth_set_local_name(const unsigned char *localName, unsigned char length);
+extern errcode_t bluetooth_get_local_name(unsigned char *localName, unsigned char *length);
+errcode_t uapi_get_btname(uint8_t *buf_btname, uint32_t *len_btname)
+{
+    if(buf_btname == NULL || len_btname == NULL)
+    {
+        return ERRCODE_FAIL;
+    }
+    memset(buf_btname,0,*len_btname);
+
+    errcode_t res = bluetooth_get_local_name((unsigned char*)buf_btname, (unsigned char*)len_btname);
+    if (res == 0) {
+        char str[256] = "^btname:";
+        strcat_s(str, strlen(str) + strlen((char*)buf_btname), (char*)buf_btname);
+        printf("%s\r\n", &str[0]);
+        printf("name: %s, length: %d\n", buf_btname, *len_btname);
+        return ERRCODE_SUCC;
+    } else {
+        printf("bluetooth_get_local_name ret = 0x%X\n",res);
+        return ERRCODE_FAIL;
+    }
+
+}
+errcode_t uapi_get_btaddr(uint8_t *buf_btaddr, uint32_t *len_btaddr)
+{
+    if (buf_btaddr == NULL || len_btaddr == NULL) {
+        return ERRCODE_FAIL;
+    }
+    errcode_t res;
+    #define BT_MAC_LEN 6
+    unsigned int len = BT_MAC_LEN;
+    unsigned char addr[BT_MAC_LEN] = {0};
+    srand(time(0));
+    res = bluetooth_get_local_addr(&addr[0], len);
+    if (res == 0) {
+        char str[64] = {0};
+        strcat_s(str, strlen(str) + strlen((char*)addr), (char*)addr);
+        printf("%s\r\n", &str[0]);
+        printf("local_addr : ******%02x%02x%02x\n", addr[3], addr[4], addr[5]);
+            
+        memset((void*)buf_btaddr,0,*len_btaddr);
+        sprintf_s((char*)buf_btaddr, *len_btaddr, "%02X:%02X:%02X:%02X:%02X:%02X",addr[0], addr[1],addr[2],addr[3],addr[4],addr[5]);
+        *len_btaddr = strlen(str);
+        
+    } else {
+        printf("bluetooth_get_local_addr err 0x%X\r\n",res);
+        return ERRCODE_FAIL;
+    }
+
+
+    return ERRCODE_SUCC;
+}
+errcode_t init_btaddr_btname(void)
+{
+    bd_addr_t addr_info;
+    errcode_t res;
+
+
+// #if defined(SW_UART_DEBUG) || defined(SW_RTT_DEBUG)
+//     btsrv_set_log_type_level(BTSRV_LOG_UART_INFO);
+// #endif
+//     btsrv_at_cmd_gap_register_callbacks();
+// #ifdef SUPPORT_BREDR
+//     wstp_a2dp_src_register_callbacks();
+//     wstp_a2dp_snk_register_callbacks();
+//     wstp_avrcp_register_callbacks();
+// #endif
+
+
+    res = enable_bt_stack();
+    if (res != 0) {
+        printf("bt enable fail ret 0x%X\r\n",res);
+        return ERRCODE_FAIL;
+    } else {
+        printf("bt enable ok\r\n");
+    }
+    
+    
+    #if 1
+  
+
+   
+    #define BT_MAC_LEN 6
+    unsigned int len = BT_MAC_LEN;
+    unsigned char addr[BT_MAC_LEN] = {0};
+    srand(time(0));
+    res = bluetooth_get_local_addr(&addr[0], len);
+    if (res == 0) {
+        char str[64] = "^PHYNUM:MACBT,";
+        strcat_s(str, strlen(str) + strlen((char*)addr), (char*)addr);
+        printf("%s\r\n", &str[0]);
+        printf("local_addr : ******%02x%02x%02x\n", addr[3], addr[4], addr[5]);
+    } else {
+        printf("bluetooth_get_local_addr err 0x%X\r\n",res);
+        // return ERRCODE_FAIL;
+    }
+
+    //默认是:281106856959
+    addr[3] = rand() % 0xFF;
+    addr[4] = rand() % 0xFF;
+    addr[5] = rand() % 0xFF;  
+    res = bluetooth_set_local_addr(addr, (uint8_t)6);
+    if (res == 0) {
+        printf("bluetooth_set_local_addr OK\r\n");
+    } else {
+        printf("bluetooth_set_local_addr fail\r\n");
+        // return ERRCODE_FAIL;
+    }
+
+    unsigned char namelen = 248;
+    unsigned char name[248] = {0};
+    res = bluetooth_get_local_name(name, &namelen);
+    if (res == 0) {
+        char str[256] = "^btname:";
+        strcat_s(str, strlen(str) + strlen((char*)name), (char*)name);
+        printf("%s\r\n", &str[0]);
+        printf("name: %s, length: %d\n", name, namelen);
+        // return ERRCODE_SUCC;
+    } else {
+        printf("bluetooth_get_local_name ret = 0x%X\n",res);
+        // return ERRCODE_FAIL;
+    }
+    if(strcmp((const char*)name,"WatchSoar")==0)
+    {
+        memset(name,0,sizeof(name));
+        sprintf((char*)name,"WatchSoar_%02X%02X",addr[4],addr[5]);
+        unsigned char btname_len = strlen((const char*)name)+1;
+        res = bluetooth_set_local_name(name,btname_len);
+        printf("set new bt name %s , ret 0x%X\n",name,res);
+    }else{
+        printf("current bt name %s\n",name);
+    }
+#else
+    res = gap_ble_get_local_addr(&addr_info);
+    
+    if ( addr_info.addr[0] == 0x59 &&
+    addr_info.addr[1] == 0x69 &&
+    addr_info.addr[2] == 0x85 &&
+    addr_info.addr[3] == 0x06 &&
+    addr_info.addr[4] == 0x11 &&
+    addr_info.addr[5] == 0x28 )
+    {   
+        addr_info.addr[0] = rand() % 0xFF;
+        addr_info.addr[4] = rand() % 0xFF;
+        addr_info.addr[5] = rand() % 0xFF;
+        addr_info.type = 6;
+        res =  gap_ble_set_local_addr(&addr_info);
+
+        printf("init new bt addr %02x:%02x:%02x:%02x:%02x:%02x ret 0x%X\n", 
+        addr_info.addr[5], addr_info.addr[4], addr_info.addr[3],
+        addr_info.addr[2], addr_info.addr[1], addr_info.addr[0],res);
+    }else{
+        printf("current bt addr %02x:%02x:%02x:%02x:%02x:%02x\n", 
+        addr_info.addr[5], addr_info.addr[4], addr_info.addr[3],
+        addr_info.addr[2], addr_info.addr[1], addr_info.addr[0]);
+    }
+    
+    uint8_t ble_name[20] = {0};
+    uint8_t ble_name_len = 20;
+    res = gap_ble_get_local_name(ble_name, &ble_name_len);
+
+    if(strcmp((const char*)ble_name,"WatchSoar")==0)
+    {
+        memset(ble_name,0,sizeof(ble_name));
+        sprintf((char*)ble_name,"WatchSoar_%02X%02X",addr_info.addr[4],addr_info.addr[5]);
+        ble_name_len = strlen((const char*)ble_name)+1;
+        res = gap_ble_set_local_name(ble_name,ble_name_len);
+        printf("set new bt name %s , ret 0x%X\n",ble_name,res);
+    }else{
+        printf("current bt name %s\n",ble_name);
+    }
+#endif
+    char uuid[] = "1101";
+    char sppname[] = "COM1";
+    uint8_t name_len = strlen((const char*)sppname) + 1;
+    uint8_t server_id = 0;
+
+    /* 创建spp */
+    printf( "create spp server uuid=%s name=%s name_len=%d\n", uuid, sppname, name_len);
+    BtSppServerCreate(uuid, sppname, name_len);
+    BtSppServerAccept(server_id);
+
+    return ERRCODE_SUCC;
+
+}
+errcode_t disable_bt_service(void)
+{
+
+    errcode_t res = disable_bt_stack();
+    if (res != 0) {
+        printf("bt disable fail\r\n");
+        return ERRCODE_FAIL;
+    } else {
+        printf("bt disable ok\r\n");
+        return ERRCODE_SUCC;
+    }
+    return ERRCODE_SUCC;
+}
+
+
+#include "build_version.h"
+#define VER_STR_MAX             128
+errcode_t uapi_get_buildversion(uint8_t *para, uint32_t para_len)
+{
+    if (para == NULL || para_len == 0 )
+        return ERRCODE_FAIL;
+
+    char str[VER_STR_MAX];
+#if !(defined BUILD_TIME) 
+// #warning no BUILD_TIME
+ (void)sprintf_s(str, VER_STR_MAX, "\r\nVersion:%s \r\n",
+                    get_version_string());
+
+#else
+    (void)sprintf_s(str, VER_STR_MAX, "\r\nVersion:%s %s\r\n",
+                    get_version_string(), BUILD_TIME);
+
+#endif
+    printf(str);
+    memset(para,0,para_len);
+    memcpy_s(para,para_len,str,strlen(str));
+    return ERRCODE_SUCC;
+
+}
+
+#if 0
+
 errcode_t uapi_get_btaddr(uint8_t *buf_btaddr, uint32_t *len_btaddr)
 {
     if (buf_btaddr == NULL || len_btaddr == NULL) {
@@ -378,6 +614,8 @@ errcode_t uapi_get_btaddr(uint8_t *buf_btaddr, uint32_t *len_btaddr)
 }
 
 
+
+#endif
 #if 0
 
 #define PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG 0x57000014
index 56d78e7..5118dd2 100644 (file)
@@ -39,6 +39,13 @@ char *uapi_get_CurrentDate(void);
 void  ScreenAlwaysOnCtr(uint8_t turnOnFlag);
 
 errcode_t uapi_get_btaddr(uint8_t *buf_btaddr, uint32_t *len_btaddr);
+errcode_t uapi_get_btname(uint8_t *buf_btname, uint32_t *len_btname);
+
+errcode_t init_btaddr_btname(void);
+errcode_t disable_bt_service(void);
+
+
+errcode_t uapi_get_buildversion(uint8_t *para, uint32_t para_len);
 /**
  * @}
  */
index 3f2f50a..a7ae146 100755 (executable)
@@ -15,15 +15,15 @@ extern "C" {
 #endif
 #endif
 
-#if MEMORY_MINI
+// #if MEMORY_MINI
 #define UPG_FILE_PATH                   "/user/"
 #define UPG_RES_INDEX_PATH              "/user/res_index.bin"
 #define UPG_FILE_NAME                   "/user/update.fwpkg"
-#else
-#define UPG_FILE_PATH                   "/update/"
-#define UPG_RES_INDEX_PATH              "/update/res_index.bin"
-#define UPG_FILE_NAME                   "/update/update.fwpkg"
-#endif
+// #else
+// #define UPG_FILE_PATH                   "/update/"
+// #define UPG_RES_INDEX_PATH              "/update/res_index.bin"
+// #define UPG_FILE_NAME                   "/update/update.fwpkg"
+// #endif
 
 #define UPG_FLASH_SIZE                  (FLASH_MAX_END - FLASH_START)
 #define UPG_FLASH_PAGE_SIZE             FLASH_PAGE_SIZE /* Bytes per sector */