nRF51 SDK - S120 SoftDevice
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Serialization SoftDevice Transport

Serialization SoftDevice Transport on application side. More...

Typedefs

typedef void(* ser_sd_transport_evt_handler_t )(uint8_t *p_buffer, uint16_t length)
 
typedef void(* ser_sd_transport_rsp_wait_handler_t )(void)
 
typedef void(* ser_sd_transport_rsp_set_handler_t )(void)
 
typedef void(* ser_sd_transport_rx_notification_handler_t )(void)
 
typedef uint32_t(* ser_sd_transport_rsp_handler_t )(const uint8_t *p_buffer, uint16_t length)
 

Functions

uint32_t ser_sd_transport_open (ser_sd_transport_evt_handler_t evt_handler, ser_sd_transport_rsp_wait_handler_t os_rsp_wait_handler, ser_sd_transport_rsp_set_handler_t os_rsp_set_handler, ser_sd_transport_rx_notification_handler_t rx_not_handler)
 Function for opening the module. More...
 
uint32_t ser_sd_transport_ot_rsp_wait_handler_set (ser_sd_transport_rsp_wait_handler_t wait_handler)
 Function setting 'One Time' handler to be called between sending next request packet and receiving response packet. More...
 
uint32_t ser_sd_transport_close (void)
 Function for closing the module. More...
 
uint32_t ser_sd_transport_tx_alloc (uint8_t **pp_data, uint16_t *p_len)
 Function for allocating tx packet to be used for request command. More...
 
uint32_t ser_sd_transport_tx_free (uint8_t *p_data)
 Function for freeing tx packet. More...
 
uint32_t ser_sd_transport_rx_free (uint8_t *p_data)
 Function for freeing RX event packet. More...
 
bool ser_sd_transport_is_busy (void)
 Function for checking if module is busy waiting for response from connectivity side. More...
 
uint32_t ser_sd_transport_cmd_write (const uint8_t *p_buffer, uint16_t length, ser_sd_transport_rsp_handler_t cmd_resp_decode_callback)
 Function for handling SoftDevice command. More...
 

Detailed Description

Serialization SoftDevice Transport on application side.

This file contains declarations of functions and definitions of data structures and identifiers (typedef enum) used as API of the serialization of SoftDevice. This layer ensures atomic nature of SoftDevice calls (command and waiting for response). Packet type field of incoming packets is handled in this layer - responses are handled by ser_sd_transport (using response decoder handler provided for each SoftDevice call) but events are forwarded to the user so it is user's responsibility to free RX buffer.

Function Documentation

uint32_t ser_sd_transport_close ( void  )

Function for closing the module.

Return values
NRF_SUCCESSOperation success.
uint32_t ser_sd_transport_cmd_write ( const uint8_t *  p_buffer,
uint16_t  length,
ser_sd_transport_rsp_handler_t  cmd_resp_decode_callback 
)

Function for handling SoftDevice command.

Note
Function blocks task context until response is received and processed.
Non-blocking functionality can be achieved using os handlers or 'One Time' handler
Warning
Function shouldn't be called from interrupt context which would block switching to serial port interrupt.
Parameters
[in]p_bufferPointer to command.
[in]lengthPointer to allocated buffer length.
[in]cmd_resp_decode_callbackPointer to function for decoding response packet.
Return values
NRF_SUCCESSOperation success.
bool ser_sd_transport_is_busy ( void  )

Function for checking if module is busy waiting for response from connectivity side.

Return values
trueModule busy. Cannot accept next command.
falseModule not busy. Can accept next command.
uint32_t ser_sd_transport_open ( ser_sd_transport_evt_handler_t  evt_handler,
ser_sd_transport_rsp_wait_handler_t  os_rsp_wait_handler,
ser_sd_transport_rsp_set_handler_t  os_rsp_set_handler,
ser_sd_transport_rx_notification_handler_t  rx_not_handler 
)

Function for opening the module.

Note
'Wait for response' and 'Response set' callbacks can be set in RTOS environment. It enables rescheduling while waiting for connectivity chip response. In nonOS environment usually 'Wait for response' will only be used for handling incoming events or force application to low power mode.
Parameters
[in]evt_handlerHandler to be called when event packet is received.
[in]os_rsp_wait_handlerHandler to be called after request is send. It should. implement 'Wait for signal' functionality in OS environment.
[in]os_rsp_set_handlerHandler to be called after response reception. It should implement 'Signal Set' functionality in OS environment
[in]rx_not_handlerHandler to be called after transport layer notifies that there is incoming rx packet detected.
Return values
NRF_SUCCESSOperation success.
NRF_ERROR_NULLOperation failure. NULL pointer supplied.
NRF_ERROR_INVALID_PARAMOperation failure. Parameter propagated from ser_hal_transport opening or timer creation.
NRF_ERROR_INVALID_STATEOperation failure. Parameter propagated from ser_hal_transport opening or timer creation.
NRF_ERROR_INTERNALOperation failure. Parameter propagated from ser_hal_transport opening or timer creation.
NRF_ERROR_NO_MEMOperation failure. Parameter propagated from timer creation.
uint32_t ser_sd_transport_ot_rsp_wait_handler_set ( ser_sd_transport_rsp_wait_handler_t  wait_handler)

Function setting 'One Time' handler to be called between sending next request packet and receiving response packet.

Note
It is intended to be used in nonOS environment to implement concurrency.
It is 'One Time' handler meaning that it is valid only for next softdevice call processing.
Parameters
[in]wait_handlerHandler to be called after request packet is sent.
Return values
NRF_SUCCESSOperation success.
uint32_t ser_sd_transport_rx_free ( uint8_t *  p_data)

Function for freeing RX event packet.

Note
Function should be called once SoftDevice event buffer is processed.
Parameters
[out]p_dataPointer to allocated rx buffer.
Return values
NRF_SUCCESSOperation success.
uint32_t ser_sd_transport_tx_alloc ( uint8_t **  pp_data,
uint16_t *  p_len 
)

Function for allocating tx packet to be used for request command.

Parameters
[out]pp_dataPointer to data pointer to be set to point to allocated buffer.
[out]p_lenPointer to allocated buffer length.
Return values
NRF_SUCCESSOperation success.
uint32_t ser_sd_transport_tx_free ( uint8_t *  p_data)

Function for freeing tx packet.

Note
Function should be called once command is processed.
Parameters
[out]p_dataPointer to allocated tx buffer.
Return values
NRF_SUCCESSOperation success.