// // -------------------------------------------------------------------------- // Gurux Ltd // // // // Filename: $HeadURL$ // // Version: $Revision$, // $Date$ // $Author$ // // Copyright (c) Gurux Ltd // //--------------------------------------------------------------------------- // // DESCRIPTION // // This file is a part of Gurux Device Framework. // // Gurux Device Framework is Open Source software; you can redistribute it // and/or modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; version 2 of the License. // Gurux Device Framework is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // This code is licensed under the GNU General Public License v2. // Full text may be retrieved at http://www.gnu.org/licenses/gpl-2.0.txt //--------------------------------------------------------------------------- #ifndef ENUMS_H #define ENUMS_H #include "gxignore.h" #ifdef __cplusplus extern "C" { #endif // Server sender frame sequence starting number. // This buffer is also used for save challenge. #define PDU_MAX_HEADER_SIZE 70 #define CIPHERING_HEADER_SIZE 22 //7 + 12 + 3 typedef enum { DLMS_ASSOCIATION_RESULT_ACCEPTED = 0, DLMS_ASSOCIATION_RESULT_PERMANENT_REJECTED = 1, DLMS_ASSOCIATION_RESULT_TRANSIENT_REJECTED = 2 } DLMS_ASSOCIATION_RESULT; typedef enum { //Connection succeeded. DLMS_SOURCE_DIAGNOSTIC_NONE = 0, //Connection failed. No reason is given. DLMS_SOURCE_DIAGNOSTIC_NO_REASON_GIVEN = 1, //Connection failed. Application context name is not supported. DLMS_SOURCE_DIAGNOSTIC_APPLICATION_CONTEXT_NAME_NOT_SUPPORTED = 2, //Client system title is missing. DLMS_SOURCE_DIAGNOSTIC_CALLING_AP_TITLE_NOT_RECOGNIZED = 3, //Connection failed. No reason is given. DLMS_SOURCE_DIAGNOSTIC_CALLING_AP_INVOCATION_IDENTIFIER_NOT_RECOGNIZED = 4, //Connection failed. Calling AE qualifier not recognized. DLMS_SOURCE_DIAGNOSTIC_CALLING_AE_QUALIFIER_NOT_RECOGNIZED = 5, //Connection failed. Calling AE invocation identifier not recognized. DLMS_SOURCE_DIAGNOSTIC_CALLING_AE_INVOCATION_IDENTIFIER_NOT_RECOGNIZED = 6, //Connection failed. Called AP title not recognized. DLMS_SOURCE_DIAGNOSTIC_CALLED_AP_TITLE_NOT_RECOGNIZED = 7, //Connection failed. Called AP invocation identifier not recognized DLMS_SOURCE_DIAGNOSTIC_CALLED_AP_INVOCATION_IDENTIFIER_NOT_RECOGNIZED = 8, //Connection failed. Called AE qualifier not recognized. DLMS_SOURCE_DIAGNOSTIC_CALLED_AE_QUALIFIER_NOT_RECOGNIZED = 9, //Connection failed. Called AE invocation identifier not recognized. DLMS_SOURCE_DIAGNOSTIC_CALLED_AE_INVOCATION_IDENTIFIER_NOT_RECOGNIZED = 10, //Connection failed. Authentication mechanism name not recognised. DLMS_SOURCE_DIAGNOSTIC_AUTHENTICATION_MECHANISM_NAME_NOT_RECOGNISED = 11, //Connection failed. Authentication mechanism name required. DLMS_SOURCE_DIAGNOSTIC_AUTHENTICATION_MECHANISM_NAME_REQUIRED = 12, //Connection failed. Authentication failure. DLMS_SOURCE_DIAGNOSTIC_AUTHENTICATION_FAILURE = 13, //Connection failed. Authentication required. DLMS_SOURCE_DIAGNOSTIC_AUTHENTICATION_REQUIRED = 14 } DLMS_SOURCE_DIAGNOSTIC; typedef enum { DLMS_ACSE_SERVICE_PROVIDER_NULL = 0, DLMS_ACSE_SERVICE_PROVIDER_NO_REASON_GIVEN = 1, DLMS_ACSE_SERVICE_PROVIDER_NO_COMMON_ACSE_VERSION = 2 }DLMS_ACSE_SERVICE_PROVIDER; // Defines whether or not the device has been assigned an address // since last power up of the device. typedef enum { // Not assigned an address yet. DLMS_ADDRESS_STATE_NONE, // Assigned an address either by manual setting, or by automated method. DLMS_ADDRESS_STATE_ASSIGNED } DLMS_ADDRESS_STATE; // Security policy Enforces authentication and/or encryption algorithm provided with security_suite. typedef enum { /* * Security is not used. */ DLMS_SECURITY_POLICY_NOTHING = 0, /* All messages to be authenticated. This enumeration values are used in Security Setup version 0. */ DLMS_SECURITY_POLICY_AUTHENTICATED = 1, /* All messages to be encrypted. This enumeration values are used in Security Setup version 0. */ DLMS_SECURITY_POLICY_ENCRYPTED = 2, /* All messages to be authenticated and encrypted. This enumeration values are used in Security Setup version 0. */ DLMS_SECURITY_POLICY_AUTHENTICATED_ENCRYPTED = 3, /* * Request is authenticated. This enumeration values are used in Security Setup version 1. */ DLMS_SECURITY_POLICY_AUTHENTICATED_REQUEST = 0x4, /* * Request is encrypted. This enumeration values are used in Security Setup version 1. */ DLMS_SECURITY_POLICY_ENCRYPTED_REQUEST = 0x8, /* * Request is digitally signed. This enumeration values are used in Security Setup version 1. */ DLMS_SECURITY_POLICY_DIGITALLY_SIGNED_REQUEST = 0x10, /* * Response is authenticated. This enumeration values are used in Security Setup version 1. */ DLMS_SECURITY_POLICY_AUTHENTICATED_RESPONSE = 0x20, /* * Response is encrypted. This enumeration values are used in Security Setup version 1. */ DLMS_SECURITY_POLICY_ENCRYPTED_RESPONSE = 0x40, /* * Response is digitally signed. This enumeration values are used in Security Setup version 1. */ DLMS_SECURITY_POLICY_DIGITALLY_SIGNED_RESPONSE = 0x80 } DLMS_SECURITY_POLICY; //Security suite Specifies authentication, encryption and key wrapping algorithm. typedef enum { /* AES-GCM-128 for authenticated encryption and AES-128 for key wrapping. */ DLMS_SECURITY_SUITE_V0 = 0, /* AES-GCM-128 authenticated encryption, ECDSA P-256 digital signature, ECDH P-256 key agreement, SHA-256 hash, V.44 compression and AES-128 key wrap. */ DLMS_SECURITY_SUITE_V1 = 1, /* AES-GCM-256 authenticated encryption, ECDSA P-384 digital signature, ECDH P-384 key agreement, SHA-384 hash, V.44 compression and AES-256 key wrap */ DLMS_SECURITY_SUITE_V2 = 2 } DLMS_SECURITY_SUITE; typedef enum { DLMS_SERVICE_TYPE_TCP = 0, DLMS_SERVICE_TYPE_UDP = 1, DLMS_SERVICE_TYPE_FTP = 2, DLMS_SERVICE_TYPE_SMTP = 3, DLMS_SERVICE_TYPE_SMS = 4, DLMS_SERVICE_TYPE_HDLC = 5, DLMS_SERVICE_TYPE_M_BUS = 6, DLMS_SERVICE_TYPE_ZIG_BEE = 7 } DLMS_SERVICE_TYPE; typedef enum { DLMS_MESSAGE_TYPE_COSEM_APDU = 0, DLMS_MESSAGE_TYPE_COSEM_APDU_XML = 1, DLMS_MESSAGE_TYPE_MANUFACTURER_SPESIFIC = 128 } DLMS_MESSAGE_TYPE; typedef enum { DLMS_CLOCK_STATUS_OK = 0x0, DLMS_CLOCK_STATUS_INVALID_VALUE = 0x1, DLMS_CLOCK_STATUS_DOUBTFUL_VALUE = 0x2, DLMS_CLOCK_STATUS_DIFFERENT_CLOCK_BASE = 0x4, DLMS_CLOCK_STATUS_RESERVED1 = 0x8, DLMS_CLOCK_STATUS_RESERVED2 = 0x10, DLMS_CLOCK_STATUS_RESERVED3 = 0x20, DLMS_CLOCK_STATUS_RESERVED4 = 0x40, DLMS_CLOCK_STATUS_DAYLIGHT_SAVE_ACTIVE = 0x80, //Skip clock status on write. DLMS_CLOCK_STATUS_SKIP = 0xFF } DLMS_CLOCK_STATUS; // DataType extra info. typedef enum { // No extra info. DLMS_DATE_TIME_EXTRA_INFO_NONE = 0x0, // Daylight savings begin. DLMS_DATE_TIME_EXTRA_INFO_DST_BEGIN = 0x1, // Daylight savings end. DLMS_DATE_TIME_EXTRA_INFO_DST_END = 0x2, // Last day of month. DLMS_DATE_TIME_EXTRA_INFO_LAST_DAY = 0x4, // 2nd last day of month DLMS_DATE_TIME_EXTRA_INFO_LAST_DAY2 = 0x8, }DLMS_DATE_TIME_EXTRA_INFO; /* * Used priority. */ typedef enum { // Normal priority. DLMS_PRIORITY_NORMAL = 0, // High priority. DLMS_PRIORITY_HIGH = 1 } DLMS_PRIORITY; typedef enum { DLMS_SERVICE_CLASS_UN_CONFIRMED = 0, DLMS_SERVICE_CLASS_CONFIRMED = 1 } DLMS_SERVICE_CLASS; typedef enum tagDLMS_OBJECT_TYPE { DLMS_OBJECT_TYPE_NONE = 0, DLMS_OBJECT_TYPE_DATA = 1, DLMS_OBJECT_TYPE_REGISTER = 3, DLMS_OBJECT_TYPE_EXTENDED_REGISTER = 4, DLMS_OBJECT_TYPE_DEMAND_REGISTER = 5, DLMS_OBJECT_TYPE_REGISTER_ACTIVATION = 6, DLMS_OBJECT_TYPE_PROFILE_GENERIC = 7, DLMS_OBJECT_TYPE_CLOCK = 8, #ifndef DLMS_IGNORE_SCRIPT_TABLE DLMS_OBJECT_TYPE_SCRIPT_TABLE = 9, #endif //DLMS_IGNORE_SCRIPT_TABLE #ifndef DLMS_IGNORE_SCHEDULE DLMS_OBJECT_TYPE_SCHEDULE = 10, #endif //DLMS_IGNORE_SCHEDULE DLMS_OBJECT_TYPE_SPECIAL_DAYS_TABLE = 11, DLMS_OBJECT_TYPE_ASSOCIATION_SHORT_NAME = 12, DLMS_OBJECT_TYPE_ASSOCIATION_LOGICAL_NAME = 15, DLMS_OBJECT_TYPE_SAP_ASSIGNMENT = 17, DLMS_OBJECT_TYPE_IMAGE_TRANSFER = 18, DLMS_OBJECT_TYPE_IEC_LOCAL_PORT_SETUP = 19, DLMS_OBJECT_TYPE_ACTIVITY_CALENDAR = 20, DLMS_OBJECT_TYPE_REGISTER_MONITOR = 21, DLMS_OBJECT_TYPE_ACTION_SCHEDULE = 22, DLMS_OBJECT_TYPE_IEC_HDLC_SETUP = 23, DLMS_OBJECT_TYPE_IEC_TWISTED_PAIR_SETUP = 24, DLMS_OBJECT_TYPE_MBUS_SLAVE_PORT_SETUP = 25, DLMS_OBJECT_TYPE_UTILITY_TABLES = 26, DLMS_OBJECT_TYPE_MODEM_CONFIGURATION = 27, #ifndef DLMS_IGNORE_SCRIPT_AUTO_ANSWER DLMS_OBJECT_TYPE_AUTO_ANSWER = 28, #endif //DLMS_IGNORE_SCRIPT_AUTO_ANSWER #ifndef DLMS_IGNORE_SCRIPT_AUTO_CONNECT DLMS_OBJECT_TYPE_AUTO_CONNECT = 29, #endif //DLMS_IGNORE_SCRIPT_AUTO_CONNECT DLMS_OBJECT_TYPE_TCP_UDP_SETUP = 41, DLMS_OBJECT_TYPE_IP4_SETUP = 42, DLMS_OBJECT_TYPE_MAC_ADDRESS_SETUP = 43, DLMS_OBJECT_TYPE_PPP_SETUP = 44, DLMS_OBJECT_TYPE_GPRS_SETUP = 45, DLMS_OBJECT_TYPE_SMTP_SETUP = 46, DLMS_OBJECT_TYPE_GSM_DIAGNOSTIC = 47, DLMS_OBJECT_TYPE_IP6_SETUP = 48, DLMS_OBJECT_TYPE_REGISTER_TABLE = 61, DLMS_OBJECT_TYPE_COMPACT_DATA = 62, DLMS_OBJECT_TYPE_STATUS_MAPPING = 63, DLMS_OBJECT_TYPE_SECURITY_SETUP = 64, DLMS_OBJECT_TYPE_DISCONNECT_CONTROL = 70, DLMS_OBJECT_TYPE_LIMITER = 71, DLMS_OBJECT_TYPE_MBUS_CLIENT = 72, DLMS_OBJECT_TYPE_PUSH_SETUP = 40, /** * S-FSK Phy MAC Setup */ DLMS_OBJECT_TYPE_SFSK_PHY_MAC_SETUP = 50, /* * S-FSK Active initiator. */ DLMS_OBJECT_TYPE_SFSK_ACTIVE_INITIATOR = 51, /* * S-FSK MAC synchronization timeouts */ DLMS_OBJECT_TYPE_SFSK_MAC_SYNCHRONIZATION_TIMEOUTS = 52, /* * S-FSK MAC Counters. */ DLMS_OBJECT_TYPE_SFSK_MAC_COUNTERS = 53, /* * IEC 61334-4-32 LLC setup. */ DLMS_OBJECT_TYPE_IEC_61334_4_32_LLC_SETUP = 55, /* * S-FSK Reporting system list. */ DLMS_OBJECT_TYPE_SFSK_REPORTING_SYSTEM_LIST = 56, /* * ISO/IEC 8802-2 LLC Type 1 setup. */ DLMS_OBJECT_TYPE_IEC_8802_LLC_TYPE1_SETUP = 57, /* * ISO/IEC 8802-2 LLC Type 2 setup. */ DLMS_OBJECT_TYPE_IEC_8802_LLC_TYPE2_SETUP = 58, /* * ISO/IEC 8802-2 LLC Type 3 setup. */ DLMS_OBJECT_TYPE_IEC_8802_LLC_TYPE3_SETUP = 59, DLMS_OBJECT_TYPE_WIRELESS_MODE_Q_CHANNEL = 73, DLMS_OBJECT_TYPE_MBUS_MASTER_PORT_SETUP = 74, DLMS_OBJECT_TYPE_MBUS_PORT_SETUP = 76, DLMS_OBJECT_TYPE_MBUS_DIAGNOSTIC = 77, DLMS_OBJECT_TYPE_PARAMETER_MONITOR = 65, /* * Arbitrator */ DLMS_OBJECT_TYPE_ARBITRATOR = 68, /* * Addresses that are provided by the base node during the opening of the * convergence layer. */ DLMS_OBJECT_TYPE_LLC_SSCS_SETUP = 80, /* * Counters related to the physical layers exchanges. */ DLMS_OBJECT_TYPE_PRIME_NB_OFDM_PLC_PHYSICAL_LAYER_COUNTERS = 81, /* * A necessary parameters to set up and manage the PRIME NB OFDM PLC MAC * layer. */ DLMS_OBJECT_TYPE_PRIME_NB_OFDM_PLC_MAC_SETUP = 82, /* * Functional behaviour of MAC. */ DLMS_OBJECT_TYPE_PRIME_NB_OFDM_PLC_MAC_FUNCTIONAL_PARAMETERS = 83, /* * Statistical information on the operation of the MAC layer for management * purposes. */ DLMS_OBJECT_TYPE_PRIME_NB_OFDM_PLC_MAC_COUNTERS = 84, /* * Parameters related to the management of the devices connected to the * network. */ DLMS_OBJECT_TYPE_PRIME_NB_OFDM_PLC_MAC_NETWORK_ADMINISTRATION_DATA = 85, /* * Identification information related to administration and maintenance of * PRIME NB OFDM PLC devices. */ DLMS_OBJECT_TYPE_PRIME_NB_OFDM_PLC_APPLICATIONS_IDENTIFICATION = 86, /* * G3-PLC MAC layer counters */ DLMS_OBJECT_TYPE_G3_PLC_MAC_LAYER_COUNTERS = 90, /* * G3-PLC MAC setup. */ DLMS_OBJECT_TYPE_G3_PLC_MAC_SETUP = 91, /* * G3-PLC 6LoWPAN. */ DLMS_OBJECT_TYPE_G3_PLC_6LO_WPAN = 92, /* * Function control. */ DLMS_OBJECT_TYPE_FUNCTION_CONTROL = 122, /* * Configure a ZigBee PRO device with information necessary to create or * join the network. */ DLMS_OBJECT_TYPE_ZIG_BEE_SAS_STARTUP = 101, /* * Configure the behavior of a ZigBee PRO device on joining or loss of * connection to the network. */ DLMS_OBJECT_TYPE_ZIG_BEE_SAS_JOIN = 102, /* * Configure the fragmentation feature of ZigBee PRO transport layer. */ DLMS_OBJECT_TYPE_ZIG_BEE_SAS_APS_FRAGMENTATION = 103, DLMS_OBJECT_TYPE_ZIG_BEE_NETWORK_CONTROL = 104, DLMS_OBJECT_TYPE_DATA_PROTECTION = 30, DLMS_OBJECT_TYPE_ACCOUNT = 111, DLMS_OBJECT_TYPE_CREDIT = 112, DLMS_OBJECT_TYPE_CHARGE = 113, DLMS_OBJECT_TYPE_TOKEN_GATEWAY = 115, DLMS_OBJECT_TYPE_ARRAY_MANAGER = 123, // Tariff Plan (Piano Tariffario) is used in Italian standard UNI/TS 11291-11. DLMS_OBJECT_TYPE_TARIFF_PLAN = 8192, } DLMS_OBJECT_TYPE; typedef enum { HDLC_INFO_MAX_INFO_TX = 0x5, HDLC_INFO_MAX_INFO_RX = 0x6, HDLC_INFO_WINDOW_SIZE_TX = 0x7, HDLC_INFO_WINDOW_SIZE_RX = 0x8 } HDLC_INFO; typedef enum { DEFAULT_MAX_INFO_TX = 128, DEFAULT_MAX_INFO_RX = 128, DEFAULT_MAX_WINDOW_SIZE_TX = 1, DEFAULT_MAX_WINDOW_SIZE_RX = 1 } DEFAULT_MAX; typedef enum { DLMS_DATA_TYPE_NONE = 0, DLMS_DATA_TYPE_BOOLEAN = 3, DLMS_DATA_TYPE_BIT_STRING = 4, DLMS_DATA_TYPE_INT32 = 5, DLMS_DATA_TYPE_UINT32 = 6, DLMS_DATA_TYPE_OCTET_STRING = 9, DLMS_DATA_TYPE_STRING = 10, DLMS_DATA_TYPE_BINARY_CODED_DESIMAL = 13, DLMS_DATA_TYPE_STRING_UTF8 = 12, DLMS_DATA_TYPE_INT8 = 15, DLMS_DATA_TYPE_INT16 = 16, DLMS_DATA_TYPE_UINT8 = 17, DLMS_DATA_TYPE_UINT16 = 18, DLMS_DATA_TYPE_INT64 = 20, DLMS_DATA_TYPE_UINT64 = 21, DLMS_DATA_TYPE_ENUM = 22, DLMS_DATA_TYPE_FLOAT32 = 23, DLMS_DATA_TYPE_FLOAT64 = 24, DLMS_DATA_TYPE_DATETIME = 25, DLMS_DATA_TYPE_DATE = 26, DLMS_DATA_TYPE_TIME = 27, DLMS_DATA_TYPE_ARRAY = 1, DLMS_DATA_TYPE_STRUCTURE = 2, DLMS_DATA_TYPE_COMPACT_ARRAY = 19, DLMS_DATA_TYPE_BYREF = 0x80 } DLMS_DATA_TYPE; typedef enum { // // No access. // DLMS_ACCESS_MODE_NONE = 0, // // The client is allowed only reading from the server. // DLMS_ACCESS_MODE_READ = 1, // // The client is allowed only writing to the server. // DLMS_ACCESS_MODE_WRITE = 2, // // The client is allowed both reading from the server and writing to it. // DLMS_ACCESS_MODE_READ_WRITE = 3, DLMS_ACCESS_MODE_AUTHENTICATED_READ = 4, DLMS_ACCESS_MODE_AUTHENTICATED_WRITE = 5, DLMS_ACCESS_MODE_AUTHENTICATED_READ_WRITE = 6 } DLMS_ACCESS_MODE; /*The DLMS_METHOD_ACCESS_MODE enumerates the method access modes.*/ typedef enum { // No access. DLMS_METHOD_ACCESS_MODE_NONE = 0x0, // Access. DLMS_METHOD_ACCESS_MODE_ACCESS = 0x1, // Authenticated Access. DLMS_METHOD_ACCESS_MODE_AUTHENTICATED_ACCESS = 0x2, // Authenticated request is allowed. DLMS_METHOD_ACCESS_MODE_AUTHENTICATED_REQUEST = 0x4, // Encrypted request is allowed. DLMS_METHOD_ACCESS_MODE_ENCRYPTED_REQUEST = 0x8, // Digitally signed request is allowed. DLMS_METHOD_ACCESS_MODE_DIGITALLY_SIGNED_REQUEST = 0x10, // Authenticated response is allowed. DLMS_METHOD_ACCESS_MODE_AUTHENTICATED_RESPONSE = 0x20, // Encrypted response is allowed. DLMS_METHOD_ACCESS_MODE_ENCRYPTED_RESPONSE = 0x40, // Digitally signed response is allowed. DLMS_METHOD_ACCESS_MODE_DIGITALLY_SIGNED_RESPONSE = 0x80 } DLMS_METHOD_ACCESS_MODE; typedef enum { DLMS_ASSOCIATION_STATUS_NON_ASSOCIATED = 0, DLMS_ASSOCIATION_STATUS_ASSOCIATION_PENDING = 1, DLMS_ASSOCIATION_STATUS_ASSOCIATED = 2 } DLMS_ASSOCIATION_STATUS; /* * Enumerates Action request types. */ typedef enum { /* * Normal action. */ DLMS_ACTION_COMMAND_TYPE_NORMAL = 1, /* * Next block. */ DLMS_ACTION_COMMAND_TYPE_NEXT_BLOCK = 2, /* * Action with list. */ DLMS_ACTION_COMMAND_TYPE_WITH_LIST = 3, /* * Action with first block. */ DLMS_ACTION_COMMAND_TYPE_WITH_FIRST_BLOCK = 4, /* * Action with list and first block. */ DLMS_ACTION_COMMAND_TYPE_WITH_LIST_AND_FIRST_BLOCK = 5, /* * Action with block. */ DLMS_ACTION_COMMAND_TYPE_WITH_BLOCK = 6 } DLMS_ACTION_COMMAND_TYPE; typedef enum { /* If this option is present, the device shall be allowed to send security, compartmentation, handling restrictions and TCC (closed user group) parameters within its IP Datagrams. The value of the IP-Option- Length Field must be 11, and the IP-Option-Data shall contain the value of the Security, Compartments, Handling Restrictions and Transmission Control Code values, as specified in STD0005 / RFC791. */ DLMS_IP_OPTION_TYPE_SECURITY = 0x82, /* If this option is present, the device shall supply routing information to be used by the gateways in forwarding the datagram to the destination, and to record the route information. The IP-Option-length and IP-Option-Data values are specified in STD0005 / RFC 791. */ DLMS_IP_OPTION_TYPE_LOOSE_SOURCE_AND_RECORD_ROUTE = 0x83, /* If this option is present, the device shall supply routing information to be used by the gateways in forwarding the datagram to the destination, and to record the route information. The IP-Option-length and IP-Option-Data values are specified in STD0005 / RFC 791. */ DLMS_IP_OPTION_TYPE_STRICT_SOURCE_AND_RECORD_ROUTE = 0x89, /* If this option is present, the device shall as well: send originated IP Datagrams with that option, providing means to record the route of these Datagrams; as a router, send routed IP Datagrams with the route option adjusted according to this option. The IP-Option-length and IP-Option-Data values are specified in STD0005 / RFC 791. */ DLMS_IP_OPTION_TYPE_RECORD_ROUTE = 0x07, /* If this option is present, the device shall as well: send originated IP Datagrams with that option, providing means to time-stamp the datagram in the route to its destination; as a router, send routed IP Datagrams with the time-stamp option adjusted according to this option. The IP-Option-length and IP-Option-Data values are specified in STD0005 / RFC 791. */ DLMS_IP_OPTION_TYPE_INTERNET_TIMESTAMP = 0x44 } DLMS_IP_OPTION_TYPE; typedef enum { /* Size of execution_time = 1. Wildcard in date allowed. */ DLMS_SINGLE_ACTION_SCHEDULE_TYPE1 = 1, /* Size of execution_time = n. All time values are the same, wildcards in date not allowed. */ DLMS_SINGLE_ACTION_SCHEDULE_TYPE2 = 2, /* Size of execution_time = n. All time values are the same, wildcards in date are allowed, */ DLMS_SINGLE_ACTION_SCHEDULE_TYPE3 = 3, /* Size of execution_time = n. Time values may be different, wildcards in date not allowed, */ DLMS_SINGLE_ACTION_SCHEDULE_TYPE4 = 4, /* Size of execution_time = n. Time values may be different, wildcards in date are allowed */ DLMS_SINGLE_ACTION_SCHEDULE_TYPE5 = 5 } DLMS_SINGLE_ACTION_SCHEDULE_TYPE; typedef enum { DLMS_IMAGE_TRANSFER_STATUS_NOT_INITIATED, DLMS_IMAGE_TRANSFER_STATUS_INITIATED, DLMS_IMAGE_TRANSFER_STATUS_VERIFICATION_INITIATED, DLMS_IMAGE_TRANSFER_STATUS_VERIFICATION_SUCCESSFUL, DLMS_IMAGE_TRANSFER_STATUS_VERIFICATION_FAILED, DLMS_IMAGE_TRANSFER_STATUS_ACTIVATION_INITIATED, DLMS_IMAGE_TRANSFER_STATUS_ACTIVATION_SUCCESSFUL, DLMS_IMAGE_TRANSFER_STATUS_ACTIVATION_FAILED } DLMS_IMAGE_TRANSFER_STATUS; typedef enum { /* * Transport security is not used. */ DLMS_SECURITY_NONE = 0, /* * Authentication security is used. */ DLMS_SECURITY_AUTHENTICATION = 0x10, /* * Encryption security is used. */ DLMS_SECURITY_ENCRYPTION = 0x20, /* * Authentication and Encryption security are used. */ DLMS_SECURITY_AUTHENTICATION_ENCRYPTION = 0x30, } DLMS_SECURITY; typedef enum { DLMS_COUNT_TYPE_TAG = 0x1, DLMS_COUNT_TYPE_DATA = 2, DLMS_COUNT_TYPE_PACKET = 3 } DLMS_COUNT_TYPE; /* * HDLC frame types. */ typedef enum { /* * I-Frame. Information frames are used to transport user data. */ HDLC_FRAME_TYPE_I_FRAME = 0x0, /* * S-frame. Supervisory Frames are used for flow and error control. * Rejected, RNR and RR. */ HDLC_FRAME_TYPE_S_FRAME = 0x1, /* * U-frame. Unnumbered frames are used for link management. Example SNRM and * UA. */ HDLC_FRAME_TYPE_U_FRAME = 0x3 } HDLC_FRAME_TYPE; /* *BER encoding enumeration values. */ typedef enum { /* * End of Content. */ BER_TYPE_EOC = 0x00, /* * Boolean. */ BER_TYPE_BOOLEAN = 0x1, /* * Integer. */ BER_TYPE_INTEGER = 0x2, /* * Bit String. */ BER_TYPE_BIT_STRING = 0x3, /* * Octet string. */ BER_TYPE_OCTET_STRING = 0x4, /* * Null value. */ BER_TYPE_NULL = 0x5, /* * Object identifier. */ BER_TYPE_OBJECT_IDENTIFIER = 0x6, /* * Object Descriptor. */ BER_TYPE_OBJECT_DESCRIPTOR = 7, /* * External */ BER_TYPE_EXTERNAL = 8, /* * Real (float). */ BER_TYPE_REAL = 9, /* * Enumerated. */ BER_TYPE_ENUMERATED = 10, /* * Utf8 String. */ BER_TYPE_UTF8_STRING = 12, /* * Numeric string. */ BER_TYPE_NUMERIC_STRING = 18, /* * Printable string. */ BER_TYPE_PRINTABLE_STRING = 19, /* * Teletex string. */ BER_TYPE_TELETEX_STRING = 20, /* * Videotex string. */ BER_TYPE_VIDEOTEX_STRING = 21, /* * Ia5 string */ BER_TYPE_IA5_STRING = 22, /* * Utc time. */ BER_TYPE_UTC_TIME = 23, /* * Generalized time. */ BER_TYPE_GENERALIZED_TIME = 24, /* * Graphic string. */ BER_TYPE_GRAPHIC_STRING = 25, /* * Visible string. */ BER_TYPE_VISIBLE_STRING = 26, /* * General string. */ BER_TYPE_GENERAL_STRING = 27, /* * Universal string. */ BER_TYPE_UNIVERSAL_STRING = 28, /* * Bmp string. */ BER_TYPE_BMP_STRING = 30, /* * Application class. */ BER_TYPE_APPLICATION = 0x40, /* * Context class. */ BER_TYPE_CONTEXT = 0x80, /* * Private class. */ BER_TYPE_PRIVATE = 0xc0, /* * Constructed. */ BER_TYPE_CONSTRUCTED = 0x20 } BER_TYPE; /* * APDU types. */ typedef enum { /* * IMPLICIT BIT STRING {version1 = 0} DEFAULT {version1} */ PDU_TYPE_PROTOCOL_VERSION = 0, /* * Application-context-name */ PDU_TYPE_APPLICATION_CONTEXT_NAME = 1, /* * AP-title OPTIONAL */ PDU_TYPE_CALLED_AP_TITLE = 2, /* * AE-qualifier OPTIONAL. */ PDU_TYPE_CALLED_AE_QUALIFIER = 3, /* * AP-invocation-identifier OPTIONAL. */ PDU_TYPE_CALLED_AP_INVOCATION_ID = 4, /* * AE-invocation-identifier OPTIONAL */ PDU_TYPE_CALLED_AE_INVOCATION_ID = 5, /* * AP-title OPTIONAL */ PDU_TYPE_CALLING_AP_TITLE = 6, /* * AE-qualifier OPTIONAL */ PDU_TYPE_CALLING_AE_QUALIFIER = 7, /* * AP-invocation-identifier OPTIONAL */ PDU_TYPE_CALLING_AP_INVOCATION_ID = 8, /* * AE-invocation-identifier OPTIONAL */ PDU_TYPE_CALLING_AE_INVOCATION_ID = 9, /* * The following field shall not be present if only the kernel is used. */ PDU_TYPE_SENDER_ACSE_REQUIREMENTS = 10, /* * The following field shall only be present if the authentication * functional unit is selected. */ PDU_TYPE_MECHANISM_NAME = 11, /* * The following field shall only be present if the authentication * functional unit is selected. */ PDU_TYPE_CALLING_AUTHENTICATION_VALUE = 12, /* * Implementation-data. */ PDU_TYPE_IMPLEMENTATION_INFORMATION = 29, /* * Association-information OPTIONAL */ PDU_TYPE_USER_INFORMATION = 30 } PDU_TYPE; /* * HDLC control frame types. */ typedef enum { /* * Receive is ready. */ HDLC_CONTROL_FRAME_RECEIVE_READY = 0, /* * Receive is not ready. */ HDLC_CONTROL_FRAME_RECEIVE_NOT_READY = 0x1, /* * Frame is rejected. */ HDLC_CONTROL_FRAME_REJECT = 2, /* * Frame is selective rejected. Not all meters support this. */ HDLC_CONTROL_FRAME_SELECTIVE_REJECT = 3 } HDLC_CONTROL_FRAME; /* * Authentication enumerates the authentication levels. */ typedef enum { /* * No authentication is used. */ DLMS_AUTHENTICATION_NONE = 0, /* * Low authentication is used. */ DLMS_AUTHENTICATION_LOW = 1, #ifndef DLMS_IGNORE_AES /* * High authentication is used. Because DLMS/COSEM specification does not * specify details of the HLS mechanism we have implemented Indian standard. * Texas Instruments also uses this. */ DLMS_AUTHENTICATION_HIGH = 2, #endif //DLMS_IGNORE_AES /* * High authentication is used. Password is hashed with MD5. */ DLMS_AUTHENTICATION_HIGH_MD5 = 3, /* * High authentication is used. Password is hashed with SHA1. */ DLMS_AUTHENTICATION_HIGH_SHA1 = 4, #ifndef DLMS_IGNORE_HIGH_GMAC /* * High authentication is used. Password is hashed with GMAC. */ DLMS_AUTHENTICATION_HIGH_GMAC = 5, #endif //DLMS_IGNORE_HIGH_GMAC /* * High authentication is used. Password is hashed with SHA-256. */ DLMS_AUTHENTICATION_HIGH_SHA256 = 6, /* * High authentication is used. Password is hashed with ECDSA. */ DLMS_AUTHENTICATION_HIGH_ECDSA = 7 } DLMS_AUTHENTICATION; //Interface type that is used. typedef enum { //General DLMS_INTERFACE_TYPE_HDLC = 0, // IEC 62056-47 COSEM transport layers for IPv4 networks DLMS_INTERFACE_TYPE_WRAPPER = 0x1, /** * Plain PDU is returned. */ DLMS_INTERFACE_TYPE_PDU, /** * Wireless M-Bus frame. */ DLMS_INTERFACE_TYPE_WIRELESS_MBUS, /** * IEC 62056-21 E-Mode is used to initialize communication before moving to * HDLC protocol. */ DLMS_INTERFACE_TYPE_HDLC_WITH_MODE_E, /** * PLC Logical link control (LLC) profile is used with IEC 61334-4-32 * connectionless LLC sublayer. * * Blue Book: 10.4.4.3.3 The connectionless LLC sublayer. */ DLMS_INTERFACE_TYPE_PLC, /** * PLC Logical link control (LLC) profile is used with HDLC. * * Blue Book: 10.4.4.3.4 The HDLC based LLC sublayer. */ DLMS_INTERFACE_TYPE_PLC_HDLC, /** * LowPower Wide Area Networks (LPWAN) profile is used. */ DLMS_INTERFACE_TYPE_LPWAN, /** * Wi-SUN FAN mesh network is used. */ DLMS_INTERFACE_TYPE_WI_SUN, /** * OFDM PLC PRIME is defined in IEC 62056-8-4. */ DLMS_INTERFACE_TYPE_PLC_PRIME } DLMS_INTERFACE_TYPE; typedef enum { DLMS_DATA_REQUEST_TYPES_NONE = 0x0, DLMS_DATA_REQUEST_TYPES_FRAME = 0x1, DLMS_DATA_REQUEST_TYPES_BLOCK = 0x2, DLMS_DATA_REQUEST_TYPES_GBT = 0x4 } DLMS_DATA_REQUEST_TYPES; /* * DLMS commands. */ typedef enum { /* * No command to execute. */ DLMS_COMMAND_NONE = 0, /* * Initiate request. */ DLMS_COMMAND_INITIATE_REQUEST = 0x1, /* * Initiate response. */ DLMS_COMMAND_INITIATE_RESPONSE = 0x8, #ifndef DLMS_IGNORE_ASSOCIATION_SHORT_NAME /* * Read request. */ DLMS_COMMAND_READ_REQUEST = 0x5, /* * Read response. */ DLMS_COMMAND_READ_RESPONSE = 0xC, /* * Write request. */ DLMS_COMMAND_WRITE_REQUEST = 0x6, /* * Write response. */ DLMS_COMMAND_WRITE_RESPONSE = 0xD, #endif //DLMS_IGNORE_ASSOCIATION_SHORT_NAME /* * Get request. */ DLMS_COMMAND_GET_REQUEST = 0xC0, /* * Get response. */ DLMS_COMMAND_GET_RESPONSE = 0xC4, /* * Set request. */ DLMS_COMMAND_SET_REQUEST = 0xC1, /* * Set response. */ DLMS_COMMAND_SET_RESPONSE = 0xC5, /* * Action request. */ DLMS_COMMAND_METHOD_REQUEST = 0xC3, /* * Action response. */ DLMS_COMMAND_METHOD_RESPONSE = 0xC7, /* HDLC Disconnect Mode. Responder for Disconnect Mode request. */ DLMS_COMMAND_DISCONNECT_MODE = 0x1f, /* * HDLC Unacceptable Frame. */ DLMS_COMMAND_REJECTED = 0x97, /* * SNRM request. */ DLMS_COMMAND_SNRM = 0x93, /* * UA request. */ DLMS_COMMAND_UA = 0x73, /* * AARQ request. */ DLMS_COMMAND_AARQ = 0x60, /* * AARE request. */ DLMS_COMMAND_AARE = 0x61, /* * Disconnect request for HDLC framing. */ DLMS_COMMAND_DISC = 0x53, /* * Disconnect request. */ DLMS_COMMAND_RELEASE_REQUEST = 0x62, /* * Disconnect response. */ DLMS_COMMAND_RELEASE_RESPONSE = 0x63, /* * Confirmed Service Error. */ DLMS_COMMAND_CONFIRMED_SERVICE_ERROR = 0x0E, /* * Exception Response. */ DLMS_COMMAND_EXCEPTION_RESPONSE = 0xD8, /* * General Block Transfer. */ DLMS_COMMAND_GENERAL_BLOCK_TRANSFER = 0xE0, /* * Access Request. */ DLMS_COMMAND_ACCESS_REQUEST = 0xD9, /* * Access Response. */ DLMS_COMMAND_ACCESS_RESPONSE = 0xDA, /* * Data Notification request. */ DLMS_COMMAND_DATA_NOTIFICATION = 0x0F, /* * Event Notification request. */ DLMS_COMMAND_EVENT_NOTIFICATION = 0xC2, /* * Information Report request. */ DLMS_COMMAND_INFORMATION_REPORT = 0x18, #ifndef DLMS_IGNORE_HIGH_GMAC /* * Glo get request. */ DLMS_COMMAND_GLO_GET_REQUEST = 0xC8, /* * Glo get response. */ DLMS_COMMAND_GLO_GET_RESPONSE = 0xCC, /* * Glo set request. */ DLMS_COMMAND_GLO_SET_REQUEST = 0xC9, /* * Glo set response. */ DLMS_COMMAND_GLO_SET_RESPONSE = 0xCD, /* * Glo event notification request. */ DLMS_COMMAND_GLO_EVENT_NOTIFICATION_REQUEST = 0xCA, /* * Glo method request. */ DLMS_COMMAND_GLO_METHOD_REQUEST = 0xCB, /* * Glo method response. */ DLMS_COMMAND_GLO_METHOD_RESPONSE = 0xCF, /* * Glo Initiate request. */ DLMS_COMMAND_GLO_INITIATE_REQUEST = 0x21, /* * Glo read request. */ DLMS_COMMAND_GLO_READ_REQUEST = 37, /* * Glo write request. */ DLMS_COMMAND_GLO_WRITE_REQUEST = 38, /* * Glo Initiate response. */ DLMS_COMMAND_GLO_INITIATE_RESPONSE = 40, /* * Glo read response. */ DLMS_COMMAND_GLO_READ_RESPONSE = 44, /* * Glo write response. */ DLMS_COMMAND_GLO_WRITE_RESPONSE = 45, /* * Glo Confirmed Service Error.. */ DLMS_COMMAND_GLO_CONFIRMED_SERVICE_ERROR = 46, /* * General GLO ciphering. */ DLMS_COMMAND_GENERAL_GLO_CIPHERING = 0xDB, /* * General DED ciphering. */ DLMS_COMMAND_GENERAL_DED_CIPHERING = 0xDC, /* * General ciphering. */ DLMS_COMMAND_GENERAL_CIPHERING = 0xDD, /* * Ded get request. */ DLMS_COMMAND_DED_GET_REQUEST = 0xD0, /* * Ded get response. */ DLMS_COMMAND_DED_GET_RESPONSE = 0xD4, /* * Ded set request. */ DLMS_COMMAND_DED_SET_REQUEST = 0xD1, /* * Ded set response. */ DLMS_COMMAND_DED_SET_RESPONSE = 0xD5, /* * Ded event notification request. */ DLMS_COMMAND_DED_EVENT_NOTIFICATION = 0xD2, /* * Ded method request. */ DLMS_COMMAND_DED_METHOD_REQUEST = 0xD3, /* * Ded method response. */ DLMS_COMMAND_DED_METHOD_RESPONSE = 0xD7, /* * Ded read request. */ DLMS_COMMAND_DED_READ_REQUEST = 69, /* * Ded write request. */ DLMS_COMMAND_DED_WRITE_REQUEST = 70, /* * Ded read response. */ DLMS_COMMAND_DED_READ_RESPONSE = 76, /* * Ded write response. */ DLMS_COMMAND_DED_WRITE_RESPONSE = 77, /* * Glo Confirmed Service Error.. */ DLMS_COMMAND_DED_CONFIRMED_SERVICE_ERROR = 78, /*Ded initiate request.*/ DLMS_COMMAND_DED_INITIATE_REQUEST = 65, /*Ded initiate response.*/ DLMS_COMMAND_DED_INITIATE_RESPONSE = 72, /*Unnumbered information UI frame*/ DLMS_COMMAND_UNNUMBERED_INFORMATION_UI = 0x3, /*Final unnumbered information UI*/ DLMS_COMMAND_UNNUMBERED_INFORMATION_UI_FINAL = 0x13, #endif //DLMS_IGNORE_HIGH_GMAC /* * Request message from client to gateway. */ DLMS_COMMAND_GATEWAY_REQUEST = 0xE6, /* * Response message from gateway to client. */ DLMS_COMMAND_GATEWAY_RESPONSE = 0xE7, // PLC discover request. DLMS_COMMAND_DISCOVER_REQUEST = 0x1D, // PLC discover report. DLMS_COMMAND_DISCOVER_REPORT = 0x1E, // PLC register request. DLMS_COMMAND_REGISTER_REQUEST = 0x1C, // PLC ping request. DLMS_COMMAND_PING_REQUEST = 0x19, // PLC ping response. DLMS_COMMAND_PING_RESPONSE = 0x1A, // PLC repeat call request. DLMS_COMMAND_REPEAT_CALL_REQUEST = 0x1F } DLMS_COMMAND; /* * Confirmed service error tells when error has occurred. */ typedef enum { /* * Error has occurred on initialize. */ DLMS_CONFIRMED_SERVICE_ERROR_INITIATE_ERROR = 1, /* * Error has occurred on read. */ DLMS_CONFIRMED_SERVICE_ERROR_READ = 5, /* * Error has occurred on write. */ DLMS_CONFIRMED_SERVICE_ERROR_WRITE = 6 } DLMS_CONFIRMED_SERVICE_ERROR; /* * Access describes access errors. */ typedef enum { /* * Other error. */ DLMS_ACCESS_OTHER = 0, /* * Scope of access violated. */ DLMS_ACCESS_SCOPE_OF_ACCESS_VIOLATED = 1, /* * Object access is invalid. */ DLMS_ACCESS_OBJECT_ACCESS_INVALID = 2, /* * Hardware fault. */ DLMS_ACCESS_HARDWARE_FAULT = 3, /* * Object is unavailable. */ DLMS_ACCESS_OBJECT_UNAVAILABLE = 4 } DLMS_ACCESS; /* * Application reference describes application errors. */ typedef enum { /* * Other error is occurred. */ DLMS_APPLICATION_REFERENCE_OTHER = 0, /* * Time elapsed. */ DLMS_APPLICATION_REFERENCE_TIME_ELAPSED = 1, /* * Application unreachable. */ DLMS_APPLICATION_REFERENCE_APPLICATION_UNREACHABLE = 2, /* * Application reference is invalid. */ DLMS_APPLICATION_REFERENCE_APPLICATION_REFERENCE_INVALID = 3, /* * Application context unsupported. */ DLMS_APPLICATION_REFERENCE_APPLICATION_CONTEXT_UNSUPPORTED = 4, /* * Provider communication error. */ DLMS_APPLICATION_REFERENCE_PROVIDER_COMMUNICATION_ERROR = 5, /* * Deciphering error. */ DLMS_APPLICATION_REFERENCE_DECIPHERING_ERROR = 6 } DLMS_APPLICATION_REFERENCE; /* * Definition describes definition errors. */ typedef enum { /* * Other error. */ DLMS_DEFINITION_OTHER = 0, /* * Object is Undefined. */ DLMS_DEFINITION_OBJECT_UNDEFINED = 1, /* * Object class inconsistent. */ DLMS_DEFINITION_OBJECT_CLASS_INCONSISTENT = 2, /* * Object attribute inconsistent. */ DLMS_DEFINITION_OBJECT_ATTRIBUTE_INCONSISTENT = 3 } DLMS_DEFINITION; /* * DLMS service errors. * * @author Gurux Ltd. */ typedef enum { /* * Operation is not possible */ DLMS_EXCEPTION_SERVICE_ERROR_OPERATION_NOT_POSSIBLE = 1, /* * Service is not supported. */ DLMS_EXCEPTION_SERVICE_ERROR_SERVICE_NOT_SUPPORTED = 2, /* * Other reason. */ DLMS_EXCEPTION_SERVICE_ERROR_OTHER_REASON = 3, /* * PDU is too long. */ DLMS_EXCEPTION_SERVICE_ERROR_PDU_TOO_LONG = 4, /* * Ciphering failed. */ DLMS_EXCEPTION_SERVICE_ERROR_DECIPHERING_ERROR = 5, /* * Invocation counter is invalid. */ DLMS_EXCEPTION_SERVICE_ERROR_INVOCATION_COUNTER_ERROR = 6 } DLMS_EXCEPTION_SERVICE_ERROR; /* * Hardware resource describes hardware errors. */ typedef enum { /* * Other hardware resource error. */ DLMS_HARDWARE_RESOURCE_OTHER = 0, /* * Memory is unavailable. */ DLMS_HARDWARE_RESOURCE_MEMORY_UNAVAILABLE = 1, /* * Processor resource is unavailable. */ DLMS_HARDWARE_RESOURCE_PROCESSOR_RESOURCE_UNAVAILABLE = 2, /* * Mass storage is unavailable. */ DLMS_HARDWARE_RESOURCE_MASS_STORAGE_UNAVAILABLE = 3, /* * Other resource is unavailable. */ DLMS_HARDWARE_RESOURCE_OTHER_RESOURCE_UNAVAILABLE = 4 } DLMS_HARDWARE_RESOURCE; /* * Initiate describes onitiate errors. */ typedef enum { /* * Other error. */ DLMS_INITIATE_OTHER = 0, /* * Dlms version is too low. */ DLMS_INITIATE_DLMS_VERSION_TOO_LOW = 1, /* * Incompatible conformance. */ DLMS_INITIATE_INCOMPATIBLE_CONFORMANCE = 2, /* * Pdu size is too short. */ DLMS_INITIATE_PDU_SIZE_TOOSHORT = 3, /* * Refused by the VDE handler. */ DLMS_INITIATE_REFUSED_BY_THE_VDE_HANDLER = 4 } DLMS_INITIATE; /* * LoadDataSet describes load dataset errors. */ typedef enum { /* * Other error. */ DLMS_LOAD_DATASET_OTHER = 0, /* * Primitive out of sequence. */ DLMS_LOAD_DATASET_PRIMITIVE_OUT_OF_SEQUENCE = 1, /* * Not loadable. */ DLMS_LOAD_DATASET_NOT_LOADABLE = 2, /* * Dataset size is too large. */ DLMS_LOAD_DATASET_SIZE_TOO_LARGE = 3, /* * Not awaited segment. */ DLMS_LOAD_DATASET_NOT_AWAITED_SEGMENT = 4, /* * Interpretation failure. */ DLMS_LOAD_DATASET_INTERPRETATION_FAILURE = 5, /* * Storage failure. */ DLMS_LOAD_DATASET_STORAGE_FAILURE = 6, /* * Dataset not ready. */ DLMS_LOAD_DATASET_NOT_READY = 7 } DLMS_LOAD_DATASET; /* * Task describes load task errors. */ typedef enum { /* * Other error. */ DLMS_TASK_OTHER = 0, /* * No remote control. */ DLMS_TASK_NO_REMOTE_CONTROL = 1, /* * Ti is stopped. */ DLMS_TASK_TI_STOPPED = 2, /* * TI is running. */ DLMS_TASK_TI_RUNNIN = 3, /* * TI is unusable. */ DLMS_TASK_TI_UNUSABLE = 4 } DLMS_TASK; /* * VdeState error describes Vde state errors. */ typedef enum { /* * Other error. */ DLMS_VDE_STATE_ERROR_OTHER = 0, /* * No DLMS context. */ DLMS_VDE_STATE_ERROR_NO_DLMS_CONTEXT = 1, /* * Loading dataset error. */ DLMS_VDE_STATE_ERROR_LOADING_DATASET = 2, /* * Status No change. */ DLMS_VDE_STATE_ERROR_STATUS_NO_CHANGE = 3, /* * Status Inoperable. */ DLMS_VDE_STATE_ERROR_STATUS_INOPERABLE = 4 } DLMS_VDE_STATE_ERROR; /* * Enumerates Get request and response types. */ typedef enum { /* * Normal Get. */ DLMS_GET_COMMAND_TYPE_NORMAL = 1, /* * Next data block. */ DLMS_GET_COMMAND_TYPE_NEXT_DATA_BLOCK = 2, /* * Get request with list. */ DLMS_GET_COMMAND_TYPE_WITH_LIST = 3 } DLMS_GET_COMMAND_TYPE; /* * Service describes service errors. */ typedef enum { /* * Other error. */ DLMS_SERVICE_OTHER = 0, /* * PDU size is wrong. */ DLMS_SERVICE_PDU_SIZE = 1, /* * Service is unsupported. */ DLMS_SERVICE_UNSUPPORTED = 2 } DLMS_SERVICE; /* * ServiceError enumerates service errors. */ typedef enum { /* * Application error. */ DLMS_SERVICE_ERROR_APPLICATION_REFERENCE = 0, /* * Hardware error. */ DLMS_SERVICE_ERROR_HARDWARE_RESOURCE = 1, /* * Vde state error. */ DLMS_SERVICE_ERROR_VDE_STATE_ERROR = 2, /* * Service error. */ DLMS_SERVICE_ERROR_SERVICE = 3, /* * Definition error. */ DLMS_SERVICE_ERROR_DEFINITION = 4, /* * Access error. */ DLMS_SERVICE_ERROR_ACCESS = 5, /* * Initiate error. */ DLMS_SERVICE_ERROR_INITIATE = 6, /* * LoadDataSet error. */ DLMS_SERVICE_ERROR_LOAD_DATASET = 7, /* * Task error. */ DLMS_SERVICE_ERROR_TAS = 8, /* * Other error describes manufacturer specific error code. */ DLMS_SERVICE_ERROR_OTHER_ERROR = 9 } DLMS_SERVICE_ERROR; /* * Enumerates Set request types. */ typedef enum { /* * Normal Set. */ DLMS_SET_COMMAND_TYPE_NORMAL = 1, /* * Set with first data block. */ DLMS_SET_COMMAND_TYPE_FIRST_DATABLOCK = 2, /* * Set with data block. */ DLMS_SET_COMMAND_TYPE_WITH_DATABLOCK = 3, /* * Set with list . */ DLMS_SET_COMMAND_TYPE_WITH_LIST = 4, /* * Set with list and first data block. */ DLMS_SET_COMMAND_TYPE_WITH_LIST_AND_WITH_FIRST_DATA_BLOCK = 5 } DLMS_SET_COMMAND_TYPE; /* * Enumerates single read response types. */ typedef enum { /* * Normal data. */ DLMS_SINGLE_READ_RESPONSE_DATA = 0, /* * Error has occurred on read. */ DLMS_SINGLE_READ_RESPONSE_DATA_ACCESS_ERROR = 1, /* * Return data as blocks. */ DLMS_SINGLE_READ_RESPONSE_DATA_BLOCK_RESULT = 2, /* * Return block number. */ DLMS_SINGLE_READ_RESPONSE_BLOCK_NUMBER = 3 } DLMS_SINGLE_READ_RESPONSE; /* * Enumerates single write response types. */ typedef enum { /* * Write succeeded. */ DLMS_SINGLE_WRITE_RESPONSE_SUCCESS = 0, /* * Write error has occurred. */ DLMS_SINGLE_WRITE_RESPONSE_DATA_ACCESS_ERROR = 1, /* * Get next block. */ DLMS_SINGLE_WRITE_RESPONSE_BLOCK_NUMBER = 2 } DLMS_SINGLE_WRITE_RESPONSE; /* * Enumerates how data is access on read or write. */ typedef enum { /* * Read data using SN. */ DLMS_VARIABLE_ACCESS_SPECIFICATION_VARIABLE_NAME = 2, /* * Get data using parameterized access. */ DLMS_VARIABLE_ACCESS_SPECIFICATION_PARAMETERISED_ACCESS = 4, /* * Get next block. */ DLMS_VARIABLE_ACCESS_SPECIFICATION_BLOCK_NUMBER_ACCESS = 5, /* * Read data as blocks. */ DLMS_VARIABLE_ACCESS_SPECIFICATION_READ_DATA_BLOCK_ACCESS = 6, /* * Write data as blocks. */ DLMS_VARIABLE_ACCESS_SPECIFICATION_WRITE_DATA_BLOCK_ACCESS = 7 } DLMS_VARIABLE_ACCESS_SPECIFICATION; /* * Enumerates all conformance bits. * https://www.gurux.fi/Gurux.DLMS.Conformance */ typedef enum { /* * Reserved zero conformance bit. */ DLMS_CONFORMANCE_NONE = 0, /* * Reserved zero conformance bit. */ DLMS_CONFORMANCE_RESERVED_ZERO = 0x1, /* * General protection conformance bit. */ DLMS_CONFORMANCE_GENERAL_PROTECTION = 0x2, /* * General block transfer conformance bit. */ DLMS_CONFORMANCE_GENERAL_BLOCK_TRANSFER = 0x4, /* * Read conformance bit. */ DLMS_CONFORMANCE_READ = 0x8, /* * Write conformance bit. */ DLMS_CONFORMANCE_WRITE = 0x10, /* * Un confirmed write conformance bit. */ DLMS_CONFORMANCE_UN_CONFIRMED_WRITE = 0x20, /* Delta value encoding. */ DLMS_CONFORMANCE_DELTA_VALUE_ENCODING = 0x40, /* * Reserved seven conformance bit. */ DLMS_CONFORMANCE_RESERVED_SEVEN = 0x80, /* * Attribute 0 supported with set conformance bit. */ DLMS_CONFORMANCE_ATTRIBUTE_0_SUPPORTED_WITH_SET = 0x100, /* * Priority mgmt supported conformance bit. */ DLMS_CONFORMANCE_PRIORITY_MGMT_SUPPORTED = 0x200, /* * Attribute 0 supported with get conformance bit. */ DLMS_CONFORMANCE_ATTRIBUTE_0_SUPPORTED_WITH_GET = 0x400, /* * Block transfer with get or read conformance bit. */ DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_GET_OR_READ = 0x800, /* * Block transfer with set or write conformance bit. */ DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_SET_OR_WRITE = 0x1000, /* * Block transfer with action conformance bit. */ DLMS_CONFORMANCE_BLOCK_TRANSFER_WITH_ACTION = 0x2000, /* * multiple references conformance bit. */ DLMS_CONFORMANCE_MULTIPLE_REFERENCES = 0x4000, /* * Information report conformance bit. */ DLMS_CONFORMANCE_INFORMATION_REPORT = 0x8000, /* * Data notification conformance bit. */ DLMS_CONFORMANCE_DATA_NOTIFICATION = 0x10000, /* * Access conformance bit. */ DLMS_CONFORMANCE_ACCESS = 0x20000, /* * Parameterized access conformance bit. */ DLMS_CONFORMANCE_PARAMETERIZED_ACCESS = 0x40000, /* * Get conformance bit. */ DLMS_CONFORMANCE_GET = 0x80000, /* * Set conformance bit. */ DLMS_CONFORMANCE_SET = 0x100000, /* * Selective access conformance bit. */ DLMS_CONFORMANCE_SELECTIVE_ACCESS = 0x200000, /* * Event notification conformance bit. */ DLMS_CONFORMANCE_EVENT_NOTIFICATION = 0x400000, /* * Action conformance bit. */ DLMS_CONFORMANCE_ACTION = 0x800000 }DLMS_CONFORMANCE; typedef enum { /* If this option is present, the device shall be allowed to send security, compartmentation, handling restrictions and TCC (closed user group) parameters within its IP Datagrams. The value of the IP-Option- Length Field must be 11, and the IP-Option-Data shall contain the value of the Security, Compartments, Handling Restrictions and Transmission Control Code values, as specified in STD0005 / RFC791. */ IP_OPTION_TYPE_DLMS_SECURITY = 0x82, /* If this option is present, the device shall supply routing information to be used by the gateways in forwarding the datagram to the destination, and to record the route information. The IP-Option-length and IP-Option-Data values are specified in STD0005 / RFC 791. */ IP_OPTION_TYPE_LOOSE_SOURCE_AND_RECORD_ROUTE = 0x83, /* If this option is present, the device shall supply routing information to be used by the gateways in forwarding the datagram to the destination, and to record the route information. The IP-Option-length and IP-Option-Data values are specified in STD0005 / RFC 791. */ IP_OPTION_TYPE_STRICT_SOURCE_AND_RECORD_ROUTE = 0x89, /* If this option is present, the device shall as well: send originated IP Datagrams with that option, providing means to record the route of these Datagrams; as a router, send routed IP Datagrams with the route option adjusted according to this option. The IP-Option-length and IP-Option-Data values are specified in STD0005 / RFC 791. */ IP_OPTION_TYPE_RECORD_ROUTE = 0x07, /* If this option is present, the device shall as well: send originated IP Datagrams with that option, providing means to time-stamp the datagram in the route to its destination; as a router, send routed IP Datagrams with the time-stamp option adjusted according to this option. The IP-Option-length and IP-Option-Data values are specified in STD0005 / RFC 791. */ IP_OPTION_TYPE_INTERNET_TIMESTAMP = 0x44 }IP_OPTION_TYPE; // Enumerates Set response types. typedef enum { /* * Normal set response. */ DLMS_SET_RESPONSE_TYPE_NORMAL = 1, /* * Set response in data blocks. */ DLMS_SET_RESPONSE_TYPE_DATA_BLOCK = 2, /* * Set response in last data block. */ DLMS_SET_RESPONSE_TYPE_LAST_DATA_BLOCK = 3, /* * Set response in last data block with list. */ DLMS_SET_RESPONSE_TYPE_LAST_DATA_BLOCK_WITH_LIST = 4, /* * Set with list response. */ DLMS_SET_RESPONSE_TYPE_WITH_LIST = 5 }DLMS_SET_RESPONSE_TYPE; /* * Enumerates all Unit constants. */ typedef enum { /* * No Unit. */ DLMS_UNIT_NONE = 0, /* * Year. */ DLMS_UNIT_YEAR = 1, /* * Month. */ DLMS_UNIT_MONTH = 2, /* * Week. */ DLMS_UNIT_WEEK = 3, /* * Day. */ DLMS_UNIT_DAY = 4, /* * Hour. */ DLMS_UNIT_HOUR = 5, /* * Minute. */ DLMS_UNIT_MINUTE = 6, /* * Second. */ DLMS_UNIT_SECOND = 7, /* * Phase angle degree. */ DLMS_UNIT_PHASE_ANGLE_DEGREE = 8, /* * Temperature T degree centigrade, rad*180/p. */ DLMS_UNIT_TEMPERATURE = 9, /* * Local currency. */ DLMS_UNIT_LOCAL_CURRENCY = 10, /* * Length l meter m. */ DLMS_UNIT_LENGTH = 11, /* * Speed v m/s. */ DLMS_UNIT_SPEED = 12, /* * Volume V m3. */ DLMS_UNIT_VOLUME_CUBIC_METER = 13, /* * Corrected volume m3. */ DLMS_UNIT_CORRECTED_VOLUME = 14, /* * Volume flux m3/60*60s. */ DLMS_UNIT_VOLUME_FLUX_HOUR = 15, /* * Corrected volume flux m3/60*60s. */ DLMS_UNIT_CORRECTED_VOLUME_FLUX_HOUR = 16, /* * Volume flux m3/24*60*60s. */ DLMS_UNIT_VOLUME_FLUX_DAY = 17, /* * Corrected volume flux m3/24*60*60s. */ DLMS_UNIT_CORRECTED_VOLUME_FLUX_DAY = 18, /* * Volume 10-3 m3. */ DLMS_UNIT_VOLUME_LITER = 19, /* * Mass m kilogram kg. */ DLMS_UNIT_MASS_KG = 20, /* * return "Force F newton N. */ DLMS_UNIT_FORCE = 21, /* * Energy newtonmeter J = Nm = Ws. */ DLMS_UNIT_ENERGY = 22, /* * Pressure p pascal N/m2. */ DLMS_UNIT_PRESSURE_PASCAL = 23, /* * Pressure p bar 10-5 N/m2. */ DLMS_UNIT_PRESSURE_BAR = 24, /* * Energy joule J = Nm = Ws. */ DLMS_UNIT_ENERGY_JOULE = 25, /* * Thermal power J/60*60s. */ DLMS_UNIT_THERMAL_POWER = 26, /* * Active power P watt W = J/s. */ DLMS_UNIT_ACTIVE_POWER = 27, /* * Apparent power S. */ DLMS_UNIT_APPARENT_POWER = 28, /* * Reactive power Q. */ DLMS_UNIT_REACTIVE_POWER = 29, /* * Active energy W*60*60s. */ DLMS_UNIT_ACTIVE_ENERGY = 30, /* * Apparent energy VA*60*60s. */ DLMS_UNIT_APPARENT_ENERGY = 31, /* * Reactive energy var*60*60s. */ DLMS_UNIT_REACTIVE_ENERGY = 32, /* * Current I ampere A. */ DLMS_UNIT_CURRENT = 33, /* * Electrical charge Q coulomb C = As. */ DLMS_UNIT_ELECTRICAL_CHARGE = 34, /* * Voltage. */ DLMS_UNIT_VOLTAGE = 35, /* * Electrical field strength E V/m. */ DLMS_UNIT_ELECTRICAL_FIELD_STRENGTH = 36, /* * Capacity C farad C/V = As/V. */ DLMS_UNIT_CAPACITY = 37, /* * Resistance R ohm = V/A. */ DLMS_UNIT_RESISTANCE = 38, /* * Resistivity. */ DLMS_UNIT_RESISTIVITY = 39, /* * Magnetic flux F weber Wb = Vs. */ DLMS_UNIT_MAGNETIC_FLUX = 40, /* * Induction T tesla Wb/m2. */ DLMS_UNIT_INDUCTION = 41, /* * Magnetic field strength H A/m. */ DLMS_UNIT_MAGNETIC = 42, /* * Inductivity L henry H = Wb/A. */ DLMS_UNIT_INDUCTIVITY = 43, /* * Frequency f. */ DLMS_UNIT_FREQUENCY = 44, /* * Active energy meter constant 1/Wh. */ DLMS_UNIT_ACTIVE = 45, /* * Reactive energy meter constant. */ DLMS_UNIT_REACTIVE = 46, /* * Apparent energy meter constant. */ DLMS_UNIT_APPARENT = 47, /* * V260*60s. */ DLMS_UNIT_V260 = 48, /* * A260*60s. */ DLMS_UNIT_A260 = 49, /* * Mass flux kg/s. */ DLMS_UNIT_MASS_KG_PER_SECOND = 50, /* * Unit is Conductance siemens 1/ohm. */ DLMS_UNIT_CONDUCTANCE = 51, /* * Temperature in Kelvin. */ DLMS_UNIT_KELVIN = 52, /* * 1/(V2h) RU2h , volt-squared hour meter constant or pulse value. */ DLMS_UNIT_RU2H = 53, /* * 1/(A2h) RI2h , ampere-squared hour meter constant or pulse value. */ DLMS_UNIT_RI2H = 54, /* * 1/m3 RV , meter constant or pulse value = volume). */ DLMS_UNIT_CUBIC_METER_RV = 55, /* * Percentage. */ DLMS_UNIT_PERCENTAGE = 56, /* * Ah ampere hours. */ DLMS_UNIT_AMPERE_HOURS = 57, /* * Wh/m3 energy per volume 3,6*103 J/m3. */ DLMS_UNIT_ENERGY_PER_VOLUME = 60, /* * J/m3 calorific value, wobbe. */ DLMS_UNIT_WOBBE = 61, /* * Mol % molar fraction of gas composition mole percent = Basic gas * composition unit). */ DLMS_UNIT_MOLE_PERCENT = 62, /* * g/m3 mass density, quantity of material. */ DLMS_UNIT_MASS_DENSITY = 63, /* * Dynamic viscosity pascal second = Characteristic of gas stream). */ DLMS_UNIT_PASCAL_SECOND = 64, /* * J/kg Specific energy NOTE The amount of energy per unit of mass of a * substance Joule / kilogram m2 . kg . s -2 / kg = m2. */ DLMS_UNIT_JOULE_KILOGRAM = 65, /* * Pressure, gram per square centimeter. */ DLMS_UNIT_PRESSURE_GRAM_PER_SQUARE_CENTIMETER = 66, /* * Pressure, atmosphere. */ DLMS_UNIT_PRESSURE_ATMOSPHERE = 67, /* * Signal strength, dB milliwatt (e.g. of GSM radio systems) */ DLMS_UNIT_SIGNAL_STRENGTH_MILLI_WATT = 70, /* * Signal strength, dB microvolt. */ DLMS_UNIT_SIGNAL_STRENGTH_MICRO_VOLT = 71, /* * Logarithmic unit that expresses the ratio between two values of a physical quantity */ DLMS_UNIT_DB = 72, /* * Length in inches. */ DLMS_UNIT_INCH = 128, /* * Foot (Length). */ DLMS_UNIT_FOOT = 129, /* * Pound (mass). */ DLMS_UNIT_POUND = 130, /* * Fahrenheit. */ DLMS_UNIT_FAHRENHEIT = 131, /* * Rankine. */ DLMS_UNIT_RANKINE = 132, /* * Square inch. */ DLMS_UNIT_SQUARE_INCH = 133, /* * Square foot. */ DLMS_UNIT_SQUARE_FOOT = 134, /* * Acre. */ DLMS_UNIT_ACRE = 135, /* * Cubic inch. */ DLMS_UNIT_CUBIC_INCH = 136, /* * Cubic foot. */ DLMS_UNIT_CUBIC_FOOT = 137, /* * Acre foot. */ DLMS_UNIT_ACRE_FOOT = 138, /* * Gallon (imperial). */ DLMS_UNIT_GALLON_IMPERIAL = 139, /* * Gallon (US). */ DLMS_UNIT_GALLON_US = 140, /* * Pound force. */ DLMS_UNIT_POUND_FORCE = 141, /* * Pound force per square inch. */ DLMS_UNIT_POUND_FORCE_PER_SQUARE_INCH = 142, /* * Pound per cubic foot. */ DLMS_UNIT_POUND_PER_CUBIC_FOOT = 143, /* * Pound per (foot second). */ DLMS_UNIT_POUND_PER_FOOT_SECOND = 144, /* * Square foot per second. */ DLMS_UNIT_SQUARE_FOOT_PER_SECOND = 145, /* * British thermal unit. */ DLMS_UNIT_BRITISH_THERMAL_UNIT = 146, /* * Therm EU. */ DLMS_UNIT_THERM_EU = 147, /* * Therm US. */ DLMS_UNIT_THERM_US = 148, /* * British thermal unit per pound. */ DLMS_UNIT_BRITISH_THERMAL_UNIT_PER_POUND = 149, /* * British thermal unit per cubic foot. */ DLMS_UNIT_BRITISH_THERMAL_UNIT_PER_CUBIC_FOOT = 150, /* * Cubic feet. */ DLMS_UNIT_CUBIC_FEET = 151, /* * Foot per second. */ DLMS_UNIT_FOOT_PER_SECOND = 152, /* * Cubic foot per second. */ DLMS_UNIT_CUBIC_FOOT_PER_SECOND = 153, /* * Cubic foot per min. */ DLMS_UNIT_CUBIC_FOOT_PER_MIN = 154, /* * Cubic foot per hour. */ DLMS_UNIT_CUBIC_FOOT_PER_HOUR = 155, /* * Cubic foot per day */ DLMS_UNIT_CUBIC_FOOT_PER_DAY = 156, /* * Acre foot per second. */ DLMS_UNIT_ACRE_FOOT_PER_SECOND = 157, /* * Acre foot per min. */ DLMS_UNIT_ACRE_FOOT_PER_MIN = 158, /* * Acre foot per hour. */ DLMS_UNIT_ACRE_FOOT_PER_HOUR = 159, /* * Acre foot per day. */ DLMS_UNIT_ACRE_FOOT_PER_DAY = 160, /* * Imperial gallon. */ DLMS_UNIT_IMPERIAL_GALLON = 161, /* * Imperial gallon per second. */ DLMS_UNIT_IMPERIAL_GALLON_PER_SECOND = 162, /* * Imperial gallon per min. */ DLMS_UNIT_IMPERIAL_GALLON_PER_MIN = 163, /* * Imperial gallon per hour. */ DLMS_UNIT_IMPERIAL_GALLON_PER_HOUR = 164, /* * Imperial gallon per day. */ DLMS_UNIT_IMPERIAL_GALLON_PER_DAY = 165, /* * US gallon. */ DLMS_UNIT_US_GALLON = 166, /* * US gallon per second. */ DLMS_UNIT_US_GALLON_PER_SECOND = 167, /* * US gallon per min. */ DLMS_UNIT_US_GALLON_PER_MIN = 168, /* * US gallon per hour. */ DLMS_UNIT_US_GALLON_PER_HOUR = 169, /* * US gallon per day. */ DLMS_UNIT_US_GALLON_PER_DAY = 170, /* * British thermal unit per second. */ DLMS_UNIT_BRITISH_THERMAL_UNIT_PER_SECOND = 171, /* * British thermal unit per minute. */ DLMS_UNIT_BRITISH_THERMAL_UNIT_PER_MIN = 172, /* * British thermal unit per hour. */ DLMS_UNIT_BRITISH_THERMAL_UNIT_PER_HOUR = 173, /* * British thermal unit per day. */ DLMS_UNIT_BRITISH_THERMAL_UNIT_PER_DAY = 174, /* * Other Unit. */ DLMS_UNIT_OTHER = 254, /* * No Unit. */ DLMS_UNIT_NO_UNIT = 255 }DLMS_UNIT; /* * Specifies trace levels. * */ typedef enum { /* * Output no tracing and debugging messages. */ GX_TRACE_LEVEL_OFF, /* * Output error-handling messages. */ GX_TRACE_LEVEL_ERROR, /* * Output warnings and error-handling messages. */ GX_TRACE_LEVEL_WARNING, /* * Output informational messages, warnings, and error-handling messages. */ GX_TRACE_LEVEL_INFO, /* * Output all debugging and tracing messages. */ GX_TRACE_LEVEL_VERBOSE }GX_TRACE_LEVEL; /* * Defines the GSM status. */ typedef enum { /* * Not registered. */ DLMS_GSM_STATUS_NONE, /* * Registered, home network. */ DLMS_GSM_STATUS_HOME_NETWORK, /* * Not registered, but MT is currently searching a new operator to register * to. */ DLMS_GSM_STATUS_SEARCHING, /* * Registration denied. */ DLMS_GSM_STATUS_DENIED, /* * Unknown. */ DLMS_GSM_STATUS_UNKNOWN, /* * Registered, roaming. */ DLMS_GSM_STATUS_ROAMING }DLMS_GSM_STATUS; /* * GSM circuit switced status. */ typedef enum { /* * Inactive. */ DLMS_GSM_CIRCUIT_SWITCH_STATUS_INACTIVE, /* * Incoming call. */ DLMS_GSM_CIRCUIT_SWITCH_STATUS_INCOMING_CALL, /* * Active. */ DLMS_GSM_CIRCUIT_SWITCH_STATUS_ACTIVE }DLMS_GSM_CIRCUIT_SWITCH_STATUS; /* * Packet switched status of the modem. */ typedef enum { /* * Inactive */ DLMS_GSM_PACKET_SWITCH_STATUS_INACTIVE, /* * GPRS */ DLMS_GSM_PACKET_SWITCH_STATUS_GPRS, /* * EDGE */ DLMS_GSM_PACKET_SWITCH_STATUS_EDGE, /* * UMTS */ DLMS_GSM_PACKET_SWITCH_STATUS_UMTS, /* * HSDPA */ DLMS_GSM_PACKET_SWITCH_STATUS_HSDPA, /* * LTE */ DLMS_GSM_PACKET_SWITCH_STATUS_LTE, /* * CDMA */ DLMS_GSM_PACKET_SWITCH_STATUS_CDMA }DLMS_GSM_PACKET_SWITCH_STATUS; /* * Enumerates payment Modes.
* Online help:
* http://www.gurux.fi/Gurux.DLMS.Objects.GXDLMSAccount */ typedef enum { /* * Credit mode. */ DLMS_ACCOUNT_PAYMENT_MODE_CREDIT = 1, /* * Prepayment mode. */ DLMS_ACCOUNT_PAYMENT_MODE_PREPAYMENT = 2 }DLMS_ACCOUNT_PAYMENT_MODE; /* * Enumerates account status modes.
* Online help:
* http://www.gurux.fi/Gurux.DLMS.Objects.GXDLMSAccount */ typedef enum { /* * New (inactive) account. */ DLMS_ACCOUNT_STATUS_NEW_INACTIVE_ACCOUNT = 1, /* * Account active. */ DLMS_ACCOUNT_STATUS_ACTIVE = 2, /* * Account closed. */ DLMS_ACCOUNT_STATUS_CLOSED = 3 }DLMS_ACCOUNT_STATUS; /* * Enumerates account credit status modes.
* Online help:
* http://www.gurux.fi/Gurux.DLMS.Objects.GXDLMSAccount */ typedef enum { /* * In credit. */ DLMS_ACCOUNT_CREDIT_STATUS_NONE = 0x0, /* * In credit. */ DLMS_ACCOUNT_CREDIT_STATUS_IN_CREDIT = 0x1, /* * Low credit. */ DLMS_ACCOUNT_CREDIT_STATUS_LOW_CREDIT = 0x2, /* * Next credit enabled. */ DLMS_ACCOUNT_CREDIT_STATUS_NEXT_CREDIT_ENABLED = 0x4, /* * Next credit selectable. */ DLMS_ACCOUNT_CREDIT_STATUS_NEXT_CREDIT_SELECTABLE = 0x8, /* * Credit reference list. */ DLMS_ACCOUNT_CREDIT_STATUS_CREDIT_REFERENCE_LIST = 0x10, /* * Selectable credit in use. */ DLMS_ACCOUNT_CREDIT_STATUS_SELECTABLE_CREDIT_IN_USE = 0x20, /* * Out of credit. */ DLMS_ACCOUNT_CREDIT_STATUS_OUT_OF_CREDIT = 0x40, /* * Reserved. */ DLMS_ACCOUNT_CREDIT_STATUS_RESERVED = 0x80 }DLMS_ACCOUNT_CREDIT_STATUS; /* * Enumerates payment Modes.
* Online help:
* http://www.gurux.fi/Gurux.DLMS.Objects.GXDLMSAccount */ typedef enum { /* * Time. */ DLMS_CURRENCY_TIME, /* * Consumption. */ DLMS_CURRENCY_CONSUMPTION, /* * Monetary. */ DLMS_CURRENCY_MONETARY }DLMS_CURRENCY; typedef enum { DLMS_REQUIRED_PROTECTION_NONE = 0, //Authenticated request. DLMS_REQUIRED_PROTECTION_AUTHENTICATED_REQUEST = 0x4, //Encrypted request. DLMS_REQUIRED_PROTECTION_ENCRYPTED_REQUEST = 0x8, //Digitally signed request DLMS_REQUIRED_PROTECTION_DIGITALLY_SIGNED_REQUEST = 0x10, //Authenticated response. DLMS_REQUIRED_PROTECTION_AUTHENTICATED_RESPONSE = 0x20, //Encrypted response. DLMS_REQUIRED_PROTECTION_ENCRYPTED_RESPONSE = 0x40, //Digitally signed response DLMS_REQUIRED_PROTECTION_DIGITALLY_SIGNED_RESPONSE = 0x80, }DLMS_REQUIRED_PROTECTION; typedef enum { /* * None. */ DLMS_CREDIT_COLLECTION_CONFIGURATION_NONE = 0, /* * Collect when supply disconnected. */ DLMS_CREDIT_COLLECTION_CONFIGURATION_DISCONNECTED = 0x1, /* * Collect in load limiting periods. */ DLMS_CREDIT_COLLECTION_CONFIGURATION_LOAD_LIMITING = 0x2, /* * Collect in friendly credit periods. */ DLMS_CREDIT_COLLECTION_CONFIGURATION_FRIENDLY_CREDIT = 0x4 }DLMS_CREDIT_COLLECTION_CONFIGURATION; // Enumerates payment Modes. typedef enum { // Credit mode. DLMS_PAYMENT_MODE_CREDIT = 1, // Prepayment mode. DLMS_PAYMENT_MODE_PREPAYMENT = 2 }DLMS_PAYMENT_MODE; // Enumerates token status codes. // Online help:
// http://www.gurux.fi/Gurux.DLMS.Objects.GXDLMSTokenGateway typedef enum { // Token format result OK. FORMAT_OK, // Authentication result OK. AUTHENTICATION_OK, // Validation result OK. VALIDATION_OK, // Token execution result OK. TOKEN_EXECUTION_OK, // Token format failure. DLMS_TOKEN_STATUS_CODE_TOKEN_FORMAT_FAILURE, // Authentication failure. DLMS_TOKEN_STATUS_CODE_AUTHENTICATION_FAILURE, // Validation result failure. DLMS_TOKEN_STATUS_CODE_VALIDATION_RESULT_FAILURE, // Token execution result failure. DLMS_TOKEN_STATUS_CODE_TOKEN_EXECUTION_RESULT_FAILURE, // Token received and not yet processed. DLMS_TOKEN_STATUS_CODE_TOKEN_RECEIVED }DLMS_TOKEN_STATUS_CODE; // Enumerates token delivery methods. // Online help:
// http://www.gurux.fi/Gurux.DLMS.Objects.GXDLMSTokenGateway typedef enum { // Via remote communications. DLMS_TOKEN_DELIVERY_REMOTE, // Via local communications. DLMS_TOKEN_DELIVERY_LOCAL, // Via manual entry. DLMS_TOKEN_DELIVERY_MANUAL }DLMS_TOKEN_DELIVERY; /* * Enumerates application context name. */ typedef enum { /* * Logical name. */ DLMS_APPLICATION_CONTEXT_NAME_LOGICAL_NAME = 1, /* * Short name. */ DLMS_APPLICATION_CONTEXT_NAME_SHORT_NAME = 2, /* * Logical name with ciphering. */ DLMS_APPLICATION_CONTEXT_NAME_LOGICAL_NAME_WITH_CIPHERING = 3, /* * Short name with ciphering. */ DLMS_APPLICATION_CONTEXT_NAME_SHORT_NAME_WITH_CIPHERING = 4 }DLMS_APPLICATION_CONTEXT_NAME; // Certificate entity. typedef enum { // Certificate entity is server. DLMS_CERTIFICATE_ENTITY_Server = 0, // Certificate entity is client. DLMS_CERTIFICATE_ENTITY_Client, // Certificate entity is certification authority. DLMS_CERTIFICATE_ENTITY_Certification_Authority, // Certificate entity is other. DLMS_CERTIFICATE_ENTITY_Other }DLMS_CERTIFICATE_ENTITY; // Certificate type. typedef enum { // Certificate type is digital signature. DLMS_CERTIFICATE_TYPE_DIGITAL_SIGNATURE = 0, // Certificate type is key agreement. DLMS_CERTIFICATE_TYPE_KEY_AGREEMENT = 1, // Certificate type is TLS. DLMS_CERTIFICATE_TYPE_TLS = 2, // Certificate type is other. DLMS_CERTIFICATE_TYPE_OTHER = 3 } DLMS_CERTIFICATE_TYPE; // Connection types. typedef enum { //Connection is not made for the meter. DLMS_CONNECTION_STATE_NONE = 0, //Connection is made for HDLC level. DLMS_CONNECTION_STATE_HDLC = 1, //Connection is made for DLMS level. DLMS_CONNECTION_STATE_DLMS = 2, //Connection is made for optical IEC 62056-21 level. DLMS_CONNECTION_STATE_IEC = 4 }DLMS_CONNECTION_STATE; typedef enum { //Data is captured with Capture-method. DLMS_CAPTURE_METHOD_INVOKE, //Data is captured upon reading. DLMS_CAPTURE_METHOD_IMPLICIT }DLMS_CAPTURE_METHOD; /** * Present functional state of the node. */ typedef enum { /** * Disconnected. */ DLMS_MAC_STATE_DISCONNECTED, /** * Terminal. */ DLMS_MAC_STATE_TERMINAL, /** * Switch. */ DLMS_MAC_STATE_SWITCH, /** * Base. */ DLMS_MAC_STATE_BASE }DLMS_MAC_STATE; /** * Present functional state of the node. */ typedef enum { DLMS_MAC_CAPABILITIES_NONE = 0, /** * Switch capable. */ DLMS_MAC_CAPABILITIES_SWITCH_CAPABLE = 1, /** * Packet aggregation. */ DLMS_MAC_CAPABILITIES_PACKET_AGGREGATION = 2, /** * Contention free period. */ DLMS_MAC_CAPABILITIES_CONTENTION_FREE_PERIOD = 4, /** * Direct connection. */ DLMS_MAC_CAPABILITIES_DIRECT_CONNECTION = 8, /** * Multicast. */ DLMS_MAC_CAPABILITIES_MULTICAST = 0x10, /** * PHY Robustness Management. */ DLMS_MAC_CAPABILITIES_PHY_ROBUSTNESS_MANAGEMENT = 0x20, /** * ARQ. */ DLMS_MAC_CAPABILITIES_ARQ = 0x40, /** * Reserved for future use. */ DLMS_MAC_CAPABILITIES_RESERVED_FOR_FUTURE_USE = 0x80, /** * Direct Connection Switching. */ DLMS_MAC_CAPABILITIES_DIRECT_CONNECTION_SWITCHING = 0x100, /** * Multicast Switching Capability. */ DLMS_MAC_CAPABILITIES_MULTICAST_SWITCHING_CAPABILITY = 0x200, /** * PHY Robustness Management Switching Capability. */ DLMS_MAC_CAPABILITIES_PHY_ROBUSTNESS_MANAGEMENT_SWITCHING_CAPABILITY = 0x400, /** * ARQ Buffering Switching Capability. */ DLMS_MAC_CAPABILITIES_ARQ_BUFFERING_SWITCHING_CAPABILITY = 0x800 } DLMS_MAC_CAPABILITIES; /* * Enumerates credit types. * Online help: * http://www.gurux.fi/Gurux.DLMS.Objects.GXDLMSCredit */ typedef enum { /* * Token credit. */ DLMS_CREDIT_TYPE_TOKEN = 0, /* * Reserved credit. */ DLMS_CREDIT_TYPE_RESERVED, /* * Emergency credit. */ DLMS_CREDIT_TYPE_EMERGENCY, /* * TimeBased credit. */ DLMS_CREDIT_TYPE_TIME_BASED, /* * Consumption based credit. */ DLMS_CREDIT_TYPE_CONSUMPTION_BASED }DLMS_CREDIT_TYPE; /* * Enumerates credit status values. * Online help: * http://www.gurux.fi/Gurux.DLMS.Objects.GXDLMSCredit */ typedef enum { /* * Enabled state. */ DLMS_CREDIT_STATUS_ENABLED, /* * Selectable state. */ DLMS_CREDIT_STATUS_SELECTABLE, /* * Selected/Invoked state. */ DLMS_CREDIT_STATUS_INVOKED, /* * In use state. */ DLMS_CREDIT_STATUS_IN_USE, /* * Consumed state. */ DLMS_CREDIT_STATUS_CONSUMED }DLMS_CREDIT_STATUS; /* * Enumerated Credit configuration values. * Online help: * http://www.gurux.fi/Gurux.DLMS.Objects.GXDLMSAccount */ typedef enum { /* * None. */ DLMS_CREDIT_CONFIGURATION_NONE = 0x0, /* * Requires visual indication */ DLMS_CREDIT_CONFIGURATION_VISUAL = 0x1, /* * Requires confirmation before it can be selected/invoked */ DLMS_CREDIT_CONFIGURATION_CONFIRMATION = 0x2, /* * Requires the credit amount to be paid back. */ DLMS_CREDIT_CONFIGURATION_PAID_BACK = 0x4, /* * Resettable. */ DLMS_CREDIT_CONFIGURATION_RESETTABLE = 0x8, /* * Able to receive credit amounts from tokens. */ DLMS_CREDIT_CONFIGURATION_TOKENS = 0x10 }DLMS_CREDIT_CONFIGURATION; /* * Enumerates account credit status modes. * Online help: * http://www.gurux.fi/Gurux.DLMS.Objects.GXDLMSCharge */ typedef enum { /* * Consumption based collection. */ DLMS_CHARGE_TYPE_CONSUMPTION_BASED_COLLECTION = 0, /* * Time based collection. */ DLMS_CHARGE_TYPE_TIME_BASED_COLLECTION, /* * Payment based collection. */ DLMS_CHARGE_TYPE_PAYMENT_EVENT_BASED_COLLECTION }DLMS_CHARGE_TYPE; // Defines the weekdays. typedef enum { /// No day of week is selected. DLMS_WEEKDAYS_NONE = 0, // Indicates Monday. DLMS_WEEKDAYS_MONDAY = 0x1, // Indicates Tuesday. DLMS_WEEKDAYS_TUESDAY = 0x2, // Indicates Wednesday. DLMS_WEEKDAYS_WEDNESDAY = 0x4, // Indicates Thursday. DLMS_WEEKDAYS_THURSDAY = 0x8, // Indicates Friday. DLMS_WEEKDAYS_FRIDAY = 0x10, // Indicates Saturday. DLMS_WEEKDAYS_SATURDAY = 0x20, // Indicates Sunday. DLMS_WEEKDAYS_SUNDAY = 0x40 }DLMS_WEEKDAYS; // Charge configuration enumeration types. typedef enum { //NONE DLMS_CHARGE_CONFIGURATION_NONE = 0, // Percentage based collection. DLMS_CHARGE_CONFIGURATION_PERCENTAGE_BASED_COLLECTION = 0x1, // Continuous collection. DLMS_CHARGE_CONFIGURATION_CONTINUOUS_COLLECTION = 0x2 }DLMS_CHARGE_CONFIGURATION; // DLMS state errors. typedef enum { //Invalid value. DLMS_EXCEPTION_STATE_ERROR_SERVICE_INVALID = 0, //Service is not allowed. DLMS_EXCEPTION_STATE_ERROR_SERVICE_NOT_ALLOWED = 1, //Unknown service. DLMS_EXCEPTION_STATE_ERROR_SERVICE_UNKNOWN = 2 }DLMS_EXCEPTION_STATE_ERROR; //MIB variable initiator electrical phase. typedef enum { /** * Not defined. */ DLMS_INITIATOR_ELECTRICAL_PHASE_NOT_DEFINED, /** * Phase 1. */ DLMS_INITIATOR_ELECTRICAL_PHASE_1, /** * Phase 2. */ DLMS_INITIATOR_ELECTRICAL_PHASE_2, /** * Phase 3. */ DLMS_INITIATOR_ELECTRICAL_PHASE_3 }DLMS_INITIATOR_ELECTRICAL_PHASE; /** * MIB variable initiator electrical phase. */ typedef enum { /** * Not defined. */ DLMS_DELTA_ELECTRICAL_PHASE_NOT_DEFINED, /** * The server system is connected to the same phase as the client system. */ DLMS_DELTA_ELECTRICAL_PHASE_SAME, DLMS_DELTA_ELECTRICAL_PHASE_DEGREES_60, DLMS_DELTA_ELECTRICAL_PHASE_DEGREES_120, DLMS_DELTA_ELECTRICAL_PHASE_DEGREES_180, DLMS_DELTA_ELECTRICAL_PHASE_DEGREES_MINUS_120, DLMS_DELTA_ELECTRICAL_PHASE_DEGREES_MINUS_60 }DLMS_DELTA_ELECTRICAL_PHASE; /** * Repeater enumerator values. */ typedef enum { /** * Newer repeater. */ DLMS_REPEATER_NEVER, /** * Always repeater. */ DLMS_REPEATER_ALWAYS, /** * Dynamic repeater. */ DLMS_REPEATER_DYNAMIC }DLMS_REPEATER; /** * IEC Twisted pair setup working mode. */ typedef enum { /** * The interface ignores all received frames. */ DLMS_IEC_TWISTED_PAIR_SETUP_MODE_INACTIVE, /** * Always active. */ DLMS_IEC_TWISTED_PAIR_SETUP_MODE_ACTIVE }DLMS_IEC_TWISTED_PAIR_SETUP_MODE; /** * PLC Source address enumerations. */ typedef enum { DLMS_PLC_SOURCE_ADDRESS_INITIATOR = 0xC00, DLMS_PLC_SOURCE_ADDRESS_NEW = 0xFFE }DLMS_PLC_SOURCE_ADDRESS; // PLC Destination address enumerations. typedef enum { DLMS_PLC_DESTINATION_ADDRESS_ALL_PHYSICAL = 0xFFF }DLMS_PLC_DESTINATION_ADDRESS; /** * PLC HDLC Source address enumerations. */ typedef enum { // Initiator. DLMS_PLC_HDLC_SOURCE_ADDRESS_INITIATOR = 0xC01, }DLMS_PLC_HDLC_SOURCE_ADDRESS; /** * PLC data link data commands. * */ typedef enum { DLMS_PLC_DATA_LINK_DATA_REQUEST = 0x90 }DLMS_PLC_DATA_LINK_DATA; // Sequence number of MAC sub frame. typedef enum { DLMS_PLC_MAC_SUB_FRAMES_ONE = 0x6C6C, DLMS_PLC_MAC_SUB_FRAMES_TWO = 0x3A3A, DLMS_PLC_MAC_SUB_FRAMES_THREE = 0x5656, DLMS_PLC_MAC_SUB_FRAMES_FOUR = 0x7171, DLMS_PLC_MAC_SUB_FRAMES_FIVE = 0x1D1D, DLMS_PLC_MAC_SUB_FRAMES_SIX = 0x4B4B, DLMS_PLC_MAC_SUB_FRAMES_SEVEN = 0x2727, }DLMS_PLC_MAC_SUB_FRAMES; // M-Bus command. typedef enum { DLMS_MBUS_COMMAND_SND_NR = 0x44, DLMS_MBUS_COMMAND_SND_UD2 = 0x43, DLMS_MBUS_COMMAND_RSP_UD = 0x08 } DLMS_MBUS_COMMAND; // M-Bus meter type. typedef enum { // Other meter. DLMS_MBUS_METER_TYPE_OTHER = 0, // Oil meter. DLMS_MBUS_METER_TYPE_OIL = 1, // Energy meter. DLMS_MBUS_METER_TYPE_ENERGY = 2, // Gas meter. DLMS_MBUS_METER_TYPE_GAS = 3, // Heat meter. DLMS_MBUS_METER_TYPE_HEAT = 4, // Steam meter. DLMS_MBUS_METER_TYPE_STEAM = 5, // Hot water meter. DLMS_MBUS_METER_TYPE_HOT_WATER = 6, // Water meter. DLMS_MBUS_METER_TYPE_WATER = 7, // Heat cost allocator meter. DLMS_MBUS_METER_TYPE_HEAT_COST_ALLOCATOR = 8, // Gas mode 2 meter. DLMS_MBUS_METER_TYPE_GAS_MODE2 = 10, // Heat mode 2 meter. DLMS_MBUS_METER_TYPE_HEAT_MODE2 = 11, /// Hot water mode 2 meter. DLMS_MBUS_METER_TYPE_HOT_WATER_MODE2 = 12, /// Water mode 2 meter. DLMS_MBUS_METER_TYPE_WATER_MODE2 = 13, // Heat cost allocator mode 2 meter. DLMS_MBUS_METER_TYPE_HEAT_COST_ALLOCATOR_MODE2 = 14, // Unknown meter type. DLMS_MBUS_METER_TYPE_UNKNOWN = 0x0F }DLMS_MBUS_METER_TYPE; // Defines the M-Bus port communication status. typedef enum { // No access. DLMS_MBUS_PORT_COMMUNICATION_STATE_NO_ACCESS = 0, // Temporary no access DLMS_MBUS_PORT_COMMUNICATION_STATE_TEMPORARY_NO_ACCESS, // Limited access DLMS_MBUS_PORT_COMMUNICATION_STATE_LIMITED_ACCESS, // Unlimited access. DLMS_MBUS_PORT_COMMUNICATION_STATE_UNLIMITED_ACCESS, // wM-Bus. DLMS_MBUS_PORT_COMMUNICATION_STATE_WMBUS, }DLMS_MBUS_PORT_COMMUNICATION_STATE; // Defines the M-Bus data header types. typedef enum { // M-Bus data header is not used. DLMS_MBUS_DATA_HEADER_TYPE_NONE = 0, // Short data header is used. DLMS_MBUS_DATA_HEADER_TYPE_SHORT, // Long data header is used. DLMS_MBUS_DATA_HEADER_TYPE_LONG }DLMS_MBUS_DATA_HEADER_TYPE; // M-Bus control info. typedef enum { // Long M-Bus data header present, direction master to slave DLMS_MBUS_CONTROL_INFO_LONG_HEADER_MASTER = 0x60, // Short M-Bus data header present, direction master to slave DLMS_MBUS_CONTROL_INFO_SHORT_HEADER_MASTER = 0x61, // Long M-Bus data header present, direction slave to master DLMS_MBUS_CONTROL_INFO_LONG_HEADER_SLAVE = 0x7C, // Short M-Bus data header present, direction slave to master DLMS_MBUS_CONTROL_INFO_SHORT_HEADER_SLAVE = 0x7D, // M-Bus short Header. DLMS_MBUS_CONTROL_INFO_SHORT_HEADER = 0x7A, // M-Bus long Header. DLMS_MBUS_CONTROL_INFO_LONG_HEADER = 0x72 }DLMS_MBUS_CONTROL_INFO; /*M-Bus link status.*/ typedef enum { /*Data never received.*/ DLMS_MBUS_LINK_STATUS_NONE, /* Normal operation.*/ DLMS_MBUS_LINK_STATUS_NORMAL, /* Link temporarily interrupted.*/ DLMS_MBUS_LINK_STATUS_TEMPORARILY_INTERRUPTED, /*Link permanently interrupted.*/ DLMS_MBUS_LINK_STATUS_PERMANENTLY_INTERRUPTED, }DLMS_MBUS_LINK_STATUS; // Encryption modes. typedef enum { // Encryption is not used. DLMS_MBUS_ENCRYPTION_MODE_NONE, // AES with Counter Mode (CTR) noPadding and IV. DLMS_MBUS_ENCRYPTION_MODE_AES_128, // DES with Cipher Block Chaining Mode (CBC). DLMS_MBUS_ENCRYPTION_MODE_DES_CBC, // DES with Cipher Block Chaining Mode (CBC) and Initial Vector. DLMS_MBUS_ENCRYPTION_MODE_DES_CBC_IV, // AES with Cipher Block Chaining Mode (CBC) and Initial Vector. DLMS_MBUS_ENCRYPTION_MODE_AES_CBC_IV = 5, // AES 128 with Cipher Block Chaining Mode (CBC) and dynamic key and Initial Vector with 0. DLMS_MBUS_ENCRYPTION_MODE_AES_CBC_IV_0 = 7, // TLS DLMS_MBUS_ENCRYPTION_MODE_TLS = 13 }DLMS_MBUS_ENCRYPTION_MODE; // Enumerates modulation types. typedef enum { // Robust Mode. DLMS_G3_PLC_MODULATION_ROBUST_MODE, // DBPSK. DLMS_G3_PLC_MODULATION_DBPSK, // DQPSK. DLMS_G3_PLC_MODULATION_DQPSK, // D8PSK. DLMS_G3_PLC_MODULATION_D8PSK, // 16-QAM. DLMS_G3_PLC_MODULATION_QAM16 } DLMS_G3_PLC_MODULATION; // Enumerates gain resolution steps. typedef enum { // Step is 6 dB. DLMS_G3_PLC_GAIN_RESOLUTION_DB6, // Step is 3 dB. DLMS_G3_PLC_GAIN_RESOLUTION_DB3 }DLMS_G3_PLC_GAIN_RESOLUTION; // Enumerates the type of the device connected to the modem. typedef enum { // PAN device. DLMS_PAN_DEVICE_TYPE_DEVICE, // PAN coordinator. DLMS_PAN_DEVICE_TYPE_COORDINATOR, // Not Defined. DLMS_PAN_DEVICE_TYPE_NOT_DEFINED }DLMS_PAN_DEVICE_TYPE; // Defines the ZigBee status enumeration values. typedef enum { /// /// Authorised on PAN. /// DLMS_ZIG_BEE_STATUS_AUTHORISED = 0x1, /// /// Actively reporting on PAN. /// DLMS_ZIG_BEE_STATUS_REPORTING = 0x2, /// /// Unauthorised on PAN but has reported /// DLMS_ZIG_BEE_STATUS_UNAUTHORISED = 0x4, /// /// Authorised after swap-out. /// DLMS_ZIG_BEE_STATUS_AUTHORISED_SWAP_OUT = 0x8, /// /// SEP Transmitting. /// DLMS_ZIG_BEE_STATUS_SEP_TRANSMITTING = 0x10 }DLMS_ZIG_BEE_STATUS; #ifdef __cplusplus } #endif #endif //ENUMS_H