Structures

Custom Data Structure

The IAS ACE cluster requires extra storage space to be allocated to be used by internal functions. The structure definition for this storage is shown below:

typedef struct
{
    tsZCL_ReceiveEventAddress        sReceiveEventAddress;
    tsZCL_CallBackEvent              sCustomCallBackEvent;
    tsCLD_IASACECallBackMessage      sCallBackMessage;
#if (defined CLD_IASACE) && (defined IASACE_SERVER)
    tsCLD_IASACE_PanelParameter             
                                     sCLD_IASACE_PanelParameter;
    tsCLD_IASACE_ZoneParameter              
           asCLD_IASACE_ZoneParameter[CLD_IASACE_ZONE_TABLE_SIZE];
    tsCLD_IASACE_ZoneTable                  
           asCLD_IASACE_ZoneTable[CLD_IASACE_ZONE_TABLE_SIZE];
#endif
} tsCLD_IASACECustomDataStructure;

The fields are for internal use and no knowledge of them is required.

Parent topic:Structures

Zone Table Entry

The following structure contains a Zone table entry, used to hold the enrollment details of a zone.

typedef struct
{
    zuint8              u8ZoneID;
    zbmap16             u16ZoneType;
    zieeeaddress        u64IeeeAddress;
} tsCLD_IASACE_ZoneTable;

where:

  • u8ZoneID is the identifier of the zone

  • u16ZoneType is a value indicating the type of zone (for the possible values, refer to the description of the attribute e``16ZoneType of the IAS Zone cluster in Section 37.2)

  • u64IeeeAddress is the IEEE/MAC address of the device which hosts the zone

Parent topic:Structures

Zone Parameters

The following structure is used to store the ‘zone parameters’ on the IAS ACE cluster server.

typedef struct
{
    zbmap8                        u8ZoneConfigFlag;
    zbmap8                        u8ZoneStatusFlag;
    zbmap16                       eZoneStatus;
    zenum8                        eAudibleNotification;
    tsZCL_CharacterString         sZoneLabel;
    uint8                                   
          au8ZoneLabel[CLD_IASACE_MAX_LENGTH_ZONE_LABEL];
    tsZCL_CharacterString         sArmDisarmCode;
    uint8                                   
          au8ArmDisarmCode[CLD_IASACE_MAX_LENGTH_ARM_DISARM_CODE];
}tsCLD_IASACE_ZoneParameter;

where:

  • u8ZoneConfigFlag is is a bitmap used to configure the temporal role of a zone (as Day, Night or Day/Night) and whether the zone is allowed to be bypassed. Macros are provided as follows:

Bit

Macro

0

CLD_IASACE_ZONE_CONFIG_FLAG_BYPASS *

1

CLD_IASACE_ZONE_CONFIG_FLAG_DAY_HOME

2

CLD_IASACE_ZONE_CONFIG_FLAG_NIGHT_SLEEP

3

CLD_IASACE_ZONE_CONFIG_FLAG_NOT_BYPASSED **

4-7

Reserved

  • * Determines whether the zone is allowed to be bypassed: 1 - allowed, 0 - not allowed

  • ** Used to configure a status of ZONE_NOT_BYPASSED in responses to Bypass commands

  • u8ZoneStatusFlag is a bitmap used to indicate the current status of a zone as armed or bypassed. Macros are provided as follows:

Bit

Macro

0

CLD_IASACE_ZONE_STATUS_FLAG_BYPASS

1

CLD_IASACE_ZONE_STATUS_FLAG_ARM

2-7

Reserved

  • e``ZoneStatus is the zone status as the value of the b16ZoneStatus attribute of the IAS Zone cluster (see Section 37.2)

  • eAudibleNotification is a value specifying whether an audible notification (e.g. a chime) is required to signal a zone status change (enumerations are available in teCLD_IASACE_AudibleNotification - see Section 38.8.4):

Value

Status

0x00

Audible notification muted

0x01

Audible notification sounded

0x02 - 0xFF

Reserved

  • sZoneLabel is the name/label for the zone represented as a character string

  • au8ZoneLabel[] is the name/label for the zone represented as an array of ASCII values

  • sArmDisarmCode is the arm/disarm code for the zone represented as a character string

  • au8ArmDisarmCode[] is the arm/disarm code for the zone represented as an array of ASCII values

Parent topic:Structures

Panel Parameters

The following structure is used to store the ‘panel parameters’ on the IAS ACE cluster server.

