HOST_API

Functions

sl_status_t sl_wfx_host_init (void)
Driver hook to initialize the host resources.
sl_status_t sl_wfx_host_get_firmware_data (const uint8_t **data, uint32_t data_size)
Driver hook to retrieve a firmware chunk.
sl_status_t sl_wfx_host_get_firmware_size (uint32_t *firmware_size)
Driver hook to retrieve the firmware size.
sl_status_t sl_wfx_host_get_pds_data (const char **pds_data, uint16_t index)
Driver hook to retrieve a PDS line.
sl_status_t sl_wfx_host_get_pds_size (uint16_t *pds_size)
Driver hook to get the number of lines of the PDS.
sl_status_t sl_wfx_host_deinit (void)
Driver hook to deinitialize the host resources.
sl_status_t sl_wfx_host_reset_chip (void)
Implement the reset of the WFx chip.
sl_status_t sl_wfx_host_set_wake_up_pin (uint8_t state)
Drive the wake up pin in the requested state.
sl_status_t sl_wfx_host_wait_for_wake_up (void)
Called once the WFx chip is waking up.
sl_status_t sl_wfx_host_sleep_grant ( sl_wfx_host_bus_transfer_type_t type, sl_wfx_register_address_t address, uint32_t length)
Called when the driver is considering putting the WFx in sleep mode.
sl_status_t sl_wfx_host_hold_in_reset (void)
Hold the WFx chip in reset mode.
sl_status_t sl_wfx_host_setup_waited_event (uint8_t event_id)
Set up the next event that the driver will wait.
sl_status_t sl_wfx_host_wait_for_confirmation (uint8_t confirmation_id, uint32_t timeout_ms, void **event_payload_out)
Called when the driver is waiting for a confirmation.
sl_status_t sl_wfx_host_wait (uint32_t wait_ms)
Called when the FMAC driver wants to add a delay.
sl_status_t sl_wfx_host_post_event ( sl_wfx_generic_message_t *event_payload)
Called when a message is received from the WFx chip.
sl_status_t sl_wfx_host_allocate_buffer (void **buffer, sl_wfx_buffer_type_t type, uint32_t buffer_size)
Called when the driver wants to allocate memory.
sl_status_t sl_wfx_host_free_buffer (void *buffer, sl_wfx_buffer_type_t type)
Called when the driver wants to free memory.
sl_status_t sl_wfx_host_transmit_frame (void *frame, uint32_t frame_len)
Called when the driver sends a frame to the WFx chip.
sl_status_t sl_wfx_host_lock (void)
Called when the driver needs to lock its access.
sl_status_t sl_wfx_host_unlock (void)
Called when the driver needs to unlock its access.
sl_status_t sl_wfx_host_init_bus (void)
Initialize the host bus.
sl_status_t sl_wfx_host_deinit_bus (void)
Deinitialize the host bus.
sl_status_t sl_wfx_host_enable_platform_interrupt (void)
Enable the bus interrupt.
sl_status_t sl_wfx_host_disable_platform_interrupt (void)
Disable the bus interrupt.
sl_status_t sl_wfx_host_spi_cs_assert (void)
Assert the SPI Chip Select pin.
sl_status_t sl_wfx_host_spi_cs_deassert (void)
Deassert the SPI Chip Select pin.
sl_status_t sl_wfx_host_spi_transfer_no_cs_assert ( sl_wfx_host_bus_transfer_type_t type, uint8_t *header, uint16_t header_length, uint8_t *buffer, uint16_t buffer_length)
Send data on the SPI bus.
sl_status_t sl_wfx_host_sdio_transfer_cmd52 ( sl_wfx_host_bus_transfer_type_t type, uint8_t function, uint32_t address, uint8_t *buffer)
Send command 52 on the SDIO bus.
sl_status_t sl_wfx_host_sdio_transfer_cmd53 ( sl_wfx_host_bus_transfer_type_t type, uint8_t function, uint32_t address, uint8_t *buffer, uint16_t buffer_length)
Send command 53 on the SDIO bus.
sl_status_t sl_wfx_host_sdio_enable_high_speed_mode (void)
Enable the SDIO high-speed mode.
sl_status_t sl_wfx_host_get_secure_link_mac_key (uint8_t *sl_mac_key)
Get the secure link mac key of the part.
sl_status_t sl_wfx_host_compute_pub_key ( sl_wfx_securelink_exchange_pub_keys_req_body_t *request, const uint8_t *sl_mac_key)
Compute the secure link public key.
sl_status_t sl_wfx_host_verify_pub_key (sl_wfx_securelink_exchange_pub_keys_ind_t *response_packet, const uint8_t *sl_mac_key, uint8_t *sl_host_pub_key)
Verify the WFX hashed public key.
sl_status_t sl_wfx_host_free_crypto_context (void)
Free any crypto context.
sl_status_t sl_wfx_host_decode_secure_link_data (uint8_t *buffer, uint32_t length, uint8_t *session_key)
Decode a packet.
sl_status_t sl_wfx_host_encode_secure_link_data ( sl_wfx_generic_message_t *buffer, uint32_t data_length, uint8_t *session_key, uint8_t *nonce)
Encode a packet.
sl_status_t sl_wfx_host_schedule_secure_link_renegotiation (void)
Schedule a session key renegotiation.
void sl_wfx_host_log (const char *string,...)
Log information about the driver.

