AssetStrip.idl
/* SPDX-License-Identifier: BSD-3-Clause */
/*
* Copyright 2010 Raritan Inc. All rights reserved.
*/
#ifndef __ASSETMGRMODEL_ASSETSTRIP_IDL__
#define __ASSETMGRMODEL_ASSETSTRIP_IDL__
#include <AssetStripConfig.idl>
#include <UserEvent.idl>
/**
* Asset Management Model
*/
module assetmgrmodel {
/** Asset Management Strip interface */
interface AssetStrip_2_0_5 {
/**
* Error codes
*/
constant int NO_ERROR = 0; ///< Operation successful, no error
constant int ERR_INVALID_PARAM = 1; ///< Invalid parameter for an operation
constant int ERR_NO_SUCH_OBJECT = 2; ///< Requested object does not exist
constant int ERR_NOT_SUPPORTED = 3; ///< Requested operation is not supported
constant int ERR_OPERATION_FAILED = 4; ///< Operation did not succeed
/**
* Constants
*/
constant int MAIN_STRIP_COLUMN = 0;
/** %AssetStrip state */
enumeration State {
DISCONNECTED, ///< No strip connected
FIRMWARE_UPDATE, ///< Firmware update in progress
UNSUPPORTED, ///< Connected asset strip is unsupported
AVAILABLE ///< Asset strip is up and running normally
};
/**
* Type of the connected asset strip
*/
enumeration StripType {
SIMPLE, ///< single, monolitic strip
COMPOSITE ///< strip consisting of multiple cascaded strips
};
/**
* Type of an asset tag connected to a rack unit
*/
enumeration TagType {
SINGLE, ///< single asset tag connected to main strip or an extension
EXTENSION, ///< blade server extension, only possible on the main strip
NONE ///< no asset tag connected to main strip or an extension
};
/**
* For composite asset strips CascadeState shows additional information
* about the state of the complete cascade
*/
enumeration CascadeState {
CASCADE_ACTIVE, ///< cascade is up and running
CASCADE_FIRMWARE_UPDATE ///< a device in the cascade receives a firmware update
};
/**
* Static (type, version) information for an %AssetStrip.
*/
structure DeviceInfo {
int deviceId; ///< Device type (indicated a certain hardware)
int hardwareId; ///< Hardware ID, revision
int protocolVersion; ///< Protocol version the strip is supporting
int bootVersion; ///< Bootcode software version
int appVersion; ///< Application code software version
boolean orientationSensAvailable; ///< Indicates whether the strip has an orientation sensor
boolean isCascadable; ///< The asset strip type
boolean rackUnitCountConfigurable; ///< Rack unit count has to be configured, i.e. is not auto detected
};
/**
* Dynamic (may change with a connected strip) information for an %AssetStrip.
*/
structure StripInfo {
int maxMainTagCount; ///< Maximum number of tags supported on the main strip
int maxBladeTagCount; ///< Maximum number of tags supported on blade extensions
int mainTagCount; ///< Current number of tags on the main asset strip
int bladeTagCount; ///< Current number of tags on all blade extensions
boolean bladeOverflow; ///< Out of space for new blade extension tags, read-only
int rackUnitCount; ///< Rack unit count, i.e. number of tags connectable
int componentCount; ///< Number of components
CascadeState cascadeState; ///< State of the cascade (only for composite strips)
};
/**
* Information for a single tag
*/
structure TagInfo {
int rackUnitNumber; ///< The rack unit this tag is connected to, range 0..rackUnitCount-1
int slotNumber; ///< Blade slot this tag is connected to, 0 is the main strip, >0 for blades
string familyDesc; ///< Tag family description, indicating different tag hardware
string rawId; ///< The asset tag ID (6 byte hexadecimal string 'AABBCCDDEEFF')
boolean programmable; ///< Is the asset tag ID programmable?
};
/**
* Infos for a single rack unit
*
* In case no asset strip is connected, type defaults to single and size defaults to 1
*/
structure RackUnitInfo {
int rackUnitNumber; ///< rack unit for the settings, range 0..rackUnitCount-1
int rackUnitPosition; ///< resulting rack unit position (display number)
TagType type; ///< type of the asset tag (single, extension, none or unknown)
int size; ///< blade extension size (4,8,16), 1 for single tags or 0 if nothing connected
AssetStripConfig_1_0_1.RackUnitSettings settings; ///< settings for a single rack unit
int assetStripCascadePosition; ///< number of strip in cascade
int rackUnitRelativePosition; ///< relative position to strip
int assetStripNumberOfRackUnits; ///< number of rack units in strip that this rack unit belongs to
};
/** Event: Asset strip dynamic information has changed */
valueobject StripInfoChangedEvent extends idl.Event {
StripInfo oldInfo; ///< Information before change
StripInfo newInfo; ///< Information after change
};
/** Event: Asset strip state has changed */
valueobject StateChangedEvent extends idl.Event {
State oldState; ///< State before change
State newState; ///< State after change
DeviceInfo deviceInfo; ///< Information about connected strip, only valid
///< if newState is AVAILABLE
};
/** Event: A rack unit has changed */
valueobject RackUnitChangedEvent extends event.UserEvent {
int rackUnitNumber; ///< Affected rack unit position
RackUnitInfo rackUnit; ///< New rack unit information
};
/**
* Information describing a tag change
*/
structure TagChangeInfo {
TagInfo tag; ///< Tag which was attached or detached
RackUnitInfo info; ///< Rack unit the tag was/is connected to
string parentBladeTagId; ///< Asset tag ID of the parent blade tag,
///< empty if the tag is not an extension tag
int slotPosition; ///< Blade slot position of the tag,
///< 0 if the tag is not an extension tag
};
/** Event: A tag was added or removed */
valueobject TagEvent extends idl.Event {
vector<TagChangeInfo> tags; ///< Affected tags
vector<TagInfo> allTags; ///< New list of detected tags after change
};
/** Event: A tag was added */
valueobject TagAddedEvent extends TagEvent { };
/** Event: A tag was removed */
valueobject TagRemovedEvent extends TagEvent { };
/** Enumeration: State of firmware update */
enumeration FirmwareUpdateState {
UPDATE_STARTED, ///< Update is running
UPDATE_SUCCESSFUL, ///< Update was completed successfully
UPDATE_FAILED ///< Update has failed
};
/** Event: Firmware update was started or has finished */
valueobject FirmwareUpdateStateChangedEvent extends idl.Event {
FirmwareUpdateState state; ///< Update state
};
/** Event: Tag overflow */
valueobject BladeOverflowChangedEvent extends idl.Event {
boolean overflow; ///< Whether the strip is out of space
///< for new blade extension tags
};
/** Event: Detected strip orientation has changed */
valueobject OrientationChangedEvent extends idl.Event {
AssetStripConfig_1_0_1.Orientation oldOrientation; ///< Strip orientation before change
AssetStripConfig_1_0_1.Orientation newOrientation; ///< Strip orientation after change
};
/** Event: Strip composition has changed */
valueobject CompositionChangedEvent extends idl.Event {
int oldComponentCount; ///< Component count before change
int newComponentCount; ///< Component count after change
};
/**
* Get the current state of the %AssetStrip
*
* @return State of the Asset Strip
*/
State getState();
/**
* Get static (hardware and firmware) information
*
* @return Result: hardware and firmware information
*/
DeviceInfo getDeviceInfo();
/**
* Get dynamic (number of tags) information
*
* @return Result: tag related information
*/
StripInfo getStripInfo();
/**
* Get info with all settings of a rack unit at once
*
* @param rackUnitNumber rack unit to get the info for, range 0..rackUnitCount-1
* @param info Result: info for this rack unit
* @return NO_ERROR on success
* @return ERR_INVALID_PARAM rack unit count exceeded
*/
int getRackUnitInfo(in int rackUnitNumber, out RackUnitInfo info);
/**
* Get infos with settings for all rack units
*
* @return Result: the rack unit infos with settings
*/
vector<RackUnitInfo> getAllRackUnitInfos();
/**
* Get the asset tag for a rack unit
*
* @param rackUnitNumber rack unit to read the asset tag for, range 0..rackUnitCount-1
* @param slotNumber slot to read the asset tag for, 0 for the main strip, >0 for blades
* @param tagInfo Result: asset tag information
* @return NO_ERROR on success
* @return ERR_INVALID_PARAM rack unit count exceeded or colum not existing
* @return ERR_NO_SUCH_OBJECT no tag connected to this rack unit
*/
int getTag(in int rackUnitNumber, in int slotNumber, out TagInfo tagInfo);
/**
* Get all asset tags of the strip
*
* Please note that in case there is not a single tag connected to the
* strip the resulting list will be empty, only connected tag info
* structures are returned
* It is guaranteed that extensions on the main strip are returned
* before any tag on an extension itself.
*
* @return Result: list asset tag infos
*/
vector<TagInfo> getAllTags();
/**
* Get all asset tags on the main strip
*
* Same as getAllTags, but only consider tags connected to the main
* asset strip and not on any connected extension.
* Extensions on the main strip themselves are returned.
*
* @return Result: list asset tag infos
*/
vector<TagInfo> getMainTags();
/**
* Get all asset tags on an extension
*
* Gets all tags on a single extension for a certain rack unit.
* List will be empty if there are no tags connected
*
* @param rackUnitNumber rack unit to get the extension tags for, range 0..rackUnitCount-1
* @param tags Result: list asset tag infos
* @return NO_ERROR on success
* @return ERR_INVALID_PARAM rack unit count exceeded or rack unit
* does not contain an extension
*/
int getExtensionTags(in int rackUnitNumber, out vector<TagInfo> tags);
/**
* Trigger a powercycle of either the whole asset strip port or the
* LED part power supply on the asset strip
*
* @param hard true=whole port, false=LEDs only
*/
void triggerPowercycle(in boolean hard);
/**
* Program custom tag IDs
*
* Asset tags of type AMT-P may be programmed by user (custom ID). This method
* takes a list of (rack unit, slot number, id) tuples that determine
* which connected tag should be programmed with which ID.
* TagInfo::rawId specifies the ID. An empty string erases the current
* custom ID which brings back the original 1-wire ID.
* Set TagInfo::slotNumber to 0 for tags on main strip and > 0 for blades.
* TagInfo::familyDesc and TagInfo::programmable are ignored.
*
* @param tagInfos vector of tag information that will be programmed
* @return NO_ERROR on success
* @return ERR_INVALID_PARAM rack unit out of bounds or custom ID too long
* @return ERR_NO_SUCH_OBJECT rack unit does not exist or has no tag
* @return ERR_NOT_SUPPORTED tag is not programmable
* @return ERR_OPERATION_FAILED programming failed
*/
int programTagIDs(in vector<TagInfo> tagInfos);
/**
* Retrieve state of firmware update
*
* @return asset strip firmware update state
*/
FirmwareUpdateState getFirmwareUpdateState();
};
}
#endif /* __ASSETMGRMODEL_ASSETSTRIP_IDL__ */
assetmgrmodel::AssetStrip_2_0_5::DeviceInfo::deviceId
int deviceId
Device type (indicated a certain hardware)
Definition: AssetStrip.idl:71
assetmgrmodel::AssetStrip_2_0_5::allTags
vector< TagInfo > allTags
New list of detected tags after change.
Definition: AssetStrip.idl:157
assetmgrmodel::AssetStrip_2_0_5::TagChangeInfo::slotPosition
int slotPosition
Blade slot position of the tag, 0 if the tag is not an extension tag.
Definition: AssetStrip.idl:150
assetmgrmodel::AssetStrip_2_0_5::EXTENSION
blade server extension, only possible on the main strip
Definition: AssetStrip.idl:54
assetmgrmodel::AssetStripConfig_1_0_1
Asset Strip Config interface.
Definition: AssetStripConfig.idl:17
assetmgrmodel::AssetStrip_2_0_5::TagInfo
Information for a single tag.
Definition: AssetStrip.idl:98
assetmgrmodel::AssetStrip_2_0_5::RackUnitInfo::rackUnitNumber
int rackUnitNumber
rack unit for the settings, range 0..rackUnitCount-1
Definition: AssetStrip.idl:112
assetmgrmodel::AssetStripConfig_1_0_1::Orientation
Orientation
AssetStripConfig orientation
Definition: AssetStripConfig.idl:56
assetmgrmodel::AssetStrip_2_0_5::DeviceInfo::orientationSensAvailable
boolean orientationSensAvailable
Indicates whether the strip has an orientation sensor.
Definition: AssetStrip.idl:76
assetmgrmodel::AssetStrip_2_0_5::StripInfo::rackUnitCount
int rackUnitCount
Rack unit count, i.e. number of tags connectable.
Definition: AssetStrip.idl:90
assetmgrmodel::AssetStrip_2_0_5::CascadeState
CascadeState
For composite asset strips CascadeState shows additional information about the state of the complete ...
Definition: AssetStrip.idl:62
assetmgrmodel::AssetStrip_2_0_5::DeviceInfo::rackUnitCountConfigurable
boolean rackUnitCountConfigurable
Rack unit count has to be configured, i.e. is not auto detected.
Definition: AssetStrip.idl:78
assetmgrmodel::AssetStrip_2_0_5::StripInfo::bladeTagCount
int bladeTagCount
Current number of tags on all blade extensions.
Definition: AssetStrip.idl:88
assetmgrmodel::AssetStrip_2_0_5::SINGLE
single asset tag connected to main strip or an extension
Definition: AssetStrip.idl:53
assetmgrmodel::AssetStrip_2_0_5::rackUnit
RackUnitInfo rackUnit
New rack unit information.
Definition: AssetStrip.idl:139
assetmgrmodel::AssetStrip_2_0_5::StripType
StripType
Type of the connected asset strip.
Definition: AssetStrip.idl:44
assetmgrmodel::AssetStrip_2_0_5::DeviceInfo::protocolVersion
int protocolVersion
Protocol version the strip is supporting.
Definition: AssetStrip.idl:73
assetmgrmodel::AssetStrip_2_0_5
Asset Management Strip interface.
Definition: AssetStrip.idl:17
assetmgrmodel::AssetStrip_2_0_5::TagChangeInfo::tag
TagInfo tag
Tag which was attached or detached.
Definition: AssetStrip.idl:146
assetmgrmodel::AssetStrip_2_0_5::newComponentCount
int newComponentCount
Component count after change.
Definition: AssetStrip.idl:192
assetmgrmodel::AssetStrip_2_0_5::DeviceInfo::bootVersion
int bootVersion
Bootcode software version.
Definition: AssetStrip.idl:74
assetmgrmodel::AssetStrip_2_0_5::RackUnitInfo::assetStripCascadePosition
int assetStripCascadePosition
number of strip in cascade
Definition: AssetStrip.idl:117
assetmgrmodel::AssetStrip_2_0_5::StripInfo::mainTagCount
int mainTagCount
Current number of tags on the main asset strip.
Definition: AssetStrip.idl:87
assetmgrmodel::AssetStrip_2_0_5::TagChangeInfo
Information describing a tag change.
Definition: AssetStrip.idl:145
assetmgrmodel::AssetStrip_2_0_5::RackUnitInfo::size
int size
blade extension size (4,8,16), 1 for single tags or 0 if nothing connected
Definition: AssetStrip.idl:115
assetmgrmodel::AssetStrip_2_0_5::deviceInfo
DeviceInfo deviceInfo
Information about connected strip, only valid if newState is AVAILABLE.
Definition: AssetStrip.idl:132
assetmgrmodel::AssetStrip_2_0_5::TagInfo::slotNumber
int slotNumber
Blade slot this tag is connected to, 0 is the main strip, >0 for blades.
Definition: AssetStrip.idl:100
assetmgrmodel::AssetStrip_2_0_5::DISCONNECTED
No strip connected.
Definition: AssetStrip.idl:35
assetmgrmodel::AssetStrip_2_0_5::StripInfo::componentCount
int componentCount
Number of components.
Definition: AssetStrip.idl:91
assetmgrmodel::AssetStrip_2_0_5::TagType
TagType
Type of an asset tag connected to a rack unit.
Definition: AssetStrip.idl:52
assetmgrmodel::AssetStrip_2_0_5::StripInfo::cascadeState
CascadeState cascadeState
State of the cascade (only for composite strips)
Definition: AssetStrip.idl:92
assetmgrmodel::AssetStrip_2_0_5::RackUnitInfo::assetStripNumberOfRackUnits
int assetStripNumberOfRackUnits
number of rack units in strip that this rack unit belongs to
Definition: AssetStrip.idl:119
assetmgrmodel::AssetStrip_2_0_5::newState
State newState
State after change.
Definition: AssetStrip.idl:131
assetmgrmodel::AssetStrip_2_0_5::StripInfo::bladeOverflow
boolean bladeOverflow
Out of space for new blade extension tags, read-only.
Definition: AssetStrip.idl:89
assetmgrmodel::AssetStrip_2_0_5::TagInfo::rackUnitNumber
int rackUnitNumber
The rack unit this tag is connected to, range 0..rackUnitCount-1.
Definition: AssetStrip.idl:99
idl
Basic IDL definitions.
Definition: Event.idl:10
assetmgrmodel::AssetStrip_2_0_5::RackUnitInfo::rackUnitPosition
int rackUnitPosition
resulting rack unit position (display number)
Definition: AssetStrip.idl:113
assetmgrmodel::AssetStrip_2_0_5::RackUnitInfo::type
TagType type
type of the asset tag (single, extension, none or unknown)
Definition: AssetStrip.idl:114
assetmgrmodel::AssetStrip_2_0_5::UNSUPPORTED
Connected asset strip is unsupported.
Definition: AssetStrip.idl:37
assetmgrmodel::AssetStrip_2_0_5::RackUnitInfo
Infos for a single rack unit.
Definition: AssetStrip.idl:111
assetmgrmodel::AssetStrip_2_0_5::newInfo
StripInfo newInfo
Information after change.
Definition: AssetStrip.idl:125
assetmgrmodel::AssetStrip_2_0_5::TagChangeInfo::parentBladeTagId
string parentBladeTagId
Asset tag ID of the parent blade tag, empty if the tag is not an extension tag.
Definition: AssetStrip.idl:148
assetmgrmodel::AssetStrip_2_0_5::FirmwareUpdateState
FirmwareUpdateState
Enumeration: State of firmware update.
Definition: AssetStrip.idl:166
assetmgrmodel::AssetStrip_2_0_5::RackUnitInfo::rackUnitRelativePosition
int rackUnitRelativePosition
relative position to strip
Definition: AssetStrip.idl:118
assetmgrmodel::AssetStrip_2_0_5::CASCADE_ACTIVE
cascade is up and running
Definition: AssetStrip.idl:63
assetmgrmodel::AssetStrip_2_0_5::DeviceInfo::appVersion
int appVersion
Application code software version.
Definition: AssetStrip.idl:75
assetmgrmodel::AssetStrip_2_0_5::StripInfo::maxMainTagCount
int maxMainTagCount
Maximum number of tags supported on the main strip.
Definition: AssetStrip.idl:85
assetmgrmodel::AssetStrip_2_0_5::TagInfo::familyDesc
string familyDesc
Tag family description, indicating different tag hardware.
Definition: AssetStrip.idl:101
assetmgrmodel::AssetStrip_2_0_5::StripInfo
Dynamic (may change with a connected strip) information for an AssetStrip.
Definition: AssetStrip.idl:84
assetmgrmodel::AssetStrip_2_0_5::newOrientation
AssetStripConfig_1_0_1::Orientation newOrientation
Strip orientation after change.
Definition: AssetStrip.idl:186
assetmgrmodel::AssetStrip_2_0_5::UPDATE_STARTED
Update is running.
Definition: AssetStrip.idl:167
assetmgrmodel::AssetStrip_2_0_5::StripInfo::maxBladeTagCount
int maxBladeTagCount
Maximum number of tags supported on blade extensions.
Definition: AssetStrip.idl:86
assetmgrmodel
Asset Management Model.
Definition: AssetStrip.idl:15
assetmgrmodel::AssetStrip_2_0_5::FIRMWARE_UPDATE
Firmware update in progress.
Definition: AssetStrip.idl:36
assetmgrmodel::AssetStrip_2_0_5::UPDATE_SUCCESSFUL
Update was completed successfully.
Definition: AssetStrip.idl:168
assetmgrmodel::AssetStrip_2_0_5::DeviceInfo::hardwareId
int hardwareId
Hardware ID, revision.
Definition: AssetStrip.idl:72
assetmgrmodel::AssetStrip_2_0_5::SIMPLE
single, monolitic strip
Definition: AssetStrip.idl:45
assetmgrmodel::AssetStrip_2_0_5::TagInfo::programmable
boolean programmable
Is the asset tag ID programmable?
Definition: AssetStrip.idl:103
assetmgrmodel::AssetStrip_2_0_5::TagChangeInfo::info
RackUnitInfo info
Rack unit the tag was/is connected to.
Definition: AssetStrip.idl:147
assetmgrmodel::AssetStrip_2_0_5::TagInfo::rawId
string rawId
The asset tag ID (6 byte hexadecimal string &#39;AABBCCDDEEFF&#39;)
Definition: AssetStrip.idl:102
assetmgrmodel::AssetStrip_2_0_5::DeviceInfo::isCascadable
boolean isCascadable
The asset strip type.
Definition: AssetStrip.idl:77
assetmgrmodel::AssetStrip_2_0_5::State
State
AssetStrip state
Definition: AssetStrip.idl:34
assetmgrmodel::AssetStrip_2_0_5::DeviceInfo
Static (type, version) information for an AssetStrip.
Definition: AssetStrip.idl:70
assetmgrmodel::AssetStrip_2_0_5::RackUnitInfo::settings
AssetStripConfig_1_0_1::RackUnitSettings settings
settings for a single rack unit
Definition: AssetStrip.idl:116
assetmgrmodel::AssetStripConfig_1_0_1::RackUnitSettings
Settings for a single rack unit (LED state)
Definition: AssetStripConfig.idl:111