/**************************************************************************************************
  Filename:       zcl_se.h
  Revised:        $Date: 2012-03-13 01:09:38 -0700 (Tue, 13 Mar 2012) $
  Revision:       $Revision: 29723 $

  Description:    This file contains the ZCL SE (Smart Energy) Profile definitions.


  Copyright 2007-2012 Texas Instruments Incorporated. All rights reserved.

  IMPORTANT: Your use of this Software is limited to those specific rights
  granted under the terms of a software license agreement between the user
  who downloaded the software, his/her employer (which must be your employer)
  and Texas Instruments Incorporated (the "License").  You may not use this
  Software unless you agree to abide by the terms of the License. The License
  limits your use, and you acknowledge, that the Software may not be modified,
  copied or distributed unless embedded on a Texas Instruments microcontroller
  or used solely and exclusively in conjunction with a Texas Instruments radio
  frequency transceiver, which is integrated into your product.  Other than for
  the foregoing purpose, you may not use, reproduce, copy, prepare derivative
  works of, modify, distribute, perform, display or sell this Software and/or
  its documentation for any purpose.

  YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
  PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
  INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
  NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
  TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
  NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
  LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
  INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
  OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
  OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
  (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.

  Should you have any questions regarding your right to use this Software,
  contact Texas Instruments Incorporated at www.TI.com.
**************************************************************************************************/

#ifndef ZCL_SE_H
#define ZCL_SE_H

