Add API for setting the default/maximum transmit power. (#394)

This commit is contained in:
Jonathan Hui
2016-08-17 14:31:27 -07:00
committed by GitHub
parent c518c17559
commit 5fcc74330f
5 changed files with 71 additions and 0 deletions
+16
View File
@@ -441,6 +441,22 @@ const uint8_t *otGetMasterKey(uint8_t *aKeyLength);
*/
ThreadError otSetMasterKey(const uint8_t *aKey, uint8_t aKeyLength);
/**
* This function returns the maximum transmit power setting in dBm.
*
* @returns The maximum transmit power setting.
*
*/
int8_t otGetMaxTransmitPower(void);
/**
* This function sets the maximum transmit power in dBm.
*
* @param[in] aPower The maximum transmit power in dBm.
*
*/
void otSetMaxTransmitPower(int8_t aPower);
/**
* This function returns a pointer to the Mesh Local EID.
*
+18
View File
@@ -98,6 +98,7 @@ Mac::Mac(ThreadNetif &aThreadNetif):
mReceiveHead = NULL;
mReceiveTail = NULL;
mChannel = OPENTHREAD_CONFIG_DEFAULT_CHANNEL;
mMaxTransmitPower = OPENTHREAD_CONFIG_DEFAULT_MAX_TRANSMIT_POWER;
mPanId = kPanIdBroadcast;
mShortAddress = kShortAddrInvalid;
@@ -238,6 +239,16 @@ ThreadError Mac::SetChannel(uint8_t aChannel)
return kThreadError_None;
}
int8_t Mac::GetMaxTransmitPower(void) const
{
return mMaxTransmitPower;
}
void Mac::SetMaxTransmitPower(int8_t aPower)
{
mMaxTransmitPower = aPower;
}
const char *Mac::GetNetworkName(void) const
{
return mNetworkName.m8;
@@ -472,6 +483,8 @@ void Mac::HandleBeginTransmit(void)
ExitNow();
}
sendFrame.SetPower(mMaxTransmitPower);
switch (mState)
{
case kStateActiveScan:
@@ -500,6 +513,11 @@ void Mac::HandleBeginTransmit(void)
// Security Processing
ProcessTransmitSecurity(sendFrame);
if (sendFrame.GetPower() > mMaxTransmitPower)
{
sendFrame.SetPower(mMaxTransmitPower);
}
SuccessOrExit(error = otPlatRadioTransmit());
if (sendFrame.GetAckRequest() && !(otPlatRadioGetCaps() & kRadioCapsAckTimeout))
+17
View File
@@ -302,6 +302,22 @@ public:
*/
ThreadError SetChannel(uint8_t aChannel);
/**
* This method returns the maximum transmit power in dBm.
*
* @returns The maximum transmit power in dBm.
*
*/
int8_t GetMaxTransmitPower(void) const;
/**
* This method sets the maximum transmit power in dBm.
*
* @param[in] aPower The maximum transmit power in dBm.
*
*/
void SetMaxTransmitPower(int8_t aPower);
/**
* This method returns the IEEE 802.15.4 Network Name.
*
@@ -470,6 +486,7 @@ private:
ShortAddress mShortAddress;
PanId mPanId;
uint8_t mChannel;
int8_t mMaxTransmitPower;
otNetworkName mNetworkName;
otExtendedPanId mExtendedPanId;
+10
View File
@@ -65,6 +65,16 @@
#define OPENTHREAD_CONFIG_DEFAULT_CHANNEL 11
#endif // OPENTHREAD_CONFIG_DEFAULT_CHANNEL
/**
* @def OPENTHREAD_CONFIG_DEFAULT_MAX_TRANSMIT_POWER
*
* The default IEEE 802.15.4 maximum transmit power (dBm)
*
*/
#ifndef OPENTHREAD_CONFIG_DEFAULT_MAX_TRANSMIT_POWER
#define OPENTHREAD_CONFIG_DEFAULT_MAX_TRANSMIT_POWER 0
#endif // OPENTHREAD_CONFIG_DEFAULT_MAX_TRANSMIT_POWER
/**
* @def OPENTHREAD_CONFIG_ATTACH_DATA_POLL_PERIOD
*
+10
View File
@@ -210,6 +210,16 @@ ThreadError otSetMasterKey(const uint8_t *aKey, uint8_t aKeyLength)
return sThreadNetif->GetKeyManager().SetMasterKey(aKey, aKeyLength);
}
int8_t otGetMaxTransmitPower(void)
{
return sThreadNetif->GetMac().GetMaxTransmitPower();
}
void otSetMaxTransmitPower(int8_t aPower)
{
sThreadNetif->GetMac().SetMaxTransmitPower(aPower);
}
const otIp6Address *otGetMeshLocalEid(void)
{
return sThreadNetif->GetMle().GetMeshLocal64();