static void aio_close(struct sol_flow_node *node, void *data) { struct aio_data *mdata = data; SOL_NULL_CHECK(mdata); free(mdata->pin); if (mdata->aio) sol_aio_close(mdata->aio); if (mdata->timer) sol_timeout_del(mdata->timer); }
SOL_API struct sol_aio * sol_aio_open(int device, int pin, unsigned int precision) { struct sol_aio *aio; _log_init(); aio = sol_aio_open_raw(device, pin, precision); #ifdef USE_PIN_MUX if (aio && sol_pin_mux_setup_aio(device, pin)) { SOL_WRN("Pin Multiplexer Recipe for aio device=%d pin=%d found, " "but couldn't be applied.", device, pin); sol_aio_close(aio); aio = NULL; } #endif return aio; }