enum.js

'use strict';

module.exports.PduTypes = {
  PDU_TYPE_CONFIRMED_SERVICE_REQUEST: 0,
  SERVER: 1,
  NEGATIVE_ACK: 2,
  SEGMENTED_RESPONSE_ACCEPTED: 2,
  MORE_FOLLOWS: 4,
  SEGMENTED_MESSAGE: 8,
  PDU_TYPE_UNCONFIRMED_SERVICE_REQUEST: 0x10,
  PDU_TYPE_SIMPLE_ACK: 0x20,
  PDU_TYPE_COMPLEX_ACK: 0x30,
  PDU_TYPE_SEGMENT_ACK: 0x40,
  PDU_TYPE_ERROR: 0x50,
  PDU_TYPE_REJECT: 0x60,
  PDU_TYPE_ABORT: 0x70,
  PDU_TYPE_MASK: 0xF0
};

module.exports.Segmentations = {
  SEGMENTATION_BOTH: 0,
  SEGMENTATION_TRANSMIT: 1,
  SEGMENTATION_RECEIVE: 2,
  SEGMENTATION_NONE: 3
};

module.exports.DeviceStatus = {
  OPERATIONAL: 0,
  OPERATIONAL_READONLY: 1,
  DOWNLOAD_REQUIRED: 2,
  DOWNLOAD_IN_PROGRESS: 3,
  NON_OPERATIONAL: 4,
  BACKUP_IN_PROGRESS: 5
};

module.exports.BACnetBackupState = {
  IDLE: 0,
  PREPARING_FOR_BACKUP: 1,
  PREPARING_FOR_RESTORE: 2,
  PERFORMING_A_BACKUP: 3,
  PERFORMING_A_RESTORE: 4
};

module.exports.RestartReason = {
  UNKNOWN: 0,
  COLD_START: 1,
  WARM_START: 2,
  DETECTED_POWER_LOST: 3,
  DETECTED_POWER_OFF: 4,
  HARDWARE_WATCHDOG: 5,
  SOFTWARE_WATCHDOG: 6,
  SUSPENDED: 7
};

module.exports.ProgramChange = {
  READY: 0,
  LOAD: 1,
  RUN: 2,
  HALT: 3,
  RESTART: 4,
  UNLOAD: 5
};

module.exports.ProgramState = {
  IDLE: 0,
  LOADING: 1,
  RUNNING: 2,
  WAITING: 3,
  HALTED: 4,
  UNLOADING: 5
};

module.exports.ReasonForHalt = {
  NORMAL: 0,
  LOAD_FAILED: 1,
  INTERNAL: 2,
  PROGRAM: 3,
  OTHER: 4
};

module.exports.ResultFlags = {
  NONE: 0,
  FIRST_ITEM: 1,
  LAST_ITEM: 2,
  MORE_ITEMS: 4
};

module.exports.RejectReasons = {
  REJECT_REASON_OTHER: 0,
  REJECT_REASON_BUFFER_OVERFLOW: 1,
  REJECT_REASON_INCONSISTENT_PARAMETERS: 2,
  REJECT_REASON_INVALID_PARAMETER_DATA_TYPE: 3,
  REJECT_REASON_INVALID_TAG: 4,
  REJECT_REASON_MISSING_REQUIRED_PARAMETER: 5,
  REJECT_REASON_PARAMETER_OUT_OF_RANGE: 6,
  REJECT_REASON_TOO_MANY_ARGUMENTS: 7,
  REJECT_REASON_UNDEFINED_ENUMERATION: 8,
  REJECT_REASON_UNRECOGNIZED_SERVICE: 9,
  MAX_BACNET_REJECT_REASON: 10,
  REJECT_REASON_PROPRIETARY_FIRST: 64,
  REJECT_REASON_PROPRIETARY_LAST: 65535
};

module.exports.ErrorClasses = {
  ERROR_CLASS_DEVICE: 0,
  ERROR_CLASS_OBJECT: 1,
  ERROR_CLASS_PROPERTY: 2,
  ERROR_CLASS_RESOURCES: 3,
  ERROR_CLASS_SECURITY: 4,
  ERROR_CLASS_SERVICES: 5,
  ERROR_CLASS_VT: 6,
  ERROR_CLASS_COMMUNICATION: 7,
  MAX_BACNET_ERROR_CLASS: 8,
  ERROR_CLASS_PROPRIETARY_FIRST: 64,
  ERROR_CLASS_PROPRIETARY_LAST: 65535
};

