Beispiel #1
0
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;
}