Skip to content

Commit 0da50e9

Browse files
authored
[Tizen] Implement GetThreadVersion() for Thread driver (#34976)
* [Tizen] Implement GetThreadVersion in thread stack manager * Move otThreadGetVersion() usage to Thread stack manager class * Update C++ style * Make GetThreadVersion public interface * Implement mock _GetThreadVersion() for Linux, NuttX and WebOS
1 parent 081598e commit 0da50e9

18 files changed

+109
-61
lines changed

src/include/platform/ThreadStackManager.h

+6
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ class ThreadStackManager
105105
CHIP_ERROR GetAndLogThreadTopologyFull();
106106
CHIP_ERROR GetPrimary802154MACAddress(uint8_t * buf);
107107
CHIP_ERROR GetExternalIPv6Address(chip::Inet::IPAddress & addr);
108+
CHIP_ERROR GetThreadVersion(uint16_t & version);
108109
CHIP_ERROR GetPollPeriod(uint32_t & buf);
109110

110111
CHIP_ERROR SetThreadProvision(ByteSpan aDataset);
@@ -444,6 +445,11 @@ inline CHIP_ERROR ThreadStackManager::GetExternalIPv6Address(chip::Inet::IPAddre
444445
return static_cast<ImplClass *>(this)->_GetExternalIPv6Address(addr);
445446
}
446447

448+
inline CHIP_ERROR ThreadStackManager::GetThreadVersion(uint16_t & version)
449+
{
450+
return static_cast<ImplClass *>(this)->_GetThreadVersion(version);
451+
}
452+
447453
inline CHIP_ERROR ThreadStackManager::GetPollPeriod(uint32_t & buf)
448454
{
449455
return static_cast<ImplClass *>(this)->_GetPollPeriod(buf);

src/platform/Linux/NetworkCommissioningThreadDriver.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,9 @@ ThreadCapabilities LinuxThreadDriver::GetSupportedThreadFeatures()
211211

212212
uint16_t LinuxThreadDriver::GetThreadVersion()
213213
{
214-
// TODO https://github.com/project-chip/connectedhomeip/issues/30602
215-
// Needs to be implemented with DBUS io.openthread.BorderRouter Thread API
216-
return 0;
214+
uint16_t version = 0;
215+
ThreadStackMgrImpl().GetThreadVersion(version);
216+
return version;
217217
}
218218

219219
#endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD

src/platform/Linux/ThreadStackManagerImpl.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,13 @@ CHIP_ERROR ThreadStackManagerImpl::_GetExternalIPv6Address(chip::Inet::IPAddress
563563
return CHIP_ERROR_NOT_IMPLEMENTED;
564564
}
565565

566+
CHIP_ERROR ThreadStackManagerImpl::_GetThreadVersion(uint16_t & version)
567+
{
568+
// TODO https://github.com/project-chip/connectedhomeip/issues/30602
569+
// Needs to be implemented with DBUS io.openthread.BorderRouter Thread API
570+
return CHIP_ERROR_NOT_IMPLEMENTED;
571+
}
572+
566573
CHIP_ERROR ThreadStackManagerImpl::_GetPollPeriod(uint32_t & buf)
567574
{
568575
// TODO: Remove Weave legacy APIs

src/platform/Linux/ThreadStackManagerImpl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ class ThreadStackManagerImpl : public ThreadStackManager
113113
CHIP_ERROR _GetPrimary802154MACAddress(uint8_t * buf);
114114

115115
CHIP_ERROR _GetExternalIPv6Address(chip::Inet::IPAddress & addr);
116-
116+
CHIP_ERROR _GetThreadVersion(uint16_t & version);
117117
CHIP_ERROR _GetPollPeriod(uint32_t & buf);
118118

119119
void _ResetThreadNetworkDiagnosticsCounts();

src/platform/NuttX/NetworkCommissioningThreadDriver.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,9 @@ ThreadCapabilities LinuxThreadDriver::GetSupportedThreadFeatures()
211211

212212
uint16_t LinuxThreadDriver::GetThreadVersion()
213213
{
214-
// TODO https://github.com/project-chip/connectedhomeip/issues/30602
215-
// Needs to be implemented with DBUS io.openthread.BorderRouter Thread API
216-
return 0;
214+
uint16_t version = 0;
215+
ThreadStackMgrImpl().GetThreadVersion(version);
216+
return version;
217217
}
218218

219219
#endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD

src/platform/NuttX/ThreadStackManagerImpl.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,13 @@ CHIP_ERROR ThreadStackManagerImpl::_GetExternalIPv6Address(chip::Inet::IPAddress
568568
return CHIP_ERROR_NOT_IMPLEMENTED;
569569
}
570570

571+
CHIP_ERROR ThreadStackManagerImpl::_GetThreadVersion(uint16_t & version)
572+
{
573+
// TODO https://github.com/project-chip/connectedhomeip/issues/30602
574+
// Needs to be implemented with DBUS io.openthread.BorderRouter Thread API
575+
return CHIP_ERROR_NOT_IMPLEMENTED;
576+
}
577+
571578
CHIP_ERROR ThreadStackManagerImpl::_GetPollPeriod(uint32_t & buf)
572579
{
573580
// TODO: Remove Weave legacy APIs

src/platform/NuttX/ThreadStackManagerImpl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ class ThreadStackManagerImpl : public ThreadStackManager
114114
CHIP_ERROR _GetPrimary802154MACAddress(uint8_t * buf);
115115

116116
CHIP_ERROR _GetExternalIPv6Address(chip::Inet::IPAddress & addr);
117-
117+
CHIP_ERROR _GetThreadVersion(uint16_t & version);
118118
CHIP_ERROR _GetPollPeriod(uint32_t & buf);
119119

120120
CHIP_ERROR _JoinerStart();

src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,9 @@ ThreadCapabilities GenericThreadDriver::GetSupportedThreadFeatures()
325325

326326
uint16_t GenericThreadDriver::GetThreadVersion()
327327
{
328-
return otThreadGetVersion();
328+
uint16_t version = 0;
329+
ThreadStackMgrImpl().GetThreadVersion(version);
330+
return version;
329331
}
330332

331333
} // namespace NetworkCommissioning

src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.h

+21-20
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class GenericThreadStackManagerImpl_OpenThread
7070

7171
otInstance * OTInstance() const;
7272
static void OnOpenThreadStateChange(uint32_t flags, void * context);
73-
inline void OverrunErrorTally(void);
73+
inline void OverrunErrorTally();
7474
void
7575
SetNetworkStatusChangeCallback(NetworkCommissioning::Internal::BaseDriver::NetworkStatusChangeCallback * statusChangeCallback)
7676
{
@@ -80,21 +80,21 @@ class GenericThreadStackManagerImpl_OpenThread
8080
protected:
8181
// ===== Methods that implement the ThreadStackManager abstract interface.
8282

83-
void _ProcessThreadActivity(void);
83+
void _ProcessThreadActivity();
8484
bool _HaveRouteToAddress(const Inet::IPAddress & destAddr);
8585
void _OnPlatformEvent(const ChipDeviceEvent * event);
86-
bool _IsThreadEnabled(void);
86+
bool _IsThreadEnabled();
8787
CHIP_ERROR _SetThreadEnabled(bool val);
8888

89-
bool _IsThreadProvisioned(void);
90-
bool _IsThreadAttached(void);
89+
bool _IsThreadProvisioned();
90+
bool _IsThreadAttached();
9191
CHIP_ERROR _GetThreadProvision(Thread::OperationalDataset & dataset);
9292
CHIP_ERROR _SetThreadProvision(ByteSpan netInfo);
9393
CHIP_ERROR _AttachToThreadNetwork(const Thread::OperationalDataset & dataset,
9494
NetworkCommissioning::Internal::WirelessDriver::ConnectCallback * callback);
95-
void _OnThreadAttachFinished(void);
96-
void _ErasePersistentInfo(void);
97-
ConnectivityManager::ThreadDeviceType _GetThreadDeviceType(void);
95+
void _OnThreadAttachFinished();
96+
void _ErasePersistentInfo();
97+
ConnectivityManager::ThreadDeviceType _GetThreadDeviceType();
9898
CHIP_ERROR _SetThreadDeviceType(ConnectivityManager::ThreadDeviceType deviceType);
9999
CHIP_ERROR _StartThreadScan(NetworkCommissioning::ThreadDriver::ScanCallback * callback);
100100
static void _OnNetworkScanFinished(otActiveScanResult * aResult, void * aContext);
@@ -105,16 +105,17 @@ class GenericThreadStackManagerImpl_OpenThread
105105
CHIP_ERROR _SetPollingInterval(System::Clock::Milliseconds32 pollingInterval);
106106
#endif // CHIP_CONFIG_ENABLE_ICD_SERVER
107107

108-
bool _HaveMeshConnectivity(void);
109-
CHIP_ERROR _GetAndLogThreadStatsCounters(void);
110-
CHIP_ERROR _GetAndLogThreadTopologyMinimal(void);
111-
CHIP_ERROR _GetAndLogThreadTopologyFull(void);
108+
bool _HaveMeshConnectivity();
109+
CHIP_ERROR _GetAndLogThreadStatsCounters();
110+
CHIP_ERROR _GetAndLogThreadTopologyMinimal();
111+
CHIP_ERROR _GetAndLogThreadTopologyFull();
112112
CHIP_ERROR _GetPrimary802154MACAddress(uint8_t * buf);
113113
CHIP_ERROR _GetExternalIPv6Address(chip::Inet::IPAddress & addr);
114-
void _ResetThreadNetworkDiagnosticsCounts(void);
114+
CHIP_ERROR _GetThreadVersion(uint16_t & version);
115+
void _ResetThreadNetworkDiagnosticsCounts();
115116
CHIP_ERROR _GetPollPeriod(uint32_t & buf);
116-
void _OnWoBLEAdvertisingStart(void);
117-
void _OnWoBLEAdvertisingStop(void);
117+
void _OnWoBLEAdvertisingStart();
118+
void _OnWoBLEAdvertisingStop();
118119

119120
#if CHIP_DEVICE_CONFIG_ENABLE_THREAD_SRP_CLIENT
120121
CHIP_ERROR _AddSrpService(const char * aInstanceName, const char * aName, uint16_t aPort,
@@ -144,8 +145,8 @@ class GenericThreadStackManagerImpl_OpenThread
144145

145146
CHIP_ERROR ConfigureThreadStack(otInstance * otInst);
146147
CHIP_ERROR DoInit(otInstance * otInst);
147-
bool IsThreadAttachedNoLock(void);
148-
bool IsThreadInterfaceUpNoLock(void);
148+
bool IsThreadAttachedNoLock();
149+
bool IsThreadInterfaceUpNoLock();
149150

150151
private:
151152
// ===== Private members for use by this class only.
@@ -282,19 +283,19 @@ inline otInstance * GenericThreadStackManagerImpl_OpenThread<ImplClass>::OTInsta
282283
}
283284

284285
template <class ImplClass>
285-
inline void GenericThreadStackManagerImpl_OpenThread<ImplClass>::OverrunErrorTally(void)
286+
inline void GenericThreadStackManagerImpl_OpenThread<ImplClass>::OverrunErrorTally()
286287
{
287288
mOverrunCount++;
288289
}
289290

290291
template <class ImplClass>
291-
inline void GenericThreadStackManagerImpl_OpenThread<ImplClass>::_OnWoBLEAdvertisingStart(void)
292+
inline void GenericThreadStackManagerImpl_OpenThread<ImplClass>::_OnWoBLEAdvertisingStart()
292293
{
293294
// Do nothing by default.
294295
}
295296

296297
template <class ImplClass>
297-
inline void GenericThreadStackManagerImpl_OpenThread<ImplClass>::_OnWoBLEAdvertisingStop(void)
298+
inline void GenericThreadStackManagerImpl_OpenThread<ImplClass>::_OnWoBLEAdvertisingStop()
298299
{
299300
// Do nothing by default.
300301
}

src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.hpp

+21-14
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#define GENERIC_THREAD_STACK_MANAGER_IMPL_OPENTHREAD_IPP
2828

2929
#include <cassert>
30+
#include <limits>
3031

3132
#include <openthread/cli.h>
3233
#include <openthread/dataset.h>
@@ -59,7 +60,6 @@
5960
#include <platform/ThreadStackManager.h>
6061
#include <platform/internal/CHIPDeviceLayerInternal.h>
6162

62-
#include <limits>
6363
extern "C" void otSysProcessDrivers(otInstance * aInstance);
6464

6565
#if CHIP_DEVICE_CONFIG_THREAD_ENABLE_CLI
@@ -80,7 +80,7 @@ app::Clusters::NetworkCommissioning::Instance
8080
sThreadNetworkCommissioningInstance(CHIP_DEVICE_CONFIG_THREAD_NETWORK_ENDPOINT_ID /* Endpoint Id */, &sGenericThreadDriver);
8181
#endif
8282

83-
void initNetworkCommissioningThreadDriver(void)
83+
void initNetworkCommissioningThreadDriver()
8484
{
8585
#ifndef _NO_GENERIC_THREAD_NETWORK_COMMISSIONING_DRIVER_
8686
sThreadNetworkCommissioningInstance.Init();
@@ -143,7 +143,7 @@ void GenericThreadStackManagerImpl_OpenThread<ImplClass>::OnOpenThreadStateChang
143143
}
144144

145145
template <class ImplClass>
146-
void GenericThreadStackManagerImpl_OpenThread<ImplClass>::_ProcessThreadActivity(void)
146+
void GenericThreadStackManagerImpl_OpenThread<ImplClass>::_ProcessThreadActivity()
147147
{
148148
otTaskletsProcess(mOTInst);
149149
otSysProcessDrivers(mOTInst);
@@ -256,7 +256,7 @@ void GenericThreadStackManagerImpl_OpenThread<ImplClass>::_OnPlatformEvent(const
256256
}
257257

258258
template <class ImplClass>
259-
bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::_IsThreadEnabled(void)
259+
bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::_IsThreadEnabled()
260260
{
261261
VerifyOrReturnValue(mOTInst, false);
262262
otDeviceRole curRole;
@@ -330,7 +330,7 @@ CHIP_ERROR GenericThreadStackManagerImpl_OpenThread<ImplClass>::_SetThreadProvis
330330
}
331331

332332
template <class ImplClass>
333-
bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::_IsThreadProvisioned(void)
333+
bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::_IsThreadProvisioned()
334334
{
335335
VerifyOrReturnValue(mOTInst, false);
336336
bool provisioned;
@@ -363,7 +363,7 @@ CHIP_ERROR GenericThreadStackManagerImpl_OpenThread<ImplClass>::_GetThreadProvis
363363
}
364364

365365
template <class ImplClass>
366-
bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::_IsThreadAttached(void)
366+
bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::_IsThreadAttached()
367367
{
368368
VerifyOrReturnValue(mOTInst, false);
369369
otDeviceRole curRole;
@@ -525,7 +525,7 @@ void GenericThreadStackManagerImpl_OpenThread<ImplClass>::_OnNetworkScanFinished
525525
}
526526

527527
template <class ImplClass>
528-
ConnectivityManager::ThreadDeviceType GenericThreadStackManagerImpl_OpenThread<ImplClass>::_GetThreadDeviceType(void)
528+
ConnectivityManager::ThreadDeviceType GenericThreadStackManagerImpl_OpenThread<ImplClass>::_GetThreadDeviceType()
529529
{
530530
VerifyOrReturnValue(mOTInst, ConnectivityManager::kThreadDeviceType_NotSupported);
531531
ConnectivityManager::ThreadDeviceType deviceType;
@@ -651,7 +651,7 @@ GenericThreadStackManagerImpl_OpenThread<ImplClass>::_SetThreadDeviceType(Connec
651651
}
652652

653653
template <class ImplClass>
654-
bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::_HaveMeshConnectivity(void)
654+
bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::_HaveMeshConnectivity()
655655
{
656656
VerifyOrReturnValue(mOTInst, false);
657657
bool res;
@@ -700,7 +700,7 @@ bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::_HaveMeshConnectivity(
700700
}
701701

702702
template <class ImplClass>
703-
CHIP_ERROR GenericThreadStackManagerImpl_OpenThread<ImplClass>::_GetAndLogThreadStatsCounters(void)
703+
CHIP_ERROR GenericThreadStackManagerImpl_OpenThread<ImplClass>::_GetAndLogThreadStatsCounters()
704704
{
705705
VerifyOrReturnError(mOTInst, CHIP_ERROR_INCORRECT_STATE);
706706
CHIP_ERROR err = CHIP_NO_ERROR;
@@ -795,7 +795,7 @@ CHIP_ERROR GenericThreadStackManagerImpl_OpenThread<ImplClass>::_GetAndLogThread
795795
}
796796

797797
template <class ImplClass>
798-
CHIP_ERROR GenericThreadStackManagerImpl_OpenThread<ImplClass>::_GetAndLogThreadTopologyMinimal(void)
798+
CHIP_ERROR GenericThreadStackManagerImpl_OpenThread<ImplClass>::_GetAndLogThreadTopologyMinimal()
799799
{
800800
VerifyOrReturnError(mOTInst, CHIP_ERROR_INCORRECT_STATE);
801801
CHIP_ERROR err = CHIP_NO_ERROR;
@@ -1072,7 +1072,14 @@ CHIP_ERROR GenericThreadStackManagerImpl_OpenThread<ImplClass>::_GetExternalIPv6
10721072
}
10731073

10741074
template <class ImplClass>
1075-
void GenericThreadStackManagerImpl_OpenThread<ImplClass>::_ResetThreadNetworkDiagnosticsCounts(void)
1075+
CHIP_ERROR GenericThreadStackManagerImpl_OpenThread<ImplClass>::_GetThreadVersion(uint16_t & version)
1076+
{
1077+
version = otThreadGetVersion();
1078+
return CHIP_NO_ERROR;
1079+
}
1080+
1081+
template <class ImplClass>
1082+
void GenericThreadStackManagerImpl_OpenThread<ImplClass>::_ResetThreadNetworkDiagnosticsCounts()
10761083
{
10771084
// Based on the spec, only OverrunCount should be resetted.
10781085
mOverrunCount = 0;
@@ -1175,14 +1182,14 @@ CHIP_ERROR GenericThreadStackManagerImpl_OpenThread<ImplClass>::DoInit(otInstanc
11751182
}
11761183

11771184
template <class ImplClass>
1178-
bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::IsThreadAttachedNoLock(void)
1185+
bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::IsThreadAttachedNoLock()
11791186
{
11801187
otDeviceRole curRole = otThreadGetDeviceRole(mOTInst);
11811188
return (curRole != OT_DEVICE_ROLE_DISABLED && curRole != OT_DEVICE_ROLE_DETACHED);
11821189
}
11831190

11841191
template <class ImplClass>
1185-
bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::IsThreadInterfaceUpNoLock(void)
1192+
bool GenericThreadStackManagerImpl_OpenThread<ImplClass>::IsThreadInterfaceUpNoLock()
11861193
{
11871194
return otIp6IsEnabled(mOTInst);
11881195
}
@@ -1242,7 +1249,7 @@ CHIP_ERROR GenericThreadStackManagerImpl_OpenThread<ImplClass>::_SetPollingInter
12421249
#endif // CHIP_CONFIG_ENABLE_ICD_SERVER
12431250

12441251
template <class ImplClass>
1245-
void GenericThreadStackManagerImpl_OpenThread<ImplClass>::_ErasePersistentInfo(void)
1252+
void GenericThreadStackManagerImpl_OpenThread<ImplClass>::_ErasePersistentInfo()
12461253
{
12471254
VerifyOrReturn(mOTInst);
12481255
ChipLogProgress(DeviceLayer, "Erasing Thread persistent info...");

src/platform/OpenThread/OpenThreadUtils.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ bool FormatOpenThreadError(char * buf, uint16_t bufSize, CHIP_ERROR err)
8080
/**
8181
* Register a text error formatter for OpenThread errors.
8282
*/
83-
void RegisterOpenThreadErrorFormatter(void)
83+
void RegisterOpenThreadErrorFormatter()
8484
{
8585
static ErrorFormatter sOpenThreadErrorFormatter = { FormatOpenThreadError, NULL };
8686

src/platform/OpenThread/OpenThreadUtils.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ namespace Internal {
5959
#endif // CHIP_CONFIG_OPENTHREAD_ERROR_MAX
6060

6161
extern CHIP_ERROR MapOpenThreadError(otError otErr);
62-
extern void RegisterOpenThreadErrorFormatter(void);
62+
extern void RegisterOpenThreadErrorFormatter();
6363

6464
/**
6565
* Log information related to a state change in the OpenThread stack.

0 commit comments

Comments
 (0)