取消所有custom_utils里加的irq_lock。解决ipc error造成的 蓝牙重启
authorSnickerSun <snickersun@163.com>
Thu, 21 Nov 2024 07:51:38 +0000 (15:51 +0800)
committerSnickerSun <snickersun@163.com>
Thu, 21 Nov 2024 07:51:38 +0000 (15:51 +0800)
code/sdk/drivers/peripheral/utils/custom_utils.c

index 3720930..964a930 100644 (file)
@@ -229,10 +229,10 @@ void uapi_poweroff_device(void)
     reset_deal_with_fs();
     osDelay(50);
 // uapi_sys_shipmode(0);
-    uint32_t irq = osal_irq_lock();
+    // uint32_t irq = osal_irq_lock();
     poweroff_bt_dsp_display();
     mcu_poweroff();
-    osal_irq_restore(irq);
+    // osal_irq_restore(irq);
 
 }
 
@@ -406,7 +406,7 @@ extern void bluetooth_enable_all(void);
 bool start_custom_ble_service(void)
 {
     //加锁避免bt 初始化失败
-    uint32_t irq_sts = osal_irq_lock();
+    // uint32_t irq_sts = osal_irq_lock();
 #ifdef SUPPORT_BLE_SERVICE
         PRINT("start custom protocol classic bt ble service !\r\n");
         bluetooth_enable_all();
@@ -415,7 +415,7 @@ bool start_custom_ble_service(void)
     {
         uapi_dev_runtime_set_bt_powerstat(1);
     }
-    osal_irq_restore(irq_sts);
+    // osal_irq_restore(irq_sts);
     return true;
 }
 
@@ -2460,7 +2460,7 @@ errcode_t custom_i2c_read_regs(uint16_t slaveAddr, uint16_t reg, int regLength,
     data.receive_buf = readData;
     data.receive_len = readDataSize;
 
-    uint32_t irq_sts = osal_irq_lock();
+    // uint32_t irq_sts = osal_irq_lock();
 
     for (retry = 0; retry < CUSTOM_I2C_TIME_MAX; retry++) {
         ret = uapi_i2c_master_writeread(busIndex, slaveAddr, &data);
@@ -2471,8 +2471,8 @@ errcode_t custom_i2c_read_regs(uint16_t slaveAddr, uint16_t reg, int regLength,
     if (ret != ERRCODE_SUCC) {
         PRINT("i2cRead data read fail! busIndex %d, slaveAddr 0x%x, regaddr 0x%X,reglength %d, ret=0x%x\n",busIndex, slaveAddr,reg,regLength, ret);
     }
+    // osal_irq_restore(irq_sts);
     osal_kfree(write_data);
-    osal_irq_restore(irq_sts);
 error:
 
     cnt = pm_veto_get_id_cnt(PM_ID_GSENSOR);
@@ -2527,8 +2527,9 @@ errcode_t custom_i2c_write_reg(uint16_t slaveAddr, uint16_t reg, int regLength,
     data.receive_len = 0;
 
     
-    uint32_t irq_sts = osal_irq_lock();
-
+    //irqlock 要求不可以超过1ms,因此在此处是不合理的,取消此操作。 超过15ms会造成ipc error,蓝牙重启
+    // uint32_t irq_sts = osal_irq_lock();  
+    
     for (retry = 0; retry < CUSTOM_I2C_TIME_MAX; retry++) {
         ret = uapi_i2c_master_write(busIndex, slaveAddr, &data);
         if (ret == ERRCODE_SUCC) {
@@ -2539,7 +2540,7 @@ errcode_t custom_i2c_write_reg(uint16_t slaveAddr, uint16_t reg, int regLength,
         PRINT("i2cWrite cywee data write fail! ret=0x%x\n", ret);
     }
 
-    osal_irq_restore(irq_sts);
+    // osal_irq_restore(irq_sts);
 free_mem:
     osal_kfree(write_data);
 error: