#ifndef _RSM_DICT_H_
#define _RSM_DICT_H_

#include "kourier.h"

class RSM
{
public:
	enum RSM_MsgID
	{
		MSG_SET,//0
		MSG_REQ,//1
		MSG_ERR,//2
		MSG_EVT,//3
		MSG_DEL,//4
		MSG_REP,//5
	};

	enum RSM_TagID
	{
		TAG_BUS_EVT,//0
		TAG_ERR_MSGID,//1
		TAG_ERR_TAGID,//2
		TAG_ERR_UNKNOWN_TAGID,//3
		TAG_ERR_UNKNOWN_MSGID,//4
		TAG_DEV_CFG,//5
		TAG_DEV_STATE,//6
		TAG_DEV_STATUS,//7
		TAG_DEV_ID,//8
		TAG_DEV_LABEL,//9
		TAG_DEV_TYPE,//10
		TAG_DEV_NDISCINPUT,//11
		TAG_DEV_NDISCOUTPUT,//12
		TAG_DEV_NANALOGINPUT,//13
		TAG_DEV_NANALOGOUTPUT,//14
		TAG_IP_CFG,//15
		TAG_OP_CFG,//16
		TAG_IO_STATE,//17
		TAG_IO_PNUM,//18
		TAG_IO_TYPE,//19
		TAG_IO_DEFAULT_STATE,//20
		TAG_IO_LABEL,//21
		TAG_IO_STATUS,//22
		TAG_PORT_CFG,//23
		TAG_PORT_TYPE,//24
		TAG_PORT_PNUM,//25
		TAG_PORT_LABEL,//26
		TAG_PORT_STATE,//27
		TAG_PORT_ALARM_STATUS,//28
		TAG_SITE_CFG,//29
		TAG_SITE_ID,//30
		TAG_SITE_LABEL,//31
		TAG_SITE_NMS_ADDRESS,//32
		TAG_SITE_CURR_EVT_SEQ,//33
		TAG_SITE_LAST_EVT_SEQ,//34
		TAG_SITE_STATE,//35
		TAG_EVT_LOG_ENTRY,//36
		TAG_EVT_SEQ,//37
		TAG_EVT_TYPE,//38
		TAG_EVT_TIMESTAMP,//39
		TAG_EVT_OBJTYPE,//40
		TAG_EVT_ALARM_STATUS,//41
		TAG_EVT_OP_STATE,//42
		TAG_EVT_OPERATION_TYPE,//43
		TAG_EVT_START_SEQ,//44
		TAG_EVT_END_SEQ,//45
		TAG_EVT_START_TIME,//46
		TAG_EVT_END_TIME,//47
		TAG_AI_CFG,//48
		TAG_IO_SAMPLED_VALUE,//49
		TAG_IO_OFFSET,//50
		TAG_IO_GAIN,//51
		TAG_AI_CALCULATED_VALUE,//52
		TAG_AI_ALARM_LOW_WARN,//53
		TAG_AI_ALARM_LOW_ERR,//54
		TAG_AI_ALARM_HIGH_WARN,//55
		TAG_AI_ALARM_HIGH_ERR,//56
		TAG_AI_SAMPLE_RATE,//57
		TAG_AI_REPORT_RATE,//58
		TAG_AI_DISPLAY_UNIT,//59
		TAG_AI_SAMPLE_SEQ,//60
		TAG_AI_SAMPLE_SEQ_START,//61
		TAG_AI_SAMPLE_SEQ_END,//62
		TAG_AI_SAMPLE,//63
		TAG_VERSION,//64
		TAG_MSG_INFO,//65
		TAG_MSG_INFO_IDX_ONLY,//66
		TAG_DEV_ID_OLD,//67
		TAG_DEV_ID_NEW,//68
		TAG_MSG_INFO_MAX_REPLIES,//69
		TAG_SITE_CURR_TREND_SEQ,//70
		TAG_SITE_LAST_TREND_SEQ,//71
		TAG_TREND_LOG_ENTRY,//72
		TAG_ACCESS,//73
		TAG_ACCESS_SCAN_CODE,//74
		TAG_AI_ACCEPTABLE_NOISE,//75
		TAG_AI_TYPE,//76
		TAG_AO_CFG,//77
		TAG_AO_TYPE,//78
		TAG_AO_ALARM_LOW_WARN,//79
		TAG_AO_ALARM_LOW_ERR,//80
		TAG_AO_ALARM_HIGH_WARN,//81
		TAG_AO_ALARM_HIGH_ERR,//82
		TAG_AO_DISPLAY_UNIT,//83
		TAG_AO_OUTPUT_VALUE,//84
		TAG_AO_MAXIMUM_VALUE,//85
		TAG_AO_MINIMUM_VALUE,//86
		TAG_AO_OUTPUT_FREQUENCY,//87
		TAG_PORT_LAST_TOGGLED,//88
		TAG_NET_IF_CFG,//89
		TAG_NET_IF_NAME,//90
		TAG_NET_IF_ADDRESS,//91
		TAG_NET_IF_NETMASK,//92
		TAG_NET_IF_GATEWAY,//93
		TAG_NET_IF_ADDR_METHOD,//94
		TAG_NET_DNS_SERVER,//95
		TAG_NET_DNS_DOMAIN,//96
		TAG_NET_SERVERNAME,//97
		TAG_NET_DOMAINNAME,//98
		TAG_NET_DHCP_CFG,//99
		TAG_NET_DHCP_DOMAIN,//100
		TAG_NET_SUBNET,//101
		TAG_NET_NETMASK,//102
		TAG_NET_ROUTER,//103
		TAG_NET_DHCP_ADDR_START,//104
		TAG_NET_DHCP_ADDR_END,//105
		TAG_NET_PF_CFG,//106
		TAG_NET_LABEL,//107
		TAG_NET_PROTOCOL,//108
		TAG_NET_INPORT,//109
		TAG_NET_OUTPORT,//110
		TAG_NET_IP,//111
		TAG_NET_PRIORITY,//112
		TAG_BUS_SERIAL,//113
		TAG_BUS_DEVICE,//114
		TAG_BUS_OWNER,//115
		TAG_BUS_BAUD,//116
		TAG_BUS_DATA,//117
		TAG_BUS_STOP,//118
		TAG_BUS_NBLOCK,//119
		TAG_BUS_MODE,//120
		TAG_BUS_SNMP,//121
		TAG_BUS_LABEL,//122
		TAG_BUS_SERIALNUM,//123
		TAG_BUS_TEMPLATE,//124
		TAG_BUS_HOST,//125
		TAG_BUS_COMMUNITY,//126
		TAG_BUS_VERSION,//127
		TAG_BUS_TEMPLATES,//128
		TAG_BUS_MAKE,//129
		TAG_BUS_MODEL,//130
		TAG_BUS_TYPE,//131
		TAG_BUS_SERIAL_DEV,//132
		TAG_BUS_PATH,//133
		TAG_BUS_ADDR,//134
		TAG_BUS_GATE_ADDR,//135
		TAG_BUS_PORT,//136
		TAG_BUS_PARITY,//137
		TAG_CCD_RESTART,//138
		TAG_CCD_CFG,//139
		TAG_CCD_OVERRIDE,//140
		TAG_CCD_FAN,//141
		TAG_CCD_AC,//142
		TAG_CCD_FILENAME,//143
		TAG_CCD_LABEL,//144
		TAG_CCD_TEMP,//145
		TAG_CCD_RANGE,//146
		TAG_CCD_INTERNAL,//147
		TAG_CCD_EXTERNAL,//148
		TAG_CCD_ACMONITOR,//149
		TAG_CCD_DELTA,//150
		TAG_CCD_DELTA_TEMP,//151
		TAG_CCD_DELTA_MIN,//152
		TAG_CCD_PRIORITY,//153
		TAG_CCD_FAN_TYPE,//154
		TAG_LOGIC_CFG,//155
		TAG_LOGIC_INPUTS,//156
		TAG_LOGIC_OUTPUTS,//157
		TAG_LOGIC_ID,//158
		TAG_LOGIC_OPERATION,//159
		TAG_LOGIC_INVERSE,//160
		TAG_LOGIC_LABEL,//161
		TAG_LOGIC_TYPE,//162
		TAG_DATETIME_CFG,//163
		TAG_DATETIME_DATE,//164
		TAG_DATETIME_TIME,//165
		TAG_DATETIME_SERVER,//166
		TAG_DATETIME_CLOCK_SOFTWARE,//167
		TAG_DATETIME_CLOCK_HARDWARE,//168
		TAG_METALIST,//169
		TAG_METALIST_NAME,//170
		TAG_CAP_DEF,//171
		TAG_CAP_LABEL,//172
		TAG_CAP_VALUE,//173
		TAG_CAP_ID,//174
		TAG_ADHOC_EVT,//175
		TAG_ADHOC_LABEL,//176
		TAG_ADHOC_VALUE,//177
		TAG_SITE_CURR_ADHOC_SEQ,//178
		TAG_SITE_LAST_ADHOC_SEQ,//179
		TAG_SITE_SVP_ADDRESS,//180
		TAG_SITE_SVP_PORT,//181
	};

