static hal_result_t s_hal_chip_xx_eeprom_writepage(uint8_t* pBuffer, uint16_t WriteAddr, uint16_t* NumByteToWrite) { hal_result_t res; hal_chip_xx_eeprom_internal_item_t *intitem = s_hal_chip_xx_eeprom_theinternals.items[0]; hal_i2c_regaddr_t regaddr; regaddr.numofbytes = 2; regaddr.bytes.two = (uint16_t) WriteAddr; res = hal_i2c_write(intitem->config.chipcfg.i2cid, intitem->hwaddress, regaddr, pBuffer, *NumByteToWrite); *NumByteToWrite = 0; return(res); }
result_t i2c_write(i2c_device_t* dev, void* buffer, uint16_t length) { uint16_t busId = dev->busId; uint16_t ret; if((ret = hal_i2c_set_slave_addr(busId, dev->devAddress)) != RV_OK) return ret; if((ret = hal_i2c_setup_interface(busId, dev->baudrate)) != RV_OK) return ret; if((ret = hal_i2c_write(busId, buffer, length)) != RV_OK) return ret; if((ret = hal_i2c_finalize(busId)) != RV_OK) return ret; return RV_OK; }
/*common write */ int i2c_common_write(struct i2c_dev_info_s *dev, void *data, int offset, int size) { int fd = 0, write_len, ret; halI2CLock(); fd = hal_i2c_init(i2c_dev->i2c_controler); if(fd < 0) { ret = ERROR; goto out; } i2c_channel_switch(dev, fd); ret = hal_i2c_write(fd, i2c_dev->dev_addr[0], offset, buf, size); if(ret < 0) goto out; out: if(fd > 0) i2c_close(fd); halI2CUnLock(); return ret; }