Raritan PX2/PX3 JSON-RPC API
Pdu.idl
1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /*
3  * Copyright 2009 Raritan Inc. All rights reserved.
4  */
5 
6 #ifndef __PDUMODEL_PDU_IDL__
7 #define __PDUMODEL_PDU_IDL__
8 
9 #include <Nameplate.idl>
10 #include <Outlet.idl>
11 #include <PeripheralDeviceManager.idl>
12 #include <Port.idl>
13 #include <OverCurrentProtector.idl>
14 #include <Inlet.idl>
15 #include <TransferSwitch.idl>
16 #include <StateSensor.idl>
17 #include <SensorLogger.idl>
18 #include <Controller.idl>
19 #include <InternalBeeper.idl>
20 
21 /**
22  * PDU Model
23  */
24 module pdumodel {
25 
26  /** Main PDU interface */
27  interface Pdu_4_1_6 {
28 
29  constant int ERR_INVALID_PARAM = 1; ///< Invalid parameters
30 
31  /** PDU metadata */
32  structure MetaData {
33  Nameplate_2_0_0 nameplate; ///< %Nameplate information
34  string ctrlBoardSerial; ///< Main controller serial number
35  string hwRevision; ///< Hardware revision
36  string fwRevision; ///< Firmware revision
37  string macAddress; ///< MAC address
38  boolean hasSwitchableOutlets; ///< \c true if at least one outlet is switchable
39  boolean hasMeteredOutlets; ///< \c true if at least one outlet is metered
40  boolean hasLatchingOutletRelays; ///< \c true if at least one outlet has a latching relay
41  boolean isInlineMeter; ///< \c true if all inlets have exactly one outlet
42  boolean isEnergyPulseSupported; ///< \c true if the PDU has one or more LED(s) capable
43  ///< of emitting pulses to measure consumed energy
44  };
45 
46  /** PDU sensors */
47  structure Sensors {
48  vector<sensors.StateSensor_4_0_3> powerSupplyStatus; ///< Power supply fault status
49  sensors.NumericSensor_4_0_3 activePower; ///< Active power sensor
50  sensors.NumericSensor_4_0_3 activeEnergy; ///< Active energy sensor
51  };
52 
53  /** PDU statistics */
54  structure Statistic {
55  vector<CircuitBreakerStatistic> cbStats; ///< Circuit breaker statistics
56  vector<CtrlStatistic> ctrlStats; ///< Slave controller statistics
57  vector<OutletStatistic> outletStats; ///< %Outlet statistics
58  peripheral.DeviceManager_3_0_2.Statistics peripheralStats; ///< Peripheral device statistics
59  };
60 
61  /** %Outlet power state on device startup */
62  enumeration StartupState {
63  SS_ON, ///< %Outlet will be switched on
64  SS_OFF, ///< %Outlet will be switched off
65  SS_LASTKNOWN ///< Restore last known power state
66  };
67 
68  /** PDU settings */
69  structure Settings {
70  string name; ///< User-defined name
71  StartupState startupState; ///< Default outlet state on device startup; can be overriden per outlet
72  int cycleDelay; ///< Default power-cycle interval in seconds; can be overriden per outlet
73  int inRushGuardDelay; ///< Minimum delay in milliseconds between switching two outlets on
74  vector<int> outletPowerStateSequence; ///< The order in which multiple outlets should be switched.
75  ///< Format: List of outlet numbers (zero-based), empty for default.
76  ///< \n Affects the following functions:
77  ///< \li \c setAllOutletPowerStates
78  ///< \li \c cycleAllOutletPowerStates
79  ///< \li \c setMultipleOutletPowerStates
80  ///< \li \c cycleMultipleOutletPowerStates
81  int powerOnDelay; ///< Delay in seconds before restoring outlet states after device startup
82  boolean latchingRelays; ///< If true, relays keep their state during power-cycling
83  boolean energyPulseEnabled; ///< Enables energy consumption counting using the PDU's LED(s)
84  int energyPulsesPerKWh; ///< Ratio between LED pulses and energy consumption
85  };
86 
87  /** %Outlet sequencing status */
88  structure OutletSequenceState {
89  boolean sequenceRunning; ///< \c true if an outlet sequence is currently running
90  int nextOutletToSwitch; ///< Number (zero-based) of the next outlet in the sequence
91  int timeUntilNextSwitch; ///< Time in milliseconds before the next outlet is switched
92  int outletsRemaining; ///< Number of outlets remaining in the sequence
93  int cancelableOutletsRemaining; ///< Number of outlets remaining whose switch operation can be canceled
94  ///< (non-cancelable operations won't be affected by canceling the sequence)
95  };
96 
97  /** Event: PDU settings have been changed */
98  valueobject SettingsChangedEvent extends event.UserEvent {
99  Settings oldSettings; ///< Settings before change
100  Settings newSettings; ///< Settings after change
101  };
102 
103  /** Event: Load shedding mode was enabled or disabled */
104  valueobject LoadSheddingModeChangedEvent extends event.UserEvent {
105  boolean enabled; ///< Whether load shedding mode is enabled after the change
106  };
107 
108  /** Event: Outlet sequencing state has changed */
109  valueobject OutletSequenceStateChangedEvent extends idl.Event {
110  OutletSequenceState newState; ///< New sequencing state
111  };
112 
113  /**
114  * Retrieve the PDU nameplate information.
115  *
116  * @return Nameplate information
117  */
118  Nameplate_2_0_0 getNameplate();
119 
120  /**
121  * Retrieve the PDU metadata.
122  *
123  * @return PDU metadata
124  */
125  MetaData getMetaData();
126 
127  /**
128  * Retrieve the PDU sensors.
129  *
130  * @return PDU sensors
131  */
132  Sensors getSensors();
133 
134  /**
135  * Get the sensor logger.
136  *
137  * @return Sensor logger reference
138  */
139  sensors.Logger_2_1_6 getSensorLogger();
140 
141  /**
142  * Get the list of slave controllers.
143  *
144  * @return List of slave controllers
145  */
146  vector<Controller_4_0_1> getControllers();
147 
148  /**
149  * Get the list of outlets.
150  *
151  * @return List of outlets, indexed by their number (zero-based)
152  */
153  vector<Outlet_2_1_5> getOutlets();
154 
155  /**
156  * Get the list of overcurrent protectors.
157  *
158  * @return List of OCPs, indexed by their number (zero-based)
159  */
160  vector<OverCurrentProtector_3_0_4> getOverCurrentProtectors();
161 
162  /**
163  * Get the list of inlets.
164  *
165  * @return List of inlets, indexed by their number (zero-based)
166  */
167  vector<Inlet_2_0_4> getInlets();
168 
169  /**
170  * Returns list of Transfer Switches.
171  * This list may be empty.
172  */
173  vector<TransferSwitch_4_0_4> getTransferSwitches();
174 
175  /**
176  * Get the peripheral device manager.
177  *
178  * @return Peripheral device manager
179  */
180  peripheral.DeviceManager_3_0_2 getPeripheralDeviceManager();
181 
182  /**
183  * Get the built-in beeper, if there is any.
184  *
185  * @return Beeper interface
186  */
187  hmi.InternalBeeper_2_0_1 getBeeper();
188 
189  /**
190  * Retrieve the PDU settings.
191  *
192  * @return PDU settings
193  */
194  Settings getSettings();
195 
196  /**
197  * Retrieve the current load shedding state.
198  *
199  * @return \c true if load shedding is currently enabled
200  */
201  boolean isLoadSheddingActive();
202 
203  /**
204  * Change the PDU settings.
205  *
206  * @param settings New PDU settings
207  *
208  * @return 0 if OK
209  * @return 1 if any parameters are invalid
210  */
211  int setSettings(in Settings settings);
212 
213  /**
214  * Enable or disable load shedding.
215  *
216  * @param active \c true to enable, \c false to disable load shedding
217  */
218  void setLoadSheddingActive(in boolean active);
219 
220  /**
221  * Get all feature ports of this device
222  *
223  * This returns an entry for all feature ports, no matter whether
224  * something is connected or not.
225  * A device with n feature ports will return n entries here.
226  *
227  * @return List of all Feature Ports
228  */
229  vector<portsmodel.Port_2_0_2> getFeaturePorts();
230 
231  /**
232  * Enter RS485 config mode and assign an address to a relay board.
233  * @warning This is dangerous! Do not use except for manufacturing.
234  *
235  * @param addr New relay board address
236  *
237  * @return 0 if OK
238  * @return 1 if any parameters are invalid
239  */
240  int enterRS485ConfigModeAndAssignCtrlBoardAddress(in int addr);
241 
242  /**
243  * Enter RS485 config mode and assign an address to a slave controller
244  * device with a given device ID.
245  * @warning This is dangerous! Do not use except for manufacturing.
246  *
247  * @param deviceId Device id of the slave controller board
248  * which is supposed to get the address
249  * @param addr New relay board address
250  *
251  * @return 0 if OK
252  * @return 1 if any parameters are invalid
253  */
254  int enterRS485ConfigModeAndAssignSCBoardAddress(in int deviceId, in int addr);
255 
256  /**
257  * Leave RS485 config mode.
258  *
259  * @return 0 if OK
260  */
261  int leaveRS485ConfigMode();
262 
263  /**
264  * Switch all outlets.
265  *
266  * @param pstate New power state for all outlets
267  *
268  * @return 0 if OK
269  */
270  int setAllOutletPowerStates(in Outlet_2_1_5.PowerState pstate);
271 
272  /**
273  * Switch multiple outlets.
274  *
275  * @param outletNumbers List of outlet numbers (zero-based)
276  * @param state New power state for all outlets in list
277  * @param respectSequence \c true to switch in defined sequence order
278  *
279  * @return 0 if OK
280  * @return 3 if any of the selected outlets is disabled
281  */
282  int setMultipleOutletPowerStates(in vector<int> outletNumbers,
283  in Outlet_2_1_5.PowerState state,
284  in boolean respectSequence);
285 
286  /**
287  * Power-cycle all outlets.
288  *
289  * @return 0 if OK
290  */
291  int cycleAllOutletPowerStates();
292 
293  /**
294  * Power-cycle multiple outlets.
295  *
296  * @param outletNumbers List of outlet numbers (zero-based)
297  * @param respectSequence \c true to switch in defined sequence order
298  *
299  * @return 0 if OK
300  * @return 3 if any of the selected outlets is disabled
301  */
302  int cycleMultipleOutletPowerStates(in vector<int> outletNumbers,
303  in boolean respectSequence);
304 
305  /**
306  * Retrieve PDU statistics.
307  *
308  * @return PDU statistics
309  */
310  Statistic getStatistic();
311 
312  /**
313  * Retrieve the current outlet sequencing status.
314  *
315  * @return Sequencing status
316  */
317  OutletSequenceState getOutletSequenceState();
318 
319  /**
320  * Stop a currently running outlet sequence.
321  */
322  void cancelOutletSequence();
323 
324  };
325 
326 }
327 
328 #endif
int inRushGuardDelay
Minimum delay in milliseconds between switching two outlets on.
Definition: Pdu.idl:73
boolean hasSwitchableOutlets
true if at least one outlet is switchable
Definition: Pdu.idl:38
Main PDU interface.
Definition: Pdu.idl:27
PDU metadata.
Definition: Pdu.idl:32
PDU sensors.
Definition: Pdu.idl:47
boolean sequenceRunning
true if an outlet sequence is currently running
Definition: Pdu.idl:89
Outlet will be switched off
Definition: Pdu.idl:64
boolean latchingRelays
If true, relays keep their state during power-cycling.
Definition: Pdu.idl:82
vector< CircuitBreakerStatistic > cbStats
Circuit breaker statistics.
Definition: Pdu.idl:55
vector< OutletStatistic > outletStats
Outlet statistics
Definition: Pdu.idl:57
boolean energyPulseEnabled
Enables energy consumption counting using the PDU&#39;s LED(s)
Definition: Pdu.idl:83
string ctrlBoardSerial
Main controller serial number.
Definition: Pdu.idl:34
boolean hasMeteredOutlets
true if at least one outlet is metered
Definition: Pdu.idl:39
Peripheral Devices.
Definition: PeripheralDeviceManager.idl:17
Peripheral device statistics.
Definition: PeripheralDeviceManager.idl:121
StartupState startupState
Default outlet state on device startup; can be overriden per outlet.
Definition: Pdu.idl:71
Nameplate_2_0_0 nameplate
Nameplate information
Definition: Pdu.idl:33
Outlet will be switched on
Definition: Pdu.idl:63
int outletsRemaining
Number of outlets remaining in the sequence.
Definition: Pdu.idl:92
peripheral::DeviceManager_3_0_2 Statistics peripheralStats
Peripheral device statistics.
Definition: Pdu.idl:58
int cancelableOutletsRemaining
Number of outlets remaining whose switch operation can be canceled (non-cancelable operations won&#39;t b...
Definition: Pdu.idl:93
Basic IDL definitions.
Definition: Event.idl:10
boolean hasLatchingOutletRelays
true if at least one outlet has a latching relay
Definition: Pdu.idl:40
boolean isEnergyPulseSupported
true if the PDU has one or more LED(s) capable of emitting pulses to measure consumed energy ...
Definition: Pdu.idl:42
Settings newSettings
Settings after change.
Definition: Pdu.idl:100
sensors::NumericSensor_4_0_3 activeEnergy
Active energy sensor.
Definition: Pdu.idl:50
Component nameplate information.
Definition: Nameplate.idl:23
int timeUntilNextSwitch
Time in milliseconds before the next outlet is switched.
Definition: Pdu.idl:91
int energyPulsesPerKWh
Ratio between LED pulses and energy consumption.
Definition: Pdu.idl:84
sensors::NumericSensor_4_0_3 activePower
Active power sensor.
Definition: Pdu.idl:49
string hwRevision
Hardware revision.
Definition: Pdu.idl:35
Ports.
Definition: Port.idl:15
Human Machine Interface.
Definition: ExternalBeeper.idl:14
int nextOutletToSwitch
Number (zero-based) of the next outlet in the sequence.
Definition: Pdu.idl:90
vector< sensors::StateSensor_4_0_3 > powerSupplyStatus
Power supply fault status.
Definition: Pdu.idl:48
Internal beeper interface.
Definition: InternalBeeper.idl:15
Sensors Model.
Definition: AccumulatingNumericSensor.idl:13
PDU settings.
Definition: Pdu.idl:69
string fwRevision
Firmware revision.
Definition: Pdu.idl:36
PDU Model.
Definition: Ade.idl:12
Outlet sequencing status
Definition: Pdu.idl:88
boolean isInlineMeter
true if all inlets have exactly one outlet
Definition: Pdu.idl:41
Sensor logger interface.
Definition: SensorLogger.idl:31
int cycleDelay
Default power-cycle interval in seconds; can be overriden per outlet.
Definition: Pdu.idl:72
vector< CtrlStatistic > ctrlStats
Slave controller statistics.
Definition: Pdu.idl:56
string macAddress
MAC address.
Definition: Pdu.idl:37
A sensor with numeric readings.
Definition: NumericSensor.idl:17
int powerOnDelay
Delay in seconds before restoring outlet states after device startup.
Definition: Pdu.idl:81
vector< int > outletPowerStateSequence
The order in which multiple outlets should be switched.
Definition: Pdu.idl:74
StartupState
Outlet power state on device startup
Definition: Pdu.idl:62
Sensor with discrete readings.
Definition: StateSensor.idl:43
string name
User-defined name.
Definition: Pdu.idl:70
Port interface.
Definition: Port.idl:18
PDU statistics.
Definition: Pdu.idl:54
Peripheral Device Manager.
Definition: PeripheralDeviceManager.idl:20