Controller.idl
/* SPDX-License-Identifier: BSD-3-Clause */
/*
* Copyright 2010 Raritan Inc. All rights reserved.
*/
#ifndef __PDUMODEL_CONTROLLER_IDL__
#define __PDUMODEL_CONTROLLER_IDL__
#include <Event.idl>
/**
* PDU Model
*/
module pdumodel {
/** Slave controller statistics */
structure CtrlStatistic {
int masterCSumErrCnt; ///< Master CRC error counter
int slaveCSumErrCnt; ///< Slave CRC error counter
int timeoutCnt; ///< Master timeout counter
int resetCnt; ///< Controller reset counter
int emResetCnt; ///< Energy meter reset counter
};
/** Slave controller interface */
interface Controller_4_0_1 {
constant int ERR_NOT_SUPPORTED = 1; ///< Operation not supported
/** Communication status */
enumeration Status {
OK, ///< Communication with controller is known to be working
COMMUNICATION_UNSTABLE, ///< Controller can be communicated with sporadically
COMMUNICATION_FAILURE, ///< Controller can't be communicated with
UNKNOWN, ///< Communication status is unknown, e.g. after startup
INCOMPATIBLE, ///< The characteristics of the controller don't meet the expectations
FIRMWARE_UPDATE ///< A controller firmware update is in progress
};
/** Slave controller type */
enumeration Type {
OUTLET_CTRL, ///< %Outlet controller
INLET_CTRL, ///< %Inlet controller
METER_CTRL ///< %General metering controller
};
/** Slave controller metadata */
structure MetaData {
Type type; ///< %Controller type
string address; ///< Slave address
int magic; ///< Magic code
boolean versionAvailable; ///< \c true if version information and serial number is available
int fwAppVersion; ///< Firmware application version; 0 if unavailable
int fwBootVersion; ///< Firmware bootloader version; 0 if unavailable
int hwVersion; ///< Hardware version; 0 if unavailable
string serial; ///< Serial number; empty if unavailable
boolean haveResetCnt; ///< \c true if controller reset counter is available
boolean haveEmResetCnt; ///< \c true if energy meter reset counter is available
};
/** Event: Controller communication status has changed */
valueobject StatusChangedEvent extends idl.Event {
Status oldStatus; ///< Status before change
Status newStatus; ///< Status after change
};
/** Event: Controller metadata has changed */
valueobject MetaDataChangedEvent extends idl.Event {
MetaData oldMetaData; ///< Metadata before change
MetaData newMetaData; ///< Metadata after change
};
/**
* Retrieve the current status of communication with controller
*
* @return communication status
*/
Status getCommunicationStatus();
/**
* Retrieve statistics
*
* @return statistics of %Controller
*/
CtrlStatistic getStatistics();
/**
* Retrieve the slave controller metadata.
*
* @return %Controller metadata
*/
MetaData getMetaData();
/**
* Reset this slave controller.
*
* Note: Depending on the hardware setup of the specific device, calling
* this method may also cause other slave controllers to be reset.
* @return 0 on success
* ERR_NOT_SUPPORTED if the hardware setup doesn't allow resetting the controller
*/
int reset();
};
}
#endif
pdumodel::CtrlStatistic::slaveCSumErrCnt
int slaveCSumErrCnt
Slave CRC error counter.
Definition: Controller.idl:19
pdumodel::Controller_4_0_1::MetaData::fwAppVersion
int fwAppVersion
Firmware application version; 0 if unavailable.
Definition: Controller.idl:52
pdumodel::Controller_4_0_1::MetaData::hwVersion
int hwVersion
Hardware version; 0 if unavailable.
Definition: Controller.idl:54
pdumodel::Controller_4_0_1::MetaData
Slave controller metadata.
Definition: Controller.idl:47
pdumodel::Controller_4_0_1::OUTLET_CTRL
Outlet controller
Definition: Controller.idl:41
pdumodel::Controller_4_0_1::INCOMPATIBLE
The characteristics of the controller don&#39;t meet the expectations.
Definition: Controller.idl:35
pdumodel::Controller_4_0_1::MetaData::haveResetCnt
boolean haveResetCnt
true if controller reset counter is available
Definition: Controller.idl:56
pdumodel::Controller_4_0_1::newStatus
Status newStatus
Status after change.
Definition: Controller.idl:63
pdumodel::Controller_4_0_1::MetaData::address
string address
Slave address.
Definition: Controller.idl:49
pdumodel::Controller_4_0_1::MetaData::fwBootVersion
int fwBootVersion
Firmware bootloader version; 0 if unavailable.
Definition: Controller.idl:53
pdumodel::Controller_4_0_1::UNKNOWN
Communication status is unknown, e.g. after startup.
Definition: Controller.idl:34
pdumodel::Controller_4_0_1::MetaData::magic
int magic
Magic code.
Definition: Controller.idl:50
idl
Basic IDL definitions.
Definition: Event.idl:10
pdumodel::Controller_4_0_1::MetaData::type
Type type
Controller type
Definition: Controller.idl:48
pdumodel::CtrlStatistic::masterCSumErrCnt
int masterCSumErrCnt
Master CRC error counter.
Definition: Controller.idl:18
pdumodel::Controller_4_0_1::Type
Type
Slave controller type.
Definition: Controller.idl:40
pdumodel::Controller_4_0_1
Slave controller interface.
Definition: Controller.idl:26
pdumodel
PDU Model.
Definition: Ade.idl:12
pdumodel::Controller_4_0_1::MetaData::versionAvailable
boolean versionAvailable
true if version information and serial number is available
Definition: Controller.idl:51
pdumodel::Controller_4_0_1::Status
Status
Communication status.
Definition: Controller.idl:30
pdumodel::Controller_4_0_1::COMMUNICATION_FAILURE
Controller can&#39;t be communicated with.
Definition: Controller.idl:33
pdumodel::Controller_4_0_1::MetaData::haveEmResetCnt
boolean haveEmResetCnt
true if energy meter reset counter is available
Definition: Controller.idl:57
pdumodel::Controller_4_0_1::INLET_CTRL
Inlet controller
Definition: Controller.idl:42
pdumodel::CtrlStatistic::resetCnt
int resetCnt
Controller reset counter.
Definition: Controller.idl:21
pdumodel::CtrlStatistic::emResetCnt
int emResetCnt
Energy meter reset counter.
Definition: Controller.idl:22
pdumodel::CtrlStatistic::timeoutCnt
int timeoutCnt
Master timeout counter.
Definition: Controller.idl:20
pdumodel::CtrlStatistic
Slave controller statistics.
Definition: Controller.idl:17
pdumodel::Controller_4_0_1::COMMUNICATION_UNSTABLE
Controller can be communicated with sporadically.
Definition: Controller.idl:32
pdumodel::Controller_4_0_1::OK
Communication with controller is known to be working.
Definition: Controller.idl:31
pdumodel::Controller_4_0_1::MetaData::serial
string serial
Serial number; empty if unavailable.
Definition: Controller.idl:55
pdumodel::Controller_4_0_1::newMetaData
MetaData newMetaData
Metadata after change.
Definition: Controller.idl:69