module.exports.ErrorCodes = {
  ERROR_CODE_OTHER: 0,
  ERROR_CODE_DEVICE_BUSY: 3,
  ERROR_CODE_CONFIGURATION_IN_PROGRESS: 2,
  ERROR_CODE_OPERATIONAL_PROBLEM: 25,
  ERROR_CODE_DYNAMIC_CREATION_NOT_SUPPORTED: 4,
  ERROR_CODE_NO_OBJECTS_OF_SPECIFIED_TYPE: 17,
  ERROR_CODE_OBJECT_DELETION_NOT_PERMITTED: 23,
  ERROR_CODE_OBJECT_IDENTIFIER_ALREADY_EXISTS: 24,
  ERROR_CODE_READ_ACCESS_DENIED: 27,
  ERROR_CODE_UNKNOWN_OBJECT: 31,
  ERROR_CODE_UNSUPPORTED_OBJECT_TYPE: 36,
  ERROR_CODE_CHARACTER_SET_NOT_SUPPORTED: 41,
  ERROR_CODE_DATATYPE_NOT_SUPPORTED: 47,
  ERROR_CODE_INCONSISTENT_SELECTION_CRITERION: 8,
  ERROR_CODE_INVALID_ARRAY_INDEX: 42,
  ERROR_CODE_INVALID_DATA_TYPE: 9,
  ERROR_CODE_NOT_COV_PROPERTY: 44,
  ERROR_CODE_OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED: 45,
  ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY: 50,
  ERROR_CODE_UNKNOWN_PROPERTY: 32,
  ERROR_CODE_VALUE_OUT_OF_RANGE: 37,
  ERROR_CODE_WRITE_ACCESS_DENIED: 40,
  ERROR_CODE_NO_SPACE_FOR_OBJECT: 18,
  ERROR_CODE_NO_SPACE_TO_ADD_LIST_ELEMENT: 19,
  ERROR_CODE_NO_SPACE_TO_WRITE_PROPERTY: 20,
  ERROR_CODE_AUTHENTICATION_FAILED: 1,
  ERROR_CODE_INCOMPATIBLE_SECURITY_LEVELS: 6,
  ERROR_CODE_INVALID_OPERATOR_NAME: 12,
  ERROR_CODE_KEY_GENERATION_ERROR: 15,
  ERROR_CODE_PASSWORD_FAILURE: 26,
  ERROR_CODE_SECURITY_NOT_SUPPORTED: 28,
  ERROR_CODE_TIMEOUT: 30,
  ERROR_CODE_COV_SUBSCRIPTION_FAILED: 43,
  ERROR_CODE_DUPLICATE_NAME: 48,
  ERROR_CODE_DUPLICATE_OBJECT_ID: 49,
  ERROR_CODE_FILE_ACCESS_DENIED: 5,
  ERROR_CODE_INCONSISTENT_PARAMETERS: 7,
  ERROR_CODE_INVALID_CONFIGURATION_DATA: 46,
  ERROR_CODE_INVALID_FILE_ACCESS_METHOD: 10,
  ERROR_CODE_INVALID_FILE_START_POSITION: 11,
  ERROR_CODE_INVALID_PARAMETER_DATA_TYPE: 13,
  ERROR_CODE_INVALID_TIME_STAMP: 14,
  ERROR_CODE_MISSING_REQUIRED_PARAMETER: 16,
  ERROR_CODE_PROPERTY_IS_NOT_A_LIST: 22,
  ERROR_CODE_SERVICE_REQUEST_DENIED: 29,
  ERROR_CODE_UNKNOWN_VT_CLASS: 34,
  ERROR_CODE_UNKNOWN_VT_SESSION: 35,
  ERROR_CODE_NO_VT_SESSIONS_AVAILABLE: 21,
  ERROR_CODE_VT_SESSION_ALREADY_CLOSED: 38,
  ERROR_CODE_VT_SESSION_TERMINATION_FAILURE: 39,
  ERROR_CODE_RESERVED1: 33,
  ERROR_CODE_ABORT_BUFFER_OVERFLOW: 51,
  ERROR_CODE_ABORT_INVALID_APDU_IN_THIS_STATE: 52,
  ERROR_CODE_ABORT_PREEMPTED_BY_HIGHER_PRIORITY_TASK: 53,
  ERROR_CODE_ABORT_SEGMENTATION_NOT_SUPPORTED: 54,
  ERROR_CODE_ABORT_PROPRIETARY: 55,
  ERROR_CODE_ABORT_OTHER: 56,
  ERROR_CODE_INVALID_TAG: 57,
  ERROR_CODE_NETWORK_DOWN: 58,
  ERROR_CODE_REJECT_BUFFER_OVERFLOW: 59,
  ERROR_CODE_REJECT_INCONSISTENT_PARAMETERS: 60,
  ERROR_CODE_REJECT_INVALID_PARAMETER_DATA_TYPE: 61,
  ERROR_CODE_REJECT_INVALID_TAG: 62,
  ERROR_CODE_REJECT_MISSING_REQUIRED_PARAMETER: 63,
  ERROR_CODE_REJECT_PARAMETER_OUT_OF_RANGE: 64,
  ERROR_CODE_REJECT_TOO_MANY_ARGUMENTS: 65,
  ERROR_CODE_REJECT_UNDEFINED_ENUMERATION: 66,
  ERROR_CODE_REJECT_UNRECOGNIZED_SERVICE: 67,
  ERROR_CODE_REJECT_PROPRIETARY: 68,
  ERROR_CODE_REJECT_OTHER: 69,
  ERROR_CODE_UNKNOWN_DEVICE: 70,
  ERROR_CODE_UNKNOWN_ROUTE: 71,
  ERROR_CODE_VALUE_NOT_INITIALIZED: 72,
  ERROR_CODE_INVALID_EVENT_STATE: 73,
  ERROR_CODE_NO_ALARM_CONFIGURED: 74,
  ERROR_CODE_LOG_BUFFER_FULL: 75,
  ERROR_CODE_LOGGED_VALUE_PURGED: 76,
  ERROR_CODE_NO_PROPERTY_SPECIFIED: 77,
  ERROR_CODE_NOT_CONFIGURED_FOR_TRIGGERED_LOGGING: 78,
  ERROR_CODE_UNKNOWN_SUBSCRIPTION: 79,
  ERROR_CODE_PARAMETER_OUT_OF_RANGE: 80,
  ERROR_CODE_LIST_ELEMENT_NOT_FOUND: 81,
  ERROR_CODE_BUSY: 82,
  ERROR_CODE_COMMUNICATION_DISABLED: 83,
  ERROR_CODE_SUCCESS: 84,
  ERROR_CODE_ACCESS_DENIED: 85,
  ERROR_CODE_BAD_DESTINATION_ADDRESS: 86,
  ERROR_CODE_BAD_DESTINATION_DEVICE_ID: 87,
  ERROR_CODE_BAD_SIGNATURE: 88,
  ERROR_CODE_BAD_SOURCE_ADDRESS: 89,
  ERROR_CODE_BAD_TIMESTAMP: 90,
  ERROR_CODE_CANNOT_USE_KEY: 91,
  ERROR_CODE_CANNOT_VERIFY_MESSAGE_ID: 92,
  ERROR_CODE_CORRECT_KEY_REVISION: 93,
  ERROR_CODE_DESTINATION_DEVICE_ID_REQUIRED: 94,
  ERROR_CODE_DUPLICATE_MESSAGE: 95,
  ERROR_CODE_ENCRYPTION_NOT_CONFIGURED: 96,
  ERROR_CODE_ENCRYPTION_REQUIRED: 97,
  ERROR_CODE_INCORRECT_KEY: 98,
  ERROR_CODE_INVALID_KEY_DATA: 99,
  ERROR_CODE_KEY_UPDATE_IN_PROGRESS: 100,
  ERROR_CODE_MALFORMED_MESSAGE: 101,
  ERROR_CODE_NOT_KEY_SERVER: 102,
  ERROR_CODE_SECURITY_NOT_CONFIGURED: 103,
  ERROR_CODE_SOURCE_SECURITY_REQUIRED: 104,
  ERROR_CODE_TOO_MANY_KEYS: 105,
  ERROR_CODE_UNKNOWN_AUTHENTICATION_TYPE: 106,
  ERROR_CODE_UNKNOWN_KEY: 107,
  ERROR_CODE_UNKNOWN_KEY_REVISION: 108,
  ERROR_CODE_UNKNOWN_SOURCE_MESSAGE: 109,
  ERROR_CODE_NOT_ROUTER_TO_DNET: 110,
  ERROR_CODE_ROUTER_BUSY: 111,
  ERROR_CODE_UNKNOWN_NETWORK_MESSAGE: 112,
  ERROR_CODE_MESSAGE_TOO_LONG: 113,
  ERROR_CODE_SECURITY_ERROR: 114,
  ERROR_CODE_ADDRESSING_ERROR: 115,
  ERROR_CODE_WRITE_BDT_FAILED: 116,
  ERROR_CODE_READ_BDT_FAILED: 117,
  ERROR_CODE_REGISTER_FOREIGN_DEVICE_FAILED: 118,
  ERROR_CODE_READ_FDT_FAILED: 119,
  ERROR_CODE_DELETE_FDT_ENTRY_FAILED: 120,
  ERROR_CODE_DISTRIBUTE_BROADCAST_FAILED: 121,
  ERROR_CODE_UNKNOWN_FILE_SIZE: 122,
  ERROR_CODE_ABORT_APDU_TOO_LONG: 123,
  ERROR_CODE_ABORT_APPLICATION_EXCEEDED_REPLY_TIME: 124,
  ERROR_CODE_ABORT_OUT_OF_RESOURCES: 125,
  ERROR_CODE_ABORT_TSM_TIMEOUT: 126,
  ERROR_CODE_ABORT_WINDOW_SIZE_OUT_OF_RANGE: 127,
  ERROR_CODE_FILE_FULL: 128,
  ERROR_CODE_INCONSISTENT_CONFIGURATION: 129,
  ERROR_CODE_INCONSISTENT_OBJECT_TYPE: 130,
  ERROR_CODE_INTERNAL_ERROR: 131,
  ERROR_CODE_NOT_CONFIGURED: 132,
  ERROR_CODE_OUT_OF_MEMORY: 133,
  ERROR_CODE_VALUE_TOO_LONG: 134,
  ERROR_CODE_ABORT_INSUFFICIENT_SECURITY: 135,
  ERROR_CODE_ABORT_SECURITY_ERROR: 136,
  MAX_BACNET_ERROR_CODE: 137,
  ERROR_CODE_PROPRIETARY_FIRST: 256,
  ERROR_CODE_PROPRIETARY_LAST: 65535
};

module.exports.StatusFlags = {
  STATUS_FLAG_IN_ALARM: 1,
  STATUS_FLAG_FAULT: 2,
  STATUS_FLAG_OVERRIDDEN: 4,
  STATUS_FLAG_OUT_OF_SERVICE: 8
};

module.exports.ServicesSupported = {
  SERVICE_SUPPORTED_ACKNOWLEDGE_ALARM: 0,
  SERVICE_SUPPORTED_CONFIRMED_COV_NOTIFICATION: 1,
  SERVICE_SUPPORTED_CONFIRMED_EVENT_NOTIFICATION: 2,
  SERVICE_SUPPORTED_GET_ALARM_SUMMARY: 3,
  SERVICE_SUPPORTED_GET_ENROLLMENT_SUMMARY: 4,
  SERVICE_SUPPORTED_GET_EVENT_INFORMATION: 39,
  SERVICE_SUPPORTED_SUBSCRIBE_COV: 5,
  SERVICE_SUPPORTED_SUBSCRIBE_COV_PROPERTY: 38,
  SERVICE_SUPPORTED_LIFE_SAFETY_OPERATION: 37,
  SERVICE_SUPPORTED_ATOMIC_READ_FILE: 6,
  SERVICE_SUPPORTED_ATOMIC_WRITE_FILE: 7,
  SERVICE_SUPPORTED_ADD_LIST_ELEMENT: 8,
  SERVICE_SUPPORTED_REMOVE_LIST_ELEMENT: 9,
  SERVICE_SUPPORTED_CREATE_OBJECT: 10,
  SERVICE_SUPPORTED_DELETE_OBJECT: 11,
  SERVICE_SUPPORTED_READ_PROPERTY: 12,
  SERVICE_SUPPORTED_READ_PROP_CONDITIONAL: 13,
  SERVICE_SUPPORTED_READ_PROP_MULTIPLE: 14,
  SERVICE_SUPPORTED_READ_RANGE: 35,
  SERVICE_SUPPORTED_WRITE_PROPERTY: 15,
  SERVICE_SUPPORTED_WRITE_PROP_MULTIPLE: 16,
  SERVICE_SUPPORTED_WRITE_GROUP: 40,
  SERVICE_SUPPORTED_DEVICE_COMMUNICATION_CONTROL: 17,
  SERVICE_SUPPORTED_PRIVATE_TRANSFER: 18,
  SERVICE_SUPPORTED_TEXT_MESSAGE: 19,
  SERVICE_SUPPORTED_REINITIALIZE_DEVICE: 20,
  SERVICE_SUPPORTED_VT_OPEN: 21,
  SERVICE_SUPPORTED_VT_CLOSE: 22,
  SERVICE_SUPPORTED_VT_DATA: 23,
  SERVICE_SUPPORTED_AUTHENTICATE: 24,
  SERVICE_SUPPORTED_REQUEST_KEY: 25,
  SERVICE_SUPPORTED_I_AM: 26,
  SERVICE_SUPPORTED_I_HAVE: 27,
  SERVICE_SUPPORTED_UNCONFIRMED_COV_NOTIFICATION: 28,
  SERVICE_SUPPORTED_UNCONFIRMED_EVENT_NOTIFICATION: 29,
  SERVICE_SUPPORTED_UNCONFIRMED_PRIVATE_TRANSFER: 30,
  SERVICE_SUPPORTED_UNCONFIRMED_TEXT_MESSAGE: 31,
  SERVICE_SUPPORTED_TIME_SYNCHRONIZATION: 32,
  SERVICE_SUPPORTED_UTC_TIME_SYNCHRONIZATION: 36,
  SERVICE_SUPPORTED_WHO_HAS: 33,
  SERVICE_SUPPORTED_WHO_IS: 34,
  MAX_BACNET_SERVICES_SUPPORTED: 41
};

