Adding openthread API for Energy Scan operation (#448)

This commit is contained in:
Abtin Keshavarzian
2016-08-22 21:20:14 -07:00
committed by Jonathan Hui
parent f52efd73e6
commit 6cf94291b9
3 changed files with 65 additions and 0 deletions
+10
View File
@@ -259,6 +259,16 @@ typedef struct otActiveScanResult
bool mIsJoinable : 1; ///< Joining Permitted flag
} otActiveScanResult;
/**
* This struct represents an energy scan result.
*
*/
typedef struct otEnergyScanResult
{
uint8_t mChannel; ///< IEEE 802.15.4 Channel
int8_t mMaxRssi; ///< The max RSSI (dBm)
} otEnergyScanResult;
/**
* @}
*
+33
View File
@@ -268,6 +268,39 @@ ThreadError otActiveScan(uint32_t aScanChannels, uint16_t aScanDuration, otHandl
*/
bool otIsActiveScanInProgress(void);
/**
* This function pointer is called during an IEEE 802.15.4 Energy Scan when the result for a channel is ready or the
* scan completes.
*
* @param[in] aResult A valid pointer to the energy scan result information or NULL when the energy scan completes.
* @param[in] aContext A pointer to application-specific context.
*
*/
typedef void (*otHandleEnergyScanResult)(otEnergyScanResult *aResult, void *aContext);
/**
* This function starts an IEEE 802.15.4 Energy Scan
*
* @param[in] aScanChannels A bit vector indicating on which channels to perform energy scan.
* @param[in] aScanDuration The time in milliseconds to spend scanning each channel.
* @param[in] aCallback A pointer to a function called to pass on scan result on indicate scan completion.
* @param[in] aCallbackContext A pointer to application-specific context.
*
* @retval kThreadError_None Accepted the Energy Scan request.
* @retval kThreadError_Busy Already performing an Active Scan.
*
*/
ThreadError otEnergyScan(uint32_t aScanChannels, uint16_t aScanDuration, otHandleEnergyScanResult aCallback,
void *aCallbackContext);
/**
* This function indicates whether or not an IEEE 802.15.4 Energy Scan is currently in progress.
*
* @returns true if an IEEE 802.15.4 Energy Scan is in progress, false otherwise.
*
*/
bool otIsEnergyScanInProgress(void);
/**
* This function starts a Thread Discovery scan.
*
+22
View File
@@ -68,6 +68,9 @@ static void HandleMleDiscover(otActiveScanResult *aResult, void *aContext);
static otHandleActiveScanResult sActiveScanCallback = NULL;
static void *sActiveScanCallbackContext = NULL;
static otHandleEnergyScanResult sEnergyScanCallback = NULL;
static void *sEnergyScanCallbackContext = NULL;
static otHandleActiveScanResult sDiscoverCallback = NULL;
static void *sDiscoverCallbackContext = NULL;
@@ -991,6 +994,25 @@ exit:
return;
}
ThreadError otEnergyScan(uint32_t aScanChannels, uint16_t aScanDuration, otHandleEnergyScanResult aCallback,
void *aCallbackContext)
{
sEnergyScanCallback = aCallback;
sEnergyScanCallbackContext = aCallbackContext;
(void)aScanChannels;
(void)aScanDuration;
// TODO: Implement the energy scan at mac layer.
return kThreadError_NotImplemented;
}
bool otIsEnegyScanInProgress(void)
{
return false;
}
ThreadError otDiscover(uint32_t aScanChannels, uint16_t aScanDuration, uint16_t aPanId,
otHandleActiveScanResult aCallback, void *aCallbackContext)
{