#if 1 #include #include #include #include #include //define O_WRONLY and O_RDONLY #include /* System V */ #include /* BSD and Linux */ #include /* XSI STREAMS */ #include "../inc/type.h" #include "../inc/igpio.h" #include "../inc/ii2c.h" //#include #include #define __use_imx_i2c__ 0 #if __use_imx_i2c__ int ii2c_com_init(const char*i2c_node_name,uint8 i2c_addr, int *pfd) { int fd=-1; int err; fd = open(i2c_node_name, O_RDWR); if(fd < 0) { log_printf(LOG_ERR,I_NOUSED,"i2c open %s err.\n",i2c_node_name); return -1; } err = ioctl(fd, I2C_SLAVE, i2c_addr); if (err < 0) { log_printf(LOG_ERR,I_NOUSED,"can't set i2c dev slave addr.\n"); close(fd); return -1; } *pfd = fd; } uint8 i2c_write(int fd, uint8 reg, uint8 val) { int retries; uint8 wdata[2]; uint8 retLen = 0; if(fd<0) return -1; wdata[0] = reg; wdata[1] = val; for (retries = 2; retries; retries--) { retLen = write(fd, wdata, 2); if(retLen == 2) { return 0; } log_printf(LOG_DEBUG,I_NOUSED,"ret writeLen = %d\n",retLen); usleep(1000 * 2); } return -1; } uint8 i2c_read(int fd, uint8 reg, uint8 *pval) { int retries; uint8 retLen=0; if(fd<0) return -1; for (retries = 2; retries; retries--) { retLen = write(fd, ®, 1); if(retLen == 1) { if (read(fd, pval, 1) == 1) { return 0; } } log_printf(LOG_DEBUG,I_NOUSED,"ret writeLen = %d\n",retLen); usleep(1000 * 2); } return -1; } #endif//__imx_i2c__ #endif