module.exports.UnconfirmedServices = {
  SERVICE_UNCONFIRMED_I_AM: 0,
  SERVICE_UNCONFIRMED_I_HAVE: 1,
  SERVICE_UNCONFIRMED_COV_NOTIFICATION: 2,
  SERVICE_UNCONFIRMED_EVENT_NOTIFICATION: 3,
  SERVICE_UNCONFIRMED_PRIVATE_TRANSFER: 4,
  SERVICE_UNCONFIRMED_TEXT_MESSAGE: 5,
  SERVICE_UNCONFIRMED_TIME_SYNCHRONIZATION: 6,
  SERVICE_UNCONFIRMED_WHO_HAS: 7,
  SERVICE_UNCONFIRMED_WHO_IS: 8,
  SERVICE_UNCONFIRMED_UTC_TIME_SYNCHRONIZATION: 9,
  SERVICE_UNCONFIRMED_WRITE_GROUP: 10,
  MAX_BACNET_UNCONFIRMED_SERVICE: 11
};

module.exports.ConfirmedServices = {
  SERVICE_CONFIRMED_ACKNOWLEDGE_ALARM: 0,
  SERVICE_CONFIRMED_COV_NOTIFICATION: 1,
  SERVICE_CONFIRMED_EVENT_NOTIFICATION: 2,
  SERVICE_CONFIRMED_GET_ALARM_SUMMARY: 3,
  SERVICE_CONFIRMED_GET_ENROLLMENT_SUMMARY: 4,
  SERVICE_CONFIRMED_GET_EVENT_INFORMATION: 29,
  SERVICE_CONFIRMED_SUBSCRIBE_COV: 5,
  SERVICE_CONFIRMED_SUBSCRIBE_COV_PROPERTY: 28,
  SERVICE_CONFIRMED_LIFE_SAFETY_OPERATION: 27,
  SERVICE_CONFIRMED_ATOMIC_READ_FILE: 6,
  SERVICE_CONFIRMED_ATOMIC_WRITE_FILE: 7,
  SERVICE_CONFIRMED_ADD_LIST_ELEMENT: 8,
  SERVICE_CONFIRMED_REMOVE_LIST_ELEMENT: 9,
  SERVICE_CONFIRMED_CREATE_OBJECT: 10,
  SERVICE_CONFIRMED_DELETE_OBJECT: 11,
  SERVICE_CONFIRMED_READ_PROPERTY: 12,
  SERVICE_CONFIRMED_READ_PROP_CONDITIONAL: 13,
  SERVICE_CONFIRMED_READ_PROP_MULTIPLE: 14,
  SERVICE_CONFIRMED_READ_RANGE: 26,
  SERVICE_CONFIRMED_WRITE_PROPERTY: 15,
  SERVICE_CONFIRMED_WRITE_PROP_MULTIPLE: 16,
  SERVICE_CONFIRMED_DEVICE_COMMUNICATION_CONTROL: 17,
  SERVICE_CONFIRMED_PRIVATE_TRANSFER: 18,
  SERVICE_CONFIRMED_TEXT_MESSAGE: 19,
  SERVICE_CONFIRMED_REINITIALIZE_DEVICE: 20,
  SERVICE_CONFIRMED_VT_OPEN: 21,
  SERVICE_CONFIRMED_VT_CLOSE: 22,
  SERVICE_CONFIRMED_VT_DATA: 23,
  SERVICE_CONFIRMED_AUTHENTICATE: 24,
  SERVICE_CONFIRMED_REQUEST_KEY: 25,
  MAX_BACNET_CONFIRMED_SERVICE: 30
};

