1
0
mirror of https://github.com/Utyff/Zintercom.git synced 2026-01-12 09:17:41 +03:00

init commit

This commit is contained in:
lost
2020-12-27 14:40:06 +02:00
commit 496c206ebc
19 changed files with 12305 additions and 0 deletions

154
Source/zcl_app_data.c Normal file
View File

@@ -0,0 +1,154 @@
#include "AF.h"
#include "OSAL.h"
#include "ZComDef.h"
#include "ZDConfig.h"
#include "zcl.h"
#include "zcl_general.h"
#include "zcl_ha.h"
#include "zcl_ms.h"
#include "zcl_app.h"
#include "battery.h"
#include "version.h"
#include "bdb_touchlink.h"
#include "bdb_touchlink_target.h"
#include "stub_aps.h"
/*********************************************************************
* CONSTANTS
*/
#define APP_DEVICE_VERSION 2
#define APP_FLAGS 0
#define APP_HWVERSION 1
#define APP_ZCLVERSION 1
/*********************************************************************
* TYPEDEFS
*/
/*********************************************************************
* MACROS
*/
/*********************************************************************
* GLOBAL VARIABLES
*/
// Global attributes
const uint16 zclApp_clusterRevision_all = 0x0002;
// Basic Cluster
const uint8 zclApp_HWRevision = APP_HWVERSION;
const uint8 zclApp_ZCLVersion = APP_ZCLVERSION;
const uint8 zclApp_ApplicationVersion = 3;
const uint8 zclApp_StackVersion = 4;
//{lenght, 'd', 'a', 't', 'a'}
const uint8 zclApp_ManufacturerName[] = {6, 'x', 'y', 'z', 'r', 'o', 'e'};
const uint8 zclApp_ModelId[] = {13, 'D', 'I', 'Y', '_', 'Z', 'i', 'n', 't', 'e', 'r', 'c', 'o', 'm'};
#if defined(ZIC_BATTERY_MODE)
const uint8 zclApp_PowerSource = POWER_SOURCE_BATTERY;
#define DEFAULT_TimeReport 30 //minutes
#else
const uint8 zclApp_PowerSource = POWER_SOURCE_DC;
#define DEFAULT_TimeReport 1 //minutes
#endif
#define DEFAULT_ModeOpen Never
#define DEFAULT_ModeSound TRUE
#define DEFAULT_TimeRing 3 //seconds to ring, before answer
#define DEFAULT_TimeTalk 1 //seconds to talk, before open
#define DEFAULT_TimeOpen 2 //seconds to hold open
application_config_t zclApp_Config = {
.ModeOpen = DEFAULT_ModeOpen,
.ModeSound = DEFAULT_ModeSound,
.TimeRing = DEFAULT_TimeRing,
.TimeTalk = DEFAULT_TimeTalk,
.TimeOpen = DEFAULT_TimeOpen,
.TimeReport = DEFAULT_TimeReport,
};
device_state_t zclApp_State = {
.State = Idle,
.RingRunStep = 0,
};
/*********************************************************************
* ATTRIBUTE DEFINITIONS - Uses REAL cluster IDs
*/
CONST zclAttrRec_t zclApp_AttrsFirstEP[] = {
{BASIC, {ATTRID_BASIC_APPL_VERSION, ZCL_UINT8, R, (void *)&zclApp_ApplicationVersion}},
{BASIC, {ATTRID_BASIC_STACK_VERSION, ZCL_UINT8, R, (void *)&zclApp_StackVersion}},
{BASIC, {ATTRID_BASIC_HW_VERSION, ZCL_UINT8, R, (void *)&zclApp_HWRevision}},
{BASIC, {ATTRID_BASIC_ZCL_VERSION, ZCL_UINT8, R, (void *)&zclApp_ZCLVersion}},
{BASIC, {ATTRID_BASIC_MANUFACTURER_NAME, ZCL_DATATYPE_CHAR_STR, R, (void *)zclApp_ManufacturerName}},
{BASIC, {ATTRID_BASIC_MODEL_ID, ZCL_DATATYPE_CHAR_STR, R, (void *)zclApp_ModelId}},
{BASIC, {ATTRID_BASIC_POWER_SOURCE, ZCL_DATATYPE_ENUM8, R, (void *)&zclApp_PowerSource}},
{BASIC, {ATTRID_CLUSTER_REVISION, ZCL_UINT16, R, (void *)&zclApp_clusterRevision_all}},
{BASIC, {ATTRID_BASIC_DATE_CODE, ZCL_DATATYPE_CHAR_STR, R, (void *)zclApp_DateCode}},
{BASIC, {ATTRID_BASIC_SW_BUILD_ID, ZCL_DATATYPE_CHAR_STR, R, (void *)zclApp_DateCode}},
#if defined(ZIC_BATTERY_MODE)
{POWER_CFG, {ATTRID_POWER_CFG_BATTERY_VOLTAGE, ZCL_UINT8, RR, (void *)&zclBattery_Voltage}},
/**
* FYI: calculating battery percentage can be tricky, since this device can be powered from 2xAA or 1xCR2032 batteries
* */
{POWER_CFG, {ATTRID_POWER_CFG_BATTERY_PERCENTAGE_REMAINING, ZCL_UINT8, RR, (void *)&zclBattery_PercentageRemainig}},
#endif
{ZCL_INTERCOM, {ATTRID_STATE, ZCL_DATATYPE_ENUM8, RRW, (void *)&zclApp_State.State}},
{ZCL_INTERCOM, {ATTRID_MODEOPEN, ZCL_DATATYPE_ENUM8, RRW, (void *)&zclApp_Config.ModeOpen}},
{ZCL_INTERCOM, {ATTRID_MODESOUND, ZCL_DATATYPE_BOOLEAN, RRW, (void *)&zclApp_Config.ModeSound}},
{ZCL_INTERCOM, {ATTRID_TIMERING, ZCL_UINT8, RW, (void *)&zclApp_Config.TimeRing}},
{ZCL_INTERCOM, {ATTRID_TIMETALK, ZCL_UINT8, RW, (void *)&zclApp_Config.TimeTalk}},
{ZCL_INTERCOM, {ATTRID_TIMEOPEN, ZCL_UINT8, RW, (void *)&zclApp_Config.TimeOpen}},
{ZCL_INTERCOM, {ATTRID_TIMEREPORT, ZCL_UINT8, RW, (void *)&zclApp_Config.TimeReport}},
};
uint8 CONST zclApp_AttrsCount = (sizeof(zclApp_AttrsFirstEP) / sizeof(zclApp_AttrsFirstEP[0]));
const cId_t zclApp_InClusterList[] = {ZCL_CLUSTER_ID_GEN_BASIC};
#define APP_MAX_INCLUSTERS (sizeof(zclApp_InClusterList) / sizeof(zclApp_InClusterList[0]))
const cId_t zclApp_OutClusterList[] = {ZCL_INTERCOM};
#define APP_MAX_OUT_CLUSTERS (sizeof(zclApp_OutClusterList) / sizeof(zclApp_OutClusterList[0]))
SimpleDescriptionFormat_t zclApp_FirstEP = {
1, // int Endpoint;
ZCL_HA_PROFILE_ID, // uint16 AppProfId[2];
ZCL_HA_DEVICEID_SIMPLE_SENSOR, // uint16 AppDeviceId[2];
APP_DEVICE_VERSION, // int AppDevVer:4;
APP_FLAGS, // int AppFlags:4;
APP_MAX_INCLUSTERS, // byte AppNumInClusters;
(cId_t *)zclApp_InClusterList, // byte *pAppInClusterList;
APP_MAX_OUT_CLUSTERS, // byte AppNumInClusters;
(cId_t *)zclApp_OutClusterList // byte *pAppInClusterList;
};
void zclApp_ResetAttributesToDefaultValues(void) {
zclApp_Config.ModeOpen = DEFAULT_ModeOpen;
zclApp_Config.ModeSound = DEFAULT_ModeSound;
zclApp_Config.TimeRing = DEFAULT_TimeRing;
zclApp_Config.TimeTalk = DEFAULT_TimeTalk;
zclApp_Config.TimeOpen = DEFAULT_TimeOpen;
zclApp_Config.TimeReport = DEFAULT_TimeReport;
}