summaryrefslogtreecommitdiffhomepage
path: root/digital/zigbit/bitcloud/stack/Components/ZCL/include/zclZllIdentifyCluster.h
diff options
context:
space:
mode:
Diffstat (limited to 'digital/zigbit/bitcloud/stack/Components/ZCL/include/zclZllIdentifyCluster.h')
-rw-r--r--digital/zigbit/bitcloud/stack/Components/ZCL/include/zclZllIdentifyCluster.h215
1 files changed, 215 insertions, 0 deletions
diff --git a/digital/zigbit/bitcloud/stack/Components/ZCL/include/zclZllIdentifyCluster.h b/digital/zigbit/bitcloud/stack/Components/ZCL/include/zclZllIdentifyCluster.h
new file mode 100644
index 00000000..ad27466e
--- /dev/null
+++ b/digital/zigbit/bitcloud/stack/Components/ZCL/include/zclZllIdentifyCluster.h
@@ -0,0 +1,215 @@
+/***************************************************************************//**
+ \file zclZllIdentifyCluster.h
+
+ \brief
+ The header file describes the ZLL Identify Cluster and its interface
+
+ \author
+ Atmel Corporation: http://www.atmel.com \n
+ Support email: avr@atmel.com
+
+ Copyright (c) 2008-2011, Atmel Corporation. All rights reserved.
+ Licensed under Atmel's Limited License Agreement (BitCloudTM).
+
+ \internal
+ History:
+ 04.07.11 A. Taradov - Created.
+*******************************************************************************/
+
+#ifndef _ZCLZLLIDENTIFYCLUSTER_H
+#define _ZCLZLLIDENTIFYCLUSTER_H
+
+/*!
+Attributes and commands for determining basic information about a device,
+setting user device information such as location, enabling a device and resetting it
+to factory defaults.
+*/
+
+/*******************************************************************************
+ Includes section
+*******************************************************************************/
+
+#include <zcl.h>
+#include <clusters.h>
+
+/*******************************************************************************
+ Define(s) section
+*******************************************************************************/
+
+/**
+ * \brief Identify Server Cluster attributes amount.
+*/
+
+#define ZCL_IDENTIFY_CLUSTER_SERVER_ATTRIBUTES_AMOUNT 1
+
+/**
+ * \brief Identify Client Cluster attributes amount.
+*/
+
+#define ZCL_IDENTIFY_CLUSTER_CLIENT_ATTRIBUTES_AMOUNT 0
+
+/**
+ * \brief Identify Client Cluster commands amount.
+*/
+
+#define ZCL_IDENTIFY_CLUSTER_COMMANDS_AMOUNT 4
+
+/**
+ * \brief Identify Server Cluster attributes identifiers.
+*/
+
+#define ZCL_IDENTIFY_CLUSTER_IDENTIFY_TIME_ATTRIBUTE_ID CCPU_TO_LE16(0x0000)
+
+/**
+ * \brief Identify Server Cluster commands identifiers.
+*/
+
+#define ZCL_IDENTIFY_CLUSTER_IDENTIFY_QUERY_RESPONSE_COMMAND_ID 0x00
+
+/**
+ * \brief Identify Client Cluster commands identifiers.
+*/
+
+#define ZCL_IDENTIFY_CLUSTER_IDENTIFY_COMMAND_ID 0x00
+#define ZCL_IDENTIFY_CLUSTER_IDENTIFY_QUERY_COMMAND_ID 0x01
+#define ZCL_IDENTIFY_CLUSTER_TRIGGER_EFFECT_COMMAND_ID 0x40
+
+/*
+ *\brief ZCL Idetify Cluster server side attributes defining macros
+ */
+
+#define ZCL_DEFINE_IDENTIFY_CLUSTER_SERVER_ATTRIBUTES() \
+ DEFINE_ATTRIBUTE(identifyTime, ZCL_READWRITE_ATTRIBUTE, ZCL_IDENTIFY_CLUSTER_IDENTIFY_TIME_ATTRIBUTE_ID, ZCL_U16BIT_DATA_TYPE_ID)
+
+/*
+ * \brief ZCL Identify Cluster commands defining macros
+ */
+
+#define IDENTIFY_CLUSTER_COMMANDS(identifyCommandInd, identifyQueryCommandInd, triggerEffectCommandInd, identifyQueryResponseCommandInd) \
+ DEFINE_COMMAND(identifyCommand, 0x00, COMMAND_OPTIONS(CLIENT_TO_SERVER, ZCL_THERE_IS_NO_RELEVANT_RESPONSE, ZCL_COMMAND_ACK), identifyCommandInd), \
+ DEFINE_COMMAND(identifyQueryCommand, 0x01, COMMAND_OPTIONS(CLIENT_TO_SERVER, ZCL_THERE_IS_RELEVANT_RESPONSE, ZCL_COMMAND_ACK), identifyQueryCommandInd), \
+ DEFINE_COMMAND(triggerEffectCommand, 0x40, COMMAND_OPTIONS(CLIENT_TO_SERVER, ZCL_THERE_IS_NO_RELEVANT_RESPONSE, ZCL_COMMAND_ACK), triggerEffectCommandInd), \
+ DEFINE_COMMAND(identifyQueryResponseCommand, 0x00, COMMAND_OPTIONS(SERVER_TO_CLIENT, ZCL_THERE_IS_NO_RELEVANT_RESPONSE, ZCL_COMMAND_ACK), identifyQueryResponseCommandInd)
+
+#define IDENTIFY_CLUSTER_ZCL_CLIENT_CLUSTER_TYPE(clattributes, clcommands) \
+ { \
+ .id = IDENTIFY_CLUSTER_ID, \
+ .options = {.type = ZCL_CLIENT_CLUSTER_TYPE, .security = ZCL_NETWORK_KEY_CLUSTER_SECURITY}, \
+ .attributesAmount = ZCL_IDENTIFY_CLUSTER_CLIENT_ATTRIBUTES_AMOUNT, \
+ .attributes = (uint8_t *)clattributes, \
+ .commandsAmount = ZCL_IDENTIFY_CLUSTER_COMMANDS_AMOUNT, \
+ .commands = (uint8_t *)clcommands \
+ }
+
+#define IDENTIFY_CLUSTER_ZCL_SERVER_CLUSTER_TYPE(clattributes, clcommands) \
+ { \
+ .id = IDENTIFY_CLUSTER_ID, \
+ .options = {.type = ZCL_SERVER_CLUSTER_TYPE, .security = ZCL_NETWORK_KEY_CLUSTER_SECURITY}, \
+ .attributesAmount = ZCL_IDENTIFY_CLUSTER_SERVER_ATTRIBUTES_AMOUNT, \
+ .attributes = (uint8_t *)clattributes, \
+ .commandsAmount = ZCL_IDENTIFY_CLUSTER_COMMANDS_AMOUNT, \
+ .commands = (uint8_t *)clcommands \
+ }
+
+#define DEFINE_IDENTIFY_CLUSTER(cltype, clattributes, clcommands) IDENTIFY_CLUSTER_##cltype(clattributes, clcommands)
+
+/******************************************************************************
+ Types section
+******************************************************************************/
+
+/**
+ * \brief Possible values for the Effect Identifier field.
+*/
+enum
+{
+ ZCL_EFFECT_IDENTIFIER_BLINK = 0x00,
+ ZCL_EFFECT_IDENTIFIER_BREATHE = 0x01,
+ ZCL_EFFECT_IDENTIFIER_OKAY = 0x02,
+ ZCL_EFFECT_IDENTIFIER_CHANNEL_CHANGE = 0x0b,
+ ZCL_EFFECT_IDENTIFIER_FINISH_EFFECT = 0xfe,
+ ZCL_EFFECT_IDENTIFIER_STOP_EFFECT = 0xff,
+};
+
+/**
+ * \brief Possible values for the Effect Variant field.
+*/
+enum
+{
+ ZCL_EFFECT_VARIANT_DEFAULT = 0x00,
+};
+
+BEGIN_PACK
+
+/**
+ * \brief Identify Command Payload format.
+*/
+typedef struct PACK
+{
+ uint16_t identifyTime;
+} ZCL_Identify_t;
+
+/**
+ * \brief Trigger Effect Command Payload format.
+*/
+typedef struct PACK
+{
+ uint8_t effectIdentifier;
+ uint8_t effectVariant;
+} ZCL_TriggerEffect_t;
+
+/**
+ * \brief Identify Query Response Payload format.
+*/
+typedef struct PACK
+{
+ uint16_t timeout;
+} ZCL_IdentifyQueryResponse_t;
+
+typedef struct PACK
+{
+ struct PACK
+ {
+ ZCL_AttributeId_t id;
+ uint8_t type;
+ uint8_t properties;
+ uint16_t value;
+ } identifyTime;
+} ZCL_IdentifyClusterAttributes_t;
+
+END_PACK
+
+typedef struct
+{
+ struct
+ {
+ ZCL_CommandId_t id;
+ ZclCommandOptions_t options;
+ ZCL_Status_t (*identifyCommand)(ZCL_Addressing_t *addressing, uint8_t payloadLength, ZCL_Identify_t *payload);
+ } identifyCommand;
+
+ struct
+ {
+ ZCL_CommandId_t id;
+ ZclCommandOptions_t options;
+ ZCL_Status_t (*identifyQueryCommand)(ZCL_Addressing_t *addressing, uint8_t payloadLength, uint8_t *payload);
+ } identifyQueryCommand;
+
+ struct
+ {
+ ZCL_CommandId_t id;
+ ZclCommandOptions_t options;
+ ZCL_Status_t (*triggerEffectCommand)(ZCL_Addressing_t *addressing, uint8_t payloadLength, ZCL_TriggerEffect_t *payload);
+ } triggerEffectCommand;
+
+ struct
+ {
+ ZCL_CommandId_t id;
+ ZclCommandOptions_t options;
+ ZCL_Status_t (*identifyQueryResponseCommand)(ZCL_Addressing_t *addressing, uint8_t payloadLength, ZCL_IdentifyQueryResponse_t *payload);
+ } identifyQueryResponseCommand;
+} ZCL_IdentifyClusterCommands_t;
+
+
+#endif // _ZCLZLLIDENTIFYCLUSTER_H
+
+// eof zclZllIdentifyCluster.h