Go to the source code of this file.
Data Structures | |
struct | io_port_t |
Properties and handlers for auxiliary digital and analog I/O. More... | |
struct | io_ports_detail_t |
struct | io_ports_data |
struct | ioports_pwm_t |
Precalculated values that may be set/used by HAL driver to speed up analog input to PWM conversions. */. More... | |
Macros | |
#define | iports_get_pnum(type, port) type.get_pnum(&type, port) |
#define | ioports_map(type, port) ( type.map ? type.map[port] : port ) |
Typedefs | |
typedef void(* | digital_out_ptr) (uint8_t port, bool on) |
Pointer to function for setting a digital output. More... | |
typedef bool(* | analog_out_ptr) (uint8_t port, float value) |
Pointer to function for setting an analog output. More... | |
typedef int32_t(* | wait_on_input_ptr) (io_port_type_t type, uint8_t port, wait_mode_t wait_mode, float timeout) |
Pointer to function for reading a digital or analog input. More... | |
typedef void(* | set_pin_description_ptr) (io_port_type_t type, io_port_direction_t dir, uint8_t port, const char *s) |
Pointer to function for setting pin description for a digital or analog port. More... | |
typedef xbar_t *(* | get_pin_info_ptr) (io_port_type_t type, io_port_direction_t dir, uint8_t port) |
Pointer to function for getting information about a digital or analog port. NOTE: The port information pointed to will be overwritten by the next call to this function. More... | |
typedef bool(* | claim_port_ptr) (io_port_type_t type, io_port_direction_t dir, uint8_t *port, const char *description) |
Pointer to function for claiming a digital or analog port for exclusive use. More... | |
typedef bool(* | swap_pins_ptr) (io_port_type_t type, io_port_direction_t dir, uint8_t port_from, uint8_t port_to) |
Pointer to function for swapping two digital or analog ports. More... | |
typedef void(* | ioport_interrupt_callback_ptr) (uint8_t port, bool state) |
Pointer to callback function for input port interrupt events. More... | |
typedef bool(* | ioport_register_interrupt_handler_ptr) (uint8_t port, pin_irq_mode_t irq_mode, ioport_interrupt_callback_ptr interrupt_callback) |
Pointer to function for registering or deregistering an interrupt handler for a digital input port. More... | |
typedef bool(* | ioports_enumerate_callback_ptr) (xbar_t *properties, uint8_t port, void *data) |
typedef struct io_ports_data | io_ports_data_t |
Enumerations | |
enum | io_port_type_t { Port_Analog = 0 , Port_Digital = 1 } |
enum | io_port_direction_t { Port_Input = 0 , Port_Output = 1 } |
Functions | |
uint8_t | ioports_available (io_port_type_t type, io_port_direction_t dir) |
Get number of digital or analog ports available. More... | |
bool | 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_can_claim_explicit (void) |
Check if ports can be claimed by aux number or not. More... | |
uint8_t | ioport_find_free (io_port_type_t type, io_port_direction_t dir, const char *description) |
find first free or claimed digital or analog port. 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) |
void | ioport_assign_function (aux_ctrl_t *aux_ctrl, pin_function_t *function) |
Reassign pin function. More... | |
void | ioport_assign_out_function (aux_ctrl_out_t *aux_ctrl, pin_function_t *function) |
bool | ioport_analog_out_config (uint8_t port, pwm_config_t *config) |
bool | ioport_digital_pwm_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 | ioports_add (io_ports_data_t *ports, io_port_type_t type, uint8_t n_in, uint8_t n_out) |
void | ioports_add_settings (driver_settings_load_ptr settings_loaded, setting_changed_ptr setting_changed) |
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) |
uint8_t | ioports_map_reverse (io_ports_detail_t *type, uint8_t port) |
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... | |
#define ioports_map | ( | type, | |
port | |||
) | ( type.map ? type.map[port] : port ) |
#define iports_get_pnum | ( | type, | |
port | |||
) | type.get_pnum(&type, port) |
typedef bool(* analog_out_ptr) (uint8_t port, float value) |
Pointer to function for setting an analog output.
port | port number. |
value |
typedef bool(* claim_port_ptr) (io_port_type_t type, io_port_direction_t dir, uint8_t *port, const char *description) |
Pointer to function for claiming 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 | port number. |
description | description of the pin function. |
typedef void(* digital_out_ptr) (uint8_t port, bool on) |
Pointer to function for setting a digital output.
port | port number |
on | true to set output high, false to set it low |
typedef xbar_t*(* get_pin_info_ptr) (io_port_type_t type, io_port_direction_t dir, uint8_t port) |
Pointer to function for getting information about a digital or analog port.
NOTE: The port information pointed to will be overwritten by the next call to this function.
type | as an io_port_type_t enum value. |
dir | as an io_port_direction_t enum value. |
port | port number. |
typedef struct io_ports_data io_ports_data_t |
typedef void(* ioport_interrupt_callback_ptr) (uint8_t port, bool state) |
Pointer to callback function for input port interrupt events.
port | port number. |
state | true if port level is high, false if it is low. |
typedef bool(* ioport_register_interrupt_handler_ptr) (uint8_t port, pin_irq_mode_t irq_mode, ioport_interrupt_callback_ptr interrupt_callback) |
Pointer to function for registering or deregistering an interrupt handler for a digital input port.
port | port number. |
irq_mode | a pin_irq_mode_t enum value. |
interrupt_callback | pointer to the callback function to register or NULL to deregister the current callback. |
typedef bool(* ioports_enumerate_callback_ptr) (xbar_t *properties, uint8_t port, void *data) |
typedef void(* set_pin_description_ptr) (io_port_type_t type, io_port_direction_t dir, uint8_t port, const char *s) |
Pointer to function for setting pin description for a digital or analog port.
type | as an io_port_type_t enum value. |
dir | as an io_port_direction_t enum value. |
port | port number. |
s | pointer to null terminated description string. |
typedef bool(* swap_pins_ptr) (io_port_type_t type, io_port_direction_t dir, uint8_t port_from, uint8_t port_to) |
Pointer to function for swapping two digital or analog ports.
type | as an io_port_type_t enum value. |
dir | as an io_port_direction_t enum value. |
port_from | port number. |
port_to | port number. |
typedef int32_t(* wait_on_input_ptr) (io_port_type_t type, uint8_t port, wait_mode_t wait_mode, float timeout) |
Pointer to function for reading a digital or analog input.
NOTE: The latest value read is stored in sys sys.var5399.
type | as an io_port_type_t enum value. |
port | port number. |
wait_mode | a wait_mode_t enum value. |
timeout | in seconds, ignored if wait_mode is WaitMode_Immediate (0). |
enum io_port_direction_t |
enum io_port_type_t |
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 | ||
) |
Reassign pin function.
port | pointer to an aux_ctrl_t structure with a valid port number. |
function | pointer to a pin_function_t enum value to be updated. |
void ioport_assign_out_function | ( | aux_ctrl_out_t * | aux_ctrl, |
pin_function_t * | function | ||
) |
bool ioport_can_claim_explicit | ( | void | ) |
Check if ports can be claimed by aux number or not.
bool 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_digital_in_config | ( | uint8_t | port, |
gpio_in_config_t * | config | ||
) |
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, | ||
const char * | description | ||
) |
find first free or claimed digital or analog port.
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 NULL if searching for the first free port. |
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 | ) |
bool ioports_add | ( | io_ports_data_t * | ports, |
io_port_type_t | type, | ||
uint8_t | n_in, | ||
uint8_t | n_out | ||
) |
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. |
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 | ||
) |
uint8_t ioports_map_reverse | ( | io_ports_detail_t * | type, |
uint8_t | port | ||
) |
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. |