typedef struct
{
    zenum8    ePanelStatus;
    zuint8    u8SecondsRemaining;
    zenum8    eAudibleNotification;
    zenum8    eAlarmStatus;
}tsCLD_IASACE_PanelParameter;

where:

  • ePanelStatus is a value indicating the status to be displayed on the panel, as follows (enumerations are available in teCLD_IASACE_PanelStatus - see Section 38.8.2):

Value

Status

0x00

Disarmed (all zones) and ready to be armed

0x01

Armed stay

0x02

Armed night

0x03

Armed away

0x04

Exit delay

0x05

Entry delay

0x06

Not ready to be armed

0x07

In alarm

0x08

Arming stay

0x09

Arming night

0x0A

Arming away

0x0B - 0xFF

Reserved

  • u8SecondsRemaining represents the time, in seconds, that the server will remain in the displayed state when the latter is ‘Exit delay’ or ‘Entry delay’ (for other states, this field should be set to 0x00).

  • eAudibleNotification is a value specifying whether an audible notification (e.g. a chime) is required to signal a zone status change (enumerations are available in teCLD_IASACE_AudibleNotification - see Section 38.8.4):

Value

Status

0x00

Audible notification muted

0x01

Audible notification sounded

0x02 - 0xFF

Reserved

  • eAlarmStatus is a value indicating the alarm status/type when the panel’s state is ‘In Alarm’, as follows (enumerations are available in teCLD_IASACE_AlarmStatus - see Section 38.8.3):

Value

Status

0x00

No alarm

0x01

Burglar

0x02

Fire

0x03

Emergency

0x04

Police panic

0x05

Fire panic

0x06

Emergency panic

0x07 - 0xFF

Reserved

Parent topic:Structures

Custom Command Payloads

The following structures contain the payloads for the IAS ACE cluster custom commands.

‘Arm’ Command Payload

The following structure contains the payload of a Arm command.

typedef struct
{
    zenum8                     eArmMode;   
    tsZCL_CharacterString      sArmDisarmCode;
    zuint8                     u8ZoneID;
} tsCLD_IASACE_ArmPayload;

where:

  • eArmMode is a value indicating the state of armament in which to put the zone (enumerations are available in teCLD_IASACE_ArmMode - see Section38.8.1):

Value

Status

0x00

Disarm

0x01

Arm day/home zones only

0x02

Arm night/sleep zones only

0x03

Arm all zones

0x04 - 0xFF

Reserved

  • sArmDisarmCode is an 8-character string containing the arm/disarm code (if a code is not required, set to “00000000”)

  • u8ZoneID is the identifier of the zone to arm/disarm

‘Bypass’ Command Payload

The following structure contains the payload of a Bypass command.

typedef struct
{   
    zuint8                     u8NumOfZones;
    zuint8                    *pu8ZoneID;
    tsZCL_CharacterString      sArmDisarmCode;
} tsCLD_IASACE_BypassPayload;

where:

  • u8NumOfZones is the number of zones to be ‘bypassed’ (taken out of the system)

  • pu8ZoneID is a pointer to a list of identifiers specifying the zones to be bypassed (the number of zones in the list is specified in u8NumOfZones)

  • sArmDisarmCode is an 8-character string containing the arm/disarm code (if a code is not required, set to “00000000”)

‘Get Zone Information’ Command Payload

The following structure contains the payload of a Get Zone Information command.

typedef struct
{
    zuint8          u8ZoneID;
} tsCLD_IASACE_GetZoneInfoPayload;

where u8ZoneID is the identifier of the zone on which information is required.

‘Set Bypassed Zone List’ Command Payload

The following structure contains the payload of a Set Bypassed Zone List command.

typedef struct
{
    zuint8          u8NumofZones;
    zuint8         *pu8ZoneID;         
} tsCLD_IASACE_SetBypassedZoneListPayload;

where:

  • u8NumofZones is the number of zones in the new bypassed zone list

  • pu8ZoneID is a pointer to the new bypassed zone list (the number of zones in the list is specified in u8NumOfZones)

‘Get Zone Status’ Command Payload

The following structure contains the payload of a Get Zone Status command.

typedef struct
{
    zuint8         u8StartingZoneID;
    zuint8         u8MaxNumOfZoneID;
    zbool          bZoneStatusMaskFlag;
    zbmap16        u16ZoneStatusMask;
} tsCLD_IASACE_GetZoneStatusPayload;

