@@ -400,8 +400,19 @@ cy_rslt_t cyhal_i2c_slave_config_read_buff(cyhal_i2c_t *obj, uint8_t *data, uint
400
400
cy_rslt_t cyhal_i2c_master_mem_write (cyhal_i2c_t * obj , uint16_t address , uint16_t mem_addr , uint16_t mem_addr_size , const uint8_t * data , uint16_t size , uint32_t timeout )
401
401
{
402
402
uint8_t mem_addr_buf [2 ];
403
- mem_addr_buf [0 ] = (uint8_t )(mem_addr >> 8 );
404
- mem_addr_buf [1 ] = (uint8_t )mem_addr ;
403
+ if (mem_addr_size == 1 )
404
+ {
405
+ mem_addr_buf [0 ] = (uint8_t )mem_addr ;
406
+ }
407
+ else if (mem_addr_size == 2 )
408
+ {
409
+ mem_addr_buf [0 ] = (uint8_t )(mem_addr >> 8 );
410
+ mem_addr_buf [1 ] = (uint8_t )mem_addr ;
411
+ }
412
+ else
413
+ {
414
+ return CYHAL_I2C_RSLT_ERR_INVALID_ADDRESS_SIZE ;
415
+ }
405
416
406
417
cy_rslt_t status = cyhal_i2c_master_write (obj , address , mem_addr_buf , mem_addr_size , timeout , false);
407
418
@@ -427,8 +438,19 @@ cy_rslt_t cyhal_i2c_master_mem_write(cyhal_i2c_t *obj, uint16_t address, uint16_
427
438
cy_rslt_t cyhal_i2c_master_mem_read (cyhal_i2c_t * obj , uint16_t address , uint16_t mem_addr , uint16_t mem_addr_size , uint8_t * data , uint16_t size , uint32_t timeout )
428
439
{
429
440
uint8_t mem_addr_buf [2 ];
430
- mem_addr_buf [0 ] = (uint8_t )(mem_addr >> 8 );
431
- mem_addr_buf [1 ] = (uint8_t )mem_addr ;
441
+ if (mem_addr_size == 1 )
442
+ {
443
+ mem_addr_buf [0 ] = (uint8_t )mem_addr ;
444
+ }
445
+ else if (mem_addr_size == 2 )
446
+ {
447
+ mem_addr_buf [0 ] = (uint8_t )(mem_addr >> 8 );
448
+ mem_addr_buf [1 ] = (uint8_t )mem_addr ;
449
+ }
450
+ else
451
+ {
452
+ return CYHAL_I2C_RSLT_ERR_INVALID_ADDRESS_SIZE ;
453
+ }
432
454
433
455
cy_rslt_t status = cyhal_i2c_master_write (obj , address , mem_addr_buf , mem_addr_size , timeout , false);
434
456
if (status == CY_RSLT_SUCCESS )
0 commit comments