mirror of
https://github.com/espressif/openthread.git
synced 2026-09-17 06:30:10 +00:00
Add macros for the channel bit-vector used with otActiveScan. (#236)
This commit is contained in:
@@ -147,6 +147,32 @@ typedef struct otExtAddress
|
||||
uint8_t m8[OT_EXT_ADDRESS_SIZE]; ///< IEEE 802.15.4 Extended Address bytes
|
||||
} otExtAddress;
|
||||
|
||||
/**
|
||||
* @addtogroup commands Commands
|
||||
*
|
||||
* @{
|
||||
*
|
||||
*/
|
||||
|
||||
#define OT_CHANNEL_11_MASK (1 << 11) ///< Channel 11
|
||||
#define OT_CHANNEL_12_MASK (1 << 12) ///< Channel 12
|
||||
#define OT_CHANNEL_13_MASK (1 << 13) ///< Channel 13
|
||||
#define OT_CHANNEL_14_MASK (1 << 14) ///< Channel 14
|
||||
#define OT_CHANNEL_15_MASK (1 << 15) ///< Channel 15
|
||||
#define OT_CHANNEL_16_MASK (1 << 16) ///< Channel 16
|
||||
#define OT_CHANNEL_17_MASK (1 << 17) ///< Channel 17
|
||||
#define OT_CHANNEL_18_MASK (1 << 18) ///< Channel 18
|
||||
#define OT_CHANNEL_19_MASK (1 << 19) ///< Channel 19
|
||||
#define OT_CHANNEL_20_MASK (1 << 20) ///< Channel 20
|
||||
#define OT_CHANNEL_21_MASK (1 << 21) ///< Channel 21
|
||||
#define OT_CHANNEL_22_MASK (1 << 22) ///< Channel 22
|
||||
#define OT_CHANNEL_23_MASK (1 << 23) ///< Channel 23
|
||||
#define OT_CHANNEL_24_MASK (1 << 24) ///< Channel 24
|
||||
#define OT_CHANNEL_25_MASK (1 << 25) ///< Channel 25
|
||||
#define OT_CHANNEL_26_MASK (1 << 26) ///< Channel 26
|
||||
|
||||
#define OT_CHANNEL_ALL 0xffffffff ///< All channels
|
||||
|
||||
/**
|
||||
* This struct represents a received IEEE 802.15.4 Beacon.
|
||||
*
|
||||
@@ -165,6 +191,11 @@ typedef struct otActiveScanResult
|
||||
bool mIsJoinable : 1; ///< Joining Permitted flag
|
||||
} otActiveScanResult;
|
||||
|
||||
/**
|
||||
* @}
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @addtogroup config Configuration
|
||||
*
|
||||
|
||||
@@ -176,7 +176,7 @@ typedef void (*otHandleActiveScanResult)(otActiveScanResult *aResult);
|
||||
/**
|
||||
* This function starts an IEEE 802.15.4 Active Scan
|
||||
*
|
||||
* @param[in] aScanChannels A bit vector indicating which channels to scan.
|
||||
* @param[in] aScanChannels A bit vector indicating which channels to scan (e.g. OT_CHANNEL_11_MASK).
|
||||
* @param[in] aScanDuration The time in milliseconds to spend scanning each channel.
|
||||
* @param[in] aCallback A pointer to a function that is called when a beacon is received or the scan completes.
|
||||
*
|
||||
@@ -184,7 +184,7 @@ typedef void (*otHandleActiveScanResult)(otActiveScanResult *aResult);
|
||||
* @retval kThreadError_Busy Already performing an Active Scan.
|
||||
*
|
||||
*/
|
||||
ThreadError otActiveScan(uint16_t aScanChannels, uint16_t aScanDuration, otHandleActiveScanResult aCallback);
|
||||
ThreadError otActiveScan(uint32_t aScanChannels, uint16_t aScanDuration, otHandleActiveScanResult aCallback);
|
||||
|
||||
/**
|
||||
* This function determines if an IEEE 802.15.4 Active Scan is currently in progress.
|
||||
|
||||
@@ -67,11 +67,12 @@ extern "C" {
|
||||
|
||||
enum
|
||||
{
|
||||
kMaxPHYPacketSize = 127, ///< aMaxPHYPacketSize (IEEE 802.15.4-2006)
|
||||
kPhyMinChannel = 11, ///< 2.4 GHz IEEE 802.15.4-2006
|
||||
kPhyMaxChannel = 26, ///< 2.4 GHz IEEE 802.15.4-2006
|
||||
kPhySymbolsPerOctet = 2, ///< 2.4 GHz IEEE 802.15.4-2006
|
||||
kPhyBitRate = 250000, ///< 2.4 GHz IEEE 802.15.4 (kilobits per second)
|
||||
kMaxPHYPacketSize = 127, ///< aMaxPHYPacketSize (IEEE 802.15.4-2006)
|
||||
kPhyMinChannel = 11, ///< 2.4 GHz IEEE 802.15.4-2006
|
||||
kPhyMaxChannel = 26, ///< 2.4 GHz IEEE 802.15.4-2006
|
||||
kPhySupportedChannelMask = 0xffff << kPhyMinChannel, ///< 2.4 GHz IEEE 802.15.4-2006
|
||||
kPhySymbolsPerOctet = 2, ///< 2.4 GHz IEEE 802.15.4-2006
|
||||
kPhyBitRate = 250000, ///< 2.4 GHz IEEE 802.15.4 (kilobits per second)
|
||||
|
||||
kPhyBitsPerOctet = 8,
|
||||
kPhyUsPerSymbol = ((kPhyBitsPerOctet / kPhySymbolsPerOctet) * 1000000) / kPhyBitRate,
|
||||
|
||||
+1
-1
@@ -1140,7 +1140,7 @@ void Interpreter::ProcessScan(int argc, char *argv[])
|
||||
if (argc > 0)
|
||||
{
|
||||
SuccessOrExit(error = ParseLong(argv[0], value));
|
||||
scanChannels = 1 << (value - kPhyMinChannel);
|
||||
scanChannels = 1 << value;
|
||||
}
|
||||
|
||||
SuccessOrExit(error = otActiveScan(scanChannels, 0, &HandleActiveScanResult));
|
||||
|
||||
@@ -122,7 +122,7 @@ Mac::Mac(ThreadNetif &aThreadNetif):
|
||||
otPlatRadioEnable();
|
||||
}
|
||||
|
||||
ThreadError Mac::ActiveScan(uint16_t aScanChannels, uint16_t aScanDuration, ActiveScanHandler aHandler, void *aContext)
|
||||
ThreadError Mac::ActiveScan(uint32_t aScanChannels, uint16_t aScanDuration, ActiveScanHandler aHandler, void *aContext)
|
||||
{
|
||||
ThreadError error = kThreadError_None;
|
||||
|
||||
@@ -134,6 +134,7 @@ ThreadError Mac::ActiveScan(uint16_t aScanChannels, uint16_t aScanDuration, Acti
|
||||
mScanDuration = (aScanDuration == 0) ? kScanDurationDefault : aScanDuration;
|
||||
|
||||
mScanChannel = kPhyMinChannel;
|
||||
mScanChannels >>= kPhyMinChannel;
|
||||
|
||||
while ((mScanChannels & 1) == 0)
|
||||
{
|
||||
|
||||
@@ -78,7 +78,7 @@ enum
|
||||
kDataPollTimeout = 100, ///< Timeout for receiving Data Frame (milliseconds).
|
||||
kNonceSize = 13, ///< Size of IEEE 802.15.4 Nonce (bytes).
|
||||
|
||||
kScanChannelsAll = 0xffff, ///< All channels.
|
||||
kScanChannelsAll = OT_CHANNEL_ALL, ///< All channels.
|
||||
kScanDurationDefault = 200, ///< Default interval between channels (milliseconds).
|
||||
};
|
||||
|
||||
@@ -207,7 +207,7 @@ public:
|
||||
* @param[in] aContext A pointer to arbitrary context information.
|
||||
*
|
||||
*/
|
||||
ThreadError ActiveScan(uint16_t aScanChannels, uint16_t aScanDuration, ActiveScanHandler aHandler, void *aContext);
|
||||
ThreadError ActiveScan(uint32_t aScanChannels, uint16_t aScanDuration, ActiveScanHandler aHandler, void *aContext);
|
||||
|
||||
/**
|
||||
* This method indicates whether or not rx-on-when-idle is enabled.
|
||||
@@ -485,7 +485,7 @@ private:
|
||||
|
||||
bool mActiveScanRequest;
|
||||
uint8_t mScanChannel;
|
||||
uint16_t mScanChannels;
|
||||
uint32_t mScanChannels;
|
||||
uint16_t mScanDuration;
|
||||
ActiveScanHandler mActiveScanHandler;
|
||||
void *mActiveScanContext;
|
||||
|
||||
@@ -671,7 +671,7 @@ ThreadError otDisable(void)
|
||||
return sThreadNetif->Down();
|
||||
}
|
||||
|
||||
ThreadError otActiveScan(uint16_t aScanChannels, uint16_t aScanDuration, otHandleActiveScanResult aCallback)
|
||||
ThreadError otActiveScan(uint32_t aScanChannels, uint16_t aScanDuration, otHandleActiveScanResult aCallback)
|
||||
{
|
||||
return sThreadNetif->GetMac().ActiveScan(aScanChannels, aScanDuration, &HandleActiveScanResult,
|
||||
reinterpret_cast<void *>(aCallback));
|
||||
|
||||
@@ -231,7 +231,7 @@ static spinel_status_t ThreadErrorToSpinelStatus(ThreadError error)
|
||||
NcpBase::NcpBase():
|
||||
mUpdateChangedPropsTask(&UpdateChangedProps, this)
|
||||
{
|
||||
mSupportedChannelMask = (0xFFFF << 11); // Default to 2.4GHz 802.15.4 channels.
|
||||
mSupportedChannelMask = kPhySupportedChannelMask;
|
||||
mChannelMask = mSupportedChannelMask;
|
||||
mScanPeriod = 200; // ms
|
||||
sNcpContext = this;
|
||||
@@ -1870,7 +1870,7 @@ void NcpBase::SetPropertyHandler_MAC_SCAN_STATE(uint8_t header, spinel_prop_key_
|
||||
case SPINEL_SCAN_STATE_BEACON:
|
||||
gActiveScanContextHack = this;
|
||||
errorCode = otActiveScan(
|
||||
(mChannelMask >> kPhyMinChannel),
|
||||
mChannelMask,
|
||||
mScanPeriod,
|
||||
&HandleActiveScanResult_Jump
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user