This page documents the BOTA Sender service API in C language. The BOTA Sender is a service that allows to transfer large portions of data to multpile recipients. Each of the recipients is expected to run the BOTA Recipient service (see BOTA Recipient API).
◆ BotaOnTransferAcceptedCallback
typedef void(* BotaOnTransferAcceptedCallback) (BotaTransferId transferId, const EMBENET_IPV6 *recipientAddr) |
Function that will be called when the transfer is accepted by a recipient (callback).
- Parameters
-
[in] | transferId | transfer identifier |
[in] | recipientAddr | IPv6 address of the recipient that accepted the transfer |
◆ BotaOnTransferFinishedCallback
typedef void(* BotaOnTransferFinishedCallback) (BotaTransferId transferId) |
Function that will be called when the transfer is finished (callback).
- Parameters
-
[in] | transferId | transfer identifier |
◆ BotaRecipientState
Type describing the state of the recipient.
Enumerator |
---|
BOTA_RECIPIENT_STATE_ACCEPTED | Recipient has accepted the transfer and the transfer is now ongoing. |
BOTA_RECIPIENT_STATE_REJECTED | Recipient has rejected the transfer. |
BOTA_RECIPIENT_STATE_SUCCESS | Recipient successfully received the transfer. |
BOTA_RECIPIENT_STATE_FAILED | Recipient received the transfer but CRC validation failed. |
◆ BotaSenderTransferState
Possible states of a single transfer.
Enumerator |
---|
BOTA_SENDER_TRANSFER_STATE_UNKNOWN | The state of the transfer is unknown. |
BOTA_SENDER_TRANSFER_STATE_REGISTERED | The transfer has been registered but haven't started yet. |
BOTA_SENDER_TRANSFER_STATE_SENDING_TRANSFER_REQUEST | The transfer is in the process of sending request packets. |
BOTA_SENDER_TRANSFER_STATE_SENDING_DATA | The transfer is in the process of sending data packets. |
BOTA_SENDER_TRANSFER_STATE_VALIDATING | The transfer is in the process of validation. |
BOTA_SENDER_TRANSFER_STATE_FINISHED | The transfer is finished. |
BOTA_SENDER_TRANSFER_STATE_ERROR | The transfer is aborted due to error. |
◆ BOTA_SENDER_Init()
Initializes the Bulk-Over-The-Air (BOTA) protocol Sender instance.
- Parameters
-
[in] | botaSender | BOTA Sender instance |
[in] | port | UDP port number used for BOTA transfers. This number should be the same in all BOTA-enabled devices. Consider using BOTA_DEFAULT_PORT value. |
[in] | timeFunc | mandatory callback function that will provide time for the BOTA protocol instance |
- Return values
-
BOTA_RESULT_OK | if Bota was initialized successfully |
BOTA_RESULT_FAILED_TO_REGISTER_UDP_SOCKET | if Bota was not initialized due to problem with UDP socket registration |
◆ BOTA_SENDER_Deinit()
void BOTA_SENDER_Deinit | ( | BotaSender * | botaSender | ) | |
Deinitializes the Bulk-Over-The-Air (BOTA) protocol Sender instance.
◆ BOTA_SENDER_Proc()
Runs the Bulk-Over-The-Air (BOTA) protocol instance for the sender.
- Parameters
-
[in] | botaSender | BOTA Sender instance |
◆ BOTA_SENDER_GetRequiredTransferSpaceSize()
size_t BOTA_SENDER_GetRequiredTransferSpaceSize | ( | size_t | maxNumberOfRecipients | ) | |
Determines how much user memory is needed to handle the transfer to the given recipient/recipients.
In order to handle parallel transmissions to multiple recipients the BOTA protocol needs some temporary memory storage. This memory is called 'transfer space' and it is required for the user to provide such memory in order to run the BOTA transfer. This function returns the size of the transfer space that the user must provide in order to handle transfer to a given maximum number of recipients.
- Parameters
-
[in] | maxNumberOfRecipients | maximum number of expected recipients |
- Returns
- size (in number of bytes) of the required transfer space
◆ BOTA_SENDER_StartTransfer()
BotaResult BOTA_SENDER_StartTransfer | ( | BotaSender * | botaSender, |
| | BotaReadFunc | readFunc, |
| | BotaMemoryAddr | readAddr, |
| | size_t | size, |
| | const EMBENET_IPV6 * | recipientAddr, |
| | uint16_t | recipientPort, |
| | const void * | transferInfo, |
| | size_t | transferInfoSize, |
| | void * | transferSpace, |
| | size_t | transferSpaceSize, |
| | BotaSenderTransferPolicy * | transferPolicy, |
| | BotaOnTransferAcceptedCallback | onTransferAccepted, |
| | BotaOnTransferFinishedCallback | onTransferFinished, |
| | BotaTransferId * | transferId |
| ) | | |
Starts a new BOTA transfer.
This function starts a new Bulk-Over-The-Air (BOTA) transfer.
- Parameters
-
[in] | botaSender | BOTA Sender instance |
[in] | readFunc | function to read the source bulk memory |
[in] | readAddr | address in the bulk memory where the source data starts |
[in] | size | size of the bulk data to send (number of bytes) |
[in] | recipientAddr | recipient address - group addressing is allowed |
[in] | recipientPort | recipient port number |
[in] | transferInfo | user-defined data that should describe the transfer contents to the recipient |
[in] | transferInfoSize | size of the transfer information (number of bytes) |
[in] | transferSpace | pointer to a operational memory space required to handle the transfer |
[in] | transferSpaceSize | size of the provided transfer memory (number of bytes) |
[in] | transferPolicy | optional structure defining policies for the transfer (see BotaSenderTransferPolicy) |
[in] | onTransferAccepted | optional callback function that will be called when the transfer is accepted by a node |
[in] | onTransferFinished | optional callback function that will be called when the transfer is finished |
[out] | transferId | optional place to store transfer identifier |
- Return values
-
BOTA_RESULT_OK | - if the transfer was started successfully |
BOTA_RESULT_INVALID_INPUT_ARGUMENT | - if at least one of the input arguments was invalid |
BOTA_RESULT_FAILED_TO_REGISTER_NEW_TRANSFER | - if the transfer was not started because new transfer could not be registered (possibly too many transfers are ongoing) |
◆ BOTA_SENDER_GetTransferStatus()
◆ BOTA_SENDER_GetRecipientCount()
Gets the number of recipients for an ongoing BOTA transfer.
This function gets the number of nodes that participate as recipients in the ongoing BOTA transfer.
- Parameters
-
- Returns
- number of recipients
◆ BOTA_SENDER_GetRecipient()
Gets the status of a single BOTA transfer recipient.
- Parameters
-
- Returns
- pointer to a structure describing the status of the transfer recipient or NULL if there was no such recipient
◆ BOTA_SENDER_EndTransfer()
Ends a BOTA transfer.
This function causes the given BOTA transfer to end.
If the transfer is finished (BOTA_SENDER_TRANSFER_STATE_FINISHED) or an error occurred (BOTA_SENDER_TRANSFER_STATE_ERROR) then this call removes the transfer from the BOTA transfer list, making space for other transfers.
If the transfer is ongoing then it is canceled.
- Parameters
-
- Return values
-
BOTA_RESULT_OK | - if the transfer was ended successfully |
BOTA_RESULT_INVALID_INPUT_ARGUMENT | - if at least one of the input arguments was invalid |
◆ BOTA_SENDER_RetryTransfer()
Restarts a BOTA transfer.
This function causes the given BOTA transfer to be restarted.
When the transfer is finished (BOTA_SENDER_TRANSFER_STATE_FINISHED) but (for example) not all recipients received the data, then the transfer can be retried.
- Parameters
-
- Return values
-
BOTA_RESULT_OK | - if the transfer was retried successfully |
BOTA_RESULT_INVALID_INPUT_ARGUMENT | - if at least one of the input arguments was invalid |