Function Documentation

sl_wfx_host_allocate_buffer()

sl_status_t sl_wfx_host_allocate_buffer ( void ** buffer,
sl_wfx_buffer_type_t type,
uint32_t buffer_size
)

Called when the driver wants to allocate memory.

Parameters
buffer is a pointer to the data
type is the type of buffer to allocate (see sl_wfx_buffer_type_t )
buffer_size represents the amount of memory to allocate
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called by the driver every time it needs memory

Referenced by sl_wfx_allocate_command_buffer() .

sl_wfx_host_compute_pub_key()

sl_status_t sl_wfx_host_compute_pub_key ( sl_wfx_securelink_exchange_pub_keys_req_body_t * request,
const uint8_t * sl_mac_key
)

Compute the secure link public key.

Parameters
request is a pointer to the SL_WFX_SECURELINK_EXCHANGE_PUB_KEYS_REQ body.
sl_mac_key is a pointer to the context mac key
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_decode_secure_link_data()

sl_status_t sl_wfx_host_decode_secure_link_data ( uint8_t * buffer,
uint32_t length,
uint8_t * session_key
)

Decode a packet.

Parameters
buffer is the pointer to the encrypted part of the packet
length is the length of the encrypted part
session_key is the pointer to the context session key
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_deinit()

sl_status_t sl_wfx_host_deinit ( void )

Driver hook to deinitialize the host resources.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called if an error occurs during the initialization phase

Referenced by sl_wfx_download_run_firmware() .

sl_wfx_host_deinit_bus()

sl_status_t sl_wfx_host_deinit_bus ( void )

Deinitialize the host bus.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called if an error occurs during the initialization phase

sl_wfx_host_disable_platform_interrupt()

sl_status_t sl_wfx_host_disable_platform_interrupt ( void )

Disable the bus interrupt.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_enable_platform_interrupt()

sl_status_t sl_wfx_host_enable_platform_interrupt ( void )

Enable the bus interrupt.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

Referenced by sl_wfx_enable_irq() .

sl_wfx_host_encode_secure_link_data()

sl_status_t sl_wfx_host_encode_secure_link_data ( sl_wfx_generic_message_t * buffer,
uint32_t data_length,
uint8_t * session_key,
uint8_t * nonce
)

Encode a packet.

Parameters
buffer is the pointer to the message that will be encrypted
data_length is the length of the payload to be encrypted
session_key is the pointer to context session key
nonce is the pointer to the encryption nonce
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_free_buffer()

sl_status_t sl_wfx_host_free_buffer ( void * buffer,
sl_wfx_buffer_type_t type
)

Called when the driver wants to free memory.

Parameters
buffer is the pointer to the memory to free
type is the type of buffer to free (see sl_wfx_buffer_type_t )
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

Referenced by sl_wfx_free_command_buffer() .

sl_wfx_host_free_crypto_context()

sl_status_t sl_wfx_host_free_crypto_context ( void )

Free any crypto context.

Returns
Always returns SL_STATUS_OK

sl_wfx_host_get_firmware_data()

