void iotjs_spi_open_worker(uv_work_t* work_req) {
  SPI_WORKER_INIT;
  IOTJS_VALIDATED_STRUCT_METHOD(iotjs_spi_t, spi);

  if (!iotjs_spi_open(spi)) {
    DDLOG("%s - SPI open failed %d", __func__, _this->bus);
    req_data->result = false;
    return;
  }

  req_data->result = true;
}
Example #2
0
/*
 * SPI worker function
 */
static void spi_worker(uv_work_t* work_req) {
  iotjs_periph_reqwrap_t* req_wrap =
      (iotjs_periph_reqwrap_t*)(iotjs_reqwrap_from_request(
          (uv_req_t*)work_req));
  iotjs_spi_t* spi = (iotjs_spi_t*)req_wrap->data;

  switch (req_wrap->op) {
    case kSpiOpClose: {
      req_wrap->result = iotjs_spi_close(spi);
      break;
    }
    case kSpiOpOpen: {
      req_wrap->result = iotjs_spi_open(spi);
      break;
    }
    case kSpiOpTransferArray:
    case kSpiOpTransferBuffer: {
      req_wrap->result = iotjs_spi_transfer(spi);
      break;
    }
    default:
      IOTJS_ASSERT(!"Invalid Operation");
  }
}