module.exports.UnitsId = {
  UNITS_METERS_PER_SECOND_PER_SECOND: 166,
  UNITS_SQUARE_METERS: 0,
  UNITS_SQUARE_CENTIMETERS: 116,
  UNITS_SQUARE_FEET: 1,
  UNITS_SQUARE_INCHES: 115,
  UNITS_CURRENCY1: 105,
  UNITS_CURRENCY2: 106,
  UNITS_CURRENCY3: 107,
  UNITS_CURRENCY4: 108,
  UNITS_CURRENCY5: 109,
  UNITS_CURRENCY6: 110,
  UNITS_CURRENCY7: 111,
  UNITS_CURRENCY8: 112,
  UNITS_CURRENCY9: 113,
  UNITS_CURRENCY10: 114,
  UNITS_MILLIAMPERES: 2,
  UNITS_AMPERES: 3,
  UNITS_AMPERES_PER_METER: 167,
  UNITS_AMPERES_PER_SQUARE_METER: 168,
  UNITS_AMPERE_SQUARE_METERS: 169,
  UNITS_DECIBELS: 199,
  UNITS_DECIBELS_MILLIVOLT: 200,
  UNITS_DECIBELS_VOLT: 201,
  UNITS_FARADS: 170,
  UNITS_HENRYS: 171,
  UNITS_OHMS: 4,
  UNITS_OHM_METERS: 172,
  UNITS_MILLIOHMS: 145,
  UNITS_KILOHMS: 122,
  UNITS_MEGOHMS: 123,
  UNITS_MICROSIEMENS: 190,
  UNITS_MILLISIEMENS: 202,
  UNITS_SIEMENS: 173,
  UNITS_SIEMENS_PER_METER: 174,
  UNITS_TESLAS: 175,
  UNITS_VOLTS: 5,
  UNITS_MILLIVOLTS: 124,
  UNITS_KILOVOLTS: 6,
  UNITS_MEGAVOLTS: 7,
  UNITS_VOLT_AMPERES: 8,
  UNITS_KILOVOLT_AMPERES: 9,
  UNITS_MEGAVOLT_AMPERES: 10,
  UNITS_VOLT_AMPERES_REACTIVE: 11,
  UNITS_KILOVOLT_AMPERES_REACTIVE: 12,
  UNITS_MEGAVOLT_AMPERES_REACTIVE: 13,
  UNITS_VOLTS_PER_DEGREE_KELVIN: 176,
  UNITS_VOLTS_PER_METER: 177,
  UNITS_DEGREES_PHASE: 14,
  UNITS_POWER_FACTOR: 15,
  UNITS_WEBERS: 178,
  UNITS_JOULES: 16,
  UNITS_KILOJOULES: 17,
  UNITS_KILOJOULES_PER_KILOGRAM: 125,
  UNITS_MEGAJOULES: 126,
  UNITS_WATT_HOURS: 18,
  UNITS_KILOWATT_HOURS: 19,
  UNITS_MEGAWATT_HOURS: 146,
  UNITS_WATT_HOURS_REACTIVE: 203,
  UNITS_KILOWATT_HOURS_REACTIVE: 204,
  UNITS_MEGAWATT_HOURS_REACTIVE: 205,
  UNITS_BTUS: 20,
  UNITS_KILO_BTUS: 147,
  UNITS_MEGA_BTUS: 148,
  UNITS_THERMS: 21,
  UNITS_TON_HOURS: 22,
  UNITS_JOULES_PER_KILOGRAM_DRY_AIR: 23,
  UNITS_KILOJOULES_PER_KILOGRAM_DRY_AIR: 149,
  UNITS_MEGAJOULES_PER_KILOGRAM_DRY_AIR: 150,
  UNITS_BTUS_PER_POUND_DRY_AIR: 24,
  UNITS_BTUS_PER_POUND: 117,
  UNITS_JOULES_PER_DEGREE_KELVIN: 127,
  UNITS_KILOJOULES_PER_DEGREE_KELVIN: 151,
  UNITS_MEGAJOULES_PER_DEGREE_KELVIN: 152,
  UNITS_JOULES_PER_KILOGRAM_DEGREE_KELVIN: 128,
  UNITS_NEWTON: 153,
  UNITS_CYCLES_PER_HOUR: 25,
  UNITS_CYCLES_PER_MINUTE: 26,
  UNITS_HERTZ: 27,
  UNITS_KILOHERTZ: 129,
  UNITS_MEGAHERTZ: 130,
  UNITS_PER_HOUR: 131,
  UNITS_GRAMS_OF_WATER_PER_KILOGRAM_DRY_AIR: 28,
  UNITS_PERCENT_RELATIVE_HUMIDITY: 29,
  UNITS_MICROMETERS: 194,
  UNITS_MILLIMETERS: 30,
  UNITS_CENTIMETERS: 118,
  UNITS_KILOMETERS: 193,
  UNITS_METERS: 31,
  UNITS_INCHES: 32,
  UNITS_FEET: 33,
  UNITS_CANDELAS: 179,
  UNITS_CANDELAS_PER_SQUARE_METER: 180,
  UNITS_WATTS_PER_SQUARE_FOOT: 34,
  UNITS_WATTS_PER_SQUARE_METER: 35,
  UNITS_LUMENS: 36,
  UNITS_LUXES: 37,
  UNITS_FOOT_CANDLES: 38,
  UNITS_MILLIGRAMS: 196,
  UNITS_GRAMS: 195,
  UNITS_KILOGRAMS: 39,
  UNITS_POUNDS_MASS: 40,
  UNITS_TONS: 41,
  UNITS_GRAMS_PER_SECOND: 154,
  UNITS_GRAMS_PER_MINUTE: 155,
  UNITS_KILOGRAMS_PER_SECOND: 42,
  UNITS_KILOGRAMS_PER_MINUTE: 43,
  UNITS_KILOGRAMS_PER_HOUR: 44,
  UNITS_POUNDS_MASS_PER_SECOND: 119,
  UNITS_POUNDS_MASS_PER_MINUTE: 45,
  UNITS_POUNDS_MASS_PER_HOUR: 46,
  UNITS_TONS_PER_HOUR: 156,
  UNITS_MILLIWATTS: 132,
  UNITS_WATTS: 47,
  UNITS_KILOWATTS: 48,
  UNITS_MEGAWATTS: 49,
  UNITS_BTUS_PER_HOUR: 50,
  UNITS_KILO_BTUS_PER_HOUR: 157,
  UNITS_HORSEPOWER: 51,
  UNITS_TONS_REFRIGERATION: 52,
  UNITS_PASCALS: 53,
  UNITS_HECTOPASCALS: 133,
  UNITS_KILOPASCALS: 54,
  UNITS_MILLIBARS: 134,
  UNITS_BARS: 55,
  UNITS_POUNDS_FORCE_PER_SQUARE_INCH: 56,
  UNITS_MILLIMETERS_OF_WATER: 206,
  UNITS_CENTIMETERS_OF_WATER: 57,
  UNITS_INCHES_OF_WATER: 58,
  UNITS_MILLIMETERS_OF_MERCURY: 59,
  UNITS_CENTIMETERS_OF_MERCURY: 60,
  UNITS_INCHES_OF_MERCURY: 61,
  UNITS_DEGREES_CELSIUS: 62,
  UNITS_DEGREES_KELVIN: 63,
  UNITS_DEGREES_KELVIN_PER_HOUR: 181,
  UNITS_DEGREES_KELVIN_PER_MINUTE: 182,
  UNITS_DEGREES_FAHRENHEIT: 64,
  UNITS_DEGREE_DAYS_CELSIUS: 65,
  UNITS_DEGREE_DAYS_FAHRENHEIT: 66,
  UNITS_DELTA_DEGREES_FAHRENHEIT: 120,
  UNITS_DELTA_DEGREES_KELVIN: 121,
  UNITS_YEARS: 67,
  UNITS_MONTHS: 68,
  UNITS_WEEKS: 69,
  UNITS_DAYS: 70,
  UNITS_HOURS: 71,
  UNITS_MINUTES: 72,
  UNITS_SECONDS: 73,
  UNITS_HUNDREDTHS_SECONDS: 158,
  UNITS_MILLISECONDS: 159,
  UNITS_NEWTON_METERS: 160,
  UNITS_MILLIMETERS_PER_SECOND: 161,
  UNITS_MILLIMETERS_PER_MINUTE: 162,
  UNITS_METERS_PER_SECOND: 74,
  UNITS_METERS_PER_MINUTE: 163,
  UNITS_METERS_PER_HOUR: 164,
  UNITS_KILOMETERS_PER_HOUR: 75,
  UNITS_FEET_PER_SECOND: 76,
  UNITS_FEET_PER_MINUTE: 77,
  UNITS_MILES_PER_HOUR: 78,
  UNITS_CUBIC_FEET: 79,
  UNITS_CUBIC_METERS: 80,
  UNITS_IMPERIAL_GALLONS: 81,
  UNITS_MILLILITERS: 197,
  UNITS_LITERS: 82,
  UNITS_US_GALLONS: 83,
  UNITS_CUBIC_FEET_PER_SECOND: 142,
  UNITS_CUBIC_FEET_PER_MINUTE: 84,
  UNITS_MILLION_CUBIC_FEET_PER_MINUTE: 254,
  UNITS_CUBIC_FEET_PER_HOUR: 191,
  UNITS_STANDARD_CUBIC_FEET_PER_DAY: 47808,
  UNITS_MILLION_STANDARD_CUBIC_FEET_PER_DAY: 47809,
  UNITS_THOUSAND_CUBIC_FEET_PER_DAY: 47810,
  UNITS_THOUSAND_STANDARD_CUBIC_FEET_PER_DAY: 47811,
  UINITS_POUNDS_MASS_PER_DAY: 47812,
  UNITS_CUBIC_METERS_PER_SECOND: 85,
  UNITS_CUBIC_METERS_PER_MINUTE: 165,
  UNITS_CUBIC_METERS_PER_HOUR: 135,
  UNITS_IMPERIAL_GALLONS_PER_MINUTE: 86,
  UNITS_MILLILITERS_PER_SECOND: 198,
  UNITS_LITERS_PER_SECOND: 87,
  UNITS_LITERS_PER_MINUTE: 88,
  UNITS_LITERS_PER_HOUR: 136,
  UNITS_US_GALLONS_PER_MINUTE: 89,
  UNITS_US_GALLONS_PER_HOUR: 192,
  UNITS_DEGREES_ANGULAR: 90,
  UNITS_DEGREES_CELSIUS_PER_HOUR: 91,
  UNITS_DEGREES_CELSIUS_PER_MINUTE: 92,
  UNITS_DEGREES_FAHRENHEIT_PER_HOUR: 93,
  UNITS_DEGREES_FAHRENHEIT_PER_MINUTE: 94,
  UNITS_JOULE_SECONDS: 183,
  UNITS_KILOGRAMS_PER_CUBIC_METER: 186,
  UNITS_KW_HOURS_PER_SQUARE_METER: 137,
  UNITS_KW_HOURS_PER_SQUARE_FOOT: 138,
  UNITS_MEGAJOULES_PER_SQUARE_METER: 139,
  UNITS_MEGAJOULES_PER_SQUARE_FOOT: 140,
  UNITS_NO_UNITS: 95,
  UNITS_NEWTON_SECONDS: 187,
  UNITS_NEWTONS_PER_METER: 188,
  UNITS_PARTS_PER_MILLION: 96,
  UNITS_PARTS_PER_BILLION: 97,
  UNITS_PERCENT: 98,
  UNITS_PERCENT_OBSCURATION_PER_FOOT: 143,
  UNITS_PERCENT_OBSCURATION_PER_METER: 144,
  UNITS_PERCENT_PER_SECOND: 99,
  UNITS_PER_MINUTE: 100,
  UNITS_PER_SECOND: 101,
  UNITS_PSI_PER_DEGREE_FAHRENHEIT: 102,
  UNITS_RADIANS: 103,
  UNITS_RADIANS_PER_SECOND: 184,
  UNITS_REVOLUTIONS_PER_MINUTE: 104,
  UNITS_SQUARE_METERS_PER_NEWTON: 185,
  UNITS_WATTS_PER_METER_PER_DEGREE_KELVIN: 189,
  UNITS_WATTS_PER_SQUARE_METER_DEGREE_KELVIN: 141,
  UNITS_PER_MILLE: 207,
  UNITS_GRAMS_PER_GRAM: 208,
  UNITS_KILOGRAMS_PER_KILOGRAM: 209,
  UNITS_GRAMS_PER_KILOGRAM: 210,
  UNITS_MILLIGRAMS_PER_GRAM: 211,
  UNITS_MILLIGRAMS_PER_KILOGRAM: 212,
  UNITS_GRAMS_PER_MILLILITER: 213,
  UNITS_GRAMS_PER_LITER: 214,
  UNITS_MILLIGRAMS_PER_LITER: 215,
  UNITS_MICROGRAMS_PER_LITER: 216,
  UNITS_GRAMS_PER_CUBIC_METER: 217,
  UNITS_MILLIGRAMS_PER_CUBIC_METER: 218,
  UNITS_MICROGRAMS_PER_CUBIC_METER: 219,
  UNITS_NANOGRAMS_PER_CUBIC_METER: 220,
  UNITS_GRAMS_PER_CUBIC_CENTIMETER: 221,
  UNITS_BECQUERELS: 222,
  UNITS_MEGABECQUERELS: 224,
  UNITS_GRAY: 225,
  UNITS_MILLIGRAY: 226,
  UNITS_MICROGRAY: 227,
  UNITS_SIEVERTS: 228,
  UNITS_MILLISIEVERTS: 229,
  UNITS_MICROSIEVERTS: 230,
  UNITS_MICROSIEVERTS_PER_HOUR: 231,
  UNITS_MILLIREMS: 47814,
  UNITS_MILLIREMS_PER_HOUR: 47815,
  UNITS_DECIBELS_A: 232,
  UNITS_NEPHELOMETRIC_TURBIDITY_UNIT: 233,
  UNITS_PH: 234,
  UNITS_GRAMS_PER_SQUARE_METER: 235,
  UNITS_MINUTES_PER_DEGREE_KELVIN: 236,
  UNITS_METER_SQUARED_PER_METER: 237,
  UNITS_AMPERE_SECONDS: 238,
  UNITS_VOLT_AMPERE_HOURS: 239,
  UNITS_KILOVOLT_AMPERE_HOURS: 240,
  UNITS_MEGAVOLT_AMPERE_HOURS: 241,
  UNITS_VOLT_AMPERE_HOURS_REACTIVE: 242,
  UNITS_KILOVOLT_AMPERE_HOURS_REACTIVE: 243,
  UNITS_MEGAVOLT_AMPERE_HOURS_REACTIVE: 244,
  UNITS_VOLT_SQUARE_HOURS: 245,
  UNITS_AMPERE_SQUARE_HOURS: 246,
  UNITS_JOULE_PER_HOURS: 247,
  UNITS_CUBIC_FEET_PER_DAY: 248,
  UNITS_CUBIC_METERS_PER_DAY: 249,
  UNITS_WATT_HOURS_PER_CUBIC_METER: 250,
  UNITS_JOULES_PER_CUBIC_METER: 251,
  UNITS_MOLE_PERCENT: 252,
  UNITS_PASCAL_SECONDS: 253
};

