@@ -360,11 +360,16 @@ static esp_err_t i2c_bus_read_reg8(i2c_bus_device_handle_t dev_handle, uint8_t m
360360 } else
361361#endif
362362 {
363+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
363364 if (mem_address != NULL_I2C_MEM_ADDR ) {
365+ #endif
364366 ret = i2c_master_transmit_receive (i2c_device -> dev_handle , & mem_address , 1 , data , data_len , I2C_BUS_TICKS_TO_WAIT );
367+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
365368 } else {
369+ ESP_LOGD (TAG , "register address 0x%X is skipped and will not be sent" , NULL_I2C_MEM_ADDR );
366370 ret = i2c_master_receive (i2c_device -> dev_handle , data , data_len , I2C_BUS_TICKS_TO_WAIT );
367371 }
372+ #endif
368373 }
369374 I2C_BUS_MUTEX_GIVE (i2c_device -> i2c_bus -> mutex , ESP_FAIL );
370375 return ret ;
@@ -390,11 +395,16 @@ esp_err_t i2c_bus_read_reg16(i2c_bus_device_handle_t dev_handle, uint16_t mem_ad
390395 } else
391396#endif
392397 {
398+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
393399 if (mem_address != NULL_I2C_MEM_16BIT_ADDR ) {
400+ #endif
394401 ret = i2c_master_transmit_receive (i2c_device -> dev_handle , memAddress8 , 2 , data , data_len , I2C_BUS_TICKS_TO_WAIT );
402+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
395403 } else {
404+ ESP_LOGD (TAG , "register address 0x%X is skipped and will not be sent" , NULL_I2C_MEM_16BIT_ADDR );
396405 ret = i2c_master_receive (i2c_device -> dev_handle , data , data_len , I2C_BUS_TICKS_TO_WAIT );
397406 }
407+ #endif
398408 }
399409 I2C_BUS_MUTEX_GIVE (i2c_device -> i2c_bus -> mutex , ESP_FAIL );
400410 return ret ;
@@ -417,7 +427,9 @@ static esp_err_t i2c_bus_write_reg8(i2c_bus_device_handle_t dev_handle, uint8_t
417427 } else
418428#endif
419429 {
430+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
420431 if (mem_address != NULL_I2C_MEM_ADDR ) {
432+ #endif
421433 uint8_t * data_addr = malloc (data_len + 1 );
422434 if (data_addr == NULL ) {
423435 ESP_LOGE (TAG , "data_addr memory alloc fail" );
@@ -430,9 +442,12 @@ static esp_err_t i2c_bus_write_reg8(i2c_bus_device_handle_t dev_handle, uint8_t
430442 }
431443 ret = i2c_master_transmit (i2c_device -> dev_handle , data_addr , data_len + 1 , I2C_BUS_TICKS_TO_WAIT );
432444 free (data_addr );
445+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
433446 } else {
447+ ESP_LOGD (TAG , "register address 0x%X is skipped and will not be sent" , NULL_I2C_MEM_ADDR );
434448 ret = i2c_master_transmit (i2c_device -> dev_handle , data , data_len , I2C_BUS_TICKS_TO_WAIT );
435449 }
450+ #endif
436451 }
437452 I2C_BUS_MUTEX_GIVE (i2c_device -> i2c_bus -> mutex , ESP_FAIL );
438453 return ret ;
@@ -457,7 +472,9 @@ esp_err_t i2c_bus_write_reg16(i2c_bus_device_handle_t dev_handle, uint16_t mem_a
457472 } else
458473#endif
459474 {
475+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
460476 if (mem_address != NULL_I2C_MEM_16BIT_ADDR ) {
477+ #endif
461478 uint8_t * data_addr = malloc (data_len + 2 );
462479 if (data_addr == NULL ) {
463480 ESP_LOGE (TAG , "data_addr memory alloc fail" );
@@ -471,9 +488,12 @@ esp_err_t i2c_bus_write_reg16(i2c_bus_device_handle_t dev_handle, uint16_t mem_a
471488 }
472489 ret = i2c_master_transmit (i2c_device -> dev_handle , data_addr , data_len + 2 , I2C_BUS_TICKS_TO_WAIT );
473490 free (data_addr );
491+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
474492 } else {
493+ ESP_LOGD (TAG , "register address 0x%X is skipped and will not be sent" , NULL_I2C_MEM_16BIT_ADDR );
475494 ret = i2c_master_transmit (i2c_device -> dev_handle , data , data_len , I2C_BUS_TICKS_TO_WAIT );
476495 }
496+ #endif
477497 }
478498 I2C_BUS_MUTEX_GIVE (i2c_device -> i2c_bus -> mutex , ESP_FAIL );
479499 return ret ;
0 commit comments