	enum TAG_DEV_STATE_Types
	{
		TAG_DEV_STATE_DISCOVERED,//0
		TAG_DEV_STATE_MAINTENANCE,//1
		TAG_DEV_STATE_OPERATIONAL,//2
	};

	enum TAG_DEV_STATUS_Types
	{
		TAG_DEV_STATUS_OFFLINE,//0
		TAG_DEV_STATUS_ONLINE,//1
	};

	enum TAG_DEV_TYPE_Types
	{
		TAG_DEV_TYPE_IO,//0
		TAG_DEV_TYPE_AC,//1
		TAG_DEV_TYPE_ANALOG,//2
		TAG_DEV_TYPE_ANALOG_IO,//3
		TAG_DEV_TYPE_SNMP,//4
		TAG_DEV_TYPE_MODBUS,//5
		TAG_DEV_TYPE_DLMS,//6
		TAG_DEV_TYPE_VEEDER_ROOT,//7
		TAG_DEV_TYPE_CAMERA,//8
		TAG_DEV_TYPE_OTHER,//9
		TAG_DEV_TYPE_GSM,//10
	};

	enum TAG_IO_STATE_Types
	{
		TAG_IO_STATE_LOW = 0,
		TAG_IO_STATE_HIGH = 1,
		TAG_IO_STATE_OFF = 0,
		TAG_IO_STATE_ON = 1,
	};

