static void gpio_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_gpio_t* gpio = (iotjs_gpio_t*)req_wrap->data; switch (req_wrap->op) { case kGpioOpOpen: req_wrap->result = iotjs_gpio_open(gpio); break; case kGpioOpWrite: req_wrap->result = iotjs_gpio_write(gpio); break; case kGpioOpRead: req_wrap->result = iotjs_gpio_read(gpio); break; case kGpioOpClose: req_wrap->result = iotjs_gpio_close(gpio); break; default: IOTJS_ASSERT(!"Invalid Operation"); } }
/* * 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"); } }
iotjs_spi_reqwrap_t* iotjs_spi_reqwrap_from_request(uv_work_t* req) { return (iotjs_spi_reqwrap_t*)(iotjs_reqwrap_from_request((uv_req_t*)req)); }