sl_status_t sl_wfx_host_get_firmware_data ( const uint8_t ** data,
uint32_t data_size
)

Driver hook to retrieve a firmware chunk.

Parameters
data is a pointer to the firmware data
data_size is the size of data requested by the driver
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called multiple times during the driver initialization phase

Referenced by sl_wfx_download_run_firmware() .

sl_wfx_host_get_firmware_size()

sl_status_t sl_wfx_host_get_firmware_size ( uint32_t * firmware_size )

Driver hook to retrieve the firmware size.

Parameters
firmware_size is a pointer to the firmware size value
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called once during the driver initialization phase

Referenced by sl_wfx_download_run_firmware() .

sl_wfx_host_get_pds_data()

sl_status_t sl_wfx_host_get_pds_data ( const char ** pds_data,
uint16_t index
)

Driver hook to retrieve a PDS line.

Parameters
pds_data is a pointer to the PDS data
index is the index of the line requested by the driver
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called multiple times during the driver initialization phase

sl_wfx_host_get_pds_size()

sl_status_t sl_wfx_host_get_pds_size ( uint16_t * pds_size )

Driver hook to get the number of lines of the PDS.

Parameters
pds_size is a pointer to the PDS size value
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called once during the driver initialization phase

sl_wfx_host_get_secure_link_mac_key()

sl_status_t sl_wfx_host_get_secure_link_mac_key ( uint8_t * sl_mac_key )

Get the secure link mac key of the part.

Parameters
sl_mac_key is the pointer to the sl_wfx_context key in which the key must be copied.
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_WIFI_SECURE_LINK_MAC_KEY_ERROR otherwise

sl_wfx_host_hold_in_reset()

sl_status_t sl_wfx_host_hold_in_reset ( void )

Hold the WFx chip in reset mode.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
The reset pin is asserted by the host to keep the WFx chip in reset

sl_wfx_host_init()

sl_status_t sl_wfx_host_init ( void )

Driver hook to initialize the host resources.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called once during the driver initialization phase

Referenced by sl_wfx_download_run_firmware() .

sl_wfx_host_init_bus()

sl_status_t sl_wfx_host_init_bus ( void )

Initialize the host bus.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called once during the driver initialization phase

sl_wfx_host_lock()

sl_status_t sl_wfx_host_lock ( void )

Called when the driver needs to lock its access.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_NO_MORE_RESOURCE otherwise

Referenced by sl_wfx_send_request() .

sl_wfx_host_log()

void sl_wfx_host_log ( const char * string,
...
)

Log information about the driver.

Parameters
string is a string to display
... any number of arguments

Referenced by sl_wfx_download_run_firmware() , and sl_wfx_get_status_code() .

sl_wfx_host_post_event()

sl_status_t sl_wfx_host_post_event ( sl_wfx_generic_message_t * event_payload )

Called when a message is received from the WFx chip.

Parameters
event_payload is a pointer to the data received
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called by sl_wfx_receive_frame function

sl_wfx_host_reset_chip()

sl_status_t sl_wfx_host_reset_chip ( void )

Implement the reset of the WFx chip.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
This function asserts the reset pin of the WFx chip for a while before returning

sl_wfx_host_schedule_secure_link_renegotiation()

sl_status_t sl_wfx_host_schedule_secure_link_renegotiation ( void )

Schedule a session key renegotiation.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_sdio_enable_high_speed_mode()

sl_status_t sl_wfx_host_sdio_enable_high_speed_mode ( void )

Enable the SDIO high-speed mode.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_sdio_transfer_cmd52()

sl_status_t sl_wfx_host_sdio_transfer_cmd52 ( sl_wfx_host_bus_transfer_type_t type,
uint8_t function,
uint32_t address,
uint8_t * buffer
)

Send command 52 on the SDIO bus.

Parameters
type is the type of bus action (see sl_wfx_host_bus_transfer_type_t )
function is the function to use in the SDIO command
address is the address to use in the SDIO command
buffer is a pointer to the buffer data
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_sdio_transfer_cmd53()

sl_status_t sl_wfx_host_sdio_transfer_cmd53 ( sl_wfx_host_bus_transfer_type_t type,
uint8_t function,
uint32_t address,
uint8_t * buffer,
uint16_t buffer_length
)