module.exports.Polarity = {
  POLARITY_NORMAL: 0,
  POLARITY_REVERSE: 1
};

module.exports.Reliability = {
  RELIABILITY_NO_FAULT_DETECTED: 0,
  RELIABILITY_NO_SENSOR: 1,
  RELIABILITY_OVER_RANGE: 2,
  RELIABILITY_UNDER_RANGE: 3,
  RELIABILITY_OPEN_LOOP: 4,
  RELIABILITY_SHORTED_LOOP: 5,
  RELIABILITY_NO_OUTPUT: 6,
  RELIABILITY_UNRELIABLE_OTHER: 7,
  RELIABILITY_PROCESS_ERROR: 8,
  RELIABILITY_MULTI_STATE_FAULT: 9,
  RELIABILITY_CONFIGURATION_ERROR: 10,
  RELIABILITY_MEMBER_FAULT: 11,
  RELIABILITY_COMMUNICATION_FAILURE: 12,
  RELIABILITY_TRIPPED: 13
};

/**
 * @readonly
 * @enum {MaxSegments}
 */
module.exports.MaxSegments = {
  MAX_SEG0: 0,
  MAX_SEG2: 0x10,
  MAX_SEG4: 0x20,
  MAX_SEG8: 0x30,
  MAX_SEG16: 0x40,
  MAX_SEG32: 0x50,
  MAX_SEG64: 0x60,
  MAX_SEG65: 0x70
};

/**
 * @readonly
 * @enum {MaxAdpu}
 */
module.exports.MaxAdpu = {
  MAX_APDU50: 0,
  MAX_APDU128: 1,
  MAX_APDU206: 2,
  MAX_APDU480: 3,
  MAX_APDU1024: 4,
  MAX_APDU1476: 5
};

module.exports.ObjectTypes = {
  OBJECT_ANALOG_INPUT: 0,
  OBJECT_ANALOG_OUTPUT: 1,
  OBJECT_ANALOG_VALUE: 2,
  OBJECT_BINARY_INPUT: 3,
  OBJECT_BINARY_OUTPUT: 4,
  OBJECT_BINARY_VALUE: 5,
  OBJECT_CALENDAR: 6,
  OBJECT_COMMAND: 7,
  OBJECT_DEVICE: 8,
  OBJECT_EVENT_ENROLLMENT: 9,
  OBJECT_FILE: 10,
  OBJECT_GROUP: 11,
  OBJECT_LOOP: 12,
  OBJECT_MULTI_STATE_INPUT: 13,
  OBJECT_MULTI_STATE_OUTPUT: 14,
  OBJECT_NOTIFICATION_CLASS: 15,
  OBJECT_PROGRAM: 16,
  OBJECT_SCHEDULE: 17,
  OBJECT_AVERAGING: 18,
  OBJECT_MULTI_STATE_VALUE: 19,
  OBJECT_TRENDLOG: 20,
  OBJECT_LIFE_SAFETY_POINT: 21,
  OBJECT_LIFE_SAFETY_ZONE: 22,
  OBJECT_ACCUMULATOR: 23,
  OBJECT_PULSE_CONVERTER: 24,
  OBJECT_EVENT_LOG: 25,
  OBJECT_GLOBAL_GROUP: 26,
  OBJECT_TREND_LOG_MULTIPLE: 27,
  OBJECT_LOAD_CONTROL: 28,
  OBJECT_STRUCTURED_VIEW: 29,
  OBJECT_ACCESS_DOOR: 30,
  OBJECT_TIMER: 31,
  OBJECT_ACCESS_CREDENTIAL: 32,
  OBJECT_ACCESS_POINT: 33,
  OBJECT_ACCESS_RIGHTS: 34,
  OBJECT_ACCESS_USER: 35,
  OBJECT_ACCESS_ZONE: 36,
  OBJECT_CREDENTIAL_DATA_INPUT: 37,
  OBJECT_NETWORK_SECURITY: 38,
  OBJECT_BITSTRING_VALUE: 39,
  OBJECT_CHARACTERSTRING_VALUE: 40,
  OBJECT_DATE_PATTERN_VALUE: 41,
  OBJECT_DATE_VALUE: 42,
  OBJECT_DATETIME_PATTERN_VALUE: 43,
  OBJECT_DATETIME_VALUE: 44,
  OBJECT_INTEGER_VALUE: 45,
  OBJECT_LARGE_ANALOG_VALUE: 46,
  OBJECT_OCTETSTRING_VALUE: 47,
  OBJECT_POSITIVE_INTEGER_VALUE: 48,
  OBJECT_TIME_PATTERN_VALUE: 49,
  OBJECT_TIME_VALUE: 50,
  OBJECT_NOTIFICATION_FORWARDER: 51,
  OBJECT_ALERT_ENROLLMENT: 52,
  OBJECT_CHANNEL: 53,
  OBJECT_LIGHTING_OUTPUT: 54,
  OBJECT_BINARY_LIGHTING_OUTPUT: 55,
  OBJECT_PROPRIETARY_MIN: 128,
  OBJECT_PROPRIETARY_MAX: 1023,
  MAX_BACNET_OBJECT_TYPE: 1024,
  MAX_ASHRAE_OBJECT_TYPE: 55
};

/**
 * @readonly
 * @enum {ApplicationTags}
 */
module.exports.ApplicationTags = {
  BACNET_APPLICATION_TAG_NULL: 0,
  BACNET_APPLICATION_TAG_BOOLEAN: 1,
  BACNET_APPLICATION_TAG_UNSIGNED_INT: 2,
  BACNET_APPLICATION_TAG_SIGNED_INT: 3,
  BACNET_APPLICATION_TAG_REAL: 4,
  BACNET_APPLICATION_TAG_DOUBLE: 5,
  BACNET_APPLICATION_TAG_OCTET_STRING: 6,
  BACNET_APPLICATION_TAG_CHARACTER_STRING: 7,
  BACNET_APPLICATION_TAG_BIT_STRING: 8,
  BACNET_APPLICATION_TAG_ENUMERATED: 9,
  BACNET_APPLICATION_TAG_DATE: 10,
  BACNET_APPLICATION_TAG_TIME: 11,
  BACNET_APPLICATION_TAG_OBJECT_ID: 12,
  BACNET_APPLICATION_TAG_RESERVE1: 13,
  BACNET_APPLICATION_TAG_RESERVE2: 14,
  BACNET_APPLICATION_TAG_RESERVE3: 15,
  MAX_BACNET_APPLICATION_TAG: 16,
  BACNET_APPLICATION_TAG_EMPTYLIST: 100,
  BACNET_APPLICATION_TAG_WEEKNDAY: 101,
  BACNET_APPLICATION_TAG_DATERANGE: 102,
  BACNET_APPLICATION_TAG_DATETIME: 103,
  BACNET_APPLICATION_TAG_TIMESTAMP: 104,
  BACNET_APPLICATION_TAG_ERROR: 105,
  BACNET_APPLICATION_TAG_DEVICE_OBJECT_PROPERTY_REFERENCE: 106,
  BACNET_APPLICATION_TAG_DEVICE_OBJECT_REFERENCE: 107,
  BACNET_APPLICATION_TAG_OBJECT_PROPERTY_REFERENCE: 108,
  BACNET_APPLICATION_TAG_DESTINATION: 109,
  BACNET_APPLICATION_TAG_RECIPIENT: 110,
  BACNET_APPLICATION_TAG_COV_SUBSCRIPTION: 111,
  BACNET_APPLICATION_TAG_CALENDAR_ENTRY: 112,
  BACNET_APPLICATION_TAG_WEEKLY_SCHEDULE: 113,
  BACNET_APPLICATION_TAG_SPECIAL_EVENT: 114,
  BACNET_APPLICATION_TAG_READ_ACCESS_SPECIFICATION: 115,
  BACNET_APPLICATION_TAG_READ_ACCESS_RESULT: 116,
  BACNET_APPLICATION_TAG_LIGHTING_COMMAND: 117,
  BACNET_APPLICATION_TAG_CONTEXT_SPECIFIC_DECODED: 118,
  BACNET_APPLICATION_TAG_CONTEXT_SPECIFIC_ENCODED: 119,
  BACNET_APPLICATION_TAG_LOG_RECORD: 120
};

