ansible4ozw 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (165) hide show
  1. data/lib/ansible.rb +12 -9
  2. data/lib/ansible/ansible_device.rb +1 -1
  3. data/lib/ansible/ansible_value.rb +1 -1
  4. data/lib/ansible/config.rb +8 -5
  5. data/lib/ansible/devices.rb +1 -0
  6. data/lib/ansible/knx.rb +0 -0
  7. data/lib/ansible/knx/dpt/tests/test_dpt10.rb~ +45 -0
  8. data/lib/ansible/knx/dpt/tests/test_dpt9.rb~ +55 -0
  9. data/lib/ansible/transceiver.rb +0 -3
  10. data/lib/ansible/version.rb +3 -0
  11. data/lib/ansible/zwave.rb +1 -0
  12. data/lib/ansible/{openzwave → zwave/openzwave}/ozw_constants.rb +1 -2
  13. data/lib/ansible/{openzwave → zwave/openzwave}/ozw_headers.rb +2 -6
  14. data/lib/ansible/{openzwave → zwave/openzwave}/ozw_remote_manager.rb +0 -3
  15. data/lib/ansible/{openzwave → zwave/openzwave}/ozw_types.rb +0 -0
  16. data/lib/ansible/zwave/openzwave/src/Driver.h +695 -0
  17. data/lib/ansible/zwave/openzwave/src/Notification.h +165 -0
  18. data/lib/ansible/zwave/openzwave/src/command_classes/Alarm.cpp +142 -0
  19. data/lib/ansible/zwave/openzwave/src/command_classes/Alarm.h +69 -0
  20. data/lib/ansible/zwave/openzwave/src/command_classes/ApplicationStatus.cpp +93 -0
  21. data/lib/ansible/zwave/openzwave/src/command_classes/ApplicationStatus.h +57 -0
  22. data/lib/ansible/zwave/openzwave/src/command_classes/Association.cpp +385 -0
  23. data/lib/ansible/zwave/openzwave/src/command_classes/Association.h +73 -0
  24. data/lib/ansible/zwave/openzwave/src/command_classes/AssociationCommandConfiguration.cpp +277 -0
  25. data/lib/ansible/zwave/openzwave/src/command_classes/AssociationCommandConfiguration.h +70 -0
  26. data/lib/ansible/zwave/openzwave/src/command_classes/Basic.cpp +212 -0
  27. data/lib/ansible/zwave/openzwave/src/command_classes/Basic.h +72 -0
  28. data/lib/ansible/zwave/openzwave/src/command_classes/BasicWindowCovering.cpp +118 -0
  29. data/lib/ansible/zwave/openzwave/src/command_classes/BasicWindowCovering.h +64 -0
  30. data/lib/ansible/zwave/openzwave/src/command_classes/Battery.cpp +141 -0
  31. data/lib/ansible/zwave/openzwave/src/command_classes/Battery.h +65 -0
  32. data/lib/ansible/zwave/openzwave/src/command_classes/ClimateControlSchedule.cpp +415 -0
  33. data/lib/ansible/zwave/openzwave/src/command_classes/ClimateControlSchedule.h +71 -0
  34. data/lib/ansible/zwave/openzwave/src/command_classes/Clock.cpp +227 -0
  35. data/lib/ansible/zwave/openzwave/src/command_classes/Clock.h +67 -0
  36. data/lib/ansible/zwave/openzwave/src/command_classes/CommandClass.cpp +546 -0
  37. data/lib/ansible/zwave/openzwave/src/command_classes/CommandClass.h +145 -0
  38. data/lib/ansible/zwave/openzwave/src/command_classes/CommandClasses.cpp +291 -0
  39. data/lib/ansible/zwave/openzwave/src/command_classes/CommandClasses.h +79 -0
  40. data/lib/ansible/zwave/openzwave/src/command_classes/Configuration.cpp +258 -0
  41. data/lib/ansible/zwave/openzwave/src/command_classes/Configuration.h +67 -0
  42. data/lib/ansible/zwave/openzwave/src/command_classes/ControllerReplication.cpp +142 -0
  43. data/lib/ansible/zwave/openzwave/src/command_classes/ControllerReplication.h +63 -0
  44. data/lib/ansible/zwave/openzwave/src/command_classes/EnergyProduction.cpp +163 -0
  45. data/lib/ansible/zwave/openzwave/src/command_classes/EnergyProduction.h +65 -0
  46. data/lib/ansible/zwave/openzwave/src/command_classes/Hail.cpp +68 -0
  47. data/lib/ansible/zwave/openzwave/src/command_classes/Hail.h +58 -0
  48. data/lib/ansible/zwave/openzwave/src/command_classes/Indicator.cpp +159 -0
  49. data/lib/ansible/zwave/openzwave/src/command_classes/Indicator.h +66 -0
  50. data/lib/ansible/zwave/openzwave/src/command_classes/Language.cpp +159 -0
  51. data/lib/ansible/zwave/openzwave/src/command_classes/Language.h +65 -0
  52. data/lib/ansible/zwave/openzwave/src/command_classes/Lock.cpp +159 -0
  53. data/lib/ansible/zwave/openzwave/src/command_classes/Lock.h +66 -0
  54. data/lib/ansible/zwave/openzwave/src/command_classes/ManufacturerSpecific.cpp +439 -0
  55. data/lib/ansible/zwave/openzwave/src/command_classes/ManufacturerSpecific.h +116 -0
  56. data/lib/ansible/zwave/openzwave/src/command_classes/Meter.cpp +541 -0
  57. data/lib/ansible/zwave/openzwave/src/command_classes/Meter.h +73 -0
  58. data/lib/ansible/zwave/openzwave/src/command_classes/MeterPulse.cpp +137 -0
  59. data/lib/ansible/zwave/openzwave/src/command_classes/MeterPulse.h +65 -0
  60. data/lib/ansible/zwave/openzwave/src/command_classes/MultiCmd.cpp +77 -0
  61. data/lib/ansible/zwave/openzwave/src/command_classes/MultiCmd.h +63 -0
  62. data/lib/ansible/zwave/openzwave/src/command_classes/MultiInstance.cpp +568 -0
  63. data/lib/ansible/zwave/openzwave/src/command_classes/MultiInstance.h +96 -0
  64. data/lib/ansible/zwave/openzwave/src/command_classes/MultiInstanceAssociation.cpp +61 -0
  65. data/lib/ansible/zwave/openzwave/src/command_classes/MultiInstanceAssociation.h +59 -0
  66. data/lib/ansible/zwave/openzwave/src/command_classes/NodeNaming.cpp +525 -0
  67. data/lib/ansible/zwave/openzwave/src/command_classes/NodeNaming.h +66 -0
  68. data/lib/ansible/zwave/openzwave/src/command_classes/Powerlevel.cpp +157 -0
  69. data/lib/ansible/zwave/openzwave/src/command_classes/Powerlevel.h +82 -0
  70. data/lib/ansible/zwave/openzwave/src/command_classes/Proprietary.cpp +62 -0
  71. data/lib/ansible/zwave/openzwave/src/command_classes/Proprietary.h +58 -0
  72. data/lib/ansible/zwave/openzwave/src/command_classes/Protection.cpp +177 -0
  73. data/lib/ansible/zwave/openzwave/src/command_classes/Protection.h +73 -0
  74. data/lib/ansible/zwave/openzwave/src/command_classes/SensorAlarm.cpp +208 -0
  75. data/lib/ansible/zwave/openzwave/src/command_classes/SensorAlarm.h +77 -0
  76. data/lib/ansible/zwave/openzwave/src/command_classes/SensorBinary.cpp +134 -0
  77. data/lib/ansible/zwave/openzwave/src/command_classes/SensorBinary.h +65 -0
  78. data/lib/ansible/zwave/openzwave/src/command_classes/SensorMultilevel.cpp +237 -0
  79. data/lib/ansible/zwave/openzwave/src/command_classes/SensorMultilevel.h +71 -0
  80. data/lib/ansible/zwave/openzwave/src/command_classes/SwitchAll.cpp +219 -0
  81. data/lib/ansible/zwave/openzwave/src/command_classes/SwitchAll.h +69 -0
  82. data/lib/ansible/zwave/openzwave/src/command_classes/SwitchBinary.cpp +157 -0
  83. data/lib/ansible/zwave/openzwave/src/command_classes/SwitchBinary.h +66 -0
  84. data/lib/ansible/zwave/openzwave/src/command_classes/SwitchMultilevel.cpp +559 -0
  85. data/lib/ansible/zwave/openzwave/src/command_classes/SwitchMultilevel.h +83 -0
  86. data/lib/ansible/zwave/openzwave/src/command_classes/SwitchToggleBinary.cpp +151 -0
  87. data/lib/ansible/zwave/openzwave/src/command_classes/SwitchToggleBinary.h +66 -0
  88. data/lib/ansible/zwave/openzwave/src/command_classes/SwitchToggleMultilevel.cpp +195 -0
  89. data/lib/ansible/zwave/openzwave/src/command_classes/SwitchToggleMultilevel.h +75 -0
  90. data/lib/ansible/zwave/openzwave/src/command_classes/ThermostatFanMode.cpp +332 -0
  91. data/lib/ansible/zwave/openzwave/src/command_classes/ThermostatFanMode.h +77 -0
  92. data/lib/ansible/zwave/openzwave/src/command_classes/ThermostatFanState.cpp +149 -0
  93. data/lib/ansible/zwave/openzwave/src/command_classes/ThermostatFanState.h +71 -0
  94. data/lib/ansible/zwave/openzwave/src/command_classes/ThermostatMode.cpp +373 -0
  95. data/lib/ansible/zwave/openzwave/src/command_classes/ThermostatMode.h +76 -0
  96. data/lib/ansible/zwave/openzwave/src/command_classes/ThermostatOperatingState.cpp +147 -0
  97. data/lib/ansible/zwave/openzwave/src/command_classes/ThermostatOperatingState.h +71 -0
  98. data/lib/ansible/zwave/openzwave/src/command_classes/ThermostatSetpoint.cpp +317 -0
  99. data/lib/ansible/zwave/openzwave/src/command_classes/ThermostatSetpoint.h +73 -0
  100. data/lib/ansible/zwave/openzwave/src/command_classes/Version.cpp +255 -0
  101. data/lib/ansible/zwave/openzwave/src/command_classes/Version.h +71 -0
  102. data/lib/ansible/zwave/openzwave/src/command_classes/WakeUp.cpp +391 -0
  103. data/lib/ansible/zwave/openzwave/src/command_classes/WakeUp.h +85 -0
  104. data/lib/ansible/zwave/openzwave/src/platform/Controller.cpp +68 -0
  105. data/lib/ansible/zwave/openzwave/src/platform/Controller.h +106 -0
  106. data/lib/ansible/zwave/openzwave/src/platform/Event.cpp +102 -0
  107. data/lib/ansible/zwave/openzwave/src/platform/Event.h +91 -0
  108. data/lib/ansible/zwave/openzwave/src/platform/HidController.cpp +539 -0
  109. data/lib/ansible/zwave/openzwave/src/platform/HidController.h +147 -0
  110. data/lib/ansible/zwave/openzwave/src/platform/Log.cpp +310 -0
  111. data/lib/ansible/zwave/openzwave/src/platform/Log.h +184 -0
  112. data/lib/ansible/zwave/openzwave/src/platform/Mutex.cpp +96 -0
  113. data/lib/ansible/zwave/openzwave/src/platform/Mutex.h +88 -0
  114. data/lib/ansible/zwave/openzwave/src/platform/Ref.h +91 -0
  115. data/lib/ansible/zwave/openzwave/src/platform/SerialController.cpp +180 -0
  116. data/lib/ansible/zwave/openzwave/src/platform/SerialController.h +138 -0
  117. data/lib/ansible/zwave/openzwave/src/platform/Stream.cpp +229 -0
  118. data/lib/ansible/zwave/openzwave/src/platform/Stream.h +135 -0
  119. data/lib/ansible/zwave/openzwave/src/platform/Thread.cpp +118 -0
  120. data/lib/ansible/zwave/openzwave/src/platform/Thread.h +101 -0
  121. data/lib/ansible/zwave/openzwave/src/platform/TimeStamp.cpp +92 -0
  122. data/lib/ansible/zwave/openzwave/src/platform/TimeStamp.h +85 -0
  123. data/lib/ansible/zwave/openzwave/src/platform/Wait.cpp +176 -0
  124. data/lib/ansible/zwave/openzwave/src/platform/Wait.h +113 -0
  125. data/lib/ansible/zwave/openzwave/src/platform/unix/EventImpl.cpp +262 -0
  126. data/lib/ansible/zwave/openzwave/src/platform/unix/EventImpl.h +62 -0
  127. data/lib/ansible/zwave/openzwave/src/platform/unix/LogImpl.cpp +304 -0
  128. data/lib/ansible/zwave/openzwave/src/platform/unix/LogImpl.h +70 -0
  129. data/lib/ansible/zwave/openzwave/src/platform/unix/MutexImpl.cpp +136 -0
  130. data/lib/ansible/zwave/openzwave/src/platform/unix/MutexImpl.h +56 -0
  131. data/lib/ansible/zwave/openzwave/src/platform/unix/SerialControllerImpl.cpp +368 -0
  132. data/lib/ansible/zwave/openzwave/src/platform/unix/SerialControllerImpl.h +74 -0
  133. data/lib/ansible/zwave/openzwave/src/platform/unix/ThreadImpl.cpp +181 -0
  134. data/lib/ansible/zwave/openzwave/src/platform/unix/ThreadImpl.h +67 -0
  135. data/lib/ansible/zwave/openzwave/src/platform/unix/TimeStampImpl.cpp +121 -0
  136. data/lib/ansible/zwave/openzwave/src/platform/unix/TimeStampImpl.h +84 -0
  137. data/lib/ansible/zwave/openzwave/src/platform/unix/WaitImpl.cpp +160 -0
  138. data/lib/ansible/zwave/openzwave/src/platform/unix/WaitImpl.h +74 -0
  139. data/lib/ansible/zwave/openzwave/src/platform/windows/EventImpl.cpp +102 -0
  140. data/lib/ansible/zwave/openzwave/src/platform/windows/EventImpl.h +60 -0
  141. data/lib/ansible/zwave/openzwave/src/platform/windows/LogImpl.cpp +302 -0
  142. data/lib/ansible/zwave/openzwave/src/platform/windows/LogImpl.h +71 -0
  143. data/lib/ansible/zwave/openzwave/src/platform/windows/MutexImpl.cpp +114 -0
  144. data/lib/ansible/zwave/openzwave/src/platform/windows/MutexImpl.h +58 -0
  145. data/lib/ansible/zwave/openzwave/src/platform/windows/SerialControllerImpl.cpp +410 -0
  146. data/lib/ansible/zwave/openzwave/src/platform/windows/SerialControllerImpl.h +66 -0
  147. data/lib/ansible/zwave/openzwave/src/platform/windows/ThreadImpl.cpp +158 -0
  148. data/lib/ansible/zwave/openzwave/src/platform/windows/ThreadImpl.h +71 -0
  149. data/lib/ansible/zwave/openzwave/src/platform/windows/TimeStampImpl.cpp +95 -0
  150. data/lib/ansible/zwave/openzwave/src/platform/windows/TimeStampImpl.h +83 -0
  151. data/lib/ansible/zwave/openzwave/src/platform/windows/WaitImpl.cpp +134 -0
  152. data/lib/ansible/zwave/openzwave/src/platform/windows/WaitImpl.h +73 -0
  153. data/lib/ansible/zwave/openzwave/src/value_classes/ValueID.h +283 -0
  154. data/lib/ansible/zwave/{types → openzwave/types}/valuetype_bool.rb +0 -0
  155. data/lib/ansible/zwave/{types → openzwave/types}/valuetype_button.rb +0 -0
  156. data/lib/ansible/zwave/{types → openzwave/types}/valuetype_byte.rb +0 -0
  157. data/lib/ansible/zwave/{types → openzwave/types}/valuetype_decimal.rb +0 -0
  158. data/lib/ansible/zwave/{types → openzwave/types}/valuetype_int.rb +0 -0
  159. data/lib/ansible/zwave/{types → openzwave/types}/valuetype_list.rb +0 -0
  160. data/lib/ansible/zwave/{types → openzwave/types}/valuetype_short.rb +0 -0
  161. data/lib/ansible/zwave/{types → openzwave/types}/valuetype_string.rb +0 -0
  162. data/lib/ansible/zwave/zwave_transceiver.rb +2 -8
  163. data/lib/ansible/zwave/zwave_value.rb +6 -10
  164. metadata +159 -17
  165. data/lib/ansible/zwave/zwave_node.rb +0 -5