where:

  • u8StartingZoneID is the identifier of the first zone for which status information is required

  • u8MaxNumOfZoneID is the maximum number of zones for which status information should be returned

  • bZoneStatusMaskFlag is a Boolean indicating whether status information should be returned for all zones or only for those zones with particular status values (specified through u16ZoneStatusMask below):

    • TRUE - only zones with specific status values

    • FALSE - all zones

  • u16ZoneStatusMask is a 16-bit bitmap indicating the zone status values of interest (used when bZoneStatusMaskFlag is set to TRUE) - the response to the request will contain information only for those zones with a status value indicated in this bitmap:

Bit

Description

0

Alarm1:

1 - Opened or alarmed

0 - Closed or not alarned

| |1|Alarm2:

1 - Opened or alarmed

0 - Closed or not alarned

| |2|Tamper:

1 - Tampered with

0 - Not tampered with

| |3|Battery:

1 - Low

0 - OK

| |4|Supervision reports:

1 - Reports

0 - No reports

| |5|Restore reports:

1 - Reports

0 - No reports

| |6|Trouble:

1 - Trouble/failure

0 - OK

| |7|AC (mains):

1 - Fault

0 - OK

| |8|Test mode:

1 - Sensor in test mode

0 - Sensor in operational mode

| |9|Battery defect:

1 - Defective battery detected

0 - Battery OK

| |10-15|Reserved|

‘Panel Status Changed or Get Panel Status Response’

The following structure contains the payload of a Panel Status Changed command or Get Panel Status Response.

typedef struct
{
    zenum8        ePanelStatus;
    zuint8        u8SecondsRemaining;
    zenum8        eAudibleNotification;
    zenum8        eAlarmStatus;
} tsCLD_IASACE_PanelStatusChangedOrGetPanelStatusRespPayload;

where:

  • ePanelStatus is a value indicating the status to be displayed on the panel, as follows (enumerations are available in teCLD_IASACE_PanelStatus - see Section 38.8.2):

Value

Status

0x00

Disarmed (all zones) and ready to be armed

0x01

Armed stay

0x02

Armed night

0x03

Armed away

0x04

Exit delay

0x05

Entry delay

0x06

Not ready to be armed

0x07

In alarm

0x08

Arming stay

0x09

Arming night

0x0A

Arming away

0x0B - 0xFF

Reserved

  • u8SecondsRemaining represents the time, in seconds, that the server will remain in the displayed state when the latter is ‘Exit delay’ or ‘Entry delay’ (for other states, this field should be set to 0x00).

  • eAudibleNotification is a value specifying whether an audible notification (e.g. a chime) is required to signal a zone status change (enumerations are available in teCLD_IASACE_AudibleNotification - see Section 38.8.4):

Value

Status

0x00

Audible notification muted

0x01

Audible notification sounded

0x02 - 0xFF

Reserved

  • eAlarmStatus is a value indicating the alarm status/type when the panel’s state is ‘In Alarm’, as follows (enumerations are available in teCLD_IASACE_AlarmStatus - see Section 38.8.3):

Value

Status

0x00

No alarm

0x01

Burglar

0x02

Fire

0x03

Emergency

0x04

Police panic

0x05

Fire panic

0x06

Emergency panic

0x07 - 0xFF

Reserved

Parent topic:Structures

Event Data Structures

The following structures hold the data contained in certain IAS ACE cluster events.

E_CLD_IASACE_CMD_ARM_RESP Data

typedef struct
{
    zenum8         eArmNotification;   
} tsCLD_IASACE_ArmRespPayload;

where eArmNotification is an enumeration indicating the outcome of the Arm command, one of:

  • E_CLD_IASACE_ARM_NOTIF_ALL_ZONES_DISARMED

  • E_CLD_IASACE_ARM_NOTIF_ONLY_DAY_HOME_ZONES_ARMED

  • E_CLD_IASACE_ARM_NOTIF_ONLY_NIGHT_SLEEP_ZONES_ARMED

  • E_CLD_IASACE_ARM_NOTIF_ALL_ZONES_ARMED

  • E_CLD_IASACE_ARM_NOTIF_INVALID_ARM_DISARM_CODE

  • E_CLD_IASACE_ARM_NOTIF_NOT_READY_TO_ARM

  • E_CLD_IASACE_ARM_NOTIF_ALREADY_DISARMED

E_CLD_IASACE_CMD_GET_ZONE_ID_MAP_RESP Data

