A.1 IDL specification (file name "PMIRPConstDefs.idl")

32.4133GPPPerformance Management (PM) Integration Reference Point (IRP): Common Object Request Broker Architecture (CORBA) Solution Set (SS)Telecommunication managementTS

//File: PMIRPConstDefs.idl

#ifndef _PM_IRP_CONST_DEFS_IDL_

#define _PM_IRP_CONST_DEFS_IDL_

#include <TimeBase.idl>

// This statement must appear after all include statements

#pragma prefix "3gppsa5.org"

/* ## Module: PMIRPConstDefs

This module contains commonly used definitions for PM IRP

===============================================================

*/

module PMIRPConstDefs

{

enum Result {OK, FAILURE};

typedef string MOClassName;

typedef string MOInstance;

typedef sequence<MOInstance> MOInstanceList;

typedef string MeasurementCategory;

typedef sequence<MeasurementCategory> MeasurementCategoryList;

typedef unsigned long GranularityPeriod; //The unit is minute.

typedef unsigned long ReportingPeriod; //The unit is minute.

typedef TimeBase::UtcT UTCTime;

union IRPTimeOpt switch(boolean)

{

case TRUE: UTCTime value;

};

struct Time24

{

unsigned short hour; // 0-23

unsigned short minute; // 0-59

};

struct IntervalOfDay

{

Time24 interval_start_time;

Time24 interval_stop_time;

};

typedef sequence<IntervalOfDay> DailyScheduling;

const short SUNDAY = 1;

const short MONDAY = 2;

const short TUESDAY = 4;

const short WEDNESDAY = 8;

const short THURSDAY = 16;

const short FRIDAY = 32;

const short SATURDAY = 64;

typedef short DaysOfWeek;

// Bit mask of week days,

// e.g. "SUNDAY(1) and WEDNESDAY(8)" is encoded as 9.

struct WeeklySchedulingElement

{

DaysOfWeek days;

DailyScheduling intervals_of_day;

};

typedef sequence<WeeklySchedulingElement> WeeklyScheduling;

enum ScheduleType { DAILY, WEEKLY };

union Schedule switch (ScheduleType)

{

case DAILY: DailyScheduling daily_scheduling;

case WEEKLY: WeeklyScheduling weekly_scheduling;

};

union ScheduleOpt switch(boolean)

{

case TRUE: Schedule value;

};

typedef unsigned long JobId;

typedef sequence<JobId> JobIdList;

struct JUnsupported

{

MOInstance mo_instance;

MeasurementCategory measurement_category;

string reason;

};

typedef sequence<JUnsupported> JUnsupportedList;

/**

* Defines the name of an attribute of a Managed Object

*/

typedef string MOAttributeName;

enum JobStatus {SCHEDULED, ACTIVE, SUSPENDED, STOPPED};

enum JobPriority {LOW, MEDIUM, HIGH};

union JobPriorityOpt switch (boolean)

{

case TRUE: JobPriority value;

};

struct JobInfo

{

JobId job_id;

MOClassName mo_class;

MOInstanceList mo_instance_list;

MeasurementCategoryList measurement_category_list;

GranularityPeriod granularity_period;

ReportingPeriod reporting_period;

IRPTimeOpt start_time;

IRPTimeOpt stop_time;

ScheduleOpt schedule;

JobStatus job_status;

JobPriorityOpt job_priority;

};

typedef sequence<JobInfo> JobInfoList;

typedef string MeasurementTypeName;

typedef string SubCounterName;

typedef short ProbableCause; //THRESHOLD_CROSSED = 351;

typedef string SpecificProblem;

typedef any ThresholdValue;

enum Severity {WARNING, MINOR, MAJOR, CRITICAL};

union Hysteresis switch(boolean)

{

case TRUE: long long_value;

case FALSE: float float_value;

};

enum Direction { INCREASING, DECREASING};

struct ThresholdPackElement

{

ThresholdValue threshold_value;

Severity severity_;

Hysteresis hysteresis_;

};

typedef sequence<ThresholdPackElement> ThresholdPack;

struct ThresholdInfo

{

MeasurementTypeName measurement_type_name;

SubCounterName sub_counter_name;

ProbableCause probable_cause;

SpecificProblem specific_problem;

Direction direction_;

ThresholdPack threshold_pack;

};

typedef sequence<ThresholdInfo> ThresholdInfoList;

typedef GranularityPeriod MonitorGranularityPeriod;// time period is based on 5 minutes.

typedef unsigned long MonitorId;

struct MUnsupported

{

MOInstance mo_instance;

MeasurementTypeName measurement_type_name;

SubCounterName sub_counter_name;

string reason;

};

typedef sequence<MUnsupported> MUnsupportedList;

enum MonitorStatus {M_SUSPENDED, M_ACTIVE};

typedef sequence<MonitorId> MonitorIdList;

typedef string _EventType; // The value is "Quality of Service Alarm"

struct MonitorInfo

{

MonitorId monitor_id;

MOClassName mo_class;

MOInstanceList mo_instance_list;

MonitorGranularityPeriod monitor_granularity_period;

ThresholdInfoList threshold_info_list;

MonitorStatus threshold_monitor_status;

_EventType event_type;

};

typedef sequence<MonitorInfo> MonitorInfoList;

/**

* This block identifies attributes which are included as part of the

* PMIRP. These attribute values should not

* clash with those defined for the attributes of notification

* header (see IDL of Notification IRP).

*/

interface AttributeNameValue

{

const string JOB_ID = "JOB_ID";

const string JOB_STATUS = "JOB_STATUS";

const string REASON = "REASON";

const string MONITOR_ID = "MONITOR_ID";

const string MONITOR_STATUS = "MONITOR_STATUS";

const string MONITOR_GRANULARITY_PERIOD = "MONITOR_GRANULARITY_PERIOD";

const string MONITOR_EVENT_TYPE = "MONITOR_EVENT_TYPE";

const string PROBABLE_CAUSE = "PROBABLE_CAUSE";

const string SPECIFIC_PROBLEM = "SPECIFIC_PROBLEM";

const string DIRECTION = "DIRECTION";

};

};

#endif // _PM_IRP_CONST_DEFS_IDL_