Prototype RF driver for STM Sub-1 GHz RF expansion board based on the SPSGRF-868 module for STM32 Nucleo.
Prototype RF Driver for STM Sub-1 GHz RF Expansion Boards based on the SPSGRF-868 and SPSGRF-915 Modules for STM32 Nucleo
Currently supported boards:
Note, in order to use expansion board X-NUCLEO-IDS01A4 in mbed you need to perform the following HW modifications on the board:
- Unmount resistor
R4 - Mount resistor
R7
Furthermore, on some Nucleo development boards (e.g. the NUCLEO_F429ZI), in order to be able to use Ethernet together with these Sub-1 GHz RF expansion boards, you need to compile this driver with macro SPIRIT1_SPI_MOSI=PB_5 defined, while the development board typically requires some HW modification as e.g. described here!
This driver can be used together with the 6LoWPAN stack (a.k.a. Nanostack).
source/libs/spirit1/SPIRIT1_Library/Inc/SPIRIT_PktStack.h
- Committer:
- Wolfgang Betz
- Date:
- 2016-11-22
- Revision:
- 34:edda6a7238ec
- Child:
- 67:93bec0baf1de
File content as of revision 34:edda6a7238ec:
/**
******************************************************************************
* @file SPIRIT_PktStack.h
* @author VMA division - AMS
* @version 3.2.2
* @date 08-July-2015
* @brief Configuration and management of SPIRIT STack packets.
*
* @details
*
* This module can be used to manage the configuration of Spirit STack
* packets, and it is quite similar to the Basic packets one since the
* STack packets can be considered an extension of Basic.
* The user can obtain a packet configuration filling the structure
* <i>@ref PktStackInit</i>, defining in it some general parameters
* for the Spirit STack packet format.
* Another structure the user can fill is <i>@ref PktStackAddressesInit</i>
* to define the addresses which will be used during the communication.
* The structure <i>@ref PktStackLlpInit</i> is provided in order to configure
* the link layer protocol features like autoack, autoretransmission
* or piggybacking.
* Moreover, functions to set the payload length and the destination address
* are provided.
*
* <b>Example:</b>
* @code
*
* PktStackInit stackInit={
* PKT_PREAMBLE_LENGTH_08BYTES, // preamble length in bytes
* PKT_SYNC_LENGTH_4BYTES, // sync word length in bytes
* 0x1A2635A8, // sync word
* PKT_LENGTH_VAR, // variable or fixed payload length
* 7, // length field width in bits (used only for variable length)
* PKT_NO_CRC, // CRC mode
* PKT_CONTROL_LENGTH_0BYTES, // control field length
* S_DISABLE, // FEC
* S_ENABLE // whitening
* };
*
* PktStackAddressesInit addressInit={
* S_ENABLE, // enable/disable filtering on my address
* 0x34, // my address (address of the current node)
* S_DISABLE, // enable/disable filtering on multicast address
* 0xEE, // multicast address
* S_DISABLE, // enable/disable filtering on broadcast address
* 0xFF // broadcast address
* };
*
* PktStackLlpInit stackLLPInit ={
* S_DISABLE, // enable/disable the autoack feature
* S_DISABLE, // enable/disable the piggybacking feature
* PKT_DISABLE_RETX // set the max number of retransmissions or disable them
* };
* ...
*
* SpiritPktStackInit(&stackInit);
* SpiritPktStackAddressesInit(&addressInit);
* SpiritPktStackLlpInit(&stackLLPInit);
*
* ...
*
* SpiritPktStackSetPayloadLength(20);
* SpiritPktStackSetDestinationAddress(0x44);
*
* ...
*
* @endcode
*
* The module provides some other functions that can be used to modify
* or read only some configuration parameters.
*
*
* @attention
*
* <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of STMicroelectronics nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __SPIRIT_PKT_STACK_H
#define __SPIRIT_PKT_STACK_H
/* Includes ------------------------------------------------------------------*/
#include "SPIRIT_Regs.h"
#include "SPIRIT_Types.h"
#include "SPIRIT_PktCommon.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @addtogroup SPIRIT_Libraries
* @{
*/
/**
* @defgroup SPIRIT_PktStack Pkt STack
* @brief Configuration and management of SPIRIT STack packets.
* @details See the file <i>@ref SPIRIT_PktStack.h</i> for more details.
* @{
*/
/**
* @defgroup PktStack_Exported_Types Pkt STack Exported Types
* @{
*/
/**
* @brief Preamble length in bytes enumeration.
*/
typedef PktPreambleLength StackPreambleLength;
#define IS_STACK_PREAMBLE_LENGTH IS_PKT_PREAMBLE_LENGTH
/**
* @brief Sync length in bytes enumeration.
*/
typedef PktSyncLength StackSyncLength;
#define IS_STACK_SYNC_LENGTH IS_PKT_SYNC_LENGTH
/**
* @brief CRC length in bytes enumeration.
*/
typedef PktCrcMode StackCrcMode;
#define IS_STACK_CRC_MODE IS_PKT_CRC_MODE
/**
* @brief Fixed or variable payload length enumeration.
*/
typedef PktFixVarLength StackFixVarLength;
#define IS_STACK_FIX_VAR_LENGTH IS_PKT_FIX_VAR_LENGTH
/**
* @brief Control length in bytes enumeration for SPIRIT.
*/
typedef PktControlLength StackControlLength;
#define IS_STACK_CONTROL_LENGTH IS_PKT_CONTROL_LENGTH
/**
* @brief Sync words enumeration for SPIRIT.
*/
typedef PktSyncX StackSyncX;
#define IS_STACK_SYNCx IS_PKT_SYNCx
/**
* @brief Max retransmission number enumeration for SPIRIT.
*/
typedef PktNMaxReTx StackNMaxReTx;
#define IS_STACK_NMAX_RETX IS_PKT_NMAX_RETX
/**
* @brief SPIRIT STack Packet Init structure definition. This structure allows users to set the main options
* for the STack packet.
*/
typedef struct
{
StackPreambleLength xPreambleLength; /*!< Specifies the preamble length of packet.
This parameter can be any value of @ref StackPreambleLength */
StackSyncLength xSyncLength; /*!< Specifies the sync word length of packet.
This parameter can be any value of @ref StackSyncLength */
uint32_t lSyncWords; /*!< Specifies the sync words.
This parameter is a uint32_t word with format: 0x|SYNC1|SYNC2|SYNC3|SYNC4| */
StackFixVarLength xFixVarLength; /*!< Specifies if a fixed length of packet has to be used.
This parameter can be any value of @ref StackFixVarLength */
uint8_t cPktLengthWidth; /*!< Specifies the size of the length of packet in bits. This field is useful only if
the field xFixVarLength is set to STACK_LENGTH_VAR. For STack packets the length width
is log2( max payload length + control length (0 to 4) + address length (always 2)).
This parameter is an uint8_t */
StackCrcMode xCrcMode; /*!< Specifies the CRC word length of packet.
This parameter can be any value of @ref StackCrcMode */
StackControlLength xControlLength; /*!< Specifies the length of a control field to be sent.
This parameter can be any value of @ref StackControlLength */
SpiritFunctionalState xFec; /*!< Specifies if FEC has to be enabled.
This parameter can be any value of @ref SpiritFunctionalState */
SpiritFunctionalState xDataWhitening; /*!< Specifies if data whitening has to be enabled.
This parameter can be any value of @ref SpiritFunctionalState */
}PktStackInit;
/**
* @brief SPIRIT STack packet address structure definition. This structure allows users to specify
* the node/multicast/broadcast addresses and the correspondent filtering options.
*/
typedef struct
{
SpiritFunctionalState xFilterOnMyAddress; /*!< If set RX packet is accepted if its destination address matches with cMyAddress.
This parameter can be S_ENABLE or S_DISABLE */
uint8_t cMyAddress; /*!< Specifies the TX packet source address (address of this node).
This parameter is an uint8_t */
SpiritFunctionalState xFilterOnMulticastAddress; /*!< If set RX packet is accepted if its destination address matches with cMulticastAddress.
This parameter can be S_ENABLE or S_DISABLE */
uint8_t cMulticastAddress; /*!< Specifies the Multicast group address for this node.
This parameter is an uint8_t */
SpiritFunctionalState xFilterOnBroadcastAddress; /*!< If set RX packet is accepted if its destination address matches with cBroadcastAddress.
This parameter can be S_ENABLE or S_DISABLE */
uint8_t cBroadcastAddress; /*!< Specifies the Broadcast address for this node.
This parameter is an uint8_t */
}PktStackAddressesInit;
/**
* @brief SPIRIT STack packet LLP structure definition. This structure allows users to configure
* all the LLP options for STack packets.
*/
typedef struct
{
SpiritFunctionalState xAutoAck; /*!< Specifies if the auto ACK feature is used or not.
This parameter can be a value of @ref SpiritFunctionalState */
SpiritFunctionalState xPiggybacking; /*!< Specifies if the piggybacking feature is used or not.
This parameter can be a value of @ref SpiritFunctionalState */
StackNMaxReTx xNMaxRetx; /*!< Specifies the number of MAX-Retransmissions.
This parameter can be a value of @ref StackNMaxReTx */
}PktStackLlpInit;
/**
*@}
*/
/**
* @defgroup PktStack_Exported_Constants Pkt STack Exported Constants
* @{
*/
#define IS_STACK_LENGTH_WIDTH_BITS IS_PKT_LENGTH_WIDTH_BITS
/**
*@}
*/
/**
* @defgroup PktStack_Exported_Macros Pkt STack Exported Macros
* @{
*/
/**
* @brief Macro used to compute the lower part of the packet length
* for Spirit STack packets, to write in the PCKTLEN0 register.
* @param nLength length of the packet payload.
* This parameter is an uint16_t.
* @retval None.
*/
#define STACK_BUILD_PCKTLEN0(nLength) BUILD_PCKTLEN0(nLength)
/**
* @brief Macro used to compute the upper part of the packet length
* for Spirit STack packets, to write the PCKTLEN1 register.
* @param nLength length of the packet payload.
* This parameter is an uint16_t.
* @retval None.
*/
#define STACK_BUILD_PCKTLEN1(nLength) BUILD_PCKTLEN1(nLength)
/**
* @brief Sets the CONTROL length for SPIRIT STack packets.
* @param xControlLength length of CONTROL field in bytes.
* This parameter can be any value of @ref StackControlLength.
* @retval None.
*/
#define SpiritPktStackSetControlLength(xControlLength) SpiritPktCommonSetControlLength(xControlLength)
/**
* @brief Returns the CONTROL length for SPIRIT STack packets.
* @param None.
* @retval Control length.
*/
#define SpiritPktStackGetControlLength() SpiritPktCommonGetControlLength()
/**
* @brief Sets the PREAMBLE Length mode for SPIRIT STack packets.
* @param xPreambleLength length of PREAMBLE field in bytes.
* This parameter can be any value of @ref StackPreambleLength.
* @retval None.
*/
#define SpiritPktStackSetPreambleLength(xPreambleLength) SpiritPktCommonSetPreambleLength((PktPreambleLength)xPreambleLength)
/**
* @brief Returns the PREAMBLE Length mode for SPIRIT STack packets.
* @param None.
* @retval uint8_t Preamble length in bytes.
*/
#define SpiritPktStackGetPreambleLength() SpiritPktCommonGetPreambleLength()
/**
* @brief Sets the SYNC Length for SPIRIT STack packets.
* @param xSyncLength length of SYNC field in bytes.
* This parameter can be any value of @ref StackSyncLength.
* @retval None.
*/
#define SpiritPktStackSetSyncLength(xSyncLength) SpiritPktCommonSetSyncLength((PktSyncLength)xSyncLength)
/**
* @brief Returns the SYNC Length for SPIRIT STack packets.
* @param None.
* @retval uint8_t Sync length in bytes.
*/
#define SpiritPktStackGetSyncLength() SpiritPktCommonGetSyncLength()
/**
* @brief Sets fixed or variable payload length mode for SPIRIT STack packets.
* @param xFixVarLength variable or fixed length.
* PKT_FIXED_LENGTH_VAR -> variable (the length is extracted from the received packet).
* PKT_FIXED_LENGTH_FIX -> fix (the length is set by PCKTLEN0 and PCKTLEN1).
* @retval None.
*/
#define SpiritPktStackSetFixVarLength(xFixVarLength) SpiritPktCommonSetFixVarLength((PktFixVarLength)xFixVarLength)
/**
* @brief Enables or Disables the CRC filtering.
* @param xNewState new state for CRC_CHECK.
* This parameter can be S_ENABLE or S_DISABLE.
* @retval None.
*/
#define SpiritPktStackFilterOnCrc(xNewState) SpiritPktCommonFilterOnCrc(xNewState)
/**
* @brief Returns the CRC filtering bit.
* @param None.
* @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
*/
#define SpiritPktStackGetFilterOnCrc() SpiritPktCommonGetFilterOnCrc()
/**
* @brief Sets the CRC mode for SPIRIT STack packets.
* @param xCrcMode CRC mode.
* This parameter can be any value of @ref StackCrcMode.
* @retval None.
*/
#define SpiritPktStackSetCrcMode(xCrcMode) SpiritPktCommonSetCrcMode((PktCrcMode)xCrcMode)
/**
* @brief Returns the CRC mode for SPIRIT packets.
* @param None.
* @retval StackCrcMode Crc mode.
*/
#define SpiritPktStackGetCrcMode() (StackCrcMode)SpiritPktCommonGetCrcMode()
/**
* @brief Enables or Disables WHITENING for SPIRIT STack packets.
* @param xNewState new state for WHITENING mode.
* This parameter can be S_ENABLE or S_DISABLE.
* @retval None.
*/
#define SpiritPktStackWhitening(xNewState) SpiritPktCommonWhitening(xNewState)
/**
* @brief Enables or Disables FEC for SPIRIT STack packets.
* @param xNewState new state for FEC mode.
* This parameter can be S_ENABLE or S_DISABLE.
* @retval None.
*/
#define SpiritPktStackFec(xNewState) SpiritPktCommonFec(xNewState)
/**
* @brief Sets a specific SYNC word for SPIRIT STack packets.
* @param xSyncX SYNC word number to be set.
* This parameter can be any value of @ref StackSyncX.
* @param cSyncWord SYNC word.
* This parameter is an uint8_t.
* @retval None.
*/
#define SpiritPktStackSetSyncxWord(xSyncX, cSyncWord) SpiritPktCommonSetSyncxWord((PktSyncX)xSyncX,cSyncWord)
/**
* @brief Returns a specific SYNC word for SPIRIT STack packets.
* @param xSyncX SYNC word number to be get.
* This parameter can be any value of @ref StackSyncX.
* @retval uint8_t Sync word x.
*/
#define SpiritPktStackGetSyncxWord(xSyncX) SpiritPktCommonGetSyncxWord(xSyncX)
/**
* @brief Sets multiple SYNC words for SPIRIT STack packets.
* @param lSyncWords SYNC words to be set with format: 0x|SYNC1|SYNC2|SYNC3|SYNC4|.
* This parameter is a uint32_t.
* @param xSyncLength SYNC length in bytes. The 32bit word passed will be stored in the SYNCx registers from the MSb
* until the number of bytes in xSyncLength has been stored.
* This parameter is a @ref StackSyncLength.
* @retval None.
*/
#define SpiritPktStackSetSyncWords(lSyncWords, xSyncLength) SpiritPktCommonSetSyncWords(lSyncWords,(PktSyncLength)xSyncLength)
/**
* @brief Returns multiple SYNC words for SPIRIT packets.
* @param xSyncLength SYNC length in bytes. The 32bit word passed will be stored in the SYNCx registers from the MSb
* until the number of bytes in xSyncLength has been stored.
* This parameter is a pointer to @ref StackSyncLength.
* @retval uint32_t Sync words. The format of the read 32 bit word is 0x|SYNC1|SYNC2|SYNC3|SYNC4|.
*/
#define SpiritPktStackGetSyncWords(xSyncLength) SpiritPktCommonGetSyncWords((PktSyncLength)xSyncLength)
/**
* @brief Returns the SPIRIT variable length width (in number of bits).
* @param None.
* @retval uint8_t Variable length width in bits.
*/
#define SpiritPktStackGetVarLengthWidth() SpiritPktCommonGetVarLengthWidth()
/**
* @brief Sets the destination address for the Tx packet.
* @param cAddress destination address.
* This parameter is an uint8_t.
* @retval None.
*/
#define SpiritPktStackSetDestinationAddress(cAddress) SpiritPktCommonSetDestinationAddress(cAddress)
/**
* @brief Sets the Rx packet reference source address. The source address extracted from the received packet is masked
* with the source reference mask and then compared to the masked reference value.
* @param cAddress Reference source address.
* This parameter is an uint8_t.
* @retval None.
*/
#define SpiritPktStackSetSourceReferenceAddress(cAddress) SpiritPktCommonSetDestinationAddress(cAddress)
/**
* @brief Returns the Rx packet reference source address. The source address extracted from the received packet is masked
* with the source reference mask and then compared to the masked reference value.
* @param cAddress Reference source address.
* This parameter is an uint8_t.
* @retval None.
*/
#define SpiritPktStackGetSourceReferenceAddress() SpiritPktCommonGetTransmittedDestAddress()
/**
* @brief Returns the settled destination address.
* @param None.
* @retval uint8_t Transmitted destination address.
*/
#define SpiritPktStackGetTransmittedDestAddress() SpiritPktCommonGetTransmittedDestAddress()
/**
* @brief Sets the node address. When the filtering on my address is on, if the destination address extracted from the received packet is equal to the content of the
* my address, then the packet is accepted (this is the address of the node).
* @param cAddress Address of the present node.
* This parameter is an uint8_t.
* @retval None.
*/
#define SpiritPktStackSetMyAddress(cAddress) SpiritPktCommonSetMyAddress(cAddress)
/**
* @brief Returns the address of the present node.
* @param None.
* @retval uint8_t My address (address of this node).
*/
#define SpiritPktStackGetMyAddress() SpiritPktCommonGetMyAddress()
/**
* @brief Sets the broadcast address. When the broadcast filtering is on, if the destination address extracted from the received packet is equal to the content of the
* BROADCAST_ADDR register, then the packet is accepted.
* @param cAddress Broadcast address.
* This parameter is an uint8_t.
* @retval None.
*/
#define SpiritPktStackSetBroadcastAddress(cAddress) SpiritPktCommonSetBroadcastAddress(cAddress)
/**
* @brief Returns the broadcast address.
* @param None.
* @retval uint8_t Broadcast address.
*/
#define SpiritPktStackGetBroadcastAddress() SpiritPktCommonGetBroadcastAddress()
/**
* @brief Sets the multicast address. When the multicast filtering is on, if the destination address extracted from the received packet is equal to the content of the
* MULTICAST_ADDR register, then the packet is accepted.
* @param cAddress Multicast address.
* This parameter is an uint8_t.
* @retval None.
*/
#define SpiritPktStackSetMulticastAddress(cAddress) SpiritPktCommonSetMulticastAddress(cAddress)
/**
* @brief Returns the multicast address.
* @param None.
* @retval uint8_t Multicast address.
*/
#define SpiritPktStackGetMulticastAddress() SpiritPktCommonGetMulticastAddress()
/**
* @brief Sets the control mask. The 1 bits of the CONTROL_MASK indicate the
* bits to be used in filtering. (All 0s no filtering)
* @param lMask Control mask.
* This parameter is an uint32_t.
* @retval None.
*/
#define SpiritPktStackSetCtrlMask(lMask) SpiritPktCommonSetCtrlMask(lMask)
/**
* @brief Returns the control mask. The 1 bits of the CONTROL_MASK indicate the
* bits to be used in filtering. (All 0s no filtering)
* @param None.
* @retval uint32_t Control mask.
*/
#define SpiritPktStackGetCtrlMask() SpiritPktCommonGetCtrlMask()
/**
* @brief Sets the control field reference. If the bits enabled by the
* CONTROL_MASK match the ones of the control fields extracted from the received packet
* then the packet is accepted.
* @param lReference Control reference.
* This parameter is an uint32_t.
* @retval None.
*/
#define SpiritPktStackSetCtrlReference(lReference) SpiritPktCommonSetCtrlReference(lReference)
/**
* @brief Returns the control field reference.
* @param None.
* @retval uint32_t Control reference.
*/
#define SpiritPktStackGetCtrlReference() SpiritPktCommonGetCtrlReference()
/**
* @brief Sets the TX control field.
* @param lField TX CONTROL FIELD.
* This parameter is an uint32_t.
* @retval None.
*/
#define SpiritPktStackSetTransmittedCtrlField(lField) SpiritPktCommonSetTransmittedCtrlField(lField)
/**
* @brief Returns the TX control field.
* @param None.
* @retval uint32_t Control field of the transmitted packet.
*/
#define SpiritPktStackGetTransmittedCtrlField() SpiritPktCommonGetTransmittedCtrlField()
/**
* @brief If enabled RX packet is accepted if its destination address matches with TX_SOURCE_ADDRESS.
* @param xNewState new state for DEST_VS_SOURCE_ADDRESS.
* This parameter can be S_ENABLE or S_DISABLE.
* @retval None.
*/
#define SpiritPktStackFilterOnMyAddress(xNewState) SpiritPktCommonFilterOnMyAddress(xNewState)
/**
* @brief If enabled RX packet is accepted if its destination address matches with MULTICAST_ADDRESS.
* @param xNewState new state for DEST_VS_MULTICAST_ADDRESS.
* This parameter can be S_ENABLE or S_DISABLE.
* @retval None.
*/
#define SpiritPktStackFilterOnMulticastAddress(xNewState) SpiritPktCommonFilterOnMulticastAddress(xNewState)
/**
* @brief If enabled RX packet is accepted if its destination address matches with BROADCAST_ADDRESS.
* @param xNewState new state for DEST_VS_BROADCAST_ADDRESS.
* This parameter can be S_ENABLE or S_DISABLE.
* @retval None.
*/
#define SpiritPktStackFilterOnBroadcastAddress(xNewState) SpiritPktCommonFilterOnBroadcastAddress(xNewState)
/**
* @brief Returns the enable bit of the my address filtering.
* @param None.
* @retval SpiritFunctionalStateThis parameter can be S_ENABLE or S_DISABLE.
*/
#define SpiritPktStackGetFilterOnMyAddress() SpiritPktCommonGetFilterOnMyAddress();
/**
* @brief Returns the enable bit of the multicast address filtering.
* @param None.
* @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
*/
#define SpiritPktStackGetFilterOnMulticastAddress() SpiritPktCommonGetFilterOnMulticastAddress();
/**
* @brief Returns the enable bit of the broadcast address filtering.
* @param None.
* @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
*/
#define SpiritPktStackGetFilterOnBroadcastAddress() SpiritPktCommonGetFilterOnBroadcastAddress();
/**
* @brief Returns the control field of the received packet.
* @param None.
* @retval uint32_t Received control field.
*/
#define SpiritPktStackGetReceivedCtrlField() SpiritPktCommonGetReceivedCtrlField()
/**
* @brief Returns the CRC field of the received packet.
* @param cCrcFieldVect array in which the CRC field has to be stored.
* This parameter is an uint8_t array of 3 elements.
* @retval None.
*/
#define SpiritPktStackGetReceivedCrcField(cCrcFieldVect) SpiritPktCommonGetReceivedCrcField(cCrcFieldVect)
/**
* @brief Sets the AUTO ACKNOLEDGEMENT mechanism on the receiver. When the feature is enabled and
* a data packet has been correctly received, then an acknowledgement packet is sent back to the originator of the received
* packet. If the PIGGYBACKING bit is also set, payload data will be read from the FIFO; otherwise an empty packet is sent
* only containing the source and destination addresses and the sequence number of the packet being acknowledged.
* @param xAutoAck new state for autoack.
* This parameter can be: S_ENABLE or S_DISABLE.
* @param xPiggybacking new state for autoack.
* This parameter can be: S_ENABLE or S_DISABLE.
* @retval None.
*/
#define SpiritPktStackAutoAck(xAutoAck, xPiggybacking) SpiritPktCommonAutoAck(xAutoAck, xPiggybacking)
/**
* @brief Sets the AUTO ACKNOLEDGEMENT mechanism on the transmitter. On the transmitter side, the NACK_TX field can be used to require or not an acknowledgment for each individual packet: if
* NACK_TX is set to "1" then acknowledgment will not be required; if NACK_TX is set to "0" then acknowledgment will be
* required.
* @param xNewState new state for TX_AUTOACK.
* This parameter can be: S_ENABLE or S_DISABLE.
* @retval None.
*/
#define SpiritPktStackRequireAck(xNewState) SpiritPktCommonRequireAck(xNewState)
/**
* @brief Sets the TX sequence number to be used to start counting.
* @param cSeqNumberReload new value for Tx seq number reload.
* This parameter can be: S_ENABLE or S_DISABLE.
* @retval None.
*/
#define SpiritPktStackSetTransmittedSeqNumberReload(cSeqNumberReload) SpiritPktCommonSetTransmittedSeqNumberReload(cSeqNumberReload)
/**
* @brief Sets the max number of automatic retransmission.
* @param xNMaxReTx max number of retransmission.
* This parameter can be any value of @ref PktNMaxReTx.
* @retval None.
*/
#define SpiritPktStackSetNMaxReTx(xNMaxReTx) SpiritPktCommonSetNMaxReTx((PktNMaxReTx)xNMaxReTx)
/**
* @brief Returns the max number of automatic retransmission.
* @param None.
* @retval uint8_t Max number of retransmissions.
*/
#define SpiritPktStackGetNMaxReTx() SpiritPktCommonGetNMaxReTx()
/**
* @brief Returns the TX ACK request.
* @param None.
* @retval SpiritFunctionalState.
*/
#define SpiritPktStackGetGetTxAckRequest() SpiritPktCommonGetTxAckRequest()
/**
* @brief Returns the destination address of the received packet.
* @param None.
* @retval uint8_t Destination address of the received packet.
*/
#define SpiritPktStackGetReceivedDestAddress() SpiritPktCommonGetReceivedDestAddress()
/**
* @brief Returns the source address of the received packet.
* @param None.
* @retval uint8_t Source address of the received packet.
*/
#define SpiritPktStackGetReceivedSourceAddress() SpiritPktCommonGetReceivedSourceAddress()
/**
* @brief Returns the sequence number of the received packet.
* @param None.
* @retval uint8_t Received Sequence number.
*/
#define SpiritPktStackGetReceivedSeqNumber() SpiritPktCommonGetReceivedSeqNumber()
/**
* @brief Returns the Nack bit of the received packet
* @param None.
* @retval uint8_t Value of the NAck bit.
*/
#define SpiritPktStackGetReceivedNackRx() SpiritPktCommonGetReceivedNackRx()
/**
* @brief Returns the sequence number of the transmitted packet.
* @param None.
* @retval uint8_t Sequence number of the transmitted packet.
*/
#define SpiritPktStackGetTransmittedSeqNumber() SpiritPktCommonGetTransmittedSeqNumber()
/**
* @brief Returns the number of retransmission done on the transmitted packet.
* @param None.
* @retval uint8_t Number of retransmissions done until now.
*/
#define SpiritPktStackGetNReTx() SpiritPktCommonGetNReTx()
/**
* @brief If enabled RX packet is accepted only if the masked control field matches the
* masked control field reference (CONTROL_MASK & CONTROL_FIELD_REF == CONTROL_MASK & RX_CONTROL_FIELD).
* @param xNewState new state for Control filtering enable bit.
* This parameter can be S_ENABLE or S_DISABLE.
* @retval None.
* @note This filtering control is enabled by default but the control mask is by default set to 0.
* As a matter of fact the user has to enable the control filtering bit after the packet initialization
* because the PktInit routine disables it.
*/
#define SpiritPktStackFilterOnControlField(xNewState) SpiritPktCommonFilterOnControlField(xNewState)
/**
* @brief Returns the enable bit of the control field filtering.
* @param None.
* @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
*/
#define SpiritPktStackGetFilterOnControlField() SpiritPktCommonGetFilterOnControlField();
/**
*@}
*/
/**
* @defgroup PktStack_Exported_Functions Pkt STack Exported Functions
* @{
*/
void SpiritPktStackInit(PktStackInit* pxPktStackInit);
void SpiritPktStackGetInfo(PktStackInit* pxPktStackInit);
void SpiritPktStackAddressesInit(PktStackAddressesInit* pxPktStackAddresses);
void SpiritPktStackGetAddressesInfo(PktStackAddressesInit* pxPktStackAddresses);
void SpiritPktStackLlpInit(PktStackLlpInit* pxPktStackLlpInit);
void SpiritPktStackLlpGetInfo(PktStackLlpInit* pxPktStackLlpInit);
void SpiritPktStackSetFormat(void);
void SpiritPktStackSetPayloadLength(uint16_t nPayloadLength);
uint16_t SpiritPktStackGetPayloadLength(void);
void SpiritPktStackSetVarLengthWidth(uint16_t nMaxPayloadLength, StackControlLength xControlLength);
void SpiritPktStackSetRxSourceMask(uint8_t cMask);
uint8_t SpiritPktStackGetRxSourceMask(void);
uint16_t SpiritPktStackGetReceivedPktLength(void);
void SpiritPktStackFilterOnSourceAddress(SpiritFunctionalState xNewState);
void SpiritPktStackSetAddressLength(void);
/**
*@}
*/
/**
*@}
*/
/**
*@}
*/
#ifdef __cplusplus
}
#endif
#endif
/******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/
X-NUCLEO-IDS01A4 Sub-1GHz RF Expansion Board