修改i2creset 代码增加reset参数指定
authorSnickerSun <snickersun@163.com>
Fri, 22 Nov 2024 09:24:10 +0000 (17:24 +0800)
committerSnickerSun <snickersun@163.com>
Fri, 22 Nov 2024 09:24:10 +0000 (17:24 +0800)
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils.h
code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c

index 1804b3a..49d8c15 100644 (file)
@@ -2357,7 +2357,7 @@ static uint8_t i2c_installed = 0;
 static uint8_t i2c_mutex_installed = 0;
 static osal_mutex i2c_mutex;
 
-void custom_i2c_reset(void)
+void custom_i2c_reset(uint8_t i2cbus, uint16_t i2c_clock)
 {
     errcode_t result;
     if(i2c_mutex_installed == 0)
@@ -2375,7 +2375,7 @@ void custom_i2c_reset(void)
 
     if(i2c_installed == 1)
     {
-        result = uapi_i2c_deinit(I2C_BUS_2);
+        result = uapi_i2c_deinit(i2cbus);
         if (result != ERRCODE_SUCC) 
         {
             PRINT(" i2c deinit fail! ret=0x%x\n", result);
@@ -2388,7 +2388,7 @@ void custom_i2c_reset(void)
 
     if(i2c_installed == 0)
     {
-        result = uapi_i2c_master_init(I2C_BUS_2, 400000, I2C_SPEED_MODE_FS); /* 400000: 400KHz */
+        result = uapi_i2c_master_init(i2cbus, i2c_clock, I2C_SPEED_MODE_FS); /* 400000: 400KHz */
         if (result != ERRCODE_SUCC) {
             PRINT(" i2c init fail! ret=0x%x\n", result);
             return ;
@@ -2399,6 +2399,7 @@ void custom_i2c_reset(void)
     LOS_Mdelay(5);
 
     osal_mutex_unlock(&i2c_mutex);
+    PRINT(" custom_iic_reset done! i2cbus %d clock %d\n",i2cbus,i2c_clock);
 }
 
 errcode_t custom_iic_init(void)
index 8676922..c0b4e3d 100644 (file)
@@ -303,7 +303,7 @@ errcode_t do_custom_fileoperate_service_check_msg(int cmd, void *params, int par
 int uapi_delete_files(const char *file_path);
 void uapi_restore_factory_setting(void);
 
-void custom_i2c_reset(void);
+void custom_i2c_reset(uint8_t i2cbus, uint16_t i2c_clock);
 errcode_t custom_i2c_write_reg(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, int busIndex);
 errcode_t custom_i2c_read_regs(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *readData, int readDataSize, int busIndex);
 errcode_t custom_i2c_transfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex);
index c52ec6f..863f798 100644 (file)
@@ -497,8 +497,26 @@ static uint32_t custom_iic_reset(uint8_t *para, uint32_t paraLen, char *strCommo
 
     UNUSED(strCommonCmd);
 
-    custom_i2c_reset();
- 
+    uint8_t argv[CUSTOM_UTILS_MAX_ARGC][CUSTOM_UTILS_MAX_ARGV_LEN] = { 0 };
+    uint32_t argc = 0;
+
+    int ret = ConvertCmdToParam(para, paraLen, argv, &argc);
+    if (ret != CUSTOM_UTILS_SUCCESS) {
+        wstp_print("CUSTOM_UTILSTEST ATCMD Convert Command Failed\n");
+        return ERRCODE_FAIL;
+    }
+
+    if (argc != 2) {
+        wstp_print("CUSTOM_UTILSTEST ATCMD Set Parameter Failed argc %d\n",argc);
+        return ERRCODE_FAIL;
+    }
+
+    int32_t i2cbus = atoi((char*)argv[0]);
+    int32_t i2cclock = atoi((char*)argv[1]);
+    
+    wstp_print("do i2c reset i2cbus %d  clock %d\n",i2cbus,i2cclock);
+    custom_i2c_reset(i2cbus,i2cclock);
+
     return ERRCODE_SUCC;
 }