OpenZWave Library  1.5.0
Manager.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 //
3 // Manager.h
4 //
5 // The main public interface to OpenZWave.
6 //
7 // Copyright (c) 2010 Mal Lansell <openzwave@lansell.org>
8 //
9 // SOFTWARE NOTICE AND LICENSE
10 //
11 // This file is part of OpenZWave.
12 //
13 // OpenZWave is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU Lesser General Public License as published
15 // by the Free Software Foundation, either version 3 of the License,
16 // or (at your option) any later version.
17 //
18 // OpenZWave is distributed in the hope that it will be useful,
19 // but WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 // GNU Lesser General Public License for more details.
22 //
23 // You should have received a copy of the GNU Lesser General Public License
24 // along with OpenZWave. If not, see <http://www.gnu.org/licenses/>.
25 //
26 //-----------------------------------------------------------------------------
27 
28 #ifndef _Manager_H
29 #define _Manager_H
30 
31 #include <string>
32 #include <cstring>
33 #include <vector>
34 #include <map>
35 #include <list>
36 #include <deque>
37 
38 #include "Defs.h"
39 #include "Driver.h"
40 #include "Group.h"
41 #include "value_classes/ValueID.h"
42 
43 namespace OpenZWave
44 {
45  class Options;
46  class Node;
47  class Msg;
48  class Value;
49  class Event;
50  class Mutex;
51  class SerialPort;
52  class Thread;
53  class Notification;
54  class ValueBool;
55  class ValueByte;
56  class ValueDecimal;
57  class ValueInt;
58  class ValueList;
59  class ValueShort;
60  class ValueString;
61  class ValueRaw;
62 
110  {
111  friend class Driver;
112  friend class CommandClass;
113  friend class Group;
114  friend class Node;
115  friend class Value;
116  friend class ValueStore;
117  friend class ValueButton;
118  friend class Msg;
119 
120  public:
121  typedef void (*pfnOnNotification_t)( Notification const* _pNotification, void* _context );
122 
123  //-----------------------------------------------------------------------------
124  // Construction
125  //-----------------------------------------------------------------------------
130  public:
143  static Manager* Create();
144 
150  static Manager* Get(){ return s_instance; }
151 
156  static void Destroy();
157 
162  static std::string getVersionAsString();
163 
168  static std::string getVersionLongAsString();
169 
174  static ozwversion getVersion();
177  private:
178  Manager(); // Constructor, to be called only via the static Create method.
179  virtual ~Manager(); // Destructor, to be called only via the static Destroy method.
180 
181  bool m_exit; // Flag indicating that program exit is in progress.
182  static Manager* s_instance; // Pointer to the instance of the Manager singleton.
183 
184  //-----------------------------------------------------------------------------
185  // Configuration
186  //-----------------------------------------------------------------------------
192  public:
203  void WriteConfig( uint32 const _homeId );
204 
210  Options* GetOptions()const{ return m_options; }
213  private:
214  Options* m_options; // Pointer to the locked Options object that was passed in during creation.
215 
216  //-----------------------------------------------------------------------------
217  // Drivers
218  //-----------------------------------------------------------------------------
223  public:
236  bool AddDriver( string const& _controllerPath, Driver::ControllerInterface const& _interface = Driver::ControllerInterface_Serial);
237 
248  bool RemoveDriver( string const& _controllerPath );
249 
255  uint8 GetControllerNodeId( uint32 const _homeId );
256 
262  uint8 GetSUCNodeId( uint32 const _homeId );
263 
278  bool IsPrimaryController( uint32 const _homeId );
279 
287  bool IsStaticUpdateController( uint32 const _homeId );
288 
296  bool IsBridgeController( uint32 const _homeId );
297 
303  string GetLibraryVersion( uint32 const _homeId );
304 
324  string GetLibraryTypeName( uint32 const _homeId );
325 
331  int32 GetSendQueueCount( uint32 const _homeId );
332 
337  void LogDriverStatistics( uint32 const _homeId );
338 
343  Driver::ControllerInterface GetControllerInterfaceType( uint32 const _homeId );
344 
349  string GetControllerPath( uint32 const _homeId );
352  private:
353  Driver* GetDriver( uint32 const _homeId );
354  void SetDriverReady( Driver* _driver, bool success );
357  list<Driver*> m_pendingDrivers;
358  map<uint32,Driver*> m_readyDrivers;
360 
361  //-----------------------------------------------------------------------------
362  // Polling Z-Wave devices
363  //-----------------------------------------------------------------------------
370  public:
374  int32 GetPollInterval();
375 
387  void SetPollInterval( int32 _milliseconds, bool _bIntervalBetweenPolls );
388 
395  bool EnablePoll( ValueID const &_valueId, uint8 const _intensity = 1 );
396 
402  bool DisablePoll( ValueID const &_valueId );
403 
409  bool isPolled( ValueID const &_valueId );
410 
415  void SetPollIntensity( ValueID const &_valueId, uint8 const _intensity );
416 
424  uint8 GetPollIntensity( ValueID const &_valueId );
425 
428  //-----------------------------------------------------------------------------
429  // Node information
430  //-----------------------------------------------------------------------------
435  public:
447  bool RefreshNodeInfo( uint32 const _homeId, uint8 const _nodeId );
448 
457  bool RequestNodeState( uint32 const _homeId, uint8 const _nodeId );
458 
467  bool RequestNodeDynamic( uint32 const _homeId, uint8 const _nodeId );
468 
475  bool IsNodeListeningDevice( uint32 const _homeId, uint8 const _nodeId );
476 
484  bool IsNodeFrequentListeningDevice( uint32 const _homeId, uint8 const _nodeId );
485 
492  bool IsNodeBeamingDevice( uint32 const _homeId, uint8 const _nodeId );
493 
500  bool IsNodeRoutingDevice( uint32 const _homeId, uint8 const _nodeId );
501 
508  bool IsNodeSecurityDevice( uint32 const _homeId, uint8 const _nodeId );
509 
516  uint32 GetNodeMaxBaudRate( uint32 const _homeId, uint8 const _nodeId );
517 
524  uint8 GetNodeVersion( uint32 const _homeId, uint8 const _nodeId );
525 
532  uint8 GetNodeSecurity( uint32 const _homeId, uint8 const _nodeId );
533 
541  bool IsNodeZWavePlus( uint32 const _homeId, uint8 const _nodeId );
542 
549  uint8 GetNodeBasic( uint32 const _homeId, uint8 const _nodeId );
550 
557  uint8 GetNodeGeneric( uint32 const _homeId, uint8 const _nodeId );
558 
565  uint8 GetNodeSpecific( uint32 const _homeId, uint8 const _nodeId );
566 
574  string GetNodeType( uint32 const _homeId, uint8 const _nodeId );
575 
583  uint32 GetNodeNeighbors( uint32 const _homeId, uint8 const _nodeId, uint8** _nodeNeighbors );
584 
598  string GetNodeManufacturerName( uint32 const _homeId, uint8 const _nodeId );
599 
613  string GetNodeProductName( uint32 const _homeId, uint8 const _nodeId );
614 
627  string GetNodeName( uint32 const _homeId, uint8 const _nodeId );
628 
640  string GetNodeLocation( uint32 const _homeId, uint8 const _nodeId );
641 
656  string GetNodeManufacturerId( uint32 const _homeId, uint8 const _nodeId );
657 
672  string GetNodeProductType( uint32 const _homeId, uint8 const _nodeId );
673 
688  string GetNodeProductId( uint32 const _homeId, uint8 const _nodeId );
689 
703  void SetNodeManufacturerName( uint32 const _homeId, uint8 const _nodeId, string const& _manufacturerName );
704 
718  void SetNodeProductName( uint32 const _homeId, uint8 const _nodeId, string const& _productName );
719 
733  void SetNodeName( uint32 const _homeId, uint8 const _nodeId, string const& _nodeName );
734 
747  void SetNodeLocation( uint32 const _homeId, uint8 const _nodeId, string const& _location );
748 
759  void SetNodeOn( uint32 const _homeId, uint8 const _nodeId );
760 
770  void SetNodeOff( uint32 const _homeId, uint8 const _nodeId );
771 
783  void SetNodeLevel( uint32 const _homeId, uint8 const _nodeId, uint8 const _level );
784 
791  bool IsNodeInfoReceived( uint32 const _homeId, uint8 const _nodeId );
792 
800  bool GetNodeClassInformation( uint32 const _homeId, uint8 const _nodeId, uint8 const _commandClassId,
801  string *_className = NULL, uint8 *_classVersion = NULL);
808  bool IsNodeAwake( uint32 const _homeId, uint8 const _nodeId );
809 
816  bool IsNodeFailed( uint32 const _homeId, uint8 const _nodeId );
817 
824  string GetNodeQueryStage( uint32 const _homeId, uint8 const _nodeId );
825 
826 
833  uint16 GetNodeDeviceType( uint32 const _homeId, uint8 const _nodeId );
834 
841  string GetNodeDeviceTypeString( uint32 const _homeId, uint8 const _nodeId );
842 
849  uint8 GetNodeRole( uint32 const _homeId, uint8 const _nodeId );
850 
857  string GetNodeRoleString( uint32 const _homeId, uint8 const _nodeId );
858 
865  uint8 GetNodePlusType( uint32 const _homeId, uint8 const _nodeId );
872  string GetNodePlusTypeString ( uint32 const _homeId, uint8 const _nodeId );
873 
874 
875 
878  //-----------------------------------------------------------------------------
879  // Values
880  //-----------------------------------------------------------------------------
886  public:
895  string GetValueLabel( ValueID const& _id );
896 
905  void SetValueLabel( ValueID const& _id, string const& _value );
906 
915  string GetValueUnits( ValueID const& _id );
916 
925  void SetValueUnits( ValueID const& _id, string const& _value );
926 
935  string GetValueHelp( ValueID const& _id );
936 
945  void SetValueHelp( ValueID const& _id, string const& _value );
946 
955  int32 GetValueMin( ValueID const& _id );
956 
965  int32 GetValueMax( ValueID const& _id );
966 
975  bool IsValueReadOnly( ValueID const& _id );
976 
985  bool IsValueWriteOnly( ValueID const& _id );
986 
995  bool IsValueSet( ValueID const& _id );
996 
1005  bool IsValuePolled( ValueID const& _id );
1006 
1017  bool GetValueAsBool( ValueID const& _id, bool* o_value );
1018 
1029  bool GetValueAsByte( ValueID const& _id, uint8* o_value );
1030 
1041  bool GetValueAsFloat( ValueID const& _id, float* o_value );
1042 
1053  bool GetValueAsInt( ValueID const& _id, int32* o_value );
1054 
1065  bool GetValueAsShort( ValueID const& _id, int16* o_value );
1066 
1078  bool GetValueAsString( ValueID const& _id, string* o_value );
1079 
1091  bool GetValueAsRaw( ValueID const& _id, uint8** o_value, uint8* o_length );
1092 
1103  bool GetValueListSelection( ValueID const& _id, string* o_value );
1104 
1115  bool GetValueListSelection( ValueID const& _id, int32* o_value );
1116 
1127  bool GetValueListItems( ValueID const& _id, vector<string>* o_value );
1128 
1139  bool GetValueListValues( ValueID const& _id, vector<int32>* o_value );
1140 
1151  bool GetValueFloatPrecision( ValueID const& _id, uint8* o_value );
1152 
1166  bool SetValue( ValueID const& _id, bool const _value );
1167 
1180  bool SetValue( ValueID const& _id, uint8 const _value );
1181 
1195  bool SetValue( ValueID const& _id, float const _value );
1196 
1209  bool SetValue( ValueID const& _id, int32 const _value );
1210 
1223  bool SetValue( ValueID const& _id, int16 const _value );
1224 
1237  bool SetValue( ValueID const& _id, uint8 const* _value, uint8 const _length );
1238 
1251  bool SetValue( ValueID const& _id, string const& _value );
1252 
1266  bool SetValueListSelection( ValueID const& _id, string const& _selectedItem );
1267 
1277  bool RefreshValue( ValueID const& _id);
1278 
1289  void SetChangeVerified( ValueID const& _id, bool _verify );
1290 
1300  bool GetChangeVerified( ValueID const& _id );
1301 
1311  bool PressButton( ValueID const& _id );
1312 
1322  bool ReleaseButton( ValueID const& _id );
1325  //-----------------------------------------------------------------------------
1326  // Climate Control Schedules
1327  //-----------------------------------------------------------------------------
1341 
1350  uint8 GetNumSwitchPoints( ValueID const& _id );
1351 
1371  bool SetSwitchPoint( ValueID const& _id, uint8 const _hours, uint8 const _minutes, int8 const _setback );
1372 
1388  bool RemoveSwitchPoint( ValueID const& _id, uint8 const _hours, uint8 const _minutes );
1389 
1398  void ClearSwitchPoints( ValueID const& _id );
1399 
1417  bool GetSwitchPoint( ValueID const& _id, uint8 const _idx, uint8* o_hours, uint8* o_minutes, int8* o_setback );
1418 
1421  //-----------------------------------------------------------------------------
1422  // SwitchAll
1423  //-----------------------------------------------------------------------------
1431 
1436  void SwitchAllOn( uint32 const _homeId );
1437 
1442  void SwitchAllOff( uint32 const _homeId );
1443 
1446  //-----------------------------------------------------------------------------
1447  // Configuration Parameters
1448  //-----------------------------------------------------------------------------
1458  public:
1474  bool SetConfigParam( uint32 const _homeId, uint8 const _nodeId, uint8 const _param, int32 _value, uint8 const _size = 2 );
1475 
1491  void RequestConfigParam( uint32 const _homeId, uint8 const _nodeId, uint8 const _param );
1492 
1499  void RequestAllConfigParams( uint32 const _homeId, uint8 const _nodeId );
1502  //-----------------------------------------------------------------------------
1503  // Groups (wrappers for the Node methods)
1504  //-----------------------------------------------------------------------------
1509  public:
1519  uint8 GetNumGroups( uint32 const _homeId, uint8 const _nodeId );
1520 
1532  uint32 GetAssociations( uint32 const _homeId, uint8 const _nodeId, uint8 const _groupIdx, uint8** o_associations );
1533 
1545  uint32 GetAssociations( uint32 const _homeId, uint8 const _nodeId, uint8 const _groupIdx, InstanceAssociation** o_associations );
1546 
1555  uint8 GetMaxAssociations( uint32 const _homeId, uint8 const _nodeId, uint8 const _groupIdx );
1556 
1565  string GetGroupLabel( uint32 const _homeId, uint8 const _nodeId, uint8 const _groupIdx );
1566 
1579  void AddAssociation( uint32 const _homeId, uint8 const _nodeId, uint8 const _groupIdx, uint8 const _targetNodeId, uint8 const _instance = 0x00 );
1580 
1593  void RemoveAssociation( uint32 const _homeId, uint8 const _nodeId, uint8 const _groupIdx, uint8 const _targetNodeId, uint8 const _instance = 0x00 );
1594 
1597  //-----------------------------------------------------------------------------
1598  // Notifications
1599  //-----------------------------------------------------------------------------
1604  public:
1615  bool AddWatcher( pfnOnNotification_t _watcher, void* _context );
1616 
1624  bool RemoveWatcher( pfnOnNotification_t _watcher, void* _context );
1627  private:
1628  void NotifyWatchers( Notification* _notification ); // Passes the notifications to all the registered watcher callbacks in turn.
1629 
1630  struct Watcher
1631  {
1632  pfnOnNotification_t m_callback;
1633  void* m_context;
1634 
1635  Watcher
1636  (
1637  pfnOnNotification_t _callback,
1638  void* _context
1639  ):
1640  m_callback( _callback ),
1641  m_context( _context )
1642  {
1643  }
1644  };
1645 
1647  list<Watcher*> m_watchers; // List of all the registered watchers.
1649  Mutex* m_notificationMutex;
1650 
1651  //-----------------------------------------------------------------------------
1652  // Controller commands
1653  //-----------------------------------------------------------------------------
1658  public:
1665  void ResetController( uint32 const _homeId );
1666 
1673  void SoftReset( uint32 const _homeId );
1674 
1731  DEPRECATED bool BeginControllerCommand( uint32 const _homeId, Driver::ControllerCommand _command, Driver::pfnControllerCallback_t _callback = NULL, void* _context = NULL, bool _highPower = false, uint8 _nodeId = 0xff, uint8 _arg = 0 );
1732 
1739  bool CancelControllerCommand( uint32 const _homeId );
1742  //-----------------------------------------------------------------------------
1743  // Network commands
1744  //-----------------------------------------------------------------------------
1750  public:
1758  void TestNetworkNode( uint32 const _homeId, uint8 const _nodeId, uint32 const _count );
1759 
1767  void TestNetwork( uint32 const _homeId, uint32 const _count );
1768 
1776  void HealNetworkNode( uint32 const _homeId, uint8 const _nodeId, bool _doRR );
1777 
1785  void HealNetwork( uint32 const _homeId, bool _doRR );
1786 
1800  bool AddNode( uint32 const _homeId, bool _doSecurity = true );
1801 
1814  bool RemoveNode(uint32 const _homeId);
1815 
1832  bool RemoveFailedNode(uint32 const _homeId, uint8 const _nodeId);
1833 
1848  bool HasNodeFailed(uint32 const _homeId, uint8 const _nodeId);
1849 
1862  bool RequestNodeNeighborUpdate(uint32 const _homeId, uint8 const _nodeId);
1863 
1876  bool AssignReturnRoute(uint32 const _homeId, uint8 const _nodeId);
1877 
1890  bool DeleteAllReturnRoutes(uint32 const _homeId, uint8 const _nodeId);
1891 
1901  bool SendNodeInformation(uint32 const _homeId, uint8 const _nodeId);
1902 
1914  bool CreateNewPrimary(uint32 const _homeId);
1915 
1927  bool ReceiveConfiguration (uint32 const _homeId);
1928 
1943  bool ReplaceFailedNode(uint32 const _homeId, uint8 const _nodeId);
1944 
1956  bool TransferPrimaryRole(uint32 const _homeId);
1957 
1969  bool RequestNetworkUpdate(uint32 const _homeId, uint8 const _nodeId);
1970 
1982  bool ReplicationSend(uint32 const _homeId, uint8 const _nodeId);
1983 
1998  bool CreateButton(uint32 const _homeId, uint8 const _nodeId, uint8 const _buttonid);
1999 
2014  bool DeleteButton(uint32 const _homeId, uint8 const _nodeId, uint8 const _buttonid);
2015 
2018  //-----------------------------------------------------------------------------
2019  // Scene commands
2020  //-----------------------------------------------------------------------------
2025  public:
2031  uint8 GetNumScenes( );
2032 
2039  uint8 GetAllScenes( uint8** _sceneIds );
2040 
2046  void RemoveAllScenes( uint32 const _homeId );
2047 
2054  uint8 CreateScene();
2055 
2062  bool RemoveScene( uint8 const _sceneId );
2063 
2072  bool AddSceneValue( uint8 const _sceneId, ValueID const& _valueId, bool const _value );
2073 
2082  bool AddSceneValue( uint8 const _sceneId, ValueID const& _valueId, uint8 const _value );
2083 
2092  bool AddSceneValue( uint8 const _sceneId, ValueID const& _valueId, float const _value );
2093 
2102  bool AddSceneValue( uint8 const _sceneId, ValueID const& _valueId, int32 const _value );
2103 
2112  bool AddSceneValue( uint8 const _sceneId, ValueID const& _valueId, int16 const _value );
2113 
2122  bool AddSceneValue( uint8 const _sceneId, ValueID const& _valueId, string const& _value );
2123 
2132  bool AddSceneValueListSelection( uint8 const _sceneId, ValueID const& _valueId, string const& _value );
2133 
2142  bool AddSceneValueListSelection( uint8 const _sceneId, ValueID const& _valueId, int32 const _value );
2143 
2151  bool RemoveSceneValue( uint8 const _sceneId, ValueID const& _valueId );
2152 
2160  int SceneGetValues( uint8 const _sceneId, vector<ValueID>* o_value );
2161 
2170  bool SceneGetValueAsBool( uint8 const _sceneId, ValueID const& _valueId, bool* o_value );
2171 
2180  bool SceneGetValueAsByte( uint8 const _sceneId, ValueID const& _valueId, uint8* o_value );
2181 
2190  bool SceneGetValueAsFloat( uint8 const _sceneId, ValueID const& _valueId, float* o_value );
2191 
2200  bool SceneGetValueAsInt( uint8 const _sceneId, ValueID const& _valueId, int32* o_value );
2201 
2210  bool SceneGetValueAsShort( uint8 const _sceneId, ValueID const& _valueId, int16* o_value );
2211 
2220  bool SceneGetValueAsString( uint8 const _sceneId, ValueID const& _valueId, string* o_value );
2221 
2230  bool SceneGetValueListSelection( uint8 const _sceneId, ValueID const& _valueId, string* o_value );
2231 
2240  bool SceneGetValueListSelection( uint8 const _sceneId, ValueID const& _valueId, int32* o_value );
2241 
2250  bool SetSceneValue( uint8 const _sceneId, ValueID const& _valueId, bool const _value );
2251 
2260  bool SetSceneValue( uint8 const _sceneId, ValueID const& _valueId, uint8 const _value );
2261 
2270  bool SetSceneValue( uint8 const _sceneId, ValueID const& _valueId, float const _value );
2271 
2280  bool SetSceneValue( uint8 const _sceneId, ValueID const& _valueId, int32 const _value );
2281 
2290  bool SetSceneValue( uint8 const _sceneId, ValueID const& _valueId, int16 const _value );
2291 
2300  bool SetSceneValue( uint8 const _sceneId, ValueID const& _valueId, string const& _value );
2301 
2310  bool SetSceneValueListSelection( uint8 const _sceneId, ValueID const& _valueId, string const& _value );
2311 
2320  bool SetSceneValueListSelection( uint8 const _sceneId, ValueID const& _valueId, int32 const _value );
2321 
2328  string GetSceneLabel( uint8 const _sceneId );
2329 
2336  void SetSceneLabel( uint8 const _sceneId, string const& _value );
2337 
2344  bool SceneExists( uint8 const _sceneId );
2345 
2352  bool ActivateScene( uint8 const _sceneId );
2353 
2356  //-----------------------------------------------------------------------------
2357  // Statistics interface
2358  //-----------------------------------------------------------------------------
2363  public:
2369  void GetDriverStatistics( uint32 const _homeId, Driver::DriverData* _data );
2370 
2377  void GetNodeStatistics( uint32 const _homeId, uint8 const _nodeId, Node::NodeData* _data );
2378 
2379  };
2381 } // namespace OpenZWave
2382 
2383 #endif // _Manager_H
Message object to be passed to and from devices on the Z-Wave network.
Definition: Msg.h:44
Definition: Bitfield.h:34
Container that holds all of the values associated with a given node.
Definition: ValueStore.h:43
#define OPENZWAVE_EXPORT
Definition: Defs.h:52
unsigned short uint16
Definition: Defs.h:77
#define OPENZWAVE_EXPORT_WARNINGS_ON
Definition: Defs.h:54
The main public interface to OpenZWave.
Definition: Manager.h:109
#define DEPRECATED
Definition: Defs.h:63
#define OPENZWAVE_EXPORT_WARNINGS_OFF
Definition: Defs.h:53
Definition: Group.h:42
The Node class describes a Z-Wave node object...typically a device on the Z-Wave network.
Definition: Node.h:64
Definition: Driver.h:774
#define NULL
Definition: Defs.h:70
ControllerCommand
Definition: Driver.h:459
Base class for all Z-Wave command classes.
Definition: CommandClass.h:46
Button value ???.
Definition: ValueButton.h:45
signed short int16
Definition: Defs.h:76
ControllerInterface
Definition: Driver.h:83
signed char int8
Definition: Defs.h:73
The Driver class handles communication between OpenZWave and a device attached via a serial port (typ...
Definition: Driver.h:58
Definition: Node.h:576
Manages library options read from XML files or the command line.
Definition: Options.h:66
signed int int32
Definition: Defs.h:79
unsigned int uint32
Definition: Defs.h:80
Manages a group of devices (various nodes associated with each other).
Definition: Group.h:49
Provides a container for data sent via the notification callback handler installed by a call to Manag...
Definition: Notification.h:42
Provides a unique ID for a value reported by a Z-Wave device.
Definition: ValueID.h:53
Options * GetOptions() const
Gets a pointer to the locked Options object.
Definition: Manager.h:210
Implements a platform-independent mutex–for serializing access to a shared resource.
Definition: Mutex.h:39
static Manager * Get()
Gets a pointer to the Manager object.
Definition: Manager.h:150
Base class for values associated with a node.
Definition: Value.h:47
void(* pfnControllerCallback_t)(ControllerState _state, ControllerError _err, void *_context)
Definition: Driver.h:521
Definition: Defs.h:95
unsigned char uint8
Definition: Defs.h:74