mirror of
https://github.com/espressif/openthread.git
synced 2026-07-26 22:09:05 +00:00
Add API for setting the default/maximum transmit power. (#394)
This commit is contained in:
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user