HAL Transport layer for serialization. More...
Data Structures |
|
| struct | ser_hal_transport_evt_rx_pkt_received_params_t |
|
Struct containing parameters of event of type
SER_HAL_TRANSP_EVT_RX_PKT_RECEIVED
.
More...
|
|
| struct | ser_hal_transport_evt_phy_error_params_t |
|
Struct containing parameters of event of type
SER_HAL_TRANSP_EVT_PHY_ERROR
.
More...
|
|
| struct | ser_hal_transport_evt_t |
|
Struct containing events from the Serialization HAL Transport layer.
More...
|
|
Typedefs |
|
| typedef void(* | ser_hal_transport_events_handler_t )( ser_hal_transport_evt_t event) |
|
Generic callback function type to be used by all Serialization HAL Transport layer events.
More...
|
|
Enumerations |
|
| enum |
ser_hal_transport_evt_type_t
{
SER_HAL_TRANSP_EVT_TX_PKT_SENT = 0, SER_HAL_TRANSP_EVT_RX_PKT_RECEIVING , SER_HAL_TRANSP_EVT_RX_PKT_RECEIVED , SER_HAL_TRANSP_EVT_RX_PKT_DROPPED , SER_HAL_TRANSP_EVT_PHY_ERROR , SER_HAL_TRANSP_EVT_TYPE_MAX } |
|
Serialization HAL Transport layer event types.
More...
|
|
| enum |
ser_hal_transport_phy_error_type_t
{
SER_HAL_TRANSP_PHY_ERROR_RX_OVERFLOW = 0, SER_HAL_TRANSP_PHY_ERROR_TX_OVERREAD , SER_HAL_TRANSP_PHY_ERROR_HW_ERROR , SER_HAL_TRANSP_PHY_ERROR_TYPE_MAX } |
|
Serialization PHY layer error types.
More...
|
|
Functions |
|
| uint32_t | ser_hal_transport_open ( ser_hal_transport_events_handler_t events_handler) |
|
Function for opening and initializing the Serialization HAL Transport layer.
More...
|
|
| void | ser_hal_transport_close (void) |
|
Function for closing a transport channel.
More...
|
|
| uint32_t | ser_hal_transport_rx_pkt_free (uint8_t *p_buffer) |
|
Function for freeing memory allocated for an RX packet.
More...
|
|
| uint32_t | ser_hal_transport_tx_pkt_alloc (uint8_t **pp_memory, uint16_t *p_num_of_bytes) |
|
Function for allocating memory for a TX packet.
More...
|
|
| uint32_t | ser_hal_transport_tx_pkt_send (const uint8_t *p_buffer, uint16_t num_of_bytes) |
|
Function for transmitting a packet.
More...
|
|
| uint32_t | ser_hal_transport_tx_pkt_free (uint8_t *p_buffer) |
|
Function for freeing memory allocated for a TX packet.
More...
|
|
Detailed Description
HAL Transport layer for serialization.
This section contains declarations of functions and typedefs used as API of the HAL Transport layer for serialization. This layer is fully hardware independent. Currently, the HAL Transport layer is responsible for controlling the PHY layer and memory management. In the future, it is possible to add more features to it, such as crc or retransmission.
Typedef Documentation
| typedef void(* ser_hal_transport_events_handler_t)( ser_hal_transport_evt_t event) |
Generic callback function type to be used by all Serialization HAL Transport layer events.
- Parameters
-
[in] event Serialization HAL Transport layer event.
Enumeration Type Documentation
Serialization HAL Transport layer event types.
Serialization PHY layer error types.
Function Documentation
| void ser_hal_transport_close | ( | void | ) |
Function for closing a transport channel.
- Note
- The function disables the hardware, resets internal module states, and unregisters the events callback function. Can be called multiple times, also for a channel that is not opened.
| uint32_t ser_hal_transport_open | ( | ser_hal_transport_events_handler_t | events_handler | ) |
Function for opening and initializing the Serialization HAL Transport layer.
- Note
- The function opens the transport channel, initializes a PHY layer, and registers the callback function to be used by all Serialization HAL Transport layer events.
- Warning
- If the function has been already called, the function ser_hal_transport_close has to be called before ser_hal_transport_open can be called again.
- Parameters
-
[in] events_handler Generic callback function to be used by all Serialization HAL Transport layer events.
- Return values
-
NRF_SUCCESS Operation success. NRF_ERROR_NULL Operation failure. NULL pointer supplied. NRF_ERROR_INVALID_PARAM Operation failure. Hardware initialization parameters taken from the configuration file are wrong. NRF_ERROR_INVALID_STATE Operation failure. The function has been already called. To call it again the function ser_hal_transport_close has to be called first. NRF_ERROR_INTERNAL Operation failure. Internal error ocurred.
| uint32_t ser_hal_transport_rx_pkt_free | ( | uint8_t * | p_buffer | ) |
Function for freeing memory allocated for an RX packet.
- Note
- The function should be called as a response to an event of type SER_HAL_TRANSP_EVT_RX_PKT_RECEIVED when the received data has beed processed. The function frees the RX memory pointed by p_buffer. The memory, immediately or at a later time, is reused by the underlying transport layer.
- Parameters
-
[in] p_buffer A pointer to the beginning of the buffer that has been processed (has to be the same address as provided in the event of type SER_HAL_TRANSP_EVT_RX_PKT_RECEIVED ).
- Return values
-
NRF_SUCCESS Operation success. NRF_ERROR_NULL Operation failure. NULL pointer supplied. NRF_ERROR_INVALID_ADDR Operation failure. Not a valid pointer (provided address is not the starting address of a buffer managed by HAL Transport layer). NRF_ERROR_INVALID_STATE Operation failure. The function should be called as a response to an event of type SER_HAL_TRANSP_EVT_RX_PKT_RECEIVED . NRF_ERROR_INTERNAL Operation failure. Internal error ocurred.
| uint32_t ser_hal_transport_tx_pkt_alloc | ( | uint8_t ** | pp_memory , |
| uint16_t * | p_num_of_bytes | ||
| ) |
Function for allocating memory for a TX packet.
- Parameters
-
[out] pp_memory A pointer to pointer to which an address of the beginning of the allocated buffer is written. [out] p_num_of_bytes A pointer to a variable to which size in octets of the allocated buffer is written.
- Return values
-
NRF_SUCCESS Operation success. Memory was allocated. NRF_ERROR_NULL Operation failure. NULL pointer supplied. NRF_ERROR_NO_MEM Operation failure. No memory available. NRF_ERROR_INVALID_STATE Operation failure. The function was called before calling ser_hal_transport_open function.
| uint32_t ser_hal_transport_tx_pkt_free | ( | uint8_t * | p_buffer | ) |
Function for freeing memory allocated for a TX packet.
- Note
- The function frees the TX memory pointed by p_buffer. Freeing a TX buffer is possible only if the buffer was allocated by ser_hal_transport_tx_pkt_alloc function and transmittion is not in progress. When transmittion has finished, this function is automatically called by the Serialization HAL Transport layer, so the only case when this function should be used from outside is when a TX buffer was allocated but a transmittion has not been started ( ser_hal_transport_tx_pkt_send function has not been called).
- Parameters
-
[in] p_buffer Pointer to the beginning of a buffer that has been allocated by ser_hal_transport_tx_pkt_alloc function.
- Return values
-
NRF_SUCCESS Operation success. Memory was freed. NRF_ERROR_NULL Operation failure. NULL pointer supplied. NRF_ERROR_INVALID_ADDR Operation failure. Not a valid pointer (provided address is not the starting address of a buffer managed by HAL Transport layer). NRF_ERROR_INVALID_STATE Operation failure. Freeing a TX buffer is possible only if the buffer was allocated by ser_hal_transport_tx_pkt_alloc function and transmittion is not in progress.
| uint32_t ser_hal_transport_tx_pkt_send | ( | const uint8_t * | p_buffer , |
| uint16_t | num_of_bytes | ||
| ) |
Function for transmitting a packet.
- Note
- The function adds a packet pointed by the p_buffer parameter to a transmission queue. A buffer provided to this function must be allocated by the ser_hal_transport_tx_pkt_alloc function.
- Warning
- Completion of this method does not guarantee that actual peripheral transmission will be completed.
- Parameters
-
[in] p_buffer Pointer to the buffer to transmit. [in] num_of_bytes Number of octets to transmit. Must be more than 0.
- Return values
-
NRF_SUCCESS Operation success. Packet was added to the transmission queue. NRF_ERROR_NULL Operation failure. NULL pointer supplied. NRF_ERROR_INVALID_PARAM Operation failure. num_of_bytes is equal to 0. NRF_ERROR_INVALID_ADDR Operation failure. Not a valid pointer (provided address is not the starting address of a buffer managed by HAL Transport layer). NRF_ERROR_DATA_SIZE Operation failure. Packet size exceeds limit. NRF_ERROR_BUSY Operation failure. Transmission queue is full so packet was not added to the transmission queue. NRF_ERROR_INVALID_STATE Operation failure. Transmittion channel was not opened by ser_hal_transport_open function or provided buffer was not allocated by ser_hal_transport_tx_pkt_alloc function. NRF_ERROR_INTERNAL Operation failure. Internal error ocurred.