	enum TAG_IO_TYPE_Types
	{
		TAG_IO_TYPE_ACMON_IN,//0
		TAG_IO_TYPE_DISCRETE_IN,//1
		TAG_IO_TYPE_RELAY_OUT,//2
		TAG_IO_TYPE_ANALOG_IN,//3
		TAG_IO_TYPE_ANALOG_OUT,//4
	};

	enum TAG_IO_STATUS_Types
	{
		TAG_IO_STATUS_DISCOVERED,//0
		TAG_IO_STATUS_MAINTENANCE,//1
		TAG_IO_STATUS_OPREATIONAL,//2
	};

	enum TAG_PORT_TYPE_Types
	{
		TAG_PORT_TYPE_UNKNOWN,//0
		TAG_PORT_TYPE_DISCRETE_INPUT,//1
		TAG_PORT_TYPE_DISCRETE_OUTPUT,//2
		TAG_PORT_TYPE_ANALOG_INPUT,//3
		TAG_PORT_TYPE_ANALOG_OUTPUT,//4
	};

	enum TAG_PORT_STATE_Types
	{
		TAG_PORT_STATE_DISCOVERED,//0
		TAG_PORT_STATE_MAINTENANCE,//1
		TAG_PORT_STATE_OPERATIONAL,//2
	};

	enum TAG_PORT_ALARM_STATUS_Types
	{
		TAG_PORT_ALARM_CLEARED,//0
		TAG_PORT_ALARM_SET,//1
		TAG_PORT_ALARM_WARN,//2
	};

	enum TAG_SITE_STATE_Types
	{
		TAG_SITE_STATE_DISCOVERED,//0
		TAG_SITE_STATE_MAINTENANCE,//1
		TAG_SITE_STATE_OPERATIONAL,//2
	};

	enum TAG_EVT_TYPE_Types
	{
		TAG_EVT_TYPE_UNKNOWN,//0
		TAG_EVT_TYPE_DEVICE,//1
		TAG_EVT_TYPE_PORT,//2
		TAG_EVT_TYPE_SITE,//3
	};

	enum TAG_EVT_ALARM_STATUS_Types
	{
		TAG_EVT_ALARM_UNKNOWN,//0
		TAG_EVT_ALARM_CLEARED,//1
		TAG_EVT_ALARM_SET,//2
		TAG_EVT_ALARM_WARN,//3
	};

	enum TAG_EVT_OP_STATE_Types
	{
		TAG_EVT_OP_STATE_DISCOVERED,//0
		TAG_EVT_OP_STATE_MAINTENANCE,//1
		TAG_EVT_OP_STATE_OPERATIONAL,//2
	};

	enum TAG_EVT_OPERATION_TYPE_Types
	{
		TAG_EVT_OPERATION_TYPE_UNKNOWN,//0
		TAG_EVT_OPERATION_TYPE_CREATE,//1
		TAG_EVT_OPERATION_TYPE_UPDATE,//2
		TAG_EVT_OPERATION_TYPE_REMOVE,//3
		TAG_EVT_OPERATION_TYPE_REPLACE,//4
	};

