From: SnickerSun Date: Thu, 21 Nov 2024 07:51:38 +0000 (+0800) Subject: 取消所有custom_utils里加的irq_lock。解决ipc error造成的 蓝牙重启 X-Git-Tag: fd230_release_V1.3.102~50^2^2~3 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=c96a602721e060a0691c2c3b8a991f4753bdaf89;p=mirrors%2FFD230.git 取消所有custom_utils里加的irq_lock。解决ipc error造成的 蓝牙重启 --- diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index 372093009..964a930ac 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -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: