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;
}
Example #3
0
/******************************
     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;

}