openthread-br  0.3.0-72c0388
dbus_thread_object.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020, The OpenThread Authors.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  * 1. Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * 3. Neither the name of the copyright holder nor the
13  * names of its contributors may be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26  * POSSIBILITY OF SUCH DAMAGE.
27  */
28 
34 #ifndef OTBR_DBUS_THREAD_OBJECT_HPP_
35 #define OTBR_DBUS_THREAD_OBJECT_HPP_
36 
37 #include <string>
38 
39 #include <openthread/link.h>
40 
42 #include "mdns/mdns.hpp"
43 #include "ncp/ncp_openthread.hpp"
44 
45 namespace otbr {
46 namespace DBus {
47 
59 class DBusAgent;
60 
62 {
63 public:
73  DBusThreadObject(DBusConnection * aConnection,
74  const std::string & aInterfaceName,
76  Mdns::Publisher * aPublisher);
77 
78  otbrError Init(void) override;
79 
80  void RegisterGetPropertyHandler(const std::string & aInterfaceName,
81  const std::string & aPropertyName,
82  const PropertyHandlerType &aHandler) override;
83 
84 private:
85  void DeviceRoleHandler(otDeviceRole aDeviceRole);
86  void ActiveDatasetChangeHandler(const otOperationalDatasetTlvs &aDatasetTlvs);
87  void NcpResetHandler(void);
88 
89  void ScanHandler(DBusRequest &aRequest);
90  void EnergyScanHandler(DBusRequest &aRequest);
91  void AttachHandler(DBusRequest &aRequest);
92  void AttachAllNodesToHandler(DBusRequest &aRequest);
93  void DetachHandler(DBusRequest &aRequest);
94  void LeaveHandler(DBusRequest &aRequest);
95  void FactoryResetHandler(DBusRequest &aRequest);
96  void ResetHandler(DBusRequest &aRequest);
97  void JoinerStartHandler(DBusRequest &aRequest);
98  void JoinerStopHandler(DBusRequest &aRequest);
99  void PermitUnsecureJoinHandler(DBusRequest &aRequest);
100  void AddOnMeshPrefixHandler(DBusRequest &aRequest);
101  void RemoveOnMeshPrefixHandler(DBusRequest &aRequest);
102  void AddExternalRouteHandler(DBusRequest &aRequest);
103  void RemoveExternalRouteHandler(DBusRequest &aRequest);
104  void UpdateMeshCopTxtHandler(DBusRequest &aRequest);
105  void GetPropertiesHandler(DBusRequest &aRequest);
106  void LeaveNetworkHandler(DBusRequest &aRequest);
107  void SetNat64Enabled(DBusRequest &aRequest);
108 
109  void IntrospectHandler(DBusRequest &aRequest);
110 
111  otError SetMeshLocalPrefixHandler(DBusMessageIter &aIter);
112  otError SetLegacyUlaPrefixHandler(DBusMessageIter &aIter);
113  otError SetLinkModeHandler(DBusMessageIter &aIter);
114  otError SetActiveDatasetTlvsHandler(DBusMessageIter &aIter);
115  otError SetFeatureFlagListDataHandler(DBusMessageIter &aIter);
116  otError SetRadioRegionHandler(DBusMessageIter &aIter);
117 
118  otError GetLinkModeHandler(DBusMessageIter &aIter);
119  otError GetDeviceRoleHandler(DBusMessageIter &aIter);
120  otError GetNetworkNameHandler(DBusMessageIter &aIter);
121  otError GetPanIdHandler(DBusMessageIter &aIter);
122  otError GetExtPanIdHandler(DBusMessageIter &aIter);
123  otError GetEui64Handler(DBusMessageIter &aIter);
124  otError GetChannelHandler(DBusMessageIter &aIter);
125  otError GetNetworkKeyHandler(DBusMessageIter &aIter);
126  otError GetCcaFailureRateHandler(DBusMessageIter &aIter);
127  otError GetLinkCountersHandler(DBusMessageIter &aIter);
128  otError GetIp6CountersHandler(DBusMessageIter &aIter);
129  otError GetSupportedChannelMaskHandler(DBusMessageIter &aIter);
130  otError GetRloc16Handler(DBusMessageIter &aIter);
131  otError GetExtendedAddressHandler(DBusMessageIter &aIter);
132  otError GetRouterIdHandler(DBusMessageIter &aIter);
133  otError GetLeaderDataHandler(DBusMessageIter &aIter);
134  otError GetNetworkDataHandler(DBusMessageIter &aIter);
135  otError GetStableNetworkDataHandler(DBusMessageIter &aIter);
136  otError GetLocalLeaderWeightHandler(DBusMessageIter &aIter);
137  otError GetChannelMonitorSampleCountHandler(DBusMessageIter &aIter);
138  otError GetChannelMonitorAllChannelQualities(DBusMessageIter &aIter);
139  otError GetChildTableHandler(DBusMessageIter &aIter);
140  otError GetNeighborTableHandler(DBusMessageIter &aIter);
141  otError GetPartitionIDHandler(DBusMessageIter &aIter);
142  otError GetInstantRssiHandler(DBusMessageIter &aIter);
143  otError GetRadioTxPowerHandler(DBusMessageIter &aIter);
144  otError GetExternalRoutesHandler(DBusMessageIter &aIter);
145  otError GetOnMeshPrefixesHandler(DBusMessageIter &aIter);
146  otError GetActiveDatasetTlvsHandler(DBusMessageIter &aIter);
147  otError GetFeatureFlagListDataHandler(DBusMessageIter &aIter);
148  otError GetRadioRegionHandler(DBusMessageIter &aIter);
149  otError GetSrpServerInfoHandler(DBusMessageIter &aIter);
150  otError GetMdnsTelemetryInfoHandler(DBusMessageIter &aIter);
151  otError GetDnssdCountersHandler(DBusMessageIter &aIter);
152  otError GetOtHostVersionHandler(DBusMessageIter &aIter);
153  otError GetOtRcpVersionHandler(DBusMessageIter &aIter);
154  otError GetThreadVersionHandler(DBusMessageIter &aIter);
155  otError GetRadioSpinelMetricsHandler(DBusMessageIter &aIter);
156  otError GetRcpInterfaceMetricsHandler(DBusMessageIter &aIter);
157  otError GetUptimeHandler(DBusMessageIter &aIter);
158  otError GetRadioCoexMetrics(DBusMessageIter &aIter);
159  otError GetBorderRoutingCountersHandler(DBusMessageIter &aIter);
160  otError GetNat64State(DBusMessageIter &aIter);
161  otError GetNat64Mappings(DBusMessageIter &aIter);
162  otError GetNat64ProtocolCounters(DBusMessageIter &aIter);
163  otError GetNat64ErrorCounters(DBusMessageIter &aIter);
164 
165  void ReplyScanResult(DBusRequest &aRequest, otError aError, const std::vector<otActiveScanResult> &aResult);
166  void ReplyEnergyScanResult(DBusRequest &aRequest, otError aError, const std::vector<otEnergyScanResult> &aResult);
167 
169  std::unordered_map<std::string, PropertyHandlerType> mGetPropertyHandlers;
170  otbr::Mdns::Publisher * mPublisher;
171 };
172 
173 } // namespace DBus
174 } // namespace otbr
175 
176 #endif // OTBR_DBUS_THREAD_OBJECT_HPP_
otbr::DBus::DBusThreadObject::RegisterGetPropertyHandler
void RegisterGetPropertyHandler(const std::string &aInterfaceName, const std::string &aPropertyName, const PropertyHandlerType &aHandler) override
Definition: dbus_thread_object.cpp:1455
otbr::DBus::DBusRequest
Definition: dbus_request.hpp:53
otbr::DBus::DBusObject
Definition: dbus_object.hpp:63
otbr::DBus::DBusThreadObject
Definition: dbus_thread_object.hpp:61
ncp_openthread.hpp
otbr::DBus::DBusThreadObject::Init
otbrError Init(void) override
Definition: dbus_thread_object.cpp:135
otbr::Mdns::Publisher
Definition: mdns.hpp:67
dbus_object.hpp
otbr::DBus::DBusThreadObject::DBusThreadObject
DBusThreadObject(DBusConnection *aConnection, const std::string &aInterfaceName, otbr::Ncp::ControllerOpenThread *aNcp, Mdns::Publisher *aPublisher)
Definition: dbus_thread_object.cpp:125
otbrError
otbrError
Definition: types.hpp:70
mdns.hpp
otbr::Ncp::ControllerOpenThread
Definition: ncp_openthread.hpp:64