广播imei死机问题
authordxy <1731678236qq.com>
Mon, 20 Oct 2025 03:43:37 +0000 (11:43 +0800)
committerdxy <1731678236qq.com>
Mon, 20 Oct 2025 03:43:37 +0000 (11:43 +0800)
2.code/1.sdk/apps/common/third_party_profile/jieli/trans_data_demo/le_trans_data.c

index 5a6fe31..a9a97ba 100644 (file)
@@ -177,6 +177,7 @@ static void reset_passkey_cb(u32 *key);
 
 //------------------------------------------------------
 //广播参数设置
+#define DEV_IMEI_MAX  15  //设备最大imei长度15
 static void advertisements_setup_init();
 static int set_adv_enable(void *priv, u32 en);
 static int get_buffer_vaild_len(void *priv);
@@ -186,7 +187,7 @@ extern void sys_auto_shut_down_disable(void);
 extern void sys_auto_shut_down_enable(void);
 extern u8 get_total_connect_dev(void);
 static u8 set_adv_flag = 0;//默认开启蓝牙广播
-static char adv_imei[17]={0};
+static char adv_imei[DEV_IMEI_MAX]={0};
 //4G发送蓝牙扫描标识 0 开启 1关闭
 void set_adv_flag_fun(u8 flag){
     set_adv_flag = flag;
@@ -247,7 +248,13 @@ void start_scan_bt(void){
     bt_emitter_start_search_device(); //开始扫描
 }
 void set_adv_imei(char *imei){
-    memcpy((void *)adv_imei,(void *)imei,16);
+    memset(adv_imei,0,DEV_IMEI_MAX);
+    u8 len=strlen(imei);
+    if(len >= DEV_IMEI_MAX)
+    {
+        len=DEV_IMEI_MAX;
+    }
+    memcpy((void *)adv_imei,(void *)imei,len);
     bt_ble_init();
 }
 void stop_scan_bt(void){
@@ -1269,8 +1276,8 @@ static int make_set_adv_data(void)
     //客户定制的厂商数据格式
      //VID 2个字节
     
-    uint8_t manufacturer[20];
-    memset(manufacturer,0,20);
+    uint8_t manufacturer[19];
+    memset(manufacturer,0,19);
     uint8_t manufacturer_len = 0;
     manufacturer[manufacturer_len++] = 0xff; //
     manufacturer[manufacturer_len++] = 0xff;