	enum TAG_AI_TYPE_Types
	{
		TAG_AI_TYPE_UNKNOWN,//0
		TAG_AI_TYPE_DUMB,//1
		TAG_AI_TYPE_SMART,//2
		TAG_AI_TYPE_GENIUS,//3
	};

	enum TAG_AO_TYPE_Types
	{
		TAG_AO_TYPE_UNKNOWN,//0
		TAG_AO_TYPE_GENERAL,//1
		TAG_AO_TYPE_PWM,//2
	};

	enum TAG_PORT_LAST_TOGGLED_Types
	{
		TAG_PORT_TOGGLED_UNKNOWN,//0
		TAG_PORT_TOGGLED_NONE,//1
		TAG_PORT_TOGGLED_WEBSITE,//2
		TAG_PORT_TOGGLED_IODRIVER,//3
		TAG_PORT_TOGGLED_CCD,//4
	};

	enum TAG_NET_IF_ADDR_METHOD_Types
	{
		TAG_NET_IF_ADDR_METHOD_NONE,//0
		TAG_NET_IF_ADDR_METHOD_DHCP,//1
		TAG_NET_IF_ADDR_METHOD_STATIC,//2
		TAG_NET_IF_ADDR_METHOD_PPP,//3
	};

	enum TAG_NET_PROTOCOL_Types
	{
		TAG_NET_PROTOCOL_NONE,//0
		TAG_NET_PROTOCOL_TCP,//1
		TAG_NET_PROTOCOL_UDP,//2
	};

	enum TAG_BUS_OWNER_Types
	{
		TAG_BUS_OWNER_RDD,//0
		TAG_BUS_OWNER_MDD,//1
		TAG_BUS_OWNER_DDD,//2
		TAG_BUS_OWNER_FLDD,//3
		TAG_BUS_OWNER_TSD,//4
	};

	enum TAG_BUS_NBLOCK_Types
	{
		TAG_BUS_NBLOCK_TRUE,//0
		TAG_BUS_NBLOCK_FALSE,//1
	};

	enum TAG_BUS_MODE_Types
	{
		TAG_BUS_MODE_RS232,//0
		TAG_BUS_MODE_RS485,//1
		TAG_BUS_MODE_FOURWIRE,//2
	};

	enum TAG_BUS_PARITY_Types
	{
		TAG_BUS_PARITY_NONE,//0
		TAG_BUS_PARITY_EVEN,//1
		TAG_BUS_PARITY_ODD,//2
		TAG_BUS_PARITY_MARK,//3
		TAG_BUS_PARITY_SPACE,//4
	};

	enum TAG_BUS_STOP_Types
	{
		TAG_BUS_STOP_ONE,//0
		TAG_BUS_STOP_ONEFIVE,//1
		TAG_BUS_STOP_TWO,//2
	};

	enum TAG_CCD_RANGE_Types
	{
		TAG_CCD_RANGE_ONE,//0
		TAG_CCD_RANGE_TWO,//1
		TAG_CCD_RANGE_THREE,//2
		TAG_CCD_RANGE_FOUR,//3
		TAG_CCD_RANGE_FIVE,//4
	};

	enum TAG_CCD_DELTA_Types
	{
		TAG_CCD_DELTA_DISABLE,//0
		TAG_CCD_DELTA_ENABLE,//1
	};

	enum TAG_CCD_FAN_TYPE_Types
	{
		TAG_CCD_FAN_TYPE_SINGLE,//0
		TAG_CCD_FAN_TYPE_VARIABLE,//1
	};

	enum TAG_LOGIC_OPERATION_Types
	{
		TAG_LOGIC_OPERATION_AND,//0
		TAG_LOGIC_OPERATION_OR,//1
	};

	enum TAG_LOGIC_INVERSE_Types
	{
		TAG_LOGIC_INVERSE_NONINVERTED,//0
		TAG_LOGIC_INVERSE_INVERTED,//1
	};

	enum TAG_LOGIC_TYPE_Types
	{
		TAG_LOGIC_TYPE_UNKNOWN,//0
		TAG_LOGIC_TYPE_IO,//1
		TAG_LOGIC_TYPE_AC,//2
		TAG_LOGIC_TYPE_ANALOG,//3
		TAG_LOGIC_TYPE_ANALOG_IO,//4
		TAG_LOGIC_TYPE_SNMP,//5
		TAG_LOGIC_TYPE_MODBUS,//6
		TAG_LOGIC_TYPE_OTHER,//7
	};

	static const KourierDictDef *DictDef;
	static const uint8_t dictID;
	static const uint8_t dictVer;
};

#endif