diff --git a/etc/visual-studio/libopenthread.vcxproj b/etc/visual-studio/libopenthread.vcxproj index 392c02768..328dceb5a 100644 --- a/etc/visual-studio/libopenthread.vcxproj +++ b/etc/visual-studio/libopenthread.vcxproj @@ -59,6 +59,7 @@ + diff --git a/etc/visual-studio/libopenthread.vcxproj.filters b/etc/visual-studio/libopenthread.vcxproj.filters index 353b84c99..cc562c4ef 100644 --- a/etc/visual-studio/libopenthread.vcxproj.filters +++ b/etc/visual-studio/libopenthread.vcxproj.filters @@ -72,6 +72,9 @@ Source Files\api + + Source Files\api + Source Files\api diff --git a/etc/visual-studio/libopenthread_k.vcxproj b/etc/visual-studio/libopenthread_k.vcxproj index 620b9b0f5..35764e286 100644 --- a/etc/visual-studio/libopenthread_k.vcxproj +++ b/etc/visual-studio/libopenthread_k.vcxproj @@ -68,6 +68,7 @@ + diff --git a/etc/visual-studio/libopenthread_k.vcxproj.filters b/etc/visual-studio/libopenthread_k.vcxproj.filters index 9243bfbef..4593d2533 100644 --- a/etc/visual-studio/libopenthread_k.vcxproj.filters +++ b/etc/visual-studio/libopenthread_k.vcxproj.filters @@ -72,6 +72,9 @@ Source Files\api + + Source Files\api + Source Files\api diff --git a/examples/apps/windows/MainPage.xaml.cpp b/examples/apps/windows/MainPage.xaml.cpp index c2bc7c0c6..ed34fd654 100644 --- a/examples/apps/windows/MainPage.xaml.cpp +++ b/examples/apps/windows/MainPage.xaml.cpp @@ -190,7 +190,7 @@ void MainPage::ShowInterfaceDetails(Platform::Guid InterfaceGuid) GUID deviceGuid = InterfaceGuid; auto device = otInstanceInit(ApiInstance, &deviceGuid); - auto extendedAddress = otGetExtendedAddress(device); + auto extendedAddress = otLinkGetExtendedAddress(device); if (extendedAddress) { WCHAR szMac[256] = { 0 }; @@ -370,10 +370,10 @@ void MainPage::ConnectNetwork(Platform::Guid InterfaceGuid) wcstombs((char*)masterKey.m8, InterfaceConfigKey->Text->Data(), sizeof(masterKey.m8)); otSetMasterKey(device, masterKey.m8, sizeof(masterKey.m8)); - otSetChannel(device, (uint8_t)InterfaceConfigChannel->Value); + otLinkSetChannel(device, (uint8_t)InterfaceConfigChannel->Value); otSetMaxAllowedChildren(device, (uint8_t)InterfaceConfigMaxChildren->Value); - otSetPanId(device, 0x4567); + otLinkSetPanId(device, 0x4567); // // Bring up the interface and start the Thread logic diff --git a/examples/drivers/windows/otApi/otApi.cpp b/examples/drivers/windows/otApi/otApi.cpp index c8f007d99..c5dc5fb7b 100644 --- a/examples/drivers/windows/otApi/otApi.cpp +++ b/examples/drivers/windows/otApi/otApi.cpp @@ -1273,7 +1273,7 @@ otIsSingleton( OTAPI ThreadError OTCALL -otActiveScan( +otLinkActiveScan( _In_ otInstance *aInstance, uint32_t aScanChannels, uint16_t aScanDuration, @@ -1295,7 +1295,7 @@ otActiveScan( OTAPI bool OTCALL -otIsActiveScanInProgress( +otLinkIsActiveScanInProgress( _In_ otInstance *aInstance ) { @@ -1307,7 +1307,7 @@ otIsActiveScanInProgress( OTAPI ThreadError OTCALL -otEnergyScan( +otLinkEnergyScan( _In_ otInstance *aInstance, uint32_t aScanChannels, uint16_t aScanDuration, @@ -1329,7 +1329,7 @@ otEnergyScan( OTAPI bool OTCALL -otIsEnergyScanInProgress( +otLinkIsEnergyScanInProgress( _In_ otInstance *aInstance ) { @@ -1388,7 +1388,7 @@ otSendMacDataRequest( OTAPI uint8_t OTCALL -otGetChannel( +otLinkGetChannel( _In_ otInstance *aInstance ) { @@ -1400,7 +1400,7 @@ otGetChannel( OTAPI ThreadError OTCALL -otSetChannel( +otLinkSetChannel( _In_ otInstance *aInstance, uint8_t aChannel ) @@ -1487,7 +1487,7 @@ OTAPI const uint8_t * OTCALL -otGetExtendedAddress( +otLinkGetExtendedAddress( _In_ otInstance *aInstance ) { @@ -1505,7 +1505,7 @@ otGetExtendedAddress( OTAPI ThreadError OTCALL -otSetExtendedAddress( +otLinkSetExtendedAddress( _In_ otInstance *aInstance, const otExtAddress *aExtendedAddress ) @@ -1546,7 +1546,7 @@ otSetExtendedPanId( OTAPI void OTCALL -otGetFactoryAssignedIeeeEui64( +otLinkGetFactoryAssignedIeeeEui64( _In_ otInstance *aInstance, _Out_ otExtAddress *aEui64 ) @@ -1558,7 +1558,7 @@ otGetFactoryAssignedIeeeEui64( OTAPI void OTCALL -otGetHashMacAddress( +otLinkGetJoinerId( _In_ otInstance *aInstance, _Out_ otExtAddress *aHashMacAddress ) @@ -1658,7 +1658,7 @@ otSetMasterKey( OTAPI int8_t OTCALL -otGetMaxTransmitPower( +otLinkGetMaxTransmitPower( _In_ otInstance *aInstance ) { @@ -1670,7 +1670,7 @@ otGetMaxTransmitPower( OTAPI void OTCALL -otSetMaxTransmitPower( +otLinkSetMaxTransmitPower( _In_ otInstance *aInstance, int8_t aPower ) @@ -1833,7 +1833,7 @@ otGetNextOnMeshPrefix( OTAPI otPanId OTCALL -otGetPanId( +otLinkGetPanId( _In_ otInstance *aInstance ) { @@ -1845,7 +1845,7 @@ otGetPanId( OTAPI ThreadError OTCALL -otSetPanId( +otLinkSetPanId( _In_ otInstance *aInstance, otPanId aPanId ) @@ -1880,7 +1880,7 @@ otSetRouterRoleEnabled( OTAPI otShortAddress OTCALL -otGetShortAddress( +otLinkGetShortAddress( _In_ otInstance *aInstance ) { @@ -2352,7 +2352,7 @@ otSendPendingSet( OTAPI uint32_t OTCALL -otGetPollPeriod( +otLinkGetPollPeriod( _In_ otInstance *aInstance ) { @@ -2364,7 +2364,7 @@ otGetPollPeriod( OTAPI void OTCALL -otSetPollPeriod( +otLinkSetPollPeriod( _In_ otInstance *aInstance, uint32_t aPollPeriod ) @@ -2677,7 +2677,7 @@ otReleaseRouterId( OTAPI ThreadError OTCALL -otAddMacWhitelist( +otLinkAddWhitelist( _In_ otInstance *aInstance, const uint8_t *aExtAddr ) @@ -2689,7 +2689,7 @@ otAddMacWhitelist( OTAPI ThreadError OTCALL -otAddMacWhitelistRssi( +otLinkAddWhitelistRssi( _In_ otInstance *aInstance, const uint8_t *aExtAddr, int8_t aRssi @@ -2704,7 +2704,7 @@ otAddMacWhitelistRssi( OTAPI void OTCALL -otRemoveMacWhitelist( +otLinkRemoveWhitelist( _In_ otInstance *aInstance, const uint8_t *aExtAddr ) @@ -2715,7 +2715,7 @@ otRemoveMacWhitelist( OTAPI ThreadError OTCALL -otGetMacWhitelistEntry( +otLinkGetWhitelistEntry( _In_ otInstance *aInstance, uint8_t aIndex, _Out_ otMacWhitelistEntry *aEntry @@ -2728,7 +2728,7 @@ otGetMacWhitelistEntry( OTAPI void OTCALL -otClearMacWhitelist( +otLinkClearWhitelist( _In_ otInstance *aInstance ) { @@ -2738,27 +2738,18 @@ otClearMacWhitelist( OTAPI void OTCALL -otDisableMacWhitelist( - _In_ otInstance *aInstance +otLinkSetWhitelistEnabled( + _In_ otInstance *aInstance, + bool aEnabled ) { - if (aInstance) (void)SetIOCTL(aInstance, IOCTL_OTLWF_OT_MAC_WHITELIST_ENABLED, (BOOLEAN)FALSE); -} - -OTAPI -void -OTCALL -otEnableMacWhitelist( - _In_ otInstance *aInstance - ) -{ - if (aInstance) (void)SetIOCTL(aInstance, IOCTL_OTLWF_OT_MAC_WHITELIST_ENABLED, (BOOLEAN)TRUE); + if (aInstance) (void)SetIOCTL(aInstance, IOCTL_OTLWF_OT_MAC_WHITELIST_ENABLED, (BOOLEAN)aEnabled); } OTAPI bool OTCALL -otIsMacWhitelistEnabled( +otLinkIsWhitelistEnabled( _In_ otInstance *aInstance ) { @@ -2820,7 +2811,7 @@ otBecomeLeader( OTAPI ThreadError OTCALL -otAddMacBlacklist( +otLinkAddBlacklist( _In_ otInstance *aInstance, const uint8_t *aExtAddr ) @@ -2832,7 +2823,7 @@ otAddMacBlacklist( OTAPI void OTCALL -otRemoveMacBlacklist( +otLinkRemoveBlacklist( _In_ otInstance *aInstance, const uint8_t *aExtAddr ) @@ -2843,7 +2834,7 @@ otRemoveMacBlacklist( OTAPI ThreadError OTCALL -otGetMacBlacklistEntry( +otLinkGetBlacklistEntry( _In_ otInstance *aInstance, uint8_t aIndex, _Out_ otMacBlacklistEntry *aEntry @@ -2856,7 +2847,7 @@ otGetMacBlacklistEntry( OTAPI void OTCALL -otClearMacBlacklist( +otLinkClearBlacklist( _In_ otInstance *aInstance ) { @@ -2866,27 +2857,18 @@ otClearMacBlacklist( OTAPI void OTCALL -otDisableMacBlacklist( - _In_ otInstance *aInstance +otLinkSetBlacklistEnabled( + _In_ otInstance *aInstance, + bool aEnabled ) { - if (aInstance) (void)SetIOCTL(aInstance, IOCTL_OTLWF_OT_MAC_BLACKLIST_ENABLED, (BOOLEAN)FALSE); -} - -OTAPI -void -OTCALL -otEnableMacBlacklist( - _In_ otInstance *aInstance - ) -{ - if (aInstance) (void)SetIOCTL(aInstance, IOCTL_OTLWF_OT_MAC_BLACKLIST_ENABLED, (BOOLEAN)TRUE); + if (aInstance) (void)SetIOCTL(aInstance, IOCTL_OTLWF_OT_MAC_BLACKLIST_ENABLED, (BOOLEAN)aEnabled); } OTAPI bool OTCALL -otIsMacBlacklistEnabled( +otLinkIsBlacklistEnabled( _In_ otInstance *aInstance ) { @@ -2898,7 +2880,7 @@ otIsMacBlacklistEnabled( OTAPI ThreadError OTCALL -otGetAssignLinkQuality( +otLinkGetAssignLinkQuality( _In_ otInstance *aInstance, const uint8_t *aExtAddr, _Out_ uint8_t *aLinkQuality @@ -2911,7 +2893,7 @@ otGetAssignLinkQuality( OTAPI void OTCALL -otSetAssignLinkQuality( +otLinkSetAssignLinkQuality( _In_ otInstance *aInstance, const uint8_t *aExtAddr, uint8_t aLinkQuality @@ -3133,7 +3115,7 @@ otGetStableNetworkDataVersion( OTAPI const otMacCounters* OTCALL -otGetMacCounters( +otLinkGetCounters( _In_ otInstance *aInstance ) { diff --git a/examples/drivers/windows/otLwf/iocontrol.c b/examples/drivers/windows/otLwf/iocontrol.c index dc2aaf045..bd1aa5664 100644 --- a/examples/drivers/windows/otLwf/iocontrol.c +++ b/examples/drivers/windows/otLwf/iocontrol.c @@ -134,8 +134,8 @@ OTLWF_IOCTL_HANDLER IoCtls[] = { "IOCTL_OTLWF_OT_SEND_ACTIVE_SET", REF_IOCTL_FUNC(otSendActiveSet) }, { "IOCTL_OTLWF_OT_SEND_PENDING_GET", REF_IOCTL_FUNC(otSendPendingGet) }, { "IOCTL_OTLWF_OT_SEND_PENDING_SET", REF_IOCTL_FUNC(otSendPendingSet) }, - { "IOCTL_OTLWF_OT_SEND_MGMT_COMMISSIONER_GET", REF_IOCTL_FUNC(otCommissionerSendMgmtGet) }, - { "IOCTL_OTLWF_OT_SEND_MGMT_COMMISSIONER_SET", REF_IOCTL_FUNC(otCommissionerSendMgmtSet) }, + { "IOCTL_OTLWF_OT_SEND_MGMT_COMMISSIONER_GET", REF_IOCTL_FUNC(otSendMgmtCommissionerGet) }, + { "IOCTL_OTLWF_OT_SEND_MGMT_COMMISSIONER_SET", REF_IOCTL_FUNC(otSendMgmtCommissionerSet) }, { "IOCTL_OTLWF_OT_KEY_SWITCH_GUARDTIME", REF_IOCTL_FUNC_WITH_TUN(otKeySwitchGuardtime) }, { "IOCTL_OTLWF_OT_FACTORY_RESET", REF_IOCTL_FUNC(otFactoryReset) }, { "IOCTL_OTLWF_OT_THREAD_AUTO_START", REF_IOCTL_FUNC(otThreadAutoStart) } @@ -676,7 +676,7 @@ otLwfIoCtl_otActiveScan( uint32_t aScanChannels = *(uint32_t*)InBuffer; uint16_t aScanDuration = *(uint16_t*)(InBuffer + sizeof(uint32_t)); status = ThreadErrorToNtstatus( - otActiveScan( + otLinkActiveScan( pFilter->otCtx, aScanChannels, aScanDuration, @@ -687,7 +687,7 @@ otLwfIoCtl_otActiveScan( } else if (*OutBufferLength >= sizeof(BOOLEAN)) { - *(BOOLEAN*)OutBuffer = otIsActiveScanInProgress(pFilter->otCtx) ? TRUE : FALSE; + *(BOOLEAN*)OutBuffer = otLinkIsActiveScanInProgress(pFilter->otCtx) ? TRUE : FALSE; *OutBufferLength = sizeof(BOOLEAN); status = STATUS_SUCCESS; } @@ -796,7 +796,7 @@ otLwfIoCtl_otEnergyScan( uint32_t aScanChannels = *(uint32_t*)InBuffer; uint16_t aScanDuration = *(uint16_t*)(InBuffer + sizeof(uint32_t)); status = ThreadErrorToNtstatus( - otEnergyScan( + otLinkEnergyScan( pFilter->otCtx, aScanChannels, aScanDuration, @@ -807,7 +807,7 @@ otLwfIoCtl_otEnergyScan( } else if (*OutBufferLength >= sizeof(BOOLEAN)) { - *(BOOLEAN*)OutBuffer = otIsEnergyScanInProgress(pFilter->otCtx) ? TRUE : FALSE; + *(BOOLEAN*)OutBuffer = otLinkIsEnergyScanInProgress(pFilter->otCtx) ? TRUE : FALSE; *OutBufferLength = sizeof(BOOLEAN); status = STATUS_SUCCESS; } @@ -956,12 +956,12 @@ otLwfIoCtl_otChannel( if (InBufferLength >= sizeof(uint8_t)) { - status = ThreadErrorToNtstatus(otSetChannel(pFilter->otCtx, *(uint8_t*)InBuffer)); + status = ThreadErrorToNtstatus(otLinkSetChannel(pFilter->otCtx, *(uint8_t*)InBuffer)); *OutBufferLength = 0; } else if (*OutBufferLength >= sizeof(uint8_t)) { - *(uint8_t*)OutBuffer = otGetChannel(pFilter->otCtx); + *(uint8_t*)OutBuffer = otLinkGetChannel(pFilter->otCtx); *OutBufferLength = sizeof(uint8_t); status = STATUS_SUCCESS; } @@ -1153,12 +1153,12 @@ otLwfIoCtl_otExtendedAddress( if (InBufferLength >= sizeof(otExtAddress)) { - status = ThreadErrorToNtstatus(otSetExtendedAddress(pFilter->otCtx, (otExtAddress*)InBuffer)); + status = ThreadErrorToNtstatus(otLinkSetExtendedAddress(pFilter->otCtx, (otExtAddress*)InBuffer)); *OutBufferLength = 0; } else if (*OutBufferLength >= sizeof(otExtAddress)) { - memcpy(OutBuffer, otGetExtendedAddress(pFilter->otCtx), sizeof(otExtAddress)); + memcpy(OutBuffer, otLinkGetExtendedAddress(pFilter->otCtx), sizeof(otExtAddress)); *OutBufferLength = sizeof(otExtAddress); status = STATUS_SUCCESS; } @@ -1360,7 +1360,7 @@ otLwfIoCtl_otFactoryAssignedIeeeEui64( if (*OutBufferLength >= sizeof(otExtAddress)) { - otGetFactoryAssignedIeeeEui64(pFilter->otCtx, (otExtAddress*)OutBuffer); + otLinkGetFactoryAssignedIeeeEui64(pFilter->otCtx, (otExtAddress*)OutBuffer); *OutBufferLength = sizeof(otExtAddress); status = STATUS_SUCCESS; } @@ -1391,7 +1391,7 @@ otLwfIoCtl_otHashMacAddress( if (*OutBufferLength >= sizeof(otExtAddress)) { - otGetHashMacAddress(pFilter->otCtx, (otExtAddress*)OutBuffer); + otLinkGetJoinerId(pFilter->otCtx, (otExtAddress*)OutBuffer); *OutBufferLength = sizeof(otExtAddress); status = STATUS_SUCCESS; } @@ -2042,12 +2042,12 @@ otLwfIoCtl_otPanId( if (InBufferLength >= sizeof(otPanId)) { - status = ThreadErrorToNtstatus(otSetPanId(pFilter->otCtx, *(otPanId*)InBuffer)); + status = ThreadErrorToNtstatus(otLinkSetPanId(pFilter->otCtx, *(otPanId*)InBuffer)); *OutBufferLength = 0; } else if (*OutBufferLength >= sizeof(otPanId)) { - *(otPanId*)OutBuffer = otGetPanId(pFilter->otCtx); + *(otPanId*)OutBuffer = otLinkGetPanId(pFilter->otCtx); *OutBufferLength = sizeof(otPanId); status = STATUS_SUCCESS; } @@ -2242,7 +2242,7 @@ otLwfIoCtl_otShortAddress( if (*OutBufferLength >= sizeof(otShortAddress)) { - *(otShortAddress*)OutBuffer = otGetShortAddress(pFilter->otCtx); + *(otShortAddress*)OutBuffer = otLinkGetShortAddress(pFilter->otCtx); *OutBufferLength = sizeof(otShortAddress); status = STATUS_SUCCESS; } @@ -3346,20 +3346,13 @@ otLwfIoCtl_otMacWhitelistEnabled( if (InBufferLength >= sizeof(BOOLEAN)) { BOOLEAN aEnabled = *(BOOLEAN*)InBuffer; - if (aEnabled) - { - otEnableMacWhitelist(pFilter->otCtx); - } - else - { - otDisableMacWhitelist(pFilter->otCtx); - } + otLinkSetWhitelistEnabled(pFilter->otCtx, aEnabled); status = STATUS_SUCCESS; *OutBufferLength = 0; } else if (*OutBufferLength >= sizeof(BOOLEAN)) { - *(BOOLEAN*)OutBuffer = otIsMacWhitelistEnabled(pFilter->otCtx) ? TRUE : FALSE; + *(BOOLEAN*)OutBuffer = otLinkIsWhitelistEnabled(pFilter->otCtx) ? TRUE : FALSE; status = STATUS_SUCCESS; *OutBufferLength = sizeof(BOOLEAN); } @@ -3456,11 +3449,11 @@ otLwfIoCtl_otAddMacWhitelist( if (InBufferLength >= sizeof(otExtAddress) + sizeof(int8_t)) { int8_t aRssi = *(int8_t*)(InBuffer + sizeof(otExtAddress)); - status = ThreadErrorToNtstatus(otAddMacWhitelistRssi(pFilter->otCtx, (uint8_t*)InBuffer, aRssi)); + status = ThreadErrorToNtstatus(otLinkAddWhitelistRssi(pFilter->otCtx, (uint8_t*)InBuffer, aRssi)); } else if (InBufferLength >= sizeof(otExtAddress)) { - status = ThreadErrorToNtstatus(otAddMacWhitelist(pFilter->otCtx, (uint8_t*)InBuffer)); + status = ThreadErrorToNtstatus(otLinkAddWhitelist(pFilter->otCtx, (uint8_t*)InBuffer)); } return status; @@ -3526,7 +3519,7 @@ otLwfIoCtl_otRemoveMacWhitelist( if (InBufferLength >= sizeof(otExtAddress)) { - otRemoveMacWhitelist(pFilter->otCtx, (uint8_t*)InBuffer); + otLinkRemoveWhitelist(pFilter->otCtx, (uint8_t*)InBuffer); status = STATUS_SUCCESS; } @@ -3583,7 +3576,7 @@ otLwfIoCtl_otMacWhitelistEntry( *OutBufferLength >= sizeof(otMacWhitelistEntry)) { status = ThreadErrorToNtstatus( - otGetMacWhitelistEntry( + otLinkGetWhitelistEntry( pFilter->otCtx, *(uint8_t*)InBuffer, (otMacWhitelistEntry*)OutBuffer) @@ -3617,7 +3610,7 @@ otLwfIoCtl_otClearMacWhitelist( UNREFERENCED_PARAMETER(OutBuffer); *OutBufferLength = 0; - otClearMacWhitelist(pFilter->otCtx); + otLinkClearWhitelist(pFilter->otCtx); return status; } @@ -4541,20 +4534,13 @@ otLwfIoCtl_otMacBlacklistEnabled( if (InBufferLength >= sizeof(BOOLEAN)) { BOOLEAN aEnabled = *(BOOLEAN*)InBuffer; - if (aEnabled) - { - otEnableMacBlacklist(pFilter->otCtx); - } - else - { - otDisableMacBlacklist(pFilter->otCtx); - } + otLinkSetBlacklistEnabled(pFilter->otCtx, aEnabled); status = STATUS_SUCCESS; *OutBufferLength = 0; } else if (*OutBufferLength >= sizeof(BOOLEAN)) { - *(BOOLEAN*)OutBuffer = otIsMacBlacklistEnabled(pFilter->otCtx) ? TRUE : FALSE; + *(BOOLEAN*)OutBuffer = otLinkIsBlacklistEnabled(pFilter->otCtx) ? TRUE : FALSE; status = STATUS_SUCCESS; *OutBufferLength = sizeof(BOOLEAN); } @@ -4585,7 +4571,7 @@ otLwfIoCtl_otAddMacBlacklist( if (InBufferLength >= sizeof(otExtAddress)) { - status = ThreadErrorToNtstatus(otAddMacBlacklist(pFilter->otCtx, (uint8_t*)InBuffer)); + status = ThreadErrorToNtstatus(otLinkAddBlacklist(pFilter->otCtx, (uint8_t*)InBuffer)); } return status; @@ -4610,7 +4596,7 @@ otLwfIoCtl_otRemoveMacBlacklist( if (InBufferLength >= sizeof(otExtAddress)) { - otRemoveMacBlacklist(pFilter->otCtx, (uint8_t*)InBuffer); + otLinkRemoveBlacklist(pFilter->otCtx, (uint8_t*)InBuffer); status = STATUS_SUCCESS; } @@ -4635,7 +4621,7 @@ otLwfIoCtl_otMacBlacklistEntry( *OutBufferLength >= sizeof(otMacBlacklistEntry)) { status = ThreadErrorToNtstatus( - otGetMacBlacklistEntry( + otLinkGetBlacklistEntry( pFilter->otCtx, *(uint8_t*)InBuffer, (otMacBlacklistEntry*)OutBuffer) @@ -4669,7 +4655,7 @@ otLwfIoCtl_otClearMacBlacklist( UNREFERENCED_PARAMETER(OutBuffer); *OutBufferLength = 0; - otClearMacBlacklist(pFilter->otCtx); + otLinkClearBlacklist(pFilter->otCtx); return status; } @@ -4690,13 +4676,13 @@ otLwfIoCtl_otMaxTransmitPower( if (InBufferLength >= sizeof(int8_t)) { - otSetMaxTransmitPower(pFilter->otCtx, *(int8_t*)InBuffer); + otLinkSetMaxTransmitPower(pFilter->otCtx, *(int8_t*)InBuffer); status = STATUS_SUCCESS; *OutBufferLength = 0; } else if (*OutBufferLength >= sizeof(int8_t)) { - *(int8_t*)OutBuffer = otGetMaxTransmitPower(pFilter->otCtx); + *(int8_t*)OutBuffer = otLinkGetMaxTransmitPower(pFilter->otCtx); *OutBufferLength = sizeof(int8_t); status = STATUS_SUCCESS; } @@ -4765,13 +4751,13 @@ otLwfIoCtl_otPollPeriod( if (InBufferLength >= sizeof(uint32_t)) { - otSetPollPeriod(pFilter->otCtx, *(uint32_t*)InBuffer); + otLinkSetPollPeriod(pFilter->otCtx, *(uint32_t*)InBuffer); status = STATUS_SUCCESS; *OutBufferLength = 0; } else if (*OutBufferLength >= sizeof(uint32_t)) { - *(uint32_t*)OutBuffer = otGetPollPeriod(pFilter->otCtx); + *(uint32_t*)OutBuffer = otLinkGetPollPeriod(pFilter->otCtx); *OutBufferLength = sizeof(uint32_t); status = STATUS_SUCCESS; } @@ -4833,7 +4819,7 @@ otLwfIoCtl_otAssignLinkQuality( if (InBufferLength >= sizeof(otExtAddress) + sizeof(uint8_t)) { - otSetAssignLinkQuality( + otLinkSetAssignLinkQuality( pFilter->otCtx, (uint8_t*)InBuffer, *(uint8_t*)(InBuffer + sizeof(otExtAddress))); @@ -4844,7 +4830,7 @@ otLwfIoCtl_otAssignLinkQuality( *OutBufferLength >= sizeof(uint8_t)) { status = ThreadErrorToNtstatus( - otGetAssignLinkQuality( + otLinkGetAssignLinkQuality( pFilter->otCtx, (uint8_t*)InBuffer, (uint8_t*)OutBuffer) @@ -5075,7 +5061,7 @@ otLwfIoCtl_otMacCounters( if (*OutBufferLength >= sizeof(otMacCounters)) { - memcpy_s(OutBuffer, *OutBufferLength, otGetMacCounters(pFilter->otCtx), sizeof(otMacCounters)); + memcpy_s(OutBuffer, *OutBufferLength, otLinkGetCounters(pFilter->otCtx), sizeof(otMacCounters)); *OutBufferLength = sizeof(otMacCounters); status = STATUS_SUCCESS; } @@ -5898,7 +5884,7 @@ otLwfIoCtl_otSendPendingSet( _IRQL_requires_max_(PASSIVE_LEVEL) NTSTATUS -otLwfIoCtl_otCommissionerSendMgmtGet( +otLwfIoCtl_otSendMgmtCommissionerGet( _In_ PMS_FILTER pFilter, _In_reads_bytes_(InBufferLength) PUCHAR InBuffer, @@ -5934,7 +5920,7 @@ otLwfIoCtl_otCommissionerSendMgmtGet( _IRQL_requires_max_(PASSIVE_LEVEL) NTSTATUS -otLwfIoCtl_otCommissionerSendMgmtSet( +otLwfIoCtl_otSendMgmtCommissionerSet( _In_ PMS_FILTER pFilter, _In_reads_bytes_(InBufferLength) PUCHAR InBuffer, diff --git a/examples/drivers/windows/otLwf/iocontrol.h b/examples/drivers/windows/otLwf/iocontrol.h index f1ffd875e..2b3d58ee2 100644 --- a/examples/drivers/windows/otLwf/iocontrol.h +++ b/examples/drivers/windows/otLwf/iocontrol.h @@ -220,8 +220,8 @@ DECL_IOCTL_FUNC(otSendActiveGet); DECL_IOCTL_FUNC(otSendActiveSet); DECL_IOCTL_FUNC(otSendPendingGet); DECL_IOCTL_FUNC(otSendPendingSet); -DECL_IOCTL_FUNC(otCommissionerSendMgmtGet); -DECL_IOCTL_FUNC(otCommissionerSendMgmtSet); +DECL_IOCTL_FUNC(otSendMgmtCommissionerGet); +DECL_IOCTL_FUNC(otSendMgmtCommissionerSet); DECL_IOCTL_FUNC_WITH_TUN2(otKeySwitchGuardtime); DECL_IOCTL_FUNC(otFactoryReset); DECL_IOCTL_FUNC(otThreadAutoStart); diff --git a/examples/drivers/windows/otLwf/precomp.c b/examples/drivers/windows/otLwf/precomp.c index 5944cf515..ceeb0d649 100644 --- a/examples/drivers/windows/otLwf/precomp.c +++ b/examples/drivers/windows/otLwf/precomp.c @@ -1 +1 @@ -#include "precomp.h" \ No newline at end of file +#include "precomp.h" diff --git a/examples/drivers/windows/otNodeApi/otNodeApi.cpp b/examples/drivers/windows/otNodeApi/otNodeApi.cpp index 0fa581c10..ae7906bdc 100644 --- a/examples/drivers/windows/otNodeApi/otNodeApi.cpp +++ b/examples/drivers/windows/otNodeApi/otNodeApi.cpp @@ -1068,7 +1068,7 @@ OTNODEAPI int32_t OTCALL otNodeClearWhitelist(otNode* aNode) otLogFuncEntryMsg("[%d]", aNode->mId); printf("%d: whitelist clear\r\n", aNode->mId); - otClearMacWhitelist(aNode->mInstance); + otLinkClearWhitelist(aNode->mInstance); otLogFuncExit(); return 0; } @@ -1078,7 +1078,7 @@ OTNODEAPI int32_t OTCALL otNodeEnableWhitelist(otNode* aNode) otLogFuncEntryMsg("[%d]", aNode->mId); printf("%d: whitelist enable\r\n", aNode->mId); - otEnableMacWhitelist(aNode->mInstance); + otLinkSetWhitelistEnabled(aNode->mInstance, true); otLogFuncExit(); return 0; } @@ -1088,7 +1088,7 @@ OTNODEAPI int32_t OTCALL otNodeDisableWhitelist(otNode* aNode) otLogFuncEntryMsg("[%d]", aNode->mId); printf("%d: whitelist disable\r\n", aNode->mId); - otDisableMacWhitelist(aNode->mInstance); + otLinkSetWhitelistEnabled(aNode->mInstance, false); otLogFuncExit(); return 0; } @@ -1107,11 +1107,11 @@ OTNODEAPI int32_t OTCALL otNodeAddWhitelist(otNode* aNode, const char *aExtAddr, ThreadError error; if (aRssi == 0) { - error = otAddMacWhitelist(aNode->mInstance, extAddr); + error = otLinkAddWhitelist(aNode->mInstance, extAddr); } else { - error = otAddMacWhitelistRssi(aNode->mInstance, extAddr, aRssi); + error = otLinkAddWhitelistRssi(aNode->mInstance, extAddr, aRssi); } otLogFuncExit(); return error; @@ -1126,7 +1126,7 @@ OTNODEAPI int32_t OTCALL otNodeRemoveWhitelist(otNode* aNode, const char *aExtAd if (Hex2Bin(aExtAddr, extAddr, sizeof(extAddr)) != sizeof(extAddr)) return kThreadError_InvalidArgs; - otRemoveMacWhitelist(aNode->mInstance, extAddr); + otLinkRemoveWhitelist(aNode->mInstance, extAddr); otLogFuncExit(); return 0; } @@ -1144,7 +1144,7 @@ OTNODEAPI const char* OTCALL otNodeGetHashMacAddress(otNode* aNode) { otLogFuncEntryMsg("[%d]", aNode->mId); otExtAddress aHashMacAddress = {}; - otGetHashMacAddress(aNode->mInstance, &aHashMacAddress); + otLinkGetJoinerId(aNode->mInstance, &aHashMacAddress); char* str = (char*)malloc(18); if (str != nullptr) { @@ -1160,7 +1160,7 @@ OTNODEAPI const char* OTCALL otNodeGetHashMacAddress(otNode* aNode) OTNODEAPI const char* OTCALL otNodeGetAddr64(otNode* aNode) { otLogFuncEntryMsg("[%d]", aNode->mId); - auto extAddr = otGetExtendedAddress(aNode->mInstance); + auto extAddr = otLinkGetExtendedAddress(aNode->mInstance); char* str = (char*)malloc(18); if (str != nullptr) { @@ -1178,7 +1178,7 @@ OTNODEAPI int32_t OTCALL otNodeSetChannel(otNode* aNode, uint8_t aChannel) { otLogFuncEntryMsg("[%d]", aNode->mId); printf("%d: channel %d\r\n", aNode->mId, aChannel); - auto result = otSetChannel(aNode->mInstance, aChannel); + auto result = otLinkSetChannel(aNode->mInstance, aChannel); otLogFuncExit(); return result; } @@ -1186,7 +1186,7 @@ OTNODEAPI int32_t OTCALL otNodeSetChannel(otNode* aNode, uint8_t aChannel) OTNODEAPI uint8_t OTCALL otNodeGetChannel(otNode* aNode) { otLogFuncEntryMsg("[%d]", aNode->mId); - auto result = otGetChannel(aNode->mInstance); + auto result = otLinkGetChannel(aNode->mInstance); printf("%d: channel\r\n%d\r\n", aNode->mId, result); otLogFuncExit(); return result; @@ -1287,7 +1287,7 @@ OTNODEAPI const char* OTCALL otNodeGetNetworkName(otNode* aNode) OTNODEAPI uint16_t OTCALL otNodeGetPanId(otNode* aNode) { otLogFuncEntryMsg("[%d]", aNode->mId); - auto result = otGetPanId(aNode->mInstance); + auto result = otLinkGetPanId(aNode->mInstance); printf("%d: panid\r\n0x%04x\r\n", aNode->mId, result); otLogFuncExit(); return result; @@ -1297,7 +1297,7 @@ OTNODEAPI int32_t OTCALL otNodeSetPanId(otNode* aNode, uint16_t aPanId) { otLogFuncEntryMsg("[%d]", aNode->mId); printf("%d: panid 0x%04x\r\n", aNode->mId, aPanId); - auto result = otSetPanId(aNode->mInstance, aPanId); + auto result = otLinkSetPanId(aNode->mInstance, aPanId); otLogFuncExit(); return result; } diff --git a/include/openthread-types.h b/include/openthread-types.h index 5680b4b0f..377f96693 100644 --- a/include/openthread-types.h +++ b/include/openthread-types.h @@ -1093,26 +1093,6 @@ typedef void (OTCALL *otDeviceAvailabilityChangedCallback)(bool aAdded, const GU #endif // OTDLL -/** - * This function pointer is called during an IEEE 802.15.4 Active Scan when an IEEE 802.15.4 Beacon is received or - * the scan completes. - * - * @param[in] aResult A valid pointer to the beacon information or NULL when the active scan completes. - * @param[in] aContext A pointer to application-specific context. - * - */ -typedef void (OTCALL *otHandleActiveScanResult)(otActiveScanResult *aResult, void *aContext); - -/** - * 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 (OTCALL *otHandleEnergyScanResult)(otEnergyScanResult *aResult, void *aContext); - /** * This function pointer is called to notify certain configuration or state changes within OpenThread. * diff --git a/include/openthread.h b/include/openthread.h index 3cbd3832e..6045ddf66 100644 --- a/include/openthread.h +++ b/include/openthread.h @@ -39,6 +39,7 @@ #include "openthread/crypto.h" #include "openthread/ip6.h" +#include "openthread/link.h" #include "openthread/message.h" #include "openthread/tasklet.h" @@ -315,57 +316,6 @@ OTAPI bool OTCALL otThreadGetAutoStart(otInstance *aInstance); */ OTAPI bool OTCALL otIsSingleton(otInstance *aInstance); -/** - * This function starts an IEEE 802.15.4 Active Scan - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @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 called on receiving a beacon or scan completes. - * @param[in] aCallbackContext A pointer to application-specific context. - * - * @retval kThreadError_None Accepted the Active Scan request. - * @retval kThreadError_Busy Already performing an Active Scan. - * - */ -OTAPI ThreadError OTCALL otActiveScan(otInstance *aInstance, uint32_t aScanChannels, uint16_t aScanDuration, - otHandleActiveScanResult aCallback, void *aCallbackContext); - -/** - * This function indicates whether or not an IEEE 802.15.4 Active Scan is currently in progress. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @returns true if an IEEE 802.15.4 Active Scan is in progress, false otherwise. - */ -OTAPI bool OTCALL otIsActiveScanInProgress(otInstance *aInstance); - -/** - * This function starts an IEEE 802.15.4 Energy Scan - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @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 Could not start the energy scan. - * - */ -OTAPI ThreadError OTCALL otEnergyScan(otInstance *aInstance, 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. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @returns true if an IEEE 802.15.4 Energy Scan is in progress, false otherwise. - * - */ -OTAPI bool OTCALL otIsEnergyScanInProgress(otInstance *aInstance); - /** * This function starts a Thread Discovery scan. * @@ -392,19 +342,6 @@ OTAPI ThreadError OTCALL otDiscover(otInstance *aInstance, uint32_t aScanChannel */ OTAPI bool OTCALL otIsDiscoverInProgress(otInstance *aInstance); -/** - * This function enqueues an IEEE 802.15.4 Data Request message for transmission. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @retval kThreadError_None Successfully enqueued an IEEE 802.15.4 Data Request message. - * @retval kThreadError_Already An IEEE 802.15.4 Data Request message is already enqueued. - * @retval kThreadError_InvalidState Device is not in rx-off-when-idle mode. - * @retval kThreadError_NoBufs Insufficient message buffers available. - * - */ -OTAPI ThreadError OTCALL otSendMacDataRequest(otInstance *aInstance); - /** * @} * @@ -430,30 +367,6 @@ OTAPI ThreadError OTCALL otSendMacDataRequest(otInstance *aInstance); * */ -/** - * Get the IEEE 802.15.4 channel. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @returns The IEEE 802.15.4 channel. - * - * @sa otSetChannel - */ -OTAPI uint8_t OTCALL otGetChannel(otInstance *aInstance); - -/** - * Set the IEEE 802.15.4 channel - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aChannel The IEEE 802.15.4 channel. - * - * @retval kThreadError_None Successfully set the channel. - * @retval kThreadError_InvalidArgs If @p aChannel is not in the range [11, 26]. - * - * @sa otGetChannel - */ -OTAPI ThreadError OTCALL otSetChannel(otInstance *aInstance, uint8_t aChannel); - /** * Set minimal delay timer. * @@ -524,27 +437,6 @@ OTAPI uint32_t OTCALL otGetChildTimeout(otInstance *aInstance); */ OTAPI void OTCALL otSetChildTimeout(otInstance *aInstance, uint32_t aTimeout); -/** - * Get the IEEE 802.15.4 Extended Address. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @returns A pointer to the IEEE 802.15.4 Extended Address. - */ -OTAPI const uint8_t *OTCALL otGetExtendedAddress(otInstance *aInstance); - -/** - * This function sets the IEEE 802.15.4 Extended Address. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aExtendedAddress A pointer to the IEEE 802.15.4 Extended Address. - * - * @retval kThreadError_None Successfully set the IEEE 802.15.4 Extended Address. - * @retval kThreadError_InvalidArgs @p aExtendedAddress was NULL. - * - */ -OTAPI ThreadError OTCALL otSetExtendedAddress(otInstance *aInstance, const otExtAddress *aExtendedAddress); - /** * Get the IEEE 802.15.4 Extended PAN ID. * @@ -566,27 +458,6 @@ OTAPI const uint8_t *OTCALL otGetExtendedPanId(otInstance *aInstance); */ OTAPI void OTCALL otSetExtendedPanId(otInstance *aInstance, const uint8_t *aExtendedPanId); -/** - * Get the factory-assigned IEEE EUI-64. - * - * @param[in] aInstance A pointer to the OpenThread instance. - * @param[out] aEui64 A pointer to where the factory-assigned IEEE EUI-64 is placed. - * - */ -OTAPI void OTCALL otGetFactoryAssignedIeeeEui64(otInstance *aInstance, otExtAddress *aEui64); - -/** - * Get the Hash Mac Address. - * - * Hash Mac Address is the first 64 bits of the result of computing SHA-256 over factory-assigned - * IEEE EUI-64, which is used as IEEE 802.15.4 Extended Address during commissioning process. - * - * @param[in] aInstance A pointer to the OpenThread instance. - * @param[out] aHashMacAddress A pointer to where the Hash Mac Address is placed. - * - */ -OTAPI void OTCALL otGetHashMacAddress(otInstance *aInstance, otExtAddress *aHashMacAddress); - /** * This function returns a pointer to the Leader's RLOC. * @@ -650,25 +521,6 @@ OTAPI const uint8_t *OTCALL otGetMasterKey(otInstance *aInstance, uint8_t *aKeyL */ OTAPI ThreadError OTCALL otSetMasterKey(otInstance *aInstance, const uint8_t *aKey, uint8_t aKeyLength); -/** - * This function returns the maximum transmit power setting in dBm. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @returns The maximum transmit power setting. - * - */ -OTAPI int8_t OTCALL otGetMaxTransmitPower(otInstance *aInstance); - -/** - * This function sets the maximum transmit power in dBm. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aPower The maximum transmit power in dBm. - * - */ -OTAPI void OTCALL otSetMaxTransmitPower(otInstance *aInstance, int8_t aPower); - /** * This function returns a pointer to the Mesh Local EID. * @@ -763,30 +615,6 @@ OTAPI ThreadError OTCALL otSetNetworkName(otInstance *aInstance, const char *aNe OTAPI ThreadError OTCALL otGetNextOnMeshPrefix(otInstance *aInstance, bool aLocal, otNetworkDataIterator *aIterator, otBorderRouterConfig *aConfig); -/** - * Get the IEEE 802.15.4 PAN ID. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @returns The IEEE 802.15.4 PAN ID. - * - * @sa otSetPanId - */ -OTAPI otPanId OTCALL otGetPanId(otInstance *aInstance); - -/** - * Set the IEEE 802.15.4 PAN ID. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aPanId The IEEE 802.15.4 PAN ID. - * - * @retval kThreadErrorNone Successfully set the PAN ID. - * @retval kThreadErrorInvalidArgs If aPanId is not in the range [0, 65534]. - * - * @sa otGetPanId - */ -OTAPI ThreadError OTCALL otSetPanId(otInstance *aInstance, otPanId aPanId); - /** * This function indicates whether or not the Router Role is enabled. * @@ -807,15 +635,6 @@ OTAPI bool OTCALL otIsRouterRoleEnabled(otInstance *aInstance); */ OTAPI void OTCALL otSetRouterRoleEnabled(otInstance *aInstance, bool aEnabled); -/** - * Get the IEEE 802.15.4 Short Address. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @returns A pointer to the IEEE 802.15.4 Short Address. - */ -OTAPI otShortAddress OTCALL otGetShortAddress(otInstance *aInstance); - /** * This function registers a callback to indicate when certain configuration or state changes within OpenThread. * @@ -961,30 +780,6 @@ OTAPI ThreadError OTCALL otSendPendingGet(otInstance *aInstance, const uint8_t * OTAPI ThreadError OTCALL otSendPendingSet(otInstance *aInstance, const otOperationalDataset *aDataset, const uint8_t *aTlvs, uint8_t aLength); -/** - * Get the data poll period of sleepy end device. - * - * @note This function updates only poll period of sleepy end device. To update child timeout the function - * otGetChildTimeout() shall be called. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @returns The data poll period of sleepy end device. - * - * @sa otSetPollPeriod - */ -OTAPI uint32_t OTCALL otGetPollPeriod(otInstance *aInstance); - -/** - * Set the data poll period for sleepy end device. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aPollPeriod data poll period. - * - * @sa otGetPollPeriod - */ -OTAPI void OTCALL otSetPollPeriod(otInstance *aInstance, uint32_t aPollPeriod); - /** * Set the preferred Router Id. * @@ -1294,131 +1089,6 @@ OTAPI void OTCALL otSetRouterUpgradeThreshold(otInstance *aInstance, uint8_t aTh */ OTAPI ThreadError OTCALL otReleaseRouterId(otInstance *aInstance, uint8_t aRouterId); -/** - * Add an IEEE 802.15.4 Extended Address to the MAC whitelist. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. - * - * @retval kThreadErrorNone Successfully added to the MAC whitelist. - * @retval kThreadErrorNoBufs No buffers available for a new MAC whitelist entry. - * - * @sa otAddMacWhitelistRssi - * @sa otRemoveMacWhitelist - * @sa otClearMacWhitelist - * @sa otGetMacWhitelistEntry - * @sa otDisableMacWhitelist - * @sa otEnableMacWhitelist - */ -OTAPI ThreadError OTCALL otAddMacWhitelist(otInstance *aInstance, const uint8_t *aExtAddr); - -/** - * Add an IEEE 802.15.4 Extended Address to the MAC whitelist and fix the RSSI value. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. - * @param[in] aRssi The RSSI in dBm to use when receiving messages from aExtAddr. - * - * @retval kThreadErrorNone Successfully added to the MAC whitelist. - * @retval kThreadErrorNoBufs No buffers available for a new MAC whitelist entry. - * - * @sa otAddMacWhitelistRssi - * @sa otRemoveMacWhitelist - * @sa otClearMacWhitelist - * @sa otGetMacWhitelistEntry - * @sa otDisableMacWhitelist - * @sa otEnableMacWhitelist - */ -OTAPI ThreadError OTCALL otAddMacWhitelistRssi(otInstance *aInstance, const uint8_t *aExtAddr, int8_t aRssi); - -/** - * Remove an IEEE 802.15.4 Extended Address from the MAC whitelist. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. - * - * @sa otAddMacWhitelist - * @sa otAddMacWhitelistRssi - * @sa otClearMacWhitelist - * @sa otGetMacWhitelistEntry - * @sa otDisableMacWhitelist - * @sa otEnableMacWhitelist - */ -OTAPI void OTCALL otRemoveMacWhitelist(otInstance *aInstance, const uint8_t *aExtAddr); - -/** - * This function gets a MAC whitelist entry. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aIndex An index into the MAC whitelist table. - * @param[out] aEntry A pointer to where the information is placed. - * - * @retval kThreadError_None Successfully retrieved the MAC whitelist entry. - * @retval kThreadError_InvalidArgs @p aIndex is out of bounds or @p aEntry is NULL. - * - */ -OTAPI ThreadError OTCALL otGetMacWhitelistEntry(otInstance *aInstance, uint8_t aIndex, otMacWhitelistEntry *aEntry); - -/** - * Remove all entries from the MAC whitelist. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @sa otAddMacWhitelist - * @sa otAddMacWhitelistRssi - * @sa otRemoveMacWhitelist - * @sa otGetMacWhitelistEntry - * @sa otDisableMacWhitelist - * @sa otEnableMacWhitelist - */ -OTAPI void OTCALL otClearMacWhitelist(otInstance *aInstance); - -/** - * Disable MAC whitelist filtering. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @sa otAddMacWhitelist - * @sa otAddMacWhitelistRssi - * @sa otRemoveMacWhitelist - * @sa otClearMacWhitelist - * @sa otGetMacWhitelistEntry - * @sa otEnableMacWhitelist - */ -OTAPI void OTCALL otDisableMacWhitelist(otInstance *aInstance); - -/** - * Enable MAC whitelist filtering. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @sa otAddMacWhitelist - * @sa otAddMacWhitelistRssi - * @sa otRemoveMacWhitelist - * @sa otClearMacWhitelist - * @sa otGetMacWhitelistEntry - * @sa otDisableMacWhitelist - */ -OTAPI void OTCALL otEnableMacWhitelist(otInstance *aInstance); - -/** - * This function indicates whether or not the MAC whitelist is enabled. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @returns TRUE if the MAC whitelist is enabled, FALSE otherwise. - * - * @sa otAddMacWhitelist - * @sa otAddMacWhitelistRssi - * @sa otRemoveMacWhitelist - * @sa otClearMacWhitelist - * @sa otGetMacWhitelistEntry - * @sa otDisableMacWhitelist - * @sa otEnableMacWhitelist - * - */ -OTAPI bool OTCALL otIsMacWhitelistEnabled(otInstance *aInstance); - /** * Detach from the Thread network. * @@ -1460,132 +1130,6 @@ OTAPI ThreadError OTCALL otBecomeRouter(otInstance *aInstance); */ OTAPI ThreadError OTCALL otBecomeLeader(otInstance *aInstance); -/** - * Add an IEEE 802.15.4 Extended Address to the MAC blacklist. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. - * - * @retval kThreadErrorNone Successfully added to the MAC blacklist. - * @retval kThreadErrorNoBufs No buffers available for a new MAC blacklist entry. - * - * @sa otRemoveMacBlacklist - * @sa otClearMacBlacklist - * @sa otGetMacBlacklistEntry - * @sa otDisableMacBlacklist - * @sa otEnableMacBlacklist - */ -OTAPI ThreadError OTCALL otAddMacBlacklist(otInstance *aInstance, const uint8_t *aExtAddr); - -/** - * Remove an IEEE 802.15.4 Extended Address from the MAC blacklist. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. - * - * @sa otAddMacBlacklist - * @sa otClearMacBlacklist - * @sa otGetMacBlacklistEntry - * @sa otDisableMacBlacklist - * @sa otEnableMacBlacklist - */ -OTAPI void OTCALL otRemoveMacBlacklist(otInstance *aInstance, const uint8_t *aExtAddr); - -/** - * This function gets a MAC Blacklist entry. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aIndex An index into the MAC Blacklist table. - * @param[out] aEntry A pointer to where the information is placed. - * - * @retval kThreadError_None Successfully retrieved the MAC Blacklist entry. - * @retval kThreadError_InvalidArgs @p aIndex is out of bounds or @p aEntry is NULL. - * - */ -OTAPI ThreadError OTCALL otGetMacBlacklistEntry(otInstance *aInstance, uint8_t aIndex, otMacBlacklistEntry *aEntry); - -/** - * Remove all entries from the MAC Blacklist. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @sa otAddMacBlacklist - * @sa otRemoveMacBlacklist - * @sa otGetMacBlacklistEntry - * @sa otDisableMacBlacklist - * @sa otEnableMacBlacklist - */ -OTAPI void OTCALL otClearMacBlacklist(otInstance *aInstance); - -/** - * Disable MAC blacklist filtering. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * - * @sa otAddMacBlacklist - * @sa otRemoveMacBlacklist - * @sa otClearMacBlacklist - * @sa otGetMacBlacklistEntry - * @sa otEnableMacBlacklist - */ -OTAPI void OTCALL otDisableMacBlacklist(otInstance *aInstance); - -/** - * Enable MAC Blacklist filtering. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @sa otAddMacBlacklist - * @sa otRemoveMacBlacklist - * @sa otClearMacBlacklist - * @sa otGetMacBlacklistEntry - * @sa otDisableMacBlacklist - */ -OTAPI void OTCALL otEnableMacBlacklist(otInstance *aInstance); - -/** - * This function indicates whether or not the MAC Blacklist is enabled. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @returns TRUE if the MAC Blacklist is enabled, FALSE otherwise. - * - * @sa otAddMacBlacklist - * @sa otRemoveMacBlacklist - * @sa otClearMacBlacklist - * @sa otGetMacBlacklistEntry - * @sa otDisableMacBlacklist - * @sa otEnableMacBlacklist - * - */ -OTAPI bool OTCALL otIsMacBlacklistEnabled(otInstance *aInstance); - -/** - * Get the assigned link quality which is on the link to a given extended address. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. - * @param[in] aLinkQuality A pointer to the assigned link quality. - * - * @retval kThreadError_None Successfully retrieved the link quality to aLinkQuality. - * @retval kThreadError_InvalidState No attached child matches with a given extended address. - * - * @sa otSetAssignLinkQuality - */ -OTAPI ThreadError OTCALL otGetAssignLinkQuality(otInstance *aInstance, const uint8_t *aExtAddr, uint8_t *aLinkQuality); - -/** - * Set the link quality which is on the link to a given extended address. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. - * @param[in] aLinkQuality The link quality to be set on the link. - * - * @sa otGetAssignLinkQuality - */ -OTAPI void OTCALL otSetAssignLinkQuality(otInstance *aInstance, const uint8_t *aExtAddr, uint8_t aLinkQuality); - /** * This method triggers a platform reset. * @@ -1888,15 +1432,6 @@ OTAPI ThreadError OTCALL otSendDiagnosticGet(otInstance *aInstance, const otIp6A OTAPI ThreadError OTCALL otSendDiagnosticReset(otInstance *aInstance, const otIp6Address *aDestination, const uint8_t aTlvTypes[], uint8_t aCount); -/** - * Get the MAC layer counters. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @returns A pointer to the MAC layer counters. - */ -OTAPI const otMacCounters *OTCALL otGetMacCounters(otInstance *aInstance); - /** * @} * diff --git a/include/openthread/Makefile.am b/include/openthread/Makefile.am index fe1041b47..355bc1736 100644 --- a/include/openthread/Makefile.am +++ b/include/openthread/Makefile.am @@ -37,6 +37,7 @@ openthread_headers = \ ip6.h \ jam_detection.h \ joiner.h \ + link.h \ message.h \ tasklet.h \ udp.h \ diff --git a/include/openthread/ip6.h b/include/openthread/ip6.h index 9b70a2fc9..cf910da1a 100644 --- a/include/openthread/ip6.h +++ b/include/openthread/ip6.h @@ -42,72 +42,6 @@ extern "C" { #endif -/** - * @addtogroup diags Diagnostics - * - * @brief - * This module includes functions that expose internal state. - * - * @{ - * - */ - -/** - * This function pointer is called when an IEEE 802.15.4 frame is received. - * - * @note This callback is called after FCS processing and @p aFrame may not contain the actual FCS that was received. - * - * @note This callback is called before IEEE 802.15.4 security processing and mSecurityValid in @p aFrame will - * always be false. - * - * @param[in] aFrame A pointer to the received IEEE 802.15.4 frame. - * @param[in] aContext A pointer to application-specific context. - * - */ -typedef void (*otLinkPcapCallback)(const RadioPacket *aFrame, void *aContext); - -/** - * This function registers a callback to provide received raw IEEE 802.15.4 frames. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aPcapCallback A pointer to a function that is called when receiving an IEEE 802.15.4 link frame or - * NULL to disable the callback. - * @param[in] aCallbackContext A pointer to application-specific context. - * - */ -void otSetLinkPcapCallback(otInstance *aInstance, otLinkPcapCallback aPcapCallback, void *aCallbackContext); - -/** - * This function indicates whether or not promiscuous mode is enabled at the link layer. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * - * @retval true Promiscuous mode is enabled. - * @retval false Promiscuous mode is not enabled. - * - */ -bool otIsLinkPromiscuous(otInstance *aInstance); - -/** - * This function enables or disables the link layer promiscuous mode. - * - * @note Promiscuous mode may only be enabled when the Thread interface is disabled. - * - * @param[in] aInstance A pointer to an OpenThread instance. - * @param[in] aPromiscuous true to enable promiscuous mode, or false otherwise. - * - * @retval kThreadError_None Successfully enabled promiscuous mode. - * @retval kThreadError_InvalidState Could not enable promiscuous mode because - * the Thread interface is enabled. - * - */ -ThreadError otSetLinkPromiscuous(otInstance *aInstance, bool aPromiscuous); - -/** - * @} - * - */ - /** * @addtogroup ip6 IPv6 * diff --git a/include/openthread/link.h b/include/openthread/link.h new file mode 100644 index 000000000..db2940779 --- /dev/null +++ b/include/openthread/link.h @@ -0,0 +1,572 @@ +/* + * Copyright (c) 2016, The OpenThread Authors. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * @file + * @brief + * This file defines the OpenThread IEEE 802.15.4 Link Layer API. + */ + +#ifndef OPENTHREAD_LINK_H_ +#define OPENTHREAD_LINK_H_ + +#include "openthread-types.h" +#include "platform/radio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @addtogroup link Link + * + * @brief + * This module includes functions that control link-layer configuration. + * + * @{ + * + */ + +/** + * This function pointer is called during an IEEE 802.15.4 Active Scan when an IEEE 802.15.4 Beacon is received or + * the scan completes. + * + * @param[in] aResult A valid pointer to the beacon information or NULL when the active scan completes. + * @param[in] aContext A pointer to application-specific context. + * + */ +typedef void (OTCALL *otHandleActiveScanResult)(otActiveScanResult *aResult, void *aContext); + +/** + * This function starts an IEEE 802.15.4 Active Scan + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @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 called on receiving a beacon or scan completes. + * @param[in] aCallbackContext A pointer to application-specific context. + * + * @retval kThreadError_None Accepted the Active Scan request. + * @retval kThreadError_Busy Already performing an Active Scan. + * + */ +OTAPI ThreadError OTCALL otLinkActiveScan(otInstance *aInstance, uint32_t aScanChannels, uint16_t aScanDuration, + otHandleActiveScanResult aCallback, void *aCallbackContext); + +/** + * This function indicates whether or not an IEEE 802.15.4 Active Scan is currently in progress. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @returns true if an IEEE 802.15.4 Active Scan is in progress, false otherwise. + */ +OTAPI bool OTCALL otLinkIsActiveScanInProgress(otInstance *aInstance); + +/** + * 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 (OTCALL *otHandleEnergyScanResult)(otEnergyScanResult *aResult, void *aContext); + +/** + * This function starts an IEEE 802.15.4 Energy Scan + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @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 Could not start the energy scan. + * + */ +OTAPI ThreadError OTCALL otLinkEnergyScan(otInstance *aInstance, 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. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @returns true if an IEEE 802.15.4 Energy Scan is in progress, false otherwise. + * + */ +OTAPI bool OTCALL otLinkIsEnergyScanInProgress(otInstance *aInstance); + +/** + * This function enqueues an IEEE 802.15.4 Data Request message for transmission. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @retval kThreadError_None Successfully enqueued an IEEE 802.15.4 Data Request message. + * @retval kThreadError_Already An IEEE 802.15.4 Data Request message is already enqueued. + * @retval kThreadError_InvalidState Device is not in rx-off-when-idle mode. + * @retval kThreadError_NoBufs Insufficient message buffers available. + * + */ +OTAPI ThreadError OTCALL otLinkSendDataRequest(otInstance *aInstance); + +/** + * Get the IEEE 802.15.4 channel. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @returns The IEEE 802.15.4 channel. + * + * @sa otLinkSetChannel + */ +OTAPI uint8_t OTCALL otLinkGetChannel(otInstance *aInstance); + +/** + * Set the IEEE 802.15.4 channel + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aChannel The IEEE 802.15.4 channel. + * + * @retval kThreadErrorNone Successfully set the channel. + * @retval kThreadErrorInvalidArgs If @p aChnanel is not in the range [11, 26]. + * + * @sa otLinkGetChannel + */ +OTAPI ThreadError OTCALL otLinkSetChannel(otInstance *aInstance, uint8_t aChannel); + +/** + * Get the IEEE 802.15.4 Extended Address. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @returns A pointer to the IEEE 802.15.4 Extended Address. + */ +OTAPI const uint8_t *OTCALL otLinkGetExtendedAddress(otInstance *aInstance); + +/** + * This function sets the IEEE 802.15.4 Extended Address. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aExtendedAddress A pointer to the IEEE 802.15.4 Extended Address. + * + * @retval kThreadError_None Successfully set the IEEE 802.15.4 Extended Address. + * @retval kThreadError_InvalidArgs @p aExtendedAddress was NULL. + * + */ +OTAPI ThreadError OTCALL otLinkSetExtendedAddress(otInstance *aInstance, const otExtAddress *aExtendedAddress); + +/** + * Get the factory-assigned IEEE EUI-64. + * + * @param[in] aInstance A pointer to the OpenThread instance. + * @param[out] aEui64 A pointer to where the factory-assigned IEEE EUI-64 is placed. + * + */ +OTAPI void OTCALL otLinkGetFactoryAssignedIeeeEui64(otInstance *aInstance, otExtAddress *aEui64); + +/** + * Get the Joiner ID. + * + * Joiner ID is the first 64 bits of the result of computing SHA-256 over factory-assigned + * IEEE EUI-64, which is used as IEEE 802.15.4 Extended Address during commissioning process. + * + * @param[in] aInstance A pointer to the OpenThread instance. + * @param[out] aHashMacAddress A pointer to where the Hash Mac Address is placed. + * + */ +OTAPI void OTCALL otLinkGetJoinerId(otInstance *aInstance, otExtAddress *aHashMacAddress); + +/** + * This function returns the maximum transmit power setting in dBm. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @returns The maximum transmit power setting. + * + */ +OTAPI int8_t OTCALL otLinkGetMaxTransmitPower(otInstance *aInstance); + +/** + * This function sets the maximum transmit power in dBm. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aPower The maximum transmit power in dBm. + * + */ +OTAPI void OTCALL otLinkSetMaxTransmitPower(otInstance *aInstance, int8_t aPower); + +/** + * Get the IEEE 802.15.4 PAN ID. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @returns The IEEE 802.15.4 PAN ID. + * + * @sa otLinkSetPanId + */ +OTAPI otPanId OTCALL otLinkGetPanId(otInstance *aInstance); + +/** + * Set the IEEE 802.15.4 PAN ID. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aPanId The IEEE 802.15.4 PAN ID. + * + * @retval kThreadErrorNone Successfully set the PAN ID. + * @retval kThreadErrorInvalidArgs If aPanId is not in the range [0, 65534]. + * + * @sa otLinkGetPanId + */ +OTAPI ThreadError OTCALL otLinkSetPanId(otInstance *aInstance, otPanId aPanId); + +/** + * Get the data poll period of sleepy end device. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @returns The data poll period of sleepy end device. + * + * @sa otLinkSetPollPeriod + */ +OTAPI uint32_t OTCALL otLinkGetPollPeriod(otInstance *aInstance); + +/** + * Set the data poll period for sleepy end device. + * + * @note This function updates only poll period of sleepy end device. To update child timeout the function + * otSetChildTimeout() shall be called. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aPollPeriod data poll period. + * + * @sa otLinkGetPollPeriod + */ +OTAPI void OTCALL otLinkSetPollPeriod(otInstance *aInstance, uint32_t aPollPeriod); + +/** + * Get the IEEE 802.15.4 Short Address. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @returns A pointer to the IEEE 802.15.4 Short Address. + */ +OTAPI otShortAddress OTCALL otLinkGetShortAddress(otInstance *aInstance); + +/** + * Add an IEEE 802.15.4 Extended Address to the MAC whitelist. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. + * + * @retval kThreadErrorNone Successfully added to the MAC whitelist. + * @retval kThreadErrorNoBufs No buffers available for a new MAC whitelist entry. + * + * @sa otLinkAddWhitelistRssi + * @sa otLinkRemoveWhitelist + * @sa otLinkClearWhitelist + * @sa otLinkGetWhitelistEntry + * @sa otLinkSetWhitelistEnabled + */ +OTAPI ThreadError OTCALL otLinkAddWhitelist(otInstance *aInstance, const uint8_t *aExtAddr); + +/** + * Add an IEEE 802.15.4 Extended Address to the MAC whitelist and fix the RSSI value. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. + * @param[in] aRssi The RSSI in dBm to use when receiving messages from aExtAddr. + * + * @retval kThreadErrorNone Successfully added to the MAC whitelist. + * @retval kThreadErrorNoBufs No buffers available for a new MAC whitelist entry. + * + * @sa otLinkAddWhitelistRssi + * @sa otLinkRemoveWhitelist + * @sa otLinkClearWhitelist + * @sa otLinkGetWhitelistEntry + * @sa otLinkIsWhitelistEnabled + * @sa otLinkSetWhitelistEnabled + */ +OTAPI ThreadError OTCALL otLinkAddWhitelistRssi(otInstance *aInstance, const uint8_t *aExtAddr, int8_t aRssi); + +/** + * Remove an IEEE 802.15.4 Extended Address from the MAC whitelist. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. + * + * @sa otLinkAddWhitelist + * @sa otLinkAddWhitelistRssi + * @sa otLinkClearWhitelist + * @sa otLinkGetWhitelistEntry + * @sa otLinkIsWhitelistEnabled + * @sa otLinkSetWhitelistEnabled + */ +OTAPI void OTCALL otLinkRemoveWhitelist(otInstance *aInstance, const uint8_t *aExtAddr); + +/** + * This function gets a MAC whitelist entry. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aIndex An index into the MAC whitelist table. + * @param[out] aEntry A pointer to where the information is placed. + * + * @retval kThreadError_None Successfully retrieved the MAC whitelist entry. + * @retval kThreadError_InvalidArgs @p aIndex is out of bounds or @p aEntry is NULL. + * + */ +OTAPI ThreadError OTCALL otLinkGetWhitelistEntry(otInstance *aInstance, uint8_t aIndex, otMacWhitelistEntry *aEntry); + +/** + * Remove all entries from the MAC whitelist. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @sa otLinkAddWhitelist + * @sa otLinkAddWhitelistRssi + * @sa otLinkRemoveWhitelist + * @sa otLinkGetWhitelistEntry + * @sa otLinkIsWhitelistEnabled + * @sa otLinkSetWhitelistEnabled + */ +OTAPI void OTCALL otLinkClearWhitelist(otInstance *aInstance); + +/** + * Enable MAC whitelist filtering. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aEnabled TRUE to enable the whitelist, FALSE otherwise. + * + * @sa otLinkAddWhitelist + * @sa otLinkAddWhitelistRssi + * @sa otLinkRemoveWhitelist + * @sa otLinkClearWhitelist + * @sa otLinkGetWhitelistEntry + * @sa otLinkIsWhitelistEnabled + */ +OTAPI void OTCALL otLinkSetWhitelistEnabled(otInstance *aInstance, bool aEnabled); + +/** + * This function indicates whether or not the MAC whitelist is enabled. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @returns TRUE if the MAC whitelist is enabled, FALSE otherwise. + * + * @sa otLinkAddWhitelist + * @sa otLinkAddWhitelistRssi + * @sa otLinkRemoveWhitelist + * @sa otLinkClearWhitelist + * @sa otLinkGetWhitelistEntry + * @sa otLinkSetWhitelistEnabled + */ +OTAPI bool OTCALL otLinkIsWhitelistEnabled(otInstance *aInstance); + +/** + * Add an IEEE 802.15.4 Extended Address to the MAC blacklist. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. + * + * @retval kThreadErrorNone Successfully added to the MAC blacklist. + * @retval kThreadErrorNoBufs No buffers available for a new MAC blacklist entry. + * + * @sa otLinkRemoveBlacklist + * @sa otLinkClearBlacklist + * @sa otLinkGetBlacklistEntry + * @sa otLinkIsBlacklistEnabled + * @sa otLinkSetBlacklistEnabled + */ +OTAPI ThreadError OTCALL otLinkAddBlacklist(otInstance *aInstance, const uint8_t *aExtAddr); + +/** + * Remove an IEEE 802.15.4 Extended Address from the MAC blacklist. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. + * + * @sa otLinkAddBlacklist + * @sa otLinkClearBlacklist + * @sa otLinkGetBlacklistEntry + * @sa otLinkIsBlacklistEnabled + * @sa otLinkSetBlacklistEnabled + */ +OTAPI void OTCALL otLinkRemoveBlacklist(otInstance *aInstance, const uint8_t *aExtAddr); + +/** + * This function gets a MAC Blacklist entry. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aIndex An index into the MAC Blacklist table. + * @param[out] aEntry A pointer to where the information is placed. + * + * @retval kThreadError_None Successfully retrieved the MAC Blacklist entry. + * @retval kThreadError_InvalidArgs @p aIndex is out of bounds or @p aEntry is NULL. + * + */ +OTAPI ThreadError OTCALL otLinkGetBlacklistEntry(otInstance *aInstance, uint8_t aIndex, otMacBlacklistEntry *aEntry); + +/** + * Remove all entries from the MAC Blacklist. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @sa otLinkAddBlacklist + * @sa otLinkRemoveBlacklist + * @sa otLinkGetBlacklistEntry + * @sa otLinkIsBlacklistEnabled + * @sa otLinkSetBlacklistEnabled + */ +OTAPI void OTCALL otLinkClearBlacklist(otInstance *aInstance); + +/** + * Enable MAC Blacklist filtering. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @parma[in] aEnabled TRUE to enable the blacklist, FALSE otherwise. + * + * @sa otLinkAddBlacklist + * @sa otLinkRemoveBlacklist + * @sa otLinkClearBlacklist + * @sa otLinkGetBlacklistEntry + * @sa otLinkIsBlacklistEnabled + */ +OTAPI void OTCALL otLinkSetBlacklistEnabled(otInstance *aInstance, bool aEnabled); + +/** + * This function indicates whether or not the MAC Blacklist is enabled. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @returns TRUE if the MAC Blacklist is enabled, FALSE otherwise. + * + * @sa otLinkAddBlacklist + * @sa otLinkRemoveBlacklist + * @sa otLinkClearBlacklist + * @sa otLinkGetBlacklistEntry + * @sa otLinkSetBlacklistEnabled + * + */ +OTAPI bool OTCALL otLinkIsBlacklistEnabled(otInstance *aInstance); + +/** + * Get the assigned link quality which is on the link to a given extended address. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. + * @param[in] aLinkQuality A pointer to the assigned link quality. + * + * @retval kThreadError_None Successfully retrieved the link quality to aLinkQuality. + * @retval kThreadError_InvalidState No attached child matches with a given extended address. + * + * @sa otLinkSetAssignLinkQuality + */ +OTAPI ThreadError OTCALL otLinkGetAssignLinkQuality(otInstance *aInstance, const uint8_t *aExtAddr, + uint8_t *aLinkQuality); + +/** + * Set the link quality which is on the link to a given extended address. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aExtAddr A pointer to the IEEE 802.15.4 Extended Address. + * @param[in] aLinkQuality The link quality to be set on the link. + * + * @sa otLinkGetAssignLinkQuality + */ +OTAPI void OTCALL otLinkSetAssignLinkQuality(otInstance *aInstance, const uint8_t *aExtAddr, uint8_t aLinkQuality); + +/** + * Get the MAC layer counters. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @returns A pointer to the MAC layer counters. + */ +OTAPI const otMacCounters *OTCALL otLinkGetCounters(otInstance *aInstance); + +/** + * This function pointer is called when an IEEE 802.15.4 frame is received. + * + * @note This callback is called after FCS processing and @p aFrame may not contain the actual FCS that was received. + * + * @note This callback is called before IEEE 802.15.4 security processing and mSecurityValid in @p aFrame will + * always be false. + * + * @param[in] aFrame A pointer to the received IEEE 802.15.4 frame. + * @param[in] aContext A pointer to application-specific context. + * + */ +typedef void (*otLinkPcapCallback)(const RadioPacket *aFrame, void *aContext); + +/** + * This function registers a callback to provide received raw IEEE 802.15.4 frames. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aPcapCallback A pointer to a function that is called when receiving an IEEE 802.15.4 link frame or + * NULL to disable the callback. + * @param[in] aCallbackContext A pointer to application-specific context. + * + */ +void otLinkSetPcapCallback(otInstance *aInstance, otLinkPcapCallback aPcapCallback, void *aCallbackContext); + +/** + * This function indicates whether or not promiscuous mode is enabled at the link layer. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * + * @retval true Promiscuous mode is enabled. + * @retval false Promiscuous mode is not enabled. + * + */ +bool otLinkIsPromiscuous(otInstance *aInstance); + +/** + * This function enables or disables the link layer promiscuous mode. + * + * @note Promiscuous mode may only be enabled when the Thread interface is disabled. + * + * @param[in] aInstance A pointer to an OpenThread instance. + * @param[in] aPromiscuous true to enable promiscuous mode, or false otherwise. + * + * @retval kThreadError_None Successfully enabled promiscuous mode. + * @retval kThreadError_InvalidState Could not enable promiscuous mode because + * the Thread interface is enabled. + * + */ +ThreadError otLinkSetPromiscuous(otInstance *aInstance, bool aPromiscuous); + +/** + * @} + * + */ + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // OPENTHREAD_LINK_H_ diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index b5a3d66eb..9f7c8c055 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -349,7 +349,7 @@ void Interpreter::ProcessBlacklist(int argc, char *argv[]) if (argcur >= argc) { - if (otIsMacBlacklistEnabled(mInstance)) + if (otLinkIsBlacklistEnabled(mInstance)) { sServer->OutputFormat("Enabled\r\n"); } @@ -360,7 +360,7 @@ void Interpreter::ProcessBlacklist(int argc, char *argv[]) for (uint8_t i = 0; ; i++) { - if (otGetMacBlacklistEntry(mInstance, i, &entry) != kThreadError_None) + if (otLinkGetBlacklistEntry(mInstance, i, &entry) != kThreadError_None) { break; } @@ -380,26 +380,26 @@ void Interpreter::ProcessBlacklist(int argc, char *argv[]) VerifyOrExit(++argcur < argc, error = kThreadError_Parse); VerifyOrExit(Hex2Bin(argv[argcur], extAddr, sizeof(extAddr)) == sizeof(extAddr), error = kThreadError_Parse); - otAddMacBlacklist(mInstance, extAddr); - VerifyOrExit(otAddMacBlacklist(mInstance, extAddr) == kThreadError_None, error = kThreadError_Parse); + otLinkAddBlacklist(mInstance, extAddr); + VerifyOrExit(otLinkAddBlacklist(mInstance, extAddr) == kThreadError_None, error = kThreadError_Parse); } else if (strcmp(argv[argcur], "clear") == 0) { - otClearMacBlacklist(mInstance); + otLinkClearBlacklist(mInstance); } else if (strcmp(argv[argcur], "disable") == 0) { - otDisableMacBlacklist(mInstance); + otLinkSetBlacklistEnabled(mInstance, false); } else if (strcmp(argv[argcur], "enable") == 0) { - otEnableMacBlacklist(mInstance); + otLinkSetBlacklistEnabled(mInstance, true); } else if (strcmp(argv[argcur], "remove") == 0) { VerifyOrExit(++argcur < argc, error = kThreadError_Parse); VerifyOrExit(Hex2Bin(argv[argcur], extAddr, sizeof(extAddr)) == sizeof(extAddr), error = kThreadError_Parse); - otRemoveMacBlacklist(mInstance, extAddr); + otLinkRemoveBlacklist(mInstance, extAddr); } exit: @@ -434,12 +434,12 @@ void Interpreter::ProcessChannel(int argc, char *argv[]) if (argc == 0) { - sServer->OutputFormat("%d\r\n", otGetChannel(mInstance)); + sServer->OutputFormat("%d\r\n", otLinkGetChannel(mInstance)); } else { SuccessOrExit(error = ParseLong(argv[0], value)); - otSetChannel(mInstance, static_cast(value)); + otLinkSetChannel(mInstance, static_cast(value)); } exit: @@ -620,7 +620,7 @@ void Interpreter::ProcessCounters(int argc, char *argv[]) { if (strcmp(argv[0], "mac") == 0) { - otMacCountersPtr counters(otGetMacCounters(mInstance)); + otMacCountersPtr counters(otLinkGetCounters(mInstance)); sServer->OutputFormat("TxTotal: %d\r\n", counters->mTxTotal); sServer->OutputFormat(" TxUnicast: %d\r\n", counters->mTxUnicast); sServer->OutputFormat(" TxBroadcast: %d\r\n", counters->mTxBroadcast); @@ -746,7 +746,7 @@ void Interpreter::ProcessEui64(int argc, char *argv[]) VerifyOrExit(argc == 0, error = kThreadError_Parse); - otGetFactoryAssignedIeeeEui64(mInstance, &extAddress); + otLinkGetFactoryAssignedIeeeEui64(mInstance, &extAddress); OutputBytes(extAddress.m8, OT_EXT_ADDRESS_SIZE); sServer->OutputFormat("\r\n"); @@ -761,7 +761,7 @@ void Interpreter::ProcessExtAddress(int argc, char *argv[]) if (argc == 0) { - otBufferPtr extAddress(otGetExtendedAddress(mInstance)); + otBufferPtr extAddress(otLinkGetExtendedAddress(mInstance)); OutputBytes(extAddress, OT_EXT_ADDRESS_SIZE); sServer->OutputFormat("\r\n"); } @@ -771,7 +771,7 @@ void Interpreter::ProcessExtAddress(int argc, char *argv[]) VerifyOrExit(Hex2Bin(argv[0], extAddress.m8, sizeof(otExtAddress)) >= 0, error = kThreadError_Parse); - otSetExtendedAddress(mInstance, &extAddress); + otLinkSetExtendedAddress(mInstance, &extAddress); } exit: @@ -824,7 +824,7 @@ void Interpreter::ProcessHashMacAddress(int argc, char *argv[]) VerifyOrExit(argc == 0, error = kThreadError_Parse); - otGetHashMacAddress(mInstance, &hashMacAddress); + otLinkGetJoinerId(mInstance, &hashMacAddress); OutputBytes(hashMacAddress.m8, OT_EXT_ADDRESS_SIZE); sServer->OutputFormat("\r\n"); @@ -1138,14 +1138,14 @@ void Interpreter::ProcessLinkQuality(int argc, char *argv[]) if (argc == 1) { - VerifyOrExit(otGetAssignLinkQuality(mInstance, extAddress, &linkQuality) == kThreadError_None, + VerifyOrExit(otLinkGetAssignLinkQuality(mInstance, extAddress, &linkQuality) == kThreadError_None, error = kThreadError_InvalidArgs); sServer->OutputFormat("%d\r\n", linkQuality); } else { SuccessOrExit(error = ParseLong(argv[1], value)); - otSetAssignLinkQuality(mInstance, extAddress, static_cast(value)); + otLinkSetAssignLinkQuality(mInstance, extAddress, static_cast(value)); } exit: @@ -1303,12 +1303,12 @@ void Interpreter::ProcessPanId(int argc, char *argv[]) if (argc == 0) { - sServer->OutputFormat("%04x\r\n", otGetPanId(mInstance)); + sServer->OutputFormat("%04x\r\n", otLinkGetPanId(mInstance)); } else { SuccessOrExit(error = ParseLong(argv[0], value)); - otSetPanId(mInstance, static_cast(value)); + otLinkSetPanId(mInstance, static_cast(value)); } exit: @@ -1470,12 +1470,12 @@ void Interpreter::ProcessPollPeriod(int argc, char *argv[]) if (argc == 0) { - sServer->OutputFormat("%d\r\n", (otGetPollPeriod(mInstance) / 1000)); // ms->s + sServer->OutputFormat("%d\r\n", (otLinkGetPollPeriod(mInstance) / 1000)); // ms->s } else { SuccessOrExit(error = ParseLong(argv[0], value)); - otSetPollPeriod(mInstance, static_cast(value * 1000)); // s->ms + otLinkSetPollPeriod(mInstance, static_cast(value * 1000)); // s->ms } exit: @@ -1489,7 +1489,7 @@ void Interpreter::ProcessPromiscuous(int argc, char *argv[]) if (argc == 0) { - if (otIsLinkPromiscuous(mInstance) && otPlatRadioGetPromiscuous(mInstance)) + if (otLinkIsPromiscuous(mInstance) && otPlatRadioGetPromiscuous(mInstance)) { sServer->OutputFormat("Enabled\r\n"); } @@ -1502,13 +1502,13 @@ void Interpreter::ProcessPromiscuous(int argc, char *argv[]) { if (strcmp(argv[0], "enable") == 0) { - otSetLinkPcapCallback(mInstance, &s_HandleLinkPcapReceive, this); - SuccessOrExit(error = otSetLinkPromiscuous(mInstance, true)); + otLinkSetPcapCallback(mInstance, &s_HandleLinkPcapReceive, this); + SuccessOrExit(error = otLinkSetPromiscuous(mInstance, true)); } else if (strcmp(argv[0], "disable") == 0) { - otSetLinkPcapCallback(mInstance, NULL, NULL); - SuccessOrExit(error = otSetLinkPromiscuous(mInstance, false)); + otLinkSetPcapCallback(mInstance, NULL, NULL); + SuccessOrExit(error = otLinkSetPromiscuous(mInstance, false)); } } @@ -2142,7 +2142,7 @@ void Interpreter::ProcessScan(int argc, char *argv[]) sServer->OutputFormat("| J | Network Name | Extended PAN | PAN | MAC Address | Ch | dBm | LQI |\r\n"); sServer->OutputFormat("+---+------------------+------------------+------+------------------+----+-----+-----+\r\n"); - SuccessOrExit(error = otActiveScan(mInstance, scanChannels, 0, &Interpreter::s_HandleActiveScanResult, this)); + SuccessOrExit(error = otLinkActiveScan(mInstance, scanChannels, 0, &Interpreter::s_HandleActiveScanResult, this)); return; @@ -2645,7 +2645,7 @@ void Interpreter::ProcessWhitelist(int argc, char *argv[]) if (argcur >= argc) { - if (otIsMacWhitelistEnabled(mInstance)) + if (otLinkIsWhitelistEnabled(mInstance)) { sServer->OutputFormat("Enabled\r\n"); } @@ -2656,7 +2656,7 @@ void Interpreter::ProcessWhitelist(int argc, char *argv[]) for (uint8_t i = 0; ; i++) { - if (otGetMacWhitelistEntry(mInstance, i, &entry) != kThreadError_None) + if (otLinkGetWhitelistEntry(mInstance, i, &entry) != kThreadError_None) { break; } @@ -2684,31 +2684,31 @@ void Interpreter::ProcessWhitelist(int argc, char *argv[]) if (++argcur < argc) { rssi = static_cast(strtol(argv[argcur], NULL, 0)); - VerifyOrExit(otAddMacWhitelistRssi(mInstance, extAddr, rssi) == kThreadError_None, error = kThreadError_Parse); + VerifyOrExit(otLinkAddWhitelistRssi(mInstance, extAddr, rssi) == kThreadError_None, error = kThreadError_Parse); } else { - otAddMacWhitelist(mInstance, extAddr); - VerifyOrExit(otAddMacWhitelist(mInstance, extAddr) == kThreadError_None, error = kThreadError_Parse); + otLinkAddWhitelist(mInstance, extAddr); + VerifyOrExit(otLinkAddWhitelist(mInstance, extAddr) == kThreadError_None, error = kThreadError_Parse); } } else if (strcmp(argv[argcur], "clear") == 0) { - otClearMacWhitelist(mInstance); + otLinkClearWhitelist(mInstance); } else if (strcmp(argv[argcur], "disable") == 0) { - otDisableMacWhitelist(mInstance); + otLinkSetWhitelistEnabled(mInstance, false); } else if (strcmp(argv[argcur], "enable") == 0) { - otEnableMacWhitelist(mInstance); + otLinkSetWhitelistEnabled(mInstance, true); } else if (strcmp(argv[argcur], "remove") == 0) { VerifyOrExit(++argcur < argc, error = kThreadError_Parse); VerifyOrExit(Hex2Bin(argv[argcur], extAddr, sizeof(extAddr)) == sizeof(extAddr), error = kThreadError_Parse); - otRemoveMacWhitelist(mInstance, extAddr); + otLinkRemoveWhitelist(mInstance, extAddr); } exit: diff --git a/src/core/Makefile.am b/src/core/Makefile.am index 1f2a49bea..c67c1c24c 100644 --- a/src/core/Makefile.am +++ b/src/core/Makefile.am @@ -42,6 +42,7 @@ SOURCES_COMMON = \ openthread.cpp \ api/crypto_api.cpp \ api/ip6_api.cpp \ + api/link_api.cpp \ api/message_api.cpp \ api/tasklet_api.cpp \ api/udp_api.cpp \ diff --git a/src/core/api/link_api.cpp b/src/core/api/link_api.cpp new file mode 100644 index 000000000..4fbeebbd4 --- /dev/null +++ b/src/core/api/link_api.cpp @@ -0,0 +1,358 @@ +/* + * Copyright (c) 2016, The OpenThread Authors. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * @file + * This file implements the OpenThread Link API. + */ + +#include "openthread/link.h" + +#include "openthread-instance.h" + +using namespace Thread; + +#ifdef __cplusplus +extern "C" { +#endif + +static void HandleActiveScanResult(void *aContext, Mac::Frame *aFrame); +static void HandleEnergyScanResult(void *aContext, otEnergyScanResult *aResult); + +uint8_t otLinkGetChannel(otInstance *aInstance) +{ + return aInstance->mThreadNetif.GetMac().GetChannel(); +} + +ThreadError otLinkSetChannel(otInstance *aInstance, uint8_t aChannel) +{ + return aInstance->mThreadNetif.GetMac().SetChannel(aChannel); +} + +const uint8_t *otLinkGetExtendedAddress(otInstance *aInstance) +{ + return reinterpret_cast(aInstance->mThreadNetif.GetMac().GetExtAddress()); +} + +ThreadError otLinkSetExtendedAddress(otInstance *aInstance, const otExtAddress *aExtAddress) +{ + ThreadError error = kThreadError_None; + + VerifyOrExit(aExtAddress != NULL, error = kThreadError_InvalidArgs); + + aInstance->mThreadNetif.GetMac().SetExtAddress(*static_cast(aExtAddress)); + + SuccessOrExit(error = aInstance->mThreadNetif.GetMle().UpdateLinkLocalAddress()); + +exit: + return error; +} + +void otLinkGetFactoryAssignedIeeeEui64(otInstance *aInstance, otExtAddress *aEui64) +{ + otPlatRadioGetIeeeEui64(aInstance, aEui64->m8); +} + +void otLinkGetJoinerId(otInstance *aInstance, otExtAddress *aHashMacAddress) +{ + aInstance->mThreadNetif.GetMac().GetHashMacAddress(static_cast(aHashMacAddress)); +} + +int8_t otLinkGetMaxTransmitPower(otInstance *aInstance) +{ + return aInstance->mThreadNetif.GetMac().GetMaxTransmitPower(); +} + +void otLinkSetMaxTransmitPower(otInstance *aInstance, int8_t aPower) +{ + aInstance->mThreadNetif.GetMac().SetMaxTransmitPower(aPower); +} + +otPanId otLinkGetPanId(otInstance *aInstance) +{ + return aInstance->mThreadNetif.GetMac().GetPanId(); +} + +ThreadError otLinkSetPanId(otInstance *aInstance, otPanId aPanId) +{ + ThreadError error = kThreadError_None; + + // do not allow setting PAN ID to broadcast if Thread is running + VerifyOrExit(aPanId != Mac::kPanIdBroadcast || + aInstance->mThreadNetif.GetMle().GetDeviceState() != Mle::kDeviceStateDisabled, + error = kThreadError_InvalidState); + + error = aInstance->mThreadNetif.GetMac().SetPanId(aPanId); + +exit: + return error; +} + +uint32_t otLinkGetPollPeriod(otInstance *aInstance) +{ + return aInstance->mThreadNetif.GetMeshForwarder().GetAssignPollPeriod(); +} + +void otLinkSetPollPeriod(otInstance *aInstance, uint32_t aPollPeriod) +{ + aInstance->mThreadNetif.GetMeshForwarder().SetAssignPollPeriod(aPollPeriod); +} + +otShortAddress otLinkGetShortAddress(otInstance *aInstance) +{ + return aInstance->mThreadNetif.GetMac().GetShortAddress(); +} + +ThreadError otLinkAddWhitelist(otInstance *aInstance, const uint8_t *aExtAddr) +{ + ThreadError error = kThreadError_None; + + if (aInstance->mThreadNetif.GetMac().GetWhitelist().Add(*reinterpret_cast(aExtAddr)) == NULL) + { + error = kThreadError_NoBufs; + } + + return error; +} + +ThreadError otLinkAddWhitelistRssi(otInstance *aInstance, const uint8_t *aExtAddr, int8_t aRssi) +{ + ThreadError error = kThreadError_None; + otMacWhitelistEntry *entry; + + entry = aInstance->mThreadNetif.GetMac().GetWhitelist().Add(*reinterpret_cast(aExtAddr)); + VerifyOrExit(entry != NULL, error = kThreadError_NoBufs); + aInstance->mThreadNetif.GetMac().GetWhitelist().SetFixedRssi(*entry, aRssi); + +exit: + return error; +} + +void otLinkRemoveWhitelist(otInstance *aInstance, const uint8_t *aExtAddr) +{ + aInstance->mThreadNetif.GetMac().GetWhitelist().Remove(*reinterpret_cast(aExtAddr)); +} + +void otLinkClearWhitelist(otInstance *aInstance) +{ + aInstance->mThreadNetif.GetMac().GetWhitelist().Clear(); +} + +ThreadError otLinkGetWhitelistEntry(otInstance *aInstance, uint8_t aIndex, otMacWhitelistEntry *aEntry) +{ + ThreadError error = kThreadError_None; + + VerifyOrExit(aEntry != NULL, error = kThreadError_InvalidArgs); + error = aInstance->mThreadNetif.GetMac().GetWhitelist().GetEntry(aIndex, *aEntry); + +exit: + return error; +} + +void otLinkSetWhitelistEnabled(otInstance *aInstance, bool aEnabled) +{ + aInstance->mThreadNetif.GetMac().GetWhitelist().SetEnabled(aEnabled); +} + +bool otLinkIsWhitelistEnabled(otInstance *aInstance) +{ + return aInstance->mThreadNetif.GetMac().GetWhitelist().IsEnabled(); +} + +ThreadError otLinkAddBlacklist(otInstance *aInstance, const uint8_t *aExtAddr) +{ + ThreadError error = kThreadError_None; + + if (aInstance->mThreadNetif.GetMac().GetBlacklist().Add(*reinterpret_cast(aExtAddr)) == NULL) + { + error = kThreadError_NoBufs; + } + + return error; +} + +void otLinkRemoveBlacklist(otInstance *aInstance, const uint8_t *aExtAddr) +{ + aInstance->mThreadNetif.GetMac().GetBlacklist().Remove(*reinterpret_cast(aExtAddr)); +} + +void otLinkClearBlacklist(otInstance *aInstance) +{ + aInstance->mThreadNetif.GetMac().GetBlacklist().Clear(); +} + +ThreadError otLinkGetBlacklistEntry(otInstance *aInstance, uint8_t aIndex, otMacBlacklistEntry *aEntry) +{ + ThreadError error = kThreadError_None; + + VerifyOrExit(aEntry != NULL, error = kThreadError_InvalidArgs); + error = aInstance->mThreadNetif.GetMac().GetBlacklist().GetEntry(aIndex, *aEntry); + +exit: + return error; +} + +void otLinkSetBlacklistEnabled(otInstance *aInstance, bool aEnabled) +{ + aInstance->mThreadNetif.GetMac().GetBlacklist().SetEnabled(aEnabled); +} + +bool otLinkIsBlacklistEnabled(otInstance *aInstance) +{ + return aInstance->mThreadNetif.GetMac().GetBlacklist().IsEnabled(); +} + +ThreadError otLinkGetAssignLinkQuality(otInstance *aInstance, const uint8_t *aExtAddr, uint8_t *aLinkQuality) +{ + Mac::ExtAddress extAddress; + + memset(&extAddress, 0, sizeof(extAddress)); + memcpy(extAddress.m8, aExtAddr, OT_EXT_ADDRESS_SIZE); + + return aInstance->mThreadNetif.GetMle().GetAssignLinkQuality(extAddress, *aLinkQuality); +} + +void otLinkSetAssignLinkQuality(otInstance *aInstance, const uint8_t *aExtAddr, uint8_t aLinkQuality) +{ + Mac::ExtAddress extAddress; + + memset(&extAddress, 0, sizeof(extAddress)); + memcpy(extAddress.m8, aExtAddr, OT_EXT_ADDRESS_SIZE); + + aInstance->mThreadNetif.GetMle().SetAssignLinkQuality(extAddress, aLinkQuality); +} + +void otLinkSetPcapCallback(otInstance *aInstance, otLinkPcapCallback aPcapCallback, void *aCallbackContext) +{ + aInstance->mThreadNetif.GetMac().SetPcapCallback(aPcapCallback, aCallbackContext); +} + +bool otLinkIsPromiscuous(otInstance *aInstance) +{ + return aInstance->mThreadNetif.GetMac().IsPromiscuous(); +} + +ThreadError otLinkSetPromiscuous(otInstance *aInstance, bool aPromiscuous) +{ + ThreadError error = kThreadError_None; + + // cannot enable IEEE 802.15.4 promiscuous mode if the Thread interface is enabled + VerifyOrExit(aInstance->mThreadNetif.IsUp() == false, error = kThreadError_InvalidState); + + aInstance->mThreadNetif.GetMac().SetPromiscuous(aPromiscuous); + +exit: + return error; +} + +const otMacCounters *otLinkGetCounters(otInstance *aInstance) +{ + return &aInstance->mThreadNetif.GetMac().GetCounters(); +} + +ThreadError otLinkActiveScan(otInstance *aInstance, uint32_t aScanChannels, uint16_t aScanDuration, + otHandleActiveScanResult aCallback, void *aCallbackContext) +{ + aInstance->mActiveScanCallback = aCallback; + aInstance->mActiveScanCallbackContext = aCallbackContext; + return aInstance->mThreadNetif.GetMac().ActiveScan(aScanChannels, aScanDuration, &HandleActiveScanResult, aInstance); +} + +bool otLinkIsActiveScanInProgress(otInstance *aInstance) +{ + return aInstance->mThreadNetif.GetMac().IsActiveScanInProgress(); +} + +void HandleActiveScanResult(void *aContext, Mac::Frame *aFrame) +{ + otInstance *aInstance = static_cast(aContext); + otActiveScanResult result; + Mac::Address address; + Mac::Beacon *beacon; + uint8_t payloadLength; + + memset(&result, 0, sizeof(otActiveScanResult)); + + if (aFrame == NULL) + { + aInstance->mActiveScanCallback(NULL, aInstance->mActiveScanCallbackContext); + ExitNow(); + } + + SuccessOrExit(aFrame->GetSrcAddr(address)); + VerifyOrExit(address.mLength == sizeof(address.mExtAddress), ;); + memcpy(&result.mExtAddress, &address.mExtAddress, sizeof(result.mExtAddress)); + + aFrame->GetSrcPanId(result.mPanId); + result.mChannel = aFrame->GetChannel(); + result.mRssi = aFrame->GetPower(); + result.mLqi = aFrame->GetLqi(); + + payloadLength = aFrame->GetPayloadLength(); + beacon = reinterpret_cast(aFrame->GetPayload()); + + if (payloadLength >= sizeof(*beacon) && beacon->IsValid()) + { + result.mVersion = beacon->GetProtocolVersion(); + result.mIsJoinable = beacon->IsJoiningPermitted(); + result.mIsNative = beacon->IsNative(); + memcpy(&result.mNetworkName, beacon->GetNetworkName(), sizeof(result.mNetworkName)); + memcpy(&result.mExtendedPanId, beacon->GetExtendedPanId(), sizeof(result.mExtendedPanId)); + } + + aInstance->mActiveScanCallback(&result, aInstance->mActiveScanCallbackContext); + +exit: + return; +} + +ThreadError otLinkEnergyScan(otInstance *aInstance, uint32_t aScanChannels, uint16_t aScanDuration, + otHandleEnergyScanResult aCallback, void *aCallbackContext) +{ + aInstance->mEnergyScanCallback = aCallback; + aInstance->mEnergyScanCallbackContext = aCallbackContext; + return aInstance->mThreadNetif.GetMac().EnergyScan(aScanChannels, aScanDuration, &HandleEnergyScanResult, aInstance); +} + +void HandleEnergyScanResult(void *aContext, otEnergyScanResult *aResult) +{ + otInstance *aInstance = static_cast(aContext); + + aInstance->mEnergyScanCallback(aResult, aInstance->mEnergyScanCallbackContext); +} + +bool otLinkIsEnergyScanInProgress(otInstance *aInstance) +{ + return aInstance->mThreadNetif.GetMac().IsEnergyScanInProgress(); +} + + + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/src/core/mac/mac_blacklist.cpp b/src/core/mac/mac_blacklist.cpp index d6f22d51a..b7be98724 100644 --- a/src/core/mac/mac_blacklist.cpp +++ b/src/core/mac/mac_blacklist.cpp @@ -49,21 +49,16 @@ Blacklist::Blacklist(void) } } -void Blacklist::Enable(void) -{ - mEnabled = true; -} - -void Blacklist::Disable(void) -{ - mEnabled = false; -} - bool Blacklist::IsEnabled(void) const { return mEnabled; } +void Blacklist::SetEnabled(bool aEnabled) +{ + mEnabled = aEnabled; +} + int Blacklist::GetMaxEntries(void) const { return kMaxEntries; diff --git a/src/core/mac/mac_blacklist_impl.hpp b/src/core/mac/mac_blacklist_impl.hpp index e1d6d6222..25a8db251 100644 --- a/src/core/mac/mac_blacklist_impl.hpp +++ b/src/core/mac/mac_blacklist_impl.hpp @@ -69,18 +69,6 @@ public: */ Blacklist(void); - /** - * This method enables the blacklist filter. - * - */ - void Enable(void); - - /** - * This method disables the blacklist filter. - * - */ - void Disable(void); - /** * This method indicates whether or not the blacklist filter is enabled. * @@ -90,6 +78,14 @@ public: */ bool IsEnabled(void) const; + /** + * This method enables the blacklist filter. + * + * @param[in] aEnabled TRUE to enable the blacklist filter, FALSE otherwise. + * + */ + void SetEnabled(bool aEnabled); + /** * This method returns the maximum number of blacklist entries. * diff --git a/src/core/mac/mac_whitelist.cpp b/src/core/mac/mac_whitelist.cpp index 275bd0345..8f2085f9b 100644 --- a/src/core/mac/mac_whitelist.cpp +++ b/src/core/mac/mac_whitelist.cpp @@ -49,21 +49,16 @@ Whitelist::Whitelist(void) } } -void Whitelist::Enable(void) -{ - mEnabled = true; -} - -void Whitelist::Disable(void) -{ - mEnabled = false; -} - bool Whitelist::IsEnabled(void) const { return mEnabled; } +void Whitelist::SetEnabled(bool aEnabled) +{ + mEnabled = aEnabled; +} + int Whitelist::GetMaxEntries(void) const { return kMaxEntries; diff --git a/src/core/mac/mac_whitelist_impl.hpp b/src/core/mac/mac_whitelist_impl.hpp index 9eb4d75ca..60a32b580 100644 --- a/src/core/mac/mac_whitelist_impl.hpp +++ b/src/core/mac/mac_whitelist_impl.hpp @@ -69,18 +69,6 @@ public: */ Whitelist(void); - /** - * This method enables the whitelist filter. - * - */ - void Enable(void); - - /** - * This method disables the whitelist filter. - * - */ - void Disable(void); - /** * This method indicates whether or not the whitelist filter is enabled. * @@ -90,6 +78,14 @@ public: */ bool IsEnabled(void) const; + /** + * This method enables the whitelist filter. + * + * @param[in] aEnabled TRUE to enable the whitelist filter, FALSE otherwise. + * + */ + void SetEnabled(bool aEnabled); + /** * This method returns the maximum number of whitelist entries. * diff --git a/src/core/openthread.cpp b/src/core/openthread.cpp index 093474474..bf62a1550 100644 --- a/src/core/openthread.cpp +++ b/src/core/openthread.cpp @@ -88,19 +88,6 @@ otInstance::otInstance(void) : extern "C" { #endif -static void HandleActiveScanResult(void *aContext, Mac::Frame *aFrame); -static void HandleEnergyScanResult(void *aContext, otEnergyScanResult *aResult); - -uint8_t otGetChannel(otInstance *aInstance) -{ - return aInstance->mThreadNetif.GetMac().GetChannel(); -} - -ThreadError otSetChannel(otInstance *aInstance, uint8_t aChannel) -{ - return aInstance->mThreadNetif.GetMac().SetChannel(aChannel); -} - ThreadError otSetDelayTimerMinimal(otInstance *aInstance, uint32_t aDelayTimerMinimal) { return aInstance->mThreadNetif.GetLeader().SetDelayTimerMinimal(aDelayTimerMinimal); @@ -135,25 +122,6 @@ void otSetChildTimeout(otInstance *aInstance, uint32_t aTimeout) aInstance->mThreadNetif.GetMle().SetTimeout(aTimeout); } -const uint8_t *otGetExtendedAddress(otInstance *aInstance) -{ - return reinterpret_cast(aInstance->mThreadNetif.GetMac().GetExtAddress()); -} - -ThreadError otSetExtendedAddress(otInstance *aInstance, const otExtAddress *aExtAddress) -{ - ThreadError error = kThreadError_None; - - VerifyOrExit(aExtAddress != NULL, error = kThreadError_InvalidArgs); - - aInstance->mThreadNetif.GetMac().SetExtAddress(*static_cast(aExtAddress)); - - SuccessOrExit(error = aInstance->mThreadNetif.GetMle().UpdateLinkLocalAddress()); - -exit: - return error; -} - const uint8_t *otGetExtendedPanId(otInstance *aInstance) { return aInstance->mThreadNetif.GetMac().GetExtendedPanId(); @@ -172,16 +140,6 @@ void otSetExtendedPanId(otInstance *aInstance, const uint8_t *aExtendedPanId) aInstance->mThreadNetif.GetMle().SetMeshLocalPrefix(mlPrefix); } -void otGetFactoryAssignedIeeeEui64(otInstance *aInstance, otExtAddress *aEui64) -{ - otPlatRadioGetIeeeEui64(aInstance, aEui64->m8); -} - -void otGetHashMacAddress(otInstance *aInstance, otExtAddress *aHashMacAddress) -{ - aInstance->mThreadNetif.GetMac().GetHashMacAddress(static_cast(aHashMacAddress)); -} - ThreadError otGetLeaderRloc(otInstance *aInstance, otIp6Address *aAddress) { ThreadError error; @@ -261,16 +219,6 @@ ThreadError otSetMasterKey(otInstance *aInstance, const uint8_t *aKey, uint8_t a return aInstance->mThreadNetif.GetKeyManager().SetMasterKey(aKey, aKeyLength); } -int8_t otGetMaxTransmitPower(otInstance *aInstance) -{ - return aInstance->mThreadNetif.GetMac().GetMaxTransmitPower(); -} - -void otSetMaxTransmitPower(otInstance *aInstance, int8_t aPower) -{ - aInstance->mThreadNetif.GetMac().SetMaxTransmitPower(aPower); -} - const otIp6Address *otGetMeshLocalEid(otInstance *aInstance) { return &aInstance->mThreadNetif.GetMle().GetMeshLocal64(); @@ -320,26 +268,6 @@ ThreadError otSetNetworkName(otInstance *aInstance, const char *aNetworkName) return aInstance->mThreadNetif.GetMac().SetNetworkName(aNetworkName); } -otPanId otGetPanId(otInstance *aInstance) -{ - return aInstance->mThreadNetif.GetMac().GetPanId(); -} - -ThreadError otSetPanId(otInstance *aInstance, otPanId aPanId) -{ - ThreadError error = kThreadError_None; - - // do not allow setting PAN ID to broadcast if Thread is running - VerifyOrExit(aPanId != Mac::kPanIdBroadcast || - aInstance->mThreadNetif.GetMle().GetDeviceState() != Mle::kDeviceStateDisabled, - error = kThreadError_InvalidState); - - error = aInstance->mThreadNetif.GetMac().SetPanId(aPanId); - -exit: - return error; -} - bool otIsRouterRoleEnabled(otInstance *aInstance) { return aInstance->mThreadNetif.GetMle().IsRouterRoleEnabled(); @@ -350,11 +278,6 @@ void otSetRouterRoleEnabled(otInstance *aInstance, bool aEnabled) aInstance->mThreadNetif.GetMle().SetRouterRoleEnabled(aEnabled); } -otShortAddress otGetShortAddress(otInstance *aInstance) -{ - return aInstance->mThreadNetif.GetMac().GetShortAddress(); -} - uint8_t otGetLocalLeaderWeight(otInstance *aInstance) { return aInstance->mThreadNetif.GetMle().GetLeaderWeight(); @@ -522,67 +445,6 @@ ThreadError otReleaseRouterId(otInstance *aInstance, uint8_t aRouterId) return aInstance->mThreadNetif.GetMle().ReleaseRouterId(aRouterId); } -ThreadError otAddMacWhitelist(otInstance *aInstance, const uint8_t *aExtAddr) -{ - ThreadError error = kThreadError_None; - - if (aInstance->mThreadNetif.GetMac().GetWhitelist().Add(*reinterpret_cast(aExtAddr)) == NULL) - { - error = kThreadError_NoBufs; - } - - return error; -} - -ThreadError otAddMacWhitelistRssi(otInstance *aInstance, const uint8_t *aExtAddr, int8_t aRssi) -{ - ThreadError error = kThreadError_None; - otMacWhitelistEntry *entry; - - entry = aInstance->mThreadNetif.GetMac().GetWhitelist().Add(*reinterpret_cast(aExtAddr)); - VerifyOrExit(entry != NULL, error = kThreadError_NoBufs); - aInstance->mThreadNetif.GetMac().GetWhitelist().SetFixedRssi(*entry, aRssi); - -exit: - return error; -} - -void otRemoveMacWhitelist(otInstance *aInstance, const uint8_t *aExtAddr) -{ - aInstance->mThreadNetif.GetMac().GetWhitelist().Remove(*reinterpret_cast(aExtAddr)); -} - -void otClearMacWhitelist(otInstance *aInstance) -{ - aInstance->mThreadNetif.GetMac().GetWhitelist().Clear(); -} - -ThreadError otGetMacWhitelistEntry(otInstance *aInstance, uint8_t aIndex, otMacWhitelistEntry *aEntry) -{ - ThreadError error = kThreadError_None; - - VerifyOrExit(aEntry != NULL, error = kThreadError_InvalidArgs); - error = aInstance->mThreadNetif.GetMac().GetWhitelist().GetEntry(aIndex, *aEntry); - -exit: - return error; -} - -void otDisableMacWhitelist(otInstance *aInstance) -{ - aInstance->mThreadNetif.GetMac().GetWhitelist().Disable(); -} - -void otEnableMacWhitelist(otInstance *aInstance) -{ - aInstance->mThreadNetif.GetMac().GetWhitelist().Enable(); -} - -bool otIsMacWhitelistEnabled(otInstance *aInstance) -{ - return aInstance->mThreadNetif.GetMac().GetWhitelist().IsEnabled(); -} - ThreadError otBecomeDetached(otInstance *aInstance) { return aInstance->mThreadNetif.GetMle().BecomeDetached(); @@ -621,74 +483,6 @@ ThreadError otBecomeLeader(otInstance *aInstance) return aInstance->mThreadNetif.GetMle().BecomeLeader(); } -ThreadError otAddMacBlacklist(otInstance *aInstance, const uint8_t *aExtAddr) -{ - ThreadError error = kThreadError_None; - - if (aInstance->mThreadNetif.GetMac().GetBlacklist().Add(*reinterpret_cast(aExtAddr)) == NULL) - { - error = kThreadError_NoBufs; - } - - return error; -} - -void otRemoveMacBlacklist(otInstance *aInstance, const uint8_t *aExtAddr) -{ - aInstance->mThreadNetif.GetMac().GetBlacklist().Remove(*reinterpret_cast(aExtAddr)); -} - -void otClearMacBlacklist(otInstance *aInstance) -{ - aInstance->mThreadNetif.GetMac().GetBlacklist().Clear(); -} - -ThreadError otGetMacBlacklistEntry(otInstance *aInstance, uint8_t aIndex, otMacBlacklistEntry *aEntry) -{ - ThreadError error = kThreadError_None; - - VerifyOrExit(aEntry != NULL, error = kThreadError_InvalidArgs); - error = aInstance->mThreadNetif.GetMac().GetBlacklist().GetEntry(aIndex, *aEntry); - -exit: - return error; -} - -void otDisableMacBlacklist(otInstance *aInstance) -{ - aInstance->mThreadNetif.GetMac().GetBlacklist().Disable(); -} - -void otEnableMacBlacklist(otInstance *aInstance) -{ - aInstance->mThreadNetif.GetMac().GetBlacklist().Enable(); -} - -bool otIsMacBlacklistEnabled(otInstance *aInstance) -{ - return aInstance->mThreadNetif.GetMac().GetBlacklist().IsEnabled(); -} - -ThreadError otGetAssignLinkQuality(otInstance *aInstance, const uint8_t *aExtAddr, uint8_t *aLinkQuality) -{ - Mac::ExtAddress extAddress; - - memset(&extAddress, 0, sizeof(extAddress)); - memcpy(extAddress.m8, aExtAddr, OT_EXT_ADDRESS_SIZE); - - return aInstance->mThreadNetif.GetMle().GetAssignLinkQuality(extAddress, *aLinkQuality); -} - -void otSetAssignLinkQuality(otInstance *aInstance, const uint8_t *aExtAddr, uint8_t aLinkQuality) -{ - Mac::ExtAddress extAddress; - - memset(&extAddress, 0, sizeof(extAddress)); - memcpy(extAddress.m8, aExtAddr, OT_EXT_ADDRESS_SIZE); - - aInstance->mThreadNetif.GetMle().SetAssignLinkQuality(extAddress, aLinkQuality); -} - void otPlatformReset(otInstance *aInstance) { otPlatReset(aInstance); @@ -907,34 +701,6 @@ uint8_t otGetStableNetworkDataVersion(otInstance *aInstance) return aInstance->mThreadNetif.GetMle().GetLeaderDataTlv().GetStableDataVersion(); } -void otSetLinkPcapCallback(otInstance *aInstance, otLinkPcapCallback aPcapCallback, void *aCallbackContext) -{ - aInstance->mThreadNetif.GetMac().SetPcapCallback(aPcapCallback, aCallbackContext); -} - -bool otIsLinkPromiscuous(otInstance *aInstance) -{ - return aInstance->mThreadNetif.GetMac().IsPromiscuous(); -} - -ThreadError otSetLinkPromiscuous(otInstance *aInstance, bool aPromiscuous) -{ - ThreadError error = kThreadError_None; - - // cannot enable IEEE 802.15.4 promiscuous mode if the Thread interface is enabled - VerifyOrExit(aInstance->mThreadNetif.IsUp() == false, error = kThreadError_InvalidState); - - aInstance->mThreadNetif.GetMac().SetPromiscuous(aPromiscuous); - -exit: - return error; -} - -const otMacCounters *otGetMacCounters(otInstance *aInstance) -{ - return &aInstance->mThreadNetif.GetMac().GetCounters(); -} - ThreadError otSetStateChangedCallback(otInstance *aInstance, otStateChangedCallback aCallback, void *aCallbackContext) { ThreadError error = kThreadError_NoBufs; @@ -1004,16 +770,6 @@ const char *otGetVersionString(void) return sVersion; } -uint32_t otGetPollPeriod(otInstance *aInstance) -{ - return aInstance->mThreadNetif.GetMeshForwarder().GetAssignPollPeriod(); -} - -void otSetPollPeriod(otInstance *aInstance, uint32_t aPollPeriod) -{ - aInstance->mThreadNetif.GetMeshForwarder().SetAssignPollPeriod(aPollPeriod); -} - ThreadError otSetPreferredRouterId(otInstance *aInstance, uint8_t aRouterId) { return aInstance->mThreadNetif.GetMle().SetPreferredRouterId(aRouterId); @@ -1197,82 +953,6 @@ bool otIsSingleton(otInstance *aInstance) return aInstance->mThreadNetif.GetMle().IsSingleton(); } -ThreadError otActiveScan(otInstance *aInstance, uint32_t aScanChannels, uint16_t aScanDuration, - otHandleActiveScanResult aCallback, void *aCallbackContext) -{ - aInstance->mActiveScanCallback = aCallback; - aInstance->mActiveScanCallbackContext = aCallbackContext; - return aInstance->mThreadNetif.GetMac().ActiveScan(aScanChannels, aScanDuration, &HandleActiveScanResult, aInstance); -} - -bool otIsActiveScanInProgress(otInstance *aInstance) -{ - return aInstance->mThreadNetif.GetMac().IsActiveScanInProgress(); -} - -void HandleActiveScanResult(void *aContext, Mac::Frame *aFrame) -{ - otInstance *aInstance = static_cast(aContext); - otActiveScanResult result; - Mac::Address address; - Mac::Beacon *beacon; - uint8_t payloadLength; - - memset(&result, 0, sizeof(otActiveScanResult)); - - if (aFrame == NULL) - { - aInstance->mActiveScanCallback(NULL, aInstance->mActiveScanCallbackContext); - ExitNow(); - } - - SuccessOrExit(aFrame->GetSrcAddr(address)); - VerifyOrExit(address.mLength == sizeof(address.mExtAddress), ;); - memcpy(&result.mExtAddress, &address.mExtAddress, sizeof(result.mExtAddress)); - - aFrame->GetSrcPanId(result.mPanId); - result.mChannel = aFrame->GetChannel(); - result.mRssi = aFrame->GetPower(); - result.mLqi = aFrame->GetLqi(); - - payloadLength = aFrame->GetPayloadLength(); - beacon = reinterpret_cast(aFrame->GetPayload()); - - if (payloadLength >= sizeof(*beacon) && beacon->IsValid()) - { - result.mVersion = beacon->GetProtocolVersion(); - result.mIsJoinable = beacon->IsJoiningPermitted(); - result.mIsNative = beacon->IsNative(); - memcpy(&result.mNetworkName, beacon->GetNetworkName(), sizeof(result.mNetworkName)); - memcpy(&result.mExtendedPanId, beacon->GetExtendedPanId(), sizeof(result.mExtendedPanId)); - } - - aInstance->mActiveScanCallback(&result, aInstance->mActiveScanCallbackContext); - -exit: - return; -} - -ThreadError otEnergyScan(otInstance *aInstance, uint32_t aScanChannels, uint16_t aScanDuration, - otHandleEnergyScanResult aCallback, void *aCallbackContext) -{ - aInstance->mEnergyScanCallback = aCallback; - aInstance->mEnergyScanCallbackContext = aCallbackContext; - return aInstance->mThreadNetif.GetMac().EnergyScan(aScanChannels, aScanDuration, &HandleEnergyScanResult, aInstance); -} - -void HandleEnergyScanResult(void *aContext, otEnergyScanResult *aResult) -{ - otInstance *aInstance = static_cast(aContext); - - aInstance->mEnergyScanCallback(aResult, aInstance->mEnergyScanCallbackContext); -} - -bool otIsEnergyScanInProgress(otInstance *aInstance) -{ - return aInstance->mThreadNetif.GetMac().IsEnergyScanInProgress(); -} - ThreadError otDiscover(otInstance *aInstance, uint32_t aScanChannels, uint16_t aScanDuration, uint16_t aPanId, otHandleActiveScanResult aCallback, void *aCallbackContext) { diff --git a/src/ncp/ncp_base.cpp b/src/ncp/ncp_base.cpp index e56fd3ab0..84bc9e4ca 100644 --- a/src/ncp/ncp_base.cpp +++ b/src/ncp/ncp_base.cpp @@ -536,9 +536,9 @@ NcpBase::NcpBase(otInstance *aInstance): otSetStateChangedCallback(mInstance, &NcpBase::HandleNetifStateChanged, this); otIp6SetReceiveCallback(mInstance, &NcpBase::HandleDatagramFromStack, this); - otSetLinkPcapCallback(mInstance, &NcpBase::HandleRawFrame, static_cast(this)); - otIcmp6SetEchoEnabled(mInstance, false); otIp6SetReceiveFilterEnabled(mInstance, true); + otLinkSetPcapCallback(mInstance, &NcpBase::HandleRawFrame, static_cast(this)); + otIcmp6SetEchoEnabled(mInstance, false); mUpdateChangedPropsTask.Post(); @@ -1791,7 +1791,7 @@ ThreadError NcpBase::GetPropertyHandler_POWER_STATE(uint8_t header, spinel_prop_ ThreadError NcpBase::GetPropertyHandler_HWADDR(uint8_t header, spinel_prop_key_t key) { otExtAddress hwAddr; - otGetFactoryAssignedIeeeEui64(mInstance, &hwAddr); + otLinkGetFactoryAssignedIeeeEui64(mInstance, &hwAddr); return SendPropertyUpdate( header, @@ -1828,7 +1828,7 @@ ThreadError NcpBase::GetPropertyHandler_PHY_ENABLED(uint8_t header, spinel_prop_ ThreadError NcpBase::GetPropertyHandler_PHY_FREQ(uint8_t header, spinel_prop_key_t key) { uint32_t freq_khz(0); - const uint8_t chan(otGetChannel(mInstance)); + const uint8_t chan(otLinkGetChannel(mInstance)); if (chan == 0) { @@ -1864,7 +1864,7 @@ ThreadError NcpBase::GetPropertyHandler_PHY_CHAN(uint8_t header, spinel_prop_key SPINEL_CMD_PROP_VALUE_IS, key, SPINEL_DATATYPE_UINT8_S, - otGetChannel(mInstance) + otLinkGetChannel(mInstance) ); } @@ -1886,7 +1886,7 @@ ThreadError NcpBase::GetPropertyHandler_PHY_TX_POWER(uint8_t header, spinel_prop SPINEL_CMD_PROP_VALUE_IS, key, SPINEL_DATATYPE_INT8_S, - otGetMaxTransmitPower(mInstance) + otLinkGetMaxTransmitPower(mInstance) ); } @@ -1909,7 +1909,7 @@ ThreadError NcpBase::GetPropertyHandler_MAC_SCAN_STATE(uint8_t header, spinel_pr } else #endif // OPENTHREAD_ENABLE_RAW_LINK_API - if (otIsActiveScanInProgress(mInstance)) + if (otLinkIsActiveScanInProgress(mInstance)) { errorCode = SendPropertyUpdate( header, @@ -1919,7 +1919,7 @@ ThreadError NcpBase::GetPropertyHandler_MAC_SCAN_STATE(uint8_t header, spinel_pr SPINEL_SCAN_STATE_BEACON ); } - else if (otIsEnergyScanInProgress(mInstance)) + else if (otLinkIsEnergyScanInProgress(mInstance)) { errorCode = SendPropertyUpdate( header, @@ -1987,7 +1987,7 @@ ThreadError NcpBase::GetPropertyHandler_MAC_15_4_PANID(uint8_t header, spinel_pr SPINEL_CMD_PROP_VALUE_IS, key, SPINEL_DATATYPE_UINT16_S, - otGetPanId(mInstance) + otLinkGetPanId(mInstance) ); } @@ -2011,7 +2011,7 @@ ThreadError NcpBase::GetPropertyHandler_MAC_15_4_LADDR(uint8_t header, spinel_pr SPINEL_CMD_PROP_VALUE_IS, key, SPINEL_DATATYPE_EUI64_S, - otGetExtendedAddress(mInstance) + otLinkGetExtendedAddress(mInstance) ); } @@ -2022,7 +2022,7 @@ ThreadError NcpBase::GetPropertyHandler_MAC_15_4_SADDR(uint8_t header, spinel_pr SPINEL_CMD_PROP_VALUE_IS, key, SPINEL_DATATYPE_UINT16_S, - otGetShortAddress(mInstance) + otLinkGetShortAddress(mInstance) ); } @@ -2033,7 +2033,7 @@ ThreadError NcpBase::GetPropertyHandler_MAC_EXTENDED_ADDR(uint8_t header, spinel SPINEL_CMD_PROP_VALUE_IS, key, SPINEL_DATATYPE_EUI64_S, - otGetExtendedAddress(mInstance) + otLinkGetExtendedAddress(mInstance) ); } @@ -2868,7 +2868,7 @@ ThreadError NcpBase::GetPropertyHandler_MAC_CNTR(uint8_t header, spinel_prop_key const otMacCounters *macCounters; ThreadError errorCode = kThreadError_None; - macCounters = otGetMacCounters(mInstance); + macCounters = otLinkGetCounters(mInstance); assert(macCounters != NULL); @@ -3144,7 +3144,7 @@ ThreadError NcpBase::GetPropertyHandler_MAC_WHITELIST(uint8_t header, spinel_pro for (uint8_t i = 0; (i != 255) && (errorCode == kThreadError_None); i++) { - errorCode = otGetMacWhitelistEntry(mInstance, i, &entry); + errorCode = otLinkGetWhitelistEntry(mInstance, i, &entry); if (errorCode != kThreadError_None) { @@ -3176,7 +3176,7 @@ ThreadError NcpBase::GetPropertyHandler_MAC_WHITELIST_ENABLED(uint8_t header, sp SPINEL_CMD_PROP_VALUE_IS, key, SPINEL_DATATYPE_BOOL_S, - otIsMacWhitelistEnabled(mInstance) + otLinkIsWhitelistEnabled(mInstance) ); } @@ -3416,7 +3416,7 @@ ThreadError NcpBase::SetPropertyHandler_PHY_TX_POWER(uint8_t header, spinel_prop if (parsedLength > 0) { - otSetMaxTransmitPower(mInstance, value); + otLinkSetMaxTransmitPower(mInstance, value); errorCode = HandleCommandPropertyGet(header, key); } @@ -3444,7 +3444,7 @@ ThreadError NcpBase::SetPropertyHandler_PHY_CHAN(uint8_t header, spinel_prop_key if (parsedLength > 0) { - errorCode = otSetChannel(mInstance, static_cast(i)); + errorCode = otLinkSetChannel(mInstance, static_cast(i)); #if OPENTHREAD_ENABLE_RAW_LINK_API @@ -3665,7 +3665,7 @@ ThreadError NcpBase::SetPropertyHandler_MAC_SCAN_STATE(uint8_t header, spinel_pr else #endif // OPENTHREAD_ENABLE_RAW_LINK_API { - errorCode = otActiveScan( + errorCode = otLinkActiveScan( mInstance, mChannelMask, mScanPeriod, @@ -3714,7 +3714,7 @@ ThreadError NcpBase::SetPropertyHandler_MAC_SCAN_STATE(uint8_t header, spinel_pr else #endif // OPENTHREAD_ENABLE_RAW_LINK_API { - errorCode = otEnergyScan( + errorCode = otLinkEnergyScan( mInstance, mChannelMask, mScanPeriod, @@ -3768,7 +3768,7 @@ ThreadError NcpBase::SetPropertyHandler_MAC_15_4_PANID(uint8_t header, spinel_pr if (parsedLength > 0) { - errorCode = otSetPanId(mInstance, tmp); + errorCode = otLinkSetPanId(mInstance, tmp); if (errorCode == kThreadError_None) { @@ -3803,7 +3803,7 @@ ThreadError NcpBase::SetPropertyHandler_MAC_15_4_LADDR(uint8_t header, spinel_pr if (parsedLength > 0) { - errorCode = otSetExtendedAddress(mInstance, tmp); + errorCode = otLinkSetExtendedAddress(mInstance, tmp); if (errorCode == kThreadError_None) { @@ -4742,7 +4742,7 @@ ThreadError NcpBase::SetPropertyHandler_MAC_WHITELIST(uint8_t header, spinel_pro spinel_ssize_t parsedLength = 1; // First, clear the whitelist. - otClearMacWhitelist(mInstance); + otLinkClearWhitelist(mInstance); while ((errorCode == kThreadError_None) && (parsedLength > 0) @@ -4779,11 +4779,11 @@ ThreadError NcpBase::SetPropertyHandler_MAC_WHITELIST(uint8_t header, spinel_pro if (rssi == RSSI_OVERRIDE_DISABLED) { - errorCode = otAddMacWhitelist(mInstance, ext_addr->m8); + errorCode = otLinkAddWhitelist(mInstance, ext_addr->m8); } else { - errorCode = otAddMacWhitelistRssi(mInstance, ext_addr->m8, rssi); + errorCode = otLinkAddWhitelistRssi(mInstance, ext_addr->m8, rssi); } value_ptr += parsedLength; @@ -4824,15 +4824,7 @@ ThreadError NcpBase::SetPropertyHandler_MAC_WHITELIST_ENABLED(uint8_t header, sp if (parsedLength > 0) { - if (isEnabled) - { - otEnableMacWhitelist(mInstance); - } - else - { - otDisableMacWhitelist(mInstance); - } - + otLinkSetWhitelistEnabled(mInstance, isEnabled); errorCode = HandleCommandPropertyGet(header, key); } else @@ -5878,11 +5870,11 @@ ThreadError NcpBase::InsertPropertyHandler_MAC_WHITELIST(uint8_t header, spinel_ { if (rssi == RSSI_OVERRIDE_DISABLED) { - errorCode = otAddMacWhitelist(mInstance, ext_addr->m8); + errorCode = otLinkAddWhitelist(mInstance, ext_addr->m8); } else { - errorCode = otAddMacWhitelistRssi(mInstance, ext_addr->m8, rssi); + errorCode = otLinkAddWhitelistRssi(mInstance, ext_addr->m8, rssi); } if (errorCode == kThreadError_None) @@ -6241,7 +6233,7 @@ ThreadError NcpBase::RemovePropertyHandler_MAC_WHITELIST(uint8_t header, spinel_ if (parsedLength > 0) { - otRemoveMacWhitelist(mInstance, ext_addr.m8); + otLinkRemoveWhitelist(mInstance, ext_addr.m8); errorCode = SendPropertyUpdate( header, diff --git a/tests/unit/test_fuzz.cpp b/tests/unit/test_fuzz.cpp index 657692608..520299030 100644 --- a/tests/unit/test_fuzz.cpp +++ b/tests/unit/test_fuzz.cpp @@ -130,7 +130,7 @@ void TestFuzz(uint32_t aSeconds) VerifyOrQuit(aInstance != NULL, "Failed to initialize otInstance"); // Start the Thread network - otSetPanId(aInstance, (otPanId)0xFACE); + otLinkSetPanId(aInstance, (otPanId)0xFACE); otIp6SetEnabled(aInstance, true); otThreadStart(aInstance); @@ -186,7 +186,7 @@ void TestFuzz(uint32_t aSeconds) #endif // Hack to get a receive poll immediately - otSetChannel(aInstance, 11); + otLinkSetChannel(aInstance, 11); } } }