/* ***************************************************************************
* File name: eeprom_io.c
* Function: eeprom读写操作
* Description: 利用系统提供的I2C总线驱动实现eeprom设备的读写方法,
* 对外开放4个函数接口, 分别为:
* 单字节写入函数: int eeprom_byte_write(u8 pos, u8 data)
* 单字节读取函数: u8 eeprom_byte_read(u8 pos)
* 多字节写入函数: int eeprom_page_write(u8 pos, u8 *data, int size)
* 多字节读取函数: int eeprom_page_read(u8 pos, u8 *data, int size)
* Author & Date: Joshua Chan, 2011/12/18
* **************************************************************************/
#include
#include
#include
#include
#include
#include
#include "eeprom_io.h"
/* 对设备进行初始化设置, 设置超时时间及重发次数, 参数为设备文件描述符 */
static int eeprom_init(int fd)
{
ioctl(fd, I2C_TIMEOUT, 4);
ioctl(fd, I2C_RETRIES, 2);
return 0;
}
/* 初始化一个ioctl_st结构, 并预分配空间 */
static ioctl_st *ioctl_st_init(void)
{
ioctl_st *iocs;
iocs = malloc(sizeof(ioctl_st));
if (!(iocs)) {
perror("malloc iocs:");
return NULL;
}
iocs->msgs = malloc(I2C_MSG_SIZE * MAX_MSG_NR);
if (!(iocs->msgs)) {
perror("malloc iocs->msgs");