Data Structures | |
| struct | ioports_handle |
| struct | ll_io_port_t |
| struct | io_ports_list_t |
| struct | ff_data |
Macros | |
| #define | MAX_PORTS (Output_AuxMax - Output_Aux0 + 1) |
Typedefs | |
| typedef struct ioports_handle | io_ports_private_t |
| typedef struct io_ports_list_t | io_ports_list_t |
Enumerations | |
| enum | ioport_type_xxx_t { Port_AnalogIn = 0 , Port_AnalogOut , Port_DigitalIn , Port_DigitalOut } |
Functions | |
| __STATIC_FORCEINLINE io_ports_private_t * | get_port_data (io_port_type_t type, io_port_direction_t dir) |
| __STATIC_FORCEINLINE uint8_t | is_aux (io_ports_private_t *p_data, pin_function_t function) |
| __STATIC_FORCEINLINE uint8_t | resolve_portnum (io_ports_private_t *p_data, xbar_t *port) |
| uint8_t | ioports_available (io_port_type_t type, io_port_direction_t dir) |
| Get number of digital or analog ports available. More... | |
| uint8_t | ioports_unclaimed (io_port_type_t type, io_port_direction_t dir) |
| Get number of unclaimed digital or analog ports available. More... | |
| uint8_t | ioport_find_free (io_port_type_t type, io_port_direction_t dir, pin_cap_t filter, const char *description) |
| find claimable or claimed analog or digital port. Search starts from the last port number. More... | |
| xbar_t * | ioport_get_info (io_port_type_t type, io_port_direction_t dir, uint8_t port) |
| Return information about a digital or analog port. More... | |
| xbar_t * | ioport_claim (io_port_type_t type, io_port_direction_t dir, uint8_t *port, const char *description) |
| Claim a digital or analog port for exclusive use. More... | |
| bool | ioport_claimable (io_port_type_t type, io_port_direction_t dir, uint8_t port) |
| Check if a analog or digital port is available for exclusive use. More... | |
| void | ioport_assign_function (aux_ctrl_t *aux_ctrl, pin_function_t *function) |
| Deprecated - use ioport_set_function() instead. More... | |
| void | ioport_assign_out_function (aux_ctrl_out_t *aux_ctrl, pin_function_t *function) |
| Deprecated - use ioport_set_function() instead. More... | |
| bool | ioport_set_function (xbar_t *pin, pin_function_t function, driver_caps_t caps) |
| Set pin function. More... | |
| io_port_cando_t | ioports_can_do (void) |
| Get basic ioports capabilities. More... | |
| bool | ioport_can_claim_explicit (void) |
| Deprecated - use ioports_can_do() instead. More... | |
| uint8_t | _get_next (io_port_cfg_t *p, uint8_t port, const char *description, pin_cap_t caps) |
| io_port_cfg_t * | ioports_cfg (io_port_cfg_t *pp, io_port_type_t type, io_port_direction_t dir) |
| Get data and pointers to helper functions for managing ports and port settings. More... | |
| bool | ioports_enumerate (io_port_type_t type, io_port_direction_t dir, pin_cap_t filter, ioports_enumerate_callback_ptr callback, void *data) |
| Enumerate ports. More... | |
| bool | ioport_set_description (io_port_type_t type, io_port_direction_t dir, uint8_t port, const char *description) |
| Set pin description. More... | |
| bool | ioport_analog_out (uint8_t port, float value) |
| bool | ioport_digital_out (uint8_t port, uint32_t value) |
| int32_t | ioport_wait_on_input (io_port_type_t type, uint8_t port, wait_mode_t wait_mode, float timeout) |
| bool | ioport_analog_out_config (uint8_t port, pwm_config_t *config) |
| bool | ioport_digital_in_config (uint8_t port, gpio_in_config_t *config) |
| bool | ioport_enable_irq (uint8_t port, pin_irq_mode_t irq_mode, ioport_interrupt_callback_ptr handler) |
| bool | ioport_digital_out_config (uint8_t port, gpio_out_config_t *config) |
| bool | ioport_digital_pwm_config (uint8_t port, pwm_config_t *config) |
| __STATIC_FORCEINLINE bool | is_match (io_ports_list_t *io_port, io_port_type_t type, io_port_direction_t dir, uint8_t port) |
| __STATIC_FORCEINLINE const char * | pnum_to_string (uint8_t port, const char *pnum) |
| bool | ioport_remap (io_port_type_t type, io_port_direction_t dir, uint8_t port_from, uint8_t port_to) |
| Remap (virtual) port. More... | |
| bool | ioports_add (io_ports_data_t *ports, io_port_type_t type, uint8_t n_in, uint8_t n_out) |
| Deprecated - use ioports_add_analog() or ioports_add_digital() instead. More... | |
| bool | ioports_add_analog (io_analog_t *analog) |
| bool | ioports_add_digital (io_digital_t *digital) |
| __STATIC_FORCEINLINE uint_fast16_t | invert_pwm (ioports_pwm_t *pwm_data, uint_fast16_t pwm_value) |
| calculate inverted pwm value if configured More... | |
| bool | ioports_precompute_pwm_values (pwm_config_t *config, ioports_pwm_t *pwm_data, uint32_t clock_hz) |
| Precompute PWM values for faster conversion. More... | |
| uint_fast16_t | ioports_compute_pwm_value (ioports_pwm_t *pwm_data, float value) |
| Analog value to PWM conversion. More... | |
| void | ioport_save_input_settings (xbar_t *xbar, gpio_in_config_t *config) |
| void | ioport_save_output_settings (xbar_t *xbar, gpio_out_config_t *config) |
| void | ioport_setting_changed (setting_id_t id) |
| void | ioports_add_settings (driver_settings_load_ptr settings_loaded, setting_changed_ptr setting_changed) |
Some wrapper functions for the io_port_t API. They perform the necessary checks for both availability of ports and advanced functionality simplifying plugin code that uses them.
| #define MAX_PORTS (Output_AuxMax - Output_Aux0 + 1) |
| typedef struct io_ports_list_t io_ports_list_t |
| typedef struct ioports_handle io_ports_private_t |
| enum ioport_type_xxx_t |
| uint8_t _get_next | ( | io_port_cfg_t * | p, |
| uint8_t | port, | ||
| const char * | description, | ||
| pin_cap_t | caps | ||
| ) |
| __STATIC_FORCEINLINE io_ports_private_t* get_port_data | ( | io_port_type_t | type, |
| io_port_direction_t | dir | ||
| ) |
| __STATIC_FORCEINLINE uint_fast16_t invert_pwm | ( | ioports_pwm_t * | pwm_data, |
| uint_fast16_t | pwm_value | ||
| ) |
calculate inverted pwm value if configured
| pwm_data | pointer t a spindle_pwm_t structure. |
| pwm_value | non inverted PWM value. |
| bool ioport_analog_out | ( | uint8_t | port, |
| float | value | ||
| ) |
| bool ioport_analog_out_config | ( | uint8_t | port, |
| pwm_config_t * | config | ||
| ) |
| void ioport_assign_function | ( | aux_ctrl_t * | aux_ctrl, |
| pin_function_t * | function | ||
| ) |
Deprecated - use ioport_set_function() instead.
| void ioport_assign_out_function | ( | aux_ctrl_out_t * | aux_ctrl, |
| pin_function_t * | function | ||
| ) |
Deprecated - use ioport_set_function() instead.
| bool ioport_can_claim_explicit | ( | void | ) |
Deprecated - use ioports_can_do() instead.
| xbar_t* ioport_claim | ( | io_port_type_t | type, |
| io_port_direction_t | dir, | ||
| uint8_t * | port, | ||
| const char * | description | ||
| ) |
Claim a digital or analog port for exclusive use.
| type | as an io_port_type_t enum value. |
| dir | as an io_port_direction_t enum value. |
| port | pointer to a uint8_t holding the ports aux number, returns the actual port number to use if successful. |
| description | pointer to a char constant for the pin description. |
| bool ioport_claimable | ( | io_port_type_t | type, |
| io_port_direction_t | dir, | ||
| uint8_t | port | ||
| ) |
Check if a analog or digital port is available for exclusive use.
| type | as an io_port_type_t enum value. |
| dir | as an io_port_direction_t enum value. |
| port | a uint8_t holding the ports aux number. |
| bool ioport_digital_in_config | ( | uint8_t | port, |
| gpio_in_config_t * | config | ||
| ) |
| bool ioport_digital_out | ( | uint8_t | port, |
| uint32_t | value | ||
| ) |
| bool ioport_digital_out_config | ( | uint8_t | port, |
| gpio_out_config_t * | config | ||
| ) |
| bool ioport_digital_pwm_config | ( | uint8_t | port, |
| pwm_config_t * | config | ||
| ) |
| bool ioport_enable_irq | ( | uint8_t | port, |
| pin_irq_mode_t | irq_mode, | ||
| ioport_interrupt_callback_ptr | handler | ||
| ) |
| uint8_t ioport_find_free | ( | io_port_type_t | type, |
| io_port_direction_t | dir, | ||
| pin_cap_t | filter, | ||
| const char * | description | ||
| ) |
find claimable or claimed analog or digital port. Search starts from the last port number.
| type | as an io_port_type_t enum value. |
| dir | as an io_port_direction_t enum value. |
| description | pointer to a char constant for the pin description of a previousely claimed port or a port number to be used as the upper limit for the search, or NULL if searching for the first free port. |
| xbar_t* ioport_get_info | ( | io_port_type_t | type, |
| io_port_direction_t | dir, | ||
| uint8_t | port | ||
| ) |
Return information about a digital or analog port.
| type | as an io_port_type_t enum value. |
| dir | as an io_port_direction_t enum value. |
| port | the claimed port aux number. |
| bool ioport_remap | ( | io_port_type_t | type, |
| io_port_direction_t | dir, | ||
| uint8_t | port_from, | ||
| uint8_t | port_to | ||
| ) |
Remap (virtual) port.
| type | as an io_port_type_t enum value. |
| dir | as an io_port_direction_t enum value. |
| port_from | the assigned port number. |
| port_to | the remapped port number. The original port number will be swapped with port_from. |
| void ioport_save_input_settings | ( | xbar_t * | xbar, |
| gpio_in_config_t * | config | ||
| ) |
| void ioport_save_output_settings | ( | xbar_t * | xbar, |
| gpio_out_config_t * | config | ||
| ) |
| bool ioport_set_description | ( | io_port_type_t | type, |
| io_port_direction_t | dir, | ||
| uint8_t | port, | ||
| const char * | description | ||
| ) |
Set pin description.
| type | as an io_port_type_t enum value. |
| dir | as an io_port_direction_t enum value. |
| port | the port aux number. |
| description | pointer to a char constant for the pin description. |
| bool ioport_set_function | ( | xbar_t * | pin, |
| pin_function_t | function, | ||
| driver_caps_t | caps | ||
| ) |
Set pin function.
| port | pointer to a xbar_t structure. |
| function | a pin_function_t enum value. |
| caps | pointer to driver_caps_t capability flags. |
| void ioport_setting_changed | ( | setting_id_t | id | ) |
| int32_t ioport_wait_on_input | ( | io_port_type_t | type, |
| uint8_t | port, | ||
| wait_mode_t | wait_mode, | ||
| float | timeout | ||
| ) |
| bool ioports_add | ( | io_ports_data_t * | ports, |
| io_port_type_t | type, | ||
| uint8_t | n_in, | ||
| uint8_t | n_out | ||
| ) |
Deprecated - use ioports_add_analog() or ioports_add_digital() instead.
| bool ioports_add_analog | ( | io_analog_t * | analog | ) |
| bool ioports_add_digital | ( | io_digital_t * | digital | ) |
| void ioports_add_settings | ( | driver_settings_load_ptr | settings_loaded, |
| setting_changed_ptr | setting_changed | ||
| ) |
| uint8_t ioports_available | ( | io_port_type_t | type, |
| io_port_direction_t | dir | ||
| ) |
Get number of digital or analog ports available.
| type | as an io_port_type_t enum value. |
| dir | as an io_port_direction_t enum value. |
| io_port_cando_t ioports_can_do | ( | void | ) |
Get basic ioports capabilities.
| io_port_cfg_t* ioports_cfg | ( | io_port_cfg_t * | pp, |
| io_port_type_t | type, | ||
| io_port_direction_t | dir | ||
| ) |
Get data and pointers to helper functions for managing ports and port settings.
| pp | a pointer to a io_port_cfg_t struct to hold the data and pointers. |
| type | as an io_port_type_t enum value. |
| dir | as an io_port_direction_t enum value. |
| uint_fast16_t ioports_compute_pwm_value | ( | ioports_pwm_t * | pwm_data, |
| float | value | ||
| ) |
Analog value to PWM conversion.
| pwm_data | pointer to a ioports_pwm_t structure. |
| value | analog value to be converted. |
NOTE: ioports_precompute_pwm_values() must be called to precompute values before this function is called. Typically this is done by the ioports initialization code.
| bool ioports_enumerate | ( | io_port_type_t | type, |
| io_port_direction_t | dir, | ||
| pin_cap_t | filter, | ||
| ioports_enumerate_callback_ptr | callback, | ||
| void * | data | ||
| ) |
Enumerate ports.
| type | as an io_port_type_t enum value. |
| dir | as an io_port_direction_t enum value. |
| filter | a pin_cap_t union with fields set that must match the port capabilities. |
| callback | pointer to a ioports_enumerate_callback_ptr function that will be called for each matching port. If the function returns true the enumeration will end. |
| data | a pointer to context data passed to the callback function. |
| bool ioports_precompute_pwm_values | ( | pwm_config_t * | config, |
| ioports_pwm_t * | pwm_data, | ||
| uint32_t | clock_hz | ||
| ) |
Precompute PWM values for faster conversion.
| config | pointer to a pwm_config_t structure. |
| pwm_data | pointer to a ioports_pwm_t structure, to hold the precomputed values. |
| clock_hz | timer clock frequency used for PWM generation. |
| uint8_t ioports_unclaimed | ( | io_port_type_t | type, |
| io_port_direction_t | dir | ||
| ) |
Get number of unclaimed digital or analog ports available.
| type | as an io_port_type_t enum value. |
| dir | as an io_port_direction_t enum value. |
| __STATIC_FORCEINLINE uint8_t is_aux | ( | io_ports_private_t * | p_data, |
| pin_function_t | function | ||
| ) |
| __STATIC_FORCEINLINE bool is_match | ( | io_ports_list_t * | io_port, |
| io_port_type_t | type, | ||
| io_port_direction_t | dir, | ||
| uint8_t | port | ||
| ) |
| __STATIC_FORCEINLINE const char* pnum_to_string | ( | uint8_t | port, |
| const char * | pnum | ||
| ) |
| __STATIC_FORCEINLINE uint8_t resolve_portnum | ( | io_ports_private_t * | p_data, |
| xbar_t * | port | ||
| ) |