contiki/cpu/stm32w108/simplemac/include/phy-library.h

832 lines
27 KiB
C
Raw Normal View History

2010-10-25 09:03:38 +00:00
/*
* File: stack/phy/phy-library.h
* Description: Interface definition for library functionality.
*
* <!--(C) COPYRIGHT 2010 STMicroelectronics. All rights reserved. -->
*/
#include "stm32w108_type.h"
//---------------------------------------------------------------------------
// Definitions
//------------
/**
* @name SIMPLEMAC version defines
*@{
*/
/**
* @brief Version major number
*/
#define SIMPLEMAC_VERSION_MAJOR 1
/**
* @brief Version minor number
*/
#define SIMPLEMAC_VERSION_MINOR 0
/**
* @brief Version patch number
*/
#define SIMPLEMAC_VERSION_PATCH 0
/**
* @brief Version qualifier
*/
#define SIMPLEMAC_VERSION_QUAL ""
#define _SQUOTEME(a) #a
#define SQUOTEME(a) _SQUOTEME(a)
/**
* @brief Version string
*/
#define SIMPLEMAC_VERSION_STRING SQUOTEME(SIMPLEMAC_VERSION_MAJOR) "." SQUOTEME(SIMPLEMAC_VERSION_MINOR) "." SQUOTEME(SIMPLEMAC_VERSION_PATCH) SIMPLEMAC_VERSION_QUAL
//@} \\END SIMPLEMAC version defines
#define SECURITY_BLOCK_SIZE 16 // bytes
#define MIN_RADIO_POWER -43 // dBm
#define MAX_RADIO_POWER 3 // dBm
#ifndef __PHY_H__
enum {
ST_RADIO_POWER_MODE_RX_ON,
ST_RADIO_POWER_MODE_OFF
};
typedef u8 RadioPowerMode;
//---------------------------------------------------------------------------
// Transmit Configuration
//-----------------------
// The application must declare this structure and initialize each member
// variable. radioTransmitConfig must be initialized prior to calling
// ST_RadioTransmit() and may be modified only while no transmit operation is
// in progress.
#define RADIO_CCA_ATTEMPT_MAX_DEFAULT 4
#define RADIO_BACKOFF_EXPONENT_MIN_DEFAULT 3
#define RADIO_BACKOFF_EXPONENT_MAX_DEFAULT 5
typedef struct {
boolean waitForAck; // Wait for ACK if ACK request set in FCF.
boolean checkCca; // backoff and check CCA before transmit.
u8 ccaAttemptMax; // The number of CCA attempts before failure;
u8 backoffExponentMin; // Backoff exponent for the initial CCA attempt.
u8 backoffExponentMax; // Backoff exponent for the final CCA attempt(s).
boolean appendCrc; // Append CRC to transmitted packets.
} RadioTransmitConfig;
#endif// __PHY_H__
#ifndef ST_TYPES_H
/**
* @name txPowerModes for stSetTxPowerMode and mfglibSetPower
*/
//@{
/** @brief The application should call ::stSetTxPowerMode() with the
* txPowerMode parameter set to this value to disable all power mode options,
* resulting in normal power mode and bi-directional RF transmitter output.
*/
#define ST_TX_POWER_MODE_DEFAULT 0x0000
/** @brief The application should call ::stSetTxPowerMode() with the
* txPowerMode parameter set to this value to enable boost power mode.
*/
#define ST_TX_POWER_MODE_BOOST 0x0001
/** @brief The application should call ::stSetTxPowerMode() with the
* txPowerMode parameter set to this value to enable the alternate transmitter
* output.
*/
#define ST_TX_POWER_MODE_ALTERNATE 0x0002
/** @brief The application should call ::stSetTxPowerMode() with the
* txPowerMode parameter set to this value to enable both boost mode and the
* alternate transmitter output.
*/
#define ST_TX_POWER_MODE_BOOST_AND_ALTERNATE (ST_TX_POWER_MODE_BOOST \
|ST_TX_POWER_MODE_ALTERNATE)
#ifndef DOXYGEN_SHOULD_SKIP_THIS
// The application does not ever need to call stSetTxPowerMode() with the
// txPowerMode parameter set to this value. This value is used internally by
// the stack to indicate that the default token configuration has not been
// overidden by a prior call to stSetTxPowerMode().
#define ST_TX_POWER_MODE_USE_TOKEN 0x8000
#endif//DOXYGEN_SHOULD_SKIP_THIS
//@} \\END Definitions
/**
* @brief The maximum 802.15.4 channel number is 26.
*/
#define ST_MAX_802_15_4_CHANNEL_NUMBER 26
/**
* @brief The minimum 802.15.4 channel number is 11.
*/
#define ST_MIN_802_15_4_CHANNEL_NUMBER 11
/**
* @brief There are sixteen 802.15.4 channels.
*/
#define ST_NUM_802_15_4_CHANNELS \
(ST_MAX_802_15_4_CHANNEL_NUMBER - ST_MIN_802_15_4_CHANNEL_NUMBER + 1)
#endif //ST_TYPES_H
//---------------------------------------------------------------------------
/** @name
* Radio power state control APIs
*
* @brief
* These APIs control the overall radio initialization and power state.
*/
//@{
/** @brief
* This function performs one-time radio initialization and calibration.
* This function must be called once after chip reset or wake from deep sleep.
* This function will power up the radio while it configures the radio channel.
* After the radio is configured and the channel is set the radio will be left
* in the state specified by the \c initialRadioPowerMode parameter.
* This function calls ST_RadioSetPowerMode(),
* ST_RadioEnableAddressFiltering(), ST_RadioEnableAutoAck(),
* ST_RadioSetCoordinator(), ST_RadioSetPower(), ST_RadioSetChannel(),
* ST_RadioEnablePacketTrace(), and ST_RadioEnableReceiveCrc()
* providing the last used argument for each function. If these functions have
* not been called before ST_RadioInit() then the default for each is used.
* Only the functions listed above can be called before ST_RadioInit().
* All other library functions must not be called until after
* ST_RadioInit() has been called once after each chip reset or wake from deep
* sleep.
*
* @param
* initialRadioPowerMode specifies the state that the function will leave the
* radio in after it is configured. This parameter can be either:
* ST_RADIO_POWER_MODE_OFF - radio will be powered down.
* ST_RADIO_POWER_MODE_RX_ON - radio will be left in the on (receive) state.
*
* @return ::ST_SUCCESS or a status code indicating the reason for failure.
*/
StStatus ST_RadioInit(RadioPowerMode initialRadioPowerMode);
/** @brief
* Turns on the radio. The last radio configuration is used.
*/
void ST_RadioWake(void);
/** @brief
* This function turns off the radio.
* Any transmit or receive packets in progress are aborted.
* The library may or may not call ST_RadioTransmitCompleteIsrCallback() for an
* aborted transmit packet.
* ST_RadioWake() must not be called within 250us of having called
* ST_RadioSleep().
*/
void ST_RadioSleep(void);
//@}//END Radio power state control APIs
//---------------------------------------------------------------------------
/** @name
* Channel APIs
*
* @brief
* These APIs control channel selection and calibration.
*/
//@{
/** @brief
* Configures the radio to communicate on a 802.15.4 channel.
* If ST_RadioInit() has not been called yet, the channel number is recorded
* but no calibration takes place. The specified channel will be configured
* when ST_RadioInit() is eventually called.
* If the radio is asleep this function will wake it to perform channel
* calibration and then return it to sleep before exiting.
* The first time a channel is selected all radio parameters will be calibrated
* for that channel. This full calibration process can take up to 200ms to
* complete. The results of some of these calibrations are stored in flash
* tokens for use the next time the same channel is selected. Subsequent calls
* to ST_RadioSetChannel() requesting the same channel will take less time
* because the stored values will be retrieved from the flash tokens and reused.
*
* @param channel the 802.15.4 channel that the radio will communicate on.
*
* @return ::ST_SUCCESS or a status code indicating the reason for failure.
*/
StStatus ST_RadioSetChannel(u8 channel);
/** @brief
* This function gets the 802.15.4 channel that the radio is configured to use.
*
* @return the 802.15.4 channel that the radio is configured to use.
*/
u8 ST_RadioGetChannel(void);
/** @brief
* This function is identical to ST_RadioSetChannel() except that it
* calibrates all radio parameters regardless of whether calibration is
* required.
*
* NOTE: This function does not need to be called under normal operating
* conditions. The library will reuse available stored calibration values
* and will perform necessary re-calibration automatically. Calling this
* function will cause the library to calibrate all radio parameters and
* store the results in flash, overwriting previous stored values. Use of
* this function will cause unnecessary flash wear and will take longer to
* complete than a call to ST_RadioSetChannel(). This function should only
* be called to recover from hardware-related calibration problems, which
* should only occur during hardware development.
*
* @param channel the 802.15.4 channel that the radio will communicate on.
*
* @return ::ST_SUCCESS or a status code indicating the reason for failure.
*/
StStatus ST_RadioSetChannelAndForceCalibration(u8 channel);
/** @brief
* This function checks to see if the radio needs calibrating to maintain
* expected performance as environmental conditions change.
* If this function indicates that the calibration is needed, the application
* should call ST_RadioCalibrateCurrentChannel().
*
* NOTE: This function must not be called while a transmit is in progress.
*
* @return TRUE if calibration is needed to compensate for temperature changes,
* FALSE otherwise.
*/
boolean ST_RadioCheckRadio(void);
/** @brief
* This function performs necessary recalibration to counteract the effects of
* temperature changes since the last calibration. It should be called by the
* application when ST_RadioCheckRadio() indicates that calibration is needed.
*/
void ST_RadioCalibrateCurrentChannel(void);
//@}//END Channel APIs
//---------------------------------------------------------------------------
/** @name
* Transmit APIs
*
* @brief
* These APIs control the transmission of packets.
*/
//@{
/** @brief
* This function transmits a packet using the configuration specified in
* \c radioTransmitConfig.
*
* @param *packet A pointer to the packet to be transmitted. The first byte of
* \c packet must be set to the number of payload bytes to be transmitted.
* If \c radioTransmitConfig.appendCrc is TRUE the length byte must accommodate
* the hardware-appended two-byte CRC.
* e.g. A packet with a two-byte payload would be represented in memory as:
* {0x04, 0x00, 0x01, 0xc0, 0xc1} where 0xc0 and 0xc1 are the CRC bytes.
* If \c radioTransmitConfig.checkCca is TRUE this function performs CSMA-CA
* backoff(s) and CCA check(s) before transmitting, else it starts the
* transmit process immediately.
*
* @return ::ST_SUCCESS if the transmission process is successfully started.
* In this case ST_RadioTransmitCompleteIsrCallback() will eventually be
* called to indicate the completion status. If the radio is busy transmitting,
* this function returns an error code and
* ST_RadioTransmitCompleteIsrCallback() will not be called.
*/
StStatus ST_RadioTransmit(u8* packet);
/** @brief
* This function is called by the library once after each ST_RadioTransmit()
* call that returned successfully. If the ST_RadioTransmit() call returned
* an error ST_RadioTransmitCompleteIsrCallback() will not be called.
*
* NOTE: ST_RadioTransmit() can be called again within the context of this
* callback.
*
* @param status parameter indicates one of the following conditions:
* ::ST_SUCCESS - the last byte of the non-ACK-request packet has been
* transmitted.
* ::ST_PHY_ACK_RECEIVED - the requested ACK was received.
* ::ST_MAC_NO_ACK_RECEIVED - the requested ACK was not received in time.
* ::ST_PHY_TX_CCA_FAIL - unable to transmit due to lack of clear channel on
* all attempts.
* ::ST_PHY_TX_UNDERFLOW - DMA underflow occurred while transmitting. Should
* never happen.
* ::ST_PHY_TX_INCOMPLETE - The PLL synthesizer failed to lock while
* transmitting. Should never happen.
*
* @param sfdSentTime the value of the MAC timer captured when the SFD was sent.
*
* @param framePending TRUE if the received ACK indicates that data is
* pending for this node, FALSE otherwise.
*/
extern void ST_RadioTransmitCompleteIsrCallback(StStatus status,
u32 sfdSentTime,
boolean framePending);
/** @brief
* This function sets the Energy Detection Clear Channel Assessment threshold.
*
* @param threshold the energy level in dBm below which the channel will be
* considered clear.
*/
void ST_RadioSetEdCcaThreshold(s8 threshold);
/** @brief
* This function get the Energy Detection Clear Channel Assessment threshold.
*
* @return the Energy Detection Clear Channel Assessment threshold in units of
* dBm.
*/
s8 ST_RadioGetEdCcaThreshold(void);
/** @brief This function enables or disables notification of the SFD sent event
* via the ST_RadioSfdSentIsrCallback().
*
* @param enable TRUE if the notification is to be enabled, FALSE if the
* notification is to be disabled.
*/
void ST_RadioEnableSfdSentNotification(boolean enable);
/** @brief
* This function indicates whether the SFD sent notification via
* \c ST_RadioSfdSentIsrCallback() is enabled or disabled.
*
* @return TRUE if the SFD sent notification is enabled, FALSE otherwise.
*/
boolean ST_RadioSfdSentNotificationEnabled(void);
/** @brief
* This function is called by the library in response to an SFD sent event if
* this notification has been enabled by a call to
* \c ST_RadioEnableSfdSentNotification().
*
* NOTE: This callback is called for ACKs as well as normal packets.
*
* NOTE: In cases of extreme interrupt latency it is possible that
* \c sfdSentTime may contain the SFD time of the last received packet instead
* of the time of the last transmitted packet.
*
* @param sfdSentTime the value of the MAC timer when the SFD was sent in the
* last transmitted packet.
*/
void ST_RadioSfdSentIsrCallback(u32 sfdSentTime);
/** @brief
* This function sets the radio transmit power to a new level within the minimum
* and maximum values specified in the datasheet for the specific device.
*
* NOTE: It is possible for this function to succeed and set the power level to
* a value other than that specified in the \c power parameter. The reason for
* for this behavior is that not all integer power levels are available at lower
* power levels. When a specific power level is not available the next higher
* power level is used.
*
* @return ::ST_SUCCESS if the power level has been changed, or an error
* status code if not (e.g. if the requested value is out of range).
*
* @param power the desired power level in units of dBm.
*/
StStatus ST_RadioSetPower(s8 power);
/** @brief
* This function gets the radio transmit power level.
*
* @return the radio transmit power level in units of dBm.
*/
s8 ST_RadioGetPower(void);
//@}//END Transmit APIs
//---------------------------------------------------------------------------
/** @name
* Receive APIs
*
* @brief
* These APIs control the reception of packets.
*/
//@{
/** @brief
* This function is called by the library when a packet has been received.
*
* @param *packet points to the packet data beginning with the length byte.
* The CRC bytes will have been removed from the packet.
*
* @param ackFramePendingSet TRUE if the library set the Frame Pending bit in
* the hardware-generated MAC ACK to this packet, FALSE otherwise.
*
* @param time The value of the MAC timer when the SFD was received for this
* packet.
*
* @param errors The number of correlator errors in the packet.
*
* @param rssi The energy detected over the last 8 symbols of the packet in
* units of dBm.
*/
extern void ST_RadioReceiveIsrCallback(u8 *packet,
boolean ackFramePendingSet,
u32 time,
u16 errors,
s8 rssi);
/** @brief
* This function enables or disables address filtering on PAN ID, node ID, and
* EUI 64.
*
* NOTE: Address filtering is enabled by default.
*
* @param enable TRUE to enable address filtering, FALSE otherwise.
*/
void ST_RadioEnableAddressFiltering(boolean enable);
/** @brief
* This function gets the address filtering status of the device.
*
* @return TRUE if address filtering is enabled, FALSE otherwise.
*/
boolean ST_RadioAddressFilteringEnabled(void);
/** @brief
* This function enables or disables automatic transmission of ACKs in response
* to received packets which request ACKs.
*
* NOTE: Address filtering must be enabled for automatic transmission of ACKs to
* occur.
*
* NOTE: Automatic acknowledgement is enabled by default.
*
* @param enable TRUE to enable automatic acknowledgement transmission, FALSE
* otherwise.
*/
void ST_RadioEnableAutoAck(boolean enable);
/** @brief
* This function gets the automatic acknowledgement status of the device.
*
* @return TRUE if automatic acknowledgement is enabled, FALSE otherwise.
*/
boolean ST_RadioAutoAckEnabled(void);
/** @brief
* This function sets the short address of the node.
*
* @param nodeId the 16-bit address to use for filtering short-addressed
* packets when address filtering is enabled.
*
*/
void ST_RadioSetNodeId(u16 nodeId);
/** @brief
* This function gets the short address of the node.
*
* @return nodeId the 16-bit address to use for filtering short-addressed
* packets.
*/
u16 ST_RadioGetNodeId(void);
/** @brief
* This function sets the PAN id of the node.
*
* @param panId the 16-bit PAN id to use for filtering packets when address
* filtering is enabled.
*/
void ST_RadioSetPanId(u16 panId);
/** @brief
* This function gets the PAN id of the node.
*
* @return 16-bit PAN id to use for filtering packets when address
* filtering is enabled.
*/
u16 ST_RadioGetPanId(void);
/** @brief
* This function get the EUI 64 of the node.
*
* NOTE: The EUI 64 is set via manufacturing tokens (See the Programming and
* Serialization Specification for details).
*
* @return the memory address of the 64-bit EUI address to use for filtering
* long-addressed packets when address filtering is enabled.
*/
u8* ST_RadioGetEui64(void);
/** @brief
* This function is called by the library after the long address fields of a
* packet have been received. The library will set the frame pending bit in the
* outgoing ACK only if the return value is TRUE. The application must lookup
* the \c eui64 in its own data structures and return TRUE if there is data
* pending, FALSE otherwise. It is critical that this function complete as
* quickly as possible to ensure the frame pending bit can be set before the ACK
* is transmitted.
*
* @return TRUE if the frame pending bit should be set in the outgoing ACK.
*/
boolean ST_RadioDataPendingLongIdIsrCallback(u8* longId);
/** @brief
* This function is called by the library after the short address fields of a
* packet have been received. The library will set the frame pending bit in the
* outgoing ACK only if the return value is TRUE. The application must lookup
* \c shortId in its own data structures and return TRUE if there is data
* pending, FALSE otherwise. It is critical that this function complete as
* quickly as possible to ensure the frame pending bit can be set before the ACK
* is transmitted.
*
* @return TRUE if the frame pending bit should be set in the outgoing ACK.
*/
boolean ST_RadioDataPendingShortIdIsrCallback(u16 shortId);
/** @brief
* This function sets or clears coordinator mode for this node. A
* coordinator is able to receive 802.15.4. DATA frames that have no destination
* address. A node that is not a coordinator will not receive these packets.
*
* NOTE: The source PAN id of the DATA frame with no destination address must
* still match the node PAN id in order for it to be received by the
* coordinator node.
*
* NOTE: A node is not a coordinator by default.
*
* @param coordinator TRUE to enable coordinator mode, FALSE to disable
* coordinator mode.
*/
void ST_RadioSetCoordinator(boolean coordinator);
/** @brief
* This function gets the coordinator status of the node.
*
* @return TRUE if the node is configured as a coordinator, FALSE otherwise.
*/
boolean ST_RadioDeviceIsCoordinator(void);
/** @brief
* This function enables or disables notification of DMA receive buffer overflow
* events via ST_RadioOverflowIsrCallback().
*
* @param enable TRUE to enable overflow notification, FALSE otherwise.
*/
void ST_RadioEnableOverflowNotification(boolean enable);
/** @brief
* This function indicates whether the overflow notification via
* ST_RadioOverflowIsrCallback() is enabled or disabled.
*
* @return TRUE if overflow notification is enabled, FALSE otherwise.
*/
boolean ST_RadioOverflowNotificationEnabled(void);
/** @brief
* This function is called by the library in response to a receive overflow
* event if this notification is enabled by a call to
* ST_RadioEnableOverflowNotification().
*/
void ST_RadioOverflowIsrCallback(void);
/** @brief
* This function enables or disables discarding received packets that fail the
* Cyclic Redundancy Check.
*
* NOTE: When this option is enabled the library automatically strips the CRC
* bytes off of packets that pass CRC check.
*
* NOTE: Discarding packets that fail CRC is enabled by default.
*
* @param enable TRUE to enable discarding packets that fail CRC, FALSE
* otherwise.
*/
void ST_RadioEnableReceiveCrc(boolean enable);
/** @brief
* This function gets the receive CRC configuration of the node.
*
* @return TRUE if received packets that fail CRC will be discarded, FALSE
* otherwise.
*/
boolean ST_RadioReceiveCrcEnabled(void);
//@}//END Receive APIs
//---------------------------------------------------------------------------
/** @name
* MAC Timer APIs
*
* @brief
* These APIs expose an interface to the MAC Timer.
* The MAC timer is 20-bits long with each LSB tick representing 1us.
* The MAC timer rolls over to zero approximately once every second.
* The MAC timer is free-running from the time that ST_RadioInit() is called.
*/
//@{
/** @brief
* This function gets an instantaneous reading of the MAC timer.
*
* @return the current value of the MAC timer.
*/
u32 ST_RadioGetMacTimer(void);
/** @brief
* This function enables or disables comparison of the MAC timer against an
* application-supplied value and notification via
* ST_RadioMacTimerCompareIsrCallback().
*
* @param enable TRUE to enable MAC timer comparison and notification via a
* callback.
*/
void ST_RadioEnableMacTimerCompare(boolean enable);
/** @brief
* This function indicates whether MAC timer comparison and callback
* notification are enabled or disabled.
*
* @return TRUE if MAC timer comparison and notification are enabled, FALSE
* otherwise.
*/
boolean ST_RadioMacTimerCompareEnabled(void);
/** @brief
* This function sets the value to compare against the MAC timer.
*
* @param value the value to compare against the MAC timer.
*/
void ST_RadioSetMacTimerCompare(u32 value);
/** @brief
* This function gets the value to compare against the MAC timer.
*
* @return the value to compare against the MAC timer.
*/
u32 ST_RadioGetMacTimerCompare(void);
/** @brief
* This function is called by the library in response to MAC timer comparison
* event.
*/
extern void ST_RadioMacTimerCompareIsrCallback(void);
//@}//END MAC Timer APIs
//---------------------------------------------------------------------------
/** @name
* Cryptography APIs
*
* @brief
* These APIs provide an interface to the hardware AES coprocessor.
*/
//@{
/** @brief
* This function sets the key to use during AES encryption.
*
* @param *key pointer to 128 bits of key data.
*/
void ST_AesSetKey(u8* key);
/**
* This function gets the key that is used during AES encryption.
*
* @param *key pointer to memory where 128 bits of key data will be written.
*/
void ST_AesGetKey(u8* key);
/** @brief
* This function encrypts the 128 bits of plaintext data located at \c block
* using the AES coprocessor previously configured by ST_AesSetKey().
* The resulting 128 bits of cyphertext are stored at \c block, overwriting
* the supplied plaintext.
*
* @param block pointer to memory containing the plaintext when this function is
* called and containing the cyphertext after this function has returned.
*/
void ST_AesEncrypt(u8* block);
//@}//END Cryptography APIs
//---------------------------------------------------------------------------
/** @name
* Miscellaneous APIs
*
* @brief
* These APIs control diagnostic and configuration functionality.
*/
//@{
/** @brief
* This function starts transmission of a carrier wave at the current channel
* center frequency. The carrier wave will be transmitted until
* ST_RadioStopTransmitTone() is called.
*
* NOTE: The radio must be idle (not transmitting) before entering this mode.
*
* NOTE: Other radio APIs must not be called while in this mode.
*/
void ST_RadioStartTransmitTone(void);
/** @brief
* This function stops transmission of carrier wave started by
* ST_RadioStartTransmitTone().
*/
void ST_RadioStopTransmitTone(void);
/** @brief
* this function starts transmission of a continuous stream of modulated data.
* No packet framing is present in this transmission. Random symbols will be
* transmitted until ST_RadioStopTransmitStream() is called.
*
* NOTE: The radio must be idle (not transmitting) before entering this mode.
*
* NOTE: Other radio APIs must not be called while in this mode.
*/
void ST_RadioStartTransmitStream(void);
/** @brief
* This function stops transmission of continuous stream of modulated data
* started by ST_RadioStartTransmitStream().
*/
void ST_RadioStopTransmitStream(void);
/** @brief
* This function gets a reading of the average energy detected over the previous
* eight symbol periods (128us total).
*
* @return the energy level detected in units of dBm.
*/
s8 ST_RadioEnergyDetection(void);
/** @brief
* This function accesses radio hardware to obtain true random numbers.
*
* @param *rn pointer to memory to hold \c count random numbers.
*
* @param count the number of 16-bit random numbers to get.
*/
void ST_RadioGetRandomNumbers(u16 *rn, u8 count);
/** @brief
* This function gets the clear or busy status of the channel.
*
* @return TRUE if channel is clear, FALSE if channel is busy.
*/
boolean ST_RadioChannelIsClear(void);
/** @brief
* This function enables or disables Packet Trace output.
* Before being enabled, the associated IO pins must be separately
* configured to allow for the packet trace peripheral to control the pins.
*
* NOTE: Packet Trace is on by default.
*
* @param enable TRUE to enable Packet Trace, FALSE otherwise.
*/
void ST_RadioEnablePacketTrace(boolean enable);
/** @brief
* This function indicates whether Packet Trace is enabled or not.
*
* @return TRUE if Packet Trace is enabled, FALSE otherwise.
*/
boolean ST_RadioPacketTraceEnabled(void);
/** @brief
* This function sets the radio power mode according to the bits
* encoded in \c powerMode.
*
* NOTE: The default power mode is whatever is configured in the PHY_CONFIG
* token (normal, bi-directional mode if not explicitly set otherwise.
*
* NOTE: It is preferable to set this configuration via the PHY_CONFIG token
* rather than using this API.
*
* @param txPowerMode encodes the power mode as follows:
* bit 0 set to 0: Normal mode.
* bit 0 set to 1: Boost mode.
* bit 1 set to 0: Use bi-directional transmit path.
* bit 1 set to 1: Use alternate transmit path.
*
* @return ::ST_SUCCESS always.
*/
StStatus ST_RadioSetPowerMode(u16 txPowerMode);
/** @brief
* This function gets the radio power mode.
*
* @return the radio power mode (boost/normal, bi-directional/alternate transmit
* path) encoded as bits in a 16-bit word (see ST_RadioSetPowerMode()
* documentation for details).
*/
u16 ST_RadioGetPowerMode(void);
//@}//END Miscellaneous APIs