NMOS Control Feature Sets: Monitoring
Includes models for control classes and datatypes used for monitoring.
Datatypes
NcOverallStatus
// Overall status enum data type
enum NcOverallStatus {
"Inactive", // 0 Inactive
"Healthy", // 1 The overall status is healthy
"PartiallyHealthy", // 2 The overall status is partially healthy
"Unhealthy" // 3 The overall status is unhealthy
};
NcLinkStatus
// Link status enum data type
enum NcLinkStatus {
"AllUp", // 1 All the associated network interfaces are up
"SomeDown", // 2 Some of the associated network interfaces are down
"AllDown" // 3 All the associated network interfaces are down
};
NcConnectionStatus
// Connection status enum data type
enum NcConnectionStatus {
"Inactive", // 0 Inactive
"Healthy", // 1 Active and healthy
"PartiallyHealthy", // 2 Active and partially healthy
"Unhealthy" // 3 Active and unhealthy
};
NcTransmissionStatus
// Transmission status enum data type
enum NcTransmissionStatus {
"Inactive", // 0 Inactive
"Healthy", // 1 Active and healthy
"PartiallyHealthy", // 2 Active and partially healthy
"Unhealthy" // 3 Active and unhealthy
};
NcSynchronizationStatus
// Synchronization status enum data type
enum NcSynchronizationStatus {
"NotUsed", // 0 Feature not in use
"Healthy", // 1 Locked to a synchronization source
"PartiallyHealthy", // 2 Partially locked to a synchronization source
"Unhealthy" // 3 Not locked to a synchronization source
};
NcStreamStatus
// Stream status enum data type
enum NcStreamStatus {
"Inactive", // 0 Inactive
"Healthy", // 1 Active and healthy
"PartiallyHealthy", // 2 Active and partially healthy
"Unhealthy" // 3 Active and unhealthy
};
NcEssenceStatus
// Essence status enum data type
enum NcEssenceStatus {
"Inactive", // 0 Inactive
"Healthy", // 1 Active and healthy
"PartiallyHealthy", // 2 Active and partially healthy
"Unhealthy" // 3 Active and unhealthy
};
NcCounter
// Counter data type
interface NcCounter {
attribute NcString name; // Counter name
attribute NcUint64 value; // Counter value
attribute NcString? description; // Optional counter description
};
NcMethodResultCounters
// Counters method result
interface NcMethodResultCounters: NcMethodResult {
attribute sequence<NcCounter> value; // Counters
};
Control classes
NcStatusMonitor
This is the baseline status monitoring class that all feature status monitors use.
The goal is to make it easy for clients to find a very high level overallStatus
.
The other goal is that it makes it easy to find all status monitors in a device model by using the FindMembersByClassId inside block classes.
// Baseline status monitoring class
[control-class("1.2.2")] interface NcStatusMonitor: NcWorker {
[element("3p1")] readonly attribute NcOverallStatus overallStatus; // Overall status property
[element("3p2")] readonly attribute NcString? overallStatusMessage; // Overall status message property
[element("3p3")] attribute NcUint32 statusReportingDelay; // Status reporting delay property (in seconds, default is 3s and 0 means no delay)
};
NcReceiverMonitor
Receiver monitoring class required for expressing statuses of different domains (connectivity, synchronization, stream validation).
Because it derives from the baseline NcStatusMonitor it will also expose an overallStatus
property.
It uses the Touchpoint mechanism inherited from NcObject to attach to the correct receiver identity.
Receiver monitors MUST maintain a 1 to 1 relationship between their role and the touchpoint receiver entity they monitor as long as the receiver entity hasn’t been disposed by the device.
// Receiver monitor class descriptor
[control-class("1.2.2.1")] interface NcReceiverMonitor: NcStatusMonitor {
[element("4p1")] readonly attribute NcLinkStatus linkStatus; // Link status property
[element("4p2")] readonly attribute NcString? linkStatusMessage; // Link status message property
[element("4p3")] readonly attribute NcConnectionStatus connectionStatus; // Connection status property
[element("4p4")] readonly attribute NcString? connectionStatusMessage; // Connection status message property
[element("4p5")] readonly attribute NcSynchronizationStatus externalSynchronizationStatus; // External synchronization status property
[element("4p6")] readonly attribute NcString? externalSynchronizationStatusMessage; // External synchronization status message property
[element("4p7")] readonly attribute NcString? synchronizationSourceId; // Synchronization source id property
[element("4p8")] readonly attribute NcUint64 synchronizationSourceChanges; // Synchronization source changes counter
[element("4p9")] readonly attribute NcStreamStatus streamStatus; // Stream status property
[element("4p10")] readonly attribute NcString? streamStatusMessage; // Stream status message property
[element("4p11")] attribute NcBoolean autoResetPacketCounters; // Automatic reset packet counters property (default: true)
// Gets the lost packet counters
[element("4m1")] NcMethodResultCounters GetLostPacketCounters();
// Gets the late packet counters
[element("4m2")] NcMethodResultCounters GetLatePacketCounters();
// Resets the packet counters
[element("4m3")] NcMethodResult ResetPacketCounters();
// Resets the synchronization source changes counter property
[element("4m4")] NcMethodResult ResetSynchronizationSourceChanges();
};
NcSenderMonitor
Sender monitoring class required for expressing statuses of different domains (connectivity, synchronization, essence validation).
Because it derives from the baseline NcStatusMonitor it will also expose an overallStatus
property.
It uses the Touchpoint mechanism inherited from NcObject to attach to the correct sender identity.
Sender monitors MUST maintain a 1 to 1 relationship between their role and the touchpoint sender entity they monitor as long as the sender entity hasn’t been disposed by the device.
// Sender monitor class descriptor
[control-class("1.2.2.2")] interface NcSenderMonitor: NcStatusMonitor {
[element("4p1")] readonly attribute NcLinkStatus linkStatus; // Link status property
[element("4p2")] readonly attribute NcString? linkStatusMessage; // Link status message property
[element("4p3")] readonly attribute NcTransmissionStatus transmissionStatus; // Transmission status property
[element("4p4")] readonly attribute NcString? transmissionStatusMessage; // Transmission status message property
[element("4p5")] readonly attribute NcSynchronizationStatus externalSynchronizationStatus; // External synchronization status property
[element("4p6")] readonly attribute NcString? externalSynchronizationStatusMessage; // External synchronization status message property
[element("4p7")] readonly attribute NcString? synchronizationSourceId; // Synchronization source id property
[element("4p8")] readonly attribute NcUint64 synchronizationSourceChanges; // Synchronization source changes counter
[element("4p9")] readonly attribute NcEssenceStatus essenceStatus; // Essence status property
[element("4p10")] readonly attribute NcString? essenceStatusMessage; // Essence status message property
[element("4p11")] attribute NcBoolean autoResetErrorCounters; // Automatic reset error counters property (default: true)
// Gets the transmission error counters
[element("4m1")] NcMethodResultCounters GetTransmissionErrorCounters();
// Resets the error counters
[element("4m2")] NcMethodResult ResetErrorCounters();
// Resets the synchronization source changes counter property
[element("4m3")] NcMethodResult ResetSynchronizationSourceChanges();
};