#ifdef __cplusplus
extern "C"
{
#endif

/*********************************************************************
 * INCLUDES
 */
#include "zcl.h"

/*********************************************************************
 * CONSTANTS
 */

/********************************************/
/*** SE Profile Attributes List ************/
/********************************************/

// Simple Metering Cluster Attribute Sets
#define ATTRID_MASK_SE_READ_INFORMATION_SET          0x0000
#define ATTRID_MASK_SE_TOU_INFORMATION_SET           0x0100
#define ATTRID_MASK_SE_METER_STATUS                  0x0200
#define ATTRID_MASK_SE_FORMATTING                    0x0300
#define ATTRID_MASK_SE_HISTORICAL_CONSUMPTION        0x0400
#define ATTRID_MASK_SE_LOAD_PROFILE_CONFIGURATION    0x0500
#define ATTRID_MASK_SE_SUPPLY_LIMIT                  0x0600
#define ATTRID_MASK_SE_BLOCK_INFORMATION             0x0700
#define ATTRID_MASK_SE_ALARMS                        0x0800
#define ATTRID_MASK_SE_BLOCK_INFORMATION_RECEIVED    0x0900
#define ATTRID_MASK_SE_BILLING                       0x0A00

// Simple Metering Cluster - Reading Information Set Attributes 0x00
#define ATTRID_SE_CURRENT_SUMMATION_DELIVERED        ( 0x0000 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_SUMMATION_RECEIVED         ( 0x0001 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_MAX_DEMAND_DELIVERED       ( 0x0002 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_MAX_DEMAND_RECEIVED        ( 0x0003 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_DFT_SUMMATION                      ( 0x0004 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_DAILY_FREEZE_TIME                  ( 0x0005 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_POWER_FACTOR                       ( 0x0006 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_READING_SNAPSHOT_TIME              ( 0x0007 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_MAX_DEMAND_DELIVERD_TIME   ( 0x0008 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_MAX_DEMAND_RECEIVED_TIME   ( 0x0009 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_DEFAULT_UPDATE_PERIOD              ( 0x000A | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_FAST_POLL_UPDATE_PERIOD            ( 0x000B | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_BLOCK_PERIOD_CONSUMPTION_DELIVERED   ( 0x000C | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_DAILY_CONSUMPTION_TARGET           ( 0x000D | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_BLOCK                      ( 0x000E | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_PROFILE_INTERVAL_PERIOD            ( 0x000F | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_INTERVAL_READ_REPORTING_PERIOD     ( 0x0010 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_PRESET_READING_TIME                ( 0x0011 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_VOLUME_PER_REPORT                  ( 0x0012 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_FLOW_RESTRICTION                   ( 0x0013 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_SUPPLY_STATUS                      ( 0x0014 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_IN_ENERGY_CARRIER_SUMM     ( 0x0015 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_OUT_ENERGY_CARRIER_SUMM    ( 0x0016 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_INLET_TEMPREATURE                  ( 0x0017 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_OUTLET_TEMPREATURE                 ( 0x0018 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CONTROL_TEMPREATURE                ( 0x0019 | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_IN_ENERGY_CARRIER_DEMAND   ( 0x001A | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_OUT_ENERGY_CARRIER_DEMAND  ( 0x001B | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_BLOCK_PERIOD_CONSUMPTION_RECEIVED  ( 0x001D | ATTRID_MASK_SE_READ_INFORMATION_SET )
#define ATTRID_SE_CURRENT_BLOCK_RECEIVED             ( 0x001E | ATTRID_MASK_SE_READ_INFORMATION_SET )

// Simple Metering Cluster - TOU Information Set Attributes 0x01
#define ATTRID_SE_CURRENT_TIER1_SUMMATION_DELIVERED  ( 0x0000 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER1_SUMMATION_RECEIVED   ( 0x0001 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER2_SUMMATION_DELIVERED  ( 0x0002 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER2_SUMMATION_RECEIVED   ( 0x0003 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER3_SUMMATION_DELIVERED  ( 0x0004 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER3_SUMMATION_RECEIVED   ( 0x0005 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER4_SUMMATION_DELIVERED  ( 0x0006 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER4_SUMMATION_RECEIVED   ( 0x0007 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER5_SUMMATION_DELIVERED  ( 0x0008 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER5_SUMMATION_RECEIVED   ( 0x0009 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER6_SUMMATION_DELIVERED  ( 0x000A | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER6_SUMMATION_RECEIVED   ( 0x000B | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER7_SUMMATION_DELIVERED  ( 0x000C | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER7_SUMMATION_RECEIVED   ( 0x000D | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER8_SUMMATION_DELIVERED  ( 0x000E | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER8_SUMMATION_RECEIVED   ( 0x000F | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER9_SUMMATION_DELIVERED  ( 0x0010 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER9_SUMMATION_RECEIVED   ( 0x0011 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER10_SUMMATION_DELIVERED ( 0x0012 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER10_SUMMATION_RECEIVED  ( 0x0013 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER11_SUMMATION_DELIVERED ( 0x0014 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER11_SUMMATION_RECEIVED  ( 0x0015 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER12_SUMMATION_DELIVERED ( 0x0016 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER12_SUMMATION_RECEIVED  ( 0x0017 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER13_SUMMATION_DELIVERED ( 0x0018 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER13_SUMMATION_RECEIVED  ( 0x0019 | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER14_SUMMATION_DELIVERED ( 0x001A | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER14_SUMMATION_RECEIVED  ( 0x001B | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER15_SUMMATION_DELIVERED ( 0x001C | ATTRID_MASK_SE_TOU_INFORMATION_SET )
#define ATTRID_SE_CURRENT_TIER15_SUMMATION_RECEIVED  ( 0x001D | ATTRID_MASK_SE_TOU_INFORMATION_SET )

// Simple Metering Cluster - Meter Status Attributes 0x02
#define ATTRID_SE_STATUS                             ( 0x0000 | ATTRID_MASK_SE_METER_STATUS )
#define ATTRID_SE_REMAINING_BATTERY_LIFE             ( 0x0001 | ATTRID_MASK_SE_METER_STATUS )
#define ATTRID_SE_HOURS_IN_OPERATION                 ( 0x0002 | ATTRID_MASK_SE_METER_STATUS )
#define ATTRID_SE_HOURS_IN_FAULT                     ( 0x0003 | ATTRID_MASK_SE_METER_STATUS )
#define ATTRID_SE_EXTENDED_STATUS                    ( 0x0004 | ATTRID_MASK_SE_METER_STATUS )

// Simple Metering Cluster - Formatting Attributes 0x03
#define ATTRID_SE_UNIT_OF_MEASURE                    ( 0x0000 | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_MULTIPLIER                         ( 0x0001 | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_DIVISOR                            ( 0x0002 | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_SUMMATION_FORMATTING               ( 0x0003 | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_DEMAND_FORMATTING                  ( 0x0004 | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_HISTORICAL_CONSUMPTION_FORMATTING  ( 0x0005 | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_METERING_DEVICE_TYPE               ( 0x0006 | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_SITE_ID                            ( 0x0007 | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_METER_SERIAL_NUMBER                ( 0x0008 | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_ENERGY_CARRIER_UNIT_OF_MEASURE     ( 0x0009 | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_ENERGY_CARRIER_SUMM_FORMATTING     ( 0x000A | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_ENERGY_CARRIER_DEMAND_FORMATTING   ( 0x000B | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_TEMPERATURE_UNIT_OF_MEASURE        ( 0x000C | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_TEMPERATURE_FORMATTING             ( 0x000D | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_MODULE_SERIAL_NUMBER               ( 0x000E | ATTRID_MASK_SE_FORMATTING )
#define ATTRID_SE_OPERATING_TARIFF_LEVEL             ( 0x000F | ATTRID_MASK_SE_FORMATTING )

// Simple Metering Server Cluster - Historical Comsumption Attributes 0x04
#define ATTRID_SE_INSTANTANEOUS_DEMAND               ( 0x0000 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CURRENTDAY_CONSUMPTION_DELIVERED   ( 0x0001 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CURRENTDAY_CONSUMPTION_RECEIVED    ( 0x0002 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_PREVIOUSDAY_CONSUMPTION_DELIVERED  ( 0x0003 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_PREVIOUSDAY_CONSUMPTION_RECEIVED   ( 0x0004 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CUR_PART_PROFILE_INT_START_TIME_DELIVERED ( 0x0005 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CUR_PART_PROFILE_INT_START_TIME_RECEIVED  ( 0x0006 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CUR_PART_PROFILE_INT_VALUE_DELIVERED      ( 0x0007 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CUR_PART_PROFILE_INT_VALUE_RECEIVED       ( 0x0008 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CURRENT_DAY_MAX_PRESSURE           ( 0x0009 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CURRENT_DAY_MIN_PRESSURE           ( 0x000A | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_PREVIOUS_DAY_MAX_PRESSURE          ( 0x000B | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_PREVIOUS_DAY_MIN_PRESSURE          ( 0x000C | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CURRENT_DAY_MAX_DEMAND             ( 0x000D | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_PREVIOUS_DAY_MAX_DEMAND            ( 0x000E | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CURRENT_MONTH_MAX_DEMAND           ( 0x000F | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CURRENT_YEAR_MAX_DEMAND            ( 0x0010 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CURRENTDAY_MAX_ENERGY_CARR_DEMAND  ( 0x0011 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_PREVIOUSDAY_MAX_ENERGY_CARR_DEMAND ( 0x0012 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CUR_MONTH_MAX_ENERGY_CARR_DEMAND   ( 0x0013 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CUR_MONTH_MIN_ENERGY_CARR_DEMAND   ( 0x0014 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CUR_YEAR_MAX_ENERGY_CARR_DEMAND    ( 0x0015 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )
#define ATTRID_SE_CUR_YEAR_MIN_ENERGY_CARR_DEMAND    ( 0x0016 | ATTRID_MASK_SE_HISTORICAL_CONSUMPTION )

// Simple Metering Server Cluster - Load Profile Configuration Attributes 0x05
#define ATTRID_SE_MAX_NUMBER_OF_PERIODS_DELIVERED    ( 0x0000 | ATTRID_MASK_SE_LOAD_PROFILE_CONFIGURATION )

// Simple Metering Server Cluster - Supply Limit Attributes 0x06
#define ATTRID_SE_CURRENT_DEMAND_DELIVERED           ( 0x0000 | ATTRID_MASK_SE_SUPPLY_LIMIT )
#define ATTRID_SE_DEMAND_LIMIT                       ( 0x0001 | ATTRID_MASK_SE_SUPPLY_LIMIT )
#define ATTRID_SE_DEMAND_INTEGRATION_PERIOD          ( 0x0002 | ATTRID_MASK_SE_SUPPLY_LIMIT )
#define ATTRID_SE_NUMBER_OF_DEMAND_SUBINTERVALS      ( 0x0003 | ATTRID_MASK_SE_SUPPLY_LIMIT )
#define ATTRID_SE_DEMAND_LIMIT_ARM_DURATION          ( 0x0004 | ATTRID_MASK_SE_SUPPLY_LIMIT )

// Simple Metering Server Cluster - Block Information Attributes 0x07
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK1_SUMMATION_DELIVERED   ( 0x0000 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK2_SUMMATION_DELIVERED   ( 0x0001 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK3_SUMMATION_DELIVERED   ( 0x0002 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK4_SUMMATION_DELIVERED   ( 0x0003 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK5_SUMMATION_DELIVERED   ( 0x0004 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK6_SUMMATION_DELIVERED   ( 0x0005 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK7_SUMMATION_DELIVERED   ( 0x0006 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK8_SUMMATION_DELIVERED   ( 0x0007 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK9_SUMMATION_DELIVERED   ( 0x0008 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK10_SUMMATION_DELIVERED  ( 0x0009 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK11_SUMMATION_DELIVERED  ( 0x000A | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK12_SUMMATION_DELIVERED  ( 0x000B | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK13_SUMMATION_DELIVERED  ( 0x000C | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK14_SUMMATION_DELIVERED  ( 0x000D | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK15_SUMMATION_DELIVERED  ( 0x000E | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_NO_TIER_BLOCK16_SUMMATION_DELIVERED  ( 0x000F | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 1
#define ATTRID_SE_CURRENT_TIER1_BLOCK1_SUMMATION_DELIVERED     ( 0x0010 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK2_SUMMATION_DELIVERED     ( 0x0011 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK3_SUMMATION_DELIVERED     ( 0x0012 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK4_SUMMATION_DELIVERED     ( 0x0013 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK5_SUMMATION_DELIVERED     ( 0x0014 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK6_SUMMATION_DELIVERED     ( 0x0015 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK7_SUMMATION_DELIVERED     ( 0x0016 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK8_SUMMATION_DELIVERED     ( 0x0017 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK9_SUMMATION_DELIVERED     ( 0x0018 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK10_SUMMATION_DELIVERED    ( 0x0019 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK11_SUMMATION_DELIVERED    ( 0x001A | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK12_SUMMATION_DELIVERED    ( 0x001B | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK13_SUMMATION_DELIVERED    ( 0x001C | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK14_SUMMATION_DELIVERED    ( 0x001D | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK15_SUMMATION_DELIVERED    ( 0x001E | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER1_BLOCK16_SUMMATION_DELIVERED    ( 0x001F | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 2
#define ATTRID_SE_CURRENT_TIER2_BLOCK1_SUMMATION_DELIVERED     ( 0x0020 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK2_SUMMATION_DELIVERED     ( 0x0021 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK3_SUMMATION_DELIVERED     ( 0x0022 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK4_SUMMATION_DELIVERED     ( 0x0023 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK5_SUMMATION_DELIVERED     ( 0x0024 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK6_SUMMATION_DELIVERED     ( 0x0025 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK7_SUMMATION_DELIVERED     ( 0x0026 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK8_SUMMATION_DELIVERED     ( 0x0027 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK9_SUMMATION_DELIVERED     ( 0x0028 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK10_SUMMATION_DELIVERED    ( 0x0029 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK11_SUMMATION_DELIVERED    ( 0x002A | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK12_SUMMATION_DELIVERED    ( 0x002B | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK13_SUMMATION_DELIVERED    ( 0x002C | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK14_SUMMATION_DELIVERED    ( 0x002D | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK15_SUMMATION_DELIVERED    ( 0x002E | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER2_BLOCK16_SUMMATION_DELIVERED    ( 0x002F | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 3
#define ATTRID_SE_CURRENT_TIER3_BLOCK1_SUMMATION_DELIVERED     ( 0x0030 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK2_SUMMATION_DELIVERED     ( 0x0031 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK3_SUMMATION_DELIVERED     ( 0x0032 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK4_SUMMATION_DELIVERED     ( 0x0033 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK5_SUMMATION_DELIVERED     ( 0x0034 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK6_SUMMATION_DELIVERED     ( 0x0035 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK7_SUMMATION_DELIVERED     ( 0x0036 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK8_SUMMATION_DELIVERED     ( 0x0037 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK9_SUMMATION_DELIVERED     ( 0x0038 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK10_SUMMATION_DELIVERED    ( 0x0039 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK11_SUMMATION_DELIVERED    ( 0x003A | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK12_SUMMATION_DELIVERED    ( 0x003B | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK13_SUMMATION_DELIVERED    ( 0x003C | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK14_SUMMATION_DELIVERED    ( 0x003D | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK15_SUMMATION_DELIVERED    ( 0x003E | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER3_BLOCK16_SUMMATION_DELIVERED    ( 0x003F | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 4
#define ATTRID_SE_CURRENT_TIER4_BLOCK1_SUMMATION_DELIVERED     ( 0x0040 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK2_SUMMATION_DELIVERED     ( 0x0041 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK3_SUMMATION_DELIVERED     ( 0x0042 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK4_SUMMATION_DELIVERED     ( 0x0043 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK5_SUMMATION_DELIVERED     ( 0x0044 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK6_SUMMATION_DELIVERED     ( 0x0045 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK7_SUMMATION_DELIVERED     ( 0x0046 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK8_SUMMATION_DELIVERED     ( 0x0047 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK9_SUMMATION_DELIVERED     ( 0x0048 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK10_SUMMATION_DELIVERED    ( 0x0049 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK11_SUMMATION_DELIVERED    ( 0x004A | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK12_SUMMATION_DELIVERED    ( 0x004B | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK13_SUMMATION_DELIVERED    ( 0x004C | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK14_SUMMATION_DELIVERED    ( 0x004D | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK15_SUMMATION_DELIVERED    ( 0x004E | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER4_BLOCK16_SUMMATION_DELIVERED    ( 0x004F | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 5
#define ATTRID_SE_CURRENT_TIER5_BLOCK1_SUMMATION_DELIVERED     ( 0x0050 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK2_SUMMATION_DELIVERED     ( 0x0051 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK3_SUMMATION_DELIVERED     ( 0x0052 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK4_SUMMATION_DELIVERED     ( 0x0053 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK5_SUMMATION_DELIVERED     ( 0x0054 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK6_SUMMATION_DELIVERED     ( 0x0055 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK7_SUMMATION_DELIVERED     ( 0x0056 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK8_SUMMATION_DELIVERED     ( 0x0057 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK9_SUMMATION_DELIVERED     ( 0x0058 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK10_SUMMATION_DELIVERED    ( 0x0059 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK11_SUMMATION_DELIVERED    ( 0x005A | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK12_SUMMATION_DELIVERED    ( 0x005B | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK13_SUMMATION_DELIVERED    ( 0x005C | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK14_SUMMATION_DELIVERED    ( 0x005D | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK15_SUMMATION_DELIVERED    ( 0x005E | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER5_BLOCK16_SUMMATION_DELIVERED    ( 0x005F | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 6
#define ATTRID_SE_CURRENT_TIER6_BLOCK1_SUMMATION_DELIVERED     ( 0x0060 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK2_SUMMATION_DELIVERED     ( 0x0061 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK3_SUMMATION_DELIVERED     ( 0x0062 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK4_SUMMATION_DELIVERED     ( 0x0063 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK5_SUMMATION_DELIVERED     ( 0x0064 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK6_SUMMATION_DELIVERED     ( 0x0065 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK7_SUMMATION_DELIVERED     ( 0x0066 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK8_SUMMATION_DELIVERED     ( 0x0067 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK9_SUMMATION_DELIVERED     ( 0x0068 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK10_SUMMATION_DELIVERED    ( 0x0069 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK11_SUMMATION_DELIVERED    ( 0x006A | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK12_SUMMATION_DELIVERED    ( 0x006B | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK13_SUMMATION_DELIVERED    ( 0x006C | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK14_SUMMATION_DELIVERED    ( 0x006D | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK15_SUMMATION_DELIVERED    ( 0x006E | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER6_BLOCK16_SUMMATION_DELIVERED    ( 0x006F | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 7
#define ATTRID_SE_CURRENT_TIER7_BLOCK1_SUMMATION_DELIVERED     ( 0x0070 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK2_SUMMATION_DELIVERED     ( 0x0071 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK3_SUMMATION_DELIVERED     ( 0x0072 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK4_SUMMATION_DELIVERED     ( 0x0073 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK5_SUMMATION_DELIVERED     ( 0x0074 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK6_SUMMATION_DELIVERED     ( 0x0075 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK7_SUMMATION_DELIVERED     ( 0x0076 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK8_SUMMATION_DELIVERED     ( 0x0077 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK9_SUMMATION_DELIVERED     ( 0x0078 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK10_SUMMATION_DELIVERED    ( 0x0079 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK11_SUMMATION_DELIVERED    ( 0x007A | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK12_SUMMATION_DELIVERED    ( 0x007B | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK13_SUMMATION_DELIVERED    ( 0x007C | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK14_SUMMATION_DELIVERED    ( 0x007D | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK15_SUMMATION_DELIVERED    ( 0x007E | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER7_BLOCK16_SUMMATION_DELIVERED    ( 0x007F | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 8
#define ATTRID_SE_CURRENT_TIER8_BLOCK1_SUMMATION_DELIVERED     ( 0x0080 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK2_SUMMATION_DELIVERED     ( 0x0081 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK3_SUMMATION_DELIVERED     ( 0x0082 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK4_SUMMATION_DELIVERED     ( 0x0083 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK5_SUMMATION_DELIVERED     ( 0x0084 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK6_SUMMATION_DELIVERED     ( 0x0085 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK7_SUMMATION_DELIVERED     ( 0x0086 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK8_SUMMATION_DELIVERED     ( 0x0087 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK9_SUMMATION_DELIVERED     ( 0x0088 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK10_SUMMATION_DELIVERED    ( 0x0089 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK11_SUMMATION_DELIVERED    ( 0x008A | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK12_SUMMATION_DELIVERED    ( 0x008B | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK13_SUMMATION_DELIVERED    ( 0x008C | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK14_SUMMATION_DELIVERED    ( 0x008D | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK15_SUMMATION_DELIVERED    ( 0x008E | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER8_BLOCK16_SUMMATION_DELIVERED    ( 0x008F | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 9
#define ATTRID_SE_CURRENT_TIER9_BLOCK1_SUMMATION_DELIVERED     ( 0x0090 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK2_SUMMATION_DELIVERED     ( 0x0091 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK3_SUMMATION_DELIVERED     ( 0x0092 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK4_SUMMATION_DELIVERED     ( 0x0093 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK5_SUMMATION_DELIVERED     ( 0x0094 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK6_SUMMATION_DELIVERED     ( 0x0095 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK7_SUMMATION_DELIVERED     ( 0x0096 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK8_SUMMATION_DELIVERED     ( 0x0097 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK9_SUMMATION_DELIVERED     ( 0x0098 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK10_SUMMATION_DELIVERED    ( 0x0099 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK11_SUMMATION_DELIVERED    ( 0x009A | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK12_SUMMATION_DELIVERED    ( 0x009B | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK13_SUMMATION_DELIVERED    ( 0x009C | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK14_SUMMATION_DELIVERED    ( 0x009D | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK15_SUMMATION_DELIVERED    ( 0x009E | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER9_BLOCK16_SUMMATION_DELIVERED    ( 0x009F | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 10
#define ATTRID_SE_CURRENT_TIER10_BLOCK1_SUMMATION_DELIVERED     ( 0x00A0 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK2_SUMMATION_DELIVERED     ( 0x00A1 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK3_SUMMATION_DELIVERED     ( 0x00A2 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK4_SUMMATION_DELIVERED     ( 0x00A3 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK5_SUMMATION_DELIVERED     ( 0x00A4 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK6_SUMMATION_DELIVERED     ( 0x00A5 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK7_SUMMATION_DELIVERED     ( 0x00A6 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK8_SUMMATION_DELIVERED     ( 0x00A7 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK9_SUMMATION_DELIVERED     ( 0x00A8 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK10_SUMMATION_DELIVERED    ( 0x00A9 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK11_SUMMATION_DELIVERED    ( 0x00AA | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK12_SUMMATION_DELIVERED    ( 0x00AB | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK13_SUMMATION_DELIVERED    ( 0x00AC | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK14_SUMMATION_DELIVERED    ( 0x00AD | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK15_SUMMATION_DELIVERED    ( 0x00AE | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER10_BLOCK16_SUMMATION_DELIVERED    ( 0x00AF | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 11
#define ATTRID_SE_CURRENT_TIER11_BLOCK1_SUMMATION_DELIVERED     ( 0x00B0 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK2_SUMMATION_DELIVERED     ( 0x00B1 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK3_SUMMATION_DELIVERED     ( 0x00B2 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK4_SUMMATION_DELIVERED     ( 0x00B3 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK5_SUMMATION_DELIVERED     ( 0x00B4 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK6_SUMMATION_DELIVERED     ( 0x00B5 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK7_SUMMATION_DELIVERED     ( 0x00B6 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK8_SUMMATION_DELIVERED     ( 0x00B7 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK9_SUMMATION_DELIVERED     ( 0x00B8 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK10_SUMMATION_DELIVERED    ( 0x00B9 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK11_SUMMATION_DELIVERED    ( 0x00BA | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK12_SUMMATION_DELIVERED    ( 0x00BB | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK13_SUMMATION_DELIVERED    ( 0x00BC | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK14_SUMMATION_DELIVERED    ( 0x00BD | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK15_SUMMATION_DELIVERED    ( 0x00BE | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER11_BLOCK16_SUMMATION_DELIVERED    ( 0x00BF | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 12
#define ATTRID_SE_CURRENT_TIER12_BLOCK1_SUMMATION_DELIVERED     ( 0x00C0 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK2_SUMMATION_DELIVERED     ( 0x00C1 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK3_SUMMATION_DELIVERED     ( 0x00C2 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK4_SUMMATION_DELIVERED     ( 0x00C3 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK5_SUMMATION_DELIVERED     ( 0x00C4 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK6_SUMMATION_DELIVERED     ( 0x00C5 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK7_SUMMATION_DELIVERED     ( 0x00C6 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK8_SUMMATION_DELIVERED     ( 0x00C7 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK9_SUMMATION_DELIVERED     ( 0x00C8 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK10_SUMMATION_DELIVERED    ( 0x00C9 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK11_SUMMATION_DELIVERED    ( 0x00CA | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK12_SUMMATION_DELIVERED    ( 0x00CB | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK13_SUMMATION_DELIVERED    ( 0x00CC | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK14_SUMMATION_DELIVERED    ( 0x00CD | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK15_SUMMATION_DELIVERED    ( 0x00CE | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER12_BLOCK16_SUMMATION_DELIVERED    ( 0x00CF | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 13
#define ATTRID_SE_CURRENT_TIER13_BLOCK1_SUMMATION_DELIVERED     ( 0x00D0 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK2_SUMMATION_DELIVERED     ( 0x00D1 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK3_SUMMATION_DELIVERED     ( 0x00D2 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK4_SUMMATION_DELIVERED     ( 0x00D3 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK5_SUMMATION_DELIVERED     ( 0x00D4 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK6_SUMMATION_DELIVERED     ( 0x00D5 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK7_SUMMATION_DELIVERED     ( 0x00D6 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK8_SUMMATION_DELIVERED     ( 0x00D7 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK9_SUMMATION_DELIVERED     ( 0x00D8 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK10_SUMMATION_DELIVERED    ( 0x00D9 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK11_SUMMATION_DELIVERED    ( 0x00DA | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK12_SUMMATION_DELIVERED    ( 0x00DB | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK13_SUMMATION_DELIVERED    ( 0x00DC | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK14_SUMMATION_DELIVERED    ( 0x00DD | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK15_SUMMATION_DELIVERED    ( 0x00DE | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER13_BLOCK16_SUMMATION_DELIVERED    ( 0x00DF | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 14
#define ATTRID_SE_CURRENT_TIER14_BLOCK1_SUMMATION_DELIVERED     ( 0x00E0 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK2_SUMMATION_DELIVERED     ( 0x00E1 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK3_SUMMATION_DELIVERED     ( 0x00E2 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK4_SUMMATION_DELIVERED     ( 0x00E3 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK5_SUMMATION_DELIVERED     ( 0x00E4 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK6_SUMMATION_DELIVERED     ( 0x00E5 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK7_SUMMATION_DELIVERED     ( 0x00E6 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK8_SUMMATION_DELIVERED     ( 0x00E7 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK9_SUMMATION_DELIVERED     ( 0x00E8 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK10_SUMMATION_DELIVERED    ( 0x00E9 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK11_SUMMATION_DELIVERED    ( 0x00EA | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK12_SUMMATION_DELIVERED    ( 0x00EB | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK13_SUMMATION_DELIVERED    ( 0x00EC | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK14_SUMMATION_DELIVERED    ( 0x00ED | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK15_SUMMATION_DELIVERED    ( 0x00EE | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER14_BLOCK16_SUMMATION_DELIVERED    ( 0x00EF | ATTRID_MASK_SE_BLOCK_INFORMATION )
// Tier 15
#define ATTRID_SE_CURRENT_TIER15_BLOCK1_SUMMATION_DELIVERED     ( 0x00F0 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK2_SUMMATION_DELIVERED     ( 0x00F1 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK3_SUMMATION_DELIVERED     ( 0x00F2 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK4_SUMMATION_DELIVERED     ( 0x00F3 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK5_SUMMATION_DELIVERED     ( 0x00F4 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK6_SUMMATION_DELIVERED     ( 0x00F5 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK7_SUMMATION_DELIVERED     ( 0x00F6 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK8_SUMMATION_DELIVERED     ( 0x00F7 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK9_SUMMATION_DELIVERED     ( 0x00F8 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK10_SUMMATION_DELIVERED    ( 0x00F9 | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK11_SUMMATION_DELIVERED    ( 0x00FA | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK12_SUMMATION_DELIVERED    ( 0x00FB | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK13_SUMMATION_DELIVERED    ( 0x00FC | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK14_SUMMATION_DELIVERED    ( 0x00FD | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK15_SUMMATION_DELIVERED    ( 0x00FE | ATTRID_MASK_SE_BLOCK_INFORMATION )
#define ATTRID_SE_CURRENT_TIER15_BLOCK16_SUMMATION_DELIVERED    ( 0x00FF | ATTRID_MASK_SE_BLOCK_INFORMATION )

// Simple Metering Server Cluster - Alarms Attributes 0x08
#define ATTRID_SE_GENERIC_ALARM_MASK                 ( 0x0000 | ATTRID_MASK_SE_ALARMS )
#define ATTRID_SE_ELECTRICITY_ALARM_MASK             ( 0x0001 | ATTRID_MASK_SE_ALARMS )
#define ATTRID_SE_GEN_FLOW_PRESSURE_ALARM_MASK       ( 0x0002 | ATTRID_MASK_SE_ALARMS )
#define ATTRID_SE_WATER_SPECIFIC_ALARM_MASK          ( 0x0003 | ATTRID_MASK_SE_ALARMS )
#define ATTRID_SE_HEAT_COOL_SPECIFIC_ALARM_MASK      ( 0x0004 | ATTRID_MASK_SE_ALARMS )
#define ATTRID_SE_GAS_SPECIFIC_ALARM_MASK            ( 0x0005 | ATTRID_MASK_SE_ALARMS )
#define ATTRID_SE_MANUFACTURE_ALARM_MASK             ( 0x0006 | ATTRID_MASK_SE_ALARMS )

// Simple Metering Server Cluster - Block Information Set (Received) Attributes 0x09
#define ATTRID_SE_CURRENT_TIER_X_BLOCK_Y_RECEIVED(X, Y)    ( ((((X)&0xF)<<4) | (((Y)&0xF)-1)) | ATTRID_MASK_SE_BLOCK_INFORMATION_RECEIVED )

// Simple Metering Server Cluster - Billing Attributes 0x0A
#define ATTRID_SE_BILL_TO_DATE                       ( 0x0000 | ATTRID_MASK_SE_BILLING )
#define ATTRID_SE_BILL_TO_DATE_TIME_STAMP            ( 0x0001 | ATTRID_MASK_SE_BILLING )
#define ATTRID_SE_PROJECTED_BILL                     ( 0x0002 | ATTRID_MASK_SE_BILLING )
#define ATTRID_SE_PROJECTED_BILL_TIME_STAMP          ( 0x0003 | ATTRID_MASK_SE_BILLING )

// Simple Meter Client Cluster Attributes Sets
#define ATTRID_MASK_SE_NOTIFICATION_SET              0x0000
#define ATTRID_MASK_SE_MIRROR_CONFIGURATION_SET      0x0001

// Simple Metering Client Cluster - Notification Attributes 0x00
#define ATTRID_SE_NOTIFICATION_CONTROL_FLAGS          ( 0x0000 | ATTRID_MASK_SE_NOTIFICATION_SET )
#define ATTRID_SE_NOTIFICATION_FLAGS                  ( 0x0001 | ATTRID_MASK_SE_NOTIFICATION_SET )
#define ATTRID_SE_PRICE_NOTIFICATION_FLAGS            ( 0x0002 | ATTRID_MASK_SE_NOTIFICATION_SET )
#define ATTRID_SE_CALENDAR_NOTIFICATION_FLAGS         ( 0x0003 | ATTRID_MASK_SE_NOTIFICATION_SET )
#define ATTRID_SE_PRE_PAY_NOTIFICATION_FLAGS          ( 0x0004 | ATTRID_MASK_SE_NOTIFICATION_SET )
#define ATTRID_SE_DEVICE_MANAGEMENT_FLAGS             ( 0x0005 | ATTRID_MASK_SE_NOTIFICATION_SET )

// Simple Metering Client Cluster - Mirror Configuration Attributes 0x01
#define ATTRID_SE_CHANGE_REPORTING_PROFILE            ( 0x0000 | ATTRID_MASK_SE_MIRROR_CONFIGURATION_SET )

// Demand Response Client Cluster Attributes
#define ATTRID_SE_UTILITY_DEFINED_GROUP               0x0000
#define ATTRID_SE_START_RANDOMIZE_MINUTES             0x0001
#define ATTRID_SE_STOP_RANDOMIZE_MINUTES              0x0002

// Price Cluster Attribute Sets
#define ATTRID_MASK_SE_TIER_LABEL               0x0000
#define ATTRID_MASK_SE_BLOCK_THRESHOLD          0x0100
#define ATTRID_MASK_SE_BLOCK_PERIOD             0x0200
#define ATTRID_MASK_SE_COMMODITY                0x0300
#define ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION  0x0400
#define ATTRID_MASK_SE_EXT_PRICE_INFORMATION    0x0500
#define ATTRID_MASK_SE_TARIFF_INFORMATION       0x0600
#define ATTRID_MASK_SE_BILLING_INFORMATION      0x0700
#define ATTRID_MASK_SE_CREDIT_PAYMENT           0x0800
#define ATTRID_MASK_SE_TAX_CONTROL              0x0900
#define ATTRID_MASK_SE_EXPORT_TIER_LABEL        0x8000
#define ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD   0x8100
#define ATTRID_MASK_SE_EXPORT_BLOCK_PERIOD      0x8200
#define ATTRID_MASK_SE_EXPORT_BLOCK_PRICE_INFO  0x8400
#define ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO    0x8500
#define ATTRID_MASK_SE_EXPORT_TARIFF_INFO       0x8600
#define ATTRID_MASK_SE_EXPORT_BILLING_INFO      0x8700

// Price Cluster - Tier Label Attributes 0x00
#define ATTRID_SE_TIER1_PRICE_LABEL     ( 0x0000 | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER2_PRICE_LABEL     ( 0x0001 | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER3_PRICE_LABEL     ( 0x0002 | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER4_PRICE_LABEL     ( 0x0003 | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER5_PRICE_LABEL     ( 0x0004 | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER6_PRICE_LABEL     ( 0x0005 | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER7_PRICE_LABEL     ( 0x0006 | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER8_PRICE_LABEL     ( 0x0007 | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER9_PRICE_LABEL     ( 0x0008 | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER10_PRICE_LABEL    ( 0x0009 | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER11_PRICE_LABEL    ( 0x000A | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER12_PRICE_LABEL    ( 0x000B | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER13_PRICE_LABEL    ( 0x000C | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER14_PRICE_LABEL    ( 0x000D | ATTRID_MASK_SE_TIER_LABEL )
#define ATTRID_SE_TIER15_PRICE_LABEL    ( 0x000E | ATTRID_MASK_SE_TIER_LABEL )

// Price Cluster - Block Threshold Attributes 0x01
#define ATTRID_SE_BLOCK1_THRESHOLD       ( 0x0000 | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK2_THRESHOLD       ( 0x0001 | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK3_THRESHOLD       ( 0x0002 | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK4_THRESHOLD       ( 0x0003 | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK5_THRESHOLD       ( 0x0004 | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK6_THRESHOLD       ( 0x0005 | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK7_THRESHOLD       ( 0x0006 | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK8_THRESHOLD       ( 0x0007 | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK9_THRESHOLD       ( 0x0008 | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK10_THRESHOLD      ( 0x0009 | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK11_THRESHOLD      ( 0x000A | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK12_THRESHOLD      ( 0x000B | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK13_THRESHOLD      ( 0x000C | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK14_THRESHOLD      ( 0x000D | ATTRID_MASK_SE_BLOCK_THRESHOLD )
#define ATTRID_SE_BLOCK15_THRESHOLD      ( 0x000E | ATTRID_MASK_SE_BLOCK_THRESHOLD )

// Price Cluster - Block Period Attributes 0x02
#define ATTRID_SE_START_OF_BLOCK_PERIOD      ( 0x0000 | ATTRID_MASK_SE_BLOCK_PERIOD )
#define ATTRID_SE_BLOCK_PERIOD_DURATION      ( 0x0001 | ATTRID_MASK_SE_BLOCK_PERIOD )
#define ATTRID_SE_THRESHOLD_MULTIPLIER       ( 0x0002 | ATTRID_MASK_SE_BLOCK_PERIOD )
#define ATTRID_SE_THRESHOLD_DIVISOR          ( 0x0003 | ATTRID_MASK_SE_BLOCK_PERIOD )

// Price Cluster - Commodity Attributes 0x03
#define ATTRID_SE_COMMODITY_TYPE             ( 0x0000 | ATTRID_MASK_SE_COMMODITY )
#define ATTRID_SE_STANDING_CHARGE            ( 0x0001 | ATTRID_MASK_SE_COMMODITY )

// Price Cluster - Block Price Information Attributes 0x04
#define ATTRID_SE_NO_TIER_BLOCK1_PRICE   ( 0x0000 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK2_PRICE   ( 0x0001 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK3_PRICE   ( 0x0002 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK4_PRICE   ( 0x0003 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK5_PRICE   ( 0x0004 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK6_PRICE   ( 0x0005 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK7_PRICE   ( 0x0006 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK8_PRICE   ( 0x0007 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK9_PRICE   ( 0x0008 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK10_PRICE  ( 0x0009 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK11_PRICE  ( 0x000A | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK12_PRICE  ( 0x000B | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK13_PRICE  ( 0x000C | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK14_PRICE  ( 0x000D | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK15_PRICE  ( 0x000E | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_NO_TIER_BLOCK16_PRICE  ( 0x000F | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 1
#define ATTRID_SE_TIER1_BLOCK1_PRICE     ( 0x0010 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK2_PRICE     ( 0x0011 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK3_PRICE     ( 0x0012 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK4_PRICE     ( 0x0013 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK5_PRICE     ( 0x0014 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK6_PRICE     ( 0x0015 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK7_PRICE     ( 0x0016 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK8_PRICE     ( 0x0017 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK9_PRICE     ( 0x0018 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK10_PRICE    ( 0x0019 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK11_PRICE    ( 0x001A | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK12_PRICE    ( 0x001B | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK13_PRICE    ( 0x001C | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK14_PRICE    ( 0x001D | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK15_PRICE    ( 0x001E | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER1_BLOCK16_PRICE    ( 0x001F | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 2
#define ATTRID_SE_TIER2_BLOCK1_PRICE     ( 0x0020 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK2_PRICE     ( 0x0021 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK3_PRICE     ( 0x0022 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK4_PRICE     ( 0x0023 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK5_PRICE     ( 0x0024 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK6_PRICE     ( 0x0025 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK7_PRICE     ( 0x0026 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK8_PRICE     ( 0x0027 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK9_PRICE     ( 0x0028 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK10_PRICE    ( 0x0029 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK11_PRICE    ( 0x002A | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK12_PRICE    ( 0x002B | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK13_PRICE    ( 0x002C | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK14_PRICE    ( 0x002D | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK15_PRICE    ( 0x002E | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER2_BLOCK16_PRICE    ( 0x002F | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 3
#define ATTRID_SE_TIER3_BLOCK1_PRICE     ( 0x0030 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK2_PRICE     ( 0x0031 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK3_PRICE     ( 0x0032 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK4_PRICE     ( 0x0033 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK5_PRICE     ( 0x0034 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK6_PRICE     ( 0x0035 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK7_PRICE     ( 0x0036 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK8_PRICE     ( 0x0037 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK9_PRICE     ( 0x0038 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK10_PRICE    ( 0x0039 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK11_PRICE    ( 0x003A | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK12_PRICE    ( 0x003B | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK13_PRICE    ( 0x003C | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK14_PRICE    ( 0x003D | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK15_PRICE    ( 0x003E | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER3_BLOCK16_PRICE    ( 0x003F | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 4
#define ATTRID_SE_TIER4_BLOCK1_PRICE     ( 0x0040 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK2_PRICE     ( 0x0041 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK3_PRICE     ( 0x0042 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK4_PRICE     ( 0x0043 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK5_PRICE     ( 0x0044 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK6_PRICE     ( 0x0045 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK7_PRICE     ( 0x0046 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK8_PRICE     ( 0x0047 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK9_PRICE     ( 0x0048 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK10_PRICE    ( 0x0049 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK11_PRICE    ( 0x004A | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK12_PRICE    ( 0x004B | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK13_PRICE    ( 0x004C | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK14_PRICE    ( 0x004D | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK15_PRICE    ( 0x004E | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER4_BLOCK16_PRICE    ( 0x004F | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 5
#define ATTRID_SE_TIER5_BLOCK1_PRICE     ( 0x0050 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK2_PRICE     ( 0x0051 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK3_PRICE     ( 0x0052 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK4_PRICE     ( 0x0053 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK5_PRICE     ( 0x0054 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK6_PRICE     ( 0x0055 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK7_PRICE     ( 0x0056 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK8_PRICE     ( 0x0057 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK9_PRICE     ( 0x0058 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK10_PRICE    ( 0x0059 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK11_PRICE    ( 0x005A | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK12_PRICE    ( 0x005B | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK13_PRICE    ( 0x005C | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK14_PRICE    ( 0x005D | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK15_PRICE    ( 0x005E | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER5_BLOCK16_PRICE    ( 0x005F | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 6
#define ATTRID_SE_TIER6_BLOCK1_PRICE     ( 0x0060 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK2_PRICE     ( 0x0061 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK3_PRICE     ( 0x0062 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK4_PRICE     ( 0x0063 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK5_PRICE     ( 0x0064 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK6_PRICE     ( 0x0065 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK7_PRICE     ( 0x0066 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK8_PRICE     ( 0x0067 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK9_PRICE     ( 0x0068 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK10_PRICE    ( 0x0069 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK11_PRICE    ( 0x006A | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK12_PRICE    ( 0x006B | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK13_PRICE    ( 0x006C | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK14_PRICE    ( 0x006D | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK15_PRICE    ( 0x006E | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER6_BLOCK16_PRICE    ( 0x006F | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 7
#define ATTRID_SE_TIER7_BLOCK1_PRICE     ( 0x0070 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK2_PRICE     ( 0x0071 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK3_PRICE     ( 0x0072 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK4_PRICE     ( 0x0073 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK5_PRICE     ( 0x0074 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK6_PRICE     ( 0x0075 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK7_PRICE     ( 0x0076 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK8_PRICE     ( 0x0077 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK9_PRICE     ( 0x0078 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK10_PRICE    ( 0x0079 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK11_PRICE    ( 0x007A | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK12_PRICE    ( 0x007B | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK13_PRICE    ( 0x007C | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK14_PRICE    ( 0x007D | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK15_PRICE    ( 0x007E | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER7_BLOCK16_PRICE    ( 0x007F | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 8
#define ATTRID_SE_TIER8_BLOCK1_PRICE     ( 0x0080 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK2_PRICE     ( 0x0081 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK3_PRICE     ( 0x0082 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK4_PRICE     ( 0x0083 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK5_PRICE     ( 0x0084 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK6_PRICE     ( 0x0085 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK7_PRICE     ( 0x0086 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK8_PRICE     ( 0x0087 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK9_PRICE     ( 0x0088 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK10_PRICE    ( 0x0089 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK11_PRICE    ( 0x008A | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK12_PRICE    ( 0x008B | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK13_PRICE    ( 0x008C | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK14_PRICE    ( 0x008D | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK15_PRICE    ( 0x008E | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER8_BLOCK16_PRICE    ( 0x008F | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 9
#define ATTRID_SE_TIER9_BLOCK1_PRICE     ( 0x0090 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK2_PRICE     ( 0x0091 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK3_PRICE     ( 0x0092 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK4_PRICE     ( 0x0093 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK5_PRICE     ( 0x0094 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK6_PRICE     ( 0x0095 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK7_PRICE     ( 0x0096 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK8_PRICE     ( 0x0097 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK9_PRICE     ( 0x0098 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK10_PRICE    ( 0x0099 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK11_PRICE    ( 0x009A | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK12_PRICE    ( 0x009B | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK13_PRICE    ( 0x009C | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK14_PRICE    ( 0x009D | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK15_PRICE    ( 0x009E | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER9_BLOCK16_PRICE    ( 0x009F | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 10
#define ATTRID_SE_TIER10_BLOCK1_PRICE     ( 0x00A0 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK2_PRICE     ( 0x00A1 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK3_PRICE     ( 0x00A2 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK4_PRICE     ( 0x00A3 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK5_PRICE     ( 0x00A4 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK6_PRICE     ( 0x00A5 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK7_PRICE     ( 0x00A6 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK8_PRICE     ( 0x00A7 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK9_PRICE     ( 0x00A8 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK10_PRICE    ( 0x00A9 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK11_PRICE    ( 0x00AA | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK12_PRICE    ( 0x00AB | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK13_PRICE    ( 0x00AC | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK14_PRICE    ( 0x00AD | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK15_PRICE    ( 0x00AE | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER10_BLOCK16_PRICE    ( 0x00AF | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 11
#define ATTRID_SE_TIER11_BLOCK1_PRICE     ( 0x00B0 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK2_PRICE     ( 0x00B1 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK3_PRICE     ( 0x00B2 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK4_PRICE     ( 0x00B3 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK5_PRICE     ( 0x00B4 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK6_PRICE     ( 0x00B5 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK7_PRICE     ( 0x00B6 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK8_PRICE     ( 0x00B7 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK9_PRICE     ( 0x00B8 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK10_PRICE    ( 0x00B9 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK11_PRICE    ( 0x00BA | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK12_PRICE    ( 0x00BB | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK13_PRICE    ( 0x00BC | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK14_PRICE    ( 0x00BD | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK15_PRICE    ( 0x00BE | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER11_BLOCK16_PRICE    ( 0x00BF | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 12
#define ATTRID_SE_TIER12_BLOCK1_PRICE     ( 0x00C0 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK2_PRICE     ( 0x00C1 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK3_PRICE     ( 0x00C2 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK4_PRICE     ( 0x00C3 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK5_PRICE     ( 0x00C4 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK6_PRICE     ( 0x00C5 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK7_PRICE     ( 0x00C6 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK8_PRICE     ( 0x00C7 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK9_PRICE     ( 0x00C8 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK10_PRICE    ( 0x00C9 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK11_PRICE    ( 0x00CA | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK12_PRICE    ( 0x00CB | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK13_PRICE    ( 0x00CC | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK14_PRICE    ( 0x00CD | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK15_PRICE    ( 0x00CE | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER12_BLOCK16_PRICE    ( 0x00CF | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 13
#define ATTRID_SE_TIER13_BLOCK1_PRICE     ( 0x00D0 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK2_PRICE     ( 0x00D1 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK3_PRICE     ( 0x00D2 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK4_PRICE     ( 0x00D3 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK5_PRICE     ( 0x00D4 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK6_PRICE     ( 0x00D5 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK7_PRICE     ( 0x00D6 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK8_PRICE     ( 0x00D7 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK9_PRICE     ( 0x00D8 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK10_PRICE    ( 0x00D9 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK11_PRICE    ( 0x00DA | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK12_PRICE    ( 0x00DB | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK13_PRICE    ( 0x00DC | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK14_PRICE    ( 0x00DD | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK15_PRICE    ( 0x00DE | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER13_BLOCK16_PRICE    ( 0x00DF | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 14
#define ATTRID_SE_TIER14_BLOCK1_PRICE     ( 0x00E0 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK2_PRICE     ( 0x00E1 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK3_PRICE     ( 0x00E2 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK4_PRICE     ( 0x00E3 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK5_PRICE     ( 0x00E4 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK6_PRICE     ( 0x00E5 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK7_PRICE     ( 0x00E6 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK8_PRICE     ( 0x00E7 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK9_PRICE     ( 0x00E8 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK10_PRICE    ( 0x00E9 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK11_PRICE    ( 0x00EA | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK12_PRICE    ( 0x00EB | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK13_PRICE    ( 0x00EC | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK14_PRICE    ( 0x00ED | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK15_PRICE    ( 0x00EE | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER14_BLOCK16_PRICE    ( 0x00EF | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
// Tier 15
#define ATTRID_SE_TIER15_BLOCK1_PRICE     ( 0x00F0 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK2_PRICE     ( 0x00F1 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK3_PRICE     ( 0x00F2 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK4_PRICE     ( 0x00F3 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK5_PRICE     ( 0x00F4 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK6_PRICE     ( 0x00F5 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK7_PRICE     ( 0x00F6 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK8_PRICE     ( 0x00F7 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK9_PRICE     ( 0x00F8 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK10_PRICE    ( 0x00F9 | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK11_PRICE    ( 0x00FA | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK12_PRICE    ( 0x00FB | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK13_PRICE    ( 0x00FC | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK14_PRICE    ( 0x00FD | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK15_PRICE    ( 0x00FE | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )
#define ATTRID_SE_TIER15_BLOCK16_PRICE    ( 0x00FF | ATTRID_MASK_SE_BLOCK_PRICE_INFORMATION )

// Price Cluster - Extended Price Information Attributes 0x05
#define ATTRID_SE_PRICE_TIER_16           ( 0x000F | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_17           ( 0x0010 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_18           ( 0x0011 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_19           ( 0x0012 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_20           ( 0x0013 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_21           ( 0x0014 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_22           ( 0x0015 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_23           ( 0x0016 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_24           ( 0x0017 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_25           ( 0x0018 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_26           ( 0x0019 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_27           ( 0x001A | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_28           ( 0x001B | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_29           ( 0x001C | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_30           ( 0x001D | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_31           ( 0x001E | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_32           ( 0x001F | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_33           ( 0x0020 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_34           ( 0x0021 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_35           ( 0x0022 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_36           ( 0x0023 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_37           ( 0x0024 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_38           ( 0x0025 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_39           ( 0x0026 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_40           ( 0x0027 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_41           ( 0x0028 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_42           ( 0x0029 | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_43           ( 0x002A | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_44           ( 0x002B | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_45           ( 0x002C | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_46           ( 0x002D | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_47           ( 0x002E | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )
#define ATTRID_SE_PRICE_TIER_48           ( 0x002F | ATTRID_MASK_SE_EXT_PRICE_INFORMATION )

// Price Cluster - Tariff Information Attributes 0x06
#define ATTRID_SE_TARIFF_LABEL            ( 0x0010 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_NUM_PRICE_TIERS_IN_USE  ( 0x0011 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_NUM_BLOCK_THRESHOLDS_IN_USE ( 0x0012 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_TIER_BLOCK_MODE         ( 0x0013 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_BLOCK_THRESHOLD_MASK    ( 0x0014 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_PC_UNIT_OF_MEASURE      ( 0x0015 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_CURRENCY                ( 0x0016 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_PRICE_TRAILING_DIGIT    ( 0x0017 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_STANDARD_CHARGE         ( 0x0018 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_CONSERVATION_FACTOR     ( 0x0020 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_CONSERVATION_FACTOR_TRAILING_DIGIT ( 0x0021 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_CALORIFIC_VALUE         ( 0x0022 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_CALORIFIC_VALUE_UNIT    ( 0x0023 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_CALORIFIC_VALUE_TRAILING_DIGIT ( 0x0024 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_CO2                     ( 0x0025 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_CO2_UNIT                ( 0x0026 | ATTRID_MASK_SE_TARIFF_INFORMATION )
#define ATTRID_SE_CO2_TRAILING_DIGIT      ( 0x0027 | ATTRID_MASK_SE_TARIFF_INFORMATION )

// Price Cluster - Billing Information Attributes 0x07
#define ATTRID_SE_CURRENT_BILLING_PERIOD_START     ( 0x0000 | ATTRID_MASK_SE_BILLING_INFORMATION )
#define ATTRID_SE_CURRENT_BILLING_PERIOD_DURATION  ( 0x0001 | ATTRID_MASK_SE_BILLING_INFORMATION )
#define ATTRID_SE_LAST_BILLING_PERIOD_START        ( 0x0002 | ATTRID_MASK_SE_BILLING_INFORMATION )
#define ATTRID_SE_LAST_BILLING_PERIOD_DURATION     ( 0x0003 | ATTRID_MASK_SE_BILLING_INFORMATION )
#define ATTRID_SE_LAST_BILLING_PERIOD_CONSOLIDATED ( 0x0004 | ATTRID_MASK_SE_BILLING_INFORMATION )

// Price Cluster - Credit Payment Attributes 0x08
#define ATTRID_SE_CREDIT_PAYMENT_DUE_DATE          ( 0x0000 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_STATUS            ( 0x0001 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_OVERDUE_AMOUNT    ( 0x0002 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_PAYMENT_DISCOUNT                 ( 0x000A | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_PAYMENT_DISCOUNT_PERIOD          ( 0x000B | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_1                 ( 0x0010 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_DATE_1            ( 0x0011 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_REF_1             ( 0x0012 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_2                 ( 0x0020 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_DATE_2            ( 0x0021 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_REF_2             ( 0x0022 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_3                 ( 0x0030 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_DATE_3            ( 0x0031 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_REF_3             ( 0x0032 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_4                 ( 0x0040 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_DATE_4            ( 0x0041 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_REF_4             ( 0x0042 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_5                 ( 0x0050 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_DATE_5            ( 0x0051 | ATTRID_MASK_SE_CREDIT_PAYMENT )
#define ATTRID_SE_CREDIT_PAYMENT_REF_5             ( 0x0052 | ATTRID_MASK_SE_CREDIT_PAYMENT )

// Price Cluster - Tax Control Attributes 0x09
#define ATTRID_SE_DOMESTIC_PERCENTAGE              ( 0x0000 | ATTRID_MASK_SE_TAX_CONTROL )
#define ATTRID_SE_DOMESTIC_FUEL_TAX_RATE           ( 0x0001 | ATTRID_MASK_SE_TAX_CONTROL )
#define ATTRID_SE_DOMESTIC_FUEL_TAX_RATE_TRAILING_DIGIT  ( 0x0002 | ATTRID_MASK_SE_TAX_CONTROL )

// Price Cluster - Export Tier Label Attributes 0x80
#define ATTRID_SE_EX_TIER1_PRICE_LABEL      ( 0x0000 | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER2_PRICE_LABEL      ( 0x0001 | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER3_PRICE_LABEL      ( 0x0002 | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER4_PRICE_LABEL      ( 0x0003 | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER5_PRICE_LABEL      ( 0x0004 | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER6_PRICE_LABEL      ( 0x0005 | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER7_PRICE_LABEL      ( 0x0006 | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER8_PRICE_LABEL      ( 0x0007 | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER9_PRICE_LABEL      ( 0x0008 | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER10_PRICE_LABEL     ( 0x0009 | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER11_PRICE_LABEL     ( 0x000A | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER12_PRICE_LABEL     ( 0x000B | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER13_PRICE_LABEL     ( 0x000C | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER14_PRICE_LABEL     ( 0x000D | ATTRID_MASK_SE_EXPORT_TIER_LABEL )
#define ATTRID_SE_EX_TIER15_PRICE_LABEL     ( 0x000E | ATTRID_MASK_SE_EXPORT_TIER_LABEL )

// Price Cluster - Export Block Threshold Attributes 0x81
#define ATTRID_SE_EX_BLOCK1_THRESHOLD       ( 0x0000 | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK2_THRESHOLD       ( 0x0001 | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK3_THRESHOLD       ( 0x0002 | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK4_THRESHOLD       ( 0x0003 | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK5_THRESHOLD       ( 0x0004 | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK6_THRESHOLD       ( 0x0005 | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK7_THRESHOLD       ( 0x0006 | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK8_THRESHOLD       ( 0x0007 | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK9_THRESHOLD       ( 0x0008 | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK10_THRESHOLD      ( 0x0009 | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK11_THRESHOLD      ( 0x000A | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK12_THRESHOLD      ( 0x000B | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK13_THRESHOLD      ( 0x000C | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK14_THRESHOLD      ( 0x000D | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )
#define ATTRID_SE_EX_BLOCK15_THRESHOLD      ( 0x000E | ATTRID_MASK_SE_EXPORT_BLOCK_THRESHOLD )

// Price Cluster - Export Block Period Attributes 0x82
#define ATTRID_SE_EX_START_OF_BLOCK_PERIOD  ( 0x0000 | ATTRID_MASK_SE_EXPORT_BLOCK_PERIOD )
#define ATTRID_SE_EX_BLOCK_PERIOD_DURATION  ( 0x0001 | ATTRID_MASK_SE_EXPORT_BLOCK_PERIOD )
#define ATTRID_SE_EX_THRESHOLD_MULTIPLIER   ( 0x0002 | ATTRID_MASK_SE_EXPORT_BLOCK_PERIOD )
#define ATTRID_SE_EX_THRESHOLD_DIVISOR      ( 0x0003 | ATTRID_MASK_SE_EXPORT_BLOCK_PERIOD )

// Price Cluster - Export Block Price Information Attributes 0x84
#define ATTRID_SE_EX_TIER_X_BLOCK_Y_PRICE(X,Y)  (( ((X&0xF)<<4) | ((Y-1)&0xF)) | ATTRID_MASK_SE_EXPORT_BLOCK_PRICE_INFO )

// Price Cluster - Export Extended Price Information Attributes 0x85
#define ATTRID_SE_EX_PRICE_TIER_16           ( 0x000F | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_17           ( 0x0010 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_18           ( 0x0011 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_19           ( 0x0012 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_20           ( 0x0013 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_21           ( 0x0014 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_22           ( 0x0015 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_23           ( 0x0016 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_24           ( 0x0017 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_25           ( 0x0018 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_26           ( 0x0019 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_27           ( 0x001A | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_28           ( 0x001B | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_29           ( 0x001C | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_30           ( 0x001D | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_31           ( 0x001E | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_32           ( 0x001F | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_33           ( 0x0020 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_34           ( 0x0021 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_35           ( 0x0022 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_36           ( 0x0023 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_37           ( 0x0024 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_38           ( 0x0025 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_39           ( 0x0026 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_40           ( 0x0027 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_41           ( 0x0028 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_42           ( 0x0029 | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_43           ( 0x002A | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_44           ( 0x002B | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_45           ( 0x002C | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_46           ( 0x002D | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_47           ( 0x002E | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )
#define ATTRID_SE_EX_PRICE_TIER_48           ( 0x002F | ATTRID_MASK_SE_EXPORT_EXT_PRICE_INFO )

// Price Cluster - Export Tariff Information Attributes 0x86
#define ATTRID_SE_EX_TARIFF_LABEL           ( 0x0010 | ATTRID_MASK_SE_EXPORT_TARIFF_INFO )
#define ATTRID_SE_EX_NUM_PRICE_TIERS_IN_USE ( 0x0011 | ATTRID_MASK_SE_EXPORT_TARIFF_INFO )
#define ATTRID_SE_EX_NUM_BLOCK_THRESHOLDS_IN_USE ( 0x0012 | ATTRID_MASK_SE_EXPORT_TARIFF_INFO )
#define ATTRID_SE_EX_TIER_BLOCK_MODE        ( 0x0013 | ATTRID_MASK_SE_EXPORT_TARIFF_INFO )
#define ATTRID_SE_EX_BLOCK_THRESHOLD_MASK   ( 0x0014 | ATTRID_MASK_SE_EXPORT_TARIFF_INFO )
#define ATTRID_SE_EX_CO2                    ( 0x0025 | ATTRID_MASK_SE_EXPORT_TARIFF_INFO )
#define ATTRID_SE_EX_CO2_UNIT               ( 0x0026 | ATTRID_MASK_SE_EXPORT_TARIFF_INFO )
#define ATTRID_SE_EX_CO2_TRAILING_DIGIT     ( 0x0027 | ATTRID_MASK_SE_EXPORT_TARIFF_INFO )

// Price Cluster - Export Billing Information Attributes 0x87
#define ATTRID_SE_EX_CURRENT_BILLING_PERIOD_START     ( 0x0000 | ATTRID_MASK_SE_EXPORT_BILLING_INFO )
#define ATTRID_SE_EX_CURRENT_BILLING_PERIOD_DURATION  ( 0x0001 | ATTRID_MASK_SE_EXPORT_BILLING_INFO )
#define ATTRID_SE_EX_LAST_BILLING_PERIOD_START        ( 0x0002 | ATTRID_MASK_SE_EXPORT_BILLING_INFO )
#define ATTRID_SE_EX_LAST_BILLING_PERIOD_DURATION     ( 0x0003 | ATTRID_MASK_SE_EXPORT_BILLING_INFO )
#define ATTRID_SE_EX_LAST_BILLING_PERIOD_CONSOLIDATED ( 0x0004 | ATTRID_MASK_SE_EXPORT_BILLING_INFO )

// Prepayment Cluster Attribute Sets
#define ATTRID_MASK_SE_PREPAYMENT_INFO_SET        ( 0x0000 )
#define ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET        ( 0x0100 )
#define ATTRID_MASK_SE_DEBT_ATTRIBUTE_SET         ( 0x0200 )
#ifndef SE_UK_EXT   // SE 1.1
#define ATTRID_MASK_SE_SUPPLY_CONTROL_SET         ( 0x0300 )
#else
#define ATTRID_MASK_SE_ALARMS_SET                 ( 0x0300 )
#endif  // SE_UK_EXT

// Prepayment Cluster - Prepayment Information Set Attributes 0x00
#define ATTRID_SE_PAYMENT_CONTROL                 ( 0x0000 | ATTRID_MASK_SE_PREPAYMENT_INFO_SET )
#define ATTRID_SE_CREDIT_REMAINING                ( 0x0001 | ATTRID_MASK_SE_PREPAYMENT_INFO_SET )
#define ATTRID_SE_EMERGENCY_CREDIT_REMAINING      ( 0x0002 | ATTRID_MASK_SE_PREPAYMENT_INFO_SET )
#define ATTRID_SE_CREDIT_STATUS                   ( 0x0003 | ATTRID_MASK_SE_PREPAYMENT_INFO_SET )
#define ATTRID_SE_EMERGENCY_CREDIT_LIMIT          ( 0x0010 | ATTRID_MASK_SE_PREPAYMENT_INFO_SET )
#define ATTRID_SE_EMERGENCY_CREDIT_THRESHOLD      ( 0x0011 | ATTRID_MASK_SE_PREPAYMENT_INFO_SET )
#define ATTRID_SE_TOTAL_CREDIT_ADDED              ( 0x0020 | ATTRID_MASK_SE_PREPAYMENT_INFO_SET )
#define ATTRID_SE_MAX_CREDIT_LIMIT                ( 0x0021 | ATTRID_MASK_SE_PREPAYMENT_INFO_SET )
#define ATTRID_SE_FRIENDLY_CREDIT_WARNING         ( 0x0030 | ATTRID_MASK_SE_PREPAYMENT_INFO_SET )
#define ATTRID_SE_CUT_OFF_VALUE                   ( 0x0040 | ATTRID_MASK_SE_PREPAYMENT_INFO_SET )
#define ATTRID_SE_PAYMENT_CARD_ID                 ( 0x0080 | ATTRID_MASK_SE_PREPAYMENT_INFO_SET )

// Prepayment Cluster - Top-up Attribute Set Attributes 0x01
#define ATTRID_SE_TOPUP_DATE_TIME_1               ( 0x0000 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_AMOUNT_1                  ( 0x0001 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_ORIGINATING_DEVICE_1            ( 0x0002 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_CODE_1                    ( 0x0003 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_DATE_TIME_2               ( 0x0010 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_AMOUNT_2                  ( 0x0011 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_ORIGINATING_DEVICE_2            ( 0x0012 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_CODE_2                    ( 0x0013 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_DATE_TIME_3               ( 0x0020 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_AMOUNT_3                  ( 0x0021 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_ORIGINATING_DEVICE_3            ( 0x0022 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_CODE_3                    ( 0x0023 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_DATE_TIME_4               ( 0x0030 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_AMOUNT_4                  ( 0x0031 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_ORIGINATING_DEVICE_4            ( 0x0032 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_CODE_4                    ( 0x0033 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_DATE_TIME_5               ( 0x0040 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_AMOUNT_5                  ( 0x0041 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_ORIGINATING_DEVICE_5            ( 0x0042 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )
#define ATTRID_SE_TOPUP_CODE_5                    ( 0x0043 | ATTRID_MASK_SE_TOPUP_ATTRIBUTE_SET )

// Prepayment Cluster - Debt Attribute Set Attributes 0x02
#define ATTRID_SE_FUEL_DEBT_REMAINING             ( 0x0000 | ATTRID_MASK_SE_DEBT_ATTRIBUTE_SET )
#define ATTRID_SE_FUEL_DEBT_RECOVERY_RATE         ( 0x0001 | ATTRID_MASK_SE_DEBT_ATTRIBUTE_SET )
#define ATTRID_SE_FUEL_DEBT_RECOVERY_PERIOD       ( 0x0002 | ATTRID_MASK_SE_DEBT_ATTRIBUTE_SET )
#define ATTRID_SE_NON_FUEL_DEBT_REMAINING         ( 0x0003 | ATTRID_MASK_SE_DEBT_ATTRIBUTE_SET )
#define ATTRID_SE_NON_FUEL_DEBT_RECOVERY_RATE     ( 0x0004 | ATTRID_MASK_SE_DEBT_ATTRIBUTE_SET )
#define ATTRID_SE_NON_FUEL_DEBT_RECOVERY_PERIOD   ( 0x0005 | ATTRID_MASK_SE_DEBT_ATTRIBUTE_SET )

#ifndef SE_UK_EXT   // SE 1.1
// Prepayment Cluster - Supply Control Set Attributes 0x03
#define ATTRID_SE_PROPOSED_CHANGE_PROVIDER_ID               ( 0x0000 | ATTRID_MASK_SE_SUPPLY_CONTROL_SET )
#define ATTRID_SE_PROPOSED_CHANGE_IMPLEMENTATION_TIME       ( 0x0001 | ATTRID_MASK_SE_SUPPLY_CONTROL_SET )
#define ATTRID_SE_PROPOSED_CHANGE_SUPPLY_STATUS             ( 0x0002 | ATTRID_MASK_SE_SUPPLY_CONTROL_SET )
#define ATTRID_SE_DELAYED_SUPPLY_INTERRUPT_VALUE_REMAINING  ( 0x0003 | ATTRID_MASK_SE_SUPPLY_CONTROL_SET )
#define ATTRID_SE_DELAYED_SUPPLY_INTERRUPT_VALUE_TYPE       ( 0x0004 | ATTRID_MASK_SE_SUPPLY_CONTROL_SET )
#else
// Prepayment Cluster - Alarm Set Attributes 0x03
#define ATTRID_SE_PREPAYMENT_ALARM_STATUS                   ( 0x0000 | ATTRID_MASK_SE_ALARMS_SET )
#define ATTRID_SE_PREPAY_GENERIC_ALARM_MASK                 ( 0x0001 | ATTRID_MASK_SE_ALARMS_SET )
#define ATTRID_SE_PREPAY_SWITCH_ALARM_MASK                  ( 0x0002 | ATTRID_MASK_SE_ALARMS_SET )
#define ATTRID_SE_PREPAY_EVENT_ALARM_MASK                   ( 0x0003 | ATTRID_MASK_SE_ALARMS_SET )
#endif

// Tunneling Server Cluster Attributes
#define ATTRID_SE_CLOSE_TUNNEL_TIMEOUT                0x0000

#ifdef SE_UK_EXT
// Device Management Server Cluster Attribute Sets
#define ATTRID_MASK_SE_SUPPLY_CONTROL_SET            0x0000
#define ATTRID_MASK_SE_SUPPLIER_CONTROL_SET          0x0100
#define ATTRID_MASK_SE_TENANCY_CONTROL_SET           0x0200

// Device Management Server Cluster - Supply Control Set Attributes 0x00
#define ATTRID_SE_PROPOSED_CHANGE_SUPPLY_IMPLEM_TIME      ( 0x0000 | ATTRID_MASK_SE_SUPPLY_CONTROL_SET )
#define ATTRID_SE_PROPOSED_CHANGE_SUPPLY_STATUS           ( 0x0001 | ATTRID_MASK_SE_SUPPLY_CONTROL_SET )

// Device Management Server Cluster - Supplier Control Set Attributes 0x01
#define ATTRID_SE_SERVER_SUPPLIER_ID                      ( 0x0000 | ATTRID_MASK_SE_SUPPLIER_CONTROL_SET )
#define ATTRID_SE_SUPPLIER_NAME                           ( 0x0001 | ATTRID_MASK_SE_SUPPLIER_CONTROL_SET )
#define ATTRID_SE_PROPOSED_SUPPLIER_ID                    ( 0x0010 | ATTRID_MASK_SE_SUPPLIER_CONTROL_SET )
#define ATTRID_SE_PROPOSED_SUPPLIER_NAME                  ( 0x0011 | ATTRID_MASK_SE_SUPPLIER_CONTROL_SET )
#define ATTRID_SE_PROPOSED_SUPPLIER_CHANGE_DATE_TIME      ( 0x0012 | ATTRID_MASK_SE_SUPPLIER_CONTROL_SET )
#define ATTRID_SE_PROPOSED_SUPPLIER_CHANGE_CONTROL        ( 0x0013 | ATTRID_MASK_SE_SUPPLIER_CONTROL_SET )
#define ATTRID_SE_SERVER_EX_SUPPLIER_ID                   ( 0x0020 | ATTRID_MASK_SE_SUPPLIER_CONTROL_SET )
#define ATTRID_SE_EX_SUPPLIER_NAME                        ( 0x0021 | ATTRID_MASK_SE_SUPPLIER_CONTROL_SET )
#define ATTRID_SE_EX_PROPOSED_SUPPLIER_ID                 ( 0x0030 | ATTRID_MASK_SE_SUPPLIER_CONTROL_SET )
#define ATTRID_SE_EX_PROPOSED_SUPPLIER_NAME               ( 0x0031 | ATTRID_MASK_SE_SUPPLIER_CONTROL_SET )
#define ATTRID_SE_EX_PROPOSED_SUPPLIER_CHANGE_DATE_TIME   ( 0x0032 | ATTRID_MASK_SE_SUPPLIER_CONTROL_SET )
#define ATTRID_SE_EX_PROPOSED_SUPPLIER_CHANGE_CONTROL     ( 0x0033 | ATTRID_MASK_SE_SUPPLIER_CONTROL_SET )

// Device Management Server Cluster - Tenancy Control Set Attributes 0x02
#define ATTRID_SE_CHANGE_TENANCY_UPDATE_DATE_TIME         ( 0x0000 | ATTRID_MASK_SE_TENANCY_CONTROL_SET )
#define ATTRID_SE_PROPOSED_TENANCY_CHANGE_CONTROL         ( 0x0001 | ATTRID_MASK_SE_TENANCY_CONTROL_SET )

// Device Management Client Cluster Attribute Sets
#define ATTRID_MASK_SE_SUPPLIER_SET                   0x0000
#define ATTRID_MASK_SE_EVENT_CONFIGURATION            0x0100

// Device Management Client Cluster - Supplier Set Attributes 0x00
#define ATTRID_SE_CLIENT_SUPPLIER_ID                      ( 0x0000 | ATTRID_MASK_SE_SUPPLIER_SET )
#define ATTRID_SE_CLIENT_EX_SUPPLIER_ID                   ( 0x0010 | ATTRID_MASK_SE_SUPPLIER_SET )

// Device Management Client Cluster - Event Configuration Set Attributes 0x01
#define ATTRID_SE_METER_COVER_REMOVED                     ( 0x0000 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_METER_COVER_CLOSED                      ( 0x0001 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_STRONG_MAGNETIC_FIELD                   ( 0x0002 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_NO_STRONG_MAGNETIC_FIELD                ( 0x0003 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_BATTERY_FAILURE                         ( 0x0004 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_LOW_BATTERY                             ( 0x0005 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_PROGRAM_MEMORY_ERROR                    ( 0x0006 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_RAM_ERROR                               ( 0x0007 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_NV_MEMORY_ERROR                         ( 0x0008 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MEASUREMENT_SYSTEM_ERROR                ( 0x0009 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_WATCHDOG_ERROR                          ( 0x000A | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_SUPPLY_DISCONNECT_FAILURE               ( 0x000B | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_SUPPLY_CONNECT_FAILURE                  ( 0x000C | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MEASUREMENT_SOFTWARE_CHANGE             ( 0x000D | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_DST_ENABLED                             ( 0x000E | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_DST_DISABLED                            ( 0x000F | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_CLOCK_ADJ_BACKWARD                      ( 0x0010 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_CLOCK_ADJ_FORWARD                       ( 0x0011 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_CLOCK_INVALID                           ( 0x0012 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_COMM_ERROR_HAN                          ( 0x0013 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_COMM_OK_HAN                             ( 0x0014 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_FRAUD_ATTEMPT                           ( 0x0015 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_POWER_LOSS                              ( 0x0016 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_INCORRECT_PROTOCOLS                     ( 0x0017 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_UNUSUAL_HAN_TRAFFIC                     ( 0x0018 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_UNEXPECTED_CLOCK_CHANGE                 ( 0x0019 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_COMMS_USING_UNAUTH_COMPONENT            ( 0x001A | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_ERROR_REG_CLEAR                         ( 0x001B | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_ALARM_REG_CLEAR                         ( 0x001C | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_UNEXPECTED_HW_RESET                     ( 0x001D | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_UNEXPECTED_PROGRAM_EXECUTION            ( 0x001E | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_EVENT_LOG_CLEAR                         ( 0x001F | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MANUAL_DISCONNECT                       ( 0x0020 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MANUAL_CONNECT                          ( 0x0021 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_REMOTE_DISCONNECTION                    ( 0x0022 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_LOCAL_DISCONNECTION                     ( 0x0023 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_LIMIT_THRESHOLD_EXCEEDED                ( 0x0024 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_LIMIT_THRESHOLD_OK                      ( 0x0025 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_LIMIT_THRESHOLD_CHANGED                 ( 0x0026 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MAXIMUM_DEMAND_EXCEEDED                 ( 0x0027 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_PROFILE_CLEARED                         ( 0x0028 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_FW_READY_FOR_ACTIVATION                 ( 0x0029 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_FW_ACTIVATED                            ( 0x002A | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_PATCH_FAILURE                           ( 0x002B | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_TOU_TARIFF_ACTIVATION                   ( 0x002C | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_8X8_TARIFF_ACTIVATED                    ( 0x002D | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_SINGLE_TARIFF_RATE_ACTIVATED            ( 0x002E | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_ASYNC_BILLING_OCURRED                   ( 0x002F | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_SYNC_BILLING_OCURRED                    ( 0x0030 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_INCORRECT_POLARITY                      ( 0x0080 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_CURRENT_NO_VOLTAGE                      ( 0x0081 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_UNDER_VOLTAGE                           ( 0x0082 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_OVER_VOLTAGE                            ( 0x0083 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_NORMAL_VOLTAGE                          ( 0x0084 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_PF_BELOW_THRESHOLD                      ( 0x0085 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_PF_ABOVE_THRESHOLD                      ( 0x0086 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_TERMINAL_COVER_REMOVED                  ( 0x0087 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_TERMINAL_COVER_CLOSED                   ( 0x0088 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_REVERSE_FLOW                            ( 0x00A0 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_TILT_TAMPER                             ( 0x00A1 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_BATTERY_COVER_REMOVED                   ( 0x00A2 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_BATTERY_COVER_CLOSED                    ( 0x00A3 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_EXCESS_FLOW                             ( 0x00A4 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_CREDIT_OK                               ( 0x00C0 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_LOW_CREDIT                              ( 0x00C1 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_EMERGENCY_CREDIT_IN_USE                 ( 0x00C2 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_EMERGENCY_CREDIT_EXHAUSTED              ( 0x00C3 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_ZERO_CREDIT_EC_NOT_SELECTED             ( 0x00C4 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_SUPPLY_ON                               ( 0x00C5 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_SUPPLY_OFF_ARMED                        ( 0x00C6 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_SUPPLY_OFF                              ( 0x00C7 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_DISCOUNT_APPLIED                        ( 0x00C8 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MANUFACTURER_SPECIFIC_A                 ( 0x00E0 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MANUFACTURER_SPECIFIC_B                 ( 0x00E1 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MANUFACTURER_SPECIFIC_C                 ( 0x00E2 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MANUFACTURER_SPECIFIC_D                 ( 0x00E3 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MANUFACTURER_SPECIFIC_E                 ( 0x00E4 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MANUFACTURER_SPECIFIC_F                 ( 0x00E5 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MANUFACTURER_SPECIFIC_G                 ( 0x00E6 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MANUFACTURER_SPECIFIC_H                 ( 0x00E7 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#define ATTRID_SE_MANUFACTURER_SPECIFIC_I                 ( 0x00E8 | ATTRID_MASK_SE_EVENT_CONFIGURATION )
#endif  // SE_UK_EXT

/************************************************************/
/***    SE Profile Command ID                             ***/
/************************************************************/
// Simple Metering Cluster
#define COMMAND_SE_GET_PROFILE_CMD                    0x0000
#define COMMAND_SE_GET_PROFILE_RSP                    0x0000
#define COMMAND_SE_REQ_MIRROR_CMD                     0x0001
#define COMMAND_SE_REQ_MIRROR_RSP                     0x0001
#define COMMAND_SE_MIRROR_REM_CMD                     0x0002
#define COMMAND_SE_MIRROR_REM_RSP                     0x0002
#define COMMAND_SE_REQ_FAST_POLL_MODE_CMD             0x0003
#define COMMAND_SE_REQ_FAST_POLL_MODE_RSP             0x0003
#define COMMAND_SE_GET_SNAPSHOT_CMD                   0x0004
#define COMMAND_SE_GET_SNAPSHOT_RSP                   0x0004
#define COMMAND_SE_TAKE_SNAPSHOT_CMD                  0x0005
#define COMMAND_SE_MIRROR_REPORT_ATTR_RSP             0x0006

// Pricing Cluster
#define COMMAND_SE_GET_CURRENT_PRICE                  0x0000
#define COMMAND_SE_GET_SCHEDULED_PRICE                0x0001
#define COMMAND_SE_PRICE_ACKNOWLEDGEMENT              0x0002
#define COMMAND_SE_GET_BLOCK_PERIOD                   0x0003
#define COMMAND_SE_GET_TARIFF_INFO                    0x0010
#define COMMAND_SE_GET_PRICE_MATRIX                   0x0011
#define COMMAND_SE_GET_BLOCK_THRESHOLD                0x0012
#define COMMAND_SE_GET_CONVERSION_FACTOR              0x0013
#define COMMAND_SE_GET_CALORIFIC_VALUE                0x0014
#define COMMAND_SE_GET_CO2_VALUE                      0x0015
#define COMMAND_SE_GET_BILLING_PERIOD                 0x0020
#define COMMAND_SE_GET_CONSOLIDATED_BILL              0x0021
#define COMMAND_SE_CPP_EVENT_RESPONSE                 0x0030
#define COMMAND_SE_PUBLISH_PRICE                      0x0000
#define COMMAND_SE_PUBLISH_BLOCK_PERIOD               0x0001
#define COMMAND_SE_PUBLISH_TARIFF_INFO                0x0010
#define COMMAND_SE_PUBLISH_PRICE_MATRIX               0x0011
#define COMMAND_SE_PUBLISH_BLOCK_THRESHOLD            0x0012
#define COMMAND_SE_PUBLISH_CONVERSION_FACTOR          0x0013
#define COMMAND_SE_PUBLISH_CALORIFIC_VALUE            0x0014
#define COMMAND_SE_PUBLISH_CO2_VALUE                  0x0015
#define COMMAND_SE_PUBLISH_CPP_EVENT                  0x0016
#define COMMAND_SE_PUBLISH_BILLING_PERIOD             0x0020
#define COMMAND_SE_PUBLISH_CONSOLIDATED_BILL          0x0021
#define COMMAND_SE_PUBLISH_CREDIT_PAYMENT_INFO        0x0022

// Messaging Cluster
#define COMMAND_SE_DISPLAY_MESSAGE                    0x0000
#define COMMAND_SE_CANCEL_MESSAGE                     0x0001
#define COMMAND_SE_GET_LAST_MESSAGE                   0x0000
#define COMMAND_SE_MESSAGE_CONFIRMATION               0x0001

// Demand Response and Load Control Cluster
#define COMMAND_SE_LOAD_CONTROL_EVENT                 0x0000
#define COMMAND_SE_CANCEL_LOAD_CONTROL_EVENT          0x0001
#define COMMAND_SE_CANCEL_ALL_LOAD_CONTROL_EVENT      0x0002
#define COMMAND_SE_REPORT_EVENT_STATUS                0x0000
#define COMMAND_SE_GET_SCHEDULED_EVENT                0x0001

// Prepayment Cluster
#define COMMAND_SE_SEL_AVAIL_EMERGENCY_CREDIT         0x0000
#ifndef SE_UK_EXT   // this is SE 1.1 command definition
#define COMMAND_SE_CHANGE_SUPPLY                      0x0001
#define COMMAND_SE_SUPPLY_STATUS_RESPONSE             0x0000
#else
#define COMMAND_SE_CHANGE_DEBT                        0x0001
#define COMMAND_SE_EMERGENCY_CREDIT_SETUP             0x0002
#define COMMAND_SE_CONSUMER_TOPUP                     0x0003
#define COMMAND_SE_CREDIT_ADJUSTMENT                  0x0004
#define COMMAND_SE_CHANGE_PAYMENT_MODE                0x0005
#define COMMAND_SE_GET_PREPAY_SNAPSHOT                0x0006
#define COMMAND_SE_GET_TOPUP_LOG                      0x0007
#define COMMAND_SE_SET_LOW_CREDIT_WARNING_LEVEL       0x0008
#define COMMAND_SE_GET_DEBT_REPAYMENT_LOG             0x0009
#define COMMAND_SE_GET_PREPAY_SNAPSHOT_RESPONSE       0x0000
#define COMMAND_SE_CHANGE_PAYMENT_MODE_RESPONSE       0x0001
#define COMMAND_SE_CONSUMER_TOPUP_RESPONSE            0x0002
#define COMMAND_SE_GET_COMMANDS                       0x0003
#define COMMAND_SE_PUBLISH_TOPUP_LOG                  0x0004
#define COMMAND_SE_PUBLISH_DEBT_LOG                   0x0005
#endif  // SE_UK_EXT

// Tunneling cluster commands received by the server
#define COMMAND_SE_REQUEST_TUNNEL                     0x0000
#define COMMAND_SE_CLOSE_TUNNEL                       0x0001
#define COMMAND_SE_DATA_CLIENT_SERVER_DIR             0x0002
#define COMMAND_SE_DATA_ERROR_CLIENT_SERVER_DIR       0x0003
#define COMMAND_SE_ACK_CLIENT_SERVER_DIR              0x0004
#define COMMAND_SE_READY_DATA_CLIENT_SERVER_DIR       0x0005
#define COMMAND_SE_GET_SUPP_TUNNEL_PROTOCOLS          0x0006

// Tunneling cluster commands sent by the server
#define COMMAND_SE_REQUEST_TUNNEL_RESPONSE            0x0000
#define COMMAND_SE_DATA_SERVER_CLIENT_DIR             0x0001
#define COMMAND_SE_DATA_ERROR_SERVER_CLIENT_DIR       0x0002
#define COMMAND_SE_ACK_SERVER_CLIENT_DIR              0x0003
#define COMMAND_SE_READY_DATA_SERVER_CLIENT_DIR       0x0004
#define COMMAND_SE_SUPP_TUNNEL_PROTOCOLS_RSP          0x0005
#define COMMAND_SE_TUNNEL_CLOSURE_NOTIFICATION        0x0006

#ifdef SE_UK_EXT   // this is SE 1.1 command definition
// TOU Calendar Cluster
#define COMMAND_SE_GET_CALENDAR                       0x0000
#define COMMAND_SE_GET_DAY_PROFILES                   0x0001
#define COMMAND_SE_GET_WEEK_PROFILES                  0x0002
#define COMMAND_SE_GET_SEASONS                        0x0003
#define COMMAND_SE_GET_SPECIAL_DAYS                   0x0004
#define COMMAND_SE_PUBLISH_CALENDAR                   0x0000
#define COMMAND_SE_PUBLISH_DAY_PROFILE                0x0001
#define COMMAND_SE_PUBLISH_WEEK_PROFILE               0x0002
#define COMMAND_SE_PUBLISH_SEASONS                    0x0003
#define COMMAND_SE_PUBLISH_SPECIAL_DAYS               0x0004

// Device Management Cluster
#define COMMAND_SE_GET_CHANGE_OF_TENANCY              0x0000
#define COMMAND_SE_GET_CHANGE_OF_SUPPLIER             0x0001
#define COMMAND_SE_GET_CHANGE_SUPPLY                  0x0002
#define COMMAND_SE_SUPPLY_STATUS_RESPONSE             0x0003
#define COMMAND_SE_GET_PASSWORD                       0x0004
#define COMMAND_SE_PUBLISH_CHANGE_OF_TENANCY          0x0000
#define COMMAND_SE_PUBLISH_CHANGE_OF_SUPPLIER         0x0001
#define COMMAND_SE_CHANGE_SUPPLY                      0x0002
#define COMMAND_SE_CHANGE_PASSWORD                    0x0003
#define COMMAND_SE_LOCAL_CHANGE_SUPPLY                0x0004
#endif  // SE_UK_EXT

/******************************************************************/
/***        Other Constants                                     ***/
/******************************************************************/

// Current Block
#define CURRENT_BLOCK_NO_BLOCKS_IN_USE                 0x00
#define CURRENT_BLOCK_BLOCK1                           0x01
#define CURRENT_BLOCK_BLOCK2                           0x02
#define CURRENT_BLOCK_BLOCK3                           0x03
#define CURRENT_BLOCK_BLOCK4                           0x04
#define CURRENT_BLOCK_BLOCK5                           0x05
#define CURRENT_BLOCK_BLOCK6                           0x06
#define CURRENT_BLOCK_BLOCK7                           0x07
#define CURRENT_BLOCK_BLOCK8                           0x08
#define CURRENT_BLOCK_BLOCK9                           0x09
#define CURRENT_BLOCK_BLOCK10                          0x0A
#define CURRENT_BLOCK_BLOCK11                          0x0B
#define CURRENT_BLOCK_BLOCK12                          0x0C
#define CURRENT_BLOCK_BLOCK13                          0x0D
#define CURRENT_BLOCK_BLOCK14                          0x0E
#define CURRENT_BLOCK_BLOCK15                          0x0F
#define CURRENT_BLOCK_BLOCK16                          0x10

// Profile Interval Period Timeframes
#define PROFILE_INTERVAL_PERIOD_DAILY                  0
#define PROFILE_INTERVAL_PERIOD_60MIN                  1
#define PROFILE_INTERVAL_PERIOD_30MIN                  2
#define PROFILE_INTERVAL_PERIOD_15MIN                  3
#define PROFILE_INTERVAL_PERIOD_10MIN                  4
#define PROFILE_INTERVAL_PERIOD_7_5MIN                 5
#define PROFILE_INTERVAL_PERIOD_5MIN                   6
#define PROFILE_INTERVAL_PERIOD_2_5MIN                 7

// Profile Interval Status
#define PROFILE_INTERVAL_STAT_SUCCESS               0x00
#define PROFILE_INTERVAL_STAT_UNDEFINED_CHANNEL     0x01
#define PROFILE_INTERVAL_STAT_CHANNEL_NOT_SUPPORT   0x02
#define PROFILE_INTERVAL_STAT_INVALID_END_TIME      0x03
#define PROFILE_INTERVAL_STAT_TOO_MANY_PERIOD       0x04
#define PROFILE_INTERVAL_STAT_NO_INTERVALS          0x05

// Meter Status Attribute Bit Mask - Electricity, Gas, Water, Heat and Cooling
#define STATUS_BITMASK_CHECK_METER                  0x01  // All
#define STATUS_BITMASK_LOW_BATTERY                  0x02  // All
#define STATUS_BITMASK_TAMPER_DETECT                0x04  // All
#define STATUS_BITMASK_POWER_FAILURE                0x08  // Electricity
#define STATUS_BITMASK_PIPE_EMPTY                   0x08  // Water
#define STATUS_BITMASK_TEMPERATURE_SENSOR           0x08  // Heat and Cooling
#define STATUS_BITMASK_POWER_QUALITY                0x10  // Electricity
#define STATUS_BITMASK_LOW_PRESSURE                 0x10  // Gas, Water
#define STATUS_BITMASK_BURST_DETECT                 0x10  // Heat and Cooling
#define STATUS_BITMASK_LEAK_DETECT                  0x20  // All
#define STATUS_BITMASK_SERVICE_DISCONNECT           0x40  // All
#define STATUS_BITMASK_REVERSE_FLOW                 0x80  // Gas, Water
#define STATUS_BITMASK_FLOW_SENSOR                  0x80  // Heat and Cooling

// Command Packet Length in SE 1.0, for backwards compatibility
#define PACKET_LEN_SE_PUBLISH_PRICE_SE_1_0            34

// Command Packet Length
#define PACKET_LEN_SE_PUBLISH_PRICE                   42
#define PACKET_LEN_SE_PRICE_ACKNOWLEDGEMENT           13
#ifdef SE_UK_EXT
#define PACKET_LEN_SE_PUBLISH_BLOCK_PERIOD            18
#else
#define PACKET_LEN_SE_PUBLISH_BLOCK_PERIOD            17
#endif
#define PACKET_LEN_SE_LOAD_CONTROL_EVENT              23
#define PACKET_LEN_SE_GET_SCHEDULED_EVENT             5
#define PACKET_LEN_SE_CANCEL_LOAD_CONTROL_EVENT       12
#define PACKET_LEN_SE_REPORT_EVENT_STATUS_ONLY        18
#define PACKET_LEN_SE_REPORT_EVENT_STATUS             (PACKET_LEN_SE_REPORT_EVENT_STATUS_ONLY + SE_PROFILE_SIGNATURE_LENGTH)
#define PACKET_LEN_SE_METERING_FAST_POLLING_REQ       2
#define PACKET_LEN_SE_METERING_FAST_POLLING_RSP       5
#define PACKET_LEN_SE_SEL_AVAIL_EMERGENCY_CREDIT      7
#ifndef SE_UK_EXT // SE 1.1
#define PACKET_LEN_SE_CHANGE_SUPPLY                   16
#define PACKET_LEN_SE_SUPPLY_STATUS_RESPONSE          9
#endif
#define PACKET_LEN_SE_GET_SNAPSHOT_CMD                7
#define PACKET_LEN_SE_GET_SNAPSHOT_RSP                12
#define PACKET_LEN_SE_MIRROR_REPORT_ATTR_RSP          7

#define PACKET_LEN_SE_MIN_PUBLISH_TARIFF_INFORMATION  33
#define PACKET_LEN_SE_MIN_PUBLISH_PRICE_MATRIX        5
#define PACKET_LEN_SE_MIN_PUBLISH_BLOCK_THRESHOLD     5
#define PACKET_LEN_SE_PUBLISH_CONVERSION_FACTOR       13
#define PACKET_LEN_SE_PUBLISH_CALORIFIC_VALUE         14
#define PACKET_LEN_SE_PUBLISH_CO2_VALUE               15
#define PACKET_LEN_SE_PUBLISH_CPP_EVENT               13
#define PACKET_LEN_SE_PUBLISH_BILLING_PERIOD          12
#define PACKET_LEN_SE_PUBLISH_CONSOLIDATED_BILL       19
#define PACKET_LEN_SE_MIN_PUBLISH_CREDIT_PAYMENT_INFO 22
#define PACKET_LEN_SE_GET_TARIFF_INFO                 6
#define PACKET_LEN_SE_GET_PRICE_MATRIX                4
#define PACKET_LEN_SE_GET_BLOCK_THRESHOLD             4
#define PACKET_LEN_SE_GET_CONVERSION_FACTOR           5
#define PACKET_LEN_SE_GET_CALORIFIC_VALUE             5
#define PACKET_LEN_SE_GET_CO2_VALUE                   6
#define PACKET_LEN_SE_GET_BILLING_PERIOD              6
#define PACKET_LEN_SE_GET_CONSOLIDATED_BILL           6
#define PACKET_LEN_SE_CPP_EVENT_RESPONSE              5

#define PACKET_LEN_SE_TUNNELING_REQUEST               6
#define PACKET_LEN_SE_TUNNELING_RESPONSE              5
#define PACKET_LEN_SE_TUNNELING_CLOSE                 2
#define PACKET_LEN_SE_TUNNELING_TRANSFER_DATA         2
#define PACKET_LEN_SE_TUNNELING_DATA_ERROR            3
#define PACKET_LEN_SE_TUNNELING_DATA_ACK              4
#define PACKET_LEN_SE_TUNNELING_READY_DATA            4
#define PACKET_LEN_SE_TUNNELING_GET_SUPP_PROT         1
#define PACKET_LEN_SE_TUNNELING_SUPP_PROT_RSP         2
#define PACKET_LEN_SE_TUNNELING_PROTOCOL_PAYLOAD      3
#define PACKET_LEN_SE_TUNNELING_TUNNEL_CLOSURE        2

#define PACKET_LEN_SE_MIN_CHANGE_DEBT                 29
#define PACKET_LEN_SE_EMERGENCY_CREDIT_SETUP          12
#define PACKET_LEN_SE_MIN_CONSUMER_TOPUP              2
#define PACKET_LEN_SE_MIN_CREDIT_ADJUSTMENT           12
#define PACKET_LEN_SE_MIN_CHANGE_PAYMENT_MODE         18
#define PACKET_LEN_SE_GET_PREPAY_SNAPSHOT             7
#define PACKET_LEN_SE_GET_TOPUP_LOG                   1
#define PACKET_LEN_SE_SET_LOW_CREDIT_WARNING_LEVEL    1
#define PACKET_LEN_SE_GET_DEBT_REPAYMENT_LOG          2
#define PACKET_LEN_SE_GET_PREPAY_SNAPSHOT_RESPONSE    32
#define PACKET_LEN_SE_CHANGE_PAYMENT_MODE_RESPONSE    13
#define PACKET_LEN_SE_SE_CONSUMER_TOPUP_RESPONSE      10
#define PACKET_LEN_SE_GET_COMMANDS                    1
#define PACKET_LEN_SE_MIN_PUBLISH_TOPUP_LOG           2
#define PACKET_LEN_SE_MIN_PUBLISH_DEBT_LOG            2

#ifdef SE_UK_EXT
#define PACKET_LEN_SE_PUBLISH_CALENDAR                14
#define PACKET_LEN_SE_PUBLISH_DAY_PROFILE             7
#define PACKET_LEN_SE_PUBLISH_WEEK_PROFILE            12
#define PACKET_LEN_SE_PUBLISH_SEASONS                 5
#define PACKET_LEN_SE_PUBLISH_SPECIAL_DAYS            11
#define PACKET_LEN_SE_GET_CALENDAR                    6
#define PACKET_LEN_SE_GET_DAY_PROFILE                 4
#define PACKET_LEN_SE_GET_WEEK_PROFILE                4
#define PACKET_LEN_SE_GET_SEASONS                     4
#define PACKET_LEN_SE_GET_SPECIAL_DAYS                6

#define PACKET_LEN_SE_SUPPLY_STATUS_RESPONSE          13
#define PACKET_LEN_SE_GET_PASSWORD                    1
#define PACKET_LEN_SE_PUBLISH_CHANGE_OF_TENANCY       18
#define PACKET_LEN_SE_PUBLISH_CHANGE_OF_SUPPLIER      23
#define PACKET_LEN_SE_CHANGE_SUPPLY                   19
#define PACKET_LEN_SE_CHANGE_PASSWORD                 2
#define PACKET_LEN_SE_LOCAL_CHANGE_SUPPLY             1
#endif  // SE_UK_EXT

// Maximum value for Command Fields Range Checking
#define MAX_DURATION_IN_MINUTES_SE_LOAD_CONTROL         1440  // One day
#define MAX_CRITICAL_LEVEL_SE_LOAD_CONTROL              0x0F
#define MAX_TEMPERATURE_SETPOINT_SE_LOAD_CONTROL        0x7FFF
#define MIN_AVERAGE_LOAD_ADJUSTMENT_PERCENTAGE_SE       -100
#define MAX_AVERAGE_LOAD_ADJUSTMENT_PERCENTAGE_SE       100
#define MAX_DUTY_CYCLE_SE_LOAD_CONTROL                  100
#define MAX_INTERVAL_CHANNEL_SE_SIMPLE_METERING         1
#define MAX_PROFILE_INTERVAL_PERIOD_SE_SIMPLE_METERING  7
#define MAX_DURATION_IN_MINUTES_FAST_POLL_MODE          15
#define MIN_NUM_PRICE_TIERS                             0x00
#define MAX_NUM_PRICE_TIERS                             0x0F
#define MIN_NUM_BLOCK_THRESHOLDS_AVAILABLE              0x00
#define MAX_NUM_BLOCK_THRESHOLDS_AVAILABLE              0x0F

// Maximum length of fields defined as octet string
#define SE_RATE_LABEL_LEN                   13
#define SE_SITE_ID_LEN                      33
#define SE_METER_SERIAL_NUM_LEN             17
#define SE_DEBT_LABEL_LEN                   12
#define SE_TOPUP_CODE_LEN                   25
#define SE_CREDIT_PAYMENT_REF_LEN           20
#define SE_TARIFF_LABEL_LEN                 20
#define SE_CALENDAR_NAME_LEN                12
#define SE_SUPPLIER_ID_NAME_LEN             17
#define SE_PASSWORD_LEN                     13

// TBD: The spec indicates the signature is a placeholder.
// The max length is not provided.  Use 48 for now.
#define SE_SIGNATURE_LEN                    48

// Device Class Field Bit mask
#define SE_DEVICE_CLASS_HVAC_COMPRESSOR_FURNACE       0x0001
#define SE_DEVICE_CLASS_STRIP_HEATER                  0x0002
#define SE_DEVICE_CLASS_WATER_HEATER                  0x0004
#define SE_DEVICE_CLASS_POOL_PUMP                     0x0008
#define SE_DEVICE_CLASS_SMART_APPLIANCES              0x0010
#define SE_DEVICE_CLASS_IRRIGATION_PUMP               0x0020
#define SE_DEVICE_CLASS_MANAGED_CI_LOADS              0x0040
#define SE_DEVICE_CLASS_SIMPLE_MISC_LOADS             0x0080
#define SE_DEVICE_CLASS_EXTERIOR_LIGHTING             0x0100
#define SE_DEVICE_CLASS_INTERIOR_LIGHTING             0x0200
#define SE_DEVICE_CLASS_ELECTRIC_VEHICLE              0x0400
#define SE_DEVICE_CLASS_GENERATION_SYSTEMS            0x0800

// Criticality Levels
#define SE_CRITICALITY_LEVELS_GREEN                   0x01
#define SE_CRITICALITY_LEVELS_1                       0x02
#define SE_CRITICALITY_LEVELS_2                       0x03
#define SE_CRITICALITY_LEVELS_3                       0x04
#define SE_CRITICALITY_LEVELS_4                       0x05
#define SE_CRITICALITY_LEVELS_5                       0x06
#define SE_CRITICALITY_LEVELS_EMERGENCY               0x07
#define SE_CRITICALITY_LEVELS_PLANNED_OUTAGE          0x08
#define SE_CRITICALITY_LEVELS_SERVICE_DISCONNECT      0x09

// Event Control Field Bit mask
#define SE_EVENT_CONTROL_FIELD_START_TIME             0x01
#define SE_EVENT_CONTROL_FIELD_END_TIME               0x02

// Optional Fields Value
#define SE_OPTIONAL_FIELD_UINT8                       0xFF
#define SE_OPTIONAL_FIELD_UINT16                      0xFFFF
#define SE_OPTIONAL_FIELD_UINT32                      0xFFFFFFFF
#define SE_OPTIONAL_FIELD_TEMPERATURE_SET_POINT       0x8000
#define SE_OPTIONAL_FIELD_INT8                        -128

// Event Status Field Values
#define EVENT_STATUS_LOAD_CONTROL_EVENT_RECEIVED         0x01
#define EVENT_STATUS_LOAD_CONTROL_EVENT_STARTED          0x02
#define EVENT_STATUS_LOAD_CONTROL_EVENT_COMPLETED        0x03
#define EVENT_STATUS_LOAD_CONTROL_USER_OPT_OUT           0x04
#define EVENT_STATUS_LOAD_CONTROL_USER_OPT_IN            0x05
#define EVENT_STATUS_LOAD_CONTROL_EVENT_CANCELLED        0x06
#define EVENT_STATUS_LOAD_CONTROL_EVENT_SUPERSEDED       0x07
#define EVENT_STATUS_LOAD_CONTROL_REJECTED_DUPLICATEID   0xFA
#define EVENT_STATUS_LOAD_CONTROL_REJECTED_EVT_EXPIRED   0xFB
#define EVENT_STATUS_LOAD_CONTROL_REJECTED_EVT_COMPLETED 0xFC
#define EVENT_STATUS_LOAD_CONTROL_REJECTED_UNDEFINED_EVT 0xFD
#define EVENT_STATUS_LOAD_CONTROL_EVENT_REJECTED         0xFE

// Signature type
#define SE_PROFILE_SIGNATURE_TYPE_ECDSA                  0x01

// Other constants
#define SE_PROFILE_SIGNATURE_LENGTH                      42
#define SE_PROFILE_MESSAGE_RESPONSE_LENGTH               20

// SE Messaging
#define SE_PROFILE_MSGCTRL_IMPORTANCE                    2
#define SE_PROFILE_MSGCTRL_PINREQUIRED                   4
#define SE_PROFILE_MSGCTRL_ACCEPTREQUIRED                5
#define SE_PROFILE_MSGCTRL_CONFREQUIRED                  7

// Price Control Field Bit mask
#define SE_PROFILE_PRICE_CONTROL_NOT_USED         0x00
#define SE_PROFILE_PRICEACK_REQUIRED_MASK         0x01

// Payment Control Attribute Bit mask
#define SE_PAYMENT_CTRL_DISC_ENABLED                  0x01
#define SE_PAYMENT_CTRL_RESERVED1                     0x02
#define SE_PAYMENT_CTRL_CREDIT_MGMNT_ENABLED          0x04
#define SE_PAYMENT_CTRL_RESERVED2                     0x08
#define SE_PAYMENT_CTRL_CREDIT_DISP_ENABLED           0x10
#define SE_PAYMENT_CTRL_RESERVED3                     0x20
#define SE_PAYMENT_CTRL_ACCOUNT_BASE                  0x40
#define SE_PAYMENT_CTRL_CONTRACTOR_FITTED             0x80

// Credit Status Attribute Bit mask
#define SE_CREDIT_STATUS_CREDIT_OK                    0x01
#define SE_CREDIT_STATUS_LOW_CREDIT                   0x02
#define SE_CREDIT_STATUS_EMER_CREDIT_ENABLED          0x04
#define SE_CREDIT_STATUS_EMER_CREDIT_AVAILABLE        0x08
#define SE_CREDIT_STATUS_EMER_CREDIT_SELECTED         0x10
#define SE_CREDIT_STATUS_EMER_CREDIT_IN_USE           0x20
#define SE_CREDIT_STATUS_EMER_CREDIT_EXHAUSTED        0x40

// Originating Device Field
#define SE_ORIG_DEV_ENERGY_SERVICE_INTERFACE      ( 0x00FF & ZCL_SE_DEVICEID_ESP )
#define SE_ORIG_DEV_INPREMISES_DISPLAY_DEV        ( 0x00FF & ZCL_SE_DEVICEID_IN_PREMISE_DISPLAY )

// Supply Control Bit mask
#define SE_SUPPLY_CTRL_ACK_REQUIRED               0x01

// Recovery Period Field
#define SE_RECOVERY_PERIOD_PER_HOUR               0x00
#define SE_RECOVERY_PERIOD_PER_DAY                0x01
#define SE_RECOVERY_PERIOD_PER_WEEK               0x02
#define SE_RECOVERY_PERIOD_PER_MONTH              0x03
#define SE_RECOVERY_PERIOD_PER_QUARTER            0x04

// Supply Status Field
#define SE_SUPPLY_OFF                             0x00
#define SE_SUPPLY_OFF_ARMED                       0x01
#define SE_SUPPLY_ON                              0x02

// Meter Snapshot Payload Types
#define SE_SNAPSHOT_TYPE_CSD_AND_RCV_REGISTER     1
#define SE_SNAPSHOT_TYPE_TOU_INFO_RECEIVED        2
#define SE_SNAPSHOT_TYPE_TOU_INFO_DELIVERED       3
#define SE_SNAPSHOT_TYPE_BLOCK_INFO_RECEIVED      4
#define SE_SNAPSHOT_TYPE_BLOCK_INFO_DELIVERED     5

// Meter Snapshot Payload length
#define SE_SNAPSHOT_CSD_AND_RCV_REGISTER_PAYLOAD_LEN   12

// Meter Snapshot Causes
#define SE_SNAPSHOT_CAUSE_GENERAL                 0
#define SE_SNAPSHOT_CAUSE_END_BILL_PERIOD         1
#define SE_SNAPSHOT_CAUSE_END_BLOCK_PERIOD        2
#define SE_SNAPSHOT_CAUSE_CHANGE_TARRIF_INFO      3
#define SE_SNAPSHOT_CAUSE_CHANGE_OF_CV            6
#define SE_SNAPSHOT_CAUSE_CHANGE_OF_CF            7
#define SE_SNAPSHOT_CAUSE_CHANGE_OF_TOU_CALENDAR  8
#define SE_SNAPSHOT_CAUSE_CRITICAL_PEAK_PRICING   9
#define SE_SNAPSHOT_CAUSE_MANUAL_TRIGGER          10

// Meter Notification Set Parameters
#define SE_NOTIFICATION_REPORT_ATTR_RSP_BIT       1

// Prepayment snapshot payload types
#define SE_SNAPSHOT_TYPE_DEBIT_CREDIT_ADDITION    0

// Protocol ID Field
#define SE_PROTOCOL_ID_DLMS_COSEM                 0
#define SE_PROTOCOL_ID_IEC_61107                  1
#define SE_PROTOCOL_ID_ANSI_C12                   2
#define SE_PROTOCOL_ID_M_BUS                      3
#define SE_PROTOCOL_ID_SML                        4
#define SE_PROTOCOL_ID_CLIMATE_TALK               5
#define SE_PROTOCOL_ID_RESERVED                   255

// Transfer Data Status Field
#define SE_TRANSFER_DATA_STATUS_NO_SUCH_TUNNEL    0x00
#define SE_TRANSFER_DATA_STATUS_WRONG_DEVICE      0x01
#define SE_TRANSFER_DATA_STATUS_DATA_OVERFLOW     0x02

// Tunnel Status Field
#define SE_TUNNEL_STATUS_SUCCESS                    0x00
#define SE_TUNNEL_STATUS_BUSY                       0x01
#define SE_TUNNEL_STATUS_NO_MORE_TUNNEL_IDS         0x02
#define SE_TUNNEL_STATUS_PROTOCOL_NOT_SUPPORTED     0x03
#define SE_TUNNEL_STATUS_FLOW_CONTROL_NOT_SUPPORTED 0x04

// Calendar Type Field
#define SE_CALENDAR_TYPE_IMPORT_CALENDAR            0x00
#define SE_CALENDAR_TYPE_EXPORT_CALENDAR            0x01
#define SE_CALENDAR_TYPE_IMPORT_EXPORT_CALENDAR     0x02
#define SE_CALENDAR_TYPE_FRIENDLY_CREDIT_CALENDAR   0x03

// Calendar Time Reference Field
#define SE_CALENDAR_TIME_REF_STANDARD_TIME          0x00
#define SE_CALENDAR_TIME_REF_LOCAL_TIME             0x01

// Length of TOU Calendar Entries
#define SE_DAY_SCHEDULE_ENTRY_LEN                   3
#define SE_SEASON_ENTRY_LEN                         5
#define SE_SPECIAL_DAY_ENTRY_LEN                    5

// Password Level Field
#define SE_PSWD_LEVEL_PASSWORD_1                    0x01
#define SE_PSWD_LEVEL_PASSWORD_2                    0x02
#define SE_PSWD_LEVEL_PASSWORD_3                    0x03
#define SE_PSWD_LEVEL_PASSWORD_4                    0x04

// Password Level Field
#define SE_PROPOSED_SUPLY_STATUS_SUPPLY_OFF_ARMED   0x01
#define SE_PROPOSED_SUPLY_STATUS_SUPPLY_ON          0x02

// Event Configuration Attribute
#define SE_EVENT_CONFIGURATION_DO_NOT_LOG           0x00
#define SE_EVENT_CONFIGURATION_LOG_TEMPER           0x01
#define SE_EVENT_CONFIGURATION_LOG_FAULT            0x02
#define SE_EVENT_CONFIGURATION_LOG_GENERAL_EVENT    0x03
#define SE_EVENT_CONFIGURATION_LOG_LOG_4            0x04
#define SE_EVENT_CONFIGURATION_LOG_LOG_5            0x05
#define SE_EVENT_CONFIGURATION_LOG_LOG_6            0x06

// Device Management Cluster - Proposed Supplier Change Control Bit Mask
#define SE_CHANGE_CTRL_PRE_SNAPSHOTS                0x0001
#define SE_CHANGE_CTRL_POST_SNAPSHOTS               0x0002
#define SE_CHANGE_CTRL_RESET_CREDIT_REGISTER        0x0004
#define SE_CHANGE_CTRL_RESET_DEBT_REGISTER          0x0008
#define SE_CHANGE_CTRL_RESET_BILLING_PERIOD         0x0010
#define SE_CHANGE_CTRL_CLEAR_TARIF_PLAN             0x0020
#define SE_CHANGE_CTRL_CLEAR_STANDING_CHARGE        0x0040
#define SE_CHANGE_CTRL_BLOCK_HIST_LOAD_PROF_INFO    0x0080
#define SE_CHANGE_CTRL_CLEAR_HIST_LOAD_PROF_INFO    0x0100
#define SE_CHANGE_CTRL_CLEAR_IPD_DATA_CONSUMER      0x0200
#define SE_CHANGE_CTRL_CLEAR_IPD_DATA_SUPPLIER      0x0400
#define SE_CHANGE_CTRL_METER_CONN_STATE_ON_OFF_ARM  0x1800
#define SE_CHANGE_CTRL_CLEAR_TRANSACTION_LOG        0x2000

/********************************************************************
 * MACROS
 */

/*********************************************************************
 * TYPEDEFS
 */


/*** Structures used for callback functions ***/
typedef struct
{
  uint8   channel;
  uint32  endTime;
  uint8   numOfPeriods;
} zclCCGetProfileCmd_t;

typedef struct
{
  uint32  endTime;
  uint8   status;
  uint8   profileIntervalPeriod;
  uint8   numOfPeriodDelivered;
  uint24 *intervals;
} zclCCGetProfileRsp_t;
typedef struct
{
  uint16 endpointId ;
} zclCCReqMirrorRsp_t ;

typedef struct
{
  uint16 endpointId ;
} zclCCMirrorRemRsp_t ;

// Fast poll mode req command
typedef struct
{
  uint8 fastPollUpdatePeriod;   // Desired fast poll period
  uint8 duration;               // Desired duration for the server to remain in fast poll
} zclCCReqFastPollModeCmd_t;

// Fast poll mode rsp command
typedef struct
{
  uint8 appliedUpdatePeriod;    // The period at which metering data shall be updated
  uint32 fastPollModeEndTime;   // Fast poll mode end time in UTC
} zclCCReqFastPollModeRsp_t;

// Get snapshot command
typedef struct
{
  uint32 StartTime;
  uint8 NumberOfSnapshots;
  uint16 SnapshotCause;
} zclCCReqGetSnapshotCmd_t;

typedef struct
{
  uint32 IssuerEventID;
  uint32 SnapshotTime;
  uint8 CommandIndex;
  uint16 SnapshotCause;
  uint8 SnapshotPayloadType;
  uint8 *pSnapshotPayload;
} zclCCReqGetSnapshotRsp_t;

typedef struct
{
  uint8 NotificationFlags;
  uint16 PriceNotificationFlags;
  uint8 CalendarNotificationFlags;
  uint16 PrePayNotificationFlags;
  uint8 DeviceMgmtNotificationFlags;
} zclCCReqMirrorReportAttrRsp_t;

typedef struct
{
  uint8 option;
} zclCCGetCurrentPrice_t;

typedef struct
{
  uint32 startTime;
  uint8  numEvents;
} zclCCGetScheduledPrice_t;

typedef struct
{
  uint32  providerId;
  UTF8String_t rateLabel;
  uint32  issuerEventId;
  uint32  currentTime;
  uint8   unitOfMeasure;
  uint16  currency;
  uint8   priceTrailingDigit;
  uint8   numberOfPriceTiers;
  uint32  startTime;
  uint16  durationInMinutes;
  uint32  price;
  uint8   priceRatio;
  uint32  generationPrice;
  uint8   generationPriceRatio;
  uint32  alternateCostDelivered;      // Alternative measure of the cost of the energy consumed
  uint8   alternateCostUnit;           // 8-bit enum identifying the unit for Alternate Cost Delivered field
  uint8   alternateCostTrailingDigit;  // Location of decimal point in alternatecost field
  uint8   numberOfBlockThresholds;     // Number of block thresholds available
  uint8   priceControl;                // Additional control options for the price event
} zclCCPublishPrice_t;

typedef struct
{
  uint32 providerId;                   // Unique identifier for the commodity provider
  uint32 issuerEventId;                // Unique identifier generated by the commodity provider
  uint32 priceAckTime;                 // Time price acknowledgement generated
  uint8  control;                      // Price Control or Block Period Control options for the event
} zclCCPriceAcknowledgement_t;

typedef struct
{
  uint32 startTime;                    // UTC start time
  uint8  numEvents;                    // Maximum number of Publish Block Period commands to be sent
} zclCCGetBlockPeriod_t;

typedef struct
{
  uint32 providerId;                   // Unique identifier for the commodity provider
  uint32 issuerEventId;                // Unique identifier generated by the commodity provider
  uint32 blockPeriodStartTime;         // UTC start time
  uint24 blockPeriodDurInMins;         // Block tariff period duration in minutes
  uint8  numPriceTiersAndBlock;        // Bitmap for price tiers and block thresholds available
  uint8  tariffType;                   // Tariff type: This field is only used when SE_UK_EXT is enabled
  uint8  blockPeriodControl;           // Additional control options for the block period event
} zclCCPublishBlockPeriod_t;

typedef struct
{
  uint32 supplierId;                   // Unique identifier for the commodity Supplier
  uint32 issuerTariffId;               // Unique tariff identifier generated by the commodity Supplier
  uint32 startTime;                    // UTC Time field denoting the time the price signal becomes valid
  uint8 tariffType;                    // Type of tariff published
  UTF8String_t tarifLabel;             // Label of tariff published
  uint8 numPriceTiersInUse;            // Number of Price Tiers in Use
  uint8 numBlockThresholdsInUse;       // Number of Block Thresholds in Use
  uint8 unitOfMeasure;                 // Unit of Measure
  uint16 currency;                     // Currency Used
  uint8 priceTrailingDigit;            // Price Trailing Digit
  uint32 standingCharge;               // (optional) Standing Charge (0xFFFFFFFF indicates field not used)
  uint8 tierBlockMode;                 // (optional) Tier Block Mode (0xFF indicates field not used)
  uint16 blockThresholdMask;           // (optional) Block Threshold Mask (0x0000 indicates field not used)
  uint32 BlockThresholdMultiplier;     // 24-bit Value to be multiplied against Threshold parameter
  uint32 BlockThresholdDivisor;        // 24-bit Value to be divided against Threshold parameter
} zclCCPublishTariffInformation_t;

typedef struct
{
  uint32 issuerTariffId;               // Unique tariff identifier generated by the commodity Supplier
  uint8 commandIndex;                  // Used to count the payload fragments when payload does not fit one message.
  uint8 numElements;                   // Number of elements (N) in the Block Price Information
  uint32 *pTierBlockPrice;             // Contains N elements of the Block Price Information
} zclCCPublishPriceMatrix_t;

typedef uint8 zclBlockThreshold_t[6];

typedef struct
{
  uint32 issuerTariffId;               // Unique tariff identifier generated by the commodity Supplier
  uint8 commandIndex;                  // Used to count the payload fragments when payload does not fit one message.
  uint8 numElements;                   // Number of elements (N) in the Block Threshold Information
  zclBlockThreshold_t *pTierBlockThreshold;  // Contains N elements of the Block Threshold Information
} zclCCPublishBlockThresholds_t;

typedef struct
{
  uint32 issuerEventId;                // Unique Event identifier generated by the commodity Supplier
  uint32 startTime;                    // UTC Time field denoting the time the factor becomes valid
  uint32 conversionFactor;
  uint8 trailingDigit;
} zclCCPublishConversionFactor_t;

typedef struct
{
  uint32 issuerEventId;                // Unique Event identifier generated by the commodity Supplier
  uint32 startTime;                    // UTC Time field denoting the time the value becomes valid
  uint32 calorificValue;
  uint8 calorificValueUnit;
  uint8 trailingDigit;
} zclCCPublishCalorificValue_t;

typedef struct
{
  uint32 issuerEventId;                // Unique Event identifier generated by the commodity Supplier
  uint32 startTime;                    // UTC Time field denoting the time the value becomes valid
  uint8 tariffType;
  uint32 CO2Value;
  uint8 CO2ValueUnit;
  uint8 trailingDigit;
} zclCCPublishCO2Value_t;

typedef struct
{
  uint32 issuerEventId;                // Unique Event identifier generated by the commodity Supplier
  uint32 startTime;                    // UTC Time field denoting the time the value becomes valid
  uint16 durationInMinutes;            // Duration of the CPP event in minutes
  uint8 tariffType;
  uint8 CPPPriceTier;
  uint8 CPPAuth;
} zclCCPublishCPPEvent_t;

typedef struct
{
  uint32 issuerEventId;                // Unique Event identifier generated by the commodity Supplier
  uint32 startTime;                    // UTC Time field denoting the time the value becomes valid
  uint32 duration;                     // 24-bit duration of the billing period (bits 1-21: duration
                                       //   bits 22,23: duration units: 00 - minutes, 01 - days, 10 - weeks, 11 - months
  uint8 tariffType;
} zclCCPublishBillingPeriod_t;

typedef struct
{
  uint32 issuerEventId;                // Unique Event identifier generated by the commodity Supplier
  uint32 startTime;                    // UTC Time field denoting the time the value becomes valid
  uint32 duration;                     // 24-bit duration of the billing period (bits 1-21: duration
                                       //   bits 22,23: duration units: 00 - minutes, 01 - days, 10 - weeks, 11 - months
  uint8 tariffType;
  uint32 consolidatedBill;
  uint16 currency;
  uint8 trailingDigit;
} zclCCPublishConsolidatedBill_t;

typedef struct
{
  uint32 issuerEventId;                // Unique Event identifier generated by the commodity Supplier
  uint32 paymentDueDate;               // UTC Time field denoting the payment due date
  uint32 creditPaymentOverdueAmt;
  uint8 creditPaymentStatus;
  uint32 creditPayment;
  uint32 creditPaymentDate;
  UTF8String_t creditPaymentRef;
} zclCCPublishCreditPaymentInfo_t;

typedef struct
{
  uint32 startTime;                    // UTC Time
  uint8 numEvents;
  uint8 tariffType;                    // (optional) Tariff type (0xFF when not in use)
} zclCCGetTariffInformation_t;

typedef struct
{
  uint32 startTime;                    // UTC Time
  uint8 numEvents;
} zclCCGetConversionFactor_t;

typedef struct
{
  uint32 startTime;                    // UTC Time
  uint8 numEvents;
} zclCCGetCalorificValue_t;

typedef struct
{
  uint32 startTime;                    // UTC Time
  uint8 numEvents;
  uint8 tariffType;                    // (optional) Tariff type (0xFF when not in use)
} zclCCGetCO2Value_t;

typedef struct
{
  uint32 startTime;                    // UTC Time
  uint8 numEvents;
  uint8 tariffType;                    // (optional) Tariff type (0xFF when not in use)
} zclCCGetBillingPeriod_t;

typedef struct
{
  uint32 startTime;                    // UTC Time
  uint8 numEvents;
  uint8 tariffType;                    // (optional) Tariff type (0xFF when not in use)
} zclCCGetConsolidatedBill_t;

typedef struct
{
  uint32 issuerEventId;
  uint8 CPPAuth;
} zclCCCPPEventResponse_t;

typedef struct
{
  uint8 transmissionMode;     // valid value  0~2
  uint8 importance;           // 0~3
  uint8 pinRequired;          // 0~1 - applicable only to SE UK Extension
  uint8 acceptanceRequired;   // 0~1 - applicable only to SE UK Extension
  uint8 confirmationRequired; // 0~1
} zclMessageCtrl_t;

typedef struct
{
  uint32  messageId;
  zclMessageCtrl_t messageCtrl;
  uint32  startTime;
  uint16  durationInMinutes;
  UTF8String_t msgString;
} zclCCDisplayMessage_t;

typedef struct
{
  uint32  messageId;
  zclMessageCtrl_t messageCtrl;
} zclCCCancelMessage_t;

typedef struct
{
  uint32  messageId;
  uint32  confirmTime;
  UTF8String_t msgString; // applicable only to SE UK Extension
} zclCCMessageConfirmation_t;

typedef struct
{
  uint32  issuerEvent;
  uint24  deviceGroupClass;
  uint32  startTime;
  uint16  durationInMinutes;
  uint8   criticalityLevel;
  uint8   coolingTemperatureOffset;
  uint8   heatingTemperatureOffset;
  uint16  coolingTemperatureSetPoint;
  uint16  heatingTemperatureSetPoint;
  int8    averageLoadAdjustmentPercentage;
  uint8   dutyCycle;
  uint8   eventControl;
} zclCCLoadControlEvent_t;

typedef struct
{
  uint32 issuerEventID;
  uint24 deviceGroupClass;
  uint8  cancelControl;
  uint32 effectiveTime;
} zclCCCancelLoadControlEvent_t;

typedef struct
{
  uint8 cancelControl;
} zclCCCancelAllLoadControlEvents_t;

typedef struct
{
  uint32 issuerEventID;
  uint32 eventStartTime;
  uint8  eventStatus;
  uint8  criticalityLevelApplied;
  uint16 coolingTemperatureSetPointApplied;
  uint16 heatingTemperatureSetPointApplied;
  int8   averageLoadAdjustment;
  uint8  dutyCycleApplied;
  uint8  eventControl;
  uint8  signatureType;
  uint8  signature[SE_PROFILE_SIGNATURE_LENGTH];
} zclCCReportEventStatus_t;

typedef struct
{
  uint32 startTime;
  uint8  numEvents;
} zclCCGetScheduledEvent_t;

typedef enum
{
  zclSE_SimpleMeter_GetProfileRsp_Status_Success = 0,
  zclSE_SimpleMeter_GetProfileRsp_Status_UndefinedInterval,
  zclSE_SimpleMeter_GetProfileRsp_Status_IntervalNotSupport,
  zclSE_SimpleMeter_GetProfileRsp_Status_InvalidEndTime,
  zclSE_SimpleMeter_GetProfileRsp_Status_MorePeriodRequested,
  zclSE_SimpleMeter_GetProfileRsp_Status_NotAvailable
} zclSE_SimpleMeter_GetProfileRsp_Status;

typedef struct
{
  uint32 commandDateTime;                   // Date and time at which the selection command was issued
  uint8  originatingDevice;                 // SE device issuing the selection command
  UTF8String_t siteId;                      // Location of the metering device
  UTF8String_t meterSerialNumber;           // Unique identifier of the metering device
} zclCCSelAvailEmergencyCredit_t;

typedef struct
{
#ifndef SE_UK_EXT // SE 1.1
  uint32 providerId;                        // Unique identifier for the commodity provider
  UTF8String_t siteId;                      // Location of the metering device
  UTF8String_t meterSerialNumber;           // Unique identifier of the metering device
#else
  uint32  supplierId;
  uint32  eventId;
  UTF8String_t signature;
#endif  // SE_UK_EXT
  uint32 requestDateTime;                   // Date and time at which the supply change was requested
  uint32 implementationDateTime;            // Date at which the supply change is to be applied
  uint8 proposedSupplyStatus;               // status of the energy supply
  uint8 origIdSupplyControlBits;            // type of SE device and ack setting
} zclCCChangeSupply_t;

typedef struct
{
#ifndef SE_UK_EXT // SE 1.1
  uint32 providerId;                        // Unique identifier for the commodity provider
#else
  uint32 supplierId;
  uint32 issuerEventId;
#endif  // SE_UK_EXT
  uint32 implementationDateTime;
  uint8 supplyStatus;
} zclCCSupplyStatusResponse_t;

typedef struct
{
  uint32 cmdIssueTime;
  UTF8String_t debtLabel;
  uint32 debtAmount;
  uint8 debtRecoveryMethod;
  uint8 debtType;
  uint32 recoveryStartTime;
  uint16 debtRecoveryCollectionTime;
  uint32 debtRecoveryFrequency;
  uint32 debtRecoveryAmt;
  uint16 debtRecoveryBalancePct;
  uint8 debtRecoveryMaxMissed;
  UTF8String_t signature;
} zclCCChangeDebt_t;

typedef struct
{
  uint32 cmdIssueTime;
  uint32 emergencyCreditLimit;
  uint32 emergencyCreditThreshold;
} zclCCEmergencyCreditSetup_t;

typedef struct
{
  uint8 originatingDevice;
  UTF8String_t topupCode;
} zclCCConsumerTopup_t;

typedef struct
{
  uint32 cmdIssueTime;
  uint8 creditAdjustmentType;
  uint8 creditAdjustmentValue[6];
  UTF8String_t signature;
} zclCCCreditAdjustment_t;

typedef struct
{
  uint32 supplierId;
  uint32 modeEventId;
  uint32 implementationDate;
  uint8 proposedPaymentControl;
  uint32 cutOffValue;
  UTF8String_t signature;
} zclCCChangePaymentMode_t;

typedef struct
{
  uint32 startTime;
  uint8 numberOfSnapshots;
  uint16 snapshotCause;
} zclCCGetPrepaySnapshot_t;

typedef struct
{
  uint8 numberOfDebt;
  uint8 debtType;
} zclCCGetDebtRepaymentLog_t;

typedef struct
{
  uint32 type1DebtRemaining;
  uint32 type2DebtRemaining;
  uint32 type3DebtRemaining;
  uint32 emergencyCreditRemaining;
  uint32 creditRemaining;
} zclCCDebitCreditSnapshotPayload_t;

typedef struct
{
  uint32 eventIssuerId;
  uint32 snapshotTime;
  uint8 commandIndex;
  uint16 snapshotCause;
  uint8 snapshotPayloadType;
  zclCCDebitCreditSnapshotPayload_t payload;      // Currently only one payload type is defined
                                                        // Switch to a void * or union as more payloads are added
} zclCCGetPrepaySnapshotResponse_t;

typedef struct
{
  uint8 friendlyCredit;
  uint32 friendlyCreditCalendar;
  uint32 emergencyCreditLimit;
  uint32 cmergencyCreditThreshold;
} zclCCChangePaymentModeResponse_t;

typedef struct
{
  uint8 resultType;
  uint32 topupValue;
  uint8 sourceofTopup;
  uint32 creditRemaining;
} zclCCConsumerTopupResponse_t;

typedef struct
{
  uint8 cmdIndex;                               // Index of the command (n of totalCmds)
  uint8 totalCmds;                              // Total number of commands needed to send log
  uint8 numCodes;
  UTF8String_t *pPayload;                       // Array of numCodes strings containing payloads
} zclCCPublishTopupLog_t;

typedef struct
{
  uint32 collectionTime;
  uint32 amountCollected;
  uint8 debtType;
  uint32 outstandingDebt;
} zclCCDebtPayload_t;

typedef struct
{
  uint8 cmdIndex;                               // Index of the command (n of totalCmds)
  uint8 totalCmds;                              // Total number of commands needed to send log
  uint8 numDebts;
  zclCCDebtPayload_t *pPayload;                 // Array of numCodes strings containing payloads
} zclCCPublishDebtLog_t;

typedef struct
{
  uint8  protocolId;                        // Identifier of the metering communication protocol
  uint16 manufacturerCode;                  // Manufacturer specific Code
  bool   flowControlSupport;                // Boolean parameter to indicate flow control support
  uint16 maxInTransferSize;                 // Maximum data packet size in the payload
} zclCCRequestTunnel_t;

typedef struct
{
  uint16 tunnelId;                          // Unique identifier of the tunnel
  uint8  tunnelStatus;                      // Internal server status after execution of RequestTunnel cmd
  uint16 maxInTransferSize;                 // Maximum data packet size in the payload
} zclCCReqTunnelRsp_t;

typedef struct
{
  uint16 tunnelId;                          // Unique identifier of the tunnel
} zclCCCloseTunnel_t;

typedef struct
{
  uint16 tunnelId;                          // Unique identifier of the tunnel
  uint8  *data;                             // Data to be transfered
} zclCCTransferData_t;

typedef struct
{
  uint16 tunnelId;                          // Unique identifier of the tunnel
  uint8  transferDataStatus;                // Error indication after last Transfer Data
} zclCCTransferDataError_t;

typedef struct
{
  uint16 tunnelId;                          // Unique identifier of the tunnel
  uint16 numberOfBytesLeft;                 // The remaining size of buffer space
} zclCCAckTransferData_t;

typedef struct
{
  uint16 tunnelId;                          // Unique identifier of the tunnel
  uint16 numberOfOctetsLeft;                // The remaining size of buffer space
} zclCCReadyData_t;

typedef struct
{
  uint8 protocolOffset;                     // Offset of available protocols
} zclCCGetSuppTunnProt_t;

typedef struct
{
  uint16 manufacturerCode;                  // Manufacturer specific Code
  uint8  protocolId;                        // Identifier of the metering communication protocol
} zclCCProtocolPayload_t;

typedef struct
{
  uint8 protocolListComp;                   // Boolean type to indicate if there are more supported protocols available
  uint8 protocolCount;                      // Number of protocols in response
  zclCCProtocolPayload_t protocol[];        // protocol list - this structure should
                                            // be allocated with the appropriate number of protocols.
} zclCCSuppTunnProtRsp_t;

typedef struct
{
  uint16 tunnelId;                          // Unique identifier of the tunnel
} zclCCTunnelClosureNotification_t;

typedef struct
{
  uint32  issuerCalendarId;
  uint32  startTime;
  uint8   calendarType;
  uint8   calendarTimeRef;
  UTF8String_t calendarName;
  uint8   numOfSeasons;
  uint8   numOfWeekProfiles;
  uint8   numOfDayProfiles;
} zclCCPublishCalendar_t;

typedef struct
{
  uint16  startTime;
  uint8   activePriceTier;
} zclCCRateEntry_t;

typedef struct
{
  uint16  startTime;
  uint8   friendCreditEnable;
} zclCCFriendlyCreditEntry_t;

typedef struct
{
  uint32  issuerCalendarId;
  uint8   dayId;
  uint8   totalNumSchedEnt;
  uint8   commandIndex;
  uint8   numTransferEntries; // Entries transfered in this command, this field is not sent OTA
  void    *pScheduleEntries;   // this could be zclCCRateEntry_t or zclCCFriendlyCreditEntry_t entry
} zclCCPublishDayProfile_t;

typedef struct
{
  uint32  issuerCalendarId;
  uint8   weekId;
  uint8   dayIdRefMonday;
  uint8   dayIdRefTuestday;
  uint8   dayIdRefWednesday;
  uint8   dayIdRefThursday;
  uint8   dayIdRefFriday;
  uint8   dayIdRefSaturday;
  uint8   dayIdRefSunday;
} zclCCPublishWeekProfile_t;

typedef struct
{
  uint32  seasonStartDate;
  uint8   weekIdRef;
} zclCCSeasonEntry_t;

typedef struct
{
  uint32  issuerCalendarId;
  uint8   commandIndex;
  uint8   numTransferEntries; // Entries transfered in this command, this field is not sent OTA
  zclCCSeasonEntry_t *pSeasonEntry;
} zclCCPublishSeasons_t;

typedef struct
{
  uint32  specialDayDate;
  uint8   dayIdRef;
} zclCCSpecialDayEntry_t;

typedef struct
{
  uint32  issuerEventId;
  uint32  startTime;
  uint8   calendarType;
  uint8   totalNumSpecialDays;
  uint8   commandIndex;
  uint8   numTransferEntries; // Entries transfered in this command, this field is not sent OTA
  zclCCSpecialDayEntry_t *pSpecialDayEntry;
} zclCCPublishSpecialDays_t;

typedef struct
{
  uint32  startTime;
  uint8   numOfCalendars;
  uint8   calendarType;
} zclCCGetCalendar_t;

typedef struct
{
  uint32  issuerCalendarId;
} zclCCGetDayProfiles_t;

typedef struct
{
  uint32  issuerCalendarId;
} zclCCGetWeekProfiles_t;

typedef struct
{
  uint32  issuerCalendarId;
} zclCCGetSeasons_t;

typedef struct
{
  uint32  startTime;
  uint8   numOfEvents;
  uint8   calendarType;
} zclCCGetSpecialDays_t;

typedef struct
{
  uint8   passwordLevel;
} zclCCGetPassword_t;

typedef struct
{
  uint32  supplierId;
  uint32  eventId;
  uint8   tariffType;
  uint32  implementationDateTime;
  uint32  propTenencyChangeCtrl;
  UTF8String_t signature;
} zclCCPublishChangeTenancy_t;

typedef struct
{
  uint32  supplierId;
  uint32  eventId;
  uint8   tariffType;
  uint32  propSupplierId;
  uint32  suppIdImplemDateTime;
  uint32  supplierChangeCtrl;
  UTF8String_t supplierIdName;
  UTF8String_t signature;
} zclCCPublishChangeSupplier_t;

typedef struct
{
  uint8   passwordLevel;
  UTF8String_t password;
} zclCCChangePassword_t;

typedef struct
{
  uint8   propSupplyStatus;
} zclCCLocalChangeSupply_t;

// This callback is called to process an incoming Get Profile
// command. On receipt of this command, the device responds with
// Get Profile Response.
typedef void (*zclSE_SimpleMeter_GetProfileCmd_t)( zclCCGetProfileCmd_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Profile
// Response.
typedef void (*zclSE_SimpleMeter_GetProfileRsp_t)( zclCCGetProfileRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Request Mirror
// command.  In receipt of this command, the device finds a mirroring
// endpoint and responds with a Request Mirror Response
typedef void (*zclSE_SimpleMeter_ReqMirrorCmd_t)( afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Request Mirror Response
typedef void (*zclSE_SimpleMeter_ReqMirrorRsp_t)( zclCCReqMirrorRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Mirror Removed
// command.  In receipt of this command, the device removes the
// mirrored data from the metering device and responds with a
// Mirror Removed response.
typedef void (*zclSE_SimpleMeter_MirrorRemCmd_t)( afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Mirror Remove Response
typedef void (*zclSE_SimpleMeter_MirrorRemRsp_t)( zclCCMirrorRemRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Request Fast Poll Mode Command
typedef void (*zclSE_SimpleMeter_ReqFastPollModeCmd_t)( zclCCReqFastPollModeCmd_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Request Fast Poll Mode Response
typedef void (*zclSE_SimpleMeter_ReqFastPollModeRsp_t)( zclCCReqFastPollModeRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Snapshot Command
typedef void (*zclSE_SimpleMeter_GetSnapshotCmd_t)( zclCCReqGetSnapshotCmd_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Snapshot Response
typedef void (*zclSE_SimpleMeter_GetSnapshotRsp_t)( zclCCReqGetSnapshotRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Take Snapshot Command
typedef void (*zclSE_SimpleMeter_TakeSnapshotCmd_t)( afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Mirror Report Attribute Response
typedef void (*zclSE_SimpleMeter_MirrorReportAttrRsp_t)( zclCCReqMirrorReportAttrRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Current Price
// command. On receipt of this command, the device responds with
// Publish Price.
typedef void (*zclSE_Pricing_GetCurentPrice_t)( zclCCGetCurrentPrice_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Scheduled Price
// command. On receipt of this command, the device responds with
// Publish Price.
typedef void (*zclSE_Pricing_GetScheduledPrice_t)( zclCCGetScheduledPrice_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Publish Price
// command. On receipt of this command, the device responds with
// Price Acknowledgement.
typedef void (*zclSE_Pricing_PublishPrice_t)( zclCCPublishPrice_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Price Acknowledgement
// command.
typedef void (*zclSE_Pricing_PriceAcknowledgement_t)( zclCCPriceAcknowledgement_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Block Period
// command. On receipt of this command, the device responds with
// Publish Block Period.
typedef void (*zclSE_Pricing_GetBlockPeriod_t)( zclCCGetBlockPeriod_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Publish Block Period
// command.
typedef void (*zclSE_Pricing_PublishBlockPeriod_t)( zclCCPublishBlockPeriod_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Display Message
// command.
typedef void (*zclSE_Message_DisplayMessage_t)( zclCCDisplayMessage_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Cancel Message
// command.
typedef void (*zclSE_Message_CancelMessage_t)( zclCCCancelMessage_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Last Message
// command. On receipt of this command, the device responds with
// Display Message.
typedef void (*zclSE_Message_GetLastMessage_t)( afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Message Confirmation
// command.
typedef void (*zclSE_Message_MessageConfirmation_t)( zclCCMessageConfirmation_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum  );

// This callback is called to process an incoming Load Control Event Command
// command.
typedef void (*zclSE_LoadControl_LoadControlEvent_t)( zclCCLoadControlEvent_t *pCmd, afAddrType_t *srcAddr, uint8 status, uint8 seqNum );

// This callback is called to process an incoming Cancel Load Control Event Command
// command.
typedef void (*zclSE_LoadControl_CancelLoadControlEvent_t)( zclCCCancelLoadControlEvent_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum);

// This callback is called to process an incoming Cancel All Load Control Event Command
// command.
typedef void (*zclSE_LoadControl_CancelAllLoadControlEvents_t)( zclCCCancelAllLoadControlEvents_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Report Event Status Command
// command.
typedef void (*zclSE_LoadControl_ReportEventStatus_t)( zclCCReportEventStatus_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum);

// This callback is called to process an incoming Get Scheduled Event Command
// command.
typedef void (*zclSE_LoadControl_GetScheduledEvent_t)( zclCCGetScheduledEvent_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum);

// This callback is called to process an incoming Select Available Emergency Credit Command
typedef void (*zclSE_Prepayment_SelAvailEmergencyCredit_t)( zclCCSelAvailEmergencyCredit_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Change Supply Command
typedef void (*zclSE_Prepayment_ChangeSupply_t)( zclCCChangeSupply_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Supply Status Response Command
typedef void (*zclSE_Prepayment_SupplyStatusResponse_t)( zclCCSupplyStatusResponse_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Publish Tariff Info
typedef void (*zclSE_Pricing_PublishTariffInformation_t)( zclCCPublishTariffInformation_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Publish Price Matrix
typedef void (*zclSE_Pricing_PublishPriceMatrix_t)( zclCCPublishPriceMatrix_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Publish Block Thresholds
typedef void (*zclSE_Pricing_PublishBlockThresholds_t)( zclCCPublishBlockThresholds_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Publish Conversion Factor
typedef void (*zclSE_Pricing_PublishConversionFactor_t)( zclCCPublishConversionFactor_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Publish Calorific Value
typedef void (*zclSE_Pricing_PublishCalorificValue_t)( zclCCPublishCalorificValue_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Publish CO2 Value
typedef void (*zclSE_Pricing_PublishCO2Value_t)( zclCCPublishCO2Value_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Publish CPP Event
typedef void (*zclSE_Pricing_PublishCPPEvent_t)( zclCCPublishCPPEvent_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Publish Billing Period
typedef void (*zclSE_Pricing_PublishBillingPeriod_t)( zclCCPublishBillingPeriod_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Publish Consolidated Bill
typedef void (*zclSE_Pricing_PublishConsolidatedBill_t)( zclCCPublishConsolidatedBill_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Publish Credit Payment Info
typedef void (*zclSE_Pricing_PublishCreditPaymentInfo_t)( zclCCPublishCreditPaymentInfo_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Tariff Information
typedef void (*zclSE_Pricing_GetTariffInformation_t)( zclCCGetTariffInformation_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Price Matrix
typedef void (*zclSE_Pricing_GetPriceMatrix_t)( uint32 issuerTariffId, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Block Thresholds
typedef void (*zclSE_Pricing_GetBlockThresholds_t)( uint32 issuerTariffId, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Conversion Factor
typedef void (*zclSE_Pricing_GetConversionFactor_t)( zclCCGetConversionFactor_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Calorific Value
typedef void (*zclSE_Pricing_GetCalorificValue_t)( zclCCGetCalorificValue_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get CO2 Value
typedef void (*zclSE_Pricing_GetCO2Value_t)( zclCCGetCO2Value_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Billing Period
typedef void (*zclSE_Pricing_GetBillingPeriod_t)( zclCCGetBillingPeriod_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Consolidated Bill
typedef void (*zclSE_Pricing_GetConsolidatedBill_t)( zclCCGetConsolidatedBill_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming CPP Event Response
typedef void (*zclSE_Pricing_CPPEventResponse_t)( zclCCCPPEventResponse_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Change Debt
typedef void (*zclSE_Prepayment_ChangeDebt_t)( zclCCChangeDebt_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Emergency Credit Setup
typedef void (*zclSE_Prepayment_EmergencyCreditSetup_t)( zclCCEmergencyCreditSetup_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Consumer Topup
typedef void (*zclSE_Prepayment_ConsumerTopup_t)( zclCCConsumerTopup_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Credit Adjustment
typedef void (*zclSE_Prepayment_CreditAdjustment_t)( zclCCCreditAdjustment_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Change Paymet Mode
typedef void (*zclSE_Prepayment_ChangePaymentMode_t)( zclCCChangePaymentMode_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Prepay Snapshot
typedef void (*zclSE_Prepayment_GetPrepaySnapshot_t)( zclCCGetPrepaySnapshot_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Topup Log
typedef void (*zclSE_Prepayment_GetTopupLog_t)( uint8 numEvents, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Set Low Credit Warning Level
typedef void (*zclSE_Prepayment_SetLowCreditWarningLevel_t)( uint8 numEvents, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Debt Repayment Log
typedef void (*zclSE_Prepayment_GetDebtRepaymentLog_t)( zclCCGetDebtRepaymentLog_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Prepay Snapshot Response
typedef void (*zclSE_Prepayment_GetPrepaySnapshotResponse_t)( zclCCGetPrepaySnapshotResponse_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Change Payment Mode Response
typedef void (*zclSE_Prepayment_ChangePaymentModeResponse_t)( zclCCChangePaymentModeResponse_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Consumer Topup Response
typedef void (*zclSE_Prepayment_ConsumerTopupResponse_t)( zclCCConsumerTopupResponse_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Get Commands
typedef void (*zclSE_Prepayment_GetCommands_t)( uint8 prepayNotificationFlags, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Publish Topup Log
typedef void (*zclSE_Prepayment_PublishTopupLog_t)( zclCCPublishTopupLog_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Publish Debt Log
typedef void (*zclSE_Prepayment_PublishDebtLog_t)( zclCCPublishDebtLog_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;

// This callback is called to process an incoming Request Tunnel Command
typedef void (*zclSE_Tunneling_RequestTunnel_t) ( zclCCRequestTunnel_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Request Tunnel Response Command
typedef void (*zclSE_Tunneling_ReqTunnelRsp_t)( zclCCReqTunnelRsp_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Close Tunnel Command
typedef void (*zclSE_Tunneling_CloseTunnel_t) ( zclCCCloseTunnel_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Transfer Data Command
typedef void (*zclSE_Tunneling_TransferData_t) ( zclCCTransferData_t *pCmd, afAddrType_t *srcAddr, uint8 cmdId, uint16 dataLen, uint8 seqNum );

// This callback is called to process an incoming Transfer Data Error Command
typedef void (*zclSE_Tunneling_TransferDataError_t) ( zclCCTransferDataError_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Ack Transfer Data Command
typedef void (*zclSE_Tunneling_AckTransferData_t) ( zclCCAckTransferData_t *pCmd, afAddrType_t *srcAddr, uint8 cmdId, uint8 seqNum );

// This callback is called to process an incoming Ready Data Command
typedef void (*zclSE_Tunneling_ReadyData_t) ( zclCCReadyData_t *pCmd,  afAddrType_t *srcAddr, uint8 cmdId, uint8 seqNum );

// This callback is called to process an incoming Get Supported Tunnel Protocols Command
typedef void (*zclSE_Tunneling_GetSuppTunnelProt_t) ( zclCCGetSuppTunnProt_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Supported Tunnel Protocols Response Command
typedef void (*zclSE_Tunneling_SuppTunnelProtRsp_t) ( zclCCSuppTunnProtRsp_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Supported Tunnel Closure Notification Command
typedef void (*zclSE_Tunneling_TunnelClosureNotification_t) ( zclCCTunnelClosureNotification_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Publish Calendar Command
typedef void (*zclSE_TOU_PublishCalendar_t) ( zclCCPublishCalendar_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Publish Day Profile Command
typedef void (*zclSE_TOU_PublishDayProfile_t) ( zclCCPublishDayProfile_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Publish Week Profile Command
typedef void (*zclSE_TOU_PublishWeekProfile_t) ( zclCCPublishWeekProfile_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Publish Seasons Command
typedef void (*zclSE_TOU_PublishSeasons_t) ( zclCCPublishSeasons_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Publish Special Days Command
typedef void (*zclSE_TOU_PublishSpecialDays_t) ( zclCCPublishSpecialDays_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Calendar Command
typedef void (*zclSE_TOU_GetCalendar_t) ( zclCCGetCalendar_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Day Profiles Command
typedef void (*zclSE_TOU_GetDayProfile_t) ( zclCCGetDayProfiles_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Week Profile Command
typedef void (*zclSE_TOU_GetWeekProfiles_t) ( zclCCGetWeekProfiles_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Seasons Command
typedef void (*zclSE_TOU_GetSeasons_t) ( zclCCGetSeasons_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Special Days Command
typedef void (*zclSE_TOU_GetSpecialDays_t) ( zclCCGetSpecialDays_t *pCmd,  afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Change of Tenancy Command
typedef void (*zclSE_DeviceMgmt_GetChangeTenancy_t) ( afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Change of Supplier Command
typedef void (*zclSE_DeviceMgmt_GetChangeSupplier_t) ( afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Change Supply Command
typedef void (*zclSE_DeviceMgmt_GetChangeSupply_t) ( afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Supply Status Response Command
typedef void (*zclSE_DeviceMgmt_SupplyStatusResponse_t) ( zclCCSupplyStatusResponse_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Get Password Command
typedef void (*zclSE_DeviceMgmt_GetPassword_t) ( zclCCGetPassword_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Publish Change of Tenancy Command
typedef void (*zclSE_DeviceMgmt_PublishChangeTenancy_t) ( zclCCPublishChangeTenancy_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Publish Change of Supplier Command
typedef void (*zclSE_DeviceMgmt_PublishChangeSupplier_t) ( zclCCPublishChangeSupplier_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Change Supply Command
typedef void (*zclSE_DeviceMgmt_ChangeSupply_t) ( zclCCChangeSupply_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Change Password Command
typedef void (*zclSE_DeviceMgmt_ChangePassword_t) ( zclCCChangePassword_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// This callback is called to process an incoming Local Change Supply Command
typedef void (*zclSE_DeviceMgmt_LocalChangeSupply_t) ( zclCCLocalChangeSupply_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );

// Register Callbacks table entry - enter function pointers for callbacks that
// the application would like to receive
typedef struct			
{
  zclSE_Pricing_PublishPrice_t                      pfnPricing_PublishPrice;
  zclSE_Pricing_PublishBlockPeriod_t                pfnPricing_PublishBlockPeriod;
#ifdef SE_UK_EXT
  zclSE_Pricing_PublishTariffInformation_t          pfnPricing_PublishTariffInformation;
  zclSE_Pricing_PublishPriceMatrix_t                pfnPricing_PublishPriceMatrix;
  zclSE_Pricing_PublishBlockThresholds_t            pfnPricing_PublishBlockThresholds;
  zclSE_Pricing_PublishConversionFactor_t           pfnPricing_PublishConversionFactor;
  zclSE_Pricing_PublishCalorificValue_t             pfnPricing_PublishCalorificValue;
  zclSE_Pricing_PublishCO2Value_t                   pfnPricing_PublishCO2Value;
  zclSE_Pricing_PublishCPPEvent_t                   pfnPricing_PublishCPPEvent;
  zclSE_Pricing_PublishBillingPeriod_t              pfnPricing_PublishBillingPeriod;
  zclSE_Pricing_PublishConsolidatedBill_t           pfnPricing_PublishConsolidatedBill;
  zclSE_Pricing_PublishCreditPaymentInfo_t          pfnPricing_PublishCreditPaymentInfo;
#endif  // SE_UK_EXT
  zclSE_Pricing_GetCurentPrice_t                    pfnPricing_GetCurrentPrice;
  zclSE_Pricing_GetScheduledPrice_t                 pfnPricing_GetScheduledPrice;
  zclSE_Pricing_PriceAcknowledgement_t              pfnPricing_PriceAcknowledgement;
  zclSE_Pricing_GetBlockPeriod_t                    pfnPricing_GetBlockPeriod;
#ifdef SE_UK_EXT
  zclSE_Pricing_GetTariffInformation_t              pfnPricing_GetTariffInformation;
  zclSE_Pricing_GetPriceMatrix_t                    pfnPricing_GetPriceMatrix;
  zclSE_Pricing_GetBlockThresholds_t                pfnPricing_GetBlockThresholds;
  zclSE_Pricing_GetConversionFactor_t               pfnPricing_GetConversionFactor;
  zclSE_Pricing_GetCalorificValue_t                 pfnPricing_GetCalorificValue;
  zclSE_Pricing_GetCO2Value_t                       pfnPricing_GetCO2Value;
  zclSE_Pricing_GetBillingPeriod_t                  pfnPricing_GetBillingPeriod;
  zclSE_Pricing_GetConsolidatedBill_t               pfnPricing_GetConsolidatedBill;
  zclSE_Pricing_CPPEventResponse_t                  pfnPricing_CPPEventResponse;
#endif  // SE_UK_EXT
  zclSE_LoadControl_LoadControlEvent_t              pfnLoadControl_LoadControlEvent;
  zclSE_LoadControl_CancelLoadControlEvent_t        pfnLoadControl_CancelLoadControlEvent;
  zclSE_LoadControl_CancelAllLoadControlEvents_t    pfnLoadControl_CancelAllLoadControlEvents;
  zclSE_LoadControl_ReportEventStatus_t             pfnLoadControl_ReportEventStatus;
  zclSE_LoadControl_GetScheduledEvent_t             pfnLoadControl_GetScheduledEvents;
  zclSE_SimpleMeter_GetProfileRsp_t                 pfnSimpleMeter_GetProfileRsp;
  zclSE_SimpleMeter_ReqMirrorCmd_t                  pfnSimpleMeter_ReqMirrorCmd;
  zclSE_SimpleMeter_MirrorRemCmd_t                  pfnSimpleMeter_MirrorRemCmd;
  zclSE_SimpleMeter_ReqFastPollModeRsp_t            pfnSimpleMeter_ReqFastPollModeRsp;
#ifdef SE_UK_EXT
  zclSE_SimpleMeter_GetSnapshotRsp_t                pfnSimpleMeter_GetSnapshotRsp;
#endif  // SE_UK_EXT
  zclSE_SimpleMeter_GetProfileCmd_t                 pfnSimpleMeter_GetProfileCmd;
  zclSE_SimpleMeter_ReqMirrorRsp_t                  pfnSimpleMeter_ReqMirrorRsp;
  zclSE_SimpleMeter_MirrorRemRsp_t                  pfnSimpleMeter_MirrorRemRsp;
  zclSE_SimpleMeter_ReqFastPollModeCmd_t            pfnSimpleMeter_ReqFastPollModeCmd;
#ifdef SE_UK_EXT
  zclSE_SimpleMeter_GetSnapshotCmd_t                pfnSimpleMeter_GetSnapshotCmd;
  zclSE_SimpleMeter_TakeSnapshotCmd_t               pfnSimpleMeter_TakeSnapshotCmd;
  zclSE_SimpleMeter_MirrorReportAttrRsp_t           pfnSimpleMeter_MirrorReportAttrRsp;
#endif  // SE_UK_EXT
  zclSE_Message_DisplayMessage_t                    pfnMessage_DisplayMessage;
  zclSE_Message_CancelMessage_t                     pfnMessage_CancelMessage;
  zclSE_Message_GetLastMessage_t                    pfnMessage_GetLastMessage;
  zclSE_Message_MessageConfirmation_t               pfnMessage_MessageConfirmation;
  zclSE_Tunneling_ReqTunnelRsp_t                    pfnTunneling_ReqTunnelRsp;
  zclSE_Tunneling_TransferData_t                    pfnTunneling_TransferData;
  zclSE_Tunneling_TransferDataError_t               pfnTunneling_TransferDataError;
  zclSE_Tunneling_AckTransferData_t                 pfnTunneling_AckTransferData;
  zclSE_Tunneling_ReadyData_t                       pfnTunneling_ReadyData;
#ifdef SE_UK_EXT
  zclSE_Tunneling_SuppTunnelProtRsp_t               pfnTunneling_SuppTunnelProtRsp;
  zclSE_Tunneling_TunnelClosureNotification_t       pfnTunneling_TunnelClosureNotification;
#endif  // SE_UK_EXT
  zclSE_Tunneling_RequestTunnel_t                   pfnTunneling_RequestTunnel;
  zclSE_Tunneling_CloseTunnel_t                     pfnTunneling_CloseTunnel;
#ifdef SE_UK_EXT
  zclSE_Tunneling_GetSuppTunnelProt_t               pfnTunneling_GetSuppTunnelProt;
#endif  // SE_UK_EXT
  zclSE_Prepayment_SupplyStatusResponse_t           pfnPrepayment_SupplyStatusResponse;
#ifdef SE_UK_EXT
  zclSE_Prepayment_GetPrepaySnapshotResponse_t      pfnPrepayment_GetPrepaySnapshotResponse;
  zclSE_Prepayment_ChangePaymentModeResponse_t      pfnPrepayment_ChangePaymentModeResponse;
  zclSE_Prepayment_ConsumerTopupResponse_t          pfnPrepayment_ConsumerTopupResponse;
  zclSE_Prepayment_GetCommands_t                    pfnPrepayment_GetCommands;
  zclSE_Prepayment_PublishTopupLog_t                pfnPrepayment_PublishTopupLog;
  zclSE_Prepayment_PublishDebtLog_t                 pfnPrepayment_PublishDebtLog;
#endif  // SE_UK_EXT
  zclSE_Prepayment_SelAvailEmergencyCredit_t        pfnPrepayment_SelAvailEmergencyCredit;
  zclSE_Prepayment_ChangeSupply_t                   pfnPrepayment_ChangeSupply;
#ifdef SE_UK_EXT
  zclSE_Prepayment_ChangeDebt_t                     pfnPrepayment_ChangeDebt;
  zclSE_Prepayment_EmergencyCreditSetup_t           pfnPrepayment_EmergencyCreditSetup;
  zclSE_Prepayment_ConsumerTopup_t                  pfnPrepayment_ConsumerTopup;
  zclSE_Prepayment_CreditAdjustment_t               pfnPrepayment_CreditAdjustment;
  zclSE_Prepayment_ChangePaymentMode_t              pfnPrepayment_ChangePaymentMode;
  zclSE_Prepayment_GetPrepaySnapshot_t              pfnPrepayment_GetPrepaySnapshot;
  zclSE_Prepayment_GetTopupLog_t                    pfnPrepayment_GetTopupLog;
  zclSE_Prepayment_SetLowCreditWarningLevel_t       pfnPrepayment_SetLowCreditWarningLevel;
  zclSE_Prepayment_GetDebtRepaymentLog_t            pfnPrepayment_GetDebtRepaymentLog;
  zclSE_TOU_PublishCalendar_t                       pfnTou_PublishCalendar;
  zclSE_TOU_PublishDayProfile_t                     pfnTou_PublishDayProfile;
  zclSE_TOU_PublishWeekProfile_t                    pfnTou_PublishWeekProfile;
  zclSE_TOU_PublishSeasons_t                        pfnTou_PublishSeasons;
  zclSE_TOU_PublishSpecialDays_t                    pfnTou_PublishSpecialDays;
  zclSE_TOU_GetCalendar_t                           pfnTou_GetCalendar;
  zclSE_TOU_GetDayProfile_t                         pfnTou_GetDayProfiles;
  zclSE_TOU_GetWeekProfiles_t                       pfnTou_GetWeekProfiles;
  zclSE_TOU_GetSeasons_t                            pfnTou_GetSeasons;
  zclSE_TOU_GetSpecialDays_t                        pfnTou_GetSpecialDays;
  zclSE_DeviceMgmt_PublishChangeTenancy_t           pfnDeviceMgmt_PublishChangeTenancy;
  zclSE_DeviceMgmt_PublishChangeSupplier_t          pfnDeviceMgmt_PublishChangeSupplier;
  zclSE_DeviceMgmt_ChangeSupply_t                   pfnDeviceMgmt_ChangeSupply;
  zclSE_DeviceMgmt_ChangePassword_t                 pfnDeviceMgmt_ChangePassword;
  zclSE_DeviceMgmt_LocalChangeSupply_t              pfnDeviceMgmt_LocalChangeSupply;
  zclSE_DeviceMgmt_GetChangeTenancy_t               pfnDeviceMgmt_GetChangeTenancy;
  zclSE_DeviceMgmt_GetChangeSupplier_t              pfnDeviceMgmt_GetChangeSupplier;
  zclSE_DeviceMgmt_GetChangeSupply_t                pfnDeviceMgmt_GetChangeSupply;
  zclSE_DeviceMgmt_SupplyStatusResponse_t           pfnDeviceMgmt_SupplyStatusResponse;
  zclSE_DeviceMgmt_GetPassword_t                    pfnDeviceMgmt_GetPassword;
#endif  // SE_UK_EXT
} zclSE_AppCallbacks_t;




/*********************************************************************
 * VARIABLES
 */


/*********************************************************************
 * FUNCTIONS
 */
/*
 * Register for callbacks from this cluster library
 */
extern ZStatus_t zclSE_RegisterCmdCallbacks( uint8 endpoint, zclSE_AppCallbacks_t *callbacks );

#ifdef ZCL_SIMPLE_METERING
/*
 * Send Get Profile Command
 */
extern ZStatus_t zclSE_SimpleMetering_Send_GetProfileCmd( uint8 srcEP, afAddrType_t *dstAddr,
                                                      uint8 channel, uint32 endTime, uint8 numOfPeriods,
                                                      uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Get Profile Response
 */
extern ZStatus_t zclSE_SimpleMetering_Send_GetProfileRsp( uint8 srcEP, afAddrType_t *dstAddr,
                                                      uint32 endTime, uint8 rspStatus, uint8 profileIntervalPeriod,
                                                      uint8 numOfPeriodDelivered, uint24 *intervals,
                                                      uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Request Mirror Response
 */
extern ZStatus_t zclSE_SimpleMetering_Send_ReqMirrorRsp( uint8 srcEP, afAddrType_t *dstAddr,
                                                      uint16 endpointId,
                                                      uint8 disableDefaultRsp, uint8 seqNum ) ;

/*
 * Send Remove Mirror Response
 */
extern ZStatus_t zclSE_SimpleMetering_Send_RemMirrorRsp( uint8 srcEP, afAddrType_t *dstAddr,
                                                      uint16 endpointId,
                                                      uint8 disableDefaultRsp, uint8 seqNum ) ;

/*
 * Send Request Fast Poll Mode Command
 */
extern ZStatus_t zclSE_SimpleMetering_Send_ReqFastPollModeCmd( uint8 srcEP, afAddrType_t *dstAddr,
                                                      zclCCReqFastPollModeCmd_t *pCmd,
                                                      uint8 disableDefaultRsp, uint8 seqNum ) ;

/*
 * Send Request Fast Poll Mode Response
 */
extern ZStatus_t zclSE_SimpleMetering_Send_ReqFastPollModeRsp( uint8 srcEP, afAddrType_t *dstAddr,
                                                      zclCCReqFastPollModeRsp_t *pCmd,
                                                      uint8 disableDefaultRsp, uint8 seqNum ) ;

#ifdef SE_UK_EXT
/*
 * Send Get Snapshot Command
 */
extern ZStatus_t zclSE_SimpleMetering_Send_GetSnapshotCmd( uint8 srcEP, afAddrType_t *dstAddr,
                                                           zclCCReqGetSnapshotCmd_t *pCmd,
                                                           uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get Snapshot Response
 */
extern ZStatus_t zclSE_SimpleMetering_Send_GetSnapshotRsp( uint8 srcEP, afAddrType_t *dstAddr,
                                                           zclCCReqGetSnapshotRsp_t *pCmd,
                                                           uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Take Snapshot Command
 */
extern ZStatus_t zclSE_SimpleMetering_Send_TakeSnapshot( uint8 srcEP, afAddrType_t *dstAddr,
                                                         uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Mirror Report Attribute Response
 */
extern ZStatus_t zclSE_SimpleMetering_Send_MirrorReportAttrRsp( uint8 srcEP, afAddrType_t *dstAddr,
                                                                zclCCReqMirrorReportAttrRsp_t *pCmd,
                                                                uint8 disableDefaultRsp, uint8 seqNum );
#endif  // SE_UK_EXT
#endif  // ZCL_SIMPLE_METERING

#ifdef ZCL_PRICING

/*
 * Send Publish Price Command
 */
extern ZStatus_t zclSE_Pricing_Send_PublishPrice( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPublishPrice_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

extern ZStatus_t zclSE_Pricing_Send_GetScheduledPrice( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCGetScheduledPrice_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Publish Acknowledgement Command
 */
extern ZStatus_t zclSE_Pricing_Send_PriceAcknowledgement( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPriceAcknowledgement_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Get Block Period Command
 */
extern ZStatus_t zclSE_Pricing_Send_GetBlockPeriod( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCGetBlockPeriod_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Publish Block Period Command
 */
extern ZStatus_t zclSE_Pricing_Send_PublishBlockPeriod( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPublishBlockPeriod_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

#ifdef SE_UK_EXT
/*
 * Send Publish Tariff Information Command
 */
extern ZStatus_t zclSE_Pricing_Send_PublishTariffInformation( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPublishTariffInformation_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Publish Price Matrix Command
 */
extern ZStatus_t zclSE_Pricing_Send_PublishPriceMatrix( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPublishPriceMatrix_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Publish Block Thresholds Command
 */
extern ZStatus_t zclSE_Pricing_Send_PublishBlockThresholds( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPublishBlockThresholds_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Publish Conversion Factor Command
 */
extern ZStatus_t zclSE_Pricing_Send_PublishConversionFactor( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPublishConversionFactor_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Publish Calorific Value Command
 */
extern ZStatus_t zclSE_Pricing_Send_PublishCalorificValue( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPublishCalorificValue_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Publish CO2 Value Command
 */
extern ZStatus_t zclSE_Pricing_Send_PublishCO2Value( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPublishCO2Value_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Publish CPP Event Command
 */
extern ZStatus_t zclSE_Pricing_Send_PublishCPPEvent( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPublishCPPEvent_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Publish Billing Period Command
 */
extern ZStatus_t zclSE_Pricing_Send_PublishBillingPeriod( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPublishBillingPeriod_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Publish Consolidated Bill Command
 */
extern ZStatus_t zclSE_Pricing_Send_PublishConsolidatedBill( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPublishConsolidatedBill_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Publish Credit Payment Info Command
 */
extern ZStatus_t zclSE_Pricing_Send_PublishCreditPaymentInfo( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCPublishCreditPaymentInfo_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get Tariff Information Command
 */
extern ZStatus_t zclSE_Pricing_Send_GetTariffInformation( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCGetTariffInformation_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get Price Matrix Command
 */
extern ZStatus_t zclSE_Pricing_Send_GetPriceMatrix( uint8 srcEP, afAddrType_t *dstAddr,
                                            uint32 issuerId,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get Block Thresholds Command
 */
extern ZStatus_t zclSE_Pricing_Send_GetBlockThresholds( uint8 srcEP, afAddrType_t *dstAddr,
                                            uint32 issuerId,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get Conversion Factor Command
 */
extern ZStatus_t zclSE_Pricing_Send_GetConversionFactor( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCGetConversionFactor_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get Calorific Value Command
 */
extern ZStatus_t zclSE_Pricing_Send_GetCalorificValue( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCGetCalorificValue_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get CO2 Value Command
 */
extern ZStatus_t zclSE_Pricing_Send_GetCO2Value( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCGetCO2Value_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get Billing Period Command
 */
extern ZStatus_t zclSE_Pricing_Send_GetBillingPeriod( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCGetBillingPeriod_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get Consolidated Bill Command
 */
extern ZStatus_t zclSE_Pricing_Send_GetConsolidatedBill( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCGetConsolidatedBill_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send CPP Event Response Command
 */
extern ZStatus_t zclSE_Pricing_Send_CPPEventResponse( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCCPPEventResponse_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );
#endif  // SE_UK_EXT
#endif  // ZCL_PRICING

#ifdef ZCL_MESSAGE
/*
 * Send Display Message Command
 */
extern ZStatus_t zclSE_Message_Send_DisplayMessage( uint8 srcEP, afAddrType_t *dstAddr,
                                             zclCCDisplayMessage_t *pCmd,
                                             uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Cancel Message Command
 */
extern ZStatus_t zclSE_Message_Send_CancelMessage( uint8 srcEP, afAddrType_t *dstAddr,
                                                   zclCCCancelMessage_t *pCmd,
                                                   uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Message Confirmation
 */
extern ZStatus_t zclSE_Message_Send_MessageConfirmation( uint8 srcEP, afAddrType_t *dstAddr,
                                                         zclCCMessageConfirmation_t *pCmd,
                                                         uint8 disableDefaultRsp, uint8 seqNum );
#endif  // ZCL_MESSAGE

#ifdef ZCL_LOAD_CONTROL
/*
 * Send Load Control Event
 */
extern ZStatus_t zclSE_LoadControl_Send_LoadControlEvent( uint8 srcEP, afAddrType_t *dstAddr,
                                                      zclCCLoadControlEvent_t *pCmd,
                                                      uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Cancel Load Control Event
 */
extern ZStatus_t zclSE_LoadControl_Send_CancelLoadControlEvent( uint8 srcEP, afAddrType_t *dstAddr,
                                                      zclCCCancelLoadControlEvent_t *pCmd,
                                                      uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Report Event Status
 */
extern ZStatus_t zclSE_LoadControl_Send_ReportEventStatus( uint8 srcEP, afAddrType_t *dstAddr,
                                                      zclCCReportEventStatus_t *pCmd,
                                                      uint8 disableDefaultRsp, uint8 seqNum );


/*
 * Send Get Scheduled Event
 */
extern ZStatus_t zclSE_LoadControl_Send_GetScheduledEvent( uint8 srcEP, afAddrType_t *dstAddr,
                                                      zclCCGetScheduledEvent_t *pCmd,
                                                      uint8 disableDefaultRsp, uint8 seqNum );
#endif  // ZCL_LOAD_CONTROL

#ifdef ZCL_PREPAYMENT
/*
 * Send Select Available Emergency Credit Command
 */
extern ZStatus_t zclSE_Prepayment_Send_SelAvailEmergencyCredit( uint8 srcEP, afAddrType_t *dstAddr,
                                                      zclCCSelAvailEmergencyCredit_t *pCmd,
                                                      uint8 disableDefaultRsp, uint8 seqNum );

#ifndef SE_UK_EXT
/*
 * Send Change Supply Command
 */
extern ZStatus_t zclSE_Prepayment_Send_ChangeSupply( uint8 srcEP, afAddrType_t *dstAddr,
                                                     zclCCChangeSupply_t *pCmd,
                                                     uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Supply Status Response Command
 */
extern ZStatus_t zclSE_Prepayment_Send_SupplyStatusResponse( uint8 srcEP, afAddrType_t *dstAddr,
                                                     zclCCSupplyStatusResponse_t *pCmd,
                                                     uint8 disableDefaultRsp, uint8 seqNum );

#else // SE_UK_EXT
/*
 * Send Change Debt
 */
extern ZStatus_t zclSE_Prepayment_Send_ChangeDebt( uint8 srcEP, afAddrType_t *dstAddr,
                                                   zclCCChangeDebt_t *pCmd,
                                                   uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Emergency Credit Setup
 */
extern ZStatus_t zclSE_Prepayment_Send_EmergencyCreditSetup( uint8 srcEP, afAddrType_t *dstAddr,
                                                             zclCCEmergencyCreditSetup_t *pCmd,
                                                             uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Consumer Topup
 */
extern ZStatus_t zclSE_Prepayment_Send_ConsumerTopup( uint8 srcEP, afAddrType_t *dstAddr,
                                               zclCCConsumerTopup_t *pCmd,
                                               uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Credit Adjustment
 */
extern ZStatus_t zclSE_Prepayment_Send_CreditAdjustment( uint8 srcEP, afAddrType_t *dstAddr,
                                                  zclCCCreditAdjustment_t *pCmd,
                                                  uint8 disableDefaultRsp, uint8 seqNum );


/*
 * Send Change Payment Mode
 */
extern ZStatus_t zclSE_Prepayment_Send_ChangePaymentMode( uint8 srcEP, afAddrType_t *dstAddr,
                                                   zclCCChangePaymentMode_t *pCmd,
                                                   uint8 disableDefaultRsp, uint8 seqNum );


/*
 * Send Prepay Snapshot
 */
extern ZStatus_t zclSE_Prepayment_Send_GetPrepaySnapshot( uint8 srcEP, afAddrType_t *dstAddr,
                                                zclCCGetPrepaySnapshot_t *pCmd,
                                                uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get Topup Log
 */
extern ZStatus_t zclSE_Prepayment_Send_GetTopupLog( uint8 srcEP, afAddrType_t *dstAddr,
                                             uint8 numEvents, uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Set Low Credit Warning Level
 */
extern ZStatus_t zclSE_Prepayment_Send_SetLowCreditWarningLevel( uint8 srcEP, afAddrType_t *dstAddr,
                                                          uint8 warningLevel, uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get Debt Repayment Log
 */
extern ZStatus_t zclSE_Prepayment_Send_GetDebtRepaymentLog( uint8 srcEP, afAddrType_t *dstAddr,
                                                     zclCCGetDebtRepaymentLog_t *pCmd,
                                                     uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get Prepay Snapshot Response
 */
extern ZStatus_t zclSE_Prepayment_Send_GetPrepaySnapshotResponse( uint8 srcEP, afAddrType_t *dstAddr,
                                                           zclCCGetPrepaySnapshotResponse_t *pCmd,
                                                           uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Change Payment Mode Response
 */
extern ZStatus_t zclSE_Prepayment_Send_ChangePaymentModeResponse( uint8 srcEP, afAddrType_t *dstAddr,
                                                           zclCCChangePaymentModeResponse_t *pCmd,
                                                           uint8 disableDefaultRsp, uint8 seqNum );


/*
 * Send Consumer Topup Response
 */
extern ZStatus_t zclSE_Prepayment_Send_ConsumerTopupResponse( uint8 srcEP, afAddrType_t *dstAddr,
                                                       zclCCConsumerTopupResponse_t *pCmd,
                                                       uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Get Commands
 */
extern ZStatus_t zclSE_Prepayment_Send_GetCommands( uint8 srcEP, afAddrType_t *dstAddr,
                                                    uint8 notificationFlags, uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Publish Topup Log
 */
extern ZStatus_t zclSE_Prepayment_Send_PublishTopupLog( uint8 srcEP, afAddrType_t *dstAddr,
                                                        zclCCPublishTopupLog_t *pCmd,
                                                        uint8 disableDefaultRsp, uint8 seqNum );

/*
 * Send Publish Debt Log
 */
extern ZStatus_t zclSE_Prepayment_Send_PublishDebtLog( uint8 srcEP, afAddrType_t *dstAddr,
                                                       zclCCPublishDebtLog_t *pCmd,
                                                       uint8 disableDefaultRsp, uint8 seqNum );
#endif  // SE_UK_EXT
#endif  // ZCL_PREPAYMENT

#ifdef ZCL_TUNNELING
/*
 * Send Request Tunnel
 */
extern ZStatus_t zclSE_Tunneling_Send_RequestTunnel( uint8 srcEP, afAddrType_t *dstAddr,
                                                     zclCCRequestTunnel_t  *pCmd,
                                                     uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Tunnel Response
 */
extern ZStatus_t zclSE_Tunneling_Send_ReqTunnelRsp( uint8 srcEP, afAddrType_t *dstAddr,
                                                    zclCCReqTunnelRsp_t *pCmd,
                                                    uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Close Tunnel event
 */
extern ZStatus_t zclSE_Tunneling_Send_CloseTunnel( uint8 srcEP, afAddrType_t *dstAddr,
                                                   zclCCCloseTunnel_t *pCmd,
                                                   uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Transfer Data
 */
extern ZStatus_t zclSE_Tunneling_Send_TransferData( uint8 srcEP, afAddrType_t *dstAddr,
                                                    zclCCTransferData_t *pCmd, uint8 cmdId,
                                                    uint16 dataLen, uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Transfer Data Error
 */
extern ZStatus_t zclSE_Tunneling_Send_TransferDataError( uint8 srcEP, afAddrType_t *dstAddr,
                                                         zclCCTransferDataError_t *pCmd, uint8 cmdId,
                                                         uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Data Transfer Acknowledgment
 */
extern ZStatus_t zclSE_Tunneling_Send_AckTransferData( uint8 srcEP, afAddrType_t *dstAddr,
                                                       zclCCAckTransferData_t *pCmd, uint8 cmdId,
                                                       uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Ready Data Transfer
 */
extern ZStatus_t zclSE_Tunneling_Send_ReadyData( uint8 srcEP, afAddrType_t *dstAddr,
                                                 zclCCReadyData_t *pCmd, uint8 cmdId,
                                                 uint8 disableDefaultRsp, uint8 seqNum );
#ifdef SE_UK_EXT
/*
 * Send Get Supported Tunnel Protocol
 */
extern ZStatus_t zclSE_Tunneling_Send_GetSuppTunnelProt( uint8 srcEP, afAddrType_t *dstAddr,
                                                         zclCCGetSuppTunnProt_t *pCmd,
                                                         uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Supported Tunnel Protocol Response
 */
extern ZStatus_t zclSE_Tunneling_Send_SuppTunnelProtRsp( uint8 srcEP, afAddrType_t *dstAddr,
                                                         zclCCSuppTunnProtRsp_t *pCmd,
                                                         uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Tunnel Closure Notification Command
 */
extern ZStatus_t zclSE_Tunneling_Send_TunnelClosureNotification( uint8 srcEP, afAddrType_t *dstAddr,
                                                                 zclCCTunnelClosureNotification_t *pCmd,
                                                                 uint8 disableDefaultRsp, uint8 seqNum );
#endif  // SE_UK_EXT
#endif  // ZCL_TUNNELING

#ifdef ZCL_TOU
#ifdef SE_UK_EXT
/*
 * Send Publish Calendar Command
 */
extern ZStatus_t zclSE_Tou_Send_PublishCalendar( uint8 srcEP, afAddrType_t *dstAddr,
                                                 zclCCPublishCalendar_t *pCmd,
                                                 uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Publish Day Profile Command
 */
extern ZStatus_t zclSE_Tou_Send_PublishDayProfile( uint8 srcEP, afAddrType_t *dstAddr,
                                                   zclCCPublishDayProfile_t *pCmd,
                                                   uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Publish Week Profile Command
 */
extern ZStatus_t zclSE_Tou_Send_PublishWeekProfile( uint8 srcEP, afAddrType_t *dstAddr,
                                                    zclCCPublishWeekProfile_t *pCmd,
                                                    uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Publish Seasons Command
 */
extern ZStatus_t zclSE_Tou_Send_PublishSeasons( uint8 srcEP, afAddrType_t *dstAddr,
                                                zclCCPublishSeasons_t *pCmd,
                                                uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Publish Special Days Command
 */
extern ZStatus_t zclSE_Tou_Send_PublishSpecialDays( uint8 srcEP, afAddrType_t *dstAddr,
                                                    zclCCPublishSpecialDays_t *pCmd,
                                                    uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Get Calendar Command
 */
extern ZStatus_t zclSE_Tou_Send_GetCalendar( uint8 srcEP, afAddrType_t *dstAddr,
                                             zclCCGetCalendar_t *pCmd,
                                             uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Get Day Profiles Command
 */
extern ZStatus_t zclSE_Tou_Send_GetDayProfiles( uint8 srcEP, afAddrType_t *dstAddr,
                                                zclCCGetDayProfiles_t *pCmd,
                                                uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Get Week Profile Command
 */
extern ZStatus_t zclSE_Tou_Send_GetWeekProfiles( uint8 srcEP, afAddrType_t *dstAddr,
                                                 zclCCGetWeekProfiles_t *pCmd,
                                                 uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Get Seasons Command
 */
extern ZStatus_t zclSE_Tou_Send_GetSeasons( uint8 srcEP, afAddrType_t *dstAddr,
                                            zclCCGetSeasons_t *pCmd,
                                            uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Get Special Days Command
 */
extern ZStatus_t zclSE_Tou_Send_GetSpecialDays( uint8 srcEP, afAddrType_t *dstAddr,
                                                zclCCGetSpecialDays_t *pCmd,
                                                uint8 disableDefaultRsp, uint8 seqNum );
#endif  // SE_UK_EXT
#endif  // ZCL_TOU

#ifdef ZCL_DEVICE_MGMT
#ifdef SE_UK_EXT
/*
 * Send Get Change of Tenancy Command
 */
extern ZStatus_t zclSE_DeviceMgmt_Send_GetChangeTenancy( uint8 srcEP, afAddrType_t *dstAddr,
                                                         uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Get Change of Supplier Command
 */
extern ZStatus_t zclSE_DeviceMgmt_Send_GetChangeSupplier( uint8 srcEP, afAddrType_t *dstAddr,
                                                          uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Get Change Supply Command
 */
extern ZStatus_t zclSE_DeviceMgmt_Send_GetChangeSupply( uint8 srcEP, afAddrType_t *dstAddr,
                                                        uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Supply Status Response Command
 */
extern ZStatus_t zclSE_DeviceMgmt_Send_SupplyStatusResponse( uint8 srcEP, afAddrType_t *dstAddr,
                                                             zclCCSupplyStatusResponse_t *pCmd,
                                                             uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Get Password Command
 */
extern ZStatus_t zclSE_DeviceMgmt_Send_GetPassword( uint8 srcEP, afAddrType_t *dstAddr,
                                                    zclCCGetPassword_t *pCmd,
                                                    uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Publish Change of Tenancy Command
 */
extern ZStatus_t zclSE_DeviceMgmt_Send_PublishChangeTenancy( uint8 srcEP, afAddrType_t *dstAddr,
                                                             zclCCPublishChangeTenancy_t *pCmd,
                                                             uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Publish Change of Supplier Command
 */
extern ZStatus_t zclSE_DeviceMgmt_Send_PublishChangeSupplier( uint8 srcEP, afAddrType_t *dstAddr,
                                                              zclCCPublishChangeSupplier_t *pCmd,
                                                              uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Change Supply Command
 */
extern ZStatus_t zclSE_DeviceMgmt_Send_ChangeSupply( uint8 srcEP, afAddrType_t *dstAddr,
                                                     zclCCChangeSupply_t *pCmd,
                                                     uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Change Password Command
 */
extern ZStatus_t zclSE_DeviceMgmt_Send_ChangePassword( uint8 srcEP, afAddrType_t *dstAddr,
                                                       zclCCChangePassword_t *pCmd,
                                                       uint8 disableDefaultRsp, uint8 seqNum );
/*
 * Send Local Change Supply Command
 */
extern ZStatus_t zclSE_DeviceMgmt_Send_LocalChangeSupply( uint8 srcEP, afAddrType_t *dstAddr,
                                                          zclCCLocalChangeSupply_t *pCmd,
                                                          uint8 disableDefaultRsp, uint8 seqNum );
#endif  // SE_UK_EXT
#endif  // ZCL_DEVICE_MGMT

#ifdef ZCL_PRICING
/*
 * Parse received Publish Price Command
 */
extern ZStatus_t zclSE_ParseInCmd_PublishPrice( zclCCPublishPrice_t *pCmd, uint8 *buf, uint8 len );

/*
 * Parse received Publish Block Period Command
 */
extern void zclSE_ParseInCmd_PublishBlockPeriod( zclCCPublishBlockPeriod_t *pCmd,
                                                 uint8 *buf, uint8 len );

#ifdef SE_UK_EXT
/*
 * Parse received Publish Tariff Infomation
 */
extern void zclSE_ParseInCmd_PublishTariffInformation( zclCCPublishTariffInformation_t *pCmd,
                                                       uint8 *buf, uint8 len );

/*
 * Parse received Publish Price Matrix
 */
extern ZStatus_t zclSE_ParseInCmd_PublishPriceMatrix( zclCCPublishPriceMatrix_t *pCmd,
                                                      uint8 *buf, uint8 len );

/*
 * Parse received Publish Block Thresholds
 */
extern ZStatus_t zclSE_ParseInCmd_PublishBlockThresholds( zclCCPublishBlockThresholds_t *pCmd,
                                                          uint8 *buf, uint8 len );

/*
 * Parse received Publish Conversion Factor
 */
extern void zclSE_ParseInCmd_PublishConversionFactor( zclCCPublishConversionFactor_t *pCmd,
                                                      uint8 *buf, uint8 len );

/*
 * Parse received Publish Calorific Value
 */
extern void zclSE_ParseInCmd_PublishCalorificValue( zclCCPublishCalorificValue_t *pCmd,
                                                    uint8 *buf, uint8 len );

/*
 * Parse received Publish CO2 Value
 */
extern void zclSE_ParseInCmd_PublishCO2Value( zclCCPublishCO2Value_t *pCmd,
                                              uint8 *buf, uint8 len );

/*
 * Parse received Publish CPP Event
 */
extern void zclSE_ParseInCmd_PublishCPPEvent( zclCCPublishCPPEvent_t *pCmd,
                                              uint8 *buf, uint8 len );

/*
 * Parse received Publish Billing Period
 */
extern void zclSE_ParseInCmd_PublishBillingPeriod( zclCCPublishBillingPeriod_t *pCmd,
                                                   uint8 *buf, uint8 len );

/*
 * Parse received Publish Consolidated Bill
 */
extern void zclSE_ParseInCmd_PublishConsolidatedBill( zclCCPublishConsolidatedBill_t *pCmd,
                                                      uint8 *buf, uint8 len );

/*
 * Parse received Publish Credit PaymentInfo
 */
extern void zclSE_ParseInCmd_PublishCreditPaymentInfo( zclCCPublishCreditPaymentInfo_t *pCmd,
                                                       uint8 *buf, uint8 len );

/*
 * Parse received Get Tariff Information
 */
extern void zclSE_ParseInCmd_GetTariffInformation( zclCCGetTariffInformation_t *pCmd,
                                                   uint8 *buf, uint8 len );

/*
 * Parse received Get Conversion Factor
 */
extern void zclSE_ParseInCmd_GetConversionFactor( zclCCGetConversionFactor_t *pCmd,
                                                  uint8 *buf, uint8 len );

/*
 * Parse received Get Calorific Value
 */
extern void zclSE_ParseInCmd_GetCalorificValue( zclCCGetCalorificValue_t *pCmd,
                                                uint8 *buf, uint8 len );

/*
 * Parse received Get CO2 Value
 */
extern void zclSE_ParseInCmd_GetCO2Value( zclCCGetCO2Value_t *pCmd,
                                          uint8 *buf, uint8 len );

/*
 * Parse received Get Billing Period
 */
extern void zclSE_ParseInCmd_GetBillingPeriod( zclCCGetBillingPeriod_t *pCmd,
                                               uint8 *buf, uint8 len );

/*
 * Parse received Get Consolidated Bill
 */
extern void zclSE_ParseInCmd_GetConsolidatedBill( zclCCGetConsolidatedBill_t *pCmd,
                                                  uint8 *buf, uint8 len );

/*
 * Parse received CPP Event Response
 */
extern void zclSE_ParseInCmd_CPPEventResponse( zclCCCPPEventResponse_t *pCmd,
                                               uint8 *buf, uint8 len );

#endif  // SE_UK_EXT
#endif  // ZCL_PRICING

#ifdef ZCL_MESSAGE
/*
 * Parse received Display Message Command
 */
extern ZStatus_t zclSE_ParseInCmd_DisplayMessage( zclCCDisplayMessage_t *pCmd,
                                                  uint8 *buf, uint8 len );

/*
 * Parse received Cancel Message Command
 */
extern void zclSE_ParseInCmd_CancelMessage( zclCCCancelMessage_t *pCmd,
                                            uint8 *buf, uint8 len );

/*
 * Parse received Message Confirmation Command
 */
extern void zclSE_ParseInCmd_MessageConfirmation( zclCCMessageConfirmation_t *pCmd,
                                                  uint8 *buf, uint8 len );

#endif  // ZCL_MESSAGE

#ifdef ZCL_LOAD_CONTROL
/*
 * Parse received Load Control Event
 */
extern void zclSE_ParseInCmd_LoadControlEvent( zclCCLoadControlEvent_t *pCmd,
                                               uint8 *buf, uint8 len );

/*
 * Parse received Cancel Load Control Event
 */
extern void zclSE_ParseInCmd_CancelLoadControlEvent( zclCCCancelLoadControlEvent_t *pCmd,
                                                     uint8 *buf, uint8 len );

/*
 * Parse received Report Event Status
 */
extern void zclSE_ParseInCmd_ReportEventStatus( zclCCReportEventStatus_t *pCmd,
                                                uint8 *buf, uint8 len );

#endif  // ZCL_LOAD_CONTROL

#ifdef ZCL_PREPAYMENT
/*
 * Parse received Select Available Emergency Credit Command
 */
extern void zclSE_ParseInCmd_SelAvailEmergencyCredit( zclCCSelAvailEmergencyCredit_t *pCmd,
                                                      uint8 *buf, uint8 len );

#ifndef SE_UK_EXT // this is SE 1.1 command definition
/*
 * Parse received Select Change Supply Command
 */
extern void zclSE_ParseInCmd_ChangeSupply( zclCCChangeSupply_t *pCmd,
                                           uint8 *buf, uint8 len );
#else
/*
 * Parse received Change Debt Command
 */
extern void zclSE_ParseInCmd_ChangeDebt( zclCCChangeDebt_t *pCmd,
                                         uint8 *buf, uint8 len );

/*
 * Parse received Emergency Credit Setup
 */
extern void zclSE_ParseInCmd_EmergencyCreditSetup( zclCCEmergencyCreditSetup_t *pCmd,
                                                   uint8 *buf, uint8 len );

/*
 * Parse received Consumer Topup
 */
extern void zclSE_ParseInCmd_ConsumerTopup( zclCCConsumerTopup_t *pCmd,
                                            uint8 *buf, uint8 len );

/*
 * Parse received Credit Adjustment
 */
extern void zclSE_ParseInCmd_CreditAdjustment( zclCCCreditAdjustment_t *pCmd,
                                               uint8 *buf, uint8 len );

/*
 * Parse received Change Payment Mode
 */
extern void zclSE_ParseInCmd_ChangePaymentMode( zclCCChangePaymentMode_t *pCmd,
                                                uint8 *buf, uint8 len );

/*
 * Parse received Get Prepay Snapshot
 */
extern void zclSE_ParseInCmd_GetPrepaySnapshot( zclCCGetPrepaySnapshot_t *pCmd,
                                                uint8 *buf, uint8 len );

/*
 * Parse received Get Debt Repayment Log
 */
extern void zclSE_ParseInCmd_GetDebtRepaymentLog( zclCCGetDebtRepaymentLog_t *pCmd,
                                                  uint8 *buf, uint8 len );

/*
 * Parse received Get Prepay Snapshot Response
 */
extern void zclSE_ParseInCmd_GetPrepaySnapshotResponse( zclCCGetPrepaySnapshotResponse_t *pCmd,
                                                        uint8 *buf, uint8 len );

/*
 * Parse received Change Payment Mode Response
 */
extern void zclSE_ParseInCmd_ChangePaymentModeResponse( zclCCChangePaymentModeResponse_t *pCmd,
                                                        uint8 *buf, uint8 len );

/*
 * Parse received Consumer Topup Response
 */
extern void zclSE_ParseInCmd_ConsumerTopupResponse( zclCCConsumerTopupResponse_t *pCmd,
                                                    uint8 *buf, uint8 len );

/*
 * Parse received Publish Topup Log
 */
extern ZStatus_t zclSE_ParseInCmd_PublishTopupLog( zclCCPublishTopupLog_t *pCmd,
                                                   uint8 *buf, uint8 len );

/*
 * Parse received Publish Debt Log
 */
extern ZStatus_t zclSE_ParseInCmd_PublishDebtLog( zclCCPublishDebtLog_t *pCmd,
                                                  uint8 *buf, uint8 len );
#endif  // SE_UK_EXT
#endif  // ZCL_PREPAYMENT

#ifdef ZCL_TUNNELING
/*
 * Parse received Transfer Data Command
 */
extern void zclSE_ParseInCmd_TransferData( zclCCTransferData_t *pCmd,
                                           uint8 *buf, uint8 len );
#endif  // ZCL_TUNNELING

#ifdef ZCL_TOU
#ifdef SE_UK_EXT
/*
 * Parse received Publish Calendar Command
 */
extern void zclSE_ParseInCmd_PublishCalendar( zclCCPublishCalendar_t *pCmd,
                                              uint8 *buf, uint8 len );

/*
 * Parse received Publish Day Profile Command
 */
extern ZStatus_t zclSE_ParseInCmd_PublishDayProfile( zclCCPublishDayProfile_t *pCmd,
                                                     uint8 *buf, uint8 len );

/*
 * Parse received Publish Seasons Command
 */
extern ZStatus_t zclSE_ParseInCmd_PublishSeasons( zclCCPublishSeasons_t *pCmd,
                                                  uint8 *buf, uint8 len );

/*
 * Parse received Publish Special Days Command
 */
extern ZStatus_t zclSE_ParseInCmd_PublishSpecialDays( zclCCPublishSpecialDays_t *pCmd,
                                                      uint8 *buf, uint8 len );
#endif  // SE_UK_EXT
#endif  // ZCL_TOU

#ifdef ZCL_DEVICE_MGMT
#ifdef SE_UK_EXT
/*
 * Parse received Publish Change of Tenancy Command
 */
extern void zclSE_ParseInCmd_PublishChangeTenancy( zclCCPublishChangeTenancy_t *pCmd,
                                                   uint8 *buf, uint8 len );

/*
 * Parse received Publish Change of Supplier Command
 */
extern void zclSE_ParseInCmd_PublishChangeSupplier( zclCCPublishChangeSupplier_t *pCmd,
                                                    uint8 *buf, uint8 len );

/*
 * Parse received Change Supply Command
 */
extern void zclSE_ParseInCmd_ChangeSupply( zclCCChangeSupply_t *pCmd,
                                           uint8 *buf, uint8 len );

/*
 * Parse received Change Password Command
 */
extern void zclSE_ParseInCmd_ChangePassword( zclCCChangePassword_t *pCmd,
                                             uint8 *buf, uint8 len );
#endif  // SE_UK_EXT
#endif  // ZCL_DEVICE_MGMT

/*********************************************************************
 * FUNCTION MACROS
 */

#ifdef ZCL_PRICING

/*********************************************************************
 * @fn      zclSE_Pricing_Send_GetCurrentPrice
 *
 * @brief   Call to send out a Get Current Price Command
 *
 * Use as
 * ZStatus_t zclSE_Pricing_Send_GetCurrentPrice( uint8 srcEP, afAddrType_t *dstAddr,
 *                                                uint8 option,
 *                                                uint8 disableDefaultRsp, uint8 seqNum )
 *
 * @param   srcEP - Sending application's endpoint
 * @param   dstAddr - where you want the message to go
 * @param   option - Command option field
 * @param   disableDefaultRsp - disable default response
 * @param   seqNum - ZCL sequence number
 *
 * @return  ZStatus_t
 */
#define zclSE_Pricing_Send_GetCurrentPrice(a, b, c, d, e)  \
         zcl_SendCommand( (a), (b), ZCL_CLUSTER_ID_SE_PRICING,  \
                          COMMAND_SE_GET_CURRENT_PRICE, TRUE,   \
                          ZCL_FRAME_CLIENT_SERVER_DIR, (d), 0, (e), 1, &(c) );


#endif // ZCL_PRICING

#ifdef ZCL_SIMPLE_METERING

/*********************************************************************
 * @fn      zclSE_SimpleMetering_Send_ReqMirrorCmd
 *
 * @brief   Call to send out a Request Mirror Command
 *
 * @param   srcEP - Sending application's endpoint
 * @param   dstAddr - where you want the message to go
 * @param   disableDefaultRsp - disable default response
 * @param   seqNum - ZCL sequence number
 *
 * @return  ZStatus_t
 */
#define zclSE_SimpleMetering_Send_ReqMirrorCmd(a, b, c, d)  \
        zcl_SendCommand( (a), (b), ZCL_CLUSTER_ID_SE_SIMPLE_METERING,     \
                         COMMAND_SE_REQ_MIRROR_CMD, TRUE,    \
                         ZCL_FRAME_SERVER_CLIENT_DIR, (c), 0, (d), 0, NULL );

/*********************************************************************
 * @fn      zclSE_SimpleMetering_Send_RemMirrorCmd
 *
 * @brief   Call to send out a Remove Mirror Command
 *
 * @param   srcEP - Sending application's endpoint
 * @param   dstAddr - where you want the message to go
 * @param   disableDefaultRsp - disable default response
 * @param   seqNum - ZCL sequence number
 *
 * @return  ZStatus_t
 */

#define zclSE_SimpleMetering_Send_RemMirrorCmd(a, b, c, d)  \
        zcl_SendCommand( (a), (b), ZCL_CLUSTER_ID_SE_SIMPLE_METERING,     \
                         COMMAND_SE_MIRROR_REM_CMD, TRUE,    \
                         ZCL_FRAME_SERVER_CLIENT_DIR, (c), 0, (d), 0, NULL );


#endif // ZCL_SIMPLE_METERING

#ifdef ZCL_MESSAGE
/*********************************************************************
 * @fn      zclSE_Message_Send_GetLastMessage
 *
 * @brief   Call to send out a Get Last Message
 *
 * Use as
 * ZStatus_t zclSE_Message_Send_GetLastMessage( uint8 srcEP, afAddrType_t *dstAddr,
 *                                               uint8 disableDefaultRsp, uint8 seqNum )
 *
 * @param   srcEP - Sending application's endpoint
 * @param   dstAddr - where you want the message to go
 * @param   disableDefaultRsp - disable default response
 * @param   seqNum - ZCL sequence number
 *
 * @return  ZStatus_t
 */
#define zclSE_Message_Send_GetLastMessage(a, b, c, d) \
        zcl_SendCommand( (a), (b), ZCL_CLUSTER_ID_SE_MESSAGE,  \
                          COMMAND_SE_GET_LAST_MESSAGE, TRUE,   \
                          ZCL_FRAME_CLIENT_SERVER_DIR, (c), 0, (d), 0, NULL );

#endif // ZCL_MESSAGE

#ifdef ZCL_LOAD_CONTROL

/*********************************************************************
 * @fn      zclSE_LoadControl_Send_CancelAllLoadControlEvent
 *
 * @brief   Call to send out a Cancel All Load Control Event
 *
 * Use as
 * ZStatus_t zclSE_LoadControl_Send_CancelAllLoadControlEvent( uint8 srcEP, afAddrType_t *dstAddr,
 *                                                     uint8 cancelControl,
 *                                                     uint8 disableDefaultRsp, uint8 seqNum )
 *
 * @param   srcEP - Sending application's endpoint
 * @param   dstAddr - where you want the message to go
 * @param   cancelControl
 * @param   disableDefaultRsp - disable default response
 * @param   seqNum - ZCL sequence number
 *
 * @return  ZStatus_t
 */
#define zclSE_LoadControl_Send_CancelAllLoadControlEvent(a, b, c, d, e) \
        zcl_SendCommand( (a), (b), ZCL_CLUSTER_ID_SE_LOAD_CONTROL,    \
                          COMMAND_SE_CANCEL_ALL_LOAD_CONTROL_EVENT, TRUE,  \
                          ZCL_FRAME_SERVER_CLIENT_DIR, (d), 0, (e), 1, &(c) );



#endif // ZCL_LOAD_CONTROL

#ifdef __cplusplus
}
#endif

#endif /* ZCL_SE_H */