module.exports.PropertyIds = {
  PROP_ACKED_TRANSITIONS: 0,
  PROP_ACK_REQUIRED: 1,
  PROP_ACTION: 2,
  PROP_ACTION_TEXT: 3,
  PROP_ACTIVE_TEXT: 4,
  PROP_ACTIVE_VT_SESSIONS: 5,
  PROP_ALARM_VALUE: 6,
  PROP_ALARM_VALUES: 7,
  PROP_ALL: 8,
  PROP_ALL_WRITES_SUCCESSFUL: 9,
  PROP_APDU_SEGMENT_TIMEOUT: 10,
  PROP_APDU_TIMEOUT: 11,
  PROP_APPLICATION_SOFTWARE_VERSION: 12,
  PROP_ARCHIVE: 13,
  PROP_BIAS: 14,
  PROP_CHANGE_OF_STATE_COUNT: 15,
  PROP_CHANGE_OF_STATE_TIME: 16,
  PROP_NOTIFICATION_CLASS: 17,
  PROP_BLANK_1: 18,
  PROP_CONTROLLED_VARIABLE_REFERENCE: 19,
  PROP_CONTROLLED_VARIABLE_UNITS: 20,
  PROP_CONTROLLED_VARIABLE_VALUE: 21,
  PROP_COV_INCREMENT: 22,
  PROP_DATE_LIST: 23,
  PROP_DAYLIGHT_SAVINGS_STATUS: 24,
  PROP_DEADBAND: 25,
  PROP_DERIVATIVE_CONSTANT: 26,
  PROP_DERIVATIVE_CONSTANT_UNITS: 27,
  PROP_DESCRIPTION: 28,
  PROP_DESCRIPTION_OF_HALT: 29,
  PROP_DEVICE_ADDRESS_BINDING: 30,
  PROP_DEVICE_TYPE: 31,
  PROP_EFFECTIVE_PERIOD: 32,
  PROP_ELAPSED_ACTIVE_TIME: 33,
  PROP_ERROR_LIMIT: 34,
  PROP_EVENT_ENABLE: 35,
  PROP_EVENT_STATE: 36,
  PROP_EVENT_TYPE: 37,
  PROP_EXCEPTION_SCHEDULE: 38,
  PROP_FAULT_VALUES: 39,
  PROP_FEEDBACK_VALUE: 40,
  PROP_FILE_ACCESS_METHOD: 41,
  PROP_FILE_SIZE: 42,
  PROP_FILE_TYPE: 43,
  PROP_FIRMWARE_REVISION: 44,
  PROP_HIGH_LIMIT: 45,
  PROP_INACTIVE_TEXT: 46,
  PROP_IN_PROCESS: 47,
  PROP_INSTANCE_OF: 48,
  PROP_INTEGRAL_CONSTANT: 49,
  PROP_INTEGRAL_CONSTANT_UNITS: 50,
  PROP_ISSUE_CONFIRMED_NOTIFICATIONS: 51,
  PROP_LIMIT_ENABLE: 52,
  PROP_LIST_OF_GROUP_MEMBERS: 53,
  PROP_LIST_OF_OBJECT_PROPERTY_REFERENCES: 54,
  PROP_LIST_OF_SESSION_KEYS: 55,
  PROP_LOCAL_DATE: 56,
  PROP_LOCAL_TIME: 57,
  PROP_LOCATION: 58,
  PROP_LOW_LIMIT: 59,
  PROP_MANIPULATED_VARIABLE_REFERENCE: 60,
  PROP_MAXIMUM_OUTPUT: 61,
  PROP_MAX_APDU_LENGTH_ACCEPTED: 62,
  PROP_MAX_INFO_FRAMES: 63,
  PROP_MAX_MASTER: 64,
  PROP_MAX_PRES_VALUE: 65,
  PROP_MINIMUM_OFF_TIME: 66,
  PROP_MINIMUM_ON_TIME: 67,
  PROP_MINIMUM_OUTPUT: 68,
  PROP_MIN_PRES_VALUE: 69,
  PROP_MODEL_NAME: 70,
  PROP_MODIFICATION_DATE: 71,
  PROP_NOTIFY_TYPE: 72,
  PROP_NUMBER_OF_APDU_RETRIES: 73,
  PROP_NUMBER_OF_STATES: 74,
  PROP_OBJECT_IDENTIFIER: 75,
  PROP_OBJECT_LIST: 76,
  PROP_OBJECT_NAME: 77,
  PROP_OBJECT_PROPERTY_REFERENCE: 78,
  PROP_OBJECT_TYPE: 79,
  PROP_OPTIONAL: 80,
  PROP_OUT_OF_SERVICE: 81,
  PROP_OUTPUT_UNITS: 82,
  PROP_EVENT_PARAMETERS: 83,
  PROP_POLARITY: 84,
  PROP_PRESENT_VALUE: 85,
  PROP_PRIORITY: 86,
  PROP_PRIORITY_ARRAY: 87,
  PROP_PRIORITY_FOR_WRITING: 88,
  PROP_PROCESS_IDENTIFIER: 89,
  PROP_PROGRAM_CHANGE: 90,
  PROP_PROGRAM_LOCATION: 91,
  PROP_PROGRAM_STATE: 92,
  PROP_PROPORTIONAL_CONSTANT: 93,
  PROP_PROPORTIONAL_CONSTANT_UNITS: 94,
  PROP_PROTOCOL_CONFORMANCE_CLASS: 95,
  PROP_PROTOCOL_OBJECT_TYPES_SUPPORTED: 96,
  PROP_PROTOCOL_SERVICES_SUPPORTED: 97,
  PROP_PROTOCOL_VERSION: 98,
  PROP_READ_ONLY: 99,
  PROP_REASON_FOR_HALT: 100,
  PROP_RECIPIENT: 101,
  PROP_RECIPIENT_LIST: 102,
  PROP_RELIABILITY: 103,
  PROP_RELINQUISH_DEFAULT: 104,
  PROP_REQUIRED: 105,
  PROP_RESOLUTION: 106,
  PROP_SEGMENTATION_SUPPORTED: 107,
  PROP_SETPOINT: 108,
  PROP_SETPOINT_REFERENCE: 109,
  PROP_STATE_TEXT: 110,
  PROP_STATUS_FLAGS: 111,
  PROP_SYSTEM_STATUS: 112,
  PROP_TIME_DELAY: 113,
  PROP_TIME_OF_ACTIVE_TIME_RESET: 114,
  PROP_TIME_OF_STATE_COUNT_RESET: 115,
  PROP_TIME_SYNCHRONIZATION_RECIPIENTS: 116,
  PROP_UNITS: 117,
  PROP_UPDATE_INTERVAL: 118,
  PROP_UTC_OFFSET: 119,
  PROP_VENDOR_IDENTIFIER: 120,
  PROP_VENDOR_NAME: 121,
  PROP_VT_CLASSES_SUPPORTED: 122,
  PROP_WEEKLY_SCHEDULE: 123,
  PROP_ATTEMPTED_SAMPLES: 124,
  PROP_AVERAGE_VALUE: 125,
  PROP_BUFFER_SIZE: 126,
  PROP_CLIENT_COV_INCREMENT: 127,
  PROP_COV_RESUBSCRIPTION_INTERVAL: 128,
  PROP_CURRENT_NOTIFY_TIME: 129,
  PROP_EVENT_TIME_STAMPS: 130,
  PROP_LOG_BUFFER: 131,
  PROP_LOG_DEVICE_OBJECT_PROPERTY: 132,
  PROP_ENABLE: 133,
  PROP_LOG_INTERVAL: 134,
  PROP_MAXIMUM_VALUE: 135,
  PROP_MINIMUM_VALUE: 136,
  PROP_NOTIFICATION_THRESHOLD: 137,
  PROP_PREVIOUS_NOTIFY_TIME: 138,
  PROP_PROTOCOL_REVISION: 139,
  PROP_RECORDS_SINCE_NOTIFICATION: 140,
  PROP_RECORD_COUNT: 141,
  PROP_START_TIME: 142,
  PROP_STOP_TIME: 143,
  PROP_STOP_WHEN_FULL: 144,
  PROP_TOTAL_RECORD_COUNT: 145,
  PROP_VALID_SAMPLES: 146,
  PROP_WINDOW_INTERVAL: 147,
  PROP_WINDOW_SAMPLES: 148,
  PROP_MAXIMUM_VALUE_TIMESTAMP: 149,
  PROP_MINIMUM_VALUE_TIMESTAMP: 150,
  PROP_VARIANCE_VALUE: 151,
  PROP_ACTIVE_COV_SUBSCRIPTIONS: 152,
  PROP_BACKUP_FAILURE_TIMEOUT: 153,
  PROP_CONFIGURATION_FILES: 154,
  PROP_DATABASE_REVISION: 155,
  PROP_DIRECT_READING: 156,
  PROP_LAST_RESTORE_TIME: 157,
  PROP_MAINTENANCE_REQUIRED: 158,
  PROP_MEMBER_OF: 159,
  PROP_MODE: 160,
  PROP_OPERATION_EXPECTED: 161,
  PROP_SETTING: 162,
  PROP_SILENCED: 163,
  PROP_TRACKING_VALUE: 164,
  PROP_ZONE_MEMBERS: 165,
  PROP_LIFE_SAFETY_ALARM_VALUES: 166,
  PROP_MAX_SEGMENTS_ACCEPTED: 167,
  PROP_PROFILE_NAME: 168,
  PROP_AUTO_SLAVE_DISCOVERY: 169,
  PROP_MANUAL_SLAVE_ADDRESS_BINDING: 170,
  PROP_SLAVE_ADDRESS_BINDING: 171,
  PROP_SLAVE_PROXY_ENABLE: 172,
  PROP_LAST_NOTIFY_RECORD: 173,
  PROP_SCHEDULE_DEFAULT: 174,
  PROP_ACCEPTED_MODES: 175,
  PROP_ADJUST_VALUE: 176,
  PROP_COUNT: 177,
  PROP_COUNT_BEFORE_CHANGE: 178,
  PROP_COUNT_CHANGE_TIME: 179,
  PROP_COV_PERIOD: 180,
  PROP_INPUT_REFERENCE: 181,
  PROP_LIMIT_MONITORING_INTERVAL: 182,
  PROP_LOGGING_OBJECT: 183,
  PROP_LOGGING_RECORD: 184,
  PROP_PRESCALE: 185,
  PROP_PULSE_RATE: 186,
  PROP_SCALE: 187,
  PROP_SCALE_FACTOR: 188,
  PROP_UPDATE_TIME: 189,
  PROP_VALUE_BEFORE_CHANGE: 190,
  PROP_VALUE_SET: 191,
  PROP_VALUE_CHANGE_TIME: 192,
  PROP_ALIGN_INTERVALS: 193,
  PROP_INTERVAL_OFFSET: 195,
  PROP_LAST_RESTART_REASON: 196,
  PROP_LOGGING_TYPE: 197,
  PROP_RESTART_NOTIFICATION_RECIPIENTS: 202,
  PROP_TIME_OF_DEVICE_RESTART: 203,
  PROP_TIME_SYNCHRONIZATION_INTERVAL: 204,
  PROP_TRIGGER: 205,
  PROP_UTC_TIME_SYNCHRONIZATION_RECIPIENTS: 206,
  PROP_NODE_SUBTYPE: 207,
  PROP_NODE_TYPE: 208,
  PROP_STRUCTURED_OBJECT_LIST: 209,
  PROP_SUBORDINATE_ANNOTATIONS: 210,
  PROP_SUBORDINATE_LIST: 211,
  PROP_ACTUAL_SHED_LEVEL: 212,
  PROP_DUTY_WINDOW: 213,
  PROP_EXPECTED_SHED_LEVEL: 214,
  PROP_FULL_DUTY_BASELINE: 215,
  PROP_REQUESTED_SHED_LEVEL: 218,
  PROP_SHED_DURATION: 219,
  PROP_SHED_LEVEL_DESCRIPTIONS: 220,
  PROP_SHED_LEVELS: 221,
  PROP_STATE_DESCRIPTION: 222,
  PROP_DOOR_ALARM_STATE: 226,
  PROP_DOOR_EXTENDED_PULSE_TIME: 227,
  PROP_DOOR_MEMBERS: 228,
  PROP_DOOR_OPEN_TOO_LONG_TIME: 229,
  PROP_DOOR_PULSE_TIME: 230,
  PROP_DOOR_STATUS: 231,
  PROP_DOOR_UNLOCK_DELAY_TIME: 232,
  PROP_LOCK_STATUS: 233,
  PROP_MASKED_ALARM_VALUES: 234,
  PROP_SECURED_STATUS: 235,
  PROP_ABSENTEE_LIMIT: 244,
  PROP_ACCESS_ALARM_EVENTS: 245,
  PROP_ACCESS_DOORS: 246,
  PROP_ACCESS_EVENT: 247,
  PROP_ACCESS_EVENT_AUTHENTICATION_FACTOR: 248,
  PROP_ACCESS_EVENT_CREDENTIAL: 249,
  PROP_ACCESS_EVENT_TIME: 250,
  PROP_ACCESS_TRANSACTION_EVENTS: 251,
  PROP_ACCOMPANIMENT: 252,
  PROP_ACCOMPANIMENT_TIME: 253,
  PROP_ACTIVATION_TIME: 254,
  PROP_ACTIVE_AUTHENTICATION_POLICY: 255,
  PROP_ASSIGNED_ACCESS_RIGHTS: 256,
  PROP_AUTHENTICATION_FACTORS: 257,
  PROP_AUTHENTICATION_POLICY_LIST: 258,
  PROP_AUTHENTICATION_POLICY_NAMES: 259,
  PROP_AUTHENTICATION_STATUS: 260,
  PROP_AUTHORIZATION_MODE: 261,
  PROP_BELONGS_TO: 262,
  PROP_CREDENTIAL_DISABLE: 263,
  PROP_CREDENTIAL_STATUS: 264,
  PROP_CREDENTIALS: 265,
  PROP_CREDENTIALS_IN_ZONE: 266,
  PROP_DAYS_REMAINING: 267,
  PROP_ENTRY_POINTS: 268,
  PROP_EXIT_POINTS: 269,
  PROP_EXPIRY_TIME: 270,
  PROP_EXTENDED_TIME_ENABLE: 271,
  PROP_FAILED_ATTEMPT_EVENTS: 272,
  PROP_FAILED_ATTEMPTS: 273,
  PROP_FAILED_ATTEMPTS_TIME: 274,
  PROP_LAST_ACCESS_EVENT: 275,
  PROP_LAST_ACCESS_POINT: 276,
  PROP_LAST_CREDENTIAL_ADDED: 277,
  PROP_LAST_CREDENTIAL_ADDED_TIME: 278,
  PROP_LAST_CREDENTIAL_REMOVED: 279,
  PROP_LAST_CREDENTIAL_REMOVED_TIME: 280,
  PROP_LAST_USE_TIME: 281,
  PROP_LOCKOUT: 282,
  PROP_LOCKOUT_RELINQUISH_TIME: 283,
  PROP_MASTER_EXEMPTION: 284,
  PROP_MAX_FAILED_ATTEMPTS: 285,
  PROP_MEMBERS: 286,
  PROP_MUSTER_POINT: 287,
  PROP_NEGATIVE_ACCESS_RULES: 288,
  PROP_NUMBER_OF_AUTHENTICATION_POLICIES: 289,
  PROP_OCCUPANCY_COUNT: 290,
  PROP_OCCUPANCY_COUNT_ADJUST: 291,
  PROP_OCCUPANCY_COUNT_ENABLE: 292,
  PROP_OCCUPANCY_EXEMPTION: 293,
  PROP_OCCUPANCY_LOWER_LIMIT: 294,
  PROP_OCCUPANCY_LOWER_LIMIT_ENFORCED: 295,
  PROP_OCCUPANCY_STATE: 296,
  PROP_OCCUPANCY_UPPER_LIMIT: 297,
  PROP_OCCUPANCY_UPPER_LIMIT_ENFORCED: 298,
  PROP_PASSBACK_EXEMPTION: 299,
  PROP_PASSBACK_MODE: 300,
  PROP_PASSBACK_TIMEOUT: 301,
  PROP_POSITIVE_ACCESS_RULES: 302,
  PROP_REASON_FOR_DISABLE: 303,
  PROP_SUPPORTED_FORMATS: 304,
  PROP_SUPPORTED_FORMAT_CLASSES: 305,
  PROP_THREAT_AUTHORITY: 306,
  PROP_THREAT_LEVEL: 307,
  PROP_TRACE_FLAG: 308,
  PROP_TRANSACTION_NOTIFICATION_CLASS: 309,
  PROP_USER_EXTERNAL_IDENTIFIER: 310,
  PROP_USER_INFORMATION_REFERENCE: 311,
  PROP_USER_NAME: 317,
  PROP_USER_TYPE: 318,
  PROP_USES_REMAINING: 319,
  PROP_ZONE_FROM: 320,
  PROP_ZONE_TO: 321,
  PROP_ACCESS_EVENT_TAG: 322,
  PROP_GLOBAL_IDENTIFIER: 323,
  PROP_VERIFICATION_TIME: 326,
  PROP_BASE_DEVICE_SECURITY_POLICY: 327,
  PROP_DISTRIBUTION_KEY_REVISION: 328,
  PROP_DO_NOT_HIDE: 329,
  PROP_KEY_SETS: 330,
  PROP_LAST_KEY_SERVER: 331,
  PROP_NETWORK_ACCESS_SECURITY_POLICIES: 332,
  PROP_PACKET_REORDER_TIME: 333,
  PROP_SECURITY_PDU_TIMEOUT: 334,
  PROP_SECURITY_TIME_WINDOW: 335,
  PROP_SUPPORTED_SECURITY_ALGORITHM: 336,
  PROP_UPDATE_KEY_SET_TIMEOUT: 337,
  PROP_BACKUP_AND_RESTORE_STATE: 338,
  PROP_BACKUP_PREPARATION_TIME: 339,
  PROP_RESTORE_COMPLETION_TIME: 340,
  PROP_RESTORE_PREPARATION_TIME: 341,
  PROP_BIT_MASK: 342,
  PROP_BIT_TEXT: 343,
  PROP_IS_UTC: 344,
  PROP_GROUP_MEMBERS: 345,
  PROP_GROUP_MEMBER_NAMES: 346,
  PROP_MEMBER_STATUS_FLAGS: 347,
  PROP_REQUESTED_UPDATE_INTERVAL: 348,
  PROP_COVU_PERIOD: 349,
  PROP_COVU_RECIPIENTS: 350,
  PROP_EVENT_MESSAGE_TEXTS: 351,
  PROP_EVENT_MESSAGE_TEXTS_CONFIG: 352,
  PROP_EVENT_DETECTION_ENABLE: 353,
  PROP_EVENT_ALGORITHM_INHIBIT: 354,
  PROP_EVENT_ALGORITHM_INHIBIT_REF: 355,
  PROP_TIME_DELAY_NORMAL: 356,
  PROP_RELIABILITY_EVALUATION_INHIBIT: 357,
  PROP_FAULT_PARAMETERS: 358,
  PROP_FAULT_TYPE: 359,
  PROP_LOCAL_FORWARDING_ONLY: 360,
  PROP_PROCESS_IDENTIFIER_FILTER: 361,
  PROP_SUBSCRIBED_RECIPIENTS: 362,
  PROP_PORT_FILTER: 363,
  PROP_AUTHORIZATION_EXEMPTIONS: 364,
  PROP_ALLOW_GROUP_DELAY_INHIBIT: 365,
  PROP_CHANNEL_NUMBER: 366,
  PROP_CONTROL_GROUPS: 367,
  PROP_EXECUTION_DELAY: 368,
  PROP_LAST_PRIORITY: 369,
  PROP_WRITE_STATUS: 370,
  PROP_PROPERTY_LIST: 371,
  PROP_SERIAL_NUMBER: 372,
  PROP_BLINK_WARN_ENABLE: 373,
  PROP_DEFAULT_FADE_TIME: 374,
  PROP_DEFAULT_RAMP_RATE: 375,
  PROP_DEFAULT_STEP_INCREMENT: 376,
  PROP_EGRESS_TIME: 377,
  PROP_IN_PROGRESS: 378,
  PROP_INSTANTANEOUS_POWER: 379,
  PROP_LIGHTING_COMMAND: 380,
  PROP_LIGHTING_COMMAND_DEFAULT_PRIORITY: 381,
  PROP_MAX_ACTUAL_VALUE: 382,
  PROP_MIN_ACTUAL_VALUE: 383,
  PROP_POWER: 384,
  PROP_TRANSITION: 385,
  PROP_EGRESS_ACTIVE: 386,
  PROP_INTERFACE_VALUE: 387,
  PROP_FAULT_HIGH_LIMIT: 388,
  PROP_FAULT_LOW_LIMIT: 389,
  PROP_LOW_DIFF_LIMIT: 390,
  PROP_STRIKE_COUNT: 391,
  PROP_TIME_OF_STRIKE_COUNT_RESET: 392,
  PROP_DEFAULT_TIMEOUT: 393,
  PROP_INITIAL_TIMEOUT: 394,
  PROP_LAST_STATE_CHANGE: 395,
  PROP_STATE_CHANGE_VALUES: 396,
  PROP_TIMER_RUNNING: 397,
  PROP_TIMER_STATE: 398,
  MAX_BACNET_PROPERTY_ID: 4194303
};

