Capture Driver.
The capture driver is used to detect and time edge triggered events on a GPIO pin.
The capture driver serves as the main interface for a typical RTOS application. Its purpose is to redirect the capture APIs to device specific implementations which are specified using a pointer to a Capture_FxnTable. The device specific implementations are responsible for creating all the RTOS specific primitives to allow for thead-safe operation. The capture driver utilizes the general purpose timer hardware.
The capture driver internally handles the general purpose timer resource allocation. For each capture driver instance, Capture_open() occupies the specified timer, and Capture_close() releases the occupied timer resource.
This documentation provides a basic usage summary and a set of examples in the form of commented code fragments. Detailed descriptions of the APIs are provided in subsequent sections.
Refer to the Driver's Configuration section for driver configuration information.
#include <stdint.h>
Go to the source code of this file.
Data Structures | |
struct | Capture_Params |
Capture Parameters. More... | |
struct | Capture_FxnTable |
The definition of a capture function table that contains the required set of functions to control a specific capture driver implementation. More... | |
struct | Capture_Config_ |
Capture Global configuration. More... | |
Macros | |
#define | Capture_CMD_RESERVED (32) |
#define | Capture_STATUS_RESERVED (-32) |
#define | Capture_STATUS_SUCCESS (0) |
Successful status code. More... | |
#define | Capture_STATUS_ERROR (-1) |
Generic error status code. More... | |
#define | Capture_STATUS_UNDEFINEDCMD (-2) |
An error status code returned by Capture_control() for undefined command codes. More... | |
Typedefs | |
typedef struct Capture_Config_ * | Capture_Handle |
A handle that is returned from a Capture_open() call. More... | |
typedef void(* | Capture_CallBackFxn) (Capture_Handle handle, uint32_t interval) |
Capture callback function. More... | |
typedef void(* | Capture_CloseFxn) (Capture_Handle handle) |
A function pointer to a driver specific implementation of Capture_close(). More... | |
typedef int_fast16_t(* | Capture_ControlFxn) (Capture_Handle handle, uint_fast16_t cmd, void *arg) |
A function pointer to a driver specific implementation of Capture_control(). More... | |
typedef void(* | Capture_InitFxn) (Capture_Handle handle) |
A function pointer to a driver specific implementation of Capture_init(). More... | |
typedef Capture_Handle(* | Capture_OpenFxn) (Capture_Handle handle, Capture_Params *params) |
A function pointer to a driver specific implementation of Capture_open(). More... | |
typedef int32_t(* | Capture_StartFxn) (Capture_Handle handle) |
A function pointer to a driver specific implementation of Capture_start(). More... | |
typedef void(* | Capture_StopFxn) (Capture_Handle handle) |
A function pointer to a driver specific implementation of Capture_stop(). More... | |
typedef struct Capture_Config_ | Capture_Config |
Capture Global configuration. More... | |
Enumerations | |
enum | Capture_Mode { Capture_RISING_EDGE, Capture_FALLING_EDGE, Capture_ANY_EDGE, Capture_RISING_EDGE_FALLING_EDGE, Capture_FALLING_EDGE_RISING_EDGE } |
Capture mode settings. More... | |
enum | Capture_PeriodUnits { Capture_PERIOD_US, Capture_PERIOD_HZ, Capture_PERIOD_COUNTS, Capture_PERIOD_NS } |
Capture period unit enum. More... | |
Functions | |
void | Capture_close (Capture_Handle handle) |
Function to close a capture driver instance. The corresponding timer peripheral to Capture_handle becomes an available resource. More... | |
int_fast16_t | Capture_control (Capture_Handle handle, uint_fast16_t cmd, void *arg) |
Function performs implementation specific features on a given Capture_Handle. More... | |
void | Capture_init (void) |
Function to initialize the capture driver. This function will go through all available hardware resources and mark them as "available". More... | |
Capture_Handle | Capture_open (uint_least8_t index, Capture_Params *params) |
Function to open a given capture instance specified by the index argument. The Capture_Params specifies which mode the capture instance will operate. This function takes care of capture resource allocation. If the particular timer hardware is available to use, the capture driver acquires it and returns a Capture_Handle. More... | |
void | Capture_Params_init (Capture_Params *params) |
Function to initialize the Capture_Params struct to its defaults. More... | |
int32_t | Capture_start (Capture_Handle handle) |
Function to start the capture instance. More... | |
void | Capture_stop (Capture_Handle handle) |
Function to stop a capture instance. If the capture instance is already stopped, this function has no effect. More... | |
#define Capture_CMD_RESERVED (32) |
Common Capture_control command code reservation offset. Capture driver implementations should offset command codes with Capture_CMD_RESERVED growing positively.
Example implementation specific command codes:
#define Capture_STATUS_RESERVED (-32) |
Common Capture_control status code reservation offset. Capture driver implementations should offset status codes with Capture_STATUS_RESERVED growing negatively.
Example implementation specific status codes:
#define Capture_STATUS_SUCCESS (0) |
Successful status code.
#define Capture_STATUS_ERROR (-1) |
Generic error status code.
#define Capture_STATUS_UNDEFINEDCMD (-2) |
An error status code returned by Capture_control() for undefined command codes.
Capture_control() returns Capture_STATUS_UNDEFINEDCMD if the control code is not recognized by the driver implementation.
typedef struct Capture_Config_* Capture_Handle |
A handle that is returned from a Capture_open() call.
typedef void(* Capture_CallBackFxn) (Capture_Handle handle, uint32_t interval) |
Capture callback function.
User definable callback function prototype. The capture driver will call the defined function and pass in the capture driver's handle and the pointer to the user-specified the argument.
[in] | handle | Capture_Handle |
[in] | interval | Interval of two triggering edges in Capture_PeriodUnits |
typedef void(* Capture_CloseFxn) (Capture_Handle handle) |
A function pointer to a driver specific implementation of Capture_close().
typedef int_fast16_t(* Capture_ControlFxn) (Capture_Handle handle, uint_fast16_t cmd, void *arg) |
A function pointer to a driver specific implementation of Capture_control().
typedef void(* Capture_InitFxn) (Capture_Handle handle) |
A function pointer to a driver specific implementation of Capture_init().
typedef Capture_Handle(* Capture_OpenFxn) (Capture_Handle handle, Capture_Params *params) |
A function pointer to a driver specific implementation of Capture_open().
typedef int32_t(* Capture_StartFxn) (Capture_Handle handle) |
A function pointer to a driver specific implementation of Capture_start().
typedef void(* Capture_StopFxn) (Capture_Handle handle) |
A function pointer to a driver specific implementation of Capture_stop().
typedef struct Capture_Config_ Capture_Config |
Capture Global configuration.
The Capture_Config structure contains a set of pointers used to characterize the capture driver implementation.
This structure needs to be defined before calling Capture_init() and it must not be changed thereafter.
enum Capture_Mode |
Capture mode settings.
This enum defines the capture modes that may be specified in Capture_Params.
Some modes are not available on all devices. Check the device specific implementations to see which modes are allowed.
enum Capture_PeriodUnits |
Capture period unit enum.
This enum defines the units that may be specified for the period in Capture_Params.
void Capture_close | ( | Capture_Handle | handle | ) |
Function to close a capture driver instance. The corresponding timer peripheral to Capture_handle becomes an available resource.
[in] | handle | A Capture_Handle returned from Capture_open(). |
int_fast16_t Capture_control | ( | Capture_Handle | handle, |
uint_fast16_t | cmd, | ||
void * | arg | ||
) |
Function performs implementation specific features on a given Capture_Handle.
[in] | handle | A Capture_Handle returned from Capture_open(). |
[in] | cmd | A command value defined by the driver specific implementation. |
[in] | arg | A pointer to an optional R/W (read/write) argument that is accompanied with cmd. |
Capture_STATUS_SUCCESS | The control call was successful. |
Capture_STATUS_ERROR | The control call failed. |
void Capture_init | ( | void | ) |
Function to initialize the capture driver. This function will go through all available hardware resources and mark them as "available".
Capture_Handle Capture_open | ( | uint_least8_t | index, |
Capture_Params * | params | ||
) |
Function to open a given capture instance specified by the index argument. The Capture_Params specifies which mode the capture instance will operate. This function takes care of capture resource allocation. If the particular timer hardware is available to use, the capture driver acquires it and returns a Capture_Handle.
[in] | index | Logical instance number for the capture indexed into the Capture_config table. |
[in] | params | Pointer to a parameter block. Cannot be NULL. |
void Capture_Params_init | ( | Capture_Params * | params | ) |
Function to initialize the Capture_Params struct to its defaults.
[in] | params | An pointer to Capture_Params structure for initialization. |
Defaults values are: callbackFxn = NULL mode = Capture_RISING_EDGE periodUnit = Capture_PERIOD_COUNTS
int32_t Capture_start | ( | Capture_Handle | handle | ) |
Function to start the capture instance.
[in] | handle | A Capture_Handle returned from Capture_open(). |
Capture_STATUS_SUCCESS | The start call was successful. |
Capture_STATUS_ERROR | The start call failed. |
void Capture_stop | ( | Capture_Handle | handle | ) |
Function to stop a capture instance. If the capture instance is already stopped, this function has no effect.
[in] | handle | A Capture_Handle returned from Capture_open(). |