typedef struct
{
    zbmap16  au16ZoneIDMap[CLD_IASACE_MAX_BYTES_FOR_NUM_OF_ZONES]; 
} tsCLD_IASACE_GetZoneIDMapRespPayload;

where au16ZoneIDMap[``] is an array, each element being a 16-bit bitmap indicating whether each of a set of zone identifiers is allocated - a Zone ID is represented by a single bit which is set to ‘1’ if the identifier value has been allocated and ‘0’ otherwise.

Array Element

Bit

Zone ID

au16ZoneIDMap[0]

0
1
: 15

0x00
0x01
: 0x0F

au16ZoneIDMap[1]

0
1
: 15

0x10
0x11
: 0x1F

:

:

:

au16ZoneIDMap[N]

0
1
:
n
:
15

16N
16N + 0x1
:
16N + 0xn
:
16N + 0xF

E_CLD_IASACE_CMD_GET_ZONE_INFO_RESP Data

typedef struct
{
    zuint8                    u8ZoneID;
    zbmap16                   u16ZoneType;
    zieeeaddress              u64IeeeAddress;
    tsZCL_CharacterString     sZoneLabel; 
} tsCLD_IASACE_GetZoneInfoRespPayload;

where:

  • u8ZoneID is the identifier of the zone

  • u16ZoneType is a value indicating the type of zone (for the possible values, refer to the description of the attribute e``16ZoneType of the IAS Zone cluster in Section 37.2)

  • u64IeeeAddress is the IEEE/MAC address of the device which hosts the zone

  • sZoneLabel is a character string representing a name/label for the zone

E_CLD_IASACE_CMD_ZONE_STATUS_CHANGED Data

typedef struct
{
    zuint8                    u8ZoneID;
    zenum16                   eZoneStatus;
    zenum8                    eAudibleNotification;
    tsZCL_CharacterString     sZoneLabel;
} tsCLD_IASACE_ZoneStatusChangedPayload;

where:

  • u8ZoneID is the identifier of the zone

  • u16ZoneType is a value indicating the type of zone (for the possible values, refer to the description of the attribute e``16ZoneType of the IAS Zone cluster in Section 37.2)

  • eAudibleNotification is a value specifying whether an audible notification

    (e.g. a chime) to signal the change is required (enumerations are available in teCLD_IASACE_AudibleNotification - see Section 38.8.4):

Value

Status

0x00

Audible notification to be muted

0x01

Audible notification to be sounded

0x02 - 0xFF

Reserved

  • sZoneLabel is a character string representing a name/label for the zone

E_CLD_IASACE_CMD_PANEL_STATUS_CHANGED Data

tsCLD_IASACE_PanelStatusChangedOrGetPanelStatusRespPayload

For details of this structure, see Section 38.7.5.

E_CLD_IASACE_CMD_GET_PANEL_STATUS_RESP Data

tsCLD_IASACE_PanelStatusChangedOrGetPanelStatusRespPayload

For details of this structure, see Section 38.7.5.

E_CLD_IASACE_CMD_BYPASS_RESP Data

typedef struct
{
    zuint8          u8NumofZones;
    zuint8         *pu8BypassResult;           
} tsCLD_IASACE_BypassRespPayload;

where:

  • u8NumOfZones is the number of zones ‘bypassed’ (taken out of the system)

  • pu8BypassResult is a pointer to a list of identifiers specifying the zones bypassed (the number of zones in the list is specified in u8NumOfZones)

E_CLD_IASACE_CMD_GET_ZONE_STATUS_RESP Data

typedef struct
{
    zbool           bZoneStatusComplete;
    zuint8          u8NumofZones;
    zuint8         *pu8ZoneStatus;         
} tsCLD_IASACE_GetZoneStatusRespPayload;

where:

  • bZoneStatusComplete is a Boolean indicating whether the current response completes the set of zones for which status information can be returned (if not, the client should send another Get Zone Status command to the server):

    • TRUE - no more zone status information to be returned

    • FALSE - status information for more zones available to be queried

  • u8NumofZones is the number of zones for which status information was returned in this response

  • pu8ZoneStatus is a pointer to a list of status values for the reported zones (the number of values in the list is indicated by u8NumofZones above) - each is a 24-bit value containing the following information:

Bits

Description

0-7

Zone ID

8-23

Value of b16ZoneStatus attribute of the IAS Zone cluster for the zone

Parent topic:Structures

Parent topic:IAS Ancillary Control Equipment Cluster