Send command 53 on the SDIO bus.

Parameters
type is the type of bus action (see sl_wfx_host_bus_transfer_type_t )
function is the function to use in the SDIO command
address is the address to use in the SDIO command
buffer is a pointer to the buffer data
buffer_length is the length of the buffer data
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_set_wake_up_pin()

sl_status_t sl_wfx_host_set_wake_up_pin ( uint8_t state )

Drive the wake up pin in the requested state.

Parameters
state to be applied to the wake up pin
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called if the sleep mode is enabled

sl_wfx_host_setup_waited_event()

sl_status_t sl_wfx_host_setup_waited_event ( uint8_t event_id )

Set up the next event that the driver will wait.

Parameters
event_id is the ID to be waited
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called every time a API command is called

sl_wfx_host_sleep_grant()

sl_status_t sl_wfx_host_sleep_grant ( sl_wfx_host_bus_transfer_type_t type,
sl_wfx_register_address_t address,
uint32_t length
)

Called when the driver is considering putting the WFx in sleep mode.

Parameters
type is the type of the message sent
address is the address of the message sent
length is the length of the message to be sent
Returns
Returns SL_STATUS_WIFI_SLEEP_GRANTED to let the WFx go to sleep, SL_STATUS_WIFI_SLEEP_NOT_GRANTED otherwise
Note
The parameters are given as information for the host to take a decision on whether or not the WFx is put back to sleep mode.

sl_wfx_host_spi_cs_assert()

sl_status_t sl_wfx_host_spi_cs_assert ( void )

Assert the SPI Chip Select pin.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_spi_cs_deassert()

sl_status_t sl_wfx_host_spi_cs_deassert ( void )

Deassert the SPI Chip Select pin.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_spi_transfer_no_cs_assert()

sl_status_t sl_wfx_host_spi_transfer_no_cs_assert ( sl_wfx_host_bus_transfer_type_t type,
uint8_t * header,
uint16_t header_length,
uint8_t * buffer,
uint16_t buffer_length
)

Send data on the SPI bus.

Parameters
type is the type of bus action (see sl_wfx_host_bus_transfer_type_t )
header is a pointer to the header data
header_length is the length of the header data
buffer is a pointer to the buffer data
buffer_length is the length of the buffer data
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_transmit_frame()

sl_status_t sl_wfx_host_transmit_frame ( void * frame,
uint32_t frame_len
)

Called when the driver sends a frame to the WFx chip.

Parameters
frame is a pointer to the frame data
frame_len is size of the frame
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_unlock()

sl_status_t sl_wfx_host_unlock ( void )

Called when the driver needs to unlock its access.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_verify_pub_key()

sl_status_t sl_wfx_host_verify_pub_key ( sl_wfx_securelink_exchange_pub_keys_ind_t * response_packet,
const uint8_t * sl_mac_key,
uint8_t * sl_host_pub_key
)

Verify the WFX hashed public key.

Parameters
response_packet is a pointer to the SL_WFX_SECURELINK_EXCHANGE_PUB_KEYS_IND returned by the WFX.
sl_mac_key is a pointer to the context mac key
sl_host_pub_key is a pointer the the host public key
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise

sl_wfx_host_wait()

sl_status_t sl_wfx_host_wait ( uint32_t wait_ms )

Called when the FMAC driver wants to add a delay.

Parameters
wait_ms is the time to wait
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Can be a passive wait or in a RTOS context a task sleep

Referenced by sl_wfx_poll_for_value() .

sl_wfx_host_wait_for_confirmation()

sl_status_t sl_wfx_host_wait_for_confirmation ( uint8_t confirmation_id,
uint32_t timeout_ms,
void ** event_payload_out
)

Called when the driver is waiting for a confirmation.

Parameters
confirmation_id is the ID to be waited
timeout_ms is the time before the command times out
event_payload_out is a pointer to the data returned by the confirmation
Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called every time a API command is called

sl_wfx_host_wait_for_wake_up()

sl_status_t sl_wfx_host_wait_for_wake_up ( void )

Called once the WFx chip is waking up.

Returns
Returns SL_STATUS_OK if successful, SL_STATUS_FAIL otherwise
Note
Called if the sleep mode is enabled. The function waits for the WFx interruption