SOL_API struct sol_gpio * sol_gpio_open_by_label(const char *label, const struct sol_gpio_config *config) { uint32_t pin; _log_init(); #ifdef USE_PIN_MUX if (!sol_pin_mux_map(label, SOL_IO_GPIO, &pin)) return sol_gpio_open(pin, config); SOL_WRN("Label '%s' couldn't be mapped or can't be used as GPIO", label); #else SOL_INF("Pin Multiplexer support is necessary to open a 'board pin'."); (void)pin; #endif return NULL; }
SOL_API struct sol_aio * sol_aio_open_by_label(const char *label, unsigned int precision) { #ifdef USE_PIN_MUX int device, pin; #endif _log_init(); #ifdef USE_PIN_MUX if (!sol_pin_mux_map(label, SOL_IO_AIO, &device, &pin)) return sol_aio_open(device, pin, precision); SOL_WRN("Label '%s' couldn't be mapped or can't be used as Analog I/O", label); #else SOL_INF("Pin Multiplexer support is necessary to open a 'board pin'."); #endif return NULL; }
SOL_API struct sol_pwm * sol_pwm_open_by_label(const char *label, const struct sol_pwm_config *config) { int device, channel; _log_init(); #ifdef USE_PIN_MUX if (!sol_pin_mux_map(label, SOL_IO_PWM, &device, &channel)) return sol_pwm_open(device, channel, config); SOL_WRN("Label '%s' couldn't be mapped or can't be used as PWM", label); #else SOL_INF("Pin Multiplexer support is necessary to open a 'board pin'."); (void)device; (void)channel; #endif return NULL; }