2016-01-07 06:32:00 +00:00
/* packet-zbee-zcl-hvac.c
* Dissector routines for the ZigBee ZCL HVAC clusters
* By Aditya Jain < aditya . jain @ samsung . com >
*
* Wireshark - Network traffic analyzer
* By Gerald Combs < gerald @ wireshark . org >
* Copyright 1998 Gerald Combs
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA .
*/
/* Include Files */
# include "config.h"
# include <epan/packet.h>
# include <epan/to_str.h>
# include "packet-zbee.h"
# include "packet-zbee-aps.h"
# include "packet-zbee-zcl.h"
/* ########################################################################## */
/* #### (0x0200) PUMP CONFIGURATION AND CONTROL CLUSTER ##################### */
/* ########################################################################## */
/*************************/
/* Defines */
/*************************/
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_NUM_ETT 3
/*Attributes*/
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_PRESSURE 0x0000 /* Maximum Pressure */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_SPEED 0x0001 /* Maximum Speed */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_FLOW 0x0002 /* Maximum Flow */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_CONST_PRESSURE 0x0003 /* Minimum Constant Pressure */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_CONST_PRESSURE 0x0004 /* Maximum Constant Pressure */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_COMP_PRESSURE 0x0005 /* Minimum Compensated Pressure */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_POWER_MAX_COMP_PRESSURE 0x0006 /* Maximum Compensated Pressure */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_CONST_SPEED 0x0007 /* Minimum Constant Speed */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_CONST_SPEED 0x0008 /* Maximum Constant Speed */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_CONST_FLOW 0x0009 /* Minimum Constant Flow */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_CONST_FLOW 0x000a /* Maximum Constant Flow */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_CONST_TEMP 0x000b /* Minimum Constant Temperature */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_CONST_TEMP 0x000c /* Maximum Constant Temperature */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_PUMP_STATUS 0x0010 /* Pump Status */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_EFFECTIVE_OPR_MODE 0x0011 /* Effective Operation Mode */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_EFFECTIVE_CTRL_MODE 0x0012 /* Effective Control Mode */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_CAPACITY 0x0013 /* Capacity */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_SPEED 0x0014 /* Speed */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_LIFETIME_RUNNING_HOURS 0x0015 /* Lifetime Running Hours */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_POWER 0x0016 /* Power */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_LIFETIME_ENERGY_CONS 0x0017 /* Lifetime Energy Consumed */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_OPR_MODE 0x0020 /* Operation Mode */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_CTRL_MODE 0x0021 /* Control Mode */
# define ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_ALARM_MASK 0x0022 /* Alarm Mask */
/*Server commands received - none*/
/*Server commands generated - none*/
/*Pump Status Mask Values*/
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_DEVICE_FAULT 0x0001 /* Device Fault */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_SUPPLY_FAULT 0x0002 /* Supply Fault */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_SPEED_LOW 0x0004 /* Speed Low */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_SPEED_HIGH 0x0008 /* Speed High */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_LOCAL_OVERRIDE 0x0010 /* Local Override */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_RUNNING 0x0020 /* Running */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_REMOTE_PRESSURE 0x0040 /* Remote Pressure */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_REMOTE_FLOW 0x0080 /* Remote Flow */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_REMOTE_TEMP 0x0100 /* Remote Temperature */
/*Alarm Mask Values*/
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_VOLTAGE_TOO_LOW 0x0001 /* Supply voltage too low */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_VOLTAGE_TOO_HIGH 0x0002 /* Supply voltage too high */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_PWR_MISSING_PHASE 0x0004 /* Power missing phase */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_PRESSURE_TOO_LOW 0x0008 /* System pressure too low */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_PRESSURE_TOO_HIGH 0x0010 /* System pressure too high */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_DRY_RUNNING 0x0020 /* Dry running */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_MTR_TEMP_TOO_HIGH 0x0040 /* Motor temperature too high */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_PUMP_MTR_FATAL_FAILURE 0x0080 /* Pump motor has fatal failure */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_ELEC_TEMP_TOO_HIGH 0x0100 /* Electronic temperature too high */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_PUMP_BLOCK 0x0200 /* Pump blocked */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_SENSOR_FAILURE 0x0400 /* Sensor failure */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_ELEC_NON_FATAL_FAILURE 0x0800 /* Electronic non-fatal failure */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_ELEC_FATAL_FAILURE 0x1000 /* Electronic fatal failure */
# define ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_GENERAL_FAULT 0x2000 /* Genral fault */
/*************************/
/* Function Declarations */
/*************************/
void proto_register_zbee_zcl_pump_config_control ( void ) ;
void proto_reg_handoff_zbee_zcl_pump_config_control ( void ) ;
/* Command Dissector Helpers */
static void dissect_zcl_pump_config_control_attr_data ( proto_tree * tree , tvbuff_t * tvb , guint * offset , guint16 attr_id , guint data_type ) ;
/* Private functions prototype */
/*************************/
/* Global Variables */
/*************************/
/* Initialize the protocol and registered fields */
static int proto_zbee_zcl_pump_config_control = - 1 ;
static int hf_zbee_zcl_pump_config_control_attr_id = - 1 ;
static int hf_zbee_zcl_pump_config_control_attr_eff_opr_mode = - 1 ;
static int hf_zbee_zcl_pump_config_control_attr_opr_mode = - 1 ;
static int hf_zbee_zcl_pump_config_control_attr_eff_ctrl_mode = - 1 ;
static int hf_zbee_zcl_pump_config_control_attr_ctrl_mode = - 1 ;
static int hf_zbee_zcl_pump_config_control_status = - 1 ;
static int hf_zbee_zcl_pump_config_control_status_device_fault = - 1 ;
static int hf_zbee_zcl_pump_config_control_status_supply_fault = - 1 ;
static int hf_zbee_zcl_pump_config_control_status_speed_low = - 1 ;
static int hf_zbee_zcl_pump_config_control_status_speed_high = - 1 ;
static int hf_zbee_zcl_pump_config_control_status_local_override = - 1 ;
static int hf_zbee_zcl_pump_config_control_status_running = - 1 ;
static int hf_zbee_zcl_pump_config_control_status_rem_pressure = - 1 ;
static int hf_zbee_zcl_pump_config_control_status_rem_flow = - 1 ;
static int hf_zbee_zcl_pump_config_control_status_rem_temp = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_volt_too_low = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_volt_too_high = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_pwr_missing_phase = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_press_too_low = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_press_too_high = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_dry_running = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_mtr_temp_too_high = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_pump_mtr_fatal_fail = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_elec_temp_too_high = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_pump_block = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_sensor_fail = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_elec_non_fatal_fail = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_fatal_fail = - 1 ;
static int hf_zbee_zcl_pump_config_control_alarm_gen_fault = - 1 ;
/* Initialize the subtree pointers */
static gint ett_zbee_zcl_pump_config_control = - 1 ;
static gint ett_zbee_zcl_pump_config_control_status = - 1 ;
static gint ett_zbee_zcl_pump_config_control_alarm = - 1 ;
/* Attributes */
static const value_string zbee_zcl_pump_config_control_attr_names [ ] = {
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_PRESSURE , " Maximum Pressure " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_SPEED , " Maximum Speed " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_FLOW , " Maximum Flow " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_CONST_PRESSURE , " Minimum Constant Pressure " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_CONST_PRESSURE , " Maximum Constant Pressure " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_COMP_PRESSURE , " Minimum Compensated Pressure " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_POWER_MAX_COMP_PRESSURE , " Maximum Compensated Pressure " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_CONST_SPEED , " Minimum Constant Speed " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_CONST_SPEED , " Maximum Constant Speed " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_CONST_FLOW , " Minimum Constant Flow " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_CONST_FLOW , " Maximum Constant Flow " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_CONST_TEMP , " Minimum Constant Temperature " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_CONST_TEMP , " Maximum Constant Temperature " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_PUMP_STATUS , " Pump Status " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_EFFECTIVE_OPR_MODE , " Effective Operation Mode " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_EFFECTIVE_CTRL_MODE , " Effective Control Mode " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_CAPACITY , " Capacity " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_SPEED , " Speed " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_LIFETIME_RUNNING_HOURS , " Lifetime Running Hours " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_POWER , " Power " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_LIFETIME_ENERGY_CONS , " Lifetime Energy Consumed " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_OPR_MODE , " Operation Mode " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_CTRL_MODE , " Control Mode " } ,
{ ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_ALARM_MASK , " Alarm Mask " } ,
{ 0 , NULL }
} ;
/*Operation Mode Values*/
static const value_string zbee_zcl_pump_config_control_operation_mode_names [ ] = {
{ 0 , " Noramal " } ,
{ 1 , " Minimum " } ,
{ 2 , " Maximum " } ,
{ 3 , " Local " } ,
{ 0 , NULL }
} ;
/*Control Mode Values*/
static const value_string zbee_zcl_pump_config_control_control_mode_names [ ] = {
{ 0 , " Constant Speed " } ,
{ 1 , " Constant Pressure " } ,
{ 2 , " proportional Pressure " } ,
{ 3 , " Constant Flow " } ,
{ 4 , " Reserved " } ,
{ 5 , " Constat Temperature " } ,
{ 6 , " Reserved " } ,
{ 7 , " Automatic " } ,
{ 0 , NULL }
} ;
/*************************/
/* Function Bodies */
/*************************/
/**
* ZigBee ZCL Pump Configuration and Control cluster dissector for wireshark .
*
* @ param tvb pointer to buffer containing raw packet .
* @ param pinfo pointer to packet information fields
* @ param tree pointer to data tree Wireshark uses to display packet .
*/
static int
dissect_zbee_zcl_pump_config_control ( tvbuff_t * tvb _U_ , packet_info * pinfo _U_ , proto_tree * tree _U_ , void * data _U_ )
{
return tvb_captured_length ( tvb ) ;
} /*dissect_zbee_zcl_pump_config_control*/
/**
* This function is called by ZCL foundation dissector in order to decode
*
* @ param tree pointer to data tree Wireshark uses to display packet .
* @ param tvb pointer to buffer containing raw packet .
* @ param offset pointer to buffer offset
* @ param attr_id attribute identifier
* @ param data_type attribute data type
*/
void
dissect_zcl_pump_config_control_attr_data ( proto_tree * tree , tvbuff_t * tvb , guint * offset , guint16 attr_id , guint data_type )
{
static const int * pump_status [ ] = {
& hf_zbee_zcl_pump_config_control_status_device_fault ,
& hf_zbee_zcl_pump_config_control_status_supply_fault ,
& hf_zbee_zcl_pump_config_control_status_speed_low ,
& hf_zbee_zcl_pump_config_control_status_speed_high ,
& hf_zbee_zcl_pump_config_control_status_local_override ,
& hf_zbee_zcl_pump_config_control_status_running ,
& hf_zbee_zcl_pump_config_control_status_rem_pressure ,
& hf_zbee_zcl_pump_config_control_status_rem_flow ,
& hf_zbee_zcl_pump_config_control_status_rem_temp ,
NULL
} ;
static const int * alarm_mask [ ] = {
& hf_zbee_zcl_pump_config_control_alarm_volt_too_low ,
& hf_zbee_zcl_pump_config_control_alarm_volt_too_high ,
& hf_zbee_zcl_pump_config_control_alarm_pwr_missing_phase ,
& hf_zbee_zcl_pump_config_control_alarm_press_too_low ,
& hf_zbee_zcl_pump_config_control_alarm_press_too_high ,
& hf_zbee_zcl_pump_config_control_alarm_dry_running ,
& hf_zbee_zcl_pump_config_control_alarm_mtr_temp_too_high ,
& hf_zbee_zcl_pump_config_control_alarm_pump_mtr_fatal_fail ,
& hf_zbee_zcl_pump_config_control_alarm_elec_temp_too_high ,
& hf_zbee_zcl_pump_config_control_alarm_pump_block ,
& hf_zbee_zcl_pump_config_control_alarm_sensor_fail ,
& hf_zbee_zcl_pump_config_control_alarm_elec_non_fatal_fail ,
& hf_zbee_zcl_pump_config_control_alarm_fatal_fail ,
& hf_zbee_zcl_pump_config_control_alarm_gen_fault ,
NULL
} ;
/* Dissect attribute data type and data */
switch ( attr_id ) {
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_EFFECTIVE_OPR_MODE :
proto_tree_add_item ( tree , hf_zbee_zcl_pump_config_control_attr_eff_opr_mode , tvb , * offset , 1 , ENC_NA ) ;
* offset + = 1 ;
break ;
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_OPR_MODE :
proto_tree_add_item ( tree , hf_zbee_zcl_pump_config_control_attr_opr_mode , tvb , * offset , 1 , ENC_NA ) ;
* offset + = 1 ;
break ;
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_EFFECTIVE_CTRL_MODE :
proto_tree_add_item ( tree , hf_zbee_zcl_pump_config_control_attr_eff_ctrl_mode , tvb , * offset , 1 , ENC_NA ) ;
* offset + = 1 ;
break ;
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_CTRL_MODE :
proto_tree_add_item ( tree , hf_zbee_zcl_pump_config_control_attr_ctrl_mode , tvb , * offset , 1 , ENC_NA ) ;
* offset + = 1 ;
break ;
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_PUMP_STATUS :
proto_tree_add_bitmask ( tree , tvb , * offset , hf_zbee_zcl_pump_config_control_status , ett_zbee_zcl_pump_config_control_status , pump_status , ENC_LITTLE_ENDIAN ) ;
* offset + = 2 ;
break ;
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_ALARM_MASK :
proto_tree_add_bitmask ( tree , tvb , * offset , hf_zbee_zcl_pump_config_control_alarm , ett_zbee_zcl_pump_config_control_alarm , alarm_mask , ENC_LITTLE_ENDIAN ) ;
* offset + = 2 ;
break ;
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_PRESSURE :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_SPEED :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_FLOW :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_CONST_PRESSURE :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_CONST_PRESSURE :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_COMP_PRESSURE :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_POWER_MAX_COMP_PRESSURE :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_CONST_SPEED :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_CONST_SPEED :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_CONST_FLOW :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_CONST_FLOW :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MIN_CONST_TEMP :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_MAX_CONST_TEMP :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_CAPACITY :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_SPEED :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_LIFETIME_RUNNING_HOURS :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_POWER :
case ZBEE_ZCL_ATTR_ID_PUMP_CONFIG_CONTROL_LIFETIME_ENERGY_CONS :
default :
dissect_zcl_attr_data ( tvb , tree , offset , data_type ) ;
break ;
}
} /*dissect_zcl_pump_config_control_attr_data*/
/**
* ZigBee ZCL Pump Configuration and Control cluster protocol registration routine .
*
*/
void
proto_register_zbee_zcl_pump_config_control ( void )
{
/* Setup list of header fields */
static hf_register_info hf [ ] = {
{ & hf_zbee_zcl_pump_config_control_attr_id ,
{ " Attribute " , " zbee_zcl_hvac.pump_config_control.attr_id " , FT_UINT16 , BASE_HEX , VALS ( zbee_zcl_pump_config_control_attr_names ) ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_attr_eff_opr_mode ,
{ " Effective Operation Mode " , " zbee_zcl_hvac.pump_config_control.attr.effective_opr_mode " , FT_UINT8 , BASE_DEC , VALS ( zbee_zcl_pump_config_control_operation_mode_names ) ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_attr_opr_mode ,
{ " Operation Mode " , " zbee_zcl_hvac.pump_config_control.attr.opr_mode " , FT_UINT8 , BASE_DEC , VALS ( zbee_zcl_pump_config_control_operation_mode_names ) ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_attr_eff_ctrl_mode ,
{ " Effective Control Mode " , " zbee_zcl_hvac.pump_config_control.attr.ctrl_mode " , FT_UINT8 , BASE_DEC , VALS ( zbee_zcl_pump_config_control_control_mode_names ) ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_attr_ctrl_mode ,
{ " Control Mode " , " zbee_zcl_hvac.pump_config_control.attr.ctrl_mode " , FT_UINT8 , BASE_DEC , VALS ( zbee_zcl_pump_config_control_control_mode_names ) ,
0x00 , NULL , HFILL } } ,
/* start Pump Status fields */
{ & hf_zbee_zcl_pump_config_control_status ,
{ " Pump Status " , " zbee_zcl_hvac.pump_config_control.attr.status " , FT_UINT16 , BASE_HEX , NULL ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_status_device_fault ,
{ " Device Fault " , " zbee_zcl_hvac.pump_config_control.attr.status.device_fault " , FT_BOOLEAN , 8 , TFS ( & tfs_no_yes ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_DEVICE_FAULT , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_status_supply_fault ,
{ " Supply Fault " , " zbee_zcl_hvac.pump_config_control.attr.status.supply_fault " , FT_BOOLEAN , 8 , TFS ( & tfs_no_yes ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_SUPPLY_FAULT , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_status_speed_low ,
{ " Speed Low " , " zbee_zcl_hvac.pump_config_control.attr.status.speed_low " , FT_BOOLEAN , 8 , TFS ( & tfs_no_yes ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_SPEED_LOW , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_status_speed_high ,
{ " Speed High " , " zbee_zcl_hvac.pump_config_control.attr.status.speed_high " , FT_BOOLEAN , 8 , TFS ( & tfs_no_yes ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_SPEED_HIGH , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_status_local_override ,
{ " Local Override " , " zbee_zcl_hvac.pump_config_control.attr.status.local_override " , FT_BOOLEAN , 8 , TFS ( & tfs_no_yes ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_LOCAL_OVERRIDE , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_status_running ,
{ " Running " , " zbee_zcl_hvac.pump_config_control.attr.status.running " , FT_BOOLEAN , 8 , TFS ( & tfs_no_yes ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_RUNNING , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_status_rem_pressure ,
{ " Remote Pressure " , " zbee_zcl_hvac.pump_config_control.attr.status.rem_pressure " , FT_BOOLEAN , 8 , TFS ( & tfs_no_yes ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_REMOTE_PRESSURE , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_status_rem_flow ,
{ " Remote Flow " , " zbee_zcl_hvac.pump_config_control.attr.status.rem_flow " , FT_BOOLEAN , 8 , TFS ( & tfs_no_yes ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_REMOTE_FLOW , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_status_rem_temp ,
{ " Remote Temperature " , " zbee_zcl_hvac.pump_config_control.attr.status.rem_temp " , FT_BOOLEAN , 8 , TFS ( & tfs_no_yes ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_STATUS_REMOTE_TEMP , NULL , HFILL } } ,
/* end Pump Status fields */
/*start Alarm Mask fields*/
{ & hf_zbee_zcl_pump_config_control_alarm ,
{ " Alarm Mask " , " zbee_zcl_hvac.pump_config_control.attr.alarm " , FT_UINT16 , BASE_HEX , NULL ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_volt_too_low ,
{ " Supply voltage too low " , " zbee_zcl_hvac.pump_config_control.attr.alarm.volt_too_low " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_VOLTAGE_TOO_LOW , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_volt_too_high ,
{ " Supply voltage too high " , " zbee_zcl_hvac.pump_config_control.attr.alarm.volt_too_high " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_VOLTAGE_TOO_HIGH , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_pwr_missing_phase ,
{ " Power missing phase " , " zbee_zcl_hvac.pump_config_control.attr.alarm.pwr_missing_phase " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_PWR_MISSING_PHASE , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_press_too_low ,
{ " System pressure too low " , " zbee_zcl_hvac.pump_config_control.attr.alarm.press_too_low " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_PRESSURE_TOO_LOW , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_press_too_high ,
{ " System pressure too high " , " zbee_zcl_hvac.pump_config_control.attr.alarm.press_too_high " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_PRESSURE_TOO_HIGH , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_dry_running ,
{ " Dry running " , " zbee_zcl_hvac.pump_config_control.attr.alarm.dry_running " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_DRY_RUNNING , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_mtr_temp_too_high ,
{ " Motor temperature too high " , " zbee_zcl_hvac.pump_config_control.attr.alarm.mtr_temp_too_high " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_MTR_TEMP_TOO_HIGH , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_pump_mtr_fatal_fail ,
{ " Pump motor has fatal failure " , " zbee_zcl_hvac.pump_config_control.attr.alarm.mtr_fatal_fail " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_PUMP_MTR_FATAL_FAILURE , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_elec_temp_too_high ,
{ " Electronic temperature too high " , " zbee_zcl_hvac.pump_config_control.attr.alarm.elec_temp_too_high " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_ELEC_TEMP_TOO_HIGH , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_pump_block ,
{ " Pump blocked " , " zbee_zcl_hvac.pump_config_control.attr.alarm.pump_block " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_PUMP_BLOCK , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_sensor_fail ,
{ " Sensor failure " , " zbee_zcl_hvac.pump_config_control.attr.alarm.sensor_fail " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_SENSOR_FAILURE , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_elec_non_fatal_fail ,
{ " Electronic non-fatal failure " , " zbee_zcl_hvac.pump_config_control.attr.alarm.elec_non_fatal_fail " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_ELEC_NON_FATAL_FAILURE , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_fatal_fail ,
{ " Electronic fatal failure " , " zbee_zcl_hvac.pump_config_control.attr.alarm.elec_fatal_fail " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_ELEC_FATAL_FAILURE , NULL , HFILL } } ,
{ & hf_zbee_zcl_pump_config_control_alarm_gen_fault ,
{ " Genral fault " , " zbee_zcl_hvac.pump_config_control.attr.alarm.gen_fault " , FT_BOOLEAN , 8 , TFS ( & tfs_disabled_enabled ) ,
ZBEE_ZCL_PUMP_CONFIG_CONTROL_ALARM_GENERAL_FAULT , NULL , HFILL } }
/* end Alarm Mask fields */
} ;
/* ZCL Pump Configuration and Control subtrees */
static gint * ett [ ZBEE_ZCL_PUMP_CONFIG_CONTROL_NUM_ETT ] ;
ett [ 0 ] = & ett_zbee_zcl_pump_config_control ;
ett [ 1 ] = & ett_zbee_zcl_pump_config_control_status ;
ett [ 2 ] = & ett_zbee_zcl_pump_config_control_alarm ;
/* Register the ZigBee ZCL Pump Configuration and Control cluster protocol name and description */
proto_zbee_zcl_pump_config_control = proto_register_protocol ( " ZigBee ZCL Pump Configuration and Control " , " ZCL Pump Configuration and Control " , ZBEE_PROTOABBREV_ZCL_PUMP_CONFIG_CTRL ) ;
proto_register_field_array ( proto_zbee_zcl_pump_config_control , hf , array_length ( hf ) ) ;
proto_register_subtree_array ( ett , array_length ( ett ) ) ;
/* Register the ZigBee ZCL Pump Configuration and Control dissector. */
register_dissector ( ZBEE_PROTOABBREV_ZCL_PUMP_CONFIG_CTRL , dissect_zbee_zcl_pump_config_control , proto_zbee_zcl_pump_config_control ) ;
} /*proto_register_zbee_zcl_pump_config_control*/
/**
* Hands off the ZCL Pump Configuration and Control dissector .
*
*/
void
proto_reg_handoff_zbee_zcl_pump_config_control ( void )
{
dissector_handle_t pump_config_ctrl_handle ;
/* Register our dissector with the ZigBee application dissectors. */
pump_config_ctrl_handle = find_dissector ( ZBEE_PROTOABBREV_ZCL_PUMP_CONFIG_CTRL ) ;
dissector_add_uint ( " zbee.zcl.cluster " , ZBEE_ZCL_CID_PUMP_CONFIG_CONTROL , pump_config_ctrl_handle ) ;
zbee_zcl_init_cluster ( proto_zbee_zcl_pump_config_control ,
ett_zbee_zcl_pump_config_control ,
ZBEE_ZCL_CID_PUMP_CONFIG_CONTROL ,
hf_zbee_zcl_pump_config_control_attr_id ,
- 1 , - 1 ,
( zbee_zcl_fn_attr_data ) dissect_zcl_pump_config_control_attr_data
) ;
} /*proto_reg_handoff_zbee_zcl_pump_config_control*/
/* ########################################################################## */
/* #### (0x0202) FAN CONTROL CLUSTER ######################################## */
/* ########################################################################## */
/*************************/
/* Defines */
/*************************/
# define ZBEE_ZCL_FAN_CONTROL_NUM_ETT 1
/*Attributes*/
# define ZBEE_ZCL_ATTR_ID_FAN_CONTROL_FAN_MODE 0x0000 /* Fan Mode */
# define ZBEE_ZCL_ATTR_ID_FAN_CONTROL_FAN_MODE_SEQUENCE 0x0001 /* Fan Mode Sequence */
/*Server commands received - none*/
/*Server commands generated - none*/
/*************************/
/* Function Declarations */
/*************************/
void proto_register_zbee_zcl_fan_control ( void ) ;
void proto_reg_handoff_zbee_zcl_fan_control ( void ) ;
/* Command Dissector Helpers */
static void dissect_zcl_fan_control_attr_data ( proto_tree * tree , tvbuff_t * tvb , guint * offset , guint16 attr_id , guint data_type ) ;
/* Private functions prototype */
/*************************/
/* Global Variables */
/*************************/
/* Initialize the protocol and registered fields */
static int proto_zbee_zcl_fan_control = - 1 ;
static int hf_zbee_zcl_fan_control_attr_id = - 1 ;
static int hf_zbee_zcl_fan_control_attr_fan_mode = - 1 ;
static int hf_zbee_zcl_fan_control_attr_fan_mode_seq = - 1 ;
/* Initialize the subtree pointers */
static gint ett_zbee_zcl_fan_control = - 1 ;
/* Attributes */
static const value_string zbee_zcl_fan_control_attr_names [ ] = {
{ ZBEE_ZCL_ATTR_ID_FAN_CONTROL_FAN_MODE , " Fan Mode " } ,
{ ZBEE_ZCL_ATTR_ID_FAN_CONTROL_FAN_MODE_SEQUENCE , " Fan Mode Sequence " } ,
{ 0 , NULL }
} ;
/*Fan Mode Sequence Values*/
static const value_string zbee_zcl_fan_control_fan_mode_seq_names [ ] = {
{ 0x00 , " Low/Med/High " } ,
{ 0x01 , " Low/High " } ,
{ 0x02 , " Low/Med/High/Auto " } ,
{ 0x03 , " Low/High/Auto " } ,
{ 0x04 , " On/Auto " } ,
{ 0 , NULL }
} ;
/*Fan Mode Values*/
static const value_string zbee_zcl_fan_control_fan_mode_names [ ] = {
{ 0x00 , " Off " } ,
{ 0x01 , " Low " } ,
{ 0x02 , " Medium " } ,
{ 0x03 , " High " } ,
{ 0x04 , " On " } ,
{ 0x05 , " Auto " } ,
{ 0x06 , " Smart " } ,
{ 0 , NULL }
} ;
/*************************/
/* Function Bodies */
/*************************/
/**
* ZigBee ZCL Fan Control cluster dissector for wireshark .
*
* @ param tvb pointer to buffer containing raw packet .
* @ param pinfo pointer to packet information fields
* @ param tree pointer to data tree Wireshark uses to display packet .
*/
static int
dissect_zbee_zcl_fan_control ( tvbuff_t * tvb _U_ , packet_info * pinfo _U_ , proto_tree * tree _U_ , void * data _U_ )
{
return tvb_captured_length ( tvb ) ;
} /*dissect_zbee_zcl_fan_control*/
/**
* This function is called by ZCL foundation dissector in order to decode
*
* @ param tree pointer to data tree Wireshark uses to display packet .
* @ param tvb pointer to buffer containing raw packet .
* @ param offset pointer to buffer offset
* @ param attr_id attribute identifier
* @ param data_type attribute data type
*/
void
dissect_zcl_fan_control_attr_data ( proto_tree * tree , tvbuff_t * tvb , guint * offset , guint16 attr_id , guint data_type )
{
/* Dissect attribute data type and data */
switch ( attr_id ) {
case ZBEE_ZCL_ATTR_ID_FAN_CONTROL_FAN_MODE :
proto_tree_add_item ( tree , hf_zbee_zcl_fan_control_attr_fan_mode , tvb , * offset , 1 , ENC_NA ) ;
* offset + = 1 ;
break ;
case ZBEE_ZCL_ATTR_ID_FAN_CONTROL_FAN_MODE_SEQUENCE :
proto_tree_add_item ( tree , hf_zbee_zcl_fan_control_attr_fan_mode_seq , tvb , * offset , 1 , ENC_NA ) ;
* offset + = 1 ;
2016-02-07 23:08:23 +00:00
break ;
2016-01-07 06:32:00 +00:00
default :
dissect_zcl_attr_data ( tvb , tree , offset , data_type ) ;
break ;
}
} /*dissect_zcl_fan_control_attr_data*/
/**
* ZigBee ZCL Fan Control cluster protocol registration routine .
*
*/
void
proto_register_zbee_zcl_fan_control ( void )
{
/* Setup list of header fields */
static hf_register_info hf [ ] = {
{ & hf_zbee_zcl_fan_control_attr_id ,
{ " Attribute " , " zbee_zcl_hvac.fan_control.attr_id " , FT_UINT16 , BASE_HEX , VALS ( zbee_zcl_fan_control_attr_names ) ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_fan_control_attr_fan_mode ,
{ " Fan Mode " , " zbee_zcl_hvac.fan_control.attr.fan_mode " , FT_UINT8 , BASE_HEX , VALS ( zbee_zcl_fan_control_fan_mode_names ) ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_fan_control_attr_fan_mode_seq ,
{ " Fan Mode Sequence " , " zbee_zcl_hvac.fan_control.attr.fan_mode_seq " , FT_UINT8 , BASE_HEX , VALS ( zbee_zcl_fan_control_fan_mode_seq_names ) ,
0x00 , NULL , HFILL } }
} ;
/* ZCL Fan Control subtrees */
static gint * ett [ ZBEE_ZCL_FAN_CONTROL_NUM_ETT ] ;
ett [ 0 ] = & ett_zbee_zcl_fan_control ;
/* Register the ZigBee ZCL Fan Control cluster protocol name and description */
proto_zbee_zcl_fan_control = proto_register_protocol ( " ZigBee ZCL Fan Control " , " ZCL Fan Control " , ZBEE_PROTOABBREV_ZCL_FAN_CONTROL ) ;
proto_register_field_array ( proto_zbee_zcl_fan_control , hf , array_length ( hf ) ) ;
proto_register_subtree_array ( ett , array_length ( ett ) ) ;
/* Register the ZigBee ZCL Fan Control dissector. */
register_dissector ( ZBEE_PROTOABBREV_ZCL_FAN_CONTROL , dissect_zbee_zcl_fan_control , proto_zbee_zcl_fan_control ) ;
} /*proto_register_zbee_zcl_fan_control*/
/**
* Hands off the ZCL Fan Control dissector .
*
*/
void
proto_reg_handoff_zbee_zcl_fan_control ( void )
{
dissector_handle_t fan_control_handle ;
/* Register our dissector with the ZigBee application dissectors. */
fan_control_handle = find_dissector ( ZBEE_PROTOABBREV_ZCL_FAN_CONTROL ) ;
dissector_add_uint ( " zbee.zcl.cluster " , ZBEE_ZCL_CID_FAN_CONTROL , fan_control_handle ) ;
zbee_zcl_init_cluster ( proto_zbee_zcl_fan_control ,
ett_zbee_zcl_fan_control ,
ZBEE_ZCL_CID_FAN_CONTROL ,
hf_zbee_zcl_fan_control_attr_id ,
- 1 , - 1 ,
( zbee_zcl_fn_attr_data ) dissect_zcl_fan_control_attr_data
) ;
} /*proto_reg_handoff_zbee_zcl_fan_control*/
/* ########################################################################## */
/* #### (0x0203) DEHUMIDIFICATION CONTROL CLUSTER ########################### */
/* ########################################################################## */
/*************************/
/* Defines */
/*************************/
# define ZBEE_ZCL_DEHUMIDIFICATION_CONTROL_NUM_ETT 1
/*Attributes*/
# define ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_RELATIVE_HUMIDITY 0x0000 /* Relative Humidity */
# define ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_DEHUM_COOLING 0x0001 /* Dehumidification Cooling */
# define ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_RH_DEHUM_SETPOINT 0x0010 /* Relative Humidity Dehumidification Setpoint */
# define ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_RELATIVE_HUMIDITY_MODE 0x0011 /* Relative Humidity Mode */
# define ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_DEHUM_LOCKOUT 0x0012 /* Dehumidification Lockout */
# define ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_DEHUM_HYSTERESIS 0x0013 /* Dehumidification Hysteresis */
# define ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_DEHUM_MAX_COOL 0x0014 /* Dehumidification Max Cool */
# define ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_RELATIVE_HUMIDITY_DISPLAY 0x0015 /* Relative Humidity Display */
/*Server commands received - none*/
/*Server commands generated - none*/
/*************************/
/* Function Declarations */
/*************************/
void proto_register_zbee_zcl_dehumidification_control ( void ) ;
void proto_reg_handoff_zbee_zcl_dehumidification_control ( void ) ;
/* Command Dissector Helpers */
static void dissect_zcl_dehumidification_control_attr_data ( proto_tree * tree , tvbuff_t * tvb , guint * offset , guint16 attr_id , guint data_type ) ;
/* Private functions prototype */
/*************************/
/* Global Variables */
/*************************/
/* Initialize the protocol and registered fields */
static int proto_zbee_zcl_dehumidification_control = - 1 ;
static int hf_zbee_zcl_dehumidification_control_attr_id = - 1 ;
static int hf_zbee_zcl_dehumidification_control_attr_rel_hum_mode = - 1 ;
static int hf_zbee_zcl_dehumidification_control_attr_dehum_lockout = - 1 ;
static int hf_zbee_zcl_dehumidification_control_attr_rel_hum_display = - 1 ;
/* Initialize the subtree pointers */
static gint ett_zbee_zcl_dehumidification_control = - 1 ;
/* Attributes */
static const value_string zbee_zcl_dehumidification_control_attr_names [ ] = {
{ ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_RELATIVE_HUMIDITY , " Relative Humidity " } ,
{ ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_DEHUM_COOLING , " Dehumidification Cooling " } ,
{ ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_RH_DEHUM_SETPOINT , " Relative Humidity Dehumidification Setpoint " } ,
{ ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_RELATIVE_HUMIDITY_MODE , " Relative Humidity Mode " } ,
{ ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_DEHUM_LOCKOUT , " Dehumidification Lockout " } ,
{ ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_DEHUM_HYSTERESIS , " Dehumidification Hysteresis " } ,
{ ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_DEHUM_MAX_COOL , " Dehumidification Max Cool " } ,
{ ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_RELATIVE_HUMIDITY_DISPLAY , " Relative Humidity Display " } ,
{ 0 , NULL }
} ;
/*Relative Humidity Mode Values*/
static const value_string zbee_zcl_dehumidification_control_rel_hum_mode_names [ ] = {
{ 0x00 , " Relative Humidity measured locally " } ,
{ 0x01 , " Relative Humidity updated over network " } ,
{ 0 , NULL }
} ;
/*Dehumidification Lockout Values*/
static const value_string zbee_zcl_dehumidification_control_dehum_lockout_names [ ] = {
{ 0x00 , " Dehumidification is not allowed " } ,
{ 0x01 , " Dehumidification is allowed " } ,
{ 0 , NULL }
} ;
/*Relative Humidity Display Values*/
static const value_string zbee_zcl_dehumidification_control_rel_hum_display_names [ ] = {
{ 0x00 , " Relative Humidity is not displayed " } ,
{ 0x01 , " Relative Humidity is displayed " } ,
{ 0 , NULL }
} ;
/*************************/
/* Function Bodies */
/*************************/
/**
* ZigBee ZCL Dehumidification Control cluster dissector for wireshark .
*
* @ param tvb pointer to buffer containing raw packet .
* @ param pinfo pointer to packet information fields
* @ param tree pointer to data tree Wireshark uses to display packet .
*/
static int
dissect_zbee_zcl_dehumidification_control ( tvbuff_t * tvb _U_ , packet_info * pinfo _U_ , proto_tree * tree _U_ , void * data _U_ )
{
return tvb_captured_length ( tvb ) ; ;
} /*dissect_zbee_zcl_dehumidification_control*/
/**
* This function is called by ZCL foundation dissector in order to decode
*
* @ param tree pointer to data tree Wireshark uses to display packet .
* @ param tvb pointer to buffer containing raw packet .
* @ param offset pointer to buffer offset
* @ param attr_id attribute identifier
* @ param data_type attribute data type
*/
void
dissect_zcl_dehumidification_control_attr_data ( proto_tree * tree , tvbuff_t * tvb , guint * offset , guint16 attr_id , guint data_type )
{
/* Dissect attribute data type and data */
switch ( attr_id ) {
case ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_RELATIVE_HUMIDITY_MODE :
proto_tree_add_item ( tree , hf_zbee_zcl_dehumidification_control_attr_rel_hum_mode , tvb , * offset , 1 , ENC_NA ) ;
* offset + = 1 ;
break ;
case ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_DEHUM_LOCKOUT :
proto_tree_add_item ( tree , hf_zbee_zcl_dehumidification_control_attr_dehum_lockout , tvb , * offset , 1 , ENC_NA ) ;
* offset + = 1 ;
2016-02-07 23:08:23 +00:00
break ;
2016-01-07 06:32:00 +00:00
case ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_RELATIVE_HUMIDITY_DISPLAY :
proto_tree_add_item ( tree , hf_zbee_zcl_dehumidification_control_attr_rel_hum_display , tvb , * offset , 1 , ENC_NA ) ;
* offset + = 1 ;
2016-02-07 23:08:23 +00:00
break ;
2016-01-07 06:32:00 +00:00
case ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_RELATIVE_HUMIDITY :
case ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_DEHUM_COOLING :
case ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_RH_DEHUM_SETPOINT :
case ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_DEHUM_HYSTERESIS :
case ZBEE_ZCL_ATTR_ID_DEHUMIDIFICATION_CONTROL_DEHUM_MAX_COOL :
default :
dissect_zcl_attr_data ( tvb , tree , offset , data_type ) ;
break ;
}
} /*dissect_zcl_dehumidification_control_attr_data*/
/**
* ZigBee ZCL Dehumidification Control cluster protocol registration routine .
*
*/
void
proto_register_zbee_zcl_dehumidification_control ( void )
{
/* Setup list of header fields */
static hf_register_info hf [ ] = {
{ & hf_zbee_zcl_dehumidification_control_attr_id ,
{ " Attribute " , " zbee_zcl_hvac.dehumidification_control.attr_id " , FT_UINT16 , BASE_HEX , VALS ( zbee_zcl_dehumidification_control_attr_names ) ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_dehumidification_control_attr_rel_hum_mode ,
{ " Relative Humidity Mode " , " zbee_zcl_hvac.dehumidification_control.attr.rel_humidity_mode " , FT_UINT8 , BASE_HEX , VALS ( zbee_zcl_dehumidification_control_rel_hum_mode_names ) ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_dehumidification_control_attr_dehum_lockout ,
{ " Dehumidification Lockout " , " zbee_zcl_hvac.dehumidification_control.attr.dehumidification_lockout " , FT_UINT8 , BASE_HEX , VALS ( zbee_zcl_dehumidification_control_dehum_lockout_names ) ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_dehumidification_control_attr_rel_hum_display ,
{ " Relative Humidity Display " , " zbee_zcl_hvac.dehumidification_control.attr.rel_humidity_display " , FT_UINT8 , BASE_HEX , VALS ( zbee_zcl_dehumidification_control_rel_hum_display_names ) ,
0x00 , NULL , HFILL } }
} ;
/* ZCL Dehumidification Control subtrees */
static gint * ett [ ZBEE_ZCL_DEHUMIDIFICATION_CONTROL_NUM_ETT ] ;
ett [ 0 ] = & ett_zbee_zcl_dehumidification_control ;
/* Register the ZigBee ZCL Dehumidification Control cluster protocol name and description */
proto_zbee_zcl_dehumidification_control = proto_register_protocol ( " ZigBee ZCL Dehumidification Control " , " ZCL Dehumidification Control " , ZBEE_PROTOABBREV_ZCL_DEHUMIDIFICATION_CONTROL ) ;
proto_register_field_array ( proto_zbee_zcl_dehumidification_control , hf , array_length ( hf ) ) ;
proto_register_subtree_array ( ett , array_length ( ett ) ) ;
/* Register the ZigBee ZCL Dehumidification Control dissector. */
register_dissector ( ZBEE_PROTOABBREV_ZCL_DEHUMIDIFICATION_CONTROL , dissect_zbee_zcl_dehumidification_control , proto_zbee_zcl_dehumidification_control ) ;
} /*proto_register_zbee_zcl_dehumidification_control*/
/**
* Hands off the ZCL Dehumidification Control dissector .
*
*/
void
proto_reg_handoff_zbee_zcl_dehumidification_control ( void )
{
dissector_handle_t dehumidification_control_handle ;
/* Register our dissector with the ZigBee application dissectors. */
dehumidification_control_handle = find_dissector ( ZBEE_PROTOABBREV_ZCL_DEHUMIDIFICATION_CONTROL ) ;
dissector_add_uint ( " zbee.zcl.cluster " , ZBEE_ZCL_CID_DEHUMIDIFICATION_CONTROL , dehumidification_control_handle ) ;
zbee_zcl_init_cluster ( proto_zbee_zcl_dehumidification_control ,
ett_zbee_zcl_dehumidification_control ,
ZBEE_ZCL_CID_DEHUMIDIFICATION_CONTROL ,
hf_zbee_zcl_dehumidification_control_attr_id ,
- 1 , - 1 ,
( zbee_zcl_fn_attr_data ) dissect_zcl_dehumidification_control_attr_data
) ;
} /*proto_reg_handoff_zbee_zcl_dehumidification_control*/
/* ########################################################################## */
/* #### (0x0204) THERMOSTAT USER INTERFACE CONFIGURATION CLUSTER ############ */
/* ########################################################################## */
/*************************/
/* Defines */
/*************************/
# define ZBEE_ZCL_THERMOSTAT_UI_CONFIG_NUM_ETT 1
/*Attributes*/
# define ZBEE_ZCL_ATTR_ID_THERMOSTAT_UI_CONFIG_TEMP_DISP_MODE 0x0000 /* Temperature Display Mode */
# define ZBEE_ZCL_ATTR_ID_THERMOSTAT_UI_CONFIG_KEYPAD_LOCKOUT 0x0001 /* Keypad Lockout */
/*Server commands received - none*/
/*Server commands generated - none*/
/*************************/
/* Function Declarations */
/*************************/
void proto_register_zbee_zcl_thermostat_ui_config ( void ) ;
void proto_reg_handoff_zbee_zcl_thermostat_ui_config ( void ) ;
/* Command Dissector Helpers */
static void dissect_zcl_thermostat_ui_config_attr_data ( proto_tree * tree , tvbuff_t * tvb , guint * offset , guint16 attr_id , guint data_type ) ;
/* Private functions prototype */
/*************************/
/* Global Variables */
/*************************/
/* Initialize the protocol and registered fields */
static int proto_zbee_zcl_thermostat_ui_config = - 1 ;
static int hf_zbee_zcl_thermostat_ui_config_attr_id = - 1 ;
static int hf_zbee_zcl_thermostat_ui_config_attr_temp_disp_mode = - 1 ;
static int hf_zbee_zcl_thermostat_ui_config_attr_keypad_lockout = - 1 ;
/* Initialize the subtree pointers */
static gint ett_zbee_zcl_thermostat_ui_config = - 1 ;
/* Attributes */
static const value_string zbee_zcl_thermostat_ui_config_attr_names [ ] = {
{ ZBEE_ZCL_ATTR_ID_THERMOSTAT_UI_CONFIG_TEMP_DISP_MODE , " Temperature Display Mode " } ,
{ ZBEE_ZCL_ATTR_ID_THERMOSTAT_UI_CONFIG_KEYPAD_LOCKOUT , " Keypad Lockout " } ,
{ 0 , NULL }
} ;
/*Temp Display Mode Values*/
static const value_string zbee_zcl_thermostat_ui_config_temp_disp_mode_names [ ] = {
{ 0x00 , " Temperature in degree Celsius " } ,
{ 0x01 , " Temperature in degree Fahrenheit " } ,
{ 0 , NULL }
} ;
/*Keypad Lockout Values*/
static const value_string zbee_zcl_thermostat_ui_config_keypad_lockout_names [ ] = {
{ 0x00 , " No lockout " } ,
{ 0x01 , " Level 1 lockout " } ,
{ 0x02 , " Level 2 lockout " } ,
{ 0x03 , " Level 3 lockout " } ,
{ 0x04 , " Level 4 lockout " } ,
{ 0x05 , " Level 5 lockout " } ,
{ 0 , NULL }
} ;
/*************************/
/* Function Bodies */
/*************************/
/**
* ZigBee ZCL Thermostat User Interface Configuration cluster dissector for wireshark .
*
* @ param tvb pointer to buffer containing raw packet .
* @ param pinfo pointer to packet information fields
* @ param tree pointer to data tree Wireshark uses to display packet .
*/
static int
dissect_zbee_zcl_thermostat_ui_config ( tvbuff_t * tvb _U_ , packet_info * pinfo _U_ , proto_tree * tree _U_ , void * data _U_ )
{
return tvb_captured_length ( tvb ) ;
} /*dissect_zbee_zcl_thermostat_ui_config*/
/**
* This function is called by ZCL foundation dissector in order to decode
*
* @ param tree pointer to data tree Wireshark uses to display packet .
* @ param tvb pointer to buffer containing raw packet .
* @ param offset pointer to buffer offset
* @ param attr_id attribute identifier
* @ param data_type attribute data type
*/
void
dissect_zcl_thermostat_ui_config_attr_data ( proto_tree * tree , tvbuff_t * tvb , guint * offset , guint16 attr_id , guint data_type )
{
/* Dissect attribute data type and data */
switch ( attr_id ) {
case ZBEE_ZCL_ATTR_ID_THERMOSTAT_UI_CONFIG_TEMP_DISP_MODE :
proto_tree_add_item ( tree , hf_zbee_zcl_thermostat_ui_config_attr_temp_disp_mode , tvb , * offset , 1 , ENC_NA ) ;
* offset + = 1 ;
break ;
case ZBEE_ZCL_ATTR_ID_THERMOSTAT_UI_CONFIG_KEYPAD_LOCKOUT :
proto_tree_add_item ( tree , hf_zbee_zcl_thermostat_ui_config_attr_keypad_lockout , tvb , * offset , 1 , ENC_NA ) ;
* offset + = 1 ;
2016-02-07 23:08:23 +00:00
break ;
2016-01-07 06:32:00 +00:00
default :
dissect_zcl_attr_data ( tvb , tree , offset , data_type ) ;
break ;
}
} /*dissect_zcl_thermostat_ui_config_attr_data*/
/**
* ZigBee ZCL Thermostat User Interface Configuration cluster protocol registration routine .
*
*/
void
proto_register_zbee_zcl_thermostat_ui_config ( void )
{
/* Setup list of header fields */
static hf_register_info hf [ ] = {
{ & hf_zbee_zcl_thermostat_ui_config_attr_id ,
{ " Attribute " , " zbee_zcl_hvac.thermostat_ui_config.attr_id " , FT_UINT16 , BASE_HEX , VALS ( zbee_zcl_thermostat_ui_config_attr_names ) ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_thermostat_ui_config_attr_temp_disp_mode ,
{ " Temperature Display Mode " , " zbee_zcl_hvac.thermostat_ui_config.attr.temp_disp_mode " , FT_UINT8 , BASE_HEX , VALS ( zbee_zcl_thermostat_ui_config_temp_disp_mode_names ) ,
0x00 , NULL , HFILL } } ,
{ & hf_zbee_zcl_thermostat_ui_config_attr_keypad_lockout ,
{ " Keypad Lockout " , " zbee_zcl_hvac.thermostat_ui_config.attr.keypad_lockout " , FT_UINT8 , BASE_HEX , VALS ( zbee_zcl_thermostat_ui_config_keypad_lockout_names ) ,
0x00 , NULL , HFILL } }
} ;
/* ZCL Thermostat User Interface Configuration subtrees */
static gint * ett [ ZBEE_ZCL_THERMOSTAT_UI_CONFIG_NUM_ETT ] ;
ett [ 0 ] = & ett_zbee_zcl_thermostat_ui_config ;
/* Register the ZigBee ZCL Thermostat User Interface Configuration cluster protocol name and description */
proto_zbee_zcl_thermostat_ui_config = proto_register_protocol ( " ZigBee ZCL Thermostat User Interface Configuration " , " ZCL Thermostat User Interface Configuration " , ZBEE_PROTOABBREV_ZCL_THERMOSTAT_UI_CONFIG ) ;
proto_register_field_array ( proto_zbee_zcl_thermostat_ui_config , hf , array_length ( hf ) ) ;
proto_register_subtree_array ( ett , array_length ( ett ) ) ;
/* Register the ZigBee ZCL Thermostat User Interface Configuration dissector. */
register_dissector ( ZBEE_PROTOABBREV_ZCL_THERMOSTAT_UI_CONFIG , dissect_zbee_zcl_thermostat_ui_config , proto_zbee_zcl_thermostat_ui_config ) ;
} /*proto_register_zbee_zcl_thermostat_ui_config*/
/**
* Hands off the ZCL Thermostat User Interface Configuration dissector .
*
*/
void
proto_reg_handoff_zbee_zcl_thermostat_ui_config ( void )
{
dissector_handle_t thermostat_ui_config_handle ;
/* Register our dissector with the ZigBee application dissectors. */
thermostat_ui_config_handle = find_dissector ( ZBEE_PROTOABBREV_ZCL_THERMOSTAT_UI_CONFIG ) ;
dissector_add_uint ( " zbee.zcl.cluster " , ZBEE_ZCL_CID_THERMOSTAT_UI_CONFIG , thermostat_ui_config_handle ) ;
zbee_zcl_init_cluster ( proto_zbee_zcl_thermostat_ui_config ,
ett_zbee_zcl_thermostat_ui_config ,
ZBEE_ZCL_CID_THERMOSTAT_UI_CONFIG ,
hf_zbee_zcl_thermostat_ui_config_attr_id ,
- 1 , - 1 ,
( zbee_zcl_fn_attr_data ) dissect_zcl_thermostat_ui_config_attr_data
) ;
} /*proto_reg_handoff_zbee_zcl_thermostat_ui_config*/
/*
* Editor modelines - http : //www.wireshark.org/tools/modelines.html
*
* Local variables :
* c - basic - offset : 4
* tab - width : 8
* indent - tabs - mode : nil
* End :
*
* vi : set shiftwidth = 4 tabstop = 8 expandtab :
* : indentSize = 4 : tabSize = 8 : noTabs = true :
*/