module.exports.NodeTypes = {
  NT_UNKNOWN: 0,
  NT_SYSTEM: 1,
  NT_NETWORK: 2,
  NT_DEVICE: 3,
  NT_ORGANIZATIONAL: 4,
  NT_AREA: 5,
  NT_EQUIPMENT: 6,
  NT_POINT: 7,
  NT_COLLECTION: 8,
  NT_PROPERTY: 9,
  NT_FUNCTIONAL: 10,
  NT_OTHER: 11
};

module.exports.BvlcFunctions = {
  BVLC_RESULT: 0,
  BVLC_WRITE_BROADCAST_DISTRIBUTION_TABLE: 1,
  BVLC_READ_BROADCAST_DIST_TABLE: 2,
  BVLC_READ_BROADCAST_DIST_TABLE_ACK: 3,
  BVLC_FORWARDED_NPDU: 4,
  BVLC_REGISTER_FOREIGN_DEVICE: 5,
  BVLC_READ_FOREIGN_DEVICE_TABLE: 6,
  BVLC_READ_FOREIGN_DEVICE_TABLE_ACK: 7,
  BVLC_DELETE_FOREIGN_DEVICE_TABLE_ENTRY: 8,
  BVLC_DISTRIBUTE_BROADCAST_TO_NETWORK: 9,
  BVLC_ORIGINAL_UNICAST_NPDU: 10,
  BVLC_ORIGINAL_BROADCAST_NPDU: 11,
  MAX_BVLC_FUNCTION: 12
};

