@@ -360,11 +360,16 @@ static esp_err_t i2c_bus_read_reg8(i2c_bus_device_handle_t dev_handle, uint8_t m
360
360
} else
361
361
#endif
362
362
{
363
+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
363
364
if (mem_address != NULL_I2C_MEM_ADDR ) {
365
+ #endif
364
366
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
365
368
} else {
369
+ ESP_LOGD (TAG , "register address 0x%X is skipped and will not be sent" , NULL_I2C_MEM_ADDR );
366
370
ret = i2c_master_receive (i2c_device -> dev_handle , data , data_len , I2C_BUS_TICKS_TO_WAIT );
367
371
}
372
+ #endif
368
373
}
369
374
I2C_BUS_MUTEX_GIVE (i2c_device -> i2c_bus -> mutex , ESP_FAIL );
370
375
return ret ;
@@ -390,11 +395,16 @@ esp_err_t i2c_bus_read_reg16(i2c_bus_device_handle_t dev_handle, uint16_t mem_ad
390
395
} else
391
396
#endif
392
397
{
398
+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
393
399
if (mem_address != NULL_I2C_MEM_16BIT_ADDR ) {
400
+ #endif
394
401
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
395
403
} else {
404
+ ESP_LOGD (TAG , "register address 0x%X is skipped and will not be sent" , NULL_I2C_MEM_16BIT_ADDR );
396
405
ret = i2c_master_receive (i2c_device -> dev_handle , data , data_len , I2C_BUS_TICKS_TO_WAIT );
397
406
}
407
+ #endif
398
408
}
399
409
I2C_BUS_MUTEX_GIVE (i2c_device -> i2c_bus -> mutex , ESP_FAIL );
400
410
return ret ;
@@ -417,7 +427,9 @@ static esp_err_t i2c_bus_write_reg8(i2c_bus_device_handle_t dev_handle, uint8_t
417
427
} else
418
428
#endif
419
429
{
430
+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
420
431
if (mem_address != NULL_I2C_MEM_ADDR ) {
432
+ #endif
421
433
uint8_t * data_addr = malloc (data_len + 1 );
422
434
if (data_addr == NULL ) {
423
435
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
430
442
}
431
443
ret = i2c_master_transmit (i2c_device -> dev_handle , data_addr , data_len + 1 , I2C_BUS_TICKS_TO_WAIT );
432
444
free (data_addr );
445
+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
433
446
} else {
447
+ ESP_LOGD (TAG , "register address 0x%X is skipped and will not be sent" , NULL_I2C_MEM_ADDR );
434
448
ret = i2c_master_transmit (i2c_device -> dev_handle , data , data_len , I2C_BUS_TICKS_TO_WAIT );
435
449
}
450
+ #endif
436
451
}
437
452
I2C_BUS_MUTEX_GIVE (i2c_device -> i2c_bus -> mutex , ESP_FAIL );
438
453
return ret ;
@@ -457,7 +472,9 @@ esp_err_t i2c_bus_write_reg16(i2c_bus_device_handle_t dev_handle, uint16_t mem_a
457
472
} else
458
473
#endif
459
474
{
475
+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
460
476
if (mem_address != NULL_I2C_MEM_16BIT_ADDR ) {
477
+ #endif
461
478
uint8_t * data_addr = malloc (data_len + 2 );
462
479
if (data_addr == NULL ) {
463
480
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
471
488
}
472
489
ret = i2c_master_transmit (i2c_device -> dev_handle , data_addr , data_len + 2 , I2C_BUS_TICKS_TO_WAIT );
473
490
free (data_addr );
491
+ #if !CONFIG_I2C_BUS_REMOVE_NULL_MEM_ADDR
474
492
} else {
493
+ ESP_LOGD (TAG , "register address 0x%X is skipped and will not be sent" , NULL_I2C_MEM_16BIT_ADDR );
475
494
ret = i2c_master_transmit (i2c_device -> dev_handle , data , data_len , I2C_BUS_TICKS_TO_WAIT );
476
495
}
496
+ #endif
477
497
}
478
498
I2C_BUS_MUTEX_GIVE (i2c_device -> i2c_bus -> mutex , ESP_FAIL );
479
499
return ret ;
0 commit comments