bool iotjs_i2c_write(iotjs_i2c_t* i2c) { I2C_METHOD_HEADER(i2c); uint8_t len = i2c->buf_len; IOTJS_ASSERT(len > 0); uint8_t* data = (uint8_t*)i2c->buf_data; int ret = iotbus_i2c_write(platform_data->i2c_context, data, len); IOTJS_RELEASE(i2c->buf_data); if (ret < 0) { DLOG("%s: cannot write data", __func__); return false; } return true; }
bool iotjs_i2c_write(iotjs_i2c_t* i2c) { I2C_METHOD_HEADER(i2c); uint8_t len = _this->buf_len; IOTJS_ASSERT(len > 0); uint8_t* data = (uint8_t*)_this->buf_data; int ret = iotbus_i2c_write(platform_data->i2c_context, data, len); if (_this->buf_data != NULL) { iotjs_buffer_release(_this->buf_data); } if (ret < 0) { DLOG("%s: cannot write data", __func__); return false; } return true; }
/****************************** I2C TEST ******************************/ int systemio_test_i2c(char *failstr) { // i2c read write test int result = SYSIO_RESULT_FAIL; int fail_flag = 0; int ret = 0; iotbus_i2c_context_h hnd; int bus_num = 1; // changing addr and cmd depending on board uint8_t addr = 0x08; uint8_t cmd[2] = { 0x01, 0x02 }; hnd = iotbus_i2c_init(bus_num); if (hnd == NULL) { SYSIO_DEBUG("[IOTAPI] iotbus_i2c_init() fail \n"); REGISTER_FAIL_REASON("iotbus_i2c_init() fail", &fail_flag); goto done; } else { SYSIO_DEBUG("[IOTAPI] iotbus_i2c_init() success \n"); } ret = iotbus_i2c_set_frequency(hnd, IOTBUS_I2C_STD); if (ret < 0) { REGISTER_FAIL_REASON("iotbus_i2c_set_frequency() fail", &fail_flag); SYSIO_DEBUG("[IOTAPI] iotbus_i2c_set_frequency() fail \n"); //return ; } else { SYSIO_DEBUG("[IOTAPI] iotbus_i2c_set_frequency() success \n"); } ret = iotbus_i2c_set_address(hnd, addr); if (ret < 0) { SYSIO_DEBUG("[IOTAPI] iotbus_i2c_set_address() fail \n"); REGISTER_FAIL_REASON("iotbus_i2c_set_address() fail", &fail_flag); //return ; } else { SYSIO_DEBUG("[IOTAPI] iotbus_i2c_set_address() success \n"); } ret = iotbus_i2c_write(hnd, cmd, 2); if (ret < 0) { SYSIO_DEBUG("[IOTAPI] iotbus_i2c_write() fail \n"); // REGISTER_FAIL_REASON("iotbus_i2c_write() fail", &fail_flag); //return ; } else { SYSIO_DEBUG("[IOTAPI] iotbus_i2c_write() success \n"); } uint8_t buf[10]; ret = iotbus_i2c_read(hnd, buf, 10); if (ret < 0) { SYSIO_DEBUG("[IOTAPI] iotbus_i2c_read() fail \n"); // REGISTER_FAIL_REASON("iotbus_i2c_read() fail", &fail_flag); //return ; } else { SYSIO_DEBUG("[IOTAPI] iotbus_i2c_read() success \n"); } ret = iotbus_i2c_stop(hnd); if (ret < 0) { SYSIO_DEBUG("[IOTAPI] iotbus_i2c_stop() fail \n"); REGISTER_FAIL_REASON("iotbus_i2c_stop() fail", &fail_flag); //return ; } else { SYSIO_DEBUG("[IOTAPI] iotbus_i2c_stop() success \n"); } done: /* check if succeed */ if (fail_flag == 0) { result = SYSIO_RESULT_SUCCESS; } return result; }