module.exports.BvlcResults = {
  BVLC_RESULT_SUCCESSFUL_COMPLETION: 0x0000,
  BVLC_RESULT_WRITE_BROADCAST_DISTRIBUTION_TABLE_NAK: 0x0010,
  BVLC_RESULT_READ_BROADCAST_DISTRIBUTION_TABLE_NAK: 0x0020,
  BVLC_RESULT_REGISTER_FOREIGN_DEVICE_NAK: 0X0030,
  BVLC_RESULT_READ_FOREIGN_DEVICE_TABLE_NAK: 0x0040,
  BVLC_RESULT_DELETE_FOREIGN_DEVICE_TABLE_ENTRY_NAK: 0x0050,
  BVLC_RESULT_DISTRIBUTE_BROADCAST_TO_NETWORK_NAK: 0x0060
};

module.exports.NpduControls = {
  PRIORITY_NORMAL_MESSAGE: 0,
  PRIORITY_URGENT_MESSAGE: 1,
  PRIORITY_CRITICAL_MESSAGE: 2,
  PRIORITY_LIFESAFETY_MESSAGE: 3,
  EXPECTING_REPLY: 4,
  SOURCE_SPECIFIED: 8,
  DESTINATION_SPECIFIED: 32,
  NETWORK_LAYER_MESSAGE: 128
};

module.exports.NetworkMessageTypes = {
  NETWORK_MESSAGE_WHO_IS_ROUTER_TO_NETWORK: 0,
  NETWORK_MESSAGE_I_AM_ROUTER_TO_NETWORK: 1,
  NETWORK_MESSAGE_I_COULD_BE_ROUTER_TO_NETWORK: 2,
  NETWORK_MESSAGE_REJECT_MESSAGE_TO_NETWORK: 3,
  NETWORK_MESSAGE_ROUTER_BUSY_TO_NETWORK: 4,
  NETWORK_MESSAGE_ROUTER_AVAILABLE_TO_NETWORK: 5,
  NETWORK_MESSAGE_INIT_RT_TABLE: 6,
  NETWORK_MESSAGE_INIT_RT_TABLE_ACK: 7,
  NETWORK_MESSAGE_ESTABLISH_CONNECTION_TO_NETWORK: 8,
  NETWORK_MESSAGE_DISCONNECT_CONNECTION_TO_NETWORK: 9
};

/**
 * @readonly
 * @enum {ReinitializedStates}
 */
module.exports.ReinitializedStates = {
  BACNET_REINIT_COLDSTART: 0,
  BACNET_REINIT_WARMSTART: 1,
  BACNET_REINIT_STARTBACKUP: 2,
  BACNET_REINIT_ENDBACKUP: 3,
  BACNET_REINIT_STARTRESTORE: 4,
  BACNET_REINIT_ENDRESTORE: 5,
  BACNET_REINIT_ABORTRESTORE: 6,
  BACNET_REINIT_IDLE: 255
};

module.exports.CharacterStringEncodings = {
  CHARACTER_ANSI_X34: 0,
  CHARACTER_UTF8: 0,
  CHARACTER_MS_DBCS: 1,
  CHARACTER_JISC_6226: 2,
  CHARACTER_JISX_0208: 2,
  CHARACTER_UCS4: 3,
  CHARACTER_UCS2: 4,
  CHARACTER_ISO8859_1: 5
};

module.exports.ReadRangeRequestTypes = {
  RR_BY_POSITION: 1,
  RR_BY_SEQUENCE: 2,
  RR_BY_TIME: 4,
  RR_READ_ALL: 8
};

/**
 * @readonly
 * @enum {EnableDisable}
 */
module.exports.EnableDisable = {
  ENABLE: 0,
  DISABLE: 1,
  DISABLE_INITIATION: 2
};

module.exports.NotifyTypes = {
  NOTIFY_ALARM: 0,
  NOTIFY_EVENT: 1,
  NOTIFY_ACK_NOTIFICATION: 2
};

module.exports.EventTypes = {
  EVENT_CHANGE_OF_BITSTRING: 0,
  EVENT_CHANGE_OF_STATE: 1,
  EVENT_CHANGE_OF_VALUE: 2,
  EVENT_COMMAND_FAILURE: 3,
  EVENT_FLOATING_LIMIT: 4,
  EVENT_OUT_OF_RANGE: 5,
  EVENT_CHANGE_OF_LIFE_SAFETY: 8,
  EVENT_EXTENDED: 9,
  EVENT_BUFFER_READY: 10,
  EVENT_UNSIGNED_RANGE: 11
};

module.exports.COVTypes = {
  CHANGE_OF_VALUE_BITS: 0,
  CHANGE_OF_VALUE_REAL: 1
};

module.exports.TimestampTags = {
  TIME_STAMP_TIME: 0,
  TIME_STAMP_SEQUENCE: 1,
  TIME_STAMP_DATETIME: 2,
  TIME_STAMP_NONE: -1
};

module.exports.PropertyStateTypes = {
  BOOLEAN_VALUE: 0,
  BINARY_VALUE: 1,
  EVENT_TYPE: 2,
  POLARITY: 3,
  PROGRAM_CHANGE: 4,
  PROGRAM_STATE: 5,
  REASON_FOR_HALT: 6,
  RELIABILITY: 7,
  STATE: 8,
  SYSTEM_STATUS: 9,
  UNITS: 10,
  UNSIGNED_VALUE: 11,
  LIFE_SAFETY_MODE: 12,
  LIFE_SAFETY_STATE: 13
};