@@ -0,0 +1,85 @@
1
+ //-----------------------------------------------------------------------------
2
+ //
3
+ // WakeUp.h
4
+ //
5
+ // Implementation of the Z-Wave COMMAND_CLASS_WAKE_UP
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 _WakeUp_H
29
+ #define _WakeUp_H
30
+
31
+ #include <list>
32
+ #include "CommandClass.h"
33
+ #include "Driver.h"
34
+
35
+ namespace OpenZWave
36
+ {
37
+ class Msg;
38
+ class ValueInt;
39
+ class Mutex;
40
+
41
+ /** \brief Implements COMMAND_CLASS_WAKE_UP (0x84), a Z-Wave device command class.
42
+ */
43
+ class WakeUp: public CommandClass
44
+ {
45
+ public:
46
+ static CommandClass* Create( uint32 const _homeId, uint8 const _nodeId ){ return new WakeUp( _homeId, _nodeId ); }
47
+ virtual ~WakeUp();
48
+
49
+ static uint8 const StaticGetCommandClassId(){ return 0x84; }
50
+ static string const StaticGetCommandClassName(){ return "COMMAND_CLASS_WAKE_UP"; }
51
+
52
+ void Init(); // Starts the process of requesting node state from a sleeping device.
53
+ void QueueMsg( Driver::MsgQueueItem const& _item );
54
+ void SendPending();
55
+ bool IsAwake()const{ return m_awake; }
56
+ void SetAwake( bool _state );
57
+ void SetPollRequired(){ m_pollRequired = true; }
58
+
59
+ // From CommandClass
60
+ virtual bool RequestState( uint32 const _requestFlags, uint8 const _instance, Driver::MsgQueue const _queue );
61
+ virtual bool RequestValue( uint32 const _requestFlags, uint8 const _index, uint8 const _instance, Driver::MsgQueue const _queue );
62
+ virtual uint8 const GetCommandClassId()const{ return StaticGetCommandClassId(); }
63
+ virtual string const GetCommandClassName()const{ return StaticGetCommandClassName(); }
64
+ virtual bool HandleMsg( uint8 const* _data, uint32 const _length, uint32 const _instance = 1 );
65
+ virtual bool SetValue( Value const& _value );
66
+ virtual uint8 GetMaxVersion(){ return 2; }
67
+
68
+ protected:
69
+ virtual void CreateVars( uint8 const _instance );
70
+
71
+ private:
72
+ WakeUp( uint32 const _homeId, uint8 const _nodeId );
73
+
74
+ Mutex* m_mutex; // Serialize access to the pending queue
75
+ list<Driver::MsgQueueItem> m_pendingQueue; // Messages waiting to be sent when the device wakes up
76
+ bool m_awake;
77
+ bool m_pollRequired;
78
+ bool m_notification;
79
+ };
80
+
81
+ } // namespace OpenZWave
82
+
83
+ #endif
84
+
85
+
@@ -0,0 +1,68 @@
1
+ //-----------------------------------------------------------------------------
2
+ //
3
+ // Controller.cpp
4
+ //
5
+ // Cross-platform, hardware-abstracted controller data interface
6
+ //
7
+ // Copyright (c) 2010 Jason Frazier <frazierjason@gmail.com>
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
+ #include "Defs.h"
28
+ #include "Driver.h"
29
+ #include "Controller.h"
30
+
31
+ using namespace OpenZWave;
32
+
33
+ //-----------------------------------------------------------------------------
34
+ // <Controller::PlayInitSequence>
35
+ // Queues up the controller's initialization commands.
36
+ //-----------------------------------------------------------------------------
37
+ void Controller::PlayInitSequence
38
+ (
39
+ Driver* _driver
40
+ )
41
+ {
42
+ _driver->SendMsg( new Msg( "FUNC_ID_ZW_GET_VERSION", 0xff, REQUEST, FUNC_ID_ZW_GET_VERSION, false ), Driver::MsgQueue_Command );
43
+ _driver->SendMsg( new Msg( "FUNC_ID_ZW_MEMORY_GET_ID", 0xff, REQUEST, FUNC_ID_ZW_MEMORY_GET_ID, false ), Driver::MsgQueue_Command);
44
+ _driver->SendMsg( new Msg( "FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES", 0xff, REQUEST, FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES, false ), Driver::MsgQueue_Command);
45
+ _driver->SendMsg( new Msg( "FUNC_ID_SERIAL_API_GET_CAPABILITIES", 0xff, REQUEST, FUNC_ID_SERIAL_API_GET_CAPABILITIES, false ), Driver::MsgQueue_Command);
46
+ _driver->SendMsg( new Msg( "FUNC_ID_ZW_GET_SUC_NODE_ID", 0xff, REQUEST, FUNC_ID_ZW_GET_SUC_NODE_ID, false ), Driver::MsgQueue_Command);
47
+ // FUNC_ID_ZW_GET_VIRTUAL_NODES & FUNC_ID_SERIAL_API_GET_INIT_DATA has moved into the handler for FUNC_ID_SERIAL_API_GET_CAPABILITIES
48
+ }
49
+
50
+ //-----------------------------------------------------------------------------
51
+ // <Controller::Read>
52
+ // Read from a controller
53
+ //-----------------------------------------------------------------------------
54
+ uint32 Controller::Read
55
+ (
56
+ uint8* _buffer,
57
+ uint32 _length
58
+ )
59
+ {
60
+ // Fetch the data from the ring buffer (which is an all or nothing read)
61
+ if( Get( _buffer, _length ) )
62
+ {
63
+ return _length;
64
+ }
65
+
66
+ return 0;
67
+ }
68
+
@@ -0,0 +1,106 @@
1
+ //-----------------------------------------------------------------------------
2
+ //
3
+ // Controller.h
4
+ //
5
+ // Cross-platform, hardware-abstracted controller data interface
6
+ //
7
+ // Copyright (c) 2010 Jason Frazier <frazierjason@gmail.com>
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 _Controller_H
29
+ #define _Controller_H
30
+
31
+ #include <string>
32
+ #include <list>
33
+ #include "Defs.h"
34
+ #include "Stream.h"
35
+
36
+ namespace OpenZWave
37
+ {
38
+ class Driver;
39
+
40
+ class Controller: public Stream
41
+ {
42
+ // Controller is derived from Stream rather than containing one, so that
43
+ // we can use its Wait abilities without having to duplicate them here.
44
+ // The stream is used for input. Buffering of output is handled by the OS.
45
+
46
+ public:
47
+ /**
48
+ * Consructor.
49
+ * Creates the controller object.
50
+ */
51
+ Controller():Stream( 2048 ){}
52
+
53
+ /**
54
+ * Destructor.
55
+ * Destroys the controller object.
56
+ */
57
+ virtual ~Controller(){}
58
+
59
+ /**
60
+ * Queues a set of Z-Wave messages in the correct order needed to initialize the Controller implementation.
61
+ * @param Pointer to the driver object that will handle the messages.
62
+ * @see Driver::Init
63
+ */
64
+ void PlayInitSequence( Driver* _driver );
65
+
66
+ /**
67
+ * Open a controller.
68
+ * Attempts to open a controller and initialize it with the specified paramters.
69
+ * @param _controllerName The name of the port to open. For example, ttyS1 on Linux, or \\.\COM2 in Windows.
70
+ * @see Close, Read, Write
71
+ */
72
+ virtual bool Open( string const& _controllerName ) = 0;
73
+
74
+ /**
75
+ * Close a controller.
76
+ * Closes the controller.
77
+ * @return True if the controller was closed successfully, or false if the controller was already closed, or an error occurred.
78
+ * @see Open
79
+ */
80
+ virtual bool Close() = 0;
81
+
82
+ /**
83
+ * Write to a controller.
84
+ * Attempts to write data to an open controller.
85
+ * @param _buffer Pointer to a block of memory containing the data to be written.
86
+ * @param _length Length in bytes of the data.
87
+ * @return The number of bytes written.
88
+ * @see Read, Open, Close
89
+ */
90
+ virtual uint32 Write( uint8* _buffer, uint32 _length ) = 0;
91
+
92
+ /**
93
+ * Read from a controller.
94
+ * Attempts to read data from an open controller.
95
+ * @param _buffer Pointer to a block of memory large enough to hold the requested data.
96
+ * @param _length Length in bytes of the data to be read.
97
+ * @return The number of bytes read.
98
+ * @see Write, Open, Close
99
+ */
100
+ uint32 Read( uint8* _buffer, uint32 _length );
101
+ };
102
+
103
+ } // namespace OpenZWave
104
+
105
+ #endif //_Controller_H
106
+
@@ -0,0 +1,102 @@
1
+ //-----------------------------------------------------------------------------
2
+ //
3
+ // Event.cpp
4
+ //
5
+ // Cross-platform event
6
+ //
7
+ // Copyright (c) 2010 Mal Lansell <mal@lansell.org>
8
+ // All rights reserved.
9
+ //
10
+ // SOFTWARE NOTICE AND LICENSE
11
+ //
12
+ // This file is part of OpenZWave.
13
+ //
14
+ // OpenZWave is free software: you can redistribute it and/or modify
15
+ // it under the terms of the GNU Lesser General Public License as published
16
+ // by the Free Software Foundation, either version 3 of the License,
17
+ // or (at your option) any later version.
18
+ //
19
+ // OpenZWave is distributed in the hope that it will be useful,
20
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
+ // GNU Lesser General Public License for more details.
23
+ //
24
+ // You should have received a copy of the GNU Lesser General Public License
25
+ // along with OpenZWave. If not, see <http://www.gnu.org/licenses/>.
26
+ //
27
+ //-----------------------------------------------------------------------------
28
+ #include "Defs.h"
29
+ #include "Event.h"
30
+ #include "EventImpl.h" // Platform-specific implementation of an event
31
+
32
+ using namespace OpenZWave;
33
+
34
+ //-----------------------------------------------------------------------------
35
+ // <Event::Event>
36
+ // Constructor
37
+ //-----------------------------------------------------------------------------
38
+ Event::Event
39
+ (
40
+ ):
41
+ m_pImpl( new EventImpl() )
42
+ {
43
+ }
44
+
45
+ //-----------------------------------------------------------------------------
46
+ // <Event::~Event>
47
+ // Destructor
48
+ //-----------------------------------------------------------------------------
49
+ Event::~Event
50
+ (
51
+ )
52
+ {
53
+ delete m_pImpl;
54
+ }
55
+
56
+ //-----------------------------------------------------------------------------
57
+ // <Event::Set>
58
+ // Set the event to signalled
59
+ //-----------------------------------------------------------------------------
60
+ void Event::Set
61
+ (
62
+ )
63
+ {
64
+ m_pImpl->Set();
65
+ Notify(); // Notify any watchers that the event is now set
66
+ }
67
+
68
+ //-----------------------------------------------------------------------------
69
+ // <Event::Reset>
70
+ // Set the event to not signalled
71
+ //-----------------------------------------------------------------------------
72
+ void Event::Reset
73
+ (
74
+ )
75
+ {
76
+ m_pImpl->Reset();
77
+ }
78
+
79
+ //-----------------------------------------------------------------------------
80
+ // <Event::IsSignalled>
81
+ // Test whether the event is set
82
+ //-----------------------------------------------------------------------------
83
+ bool Event::IsSignalled
84
+ (
85
+ )
86
+ {
87
+ return m_pImpl->IsSignalled();
88
+ }
89
+
90
+ //-----------------------------------------------------------------------------
91
+ // <Event::Wait>
92
+ // Wait for the event to become signalled
93
+ //-----------------------------------------------------------------------------
94
+ bool Event::Wait
95
+ (
96
+ int32 const _timeout
97
+ )
98
+ {
99
+ return m_pImpl->Wait( _timeout );
100
+ }
101
+
102
+
@@ -0,0 +1,91 @@
1
+ //-----------------------------------------------------------------------------
2
+ //
3
+ // Event.h
4
+ //
5
+ // Cross-platform manual-reset event
6
+ //
7
+ // Copyright (c) 2010 Mal Lansell <mal@lansell.org>
8
+ // All rights reserved.
9
+ //
10
+ // SOFTWARE NOTICE AND LICENSE
11
+ //
12
+ // This file is part of OpenZWave.
13
+ //
14
+ // OpenZWave is free software: you can redistribute it and/or modify
15
+ // it under the terms of the GNU Lesser General Public License as published
16
+ // by the Free Software Foundation, either version 3 of the License,
17
+ // or (at your option) any later version.
18
+ //
19
+ // OpenZWave is distributed in the hope that it will be useful,
20
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
+ // GNU Lesser General Public License for more details.
23
+ //
24
+ // You should have received a copy of the GNU Lesser General Public License
25
+ // along with OpenZWave. If not, see <http://www.gnu.org/licenses/>.
26
+ //
27
+ //-----------------------------------------------------------------------------
28
+ #ifndef _Event_H
29
+ #define _Event_H
30
+
31
+ #include "Wait.h"
32
+
33
+ namespace OpenZWave
34
+ {
35
+ class EventImpl;
36
+
37
+ /** \brief Platform-independent definition of event objects.
38
+ */
39
+ class Event: public Wait
40
+ {
41
+ friend class SerialControllerImpl;
42
+ friend class Wait;
43
+
44
+ public:
45
+ /**
46
+ * Constructor.
47
+ * Creates a cross-platform event object equivalent to the Windows manual-reset event
48
+ */
49
+ Event();
50
+
51
+ /**
52
+ * Set the event to signalled.
53
+ * \see Reset, Wait
54
+ */
55
+ void Set();
56
+
57
+ /**
58
+ * Set the event to not signalled.
59
+ * \see Set, Wait
60
+ */
61
+ void Reset();
62
+
63
+ protected:
64
+ /**
65
+ * Used by the Wait class to test whether the event is set.
66
+ */
67
+ virtual bool IsSignalled();
68
+
69
+ /**
70
+ * Used by the Wait::Multiple method.
71
+ * returns true if the event signalled, false if it timed out
72
+ */
73
+ bool Wait( int32 _timeout );
74
+
75
+ /**
76
+ * Destructor.
77
+ * Destroys the event object.
78
+ */
79
+ ~Event();
80
+
81
+ private:
82
+ Event( Event const& ); // prevent copy
83
+ Event& operator = ( Event const& ); // prevent assignment
84
+
85
+ EventImpl* m_pImpl; // Pointer to an object that encapsulates the platform-specific implementation of a event.
86
+ };
87
+
88
+ } // namespace OpenZWave
89
+
90
+ #endif //_Event_H
91
+