Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
Telin_Zigbee_SDK
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
limm
Telin_Zigbee_SDK
Commits
b1dbfcb7
Commit
b1dbfcb7
authored
Apr 01, 2022
by
hanxu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2022.4.1 泰凌微临时版本1.1.0备份。
parent
4f207db8
Changes
37
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
2786 additions
and
593 deletions
+2786
-593
tl_zigbee_sdk/apps/3LightPanelDemo/3LightPanelDemo_endpoint_config.c
...dk/apps/3LightPanelDemo/3LightPanelDemo_endpoint_config.c
+1
-1
tl_zigbee_sdk/apps/3LightPanelDemo/3LightPanelDemo_endpoint_config.h
...dk/apps/3LightPanelDemo/3LightPanelDemo_endpoint_config.h
+43
-2
tl_zigbee_sdk/apps/3LightPanelDemo/app_cfg.h
tl_zigbee_sdk/apps/3LightPanelDemo/app_cfg.h
+1
-1
tl_zigbee_sdk/apps/3LightPanelDemo/ikk-config.h
tl_zigbee_sdk/apps/3LightPanelDemo/ikk-config.h
+127
-5
tl_zigbee_sdk/apps/3LightPanelDemo/user.c
tl_zigbee_sdk/apps/3LightPanelDemo/user.c
+522
-150
tl_zigbee_sdk/apps/3LightPanelDemo/user.h
tl_zigbee_sdk/apps/3LightPanelDemo/user.h
+3
-1
tl_zigbee_sdk/apps/3LightPanelDemo/zb_appCb.c
tl_zigbee_sdk/apps/3LightPanelDemo/zb_appCb.c
+12
-8
tl_zigbee_sdk/apps/3LightPanelDemo/zcl_onOffCb.c
tl_zigbee_sdk/apps/3LightPanelDemo/zcl_onOffCb.c
+99
-14
tl_zigbee_sdk/apps/3LightPanelDemo/zcl_sampleLightCb.c
tl_zigbee_sdk/apps/3LightPanelDemo/zcl_sampleLightCb.c
+20
-13
tl_zigbee_sdk/apps/3LightPanelDemo/zcl_sceneCb.c
tl_zigbee_sdk/apps/3LightPanelDemo/zcl_sceneCb.c
+2
-0
tl_zigbee_sdk/apps/common/00ikonke_app/driver/ikk-led.c
tl_zigbee_sdk/apps/common/00ikonke_app/driver/ikk-led.c
+8
-3
tl_zigbee_sdk/apps/common/00ikonke_app/driver/ikk-pwm.c
tl_zigbee_sdk/apps/common/00ikonke_app/driver/ikk-pwm.c
+10
-8
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-cluster.c
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-cluster.c
+63
-8
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-cluster.h
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-cluster.h
+18
-2
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-command.c
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-command.c
+35
-71
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-command.h
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-command.h
+0
-1
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-debug.h
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-debug.h
+1
-1
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-factory-test.c
...e_sdk/apps/common/00ikonke_app/general/ikk-factory-test.c
+275
-59
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-factory-test.h
...e_sdk/apps/common/00ikonke_app/general/ikk-factory-test.h
+17
-8
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-interpan.c
...igbee_sdk/apps/common/00ikonke_app/general/ikk-interpan.c
+25
-42
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-interpan.h
...igbee_sdk/apps/common/00ikonke_app/general/ikk-interpan.h
+4
-2
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-module-def.h
...bee_sdk/apps/common/00ikonke_app/general/ikk-module-def.h
+3
-0
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-network.c
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-network.c
+109
-12
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-network.h
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-network.h
+4
-0
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-opt-tunnel.c
...bee_sdk/apps/common/00ikonke_app/general/ikk-opt-tunnel.c
+182
-76
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-opt-tunnel.h
...bee_sdk/apps/common/00ikonke_app/general/ikk-opt-tunnel.h
+4
-2
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.c
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.c
+2
-6
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.h
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.h
+2
-1
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-token.c
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-token.c
+51
-7
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-token.h
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-token.h
+4
-0
tl_zigbee_sdk/build/tlsr_tc32/.cproject
tl_zigbee_sdk/build/tlsr_tc32/.cproject
+1081
-84
tl_zigbee_sdk/build/tlsr_tc32/.project
tl_zigbee_sdk/build/tlsr_tc32/.project
+10
-0
tl_zigbee_sdk/proj/drivers/drv_nv.h
tl_zigbee_sdk/proj/drivers/drv_nv.h
+1
-0
tl_zigbee_sdk/proj/os/ev_buffer.c
tl_zigbee_sdk/proj/os/ev_buffer.c
+4
-1
tl_zigbee_sdk/zigbee/zcl/zcl.c
tl_zigbee_sdk/zigbee/zcl/zcl.c
+38
-3
tl_zigbee_sdk/zigbee/zcl/zcl.h
tl_zigbee_sdk/zigbee/zcl/zcl.h
+1
-1
tl_zigbee_sdk/zigbee/zcl/zcl_reporting.c
tl_zigbee_sdk/zigbee/zcl/zcl_reporting.c
+4
-0
No files found.
tl_zigbee_sdk/apps/3LightPanelDemo/3LightPanelDemo_endpoint_config.c
View file @
b1dbfcb7
...
@@ -329,7 +329,7 @@ const af_simple_descriptor_t sampleTestDesc =
...
@@ -329,7 +329,7 @@ const af_simple_descriptor_t sampleTestDesc =
zcl_basicAttr_t
g_zcl_basicAttrs
=
zcl_basicAttr_t
g_zcl_basicAttrs
=
{
{
.
zclVersion
=
0x03
,
.
zclVersion
=
0x03
,
.
appVersion
=
0x2
8
,
.
appVersion
=
0x2
9
,
.
stackVersion
=
0x02
,
.
stackVersion
=
0x02
,
.
hwVersion
=
0x20
,
.
hwVersion
=
0x20
,
.
manuName
=
ZCL_BASIC_MFG_NAME
,
.
manuName
=
ZCL_BASIC_MFG_NAME
,
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/3LightPanelDemo_endpoint_config.h
View file @
b1dbfcb7
...
@@ -2,20 +2,61 @@
...
@@ -2,20 +2,61 @@
#define __IKONKE_ENDPOINT_CONFIG_H___
#define __IKONKE_ENDPOINT_CONFIG_H___
#include "types.h"
#include "types.h"
/**
/**
* @brief Defined for basic cluster attributes
* @brief Defined for basic cluster attributes
*/
*/
//#define SINGLE_LIGHT_PANEL
//#define DUAL_LIGHT_PANEL
#define THREE_LIGHT_PANEL
//#define FOUR_LIGHT_PANEL
#ifdef SINGLE_LIGHT_PANEL
#define SUPPORT_MAX_EP 6
#define Support_Endpoint_Array { 1 }
#define Support_Endpoint_Num 1
// Array of profile ids
#define FIXED_PROFILE_IDS { 260 }
// Array of device ids
#define FIXED_DEVICE_IDS { HA_DEV_ONOFF_LIGHT_SWITCH }
#endif
#ifdef DUAL_LIGHT_PANEL
#define SUPPORT_MAX_EP 6
#define SUPPORT_MAX_EP 6
#define Support_Endpoint_Array {1 ,2 ,3 ,4 }
#define Support_Endpoint_Array { 1, 2 }
#define Support_Endpoint_Num 2
// Array of profile ids
#define FIXED_PROFILE_IDS { 260, 260 }
// Array of device ids
#define FIXED_DEVICE_IDS { HA_DEV_ONOFF_LIGHT_SWITCH, HA_DEV_ONOFF_LIGHT_SWITCH }
#endif
#ifdef THREE_LIGHT_PANEL
#define SUPPORT_MAX_EP 6
#define Support_Endpoint_Array { 1, 2, 3 }
#define Support_Endpoint_Num 3
// Array of profile ids
#define FIXED_PROFILE_IDS { 260, 260, 260 }
// Array of device ids
#define FIXED_DEVICE_IDS { HA_DEV_ONOFF_LIGHT_SWITCH, HA_DEV_ONOFF_LIGHT_SWITCH, HA_DEV_ONOFF_LIGHT_SWITCH }
#endif
#ifdef FOUR_LIGHT_PANEL
#define SUPPORT_MAX_EP 6
#define Support_Endpoint_Array { 1, 2, 3, 4 }
#define Support_Endpoint_Num 4
#define Support_Endpoint_Num 4
// Array of profile ids
// Array of profile ids
#define FIXED_PROFILE_IDS { 260, 260, 260, 260 }
#define FIXED_PROFILE_IDS { 260, 260, 260, 260 }
// Array of device ids
// Array of device ids
#define FIXED_DEVICE_IDS { HA_DEV_ONOFF_LIGHT_SWITCH, HA_DEV_ONOFF_LIGHT_SWITCH, HA_DEV_ONOFF_LIGHT_SWITCH, HA_DEV_ONOFF_LIGHT_SWITCH }
#define FIXED_DEVICE_IDS { HA_DEV_ONOFF_LIGHT_SWITCH, HA_DEV_ONOFF_LIGHT_SWITCH, HA_DEV_ONOFF_LIGHT_SWITCH, HA_DEV_ONOFF_LIGHT_SWITCH }
#endif
typedef
struct
{
typedef
struct
{
u8
zclVersion
;
u8
zclVersion
;
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/app_cfg.h
View file @
b1dbfcb7
...
@@ -101,7 +101,7 @@ extern "C" {
...
@@ -101,7 +101,7 @@ extern "C" {
#endif
#endif
#define ZCL_GROUP_SUPPORT 1
#define ZCL_GROUP_SUPPORT 1
#define ZCL_SCENE_SUPPORT 1
#define ZCL_SCENE_SUPPORT 1
#define ZCL_OTA_SUPPORT
1
#define ZCL_OTA_SUPPORT
0
#define ZCL_PRIVATE_CLUSTER_FCC0_SUPPORT 1
#define ZCL_PRIVATE_CLUSTER_FCC0_SUPPORT 1
#if TOUCHLINK_SUPPORT
#if TOUCHLINK_SUPPORT
#define ZCL_ZLL_COMMISSIONING_SUPPORT 1
#define ZCL_ZLL_COMMISSIONING_SUPPORT 1
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/ikk-config.h
View file @
b1dbfcb7
...
@@ -2,12 +2,133 @@
...
@@ -2,12 +2,133 @@
#define __IKONKE_CONFIG_H___
#define __IKONKE_CONFIG_H___
#include "types.h"
#include "types.h"
//#define SINGLE_LIGHT_PANEL
//#define DUAL_LIGHT_PANEL
#define THREE_LIGHT_PANEL
//#define FOUR_LIGHT_PANEL
#ifdef SINGLE_LIGHT_PANEL
/*Dsp: product model id */
#define PRODUCT_MODEL "KK-LP-D81X"
/*Dsp: APP Version */
#define FIRMWARE_VER 0x29
/*Dsp: Stack Version */
#define STACK_VER 0x11
/*Dsp: HARDWARE_VER */
#define HARDWARE_VERSION 0x20
/*Dsp: MANUFATURE NAME */
#define MANUFATURE_NAME "Konke"
/*Dsp: MODEL_ID */
#define MODEL_ID 0x00068621
/*Dsp: OTA_IMAGE_TYPE */
#define OTA_IMAGE_TYPE 65001
/*Dsp: OTA_FIRMVERSION */
#define OTA_FIRMVERSION 0x29
/*Dsp: MANUFATURE_CODE */
#define MANUFATURE_CODE 0x1268
/*Dsp: OTA_HARDWARE_VER */
#define OTA_HARDWARE_VER 0x20
#define MANUFACTURER_CODE_TELINK 0x1268
#define IMAGE_TYPE 65001
#define FILE_VERSION 0x10
#endif
#ifdef DUAL_LIGHT_PANEL
/*Dsp: product model id */
#define PRODUCT_MODEL "KK-LP-D82X"
/*Dsp: APP Version */
#define FIRMWARE_VER 0x29
/*Dsp: Stack Version */
#define STACK_VER 0x11
/*Dsp: HARDWARE_VER */
#define HARDWARE_VERSION 0x20
/*Dsp: MANUFATURE NAME */
#define MANUFATURE_NAME "Konke"
/*Dsp: MODEL_ID */
#define MODEL_ID 0x00068622
/*Dsp: OTA_IMAGE_TYPE */
#define OTA_IMAGE_TYPE 65002
/*Dsp: OTA_FIRMVERSION */
#define OTA_FIRMVERSION 0x29
/*Dsp: MANUFATURE_CODE */
#define MANUFATURE_CODE 0x1268
/*Dsp: OTA_HARDWARE_VER */
#define OTA_HARDWARE_VER 0x20
#define MANUFACTURER_CODE_TELINK 0x1268
#define IMAGE_TYPE 65002
#define FILE_VERSION 0x10
#endif
#ifdef THREE_LIGHT_PANEL
/*Dsp: product model id */
#define PRODUCT_MODEL "KK-LP-D83X"
/*Dsp: APP Version */
#define FIRMWARE_VER 0x29
/*Dsp: Stack Version */
#define STACK_VER 0x11
/*Dsp: HARDWARE_VER */
#define HARDWARE_VERSION 0x20
/*Dsp: MANUFATURE NAME */
#define MANUFATURE_NAME "Konke"
/*Dsp: MODEL_ID */
#define MODEL_ID 0x00068623
/*Dsp: OTA_IMAGE_TYPE */
#define OTA_IMAGE_TYPE 65003
/*Dsp: OTA_FIRMVERSION */
#define OTA_FIRMVERSION 0x29
/*Dsp: MANUFATURE_CODE */
#define MANUFATURE_CODE 0x1268
/*Dsp: OTA_HARDWARE_VER */
#define OTA_HARDWARE_VER 0x20
#define MANUFACTURER_CODE_TELINK 0x1268
#define IMAGE_TYPE 65003
#define FILE_VERSION 0x10
#endif
#ifdef FOUR_LIGHT_PANEL
/*Dsp: product model id */
/*Dsp: product model id */
#define PRODUCT_MODEL "KK-
PA-M10
X"
#define PRODUCT_MODEL "KK-
LP-D84
X"
/*Dsp: APP Version */
/*Dsp: APP Version */
#define FIRMWARE_VER 0x2
0
#define FIRMWARE_VER 0x2
9
/*Dsp: Stack Version */
/*Dsp: Stack Version */
#define STACK_VER 0x11
#define STACK_VER 0x11
...
@@ -22,10 +143,10 @@
...
@@ -22,10 +143,10 @@
#define MODEL_ID 0x00068624
#define MODEL_ID 0x00068624
/*Dsp: OTA_IMAGE_TYPE */
/*Dsp: OTA_IMAGE_TYPE */
#define OTA_IMAGE_TYPE 6500
0
#define OTA_IMAGE_TYPE 6500
4
/*Dsp: OTA_FIRMVERSION */
/*Dsp: OTA_FIRMVERSION */
#define OTA_FIRMVERSION 0x2
0
#define OTA_FIRMVERSION 0x2
9
/*Dsp: MANUFATURE_CODE */
/*Dsp: MANUFATURE_CODE */
#define MANUFATURE_CODE 0x1268
#define MANUFATURE_CODE 0x1268
...
@@ -36,9 +157,10 @@
...
@@ -36,9 +157,10 @@
#define MANUFACTURER_CODE_TELINK 0x1268
#define MANUFACTURER_CODE_TELINK 0x1268
#define IMAGE_TYPE 6500
0
#define IMAGE_TYPE 6500
4
#define FILE_VERSION 0x10
#define FILE_VERSION 0x10
#endif
#include "../common/comm_cfg.h"
#include "../common/comm_cfg.h"
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/user.c
View file @
b1dbfcb7
...
@@ -9,11 +9,33 @@
...
@@ -9,11 +9,33 @@
#include "ikk-uart.h"
#include "ikk-uart.h"
#include "ikk-relay.h"
#include "ikk-relay.h"
#include "ikk-led.h"
#include "ikk-led.h"
#include "ikk-
ota
.h"
#include "ikk-
network
.h"
#include "ikk-command.h"
#include "ikk-command.h"
#include "ikk-common-utils.h"
#include "ikk-common-utils.h"
#include "ikk-interpan.h"
#include "ikk-interpan.h"
#include "ikk-pwm.h"
#include "ikk-ota.h"
//#define SINGLE_LIGHT_PANEL
//#define DUAL_LIGHT_PANEL
#define THREE_LIGHT_PANEL
//#define FOUR_LIGHT_PANEL
#ifdef SINGLE_LIGHT_PANEL
#define g_ucRelayTotalNum 1
#endif
#ifdef DUAL_LIGHT_PANEL
#define g_ucRelayTotalNum 2
#endif
#ifdef THREE_LIGHT_PANEL
#define g_ucRelayTotalNum 3
#endif
#ifdef FOUR_LIGHT_PANEL
#define g_ucRelayTotalNum 4
#endif
#define ZERO_PIN GPIO_PA0
#define ZERO_PIN GPIO_PA0
#define RELAY1_PIN GPIO_PC0
#define RELAY1_PIN GPIO_PC0
...
@@ -43,8 +65,8 @@
...
@@ -43,8 +65,8 @@
#define HEART_RAND_MIN_NUM (240 * 1000)
#define HEART_RAND_MIN_NUM (240 * 1000)
#define HEART_RAND_MAX_NUM (300 * 1000)
#define HEART_RAND_MAX_NUM (300 * 1000)
#define LED_SLOW_BLINK_ON_TIME_MS
5
00
#define LED_SLOW_BLINK_ON_TIME_MS
8
00
#define LED_SLOW_BLINK_OFF_TIME_MS
5
00
#define LED_SLOW_BLINK_OFF_TIME_MS
8
00
#define LED_FAST_BLINK_ON_TIME_MS 200
#define LED_FAST_BLINK_ON_TIME_MS 200
#define LED_FAST_BLINK_OFF_TIME_MS 200
#define LED_FAST_BLINK_OFF_TIME_MS 200
...
@@ -53,11 +75,8 @@
...
@@ -53,11 +75,8 @@
#define MIN_JOINED_NWK_DELAY_TIME_MS (7 * 1000) //重新上电后最短时间,用于判断是否随机延时10~40S上报心跳和CMEI和ISN
#define MIN_JOINED_NWK_DELAY_TIME_MS (7 * 1000) //重新上电后最短时间,用于判断是否随机延时10~40S上报心跳和CMEI和ISN
#define RAND_MIN_NUM (3 * 1000) //最小随机数,单位MS
#define REPORT_ATTR_MAX_RAND_NUM (5 * 1000) //场景下发控制后随机最大延时上报状态,状态改变后SDK会主动上报
#define RAND_MAX_NUM (6 * 1000) //最大随机数
#define REPORT_ATTR_MIN_RAND_NUM (2 * 1000) //场景下发控制后随机最小延时上报状态
#define REPORT_ATTR_MAX_RAND_NUM (7 * 1000) //场景下发控制后随机最大延时上报状态,状态改变后SDK会主动上报
#define REPORT_ATTR_MIN_RAND_NUM (2.5 * 1000) //场景下发控制后随机最小延时上报状态
#define CHECKED_ZERO_DELAY_ON_TIME_MS (6000)//因继电器会有延时,检测到零点后,按键开关或命令下发开关延时去开的时间,
#define CHECKED_ZERO_DELAY_ON_TIME_MS (6000)//因继电器会有延时,检测到零点后,按键开关或命令下发开关延时去开的时间,
...
@@ -86,28 +105,81 @@ typedef enum {RELAY_CHANNEL1_ID=1, RELAY_CHANNEL2_ID, RELAY_CHANNEL3_ID, RELAY_C
...
@@ -86,28 +105,81 @@ typedef enum {RELAY_CHANNEL1_ID=1, RELAY_CHANNEL2_ID, RELAY_CHANNEL3_ID, RELAY_C
// BUTTONs CONFIG
// BUTTONs CONFIG
BtnConfSt
g_btnConfList
[]
=
{
BtnConfSt
g_btnConfList
[]
=
{
{
KEY_SYS_ID
,
KEY_SYS_PIN
,
EBP_HIGH
,
false
,
true
,
SYS_BUTTON_LONG_PRESS_TIME_MS
},
// Key1
{
KEY_SYS_ID
,
KEY_SYS_PIN
,
EBP_HIGH
,
false
,
true
,
SYS_BUTTON_LONG_PRESS_TIME_MS
},
// Key1
#ifdef SINGLE_LIGHT_PANEL
{
KEY1_ID
,
KEY2_PIN
,
EBP_HIGH
,
false
,
true
,
SYS_BUTTON_LONG_PRESS_TIME_MS
},
// Key2
#endif
#ifdef DUAL_LIGHT_PANEL
{
KEY1_ID
,
KEY2_PIN
,
EBP_HIGH
,
false
,
true
,
SYS_BUTTON_LONG_PRESS_TIME_MS
},
// Key2
{
KEY2_ID
,
KEY4_PIN
,
EBP_HIGH
,
false
,
false
,
0xffffffff
},
// Key2
#endif
#ifdef THREE_LIGHT_PANEL
{
KEY1_ID
,
KEY1_PIN
,
EBP_HIGH
,
false
,
true
,
SYS_BUTTON_LONG_PRESS_TIME_MS
},
// Key2
{
KEY2_ID
,
KEY2_PIN
,
EBP_HIGH
,
false
,
false
,
0xffffffff
},
// Key2
{
KEY3_ID
,
KEY3_PIN
,
EBP_HIGH
,
false
,
false
,
0xffffffff
},
// Key2
#endif
#ifdef FOUR_LIGHT_PANEL
{
KEY1_ID
,
KEY1_PIN
,
EBP_HIGH
,
false
,
true
,
SYS_BUTTON_LONG_PRESS_TIME_MS
},
// Key2
{
KEY1_ID
,
KEY1_PIN
,
EBP_HIGH
,
false
,
true
,
SYS_BUTTON_LONG_PRESS_TIME_MS
},
// Key2
{
KEY2_ID
,
KEY2_PIN
,
EBP_HIGH
,
false
,
false
,
0xffffffff
},
// Key2
{
KEY2_ID
,
KEY2_PIN
,
EBP_HIGH
,
false
,
false
,
0xffffffff
},
// Key2
{
KEY3_ID
,
KEY3_PIN
,
EBP_HIGH
,
false
,
false
,
0xffffffff
},
// Key2
{
KEY3_ID
,
KEY3_PIN
,
EBP_HIGH
,
false
,
false
,
0xffffffff
},
// Key2
{
KEY4_ID
,
KEY4_PIN
,
EBP_HIGH
,
false
,
false
,
0xffffffff
},
// Key2
{
KEY4_ID
,
KEY4_PIN
,
EBP_HIGH
,
false
,
false
,
0xffffffff
},
// Key2
#endif
};
};
// LEDs CONFIG
// LEDs CONFIG
LedConfSt
g_ledConfList
[]
=
{
LedConfSt
g_ledConfList
[]
=
{
{(
uint8_t
)
LED_RADAR_ID
,
1
,
{
LED_RADAR_PIN
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED_RADAR_ID
,
1
,
{
LED_RADAR_PIN
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
#ifdef SINGLE_LIGHT_PANEL
{(
uint8_t
)
LED1_ID
,
1
,
{
LED2_PIN
,
PWM1_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED_ALL_ID
,
1
,
{
LED2_PIN
,
PWM1_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
#endif
#ifdef DUAL_LIGHT_PANEL
{(
uint8_t
)
LED1_ID
,
1
,
{
LED2_PIN
,
PWM1_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED2_ID
,
1
,
{
LED4_PIN
,
PWM2_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED_ALL_ID
,
2
,
{
LED2_PIN
,
PWM1_ID
,
LED4_PIN
,
PWM2_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
#endif
#ifdef THREE_LIGHT_PANEL
{(
uint8_t
)
LED1_ID
,
1
,
{
LED1_PIN
,
PWM1_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED2_ID
,
1
,
{
LED2_PIN
,
PWM2_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED3_ID
,
1
,
{
LED3_PIN
,
PWM3_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED_ALL_ID
,
3
,
{
LED1_PIN
,
PWM1_ID
,
LED2_PIN
,
PWM2_ID
,
LED3_PIN
,
PWM3_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
#endif
#ifdef FOUR_LIGHT_PANEL
{(
uint8_t
)
LED1_ID
,
1
,
{
LED1_PIN
,
PWM1_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED1_ID
,
1
,
{
LED1_PIN
,
PWM1_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED2_ID
,
1
,
{
LED2_PIN
,
PWM2_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED2_ID
,
1
,
{
LED2_PIN
,
PWM2_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED3_ID
,
1
,
{
LED3_PIN
,
PWM3_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED3_ID
,
1
,
{
LED3_PIN
,
PWM3_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED4_ID
,
1
,
{
LED4_PIN
,
PWM4_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED4_ID
,
1
,
{
LED4_PIN
,
PWM4_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
,
PIN_UNKNOW
,
PWM_UNKNOW_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED_ALL_ID
,
4
,
{
LED1_PIN
,
PWM1_ID
,
LED2_PIN
,
PWM2_ID
,
LED3_PIN
,
PWM3_ID
,
LED4_PIN
,
PWM4_ID
},
ELP_HIGH
},
{(
uint8_t
)
LED_ALL_ID
,
4
,
{
LED1_PIN
,
PWM1_ID
,
LED2_PIN
,
PWM2_ID
,
LED3_PIN
,
PWM3_ID
,
LED4_PIN
,
PWM4_ID
},
ELP_HIGH
},
#endif
};
};
PwmConfSt
g_pwmConfList
[]
=
{
PwmConfSt
g_pwmConfList
[]
=
{
#ifdef SINGLE_LIGHT_PANEL
{
PWM1_ID
,
{
LED2_PIN
,
KK_PWM_CC1
}},
//
#endif
#ifdef DUAL_LIGHT_PANEL
{
PWM1_ID
,
{
LED2_PIN
,
KK_PWM_CC0
}},
//
{
PWM2_ID
,
{
LED4_PIN
,
KK_PWM_CC1
}},
//
#endif
#ifdef THREE_LIGHT_PANEL
{
PWM1_ID
,
{
LED1_PIN
,
KK_PWM_CC0
}},
//
{
PWM2_ID
,
{
LED2_PIN
,
KK_PWM_CC1
}},
//
{
PWM3_ID
,
{
LED3_PIN
,
KK_PWM_CC2
}},
//
#endif
#ifdef FOUR_LIGHT_PANEL
{
PWM1_ID
,
{
LED1_PIN
,
KK_PWM_CC0
}},
//
{
PWM1_ID
,
{
LED1_PIN
,
KK_PWM_CC0
}},
//
{
PWM2_ID
,
{
LED2_PIN
,
KK_PWM_CC1
}},
//
{
PWM2_ID
,
{
LED2_PIN
,
KK_PWM_CC1
}},
//
{
PWM3_ID
,
{
LED3_PIN
,
KK_PWM_CC2
}},
//
{
PWM3_ID
,
{
LED3_PIN
,
KK_PWM_CC2
}},
//
{
PWM4_ID
,
{
LED4_PIN
,
KK_PWM_CC3
}},
//
{
PWM4_ID
,
{
LED4_PIN
,
KK_PWM_CC3
}},
//
#endif
};
};
// ZERO-ACCESS CONFIG
// ZERO-ACCESS CONFIG
RelayChannelConfSt
g_relayConfList
[]
=
{
RelayChannelConfSt
g_relayConfList
[]
=
{
{
RELAY_CHANNEL1_ID
,
1
,
{
RELAY1_PIN
,
PIN_UNKNOW
,
PIN_UNKNOW
,
PIN_UNKNOW
,
PIN_UNKNOW
,
PIN_UNKNOW
,
PIN_UNKNOW
,
PIN_UNKNOW
},
EZAP_HIGH
},
// Channel1
{
RELAY_CHANNEL1_ID
,
1
,
{
RELAY1_PIN
,
PIN_UNKNOW
,
PIN_UNKNOW
,
PIN_UNKNOW
,
PIN_UNKNOW
,
PIN_UNKNOW
,
PIN_UNKNOW
,
PIN_UNKNOW
},
EZAP_HIGH
},
// Channel1
...
@@ -123,13 +195,31 @@ FactoryTestConfSt g_factoryTestConfList[] = {
...
@@ -123,13 +195,31 @@ FactoryTestConfSt g_factoryTestConfList[] = {
{
KEY1_ID
,
LONG_PRESS_1_TIMES
,
MECHANICAL_KEY_LONG_PRESS_TIME_MS
},
{
KEY1_ID
,
LONG_PRESS_1_TIMES
,
MECHANICAL_KEY_LONG_PRESS_TIME_MS
},
};
};
BindObjSt
cluster_obj_list
[]
=
{
BindObjSt
cluster_obj_list
[]
=
{
#ifdef SINGLE_LIGHT_PANEL
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
1
},
#endif
#ifdef DUAL_LIGHT_PANEL
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
1
},
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
2
},
#endif
#ifdef THREE_LIGHT_PANEL
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
1
},
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
2
},
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
3
},
#endif
#ifdef FOUR_LIGHT_PANEL
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
1
},
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
1
},
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
2
},
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
2
},
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
3
},
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
3
},
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
4
},
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
4
},
#endif
{
ZCL_CLUSTER_PRIVATE_FCC0
,
ZCL_ATTRID_NoDisturbMode
,
1
},
{
ZCL_CLUSTER_GEN_DIAGNOSTICS
,
ZCL_DIAGNOSTICS_ATTRID_LAST_MESSAGE_RSSI
,
1
},
};
};
void
pOnOffAttributeChangeCallback
(
uint8_t
endpoint
,
uint16_t
cluster
,
uint16_t
attribute
,
uint8_t
*
data
,
uint8_t
data_type
);
void
pOnOffAttributeChangeCallback
(
uint8_t
endpoint
,
uint16_t
cluster
,
uint16_t
attribute
,
uint8_t
*
data
,
uint8_t
data_type
);
AttributeChangeConfSt
attribte_change_list
[]
=
{
AttributeChangeConfSt
attribte_change_list
[]
=
{
...
@@ -138,6 +228,7 @@ AttributeChangeConfSt attribte_change_list[] = {
...
@@ -138,6 +228,7 @@ AttributeChangeConfSt attribte_change_list[] = {
uint32_t
u32PeroidIntervalMS
=
2
*
1000
;
uint32_t
u32PeroidIntervalMS
=
2
*
1000
;
bool
Human_body_induction_flag
=
false
;
bool
Human_body_induction_flag
=
false
;
static
bool
power_on_sync
[
4
]
=
{
false
,
false
,
false
,
false
};
static
bool
power_on_sync
[
4
]
=
{
false
,
false
,
false
,
false
};
#define GET_MAX_ENDPOINT(relay_num) (relay_num)
static
uint8_t
g_u8NoDisturbModeMinLevel
=
0x01
;
static
uint8_t
g_u8NoDisturbModeMinLevel
=
0x01
;
static
uint8_t
g_u8NoDisturbModeMaxLevel
=
0x64
;
static
uint8_t
g_u8NoDisturbModeMaxLevel
=
0x64
;
...
@@ -148,7 +239,7 @@ static uint8_t g_ucRelayIdBuff[] = {RELAY_CHANNEL1_ID, RELAY_CHANNEL2_ID, RELAY_
...
@@ -148,7 +239,7 @@ static uint8_t g_ucRelayIdBuff[] = {RELAY_CHANNEL1_ID, RELAY_CHANNEL2_ID, RELAY_
void
JoinCompleteCallback
(
NwkJoinCompltEnum
nwkcomplt
);
void
JoinCompleteCallback
(
NwkJoinCompltEnum
nwkcomplt
);
void
kUserNetworkStatusNotify
(
NwkStatusEnum
nwkst
);
void
kUserNetworkStatusNotify
(
NwkStatusEnum
nwkst
);
void
kUserNetworkExitCompleteCallback
(
void
);
void
kUserNetworkExitCompleteCallback
(
void
);
void
kUserOnOffClusterOnOffStatusCallback
(
uint8_t
endpoint
,
OnOffStatusEnum
estatus
);
;
void
kUserOnOffClusterOnOffStatusCallback
(
uint8_t
endpoint
,
OnOffStatusEnum
estatus
);
kk_err_t
kUserOODMessageIncoming
(
uint8_t
channel
,
uint8_t
opcode
,
uint8_t
args_in_out
[],
uint8_t
*
length_in_out
);
kk_err_t
kUserOODMessageIncoming
(
uint8_t
channel
,
uint8_t
opcode
,
uint8_t
args_in_out
[],
uint8_t
*
length_in_out
);
void
kUserButtonAcitonCallback
(
unsigned
char
button_id
,
BtnActionEnum
action
);
void
kUserButtonAcitonCallback
(
unsigned
char
button_id
,
BtnActionEnum
action
);
...
@@ -162,18 +253,17 @@ void kUserFactorTestPollCallback(FactoryTestStatusEnum status);
...
@@ -162,18 +253,17 @@ void kUserFactorTestPollCallback(FactoryTestStatusEnum status);
void
kOTAMoudleUserCallback
(
OTAStatusEnum
status
);
void
kOTAMoudleUserCallback
(
OTAStatusEnum
status
);
#endif
#endif
#define UART_ENABLE
fals
e
#define UART_ENABLE
tru
e
void
kUserRelayLedCallback
(
RelayStatusSt
status
);
void
kUserRelayLedCallback
(
RelayStatusSt
status
);
void
kRadarDetectInit
(
void
);
void
kRadarDetectInit
(
void
);
void
kRadarLedTragger
(
void
);
void
kRadarLedTragger
(
void
);
static
void
kSetLedStatus
(
LED_ID_ENUM
id
);
void
kSetLedStatus
(
LED_ID_ENUM
id
);
#if UART_ENABLE
#if UART_ENABLE
void
UartMsgProcessHandle
(
UMsgNodeSt
*
pMsgNode
);
void
UartMsgProcessHandle
(
UMsgNodeSt
*
pMsgNode
);
bool
MsgCRC16
(
uint8_t
*
pdat
,
int
length
);
bool
MsgCRC16
(
uint8_t
*
pdat
,
int
length
);
uint16_t
check_sum
(
uint8_t
*
msg
,
uint8_t
len
);
uint16_t
check_sum
(
uint8_t
*
msg
,
uint8_t
len
);
uint8_t
uart_send
(
void
);
uint8_t
uart_send
(
void
);
#endif
#endif
void
Test
(
void
);
static
ev_timer_event_t
*
kkSystemSetUpEvent
=
NULL
;
static
ev_timer_event_t
*
kkSystemSetUpEvent
=
NULL
;
s32
kkSystemSetUpEventHandler
(
void
*
arg
);
s32
kkSystemSetUpEventHandler
(
void
*
arg
);
...
@@ -184,17 +274,13 @@ AttributeChangeConfSt g_ClusterAttributeConfList[] = {
...
@@ -184,17 +274,13 @@ AttributeChangeConfSt g_ClusterAttributeConfList[] = {
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
pOnOffClusterAttributeChangeCallback
},
{
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
,
pOnOffClusterAttributeChangeCallback
},
};
};
static
bool
kEndpointIsValid
(
uint8_t
endpoint
);
static
void
kLEDOnAction
(
LED_ID_ENUM
led_id
);
static
void
kLEDOnAction
(
LED_ID_ENUM
led_id
);
static
void
kLEDOffAction
(
LED_ID_ENUM
led_id
);
static
void
kLEDOffAction
(
LED_ID_ENUM
led_id
);
void
App_Init
(
void
)
void
App_Init
(
void
)
{
{
iKonkeAfSelfPrint
(
"
\r\n
************************************************
\r\n
"
);
iKonkeAfSelfPrint
(
"
\r\n
************************************************
\r\n
"
);
iKonkeAfSelfPrint
(
"
\r\n
****************APP Init***********************
\r\n
"
);
iKonkeAfSelfPrint
(
"
\r\n
****************APP Init***********************
\r\n
"
);
// iKonkeAfSelfPrint("xxx Reboot Reason: R-INFO(0x%x: %p), R-EXTEND(0x%x: %p) xxx\r\n"
// , halGetResetInfo(), halGetResetString()
// , halGetExtendedResetInfo(), halGetExtendedResetString());
// iKonkeAfSelfPrint("xxx Network Status: %d, systime: %d xxx\r\n", emberAfNetworkState()
// , halCommonGetInt32uMillisecondTick());
iKonkeAfSelfPrint
(
"
\r\n
************************************************
\r\n
"
);
iKonkeAfSelfPrint
(
"
\r\n
************************************************
\r\n
"
);
#if 1
#if 1
kk_err_t
err
=
kBtnModuleInit
(
g_btnConfList
,
sizeof
(
g_btnConfList
)
/
sizeof
(
BtnConfSt
),
kUserButtonAcitonCallback
);
kk_err_t
err
=
kBtnModuleInit
(
g_btnConfList
,
sizeof
(
g_btnConfList
)
/
sizeof
(
BtnConfSt
),
kUserButtonAcitonCallback
);
...
@@ -215,7 +301,7 @@ void App_Init(void)
...
@@ -215,7 +301,7 @@ void App_Init(void)
err
=
kRelayModuleInit
(
ZERO_PIN
,
CHECKED_ZERO_DELAY_ON_TIME_MS
,
CHECKED_ZERO_DELAY_OFF_TIME_MS
\
err
=
kRelayModuleInit
(
ZERO_PIN
,
CHECKED_ZERO_DELAY_ON_TIME_MS
,
CHECKED_ZERO_DELAY_OFF_TIME_MS
\
,
EZAP_LOW
,
g_relayConfList
,
sizeof
(
g_relayConfList
)
/
sizeof
(
RelayChannelConfSt
),
kUserRelayLedCallback
);
,
EZAP_LOW
,
g_relayConfList
,
sizeof
(
g_relayConfList
)
/
sizeof
(
RelayChannelConfSt
),
kUserRelayLedCallback
);
if
(
err
!=
KET_OK
)
{
if
(
err
!=
KET_OK
)
{
iKonkeAfSelfPrint
(
"Err:
Led
Module Init failed(%d)!!
\r\n
"
,
err
);
iKonkeAfSelfPrint
(
"Err:
ZERO
Module Init failed(%d)!!
\r\n
"
,
err
);
}
}
#if UART_ENABLE
#if UART_ENABLE
uint8_t
recv_header
[]
=
{
0xAA
,
0X55
};
uint8_t
recv_header
[]
=
{
0xAA
,
0X55
};
...
@@ -223,12 +309,14 @@ void App_Init(void)
...
@@ -223,12 +309,14 @@ void App_Init(void)
#endif
#endif
kNwkModuleInit
(
cluster_obj_list
,
sizeof
(
cluster_obj_list
)
/
sizeof
(
cluster_obj_list
[
0
]),
kUserNetworkStatusNotify
,
kUserNetworkExitCompleteCallback
);
kNwkModuleInit
(
cluster_obj_list
,
sizeof
(
cluster_obj_list
)
/
sizeof
(
cluster_obj_list
[
0
]),
kUserNetworkStatusNotify
,
kUserNetworkExitCompleteCallback
);
//report 4~5 minutes after initialization
kNwkScheduleTaskRegister
(
HEARTBEAT_TIME_MS
);
#if Z30_DEVICE_OTA_ENABLE
#if Z30_DEVICE_OTA_ENABLE
kOTAMoudleInit
(
kOTAMoudleUserCallback
,
LED_ALL_ID
);
kOTAMoudleInit
(
kOTAMoudleUserCallback
,
LED_ALL_ID
);
#endif
#endif
#if Z30_DEVICE_AGING_ENABLE
#if Z30_DEVICE_AGING_ENABLE
kFactoryTestInit
(
kUserFactorTestPollCallback
,
g_factoryTestConfList
,
sizeof
(
g_factoryTestConfList
)
/
sizeof
(
FactoryTestConfSt
));
kFactoryTestInit
(
kUserFactorTestPollCallback
,
g_factoryTestConfList
,
sizeof
(
g_factoryTestConfList
)
/
sizeof
(
FactoryTestConfSt
)
,
LED_ALL_ID
);
#endif
#endif
// init the private cluster protocol module.
// init the private cluster protocol module.
err
=
kOptTunnelModuleInit
(
kUserOODMessageIncoming
);
err
=
kOptTunnelModuleInit
(
kUserOODMessageIncoming
);
...
@@ -245,17 +333,27 @@ void App_Init(void)
...
@@ -245,17 +333,27 @@ void App_Init(void)
kRadarDetectInit
();
kRadarDetectInit
();
kZclClusterPermitReportTableInit
(
cluster_obj_list
,
sizeof
(
cluster_obj_list
)
/
sizeof
(
BindObjSt
));
kZclClusterPermitReportTableInit
(
cluster_obj_list
,
sizeof
(
cluster_obj_list
)
/
sizeof
(
BindObjSt
));
kOptTunnelTrytoWriteInstallCode
();
}
}
void
Test
(
void
)
{
}
void
kUserNetworkExitCompleteCallback
()
void
kUserNetworkExitCompleteCallback
()
{
{
bool
bIsAllOffFlg
=
true
;
for
(
uint8_t
i
=
1
;
i
<=
GET_MAX_ENDPOINT
(
g_ucRelayTotalNum
);
i
++
){
if
(
kZclOnOffClusterServerOnOffGet
(
i
)
==
EOOS_ON
){
bIsAllOffFlg
=
false
;
break
;
}
}
SYSTEM_RESET
();
if
(
bIsAllOffFlg
==
true
){
if
(
kGetFactoryTestStatus
()
==
FTS_NORMAL
){
SYSTEM_RESET
();
}
}
if
(
kGetFactoryTestStatus
()
!=
FTS_NORMAL
){
kNwkJoiningStart
(
NWK_STEERING_TIMEOUT_MS
,
JoinCompleteCallback
);
}
}
}
static
bool
kClustePeriodReportCheckIsSet
(
uint8_t
endpoint
)
static
bool
kClustePeriodReportCheckIsSet
(
uint8_t
endpoint
)
{
{
...
@@ -278,12 +376,12 @@ void JoinCompleteCallback(NwkJoinCompltEnum nwkcomplt )
...
@@ -278,12 +376,12 @@ void JoinCompleteCallback(NwkJoinCompltEnum nwkcomplt )
switch
(
nwkcomplt
)
{
switch
(
nwkcomplt
)
{
case
(
EJC_JOIN_FAILED
):
case
(
EJC_JOIN_FAILED
):
{
{
LED_OPT_OFF
(
LED_ALL_ID
);
kSetLedStatus
(
LED_ALL_ID
);
kUserNetworkExitCompleteCallback
();
break
;
break
;
}
}
case
(
EJC_JOIN_SUCCEED
):
case
(
EJC_JOIN_SUCCEED
):
{
{
break
;
break
;
}
}
default:
break
;
default:
break
;
...
@@ -304,17 +402,35 @@ void kUserNetworkStatusNotify(NwkStatusEnum nwkst )
...
@@ -304,17 +402,35 @@ void kUserNetworkStatusNotify(NwkStatusEnum nwkst )
if
(
currentTimeMS
<
MIN_JOINED_NWK_DELAY_TIME_MS
){
if
(
currentTimeMS
<
MIN_JOINED_NWK_DELAY_TIME_MS
){
randTimeMS
=
kGetRandNum
(
RAND_MIN_NUM
,
RAND_MAX_NUM
);
randTimeMS
=
kGetRandNum
(
RAND_MIN_NUM
,
RAND_MAX_NUM
);
}
else
{
}
else
{
kLedOptTrigger
(
LED_ALL_ID
,
0
,
0
,
0
,
LED_OFF
,
LED_IGNORE
);
#ifdef SINGLE_LIGHT_PANEL
kPwmOptTrigger
(
PWM1_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
#endif
#ifdef DUAL_LIGHT_PANEL
kPwmOptTrigger
(
PWM2_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
kPwmOptTrigger
(
PWM1_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
#endif
#ifdef THREE_LIGHT_PANEL
kPwmOptTrigger
(
PWM3_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
kPwmOptTrigger
(
PWM2_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
kPwmOptTrigger
(
PWM1_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
#endif
#ifdef FOUR_LIGHT_PANEL
kPwmOptTrigger
(
PWM4_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
kPwmOptTrigger
(
PWM4_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
kPwmOptTrigger
(
PWM3_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
kPwmOptTrigger
(
PWM3_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
kPwmOptTrigger
(
PWM2_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
kPwmOptTrigger
(
PWM2_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
kPwmOptTrigger
(
PWM1_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
kPwmOptTrigger
(
PWM1_ID
,
PWM_TIMER_MAX_DUTY_CYCLE_NUM
,
0
,
5
*
1000
);
//kLedOptTrigger(LED_ALL_ID, 0, 0, 0, LED_OFF, LED_IGNORE);
#endif
}
}
if
(
kIsKonkeRemoteGateway
()
!=
true
){
if
(
kIsKonkeRemoteGateway
()
!=
true
){
g_bIsNotKonkeGatewayFirstReportedFlg
=
false
;
g_bIsNotKonkeGatewayFirstReportedFlg
=
false
;
kNwkScheduleTaskRegister
(
randTimeMS
);
}
}
kNwkScheduleTaskRegister
(
randTimeMS
);
iKonkeAfSelfPrint
(
"Joined Network RandTime(%dms) CurrentTime(%d)
\r\n
"
,
randTimeMS
,
currentTimeMS
);
iKonkeAfSelfPrint
(
"Joined Network RandTime(%dms) CurrentTime(%d)
\r\n
"
,
randTimeMS
,
currentTimeMS
);
break
;
break
;
}
}
...
@@ -328,7 +444,7 @@ void kUserNetworkStatusNotify(NwkStatusEnum nwkst )
...
@@ -328,7 +444,7 @@ void kUserNetworkStatusNotify(NwkStatusEnum nwkst )
{
{
iKonkeAfSelfPrint
(
"#####Enter Leave
\r\n
"
);
iKonkeAfSelfPrint
(
"#####Enter Leave
\r\n
"
);
kLedOptTrigger
((
uint8_t
)
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
\
kLedOptTrigger
((
uint8_t
)
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
\
,
LED_FAST_BLINK_CONTINUE_TIME_MS
/
(
LED_FAST_BLINK_ON_TIME_MS
+
LED_FAST_BLINK_O
N
_TIME_MS
),
LED_ON
,
LED_IGNORE
);
,
LED_FAST_BLINK_CONTINUE_TIME_MS
/
(
LED_FAST_BLINK_ON_TIME_MS
+
LED_FAST_BLINK_O
FF
_TIME_MS
),
LED_ON
,
LED_IGNORE
);
//关闭勿扰模式
//关闭勿扰模式
kSetIndicatorNotDisturbModeFlg
(
false
);
kSetIndicatorNotDisturbModeFlg
(
false
);
...
@@ -386,9 +502,10 @@ uint8_t Key_Press_Test_Flag[5] = {0};
...
@@ -386,9 +502,10 @@ uint8_t Key_Press_Test_Flag[5] = {0};
void
kUserButtonAcitonCallback
(
unsigned
char
button_id
,
BtnActionEnum
action
)
void
kUserButtonAcitonCallback
(
unsigned
char
button_id
,
BtnActionEnum
action
)
{
{
iKonkeAfSelfPrint
(
"kUserButton: ButtonId(%d), Action(%d),%d
\r\n
"
,
button_id
,
action
,
kGetFactoryTestStatus
());
iKonkeAfSelfPrint
(
"kUserButton: ButtonId(%d), Action(%d),%d
\r\n
"
,
button_id
,
action
,
kGetFactoryTestStatus
());
kOptTunneCheckNodeIdIsChangedReport
();
if
(
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
if
(
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_WAITING
\
||
kGetFactoryTestStatus
()
==
FTS_
WAITING_RELEASED
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_
WAITING_SECOND_PRESS
\
||
kGetFactoryTestStatus
()
==
FTS_WAITING_SECOND_PRESS
\
||
kNwkIsExiting
()
==
true
){
||
kNwkIsExiting
()
==
true
){
//未老化完成,单击按键不操作继电器
//未老化完成,单击按键不操作继电器
return
;
return
;
...
@@ -401,17 +518,29 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -401,17 +518,29 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
{
{
case
EBA_CLICK
:
case
EBA_CLICK
:
{
{
iKonkeAfSelfPrint
(
"SYS_ID!!!!!! kNwkGetCurrentStatus = %d,kInterPanGetEnableStatus = %d
\r\n
"
,
\
kNwkGetCurrentStatus
(),
kInterPanGetEnableStatus
(),
power_on_sync
[
0
],
power_on_sync
[
1
],
power_on_sync
[
2
],
power_on_sync
[
3
]);
Key_Press_Test_Flag
[
0
]
=
1
;
Key_Press_Test_Flag
[
0
]
=
1
;
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
)
{
// report connected!
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
)
{
// report connected!
iKonkeAfSelfPrint
(
"Is Online...........
\r\n
"
);
if
(
kLedIsBlinking
(
LED_ALL_ID
)
!=
true
)
if
(
kLedIsBlinking
(
LED_ALL_ID
)
!=
true
)
kLedOptTrigger
(
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
1
,
LED_ON
,
LED_OFF
);
kLedOptTrigger
(
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
1
,
LED_ON
,
LED_OFF
);
kOptTunnelOODReport
(
0
,
0XCD
,
NULL
,
0
);
if
(
kIsKonkeRemoteGateway
()
==
true
){
kOptTunnelOODReport
(
0
,
0XCD
,
NULL
,
0
);
}
}
}
else
if
(
kNwkGetCurrentStatus
()
==
ENS_LEAVED
)
else
if
(
kNwkGetCurrentStatus
()
==
ENS_LEAVED
)
{
{
kNwkFactoryReset
(
false
);
if
(
kGetFactoryTestStatus
()
==
FTS_SINGLE_BOARD_TEST
){
kNwkJoiningStart
(
NWK_STEERING_TIMEOUT_MS
,
JoinCompleteCallback
);
//开启组网
if
(
kLedIsBlinking
(
LED_ALL_ID
)
!=
true
){
kLedOptTrigger
(
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
10
,
LED_ON
,
LED_OFF
);
iKonkeAfSelfPrint
(
"######FTS_SINGLE_BOARD_TEST Blinking 10 times######
\r\n
"
);
}
}
else
{
kNwkFactoryReset
(
false
);
iKonkeAfSelfPrint
(
"Start Joining...........
\r\n
"
);
kNwkJoiningStart
(
NWK_STEERING_TIMEOUT_MS
,
JoinCompleteCallback
);
}
}
}
}
}
break
;
break
;
...
@@ -419,6 +548,10 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -419,6 +548,10 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
{
{
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
)
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
)
{
{
if
(
kGetInterpanEnableFlg
()
==
true
){
iKonkeAfSelfPrint
(
"Close Interpan...........
\r\n
"
);
kInterpanDisable
();
}
kNwkFactoryReset
(
true
);
kNwkFactoryReset
(
true
);
iKonkeAfSelfPrint
(
"Start Leave...........
\r\n
"
);
iKonkeAfSelfPrint
(
"Start Leave...........
\r\n
"
);
}
}
...
@@ -436,7 +569,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -436,7 +569,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
iKonkeAfSelfPrint
(
"KEY 1 PRESS!!!
\r\n
"
);
iKonkeAfSelfPrint
(
"KEY 1 PRESS!!!
\r\n
"
);
Key_Press_Test_Flag
[
1
]
=
1
;
Key_Press_Test_Flag
[
1
]
=
1
;
OnOffCtrlEnum
state
=
kZclOnOffClusterServerOnOffGet
(
1
)
?
EOOC_OFF
:
EOOC_ON
;
OnOffCtrlEnum
state
=
kZclOnOffClusterServerOnOffGet
(
1
)
?
EOOC_OFF
:
EOOC_ON
;
kZclClusterSetPermitReportInfo
(
1
,
0x0006
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
1
,
0x0006
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
//afTest_dataSendDemo();
//afTest_dataSendDemo();
kZclOnOffClusterServerOnOffControl
(
1
,
state
);
kZclOnOffClusterServerOnOffControl
(
1
,
state
);
}
else
if
(
action
==
EBA_LONGPRESS
){
}
else
if
(
action
==
EBA_LONGPRESS
){
...
@@ -445,6 +578,15 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -445,6 +578,15 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
return
;
return
;
}
}
if
(
kGetFactoryTestStatus
()
==
FTS_SINGLE_BOARD_TEST
){
if
(
kNwkGetCurrentStatus
()
==
ENS_LEAVED
)
{
// report connected!
if
(
kLedIsBlinking
(
LED_ALL_ID
)
!=
true
){
kLedOptTrigger
(
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
10
,
LED_ON
,
LED_OFF
);
iKonkeAfSelfPrint
(
"######FTS_SINGLE_BOARD_TEST Blinking 10 times######
\r\n
"
);
}
}
}
static
bool
firstLongPressFlg
=
false
;
static
bool
firstLongPressFlg
=
false
;
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
){
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
){
static
uint32_t
lastTimeMS
=
0
;
static
uint32_t
lastTimeMS
=
0
;
...
@@ -453,9 +595,9 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -453,9 +595,9 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
||
(
currentTimeMS
-
lastTimeMS
>=
MAX_FIRST_USER_KEY_LEAVE_NWK_INTERVAL_TIME_MS
)){
||
(
currentTimeMS
-
lastTimeMS
>=
MAX_FIRST_USER_KEY_LEAVE_NWK_INTERVAL_TIME_MS
)){
firstLongPressFlg
=
true
;
firstLongPressFlg
=
true
;
lastTimeMS
=
currentTimeMS
;
lastTimeMS
=
currentTimeMS
;
if
(
kGetOTAStatus
()
==
OTA_NORMAL
){
/*if ( kGetOTAStatus() == OTA_NORMAL){*/
kLedOptTrigger
(
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
1
,
LED_ON
,
LED_OFF
);
kLedOptTrigger
(
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
1
,
LED_ON
,
LED_OFF
);
}
/*}*/
}
else
{
}
else
{
//second times long press
//second times long press
if
(
currentTimeMS
-
lastTimeMS
<
MAX_FIRST_USER_KEY_LEAVE_NWK_INTERVAL_TIME_MS
){
if
(
currentTimeMS
-
lastTimeMS
<
MAX_FIRST_USER_KEY_LEAVE_NWK_INTERVAL_TIME_MS
){
...
@@ -485,7 +627,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -485,7 +627,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
iKonkeAfSelfPrint
(
"KEY 2 PRESS!!!
\r\n
"
);
iKonkeAfSelfPrint
(
"KEY 2 PRESS!!!
\r\n
"
);
Key_Press_Test_Flag
[
2
]
=
1
;
Key_Press_Test_Flag
[
2
]
=
1
;
OnOffCtrlEnum
state
=
kZclOnOffClusterServerOnOffGet
(
2
)
?
EOOC_OFF
:
EOOC_ON
;
OnOffCtrlEnum
state
=
kZclOnOffClusterServerOnOffGet
(
2
)
?
EOOC_OFF
:
EOOC_ON
;
kZclClusterSetPermitReportInfo
(
2
,
0x0006
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
2
,
0x0006
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kZclOnOffClusterServerOnOffControl
(
2
,
state
);
kZclOnOffClusterServerOnOffControl
(
2
,
state
);
}
}
break
;
break
;
...
@@ -497,7 +639,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -497,7 +639,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
iKonkeAfSelfPrint
(
"KEY 3 PRESS!!!
\r\n
"
);
iKonkeAfSelfPrint
(
"KEY 3 PRESS!!!
\r\n
"
);
Key_Press_Test_Flag
[
3
]
=
1
;
Key_Press_Test_Flag
[
3
]
=
1
;
OnOffCtrlEnum
state
=
kZclOnOffClusterServerOnOffGet
(
3
)
?
EOOC_OFF
:
EOOC_ON
;
OnOffCtrlEnum
state
=
kZclOnOffClusterServerOnOffGet
(
3
)
?
EOOC_OFF
:
EOOC_ON
;
kZclClusterSetPermitReportInfo
(
3
,
0x0006
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
3
,
0x0006
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kZclOnOffClusterServerOnOffControl
(
3
,
state
);
kZclOnOffClusterServerOnOffControl
(
3
,
state
);
}
}
break
;
break
;
...
@@ -509,7 +651,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -509,7 +651,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
iKonkeAfSelfPrint
(
"KEY 4 PRESS!!!
\r\n
"
);
iKonkeAfSelfPrint
(
"KEY 4 PRESS!!!
\r\n
"
);
Key_Press_Test_Flag
[
4
]
=
1
;
Key_Press_Test_Flag
[
4
]
=
1
;
OnOffCtrlEnum
state
=
kZclOnOffClusterServerOnOffGet
(
4
)
?
EOOC_OFF
:
EOOC_ON
;
OnOffCtrlEnum
state
=
kZclOnOffClusterServerOnOffGet
(
4
)
?
EOOC_OFF
:
EOOC_ON
;
kZclClusterSetPermitReportInfo
(
4
,
0x0006
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
4
,
0x0006
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kZclOnOffClusterServerOnOffControl
(
4
,
state
);
kZclOnOffClusterServerOnOffControl
(
4
,
state
);
}
}
break
;
break
;
...
@@ -523,9 +665,14 @@ void kUserRelayLedCallback(RelayStatusSt status)
...
@@ -523,9 +665,14 @@ void kUserRelayLedCallback(RelayStatusSt status)
{
{
iKonkeAfSelfPrint
(
"#########kUserZaLedCallback channel(%d) opt(%d)
\r\n
"
,
status
.
u8RelayChannelId
,
status
.
opt
);
iKonkeAfSelfPrint
(
"#########kUserZaLedCallback channel(%d) opt(%d)
\r\n
"
,
status
.
u8RelayChannelId
,
status
.
opt
);
if
(
/*kPwmIsChanging(PWM1_ID) == true ||*/
kLedIsBlinking
(
LED_ALL_ID
)
==
true
\
if
(
kPwmIsChanging
(
PWM1_ID
)
==
true
||
kLedIsBlinking
(
LED_ALL_ID
)
==
true
\
||
kNwkGetCurrentStatus
()
==
ENS_JOINING
)
||
kNwkGetCurrentStatus
()
==
ENS_JOINING
)
{
{
if
(
kLedIsBlinking
(
LED_ALL_ID
)){
for
(
uint8_t
i
=
0
;
i
<
g_ucRelayTotalNum
;
i
++
)
if
(
power_on_sync
[
i
])
power_on_sync
[
i
]
=
false
;
}
return
;
return
;
}
}
...
@@ -535,8 +682,8 @@ void kUserRelayLedCallback(RelayStatusSt status)
...
@@ -535,8 +682,8 @@ void kUserRelayLedCallback(RelayStatusSt status)
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
||
power_on_sync
[
0
]
==
true
\
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
||
power_on_sync
[
0
]
==
true
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_WAITING
\
||
kGetFactoryTestStatus
()
==
FTS_
WAITING_RELEASED
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_
WAITING_SECOND_PRESS
){
||
kGetFactoryTestStatus
()
==
FTS_WAITING_SECOND_PRESS
){
power_on_sync
[
0
]
=
false
;
power_on_sync
[
0
]
=
false
;
if
(
status
.
opt
==
EZAO_OFF
){
if
(
status
.
opt
==
EZAO_OFF
){
kLEDOffAction
(
LED1_ID
);
kLEDOffAction
(
LED1_ID
);
...
@@ -557,8 +704,8 @@ void kUserRelayLedCallback(RelayStatusSt status)
...
@@ -557,8 +704,8 @@ void kUserRelayLedCallback(RelayStatusSt status)
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
||
power_on_sync
[
1
]
==
true
\
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
||
power_on_sync
[
1
]
==
true
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_WAITING
\
||
kGetFactoryTestStatus
()
==
FTS_
WAITING_RELEASED
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_
WAITING_SECOND_PRESS
){
||
kGetFactoryTestStatus
()
==
FTS_WAITING_SECOND_PRESS
){
power_on_sync
[
1
]
=
false
;
power_on_sync
[
1
]
=
false
;
if
(
status
.
opt
==
EZAO_OFF
){
if
(
status
.
opt
==
EZAO_OFF
){
kLEDOffAction
(
LED2_ID
);
kLEDOffAction
(
LED2_ID
);
...
@@ -579,8 +726,8 @@ void kUserRelayLedCallback(RelayStatusSt status)
...
@@ -579,8 +726,8 @@ void kUserRelayLedCallback(RelayStatusSt status)
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
||
power_on_sync
[
2
]
==
true
\
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
||
power_on_sync
[
2
]
==
true
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_WAITING
\
||
kGetFactoryTestStatus
()
==
FTS_
WAITING_RELEASED
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_
WAITING_SECOND_PRESS
){
||
kGetFactoryTestStatus
()
==
FTS_WAITING_SECOND_PRESS
){
power_on_sync
[
2
]
=
false
;
power_on_sync
[
2
]
=
false
;
if
(
status
.
opt
==
EZAO_OFF
){
if
(
status
.
opt
==
EZAO_OFF
){
kLEDOffAction
(
LED3_ID
);
kLEDOffAction
(
LED3_ID
);
...
@@ -601,8 +748,8 @@ void kUserRelayLedCallback(RelayStatusSt status)
...
@@ -601,8 +748,8 @@ void kUserRelayLedCallback(RelayStatusSt status)
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
||
power_on_sync
[
3
]
==
true
\
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
||
power_on_sync
[
3
]
==
true
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_WAITING
\
||
kGetFactoryTestStatus
()
==
FTS_
WAITING_RELEASED
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_
WAITING_SECOND_PRESS
){
||
kGetFactoryTestStatus
()
==
FTS_WAITING_SECOND_PRESS
){
power_on_sync
[
3
]
=
false
;
power_on_sync
[
3
]
=
false
;
if
(
status
.
opt
==
EZAO_OFF
){
if
(
status
.
opt
==
EZAO_OFF
){
kLEDOffAction
(
LED4_ID
);
kLEDOffAction
(
LED4_ID
);
...
@@ -648,7 +795,7 @@ void kUserPwmActionDoneCallback(unsigned char id, PwmGradientDirectionEnum opt)
...
@@ -648,7 +795,7 @@ void kUserPwmActionDoneCallback(unsigned char id, PwmGradientDirectionEnum opt)
}
}
//ota升级失败或入网成功和失败后LED闪烁完成后处理,需要根据不同产品来修改
//ota升级失败或入网成功和失败后LED闪烁完成后处理,需要根据不同产品来修改
static
void
kSetLedStatus
(
LED_ID_ENUM
id
)
void
kSetLedStatus
(
LED_ID_ENUM
id
)
{
{
if
(
id
!=
LED_ALL_ID
){
if
(
id
!=
LED_ALL_ID
){
kPwmClearGradientCounterById
(
id
-
1
);
kPwmClearGradientCounterById
(
id
-
1
);
...
@@ -661,6 +808,7 @@ static void kSetLedStatus(LED_ID_ENUM id)
...
@@ -661,6 +808,7 @@ static void kSetLedStatus(LED_ID_ENUM id)
//恢复继电器的LED状态
//恢复继电器的LED状态
if
(
id
==
LED_ALL_ID
)
if
(
id
==
LED_ALL_ID
)
{
{
iKonkeAfSelfPrint
(
"##########kSetLedStatus LED_ALL_ID111111111111111111
\r\n
"
);
kLedOptTrigger
(
LED_ALL_ID
,
0
,
0
,
0
,
LED_OFF
,
LED_IGNORE
);
kLedOptTrigger
(
LED_ALL_ID
,
0
,
0
,
0
,
LED_OFF
,
LED_IGNORE
);
for
(
uint8_t
i
=
1
;
i
<=
Support_Endpoint_Num
;
i
++
){
for
(
uint8_t
i
=
1
;
i
<=
Support_Endpoint_Num
;
i
++
){
if
(
kLedIsBlinking
(
GET_LED_ID_BY_ENDPOINT
(
i
,
Support_Endpoint_Num
))
==
false
){
if
(
kLedIsBlinking
(
GET_LED_ID_BY_ENDPOINT
(
i
,
Support_Endpoint_Num
))
==
false
){
...
@@ -692,13 +840,11 @@ s32 kUserScheduleTaskHandler(void *arg)
...
@@ -692,13 +840,11 @@ s32 kUserScheduleTaskHandler(void *arg)
}
else
{
}
else
{
if
(
cluster_obj_list
[
0
].
cluster
!=
CLUSTER_UNKNOW
){
if
(
cluster_obj_list
[
0
].
cluster
!=
CLUSTER_UNKNOW
){
if
(
cluster_obj_list
[
0
].
cluster
==
ZCL_CLUSTER_GEN_POWER_CFG
){
if
(
cluster_obj_list
[
0
].
cluster
==
ZCL_CLUSTER_GEN_POWER_CFG
){
//kBatteryMonitorReadADC(true);
}
else
{
}
else
{
//add by maozj 20200512 report on off status
if
((
g_bIsNotKonkeGatewayFirstReportedFlg
)
&&
kClustePeriodReportCheckIsSet
(
g_u8CurrentHeartEndpoint
)
==
true
){
if
((
g_bIsNotKonkeGatewayFirstReportedFlg
)
&&
kClustePeriodReportCheckIsSet
(
g_u8CurrentHeartEndpoint
)
==
true
){
//网关设置过report interval,使用SDK的report
//网关设置过report interval,使用SDK的report
//kNwkScheduleTaskStop(SCHEDULE_ALLOPT_ID);
}
else
{
}
else
{
kZclClusterSetPermitReportInfo
(
g_u8CurrentHeartEndpoint
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
//情景需要加
kOptTunnelReportingPlagiarizeOriginal
(
g_u8CurrentHeartEndpoint
,
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
);
kOptTunnelReportingPlagiarizeOriginal
(
g_u8CurrentHeartEndpoint
,
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
);
}
}
}
}
...
@@ -719,23 +865,23 @@ s32 kUserScheduleTaskHandler(void *arg)
...
@@ -719,23 +865,23 @@ s32 kUserScheduleTaskHandler(void *arg)
//LED闪烁完成,可以用来恢复继电器的LED状态
//LED闪烁完成,可以用来恢复继电器的LED状态
void
kUserLedActionDoneCallback
(
unsigned
char
id
)
void
kUserLedActionDoneCallback
(
unsigned
char
id
)
{
{
iKonkeAfSelfPrint
(
"##############kUserLedActionDoneCallback id(%d)nwk(%d)##################
\r\n
"
,
id
,
kNwkGetCurrentStatus
());
iKonkeAfSelfPrint
(
"##############kUserLedActionDoneCallback id(%d)nwk(%d)##################
\r\n
"
,
id
,
kNwkGetCurrentStatus
());
kSetLedStatus
(
id
);
kSetLedStatus
(
id
);
}
}
//网关场景控制下发后的属性延时上报处理,可以根据不同场景cluster修改
//网关场景控制下发后的属性延时上报处理,可以根据不同场景cluster修改
/* DESP: recall scene rand delay report Attribute set
/* DESP: recall scene rand delay report Attribute set
* Auth: maozj.20191224.
* Auth: maozj.20191224.
* */
* */
void
kZclClusterRecallSceneCallback
(
uint8_t
endpoint
,
uint16_t
cluster
,
uint8_t
command_id
,
bool
reportEnable
,
bool
sceneRecallFlg
)
void
kZclClusterRecallSceneCallback
(
uint8_t
endpoint
,
uint16_t
cluster
,
uint8_t
command_id
,
bool
reportEnable
,
bool
sceneRecallFlg
,
\
bool
reportGatewayEnable
,
bool
reportChildDeviceEnable
,
void
*
param
)
{
{
iKonkeAfSelfPrint
(
"####kZclClusterRecallSceneCallback ep(%d)cluster(%d)command_id(%d),reportEnable(%d),sceneRecallFlg(%d)
\r\n
"
);
iKonkeAfSelfPrint
(
"####kZclClusterRecallSceneCallback ep(%d)cluster(%d)command_id(%d),reportEnable(%d),sceneRecallFlg(%d)
\r\n
"
);
if
((
cluster
==
ZCL_CLUSTER_GEN_ON_OFF
)
&&
(
command_id
==
ZCL_CMD_SCENE_RECALL_SCENE
))
if
((
cluster
==
ZCL_CLUSTER_GEN_ON_OFF
)
&&
(
command_id
==
ZCL_CMD_SCENE_RECALL_SCENE
))
{
{
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_CLUSTER_GEN_ON_OFF
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_CLUSTER_GEN_ON_OFF
,
false
,
true
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
}
}
}
}
static
ev_timer_event_t
*
kEndpoint1DelayReport
=
NULL
;
static
ev_timer_event_t
*
kEndpoint1DelayReport
=
NULL
;
static
ev_timer_event_t
*
kEndpoint2DelayReport
=
NULL
;
static
ev_timer_event_t
*
kEndpoint2DelayReport
=
NULL
;
static
ev_timer_event_t
*
kEndpoint3DelayReport
=
NULL
;
static
ev_timer_event_t
*
kEndpoint3DelayReport
=
NULL
;
...
@@ -743,28 +889,28 @@ static ev_timer_event_t *kEndpoint4DelayReport = NULL;
...
@@ -743,28 +889,28 @@ static ev_timer_event_t *kEndpoint4DelayReport = NULL;
static
s32
kEndpoint1DelayReportAttrEventHandler
(
void
*
arg
)
static
s32
kEndpoint1DelayReportAttrEventHandler
(
void
*
arg
)
{
{
iKonkeAfSelfPrint
(
"######kEndpoint1DelayReportAttrEventHandler
\r\n
"
);
iKonkeAfSelfPrint
(
"######kEndpoint1DelayReportAttrEventHandler
\r\n
"
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kOptTunnelReportingPlagiarizeOriginal
(
1
,
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
);
kOptTunnelReportingPlagiarizeOriginal
(
1
,
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
);
return
-
1
;
return
-
1
;
}
}
static
s32
kEndpoint2DelayReportAttrEventHandler
(
void
*
arg
)
static
s32
kEndpoint2DelayReportAttrEventHandler
(
void
*
arg
)
{
{
iKonkeAfSelfPrint
(
"######kEndpoint2DelayReportAttrEventHandler
\r\n
"
);
iKonkeAfSelfPrint
(
"######kEndpoint2DelayReportAttrEventHandler
\r\n
"
);
kZclClusterSetPermitReportInfo
(
2
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
2
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kOptTunnelReportingPlagiarizeOriginal
(
2
,
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
);
kOptTunnelReportingPlagiarizeOriginal
(
2
,
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
);
return
-
1
;
return
-
1
;
}
}
static
s32
kEndpoint3DelayReportAttrEventHandler
(
void
*
arg
)
static
s32
kEndpoint3DelayReportAttrEventHandler
(
void
*
arg
)
{
{
iKonkeAfSelfPrint
(
"######kEndpoint3DelayReportAttrEventHandler
\r\n
"
);
iKonkeAfSelfPrint
(
"######kEndpoint3DelayReportAttrEventHandler
\r\n
"
);
kZclClusterSetPermitReportInfo
(
3
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
3
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kOptTunnelReportingPlagiarizeOriginal
(
3
,
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
);
kOptTunnelReportingPlagiarizeOriginal
(
3
,
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
);
return
-
1
;
return
-
1
;
}
}
static
s32
kEndpoint4DelayReportAttrEventHandler
(
void
*
arg
)
static
s32
kEndpoint4DelayReportAttrEventHandler
(
void
*
arg
)
{
{
iKonkeAfSelfPrint
(
"######kEndpoint4DelayReportAttrEventHandler
\r\n
"
);
iKonkeAfSelfPrint
(
"######kEndpoint4DelayReportAttrEventHandler
\r\n
"
);
kZclClusterSetPermitReportInfo
(
4
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
4
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kOptTunnelReportingPlagiarizeOriginal
(
4
,
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
);
kOptTunnelReportingPlagiarizeOriginal
(
4
,
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_ATTRID_ONOFF
);
return
-
1
;
return
-
1
;
}
}
...
@@ -776,8 +922,9 @@ bool kZclClusterReportChangeCallback(uint8_t endpoint, uint16_t clusterId, uint1
...
@@ -776,8 +922,9 @@ bool kZclClusterReportChangeCallback(uint8_t endpoint, uint16_t clusterId, uint1
{
{
ZclReportTableSt
zclReportInfo
;
ZclReportTableSt
zclReportInfo
;
bool
status
=
kZclClusterGetPermitReportInfo
(
endpoint
,
clusterId
,
&
zclReportInfo
);
bool
status
=
kZclClusterGetPermitReportInfo
(
endpoint
,
clusterId
,
&
zclReportInfo
);
iKonkeAfSelfPrint
(
"######kZclClusterReportChangeCallback
status(%d)ep(%d)enable(%d)scene
(%d)
\r\n
"
,
iKonkeAfSelfPrint
(
"######kZclClusterReportChangeCallback
111111111 status(%d)ep(%d)Reportenable(%d)sceneRecall
(%d)
\r\n
"
,
status
,
endpoint
,
zclReportInfo
.
reportEnable
,
zclReportInfo
.
sceneRecallFlg
);
status
,
endpoint
,
zclReportInfo
.
reportEnable
,
zclReportInfo
.
sceneRecallFlg
);
//不直接上报,随机延时上报
if
(
status
==
true
){
if
(
status
==
true
){
if
(
zclReportInfo
.
reportEnable
!=
true
&&
zclReportInfo
.
sceneRecallFlg
==
true
){
if
(
zclReportInfo
.
reportEnable
!=
true
&&
zclReportInfo
.
sceneRecallFlg
==
true
){
uint32_t
randDelayTimeMS
=
kGetRandNum
(
REPORT_ATTR_MIN_RAND_NUM
,
REPORT_ATTR_MAX_RAND_NUM
);
uint32_t
randDelayTimeMS
=
kGetRandNum
(
REPORT_ATTR_MIN_RAND_NUM
,
REPORT_ATTR_MAX_RAND_NUM
);
...
@@ -796,17 +943,9 @@ bool kZclClusterReportChangeCallback(uint8_t endpoint, uint16_t clusterId, uint1
...
@@ -796,17 +943,9 @@ bool kZclClusterReportChangeCallback(uint8_t endpoint, uint16_t clusterId, uint1
}
}
else
if
(
endpoint
==
4
){
else
if
(
endpoint
==
4
){
if
(
!
ev_timer_exist
(
kEndpoint4DelayReport
))
{
if
(
!
ev_timer_exist
(
kEndpoint4DelayReport
))
{
kEndpoint
3
DelayReport
=
TL_ZB_TIMER_SCHEDULE
(
kEndpoint4DelayReportAttrEventHandler
,
NULL
,
randDelayTimeMS
);
kEndpoint
4
DelayReport
=
TL_ZB_TIMER_SCHEDULE
(
kEndpoint4DelayReportAttrEventHandler
,
NULL
,
randDelayTimeMS
);
}
}
}
}
//有多控绑定发给其它子设备, 不发给网关
// if( kZclNodeIsBindNotGatewayIeeeAddress(endpoint, ZCL_ON_OFF_CLUSTER_ID) == true) {
// iKonkeAfSelfPrint("Multi Control\r\n");
// kZclClusterSetPermitReportInfo(endpoint, true, false, false, true);
// kOptTunnelReportingPlagiarizeOriginal(endpoint, ZCL_ON_OFF_CLUSTER_ID, ZCL_ON_OFF_ATTRIBUTE_ID, CLUSTER_MASK_SERVER);
// //kZclClusterConditionallySendReport(endpoint, ZCL_ON_OFF_CLUSTER_ID, false, true);
// }
//不直接上报,随机延时上报
return
false
;
return
false
;
}
}
else
if
(
!
zclReportInfo
.
reportEnable
)
else
if
(
!
zclReportInfo
.
reportEnable
)
...
@@ -814,10 +953,11 @@ bool kZclClusterReportChangeCallback(uint8_t endpoint, uint16_t clusterId, uint1
...
@@ -814,10 +953,11 @@ bool kZclClusterReportChangeCallback(uint8_t endpoint, uint16_t clusterId, uint1
return
false
;
return
false
;
}
}
}
}
iKonkeAfSelfPrint
(
"reporting disable11111111111111111111111111111111
\r\n
"
);
return
true
;
return
true
;
}
}
//Auth: han_frc.20220105.
kk_err_t
kUserOODMessageIncoming
(
uint8_t
channel
,
uint8_t
opcode
,
uint8_t
args_in_out
[],
uint8_t
*
length_in_out
)
kk_err_t
kUserOODMessageIncoming
(
uint8_t
channel
,
uint8_t
opcode
,
uint8_t
args_in_out
[],
uint8_t
*
length_in_out
)
{
{
if
(
NULL
==
args_in_out
||
NULL
==
length_in_out
)
{
if
(
NULL
==
args_in_out
||
NULL
==
length_in_out
)
{
...
@@ -831,59 +971,224 @@ kk_err_t kUserOODMessageIncoming(uint8_t channel, uint8_t opcode, uint8_t args_i
...
@@ -831,59 +971,224 @@ kk_err_t kUserOODMessageIncoming(uint8_t channel, uint8_t opcode, uint8_t args_i
iKonkeAfSelfPrint
(
"--------------------------------------
\r\n
"
);
iKonkeAfSelfPrint
(
"--------------------------------------
\r\n
"
);
switch
(
opcode
)
{
switch
(
opcode
)
{
case
(
0x00
):
// get the device snap.
case
(
0x00
):
// get the device snap.
{
{
uint8_t
command
=
args_in_out
[
0
];
if
(
command
==
0x00
){
OnOffStatusEnum
status1
=
kZclOnOffClusterServerOnOffGet
(
1
);
OnOffStatusEnum
status2
=
kZclOnOffClusterServerOnOffGet
(
2
);
OnOffStatusEnum
status3
=
kZclOnOffClusterServerOnOffGet
(
3
);
#ifdef FOUR_LIGHT_PANEL
OnOffStatusEnum
status4
=
kZclOnOffClusterServerOnOffGet
(
4
);
#endif
uint8_t
channelValue1
=
(
status1
==
EOOS_ON
)
?
1
:
(
status1
==
EOOS_UNKNOW
?
0xFF
:
0
);
uint8_t
channelValue2
=
(
status2
==
EOOS_ON
)
?
1
:
(
status2
==
EOOS_UNKNOW
?
0xFF
:
0
);
uint8_t
channelValue3
=
(
status3
==
EOOS_ON
)
?
1
:
(
status3
==
EOOS_UNKNOW
?
0xFF
:
0
);
#ifdef FOUR_LIGHT_PANEL
uint8_t
channelValue4
=
(
status4
==
EOOS_ON
)
?
1
:
(
status4
==
EOOS_UNKNOW
?
0xFF
:
0
);
#endif
if
(
g_ucRelayTotalNum
==
1
){
channelValue2
=
0xff
;
//0xff为私有协议中无效值
channelValue3
=
0xff
;
}
else
if
(
g_ucRelayTotalNum
==
2
){
channelValue3
=
0xff
;
}
args_in_out
[
0
]
=
0x00
;
args_in_out
[
0
]
=
0x00
;
args_in_out
[
1
]
=
kZclOnOffClusterServerOnOffGet
(
1
);
args_in_out
[
1
]
=
channelValue1
;
args_in_out
[
2
]
=
kZclOnOffClusterServerOnOffGet
(
2
);
args_in_out
[
2
]
=
channelValue2
;
args_in_out
[
3
]
=
kZclOnOffClusterServerOnOffGet
(
3
);
args_in_out
[
3
]
=
channelValue3
;
args_in_out
[
4
]
=
kZclOnOffClusterServerOnOffGet
(
4
);
#ifndef FOUR_LIGHT_PANEL
args_in_out
[
4
]
=
kGetIndicatorNotDisturbModeFlg
();
iKonkeAfSelfPrint
(
"OOOOOOPCODE: 1(%d), 2(%d), 3(%d)
\r\n
"
,
args_in_out
[
1
],
args_in_out
[
2
],
args_in_out
[
3
]);
*
length_in_out
=
5
;
#endif
#ifdef FOUR_LIGHT_PANEL
args_in_out
[
4
]
=
channelValue4
;
args_in_out
[
5
]
=
kGetIndicatorNotDisturbModeFlg
();
args_in_out
[
5
]
=
kGetIndicatorNotDisturbModeFlg
();
iKonkeAfSelfPrint
(
"OOOOOOPCODE: 1(%d), 2(%d), 3(%d)
,4(%d),5(%d)
\r\n
"
,
args_in_out
[
1
],
args_in_out
[
2
],
args_in_out
[
3
],
args_in_out
[
4
],
args_in_out
[
5
]);
iKonkeAfSelfPrint
(
"OOOOOOPCODE: 1(%d), 2(%d), 3(%d)
\r\n
"
,
args_in_out
[
1
],
args_in_out
[
2
],
args_in_out
[
3
]);
*
length_in_out
=
6
;
*
length_in_out
=
6
;
break
;
#endif
}
}
else
if
(
command
==
0x01
){
case
(
0xFE
):
args_in_out
[
0
]
=
ERR_NO_NONE
;
{
#ifndef FOUR_LIGHT_PANEL
//set disturb mode
OnOffCtrlEnum
onoffctrl
[
3
]
=
{
0
};
uint8_t
mode
=
args_in_out
[
0
];
onoffctrl
[
0
]
=
args_in_out
[
1
];
if
(
mode
!=
0x00
&&
mode
!=
0x01
){
onoffctrl
[
1
]
=
args_in_out
[
2
];
onoffctrl
[
2
]
=
args_in_out
[
3
];
uint8_t
disturb_mode
=
args_in_out
[
4
];
#endif
#ifdef FOUR_LIGHT_PANEL
OnOffCtrlEnum
onoffctrl
[
4
]
=
{
0
};
onoffctrl
[
0
]
=
args_in_out
[
1
];
onoffctrl
[
1
]
=
args_in_out
[
2
];
onoffctrl
[
2
]
=
args_in_out
[
3
];
onoffctrl
[
3
]
=
args_in_out
[
4
];
uint8_t
disturb_mode
=
args_in_out
[
5
];
#endif
for
(
uint8_t
channelID
=
1
;
channelID
<=
g_ucRelayTotalNum
;
channelID
++
){
if
(
kEndpointIsValid
(
channelID
)){
//通道有效
if
(
onoffctrl
[
channelID
-
1
]
!=
EOOC_OFF
&&
onoffctrl
[
channelID
-
1
]
!=
EOOC_ON
&&
onoffctrl
[
channelID
-
1
]
!=
EOOC_TOGGLE
){
args_in_out
[
0
]
=
ERR_NO_COMMAND_FORMAT
;
args_in_out
[
channelID
]
=
0xff
;
}
else
{
uint8_t
status
=
onoffctrl
[
channelID
-
1
];
if
(
onoffctrl
[
channelID
-
1
]
==
EOOC_TOGGLE
){
//对翻转需要转换成开/关
status
=
kZclOnOffClusterServerOnOffGet
(
channelID
)
==
EOOC_ON
?
EOOC_OFF
:
EOOC_ON
;
}
kZclClusterSetPermitReportInfo
(
channelID
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kZclOnOffClusterServerOnOffControl
(
channelID
,
status
);
args_in_out
[
channelID
]
=
status
;
}
}
else
{
args_in_out
[
channelID
]
=
0xff
;
}
}
if
(
disturb_mode
!=
0x00
&&
disturb_mode
!=
0x01
){
args_in_out
[
0
]
=
ERR_NO_COMMAND_FORMAT
;
args_in_out
[
0
]
=
ERR_NO_COMMAND_FORMAT
;
}
else
{
#ifndef FOUR_LIGHT_PANEL
args_in_out
[
4
]
=
0xff
;
#endif
#ifdef FOUR_LIGHT_PANEL
args_in_out
[
5
]
=
0xff
;
#endif
}
else
{
//存储勿扰标志
//存储勿扰标志
kSetIndicatorNotDisturbModeFlg
(
mode
);
kSetIndicatorNotDisturbModeFlg
(
disturb_
mode
);
////State Sync////
////State Sync////
if
(
kLedIsBlinking
(
LED_ALL_ID
)
!=
true
)
{
if
(
kLedIsBlinking
(
LED_ALL_ID
)
!=
true
)
{
kSetLedStatus
(
LED_ALL_ID
);
kSetLedStatus
(
LED_ALL_ID
);
}
}
#ifndef FOUR_LIGHT_PANEL
args_in_out
[
4
]
=
kGetIndicatorNotDisturbModeFlg
();
}
*
length_in_out
=
5
;
#endif
#ifdef FOUR_LIGHT_PANEL
args_in_out
[
5
]
=
kGetIndicatorNotDisturbModeFlg
();
}
*
length_in_out
=
6
;
#endif
iKonkeAfSelfPrint
(
"OOOOOOPCODE: 1(%d), 2(%d), 3(%d)
\r\n
"
,
args_in_out
[
1
],
args_in_out
[
2
],
args_in_out
[
3
]);
}
break
;
}
case
(
0x10
):
//on/off control
{
uint8_t
channelID
=
channel
;
uint8_t
onOffStatus
=
args_in_out
[
0
];
iKonkeAfSelfPrint
(
"OOOOPCODE ONOFF: channel[%d], onoff[%d]
\r\n
"
,
channelID
,
onOffStatus
);
if
(
kEndpointIsValid
(
channelID
)){
//通道有效
if
(
onOffStatus
!=
EOOC_OFF
&&
onOffStatus
!=
EOOC_ON
&&
onOffStatus
!=
EOOC_TOGGLE
){
args_in_out
[
0
]
=
ERR_NO_COMMAND_FORMAT
;
}
else
{
//下发值正确
args_in_out
[
0
]
=
ERR_NO_NONE
;
args_in_out
[
0
]
=
ERR_NO_NONE
;
if
(
channelID
!=
0xFF
){
//网关单路下发控制
uint8_t
status
=
onOffStatus
;
if
(
onOffStatus
==
EOOC_TOGGLE
){
//对翻转需要转换成开/关
status
=
kZclOnOffClusterServerOnOffGet
(
channelID
)
==
EOOC_ON
?
EOOC_OFF
:
EOOC_ON
;
}
kZclClusterSetPermitReportInfo
(
channelID
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
//commandOnOffClusterCallback(status, channelID, true, false);
kZclOnOffClusterServerOnOffControl
(
channelID
,
status
);
}
else
{
//全部
if
(
onOffStatus
==
EOOC_TOGGLE
){
//全部通道翻转
for
(
uint8_t
i
=
1
;
i
<=
GET_MAX_ENDPOINT
(
g_ucRelayTotalNum
);
i
++
){
kZclClusterSetPermitReportInfo
(
i
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kZclOnOffClusterServerOnOffControl
(
i
,
EOOC_TOGGLE
);
}
}
else
{
for
(
uint8_t
i
=
1
;
i
<=
GET_MAX_ENDPOINT
(
g_ucRelayTotalNum
);
i
++
){
kZclClusterSetPermitReportInfo
(
i
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kZclOnOffClusterServerOnOffControl
(
i
,
onOffStatus
);
}
}
}
}
}
iKonkeAfSelfPrint
(
"Disturb Mode(%d)
\r\n
"
,
mode
);
}
else
{
args_in_out
[
1
]
=
mode
;
args_in_out
[
0
]
=
ERR_NO_COMMAND_FORMAT
;
*
length_in_out
=
2
;
break
;
}
}
case
(
0xFF
):
{
args_in_out
[
1
]
=
onOffStatus
;
//下发命令
uint8_t
permitJoinTimeS
=
args_in_out
[
0
];
//unit:s
*
length_in_out
=
2
;
iKonkeAfSelfPrint
(
"###Opcode is channel(%d) JoinPermitTime(0x%X)!!
\r\n
"
,
channel
,
permitJoinTimeS
);
//iKonkeAfSelfPrintln("2.retStatus[%d], channel[%d], onoff[%d]",retStatus, channelID, onOffStatus);
//路由协同组网,黄灯闪烁(OTA升级)时不协同组网闪灯
break
;
if
(
kLedIsBlinking
(
LED_ALL_ID
)
!=
true
}
&&
permitJoinTimeS
!=
0
case
(
0xE4
):
&&
kNwkGetCurrentStatus
()
!=
ENS_JOINING
){
{
iKonkeAfSelfPrint
(
"####LED Blink
\r\n
"
);
uint8_t
u8NetworkSteering_ch
=
args_in_out
[
0
];
kLedOptTrigger
(
LED_ALL_ID
,
LED_SLOW_BLINK_ON_TIME_MS
,
LED_SLOW_BLINK_OFF_TIME_MS
,
uint16_t
u16NetworkSteering_panid
=
((
uint16_t
)
args_in_out
[
1
]
<<
8
)
|
((
uint16_t
)
args_in_out
[
2
]);
permitJoinTimeS
*
1000
/
(
LED_SLOW_BLINK_ON_TIME_MS
+
LED_SLOW_BLINK_OFF_TIME_MS
),
LED_ON
,
LED_OFF
);
}
else
if
(
kLedIsBlinking
(
LED2_ID
)
==
true
kSetNetworkSteeringInfo
(
u8NetworkSteering_ch
,
u16NetworkSteering_panid
);
&&
permitJoinTimeS
==
0
args_in_out
[
1
]
=
u8NetworkSteering_ch
;
&&
kNwkGetCurrentStatus
()
!=
ENS_JOINING
){
args_in_out
[
2
]
=
(
uint8_t
)(
u16NetworkSteering_panid
>>
8
);
kLedOptTrigger
(
LED_ALL_ID
,
0
,
0
,
0
,
LED_OFF
,
LED_IGNORE
);
args_in_out
[
3
]
=
(
uint8_t
)(
u16NetworkSteering_panid
);
// kLEDOffAction(LED_ALL_ID);
args_in_out
[
0
]
=
ERR_NO_NONE
;
if
(
kGetFactoryTestStatus
()
==
FTS_NORMAL
){
args_in_out
[
0
]
=
ERR_NO_COMMAND_FORMAT
;
}
*
length_in_out
=
4
;
break
;
}
case
(
0xE5
):
{
kSetAgingTestDone
();
args_in_out
[
0
]
=
ERR_NO_NONE
;
*
length_in_out
=
1
;
break
;
}
case
(
0xFE
):
{
//set disturb mode
uint8_t
mode
=
args_in_out
[
0
];
if
(
mode
!=
0x00
&&
mode
!=
0x01
){
args_in_out
[
0
]
=
ERR_NO_COMMAND_FORMAT
;
}
else
{
//存储勿扰标志
kSetIndicatorNotDisturbModeFlg
(
mode
);
////State Sync////
if
(
kLedIsBlinking
(
LED_ALL_ID
)
!=
true
)
{
kSetLedStatus
(
LED_ALL_ID
);
kSetLedStatus
(
LED_ALL_ID
);
}
}
return
KET_NO_RESPONS
E
;
args_in_out
[
0
]
=
ERR_NO_NON
E
;
}
}
iKonkeAfSelfPrint
(
"Disturb Mode(%d)
\r\n
"
,
mode
);
args_in_out
[
1
]
=
mode
;
*
length_in_out
=
2
;
break
;
}
case
(
0xFF
):
{
int8_t
permitJoinTimeS
=
args_in_out
[
0
];
//unit:s
iKonkeAfSelfPrint
(
"###Opcode is channel(%d) JoinPermitTime(0x%X)!!
\r\n
"
,
channel
,
permitJoinTimeS
);
//路由协同组网,黄灯闪烁(OTA升级)时不协同组网闪灯
if
(
kLedIsBlinking
(
LED_ALL_ID
)
!=
true
&&
permitJoinTimeS
!=
0
&&
kNwkGetCurrentStatus
()
!=
ENS_JOINING
){
iKonkeAfSelfPrint
(
"####LED Blink
\r\n
"
);
kLedOptTrigger
(
LED_ALL_ID
,
LED_SLOW_BLINK_ON_TIME_MS
,
LED_SLOW_BLINK_OFF_TIME_MS
,
permitJoinTimeS
*
1000
/
(
LED_SLOW_BLINK_ON_TIME_MS
+
LED_SLOW_BLINK_OFF_TIME_MS
),
LED_ON
,
LED_OFF
);
}
else
if
(
kLedIsBlinking
(
LED_ALL_ID
)
==
true
/*&& kGetOTAStatus() == OTA_NORMAL*/
&&
permitJoinTimeS
==
0
&&
kNwkGetCurrentStatus
()
!=
ENS_JOINING
){
iKonkeAfSelfPrint
(
"####LED Blink over
\r\n
"
);
kLedOptTrigger
(
LED_ALL_ID
,
0
,
0
,
0
,
LED_OFF
,
LED_IGNORE
);
// kLEDOffAction(LED_ALL_ID);
kSetLedStatus
(
LED_ALL_ID
);
}
return
KET_NO_RESPONSE
;
}
default:
{
default:
{
iKonkeAfSelfPrint
(
"Err: opcode is not exist(%d:%X)!!
\r\n
"
,
channel
,
opcode
);
iKonkeAfSelfPrint
(
"Err: opcode is not exist(%d:%X)!!
\r\n
"
,
channel
,
opcode
);
args_in_out
[
0
]
=
ERR_NO_OPCODE
;
args_in_out
[
0
]
=
ERR_NO_OPCODE
;
...
@@ -895,13 +1200,30 @@ kk_err_t kUserOODMessageIncoming(uint8_t channel, uint8_t opcode, uint8_t args_i
...
@@ -895,13 +1200,30 @@ kk_err_t kUserOODMessageIncoming(uint8_t channel, uint8_t opcode, uint8_t args_i
return
KET_OK
;
return
KET_OK
;
}
}
//Auth: han_frc.20220105.
static
bool
kEndpointIsValid
(
uint8_t
endpoint
)
{
bool
ret
=
false
;
if
(
endpoint
==
1
){
ret
=
true
;
}
else
if
(
endpoint
==
2
&&
(
g_ucRelayTotalNum
==
2
||
g_ucRelayTotalNum
==
3
||
g_ucRelayTotalNum
==
4
)){
ret
=
true
;
}
else
if
(
endpoint
==
3
&&
(
g_ucRelayTotalNum
==
3
||
g_ucRelayTotalNum
==
4
)){
ret
=
true
;
}
else
if
(
endpoint
==
4
&&
g_ucRelayTotalNum
==
4
){
ret
=
true
;
}
else
if
(
endpoint
==
0xFF
){
ret
=
true
;
}
return
ret
;
}
static
void
kLEDOffAction
(
LED_ID_ENUM
led_id
)
static
void
kLEDOffAction
(
LED_ID_ENUM
led_id
)
{
{
iKonkeAfSelfPrint
(
"LED_Off_Action LED_ID (%d).
\r\n
"
,
led_id
);
iKonkeAfSelfPrint
(
"LED_Off_Action LED_ID (%d).
\r\n
"
,
led_id
);
kLedOptTrigger
(
led_id
,
0
,
0
,
0
,
LED_OFF
,
LED_IGNORE
);
kLedOptTrigger
(
led_id
,
0
,
0
,
0
,
LED_OFF
,
LED_IGNORE
);
if
(
kGetIndicatorNotDisturbModeFlg
()
==
false
){
if
(
kGetIndicatorNotDisturbModeFlg
()
==
false
){
iKonkeAfSelfPrint
(
"is not NotDisturbMode.
\r\n
"
);
//
iKonkeAfSelfPrint("is not NotDisturbMode.\r\n");
switch
(
led_id
)
switch
(
led_id
)
{
{
case
LED1_ID
:
case
LED1_ID
:
...
@@ -926,10 +1248,27 @@ static void kLEDOffAction(LED_ID_ENUM led_id)
...
@@ -926,10 +1248,27 @@ static void kLEDOffAction(LED_ID_ENUM led_id)
}
}
case
LED_ALL_ID
:
case
LED_ALL_ID
:
{
{
#ifdef SINGLE_LIGHT_PANEL
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM1_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
#endif
#ifdef DUAL_LIGHT_PANEL
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM1_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM2_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
#endif
#ifdef THREE_LIGHT_PANEL
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM1_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM2_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM3_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
#endif
#ifdef FOUR_LIGHT_PANEL
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM1_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM1_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM2_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM2_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM3_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM3_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM4_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM4_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMinLevel
*
65535
)
/
100
));
#endif
break
;
break
;
}
}
default:
default:
...
@@ -968,10 +1307,27 @@ static void kLEDOnAction(LED_ID_ENUM led_id)
...
@@ -968,10 +1307,27 @@ static void kLEDOnAction(LED_ID_ENUM led_id)
}
}
case
LED_ALL_ID
:
case
LED_ALL_ID
:
{
{
#ifdef SINGLE_LIGHT_PANEL
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM1_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
#endif
#ifdef DUAL_LIGHT_PANEL
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM1_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM2_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
#endif
#ifdef THREE_LIGHT_PANEL
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM1_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM2_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM3_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
#endif
#ifdef FOUR_LIGHT_PANEL
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM1_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM1_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM2_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM2_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM3_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM3_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM4_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
kPwmDriverhandler
(
kPwmGetIndexByID
(
PWM4_ID
),
ELP_ANY
,
(
uint16_t
)(((
uint32_t
)
g_u8NoDisturbModeMaxLevel
*
65535
)
/
100
)
);
#endif
break
;
break
;
}
}
default:
default:
...
@@ -991,13 +1347,13 @@ s32 kkSystemSetUpEventHandler(void *arg )
...
@@ -991,13 +1347,13 @@ s32 kkSystemSetUpEventHandler(void *arg )
for
(
uint8_t
i
=
1
;
i
<=
Support_Endpoint_Num
;
i
++
){
for
(
uint8_t
i
=
1
;
i
<=
Support_Endpoint_Num
;
i
++
){
if
(
st
==
NV_SUCC
)
if
(
st
==
NV_SUCC
)
{
{
relayStatusBuffer
[
i
-
1
]
=
g_zcl_onOffAttrs
[
i
-
1
].
onOff
;
relayStatusBuffer
[
i
-
1
]
=
false
;
}
}
power_on_sync
[
i
-
1
]
=
true
;
power_on_sync
[
i
-
1
]
=
true
;
iKonkeAfSelfPrint
(
"###########EP(%d), status(%d)
\r\n
"
,
i
,
relayStatusBuffer
[
i
-
1
]);
iKonkeAfSelfPrint
(
"###########EP(%d), status(%d)
\r\n
"
,
i
,
relayStatusBuffer
[
i
-
1
]);
kZclClusterSetPermitReportInfo
(
i
,
CLUSTER_ONOFF_ID
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
i
,
CLUSTER_ONOFF_ID
,
false
,
false
,
false
,
false
,
NULL
,
RESET_ENDPOINT
);
kZclOnOffClusterServerOnOffSet
(
i
,
relayStatusBuffer
[
i
-
1
]);
kZclOnOffClusterServerOnOffSet
(
i
,
relayStatusBuffer
[
i
-
1
]);
kZclClusterSetPermitReportInfo
(
i
,
CLUSTER_ONOFF_ID
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
i
,
CLUSTER_ONOFF_ID
,
false
,
false
,
false
,
false
,
NULL
,
RESET_ENDPOINT
);
kRelayChannelOpt
(
i
==
1
?
RELAY_CHANNEL1_ID
:
(
i
==
2
?
RELAY_CHANNEL2_ID
:
(
i
==
3
?
RELAY_CHANNEL3_ID
:
RELAY_CHANNEL4_ID
))
\
kRelayChannelOpt
(
i
==
1
?
RELAY_CHANNEL1_ID
:
(
i
==
2
?
RELAY_CHANNEL2_ID
:
(
i
==
3
?
RELAY_CHANNEL3_ID
:
RELAY_CHANNEL4_ID
))
\
,
relayStatusBuffer
[
i
-
1
]
==
false
?
EZAO_OFF
:
EZAO_ON
);
,
relayStatusBuffer
[
i
-
1
]
==
false
?
EZAO_OFF
:
EZAO_ON
);
...
@@ -1008,6 +1364,14 @@ s32 kkSystemSetUpEventHandler(void *arg )
...
@@ -1008,6 +1364,14 @@ s32 kkSystemSetUpEventHandler(void *arg )
#if UART_ENABLE
#if UART_ENABLE
kInterPanMoudleInit
(
kUserInterPanMsgInComingPaser
);
kInterPanMoudleInit
(
kUserInterPanMsgInComingPaser
);
#endif
#endif
addrExt_t
addr1
;
zb_getLocalExtAddr
(
addr1
);
SWAP_EUI64
((
uint8_t
*
)
addr1
);
//取反
iKonkeAfSelfPrint
(
"mac1 :
\r\n
"
);
iKonkeAfSelfPrintBuffer
(
addr1
,
8
);
return
-
1
;
return
-
1
;
}
}
...
@@ -1015,14 +1379,13 @@ s32 kkSystemSetUpEventHandler(void *arg )
...
@@ -1015,14 +1379,13 @@ s32 kkSystemSetUpEventHandler(void *arg )
//老化的轮询回调函数,一般用于实现老化期间的LED闪烁或继电器翻转,也可以只LED闪烁
//老化的轮询回调函数,一般用于实现老化期间的LED闪烁或继电器翻转,也可以只LED闪烁
void
kUserFactorTestPollCallback
(
FactoryTestStatusEnum
status
)
void
kUserFactorTestPollCallback
(
FactoryTestStatusEnum
status
)
{
{
iKonkeAfSelfPrint
(
"##############kUserFactorTestPollCallback status(%d)##################
\r\n
"
,
status
);
//
iKonkeAfSelfPrint("##############kUserFactorTestPollCallback status(%d)##################\r\n", status);
static
RelayOptEnum
eRelayStatus
=
EZAO_OFF
;
static
RelayOptEnum
eRelayStatus
=
EZAO_OFF
;
switch
(
status
)
switch
(
status
)
{
{
case
FTS_NORMAL
:
case
FTS_NORMAL
:
break
;
break
;
case
FTS_START
:
case
FTS_START
:
//没有老化完需先都清除网络
break
;
break
;
case
FTS_AGING_15MIN
:
case
FTS_AGING_15MIN
:
break
;
break
;
...
@@ -1030,6 +1393,10 @@ void kUserFactorTestPollCallback(FactoryTestStatusEnum status)
...
@@ -1030,6 +1393,10 @@ void kUserFactorTestPollCallback(FactoryTestStatusEnum status)
//关闭所有的蓝色LED,有可能之前蓝灯闪烁了
//关闭所有的蓝色LED,有可能之前蓝灯闪烁了
LED_OPT_OFF
(
LED_ALL_ID
);
LED_OPT_OFF
(
LED_ALL_ID
);
LED_OPT_OFF
(
LED_RADAR_ID
);
LED_OPT_OFF
(
LED_RADAR_ID
);
if
(
zb_isDeviceJoinedNwk
())
zb_factoryReset
();
else
if
(
kInterPanGetEnableStatus
())
kInterpanDisable
();
//同步所有的LED和继电器
//同步所有的LED和继电器
for
(
uint8_t
i
=
1
;
i
<=
Support_Endpoint_Num
;
i
++
){
for
(
uint8_t
i
=
1
;
i
<=
Support_Endpoint_Num
;
i
++
){
kRelayChannelOpt
(
g_ucRelayIdBuff
[
i
-
1
],
EZAO_OFF
);
kRelayChannelOpt
(
g_ucRelayIdBuff
[
i
-
1
],
EZAO_OFF
);
...
@@ -1058,22 +1425,22 @@ void kUserFactorTestPollCallback(FactoryTestStatusEnum status)
...
@@ -1058,22 +1425,22 @@ void kUserFactorTestPollCallback(FactoryTestStatusEnum status)
//如果有单独系统LED也需要都点亮
//如果有单独系统LED也需要都点亮
// LED_OPT_ON(LED_SYS_ID);
// LED_OPT_ON(LED_SYS_ID);
break
;
break
;
case
FTS_
AGING_
FORCE_EXIT
:
case
FTS_FORCE_EXIT
:
iKonkeAfSelfPrint
(
"############## FactoryTestSatus is FTS_
AGING_
FORCE_EXIT
\r\n
"
);
iKonkeAfSelfPrint
(
"############## FactoryTestSatus is FTS_FORCE_EXIT
\r\n
"
);
//按键强制退老化,快闪
//按键强制退老化,快闪
kLedOptTrigger
(
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
BLINK_DEAD
,
LED_ON
,
LED_IGNORE
);
kLedOptTrigger
(
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
BLINK_DEAD
,
LED_ON
,
LED_IGNORE
);
break
;
break
;
case
FTS_
AGING_WAITING
:
case
FTS_
WAITING_RELEASED
:
break
;
break
;
case
FTS_
AGING_
FIRST_LONG_PRESSED
:
case
FTS_FIRST_LONG_PRESSED
:
//快闪一次,指示第一次长按有效
//快闪一次,指示第一次长按有效
kLedOptTrigger
(
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
1
,
LED_ON
,
LED_IGNORE
);
kLedOptTrigger
(
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
1
,
LED_ON
,
LED_IGNORE
);
break
;
break
;
case
FTS_
AGING_
FORCE_REBOOT
:
case
FTS_FORCE_REBOOT
:
SYSTEM_RESET
();
SYSTEM_RESET
();
break
;
break
;
default:
default:
iKonkeAfSelfPrint
(
"##############Erro: FactoryTestSatus is not exist
\r\n
"
);
//
iKonkeAfSelfPrint("##############Erro: FactoryTestSatus is not exist\r\n");
break
;
break
;
}
}
}
}
...
@@ -1083,7 +1450,7 @@ void kUserFactorTestPollCallback(FactoryTestStatusEnum status)
...
@@ -1083,7 +1450,7 @@ void kUserFactorTestPollCallback(FactoryTestStatusEnum status)
//如果初始化OTA增加callback这里处理,否则使用ota模块的默认callback,就不在这里
//如果初始化OTA增加callback这里处理,否则使用ota模块的默认callback,就不在这里
void
kOTAMoudleUserCallback
(
OTAStatusEnum
status
)
void
kOTAMoudleUserCallback
(
OTAStatusEnum
status
)
{
{
#if
0
#if
1
static
bool
flg
=
false
;
//防止网关断电后,ota失败后会间隔快闪
static
bool
flg
=
false
;
//防止网关断电后,ota失败后会间隔快闪
iKonkeAfSelfPrint
(
"##############kOTAMoudleUserCallback status(%d)##################
\r\n
"
,
status
);
iKonkeAfSelfPrint
(
"##############kOTAMoudleUserCallback status(%d)##################
\r\n
"
,
status
);
switch
(
status
)
switch
(
status
)
...
@@ -1091,8 +1458,6 @@ void kOTAMoudleUserCallback(OTAStatusEnum status)
...
@@ -1091,8 +1458,6 @@ void kOTAMoudleUserCallback(OTAStatusEnum status)
case
OTA_NORMAL
:
case
OTA_NORMAL
:
break
;
break
;
case
OTA_START
:
case
OTA_START
:
//关闭所有蓝色LED
// LED_OPT_OFF(LED_ALL_ID);
kLedOptTrigger
(
LED_ALL_ID
,
2
*
LED_FAST_BLINK_ON_TIME_MS
,
14
*
LED_FAST_BLINK_ON_TIME_MS
,
\
kLedOptTrigger
(
LED_ALL_ID
,
2
*
LED_FAST_BLINK_ON_TIME_MS
,
14
*
LED_FAST_BLINK_ON_TIME_MS
,
\
OTA_UPGRADE__CONTINUE_MAX_TIME_MS
/
(
2
*
LED_FAST_BLINK_ON_TIME_MS
+
14
*
LED_FAST_BLINK_ON_TIME_MS
),
LED_ON
,
LED_ON
);
OTA_UPGRADE__CONTINUE_MAX_TIME_MS
/
(
2
*
LED_FAST_BLINK_ON_TIME_MS
+
14
*
LED_FAST_BLINK_ON_TIME_MS
),
LED_ON
,
LED_ON
);
kSetOTAStatus
(
OTA_START
);
kSetOTAStatus
(
OTA_START
);
...
@@ -1100,19 +1465,12 @@ void kOTAMoudleUserCallback(OTAStatusEnum status)
...
@@ -1100,19 +1465,12 @@ void kOTAMoudleUserCallback(OTAStatusEnum status)
break
;
break
;
case
OTA_DOWNLOAD_DONE
:
case
OTA_DOWNLOAD_DONE
:
{
{
uint8_t buffer[] = {"Konke download disable watchdog.....\r\n"};
//不能注释掉, 不然无法禁用看门狗,导致第二次连续升级卡死,认为这里是相当于加了延时
emberSerialWriteData((uint8_t)APP_SERIAL, buffer, strlen((char *)buffer));
halInternalDisableWatchDog(MICRO_DISABLE_WATCH_DOG_KEY);//add by maozj 20190308文件快下载好后禁用看门狗
kSetOTAStatus
(
OTA_DOWNLOAD_DONE
);
kSetOTAStatus
(
OTA_DOWNLOAD_DONE
);
break
;
break
;
}
}
case
OTA_VERITY_SUCCEED
:
case
OTA_VERITY_SUCCEED
:
{
{
//校验成功,记录继电器状态,需要复位后恢复继电器状态
//校验成功,记录继电器状态,需要复位后恢复继电器状态
//saveRelayStatusWhenOtaSucceed(relayTotalNum);
//uint8_t relayStatus = 1;
//halCommonSetToken(TOKEN_OTA_RELAY_STATUS, &relayStatus);
//常亮5S
//常亮5S
kLedOptTrigger
(
LED_ALL_ID
,
25
*
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_ON_TIME_MS
,
1
,
LED_ON
,
LED_ON
);
kLedOptTrigger
(
LED_ALL_ID
,
25
*
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_ON_TIME_MS
,
1
,
LED_ON
,
LED_ON
);
kSetOTAStatus
(
OTA_NORMAL
);
kSetOTAStatus
(
OTA_NORMAL
);
...
@@ -1121,14 +1479,9 @@ void kOTAMoudleUserCallback(OTAStatusEnum status)
...
@@ -1121,14 +1479,9 @@ void kOTAMoudleUserCallback(OTAStatusEnum status)
case
OTA_FAILED
:
case
OTA_FAILED
:
{
{
if
(
flg
!=
true
){
if
(
flg
!=
true
){
halInternalWatchDogEnabled(); //使能看门狗
emberAfOtaStorageClearTempDataCallback();
kLedOptTrigger
(
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_ON_TIME_MS
,
\
kLedOptTrigger
(
LED_ALL_ID
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_ON_TIME_MS
,
\
LED_FAST_BLINK_CONTINUE_TIME_MS
/
(
LED_FAST_BLINK_ON_TIME_MS
+
LED_FAST_BLINK_ON_TIME_MS
),
LED_ON
,
LED_ON
);
LED_FAST_BLINK_CONTINUE_TIME_MS
/
(
LED_FAST_BLINK_ON_TIME_MS
+
LED_FAST_BLINK_ON_TIME_MS
),
LED_ON
,
LED_ON
);
kSetOTAStatus
(
OTA_NORMAL
);
kSetOTAStatus
(
OTA_NORMAL
);
//uint8_t status = 0;
//halCommonSetToken(TOKEN_OTA_RELAY_STATUS, &status);
//emAfOtaClientStop(); //刚加上, 未测试,防止网关断电后,一直request 5分钟
}
}
flg
=
true
;
flg
=
true
;
break
;
break
;
...
@@ -1137,20 +1490,19 @@ void kOTAMoudleUserCallback(OTAStatusEnum status)
...
@@ -1137,20 +1490,19 @@ void kOTAMoudleUserCallback(OTAStatusEnum status)
iKonkeAfSelfPrint
(
"##############Err: OTA status is not exist
\r\n
"
);
iKonkeAfSelfPrint
(
"##############Err: OTA status is not exist
\r\n
"
);
break
;
break
;
}
}
#endif
#endif
}
}
#endif
#endif
static
ev_timer_event_t
*
kRadarCheckEventControl
=
NULL
;
static
ev_timer_event_t
*
kRadarCheckEventControl
=
NULL
;
static
ev_timer_event_t
*
kRadarControlLedEvent
=
NULL
;
static
ev_timer_event_t
*
kRadarControlLedEvent
=
NULL
;
s32
kRadarCheckEventHandler
(
void
*
arg
)
s32
kRadarCheckEventHandler
(
void
*
arg
)
{
{
if
(
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
\
if
(
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_WAITING
\
||
kGetFactoryTestStatus
()
==
FTS_
WAITING_RELEASED
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_
WAITING_SECOND_PRESS
){
||
kGetFactoryTestStatus
()
==
FTS_WAITING_SECOND_PRESS
){
return
0
;
return
0
;
}
}
...
@@ -1174,13 +1526,28 @@ s32 kRadarLedEventHandler(void *arg)
...
@@ -1174,13 +1526,28 @@ s32 kRadarLedEventHandler(void *arg)
{
{
if
(
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
\
if
(
kGetFactoryTestStatus
()
==
FTS_AGING_4HOU
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_AGING_DONE
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_WAITING
\
||
kGetFactoryTestStatus
()
==
FTS_
WAITING_RELEASED
\
||
kGetFactoryTestStatus
()
==
FTS_
AGING_
WAITING_SECOND_PRESS
){
||
kGetFactoryTestStatus
()
==
FTS_WAITING_SECOND_PRESS
){
return
0
;
return
0
;
}
}
bool
OnOffFlag
=
false
;
bool
OnOffFlag
=
false
;
#ifdef SINGLE_LIGHT_PANEL
OnOffFlag
|=
kZclOnOffClusterServerOnOffGet
(
1
)
==
EOOS_ON
?
true
:
false
;
#endif
#ifdef DUAL_LIGHT_PANEL
OnOffFlag
|=
kZclOnOffClusterServerOnOffGet
(
1
)
==
EOOS_ON
?
true
:
false
;
OnOffFlag
|=
kZclOnOffClusterServerOnOffGet
(
2
)
==
EOOS_ON
?
true
:
false
;
#endif
#ifdef THREE_LIGHT_PANEL
OnOffFlag
|=
kZclOnOffClusterServerOnOffGet
(
1
)
==
EOOS_ON
?
true
:
false
;
OnOffFlag
|=
kZclOnOffClusterServerOnOffGet
(
2
)
==
EOOS_ON
?
true
:
false
;
OnOffFlag
|=
kZclOnOffClusterServerOnOffGet
(
3
)
==
EOOS_ON
?
true
:
false
;
#endif
#ifdef FOUR_LIGHT_PANEL
OnOffFlag
|=
kZclOnOffClusterServerOnOffGet
(
1
)
==
EOOS_ON
?
true
:
false
;
OnOffFlag
|=
kZclOnOffClusterServerOnOffGet
(
1
)
==
EOOS_ON
?
true
:
false
;
//iKonkeAfSelfPrint("OnOffFlag by endpoint1 : (%d).\r\n",OnOffFlag);
//iKonkeAfSelfPrint("OnOffFlag by endpoint1 : (%d).\r\n",OnOffFlag);
OnOffFlag
|=
kZclOnOffClusterServerOnOffGet
(
2
)
==
EOOS_ON
?
true
:
false
;
OnOffFlag
|=
kZclOnOffClusterServerOnOffGet
(
2
)
==
EOOS_ON
?
true
:
false
;
...
@@ -1189,6 +1556,7 @@ s32 kRadarLedEventHandler(void *arg)
...
@@ -1189,6 +1556,7 @@ s32 kRadarLedEventHandler(void *arg)
//iKonkeAfSelfPrint("OnOffFlag by endpoint3 : (%d).\r\n",OnOffFlag);
//iKonkeAfSelfPrint("OnOffFlag by endpoint3 : (%d).\r\n",OnOffFlag);
OnOffFlag
|=
kZclOnOffClusterServerOnOffGet
(
4
)
==
EOOS_ON
?
true
:
false
;
OnOffFlag
|=
kZclOnOffClusterServerOnOffGet
(
4
)
==
EOOS_ON
?
true
:
false
;
//iKonkeAfSelfPrint("OnOffFlag by endpoint4 : (%d).\r\n",OnOffFlag);
//iKonkeAfSelfPrint("OnOffFlag by endpoint4 : (%d).\r\n",OnOffFlag);
#endif
if
(
OnOffFlag
==
true
){
if
(
OnOffFlag
==
true
){
kLedOptTrigger
(
LED_RADAR_ID
,
0
,
0
,
0
,
LED_ON
,
LED_IGNORE
);
kLedOptTrigger
(
LED_RADAR_ID
,
0
,
0
,
0
,
LED_ON
,
LED_IGNORE
);
...
@@ -1312,7 +1680,6 @@ void UartMsgProcessHandle(UMsgNodeSt *pMsgNode )
...
@@ -1312,7 +1680,6 @@ void UartMsgProcessHandle(UMsgNodeSt *pMsgNode )
case
UART_MSG_READ_AGING_TIME_OPCODE
:
case
UART_MSG_READ_AGING_TIME_OPCODE
:
case
UART_MSG_WRITE_INTERPAN_PARA_OPCODE
:
case
UART_MSG_WRITE_INTERPAN_PARA_OPCODE
:
case
UART_MSG_READ_INTERPAN_PARA_OPCODE
:
case
UART_MSG_READ_INTERPAN_PARA_OPCODE
:
reply_control_field
=
Z_TO_H_NO_ACK
;
kCmdGeneralMsgPaser
(
pMsgNode
,
ECOM_PORT_UART
,
&
send_buf
);
kCmdGeneralMsgPaser
(
pMsgNode
,
ECOM_PORT_UART
,
&
send_buf
);
break
;
break
;
case
UART_MSG_QUERY_INFO_OPCODE
:
case
UART_MSG_QUERY_INFO_OPCODE
:
...
@@ -1324,6 +1691,8 @@ void UartMsgProcessHandle(UMsgNodeSt *pMsgNode )
...
@@ -1324,6 +1691,8 @@ void UartMsgProcessHandle(UMsgNodeSt *pMsgNode )
case
UART_MSG_QUERY_FACTORY_INFO_OPCODE
:
case
UART_MSG_QUERY_FACTORY_INFO_OPCODE
:
case
UART_MSG_ENTER_FACTORY_TEST_OPCODE
:
case
UART_MSG_ENTER_FACTORY_TEST_OPCODE
:
case
UART_MSG_ONOFF_SWITCH_OPCODE
:
case
UART_MSG_ONOFF_SWITCH_OPCODE
:
case
UART_MSG_QUERY_FACTORY_STATE_OPCODE
:
case
UART_MSG_LED_GROUP_CONTROL_OPCODE
:
kkFactoryMsgInComingPaser
(
pMsgNode
,
ECOM_PORT_UART
,
&
send_buf
);
kkFactoryMsgInComingPaser
(
pMsgNode
,
ECOM_PORT_UART
,
&
send_buf
);
break
;
break
;
...
@@ -1333,6 +1702,7 @@ void UartMsgProcessHandle(UMsgNodeSt *pMsgNode )
...
@@ -1333,6 +1702,7 @@ void UartMsgProcessHandle(UMsgNodeSt *pMsgNode )
reply_control_field
=
Z_TO_H_NO_ACK
;
reply_control_field
=
Z_TO_H_NO_ACK
;
break
;
break
;
}
}
reply_control_field
=
Z_TO_H_NO_ACK
;
kCmdMsgDataSentByPort
(
reply_control_field
,
send_buf
,
false
,
ECOM_PORT_UART
);
kCmdMsgDataSentByPort
(
reply_control_field
,
send_buf
,
false
,
ECOM_PORT_UART
);
}
}
/* DESP: rtt command message incoming and process interface.
/* DESP: rtt command message incoming and process interface.
...
@@ -1422,6 +1792,8 @@ void kUserInterPanMsgInComingPaser(UMsgNodeSt *pMsgNode)
...
@@ -1422,6 +1792,8 @@ void kUserInterPanMsgInComingPaser(UMsgNodeSt *pMsgNode)
case
UART_MSG_QUERY_SWITCH_ONOFF_OPCODE
:
case
UART_MSG_QUERY_SWITCH_ONOFF_OPCODE
:
case
UART_MSG_ENTER_FACTORY_TEST_OPCODE
:
case
UART_MSG_ENTER_FACTORY_TEST_OPCODE
:
case
UART_MSG_ONOFF_SWITCH_OPCODE
:
case
UART_MSG_ONOFF_SWITCH_OPCODE
:
case
UART_MSG_QUERY_FACTORY_STATE_OPCODE
:
case
UART_MSG_LED_GROUP_CONTROL_OPCODE
:
kkFactoryMsgInComingPaser
(
pMsgNode
,
ECOM_PORT_INTERPAN
,
&
send_buf
);
kkFactoryMsgInComingPaser
(
pMsgNode
,
ECOM_PORT_INTERPAN
,
&
send_buf
);
break
;
break
;
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/user.h
View file @
b1dbfcb7
...
@@ -7,7 +7,9 @@
...
@@ -7,7 +7,9 @@
#include "ikk-led.h"
#include "ikk-led.h"
#include "ikk-network.h"
#include "ikk-network.h"
#define ZCL_ATTRID_NoDisturbMode 0x100C
void
App_Init
(
void
);
void
App_Init
(
void
);
void
kZclClusterRecallSceneCallback
(
uint8_t
endpoint
,
uint16_t
cluster
,
uint8_t
command_id
,
bool
reportEnable
,
bool
sceneRecallFlg
,
bool
reportGatewayEnable
,
bool
reportChildDeviceEnable
,
void
*
param
);
#endif
#endif
tl_zigbee_sdk/apps/3LightPanelDemo/zb_appCb.c
View file @
b1dbfcb7
...
@@ -54,6 +54,7 @@
...
@@ -54,6 +54,7 @@
#include "bdb.h"
#include "bdb.h"
#include "ota.h"
#include "ota.h"
#include PROJECT_H
#include PROJECT_H
#include "ikk-ota.h"
#include "ikk-debug.h"
#include "ikk-debug.h"
#include "ikk-network.h"
#include "ikk-network.h"
/**********************************************************************
/**********************************************************************
...
@@ -258,31 +259,34 @@ void zbdemo_bdbIdentifyCb(u8 endpoint, u16 srcAddr, u16 identifyTime){
...
@@ -258,31 +259,34 @@ void zbdemo_bdbIdentifyCb(u8 endpoint, u16 srcAddr, u16 identifyTime){
#endif
#endif
}
}
#ifdef ZCL_OTA
#ifdef ZCL_OTA
void
sampleLight_otaProcessMsgHandler
(
u8
evt
,
u8
status
)
void
sampleLight_otaProcessMsgHandler
(
u8
evt
,
u8
status
)
{
{
Tl_printf
(
"sampleLight_otaProcessMsgHandler111111, evt = %d, status = %d
\r\n
"
,
evt
,
status
);
if
(
evt
==
OTA_EVT_START
){
if
(
evt
==
OTA_EVT_START
){
if
(
status
==
ZCL_STA_SUCCESS
){
if
(
status
==
ZCL_STA_SUCCESS
){
kOTAMoudleCallback
(
OTA_START
);
}
else
{
}
else
{
kOTAMoudleCallback
(
OTA_FAILED
);
}
}
else
if
(
evt
==
OTA_EVT_COMPLETE
){
if
(
status
==
ZCL_STA_SUCCESS
){
kOTAMoudleCallback
(
OTA_DOWNLOAD_DONE
);
}
else
{
kOTAMoudleCallback
(
OTA_FAILED
);
}
}
}
else
if
(
evt
==
OTA_EVT_COMPLETE
){
}
else
if
(
evt
==
OTA_EVT_COMPLETE
){
if
(
status
==
ZCL_STA_SUCCESS
){
if
(
status
==
ZCL_STA_SUCCESS
){
ota_mcuReboot
();
ota_mcuReboot
();
kOTAMoudleCallback
(
OTA_VERITY_SUCCEED
);
}
else
{
}
else
{
ota_queryStart
(
30
);
ota_queryStart
(
30
);
kOTAMoudleCallback
(
OTA_FAILED
);
}
}
}
}
}
}
#endif
#endif
/*********************************************************************
/*********************************************************************
* @fn sampleLight_leaveIndHandler
* @fn sampleLight_leaveIndHandler
*
*
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/zcl_onOffCb.c
View file @
b1dbfcb7
...
@@ -53,6 +53,9 @@
...
@@ -53,6 +53,9 @@
#include "zcl_include.h"
#include "zcl_include.h"
#include PROJECT_H
#include PROJECT_H
#include "zcl.h"
#include "zcl.h"
#include "ikk-debug.h"
#include "ikk-sequence.h"
#include "ikk-cluster.h"
/**********************************************************************
/**********************************************************************
* LOCAL CONSTANTS
* LOCAL CONSTANTS
*/
*/
...
@@ -259,35 +262,117 @@ static void sampleLight_onoff_onWithRecallGlobalSceneProcess(void)
...
@@ -259,35 +262,117 @@ static void sampleLight_onoff_onWithRecallGlobalSceneProcess(void)
}
}
typedef
struct
{
u16
clusterId
[
5
];
u16
attrID
[
5
];
}
ClusterAttrID
;
ClusterAttrID
clusterattrid
;
extern
void
ON_OFF_Cmd_Handler
(
uint8_t
endpoint
,
bool
onoff
);
static
ev_timer_event_t
*
kSrcEp1Multieport
=
NULL
;
void
zclReportCmdHandler
(
uint8_t
ep
,
uint16_t
cluster
,
zclReportCmd_t
*
reportInfo
)
static
ev_timer_event_t
*
kSrcEp2Multieport
=
NULL
;
static
ev_timer_event_t
*
kSrcEp3Multieport
=
NULL
;
static
ev_timer_event_t
*
kSrcEp4Multieport
=
NULL
;
static
s32
kSrcEp1MultieportEventHandler
(
void
*
arg
)
{
Tl_printf
(
"######kSrcEp1MultieportEventHandler
\r\n
"
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kOptTunnelReportingStatus
(
1
,
clusterattrid
.
clusterId
[
1
],
clusterattrid
.
attrID
[
1
]);
return
-
1
;
}
static
s32
kSrcEp2MultieportEventHandler
(
void
*
arg
)
{
Tl_printf
(
"######kSrcEp2MultieportEventHandler
\r\n
"
);
kZclClusterSetPermitReportInfo
(
2
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kOptTunnelReportingStatus
(
2
,
clusterattrid
.
clusterId
[
2
],
clusterattrid
.
attrID
[
2
]);
return
-
1
;
}
static
s32
kSrcEp3MultieportEventHandler
(
void
*
arg
)
{
{
//iKonkeAfSelfPrint("######sampleLight_zclReportCmd,attr = %d,data type=%d,data = %d\r\n",reportInfo->attrList[0].attrID,reportInfo->attrList[0].dataType,reportInfo->attrList[0].attrData[0]);
Tl_printf
(
"######kSrcEp3MultieportEventHandler
\r\n
"
);
kZclClusterSetPermitReportInfo
(
3
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kOptTunnelReportingStatus
(
3
,
clusterattrid
.
clusterId
[
3
],
clusterattrid
.
attrID
[
3
]);
return
-
1
;
}
static
s32
kSrcEp4MultieportEventHandler
(
void
*
arg
)
{
Tl_printf
(
"######kSrcEp4MultieportEventHandler
\r\n
"
);
kZclClusterSetPermitReportInfo
(
4
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kOptTunnelReportingStatus
(
4
,
clusterattrid
.
clusterId
[
4
],
clusterattrid
.
attrID
[
4
]);
return
-
1
;
}
extern
void
ON_OFF_Cmd_Handler
(
uint8_t
endpoint
,
bool
onoff
);
void
zclReportCmdHandler
(
uint8_t
ep
,
uint16_t
cluster
,
zclReportCmd_t
*
reportInfo
,
zclIncoming_t
*
pInHdlrMsg
)
{
iKonkeAfSelfPrint
(
"######sampleLight_zclReportCmd,attr = %d,data type=%d,data = %d
\r\n
"
,
reportInfo
->
attrList
[
0
].
attrID
,
reportInfo
->
attrList
[
0
].
dataType
,
reportInfo
->
attrList
[
0
].
attrData
[
0
]);
switch
(
cluster
)
switch
(
cluster
)
{
{
//当report的是子设备时进行过滤
case
ZCL_CLUSTER_GEN_ON_OFF
:
case
ZCL_CLUSTER_GEN_ON_OFF
:
{
{
for
(
uint8_t
i
=
0
;
i
<
(
reportInfo
->
numAttr
);
i
++
)
uint16_t
sender
=
pInHdlrMsg
->
msg
->
indInfo
.
src_short_addr
;
{
for
(
uint8_t
i
=
0
;
i
<
(
reportInfo
->
numAttr
);
i
++
)
{
if
(
reportInfo
->
attrList
[
i
].
attrID
==
ZCL_ATTRID_ONOFF
)
uint8_t
dataType
=
reportInfo
->
attrList
[
i
].
dataType
;
{
if
(
reportInfo
->
attrList
[
i
].
attrID
==
ZCL_ATTRID_ONOFF
&&
dataType
==
ZCL_DATA_TYPE_BOOLEAN
)
{
bool
on_off_ctr
=
reportInfo
->
attrList
[
0
].
attrData
[
i
];
bool
on_off_ctr
=
reportInfo
->
attrList
[
0
].
attrData
[
i
];
ON_OFF_Cmd_Handler
(
ep
,
on_off_ctr
);
if
(
sender
!=
0x0000
){
//sender是芯科SDK里的参数
uint8_t
index
=
0
;
uint8_t
storedSequence
=
kSequenceFindByNodeidAndEp
(
sender
,
pInHdlrMsg
->
msg
->
indInfo
.
dst_ep
,
&
index
);
iKonkeAfSelfPrint
(
"######zclReportCmdHandler111111,sender = %d,directed endpoint = %d,seqNum = %d,storedSequence = %d
\r\n
"
,
\
sender
,
pInHdlrMsg
->
msg
->
indInfo
.
dst_ep
,
pInHdlrMsg
->
hdr
.
seqNum
,
storedSequence
);
//过滤seq,以免早的seq改变后来的seq状态
if
(
pInHdlrMsg
->
hdr
.
seqNum
<=
storedSequence
&&
storedSequence
-
pInHdlrMsg
->
hdr
.
seqNum
<=
60
)
{
//直接不执行当前操作
iKonkeAfSelfPrint
(
"######zclReportCmdHandler222222
\r\n
"
);
return
;
}
else
{
iKonkeAfSelfPrint
(
"######zclReportCmdHandler333333
\r\n
"
);
kSequenceAdd
(
sender
,
pInHdlrMsg
->
msg
->
indInfo
.
dst_ep
,
pInHdlrMsg
->
hdr
.
seqNum
);
}
}
ZclOnOffControlInfoSt
ZclOnOffControlInfo
;
iKonkeAfSelfPrint
(
"Multi-ContorlWrite Attribute ep(%d) value(%d)
\r\n
"
,
pInHdlrMsg
->
msg
->
indInfo
.
dst_ep
,
on_off_ctr
);
switch
(
on_off_ctr
)
{
case
0x00
:
case
0x01
:
{
iKonkeAfSelfPrint
(
"!!!!!!!!!!!!!OnOffValue111111 = %d!!!!!!!!!
\r\n
"
,
on_off_ctr
);
ON_OFF_Cmd_Handler
(
ep
,
on_off_ctr
);
addrExt_t
senderEui64
=
{
0
};
for
(
uint8_t
i
=
0
;
i
<
8
;
i
++
){
senderEui64
[
i
]
=
pInHdlrMsg
->
msg
->
indInfo
.
src_ext_addr
[
i
];
}
memcpy
(
ZclOnOffControlInfo
.
maskEui64Addr
,
senderEui64
,
8
);
ZclOnOffControlInfo
.
dest_endpoint
=
pInHdlrMsg
->
msg
->
indInfo
.
src_ep
;
//采用单播上报的方式,实现多控时的单向控制
kZclClusterSetPermitReportInfo
(
ep
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
false
,
false
,
ZclOnOffControlInfo
.
maskEui64Addr
,
ZclOnOffControlInfo
.
dest_endpoint
);
clusterattrid
.
clusterId
[
ep
]
=
ZCL_CLUSTER_GEN_ON_OFF
;
clusterattrid
.
attrID
[
ep
]
=
ZCL_ATTRID_ONOFF
;
if
(
ep
==
1
){
kSrcEp1Multieport
=
TL_ZB_TIMER_SCHEDULE
(
kSrcEp1MultieportEventHandler
,
NULL
,
50
);
}
else
if
(
ep
==
2
){
kSrcEp2Multieport
=
TL_ZB_TIMER_SCHEDULE
(
kSrcEp2MultieportEventHandler
,
NULL
,
50
);
}
else
if
(
ep
==
3
){
kSrcEp3Multieport
=
TL_ZB_TIMER_SCHEDULE
(
kSrcEp3MultieportEventHandler
,
NULL
,
50
);
}
else
if
(
ep
==
4
){
kSrcEp4Multieport
=
TL_ZB_TIMER_SCHEDULE
(
kSrcEp4MultieportEventHandler
,
NULL
,
50
);
}
}
break
;
case
0x02
:
break
;
default:
break
;
}
}
}
}
}
break
;
break
;
}
}
default:
default:
break
;
break
;
}
}
}
}
status_t
sampleLight_onOffCb
(
zclIncomingAddrInfo_t
*
pAddrInfo
,
u8
cmdId
,
void
*
cmdPayload
)
status_t
sampleLight_onOffCb
(
zclIncomingAddrInfo_t
*
pAddrInfo
,
u8
cmdId
,
void
*
cmdPayload
)
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/zcl_sampleLightCb.c
View file @
b1dbfcb7
...
@@ -54,6 +54,7 @@
...
@@ -54,6 +54,7 @@
#include "ota.h"
#include "ota.h"
#include PROJECT_H
#include PROJECT_H
#include "ikk-debug.h"
#include "ikk-debug.h"
#include "ikk-ota.h"
#include "ikk-opt-tunnel.h"
#include "ikk-opt-tunnel.h"
/**********************************************************************
/**********************************************************************
* LOCAL CONSTANTS
* LOCAL CONSTANTS
...
@@ -110,7 +111,7 @@ static ev_timer_event_t *identifyTimerEvt = NULL;
...
@@ -110,7 +111,7 @@ static ev_timer_event_t *identifyTimerEvt = NULL;
* @return None
* @return None
*/
*/
extern
kk_err_t
kOptTunnelMessageIncoming
(
OptMethodEm
method
,
zclIncoming_t
*
pCmd
);
extern
kk_err_t
kOptTunnelMessageIncoming
(
OptMethodEm
method
,
zclIncoming_t
*
pCmd
);
extern
void
zclReportCmdHandler
(
uint8_t
ep
,
uint16_t
cluster
,
zclReportCmd_t
*
reportInfo
);
extern
void
zclReportCmdHandler
(
uint8_t
ep
,
uint16_t
cluster
,
zclReportCmd_t
*
reportInfo
,
zclIncoming_t
*
pCmd
);
void
sampleLight_zclProcessIncomingMsg
(
zclIncoming_t
*
pInHdlrMsg
)
void
sampleLight_zclProcessIncomingMsg
(
zclIncoming_t
*
pInHdlrMsg
)
{
{
iKonkeAfSelfPrint
(
"######sampleLight_zclProcessIncomingMsg,cmd = %d,len=%d,
\n
"
,
pInHdlrMsg
->
hdr
.
cmd
,
pInHdlrMsg
->
dataLen
);
iKonkeAfSelfPrint
(
"######sampleLight_zclProcessIncomingMsg,cmd = %d,len=%d,
\n
"
,
pInHdlrMsg
->
hdr
.
cmd
,
pInHdlrMsg
->
dataLen
);
...
@@ -147,7 +148,7 @@ void sampleLight_zclProcessIncomingMsg(zclIncoming_t *pInHdlrMsg)
...
@@ -147,7 +148,7 @@ void sampleLight_zclProcessIncomingMsg(zclIncoming_t *pInHdlrMsg)
sampleLight_zclCfgReportRspCmd
(
pInHdlrMsg
->
attrCmd
);
sampleLight_zclCfgReportRspCmd
(
pInHdlrMsg
->
attrCmd
);
break
;
break
;
case
ZCL_CMD_REPORT
:
case
ZCL_CMD_REPORT
:
zclReportCmdHandler
(
ep
,
cluster
,
pInHdlrMsg
->
attrCmd
);
zclReportCmdHandler
(
ep
,
cluster
,
pInHdlrMsg
->
attrCmd
,
pInHdlrMsg
);
break
;
break
;
#endif
#endif
case
ZCL_CMD_DEFAULT_RSP
:
case
ZCL_CMD_DEFAULT_RSP
:
...
@@ -325,19 +326,25 @@ void sampleLight_zclIdentifyTimerStop(void)
...
@@ -325,19 +326,25 @@ void sampleLight_zclIdentifyTimerStop(void)
*
*
* @return None
* @return None
*/
*/
typedef
enum
{
LED_RADAR_ID
=
1
,
LED1_ID
,
LED2_ID
,
LED3_ID
,
LED4_ID
,
LED_ALL_ID
}
LED_ID_ENUM
;
typedef
enum
{
LED_OFF
=
0
,
LED_ON
=
1
,
LED_TOGGLE
,
LED_IGNORE
=
2
}
LedOptEnum
;
#define LED_SLOW_BLINK_ON_TIME_MS 800
#define LED_SLOW_BLINK_OFF_TIME_MS 800
extern
void
kSetLedStatus
(
LED_ID_ENUM
id
);
extern
void
kLedOptTrigger
(
uint8_t
id
,
uint32_t
duration_on_ms
,
uint32_t
duration_off_ms
,
uint32_t
times
,
LedOptEnum
start
,
LedOptEnum
end
);
void
sampleLight_zclIdentifyCmdHandler
(
u8
endpoint
,
u16
srcAddr
,
u16
identifyTime
)
void
sampleLight_zclIdentifyCmdHandler
(
u8
endpoint
,
u16
srcAddr
,
u16
identifyTime
)
{
{
// g_zcl_identifyAttrs.identifyTime = identifyTime;
g_zcl_identifyAttrs
->
identifyTime
=
identifyTime
;
//
/*if(kGetOTAStatus() == OTA_NORMAL){*/
// if(identifyTime == 0){
if
(
identifyTime
==
0
){
// sampleLight_zclIdentifyTimerStop();
kSetLedStatus
(
LED_ALL_ID
);
// //light_blink_stop();
}
else
{
// }else{
kLedOptTrigger
(
LED_ALL_ID
,
LED_SLOW_BLINK_ON_TIME_MS
,
LED_SLOW_BLINK_OFF_TIME_MS
,
// if(!identifyTimerEvt){
identifyTime
*
1000
/
(
LED_SLOW_BLINK_ON_TIME_MS
+
LED_SLOW_BLINK_OFF_TIME_MS
),
LED_ON
,
LED_OFF
);
// //light_blink_start(identifyTime, 500, 500);
}
// identifyTimerEvt = TL_ZB_TIMER_SCHEDULE(sampleLight_zclIdentifyTimerCb, NULL, 1000);
/* }*/
// }
// }
}
}
/*********************************************************************
/*********************************************************************
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/zcl_sceneCb.c
View file @
b1dbfcb7
...
@@ -146,6 +146,7 @@ static void sampleLight_sceneStoreReqHandler(uint8_t ep ,zcl_sceneEntry_t *pScen
...
@@ -146,6 +146,7 @@ static void sampleLight_sceneStoreReqHandler(uint8_t ep ,zcl_sceneEntry_t *pScen
pScene
->
extField
[
extLen
++
]
=
HI_UINT16
(
ZCL_CLUSTER_GEN_ON_OFF
);
pScene
->
extField
[
extLen
++
]
=
HI_UINT16
(
ZCL_CLUSTER_GEN_ON_OFF
);
pScene
->
extField
[
extLen
++
]
=
1
;
pScene
->
extField
[
extLen
++
]
=
1
;
pScene
->
extField
[
extLen
++
]
=
pOnOff
->
onOff
;
pScene
->
extField
[
extLen
++
]
=
pOnOff
->
onOff
;
Tl_printf
(
"
\r\n
kZclClusterRecallSceneCallback###111111
\r\n
"
);
kZclClusterRecallSceneCallback
(
ep
,
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_CMD_SCENE_STORE_SCENE
,
true
,
false
);
kZclClusterRecallSceneCallback
(
ep
,
ZCL_CLUSTER_GEN_ON_OFF
,
ZCL_CMD_SCENE_STORE_SCENE
,
true
,
false
);
#endif
#endif
...
@@ -189,6 +190,7 @@ static void sampleLight_sceneStoreReqHandler(uint8_t ep ,zcl_sceneEntry_t *pScen
...
@@ -189,6 +190,7 @@ static void sampleLight_sceneStoreReqHandler(uint8_t ep ,zcl_sceneEntry_t *pScen
status_t
sampleLight_sceneCb
(
zclIncomingAddrInfo_t
*
pAddrInfo
,
u8
cmdId
,
void
*
cmdPayload
)
status_t
sampleLight_sceneCb
(
zclIncomingAddrInfo_t
*
pAddrInfo
,
u8
cmdId
,
void
*
cmdPayload
)
{
{
uint8_t
ep
=
pAddrInfo
->
dstEp
;
uint8_t
ep
=
pAddrInfo
->
dstEp
;
Tl_printf
(
"
\r\n
###sampleLight_sceneCb111111 dirCluster = %d, cmdId = %d
\r\n
"
,
pAddrInfo
->
dirCluster
,
cmdId
);
if
(
pAddrInfo
->
dirCluster
==
ZCL_FRAME_CLIENT_SERVER_DIR
){
if
(
pAddrInfo
->
dirCluster
==
ZCL_FRAME_CLIENT_SERVER_DIR
){
switch
(
cmdId
){
switch
(
cmdId
){
case
ZCL_CMD_SCENE_STORE_SCENE
:
case
ZCL_CMD_SCENE_STORE_SCENE
:
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/driver/ikk-led.c
View file @
b1dbfcb7
...
@@ -298,14 +298,18 @@ void kLedOptTrigger(uint8_t id, uint32_t duration_on_ms, uint32_t duration_off_m
...
@@ -298,14 +298,18 @@ void kLedOptTrigger(uint8_t id, uint32_t duration_on_ms, uint32_t duration_off_m
return
;
return
;
}
}
// iKonkeAfSelfPrint("LED_TRIGGER[%d]: id(%d), d_on(%d), d_off(%d), times(%d), start(%d), end(%d)\r\n",
if
(
id
!=
1
)
// led_index, id, duration_on_ms, duration_off_ms, times, start, end);
iKonkeAfSelfPrint
(
"LED_TRIGGER[%d]: id(%d), d_on(%d), d_off(%d), times(%d), start(%d), end(%d)
\r\n
"
,
led_index
,
id
,
duration_on_ms
,
duration_off_ms
,
times
,
start
,
end
);
g_stLedCtrller
[
led_index
].
onDuration
=
duration_on_ms
/
TICK_LOOP_NMS
;
g_stLedCtrller
[
led_index
].
onDuration
=
duration_on_ms
/
TICK_LOOP_NMS
;
g_stLedCtrller
[
led_index
].
offDuration
=
duration_off_ms
/
TICK_LOOP_NMS
;
g_stLedCtrller
[
led_index
].
offDuration
=
duration_off_ms
/
TICK_LOOP_NMS
;
g_stLedCtrller
[
led_index
].
start
=
start
;
g_stLedCtrller
[
led_index
].
start
=
start
;
g_stLedCtrller
[
led_index
].
end
=
end
;
if
(
end
==
LED_IGNORE
)
g_stLedCtrller
[
led_index
].
end
=
LED_OFF
;
else
g_stLedCtrller
[
led_index
].
end
=
end
;
if
(
g_stLedCtrller
[
led_index
].
start
==
LED_ON
)
{
if
(
g_stLedCtrller
[
led_index
].
start
==
LED_ON
)
{
kLedDriverhandler
(
led_index
,
LED_ON
);
kLedDriverhandler
(
led_index
,
LED_ON
);
...
@@ -321,6 +325,7 @@ void kLedOptTrigger(uint8_t id, uint32_t duration_on_ms, uint32_t duration_off_m
...
@@ -321,6 +325,7 @@ void kLedOptTrigger(uint8_t id, uint32_t duration_on_ms, uint32_t duration_off_m
if
(
g_pLedBlinkDoneCallback
[
led_index
]
&&
!
bFlg
[
led_index
]){
if
(
g_pLedBlinkDoneCallback
[
led_index
]
&&
!
bFlg
[
led_index
]){
bFlg
[
led_index
]
=
true
;
bFlg
[
led_index
]
=
true
;
g_pLedBlinkDoneCallback
[
led_index
](
id
);
g_pLedBlinkDoneCallback
[
led_index
](
id
);
}
}
}
else
{
}
else
{
bFlg
[
led_index
]
=
false
;
bFlg
[
led_index
]
=
false
;
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/driver/ikk-pwm.c
View file @
b1dbfcb7
...
@@ -24,7 +24,7 @@ static uint8_t g_u8PwmChannelNum = 0;
...
@@ -24,7 +24,7 @@ static uint8_t g_u8PwmChannelNum = 0;
pPwmActionDoneCallback
g_pPwmActionDoneCallback
=
NULL
;
pPwmActionDoneCallback
g_pPwmActionDoneCallback
=
NULL
;
static
bool
Pwm_Tick_Detect_Running_Flag
=
false
;
static
bool
Pwm_Tick_Detect_Running_Flag
[
PWM_OBJS_SUPPORT_MAXN
]
=
{
0
}
;
static
ev_timer_event_t
*
Tick_Pwm_TimerEvt
=
NULL
;
static
ev_timer_event_t
*
Tick_Pwm_TimerEvt
=
NULL
;
...
@@ -80,7 +80,7 @@ uint8_t kPwmGetIndexByID(uint8_t pwm_id )
...
@@ -80,7 +80,7 @@ uint8_t kPwmGetIndexByID(uint8_t pwm_id )
*/
*/
void
kPwmDriverhandler
(
uint8_t
pwm_index
,
PwmGradientDirectionEnum
st
,
uint16_t
value
)
void
kPwmDriverhandler
(
uint8_t
pwm_index
,
PwmGradientDirectionEnum
st
,
uint16_t
value
)
{
{
Pwm_Tick_Detect_Running_Flag
=
false
;
Pwm_Tick_Detect_Running_Flag
[
pwm_index
]
=
false
;
if
(
pwm_index
>=
g_u8PwmChannelNum
){
if
(
pwm_index
>=
g_u8PwmChannelNum
){
iKonkeAfSelfPrint
(
"####kPwmDriverhandler index is too large
\r\n
"
);
iKonkeAfSelfPrint
(
"####kPwmDriverhandler index is too large
\r\n
"
);
...
@@ -174,8 +174,8 @@ void kPwmOptTrigger(uint8_t id, uint32_t start_value, uint32_t end_value, uint32
...
@@ -174,8 +174,8 @@ void kPwmOptTrigger(uint8_t id, uint32_t start_value, uint32_t end_value, uint32
iKonkeAfSelfPrint
(
"action (%d) , interval[%d]
\r\n
"
,
g_stPwmCtrller
[
pwm_index
].
actionCounter
,
g_stPwmCtrller
[
pwm_index
].
intervalDutyCycle
);
iKonkeAfSelfPrint
(
"action (%d) , interval[%d]
\r\n
"
,
g_stPwmCtrller
[
pwm_index
].
actionCounter
,
g_stPwmCtrller
[
pwm_index
].
intervalDutyCycle
);
pwmSetDuty
(
g_stPwmConfList
[
pwm_index
].
gpioInfo
.
pwmChannel
,
start_value
);
pwmSetDuty
(
g_stPwmConfList
[
pwm_index
].
gpioInfo
.
pwmChannel
,
start_value
);
if
(
!
Pwm_Tick_Detect_Running_Flag
)
{
if
(
!
Pwm_Tick_Detect_Running_Flag
[
pwm_index
]
)
{
Pwm_Tick_Detect_Running_Flag
=
true
;
Pwm_Tick_Detect_Running_Flag
[
pwm_index
]
=
true
;
}
}
}
}
/* DESP: single LED instance register interface.
/* DESP: single LED instance register interface.
...
@@ -253,15 +253,18 @@ kk_err_t kPwmModuleInit(PwmConfSt pwmlist[], unsigned char pwm_number, pPwmActio
...
@@ -253,15 +253,18 @@ kk_err_t kPwmModuleInit(PwmConfSt pwmlist[], unsigned char pwm_number, pPwmActio
}
}
static
s32
kPwmGradientChangeEventHandler
(
void
*
data
)
static
s32
kPwmGradientChangeEventHandler
(
void
*
data
)
{
{
if
(
!
Pwm_Tick_Detect_Running_Flag
)
return
0
;
for
(
uint8_t
i
=
0
;
i
<
g_u8PwmChannelNum
;
i
++
){
for
(
uint8_t
i
=
0
;
i
<
g_u8PwmChannelNum
;
i
++
){
//iKonkeAfSelfPrint("PwmChange,flag = %d,Counter = %d,i = %d\r\n",Pwm_Tick_Detect_Running_Flag[i],g_stPwmCtrller[i].actionCounter,i);
if
(
!
Pwm_Tick_Detect_Running_Flag
[
i
]){
continue
;
}
if
(
g_stPwmCtrller
[
i
].
actionCounter
>
0
){
if
(
g_stPwmCtrller
[
i
].
actionCounter
>
0
){
if
(
g_stPwmCtrller
[
i
].
startDutyCycle
>
g_stPwmCtrller
[
i
].
endDutyCycle
){
if
(
g_stPwmCtrller
[
i
].
startDutyCycle
>
g_stPwmCtrller
[
i
].
endDutyCycle
){
g_stPwmCtrller
[
i
].
actionCounter
--
;
g_stPwmCtrller
[
i
].
actionCounter
--
;
g_stPwmCtrller
[
i
].
startDutyCycleValue
-=
g_stPwmCtrller
[
i
].
intervalDutyCycle
;
g_stPwmCtrller
[
i
].
startDutyCycleValue
-=
g_stPwmCtrller
[
i
].
intervalDutyCycle
;
pwmSetDuty
(
g_stPwmCtrller
[
i
].
gpioInfo
.
pwmChannel
,
g_stPwmCtrller
[
i
].
startDutyCycleValue
);
pwmSetDuty
(
g_stPwmCtrller
[
i
].
gpioInfo
.
pwmChannel
,
g_stPwmCtrller
[
i
].
startDutyCycleValue
);
//iKonkeAfSelfPrint("PwmChange,Counter = %d\r\n",g_stPwmCtrller[i].actionCounter);
}
else
if
(
g_stPwmCtrller
[
i
].
startDutyCycle
<
g_stPwmCtrller
[
i
].
endDutyCycle
){
}
else
if
(
g_stPwmCtrller
[
i
].
startDutyCycle
<
g_stPwmCtrller
[
i
].
endDutyCycle
){
g_stPwmCtrller
[
i
].
actionCounter
--
;
g_stPwmCtrller
[
i
].
actionCounter
--
;
g_stPwmCtrller
[
i
].
startDutyCycleValue
+=
g_stPwmCtrller
[
i
].
intervalDutyCycle
;
g_stPwmCtrller
[
i
].
startDutyCycleValue
+=
g_stPwmCtrller
[
i
].
intervalDutyCycle
;
...
@@ -272,7 +275,6 @@ static s32 kPwmGradientChangeEventHandler(void *data)
...
@@ -272,7 +275,6 @@ static s32 kPwmGradientChangeEventHandler(void *data)
if
(
g_stPwmCtrller
[
i
].
actionCounter
==
0
){
if
(
g_stPwmCtrller
[
i
].
actionCounter
==
0
){
//may be end duty cycle not equal, restore end duty cycle
//may be end duty cycle not equal, restore end duty cycle
pwmSetDuty
(
g_stPwmCtrller
[
i
].
gpioInfo
.
pwmChannel
,
g_stPwmCtrller
[
i
].
endDutyCycle
);
pwmSetDuty
(
g_stPwmCtrller
[
i
].
gpioInfo
.
pwmChannel
,
g_stPwmCtrller
[
i
].
endDutyCycle
);
if
(
g_pPwmActionDoneCallback
){
if
(
g_pPwmActionDoneCallback
){
PwmGradientDirectionEnum
opt
=
ELP_OPT_DEFAULT
;
PwmGradientDirectionEnum
opt
=
ELP_OPT_DEFAULT
;
if
(
g_stPwmCtrller
[
i
].
startDutyCycle
>
g_stPwmCtrller
[
i
].
endDutyCycle
){
if
(
g_stPwmCtrller
[
i
].
startDutyCycle
>
g_stPwmCtrller
[
i
].
endDutyCycle
){
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-cluster.c
View file @
b1dbfcb7
...
@@ -23,7 +23,6 @@ static pClusterAttributeChangeCallback pOnOffClusterCallback = NULL;
...
@@ -23,7 +23,6 @@ static pClusterAttributeChangeCallback pOnOffClusterCallback = NULL;
//static pClusterAttributeChangeCallback pLevelClusterCallback = NULL;
//static pClusterAttributeChangeCallback pLevelClusterCallback = NULL;
//static pClusterAttributeChangeCallback pColorClusterCallback = NULL;
//static pClusterAttributeChangeCallback pColorClusterCallback = NULL;
static
status_t
WriteServerAttribute
(
u8
endpoint
,
u16
clusterId
,
uint8_t
attributeID
,
uint8_t
*
dataPtr
,
uint8_t
data_type
);
static
status_t
WriteServerAttribute
(
u8
endpoint
,
u16
clusterId
,
uint8_t
attributeID
,
uint8_t
*
dataPtr
,
uint8_t
data_type
);
typedef
struct
{
typedef
struct
{
ZclReportTableSt
g_stZclReportPermitList
[
ENDPOINT_MAXN
*
CLUSTER_MAXN
];
ZclReportTableSt
g_stZclReportPermitList
[
ENDPOINT_MAXN
*
CLUSTER_MAXN
];
...
@@ -202,11 +201,6 @@ void Update_Local_Attribute_Info(void)
...
@@ -202,11 +201,6 @@ void Update_Local_Attribute_Info(void)
Rewrite_ManufactureName
();
Rewrite_ManufactureName
();
}
}
typedef
struct
{
typedef
struct
{
zcl_basicAttr_t
basicAttrs_temp
;
zcl_basicAttr_t
basicAttrs_temp
;
zcl_identifyAttr_t
identifyAttrs_temp
;
zcl_identifyAttr_t
identifyAttrs_temp
;
...
@@ -295,6 +289,8 @@ void kZclClusterPermitReportTableInit(BindObjSt clusterBindList[], uint8_t size)
...
@@ -295,6 +289,8 @@ void kZclClusterPermitReportTableInit(BindObjSt clusterBindList[], uint8_t size)
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
i
].
cluster
=
clusterBindList
[
i
].
cluster
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
i
].
cluster
=
clusterBindList
[
i
].
cluster
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
i
].
reportEnable
=
false
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
i
].
reportEnable
=
false
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
i
].
sceneRecallFlg
=
false
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
i
].
sceneRecallFlg
=
false
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
i
].
reportGatewayEnable
=
false
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
i
].
reportChildDeviceEnable
=
false
;
}
}
g_stZclClusterReportPermitTable
.
size
=
size
;
g_stZclClusterReportPermitTable
.
size
=
size
;
}
}
...
@@ -326,13 +322,15 @@ bool kZclClusterGetPermitReportInfo(uint8_t endpoint, uint16_t cluster, ZclRepor
...
@@ -326,13 +322,15 @@ bool kZclClusterGetPermitReportInfo(uint8_t endpoint, uint16_t cluster, ZclRepor
zclReportPermit
->
cluster
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
cluster
;
zclReportPermit
->
cluster
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
cluster
;
zclReportPermit
->
reportEnable
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportEnable
;
zclReportPermit
->
reportEnable
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportEnable
;
zclReportPermit
->
sceneRecallFlg
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
sceneRecallFlg
;
zclReportPermit
->
sceneRecallFlg
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
sceneRecallFlg
;
zclReportPermit
->
reportGatewayEnable
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportGatewayEnable
;
zclReportPermit
->
reportChildDeviceEnable
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportChildDeviceEnable
;
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
//permit info set
//permit info set
bool
kZclClusterSetPermitReportInfo
(
uint8_t
endpoint
,
uint16_t
cluster
,
bool
reportEnable
,
bool
sceneRecallFlg
)
bool
kZclClusterSetPermitReportInfo
(
uint8_t
endpoint
,
uint16_t
cluster
,
bool
reportEnable
,
bool
sceneRecallFlg
,
bool
reportGatewayEnable
,
bool
reportChildDeviceEnable
,
uint8_t
*
maskEui64Addr
,
uint8_t
dest_endpoint
)
{
{
bool
ret
=
false
;
bool
ret
=
false
;
...
@@ -347,6 +345,14 @@ bool kZclClusterSetPermitReportInfo(uint8_t endpoint, uint16_t cluster, bool rep
...
@@ -347,6 +345,14 @@ bool kZclClusterSetPermitReportInfo(uint8_t endpoint, uint16_t cluster, bool rep
if
(
index
!=
0xFF
){
if
(
index
!=
0xFF
){
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportEnable
=
reportEnable
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportEnable
=
reportEnable
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
sceneRecallFlg
=
sceneRecallFlg
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
sceneRecallFlg
=
sceneRecallFlg
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportGatewayEnable
=
reportGatewayEnable
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportChildDeviceEnable
=
reportChildDeviceEnable
;
if
(
maskEui64Addr
!=
NULL
){
memcpy
(
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
maskEui64Addr
,
maskEui64Addr
,
8
);
}
else
{
memset
(
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
maskEui64Addr
,
0xFF
,
8
);
}
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
dest_endpoint
=
dest_endpoint
;
ret
=
true
;
ret
=
true
;
}
}
}
else
{
//㲥
}
else
{
//㲥
...
@@ -356,6 +362,14 @@ bool kZclClusterSetPermitReportInfo(uint8_t endpoint, uint16_t cluster, bool rep
...
@@ -356,6 +362,14 @@ bool kZclClusterSetPermitReportInfo(uint8_t endpoint, uint16_t cluster, bool rep
if
(
index
!=
0xFF
){
if
(
index
!=
0xFF
){
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportEnable
=
reportEnable
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportEnable
=
reportEnable
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
sceneRecallFlg
=
sceneRecallFlg
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
sceneRecallFlg
=
sceneRecallFlg
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportGatewayEnable
=
reportGatewayEnable
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportChildDeviceEnable
=
reportChildDeviceEnable
;
if
(
maskEui64Addr
!=
NULL
){
memcpy
(
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
maskEui64Addr
,
maskEui64Addr
,
8
);
}
else
{
memset
(
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
maskEui64Addr
,
0xFF
,
8
);
}
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
dest_endpoint
=
dest_endpoint
;
ret
=
true
;
ret
=
true
;
}
}
}
}
...
@@ -377,9 +391,10 @@ kk_err_t kZclOnOffClusterServerInit(pOnOffClusterOnOffStatusCallback pOnOffStatu
...
@@ -377,9 +391,10 @@ kk_err_t kZclOnOffClusterServerInit(pOnOffClusterOnOffStatusCallback pOnOffStatu
void
ON_OFF_Cmd_Handler
(
uint8_t
endpoint
,
bool
onoff
)
void
ON_OFF_Cmd_Handler
(
uint8_t
endpoint
,
bool
onoff
)
{
{
OnOffStatusEnum
on_off_ctr
=
(
OnOffStatusEnum
)
onoff
;
OnOffStatusEnum
on_off_ctr
=
(
OnOffStatusEnum
)
onoff
;
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_CLUSTER_GEN_ON_OFF
,
true
,
false
,
true
,
true
,
NULL
,
RESET_ENDPOINT
);
kZclOnOffClusterServerOnOffControl
(
endpoint
,
on_off_ctr
);
kZclOnOffClusterServerOnOffControl
(
endpoint
,
on_off_ctr
);
}
}
/* DESP: Modified attribute reporting interface, reference from SDK callback[emberAfReportingAttributeChangeCallback].
/* DESP: Modified attribute reporting interface, reference from SDK callback[emberAfReportingAttributeChangeCallback].
* Auth: dingmz_frc.20190701.
* Auth: dingmz_frc.20190701.
* */
* */
...
@@ -388,6 +403,7 @@ void kOptTunnelReportingPlagiarizeOriginal(uint8_t endpoint, uint16_t clusterId,
...
@@ -388,6 +403,7 @@ void kOptTunnelReportingPlagiarizeOriginal(uint8_t endpoint, uint16_t clusterId,
if
(
!
zb_bindingTblSearched
(
clusterId
,
endpoint
)){
if
(
!
zb_bindingTblSearched
(
clusterId
,
endpoint
)){
return
;
return
;
}
}
iKonkeAfSelfPrint
(
"######kOptTunnelReportingPlagiarizeOriginal111111
\r\n
"
);
for
(
u8
i
=
0
;
i
<
ZCL_REPORTING_TABLE_NUM
;
i
++
){
for
(
u8
i
=
0
;
i
<
ZCL_REPORTING_TABLE_NUM
;
i
++
){
reportCfgInfo_t
*
pEntry
=
&
reportingTab
.
reportCfgInfo
[
i
];
reportCfgInfo_t
*
pEntry
=
&
reportingTab
.
reportCfgInfo
[
i
];
if
(
pEntry
->
endPoint
==
endpoint
if
(
pEntry
->
endPoint
==
endpoint
...
@@ -404,6 +420,7 @@ void kOptTunnelReportingPlagiarizeOriginal(uint8_t endpoint, uint16_t clusterId,
...
@@ -404,6 +420,7 @@ void kOptTunnelReportingPlagiarizeOriginal(uint8_t endpoint, uint16_t clusterId,
ZB_EXCEPTION_POST
(
SYS_EXCEPTTION_ZB_ZCL_ENTRY
);
ZB_EXCEPTION_POST
(
SYS_EXCEPTTION_ZB_ZCL_ENTRY
);
return
;
return
;
}
}
u16
len
=
zcl_getAttrSize
(
pAttrEntry
->
type
,
pAttrEntry
->
data
);
u16
len
=
zcl_getAttrSize
(
pAttrEntry
->
type
,
pAttrEntry
->
data
);
len
=
(
len
>
8
)
?
(
8
)
:
(
len
);
len
=
(
len
>
8
)
?
(
8
)
:
(
len
);
...
@@ -415,5 +432,43 @@ void kOptTunnelReportingPlagiarizeOriginal(uint8_t endpoint, uint16_t clusterId,
...
@@ -415,5 +432,43 @@ void kOptTunnelReportingPlagiarizeOriginal(uint8_t endpoint, uint16_t clusterId,
pEntry
->
clusterID
,
pAttrEntry
->
id
,
pAttrEntry
->
type
,
pAttrEntry
->
data
);
pEntry
->
clusterID
,
pAttrEntry
->
id
,
pAttrEntry
->
type
,
pAttrEntry
->
data
);
}
}
}
}
}
void
kOptTunnelReportingStatus
(
uint8_t
endpoint
,
uint16_t
clusterId
,
uint16_t
attributeId
)
{
if
(
!
zb_bindingTblSearched
(
clusterId
,
endpoint
)){
return
;
}
iKonkeAfSelfPrint
(
"######kOptTunnelReportingStatus111111
\r\n
"
);
for
(
u8
i
=
0
;
i
<
ZCL_REPORTING_TABLE_NUM
;
i
++
){
reportCfgInfo_t
*
pEntry
=
&
reportingTab
.
reportCfgInfo
[
i
];
if
(
pEntry
->
endPoint
==
endpoint
&&
pEntry
->
clusterID
==
clusterId
&&
pEntry
->
attrID
==
attributeId
)
{
epInfo_t
dstEpInfo
;
TL_SETSTRUCTCONTENT
(
dstEpInfo
,
0
);
dstEpInfo
.
dstAddrMode
=
APS_SHORT_DSTADDR_WITHEP
;
dstEpInfo
.
dstEp
=
0x01
;
dstEpInfo
.
dstAddr
.
shortAddr
=
0x0000
;
dstEpInfo
.
profileId
=
pEntry
->
profileID
;
dstEpInfo
.
txOptions
=
0
;
dstEpInfo
.
radius
=
0
;
zclAttrInfo_t
*
pAttrEntry
=
zcl_findAttribute
(
pEntry
->
endPoint
,
pEntry
->
clusterID
,
pEntry
->
attrID
);
if
(
!
pAttrEntry
){
//should not happen.
ZB_EXCEPTION_POST
(
SYS_EXCEPTTION_ZB_ZCL_ENTRY
);
return
;
}
u16
len
=
zcl_getAttrSize
(
pAttrEntry
->
type
,
pAttrEntry
->
data
);
len
=
(
len
>
8
)
?
(
8
)
:
(
len
);
//store for next compare
memcpy
(
pEntry
->
prevData
,
pAttrEntry
->
data
,
len
);
zcl_sendReportCmd
(
pEntry
->
endPoint
,
&
dstEpInfo
,
TRUE
,
ZCL_FRAME_SERVER_CLIENT_DIR
,
pEntry
->
clusterID
,
pAttrEntry
->
id
,
pAttrEntry
->
type
,
pAttrEntry
->
data
);
}
}
}
}
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-cluster.h
View file @
b1dbfcb7
...
@@ -9,9 +9,20 @@
...
@@ -9,9 +9,20 @@
#include "zcl.h"
#include "zcl.h"
#include "ikk-network.h"
#include "ikk-network.h"
typedef
struct
{
uint8_t
endpoint
;
uint8_t
onOffValue
;
bool
isMultiContorl
;
//whether multi-control, used to judge whether send response or multi-control
bool
isSendResponse
;
addrExt_t
maskEui64Addr
;
uint8_t
dest_endpoint
;
}
ZclOnOffControlInfoSt
;
typedef
enum
{
EOOS_OFF
=
0
,
EOOS_ON
,
EOOS_UNKNOW
}
OnOffStatusEnum
;
typedef
enum
{
EOOS_OFF
=
0
,
EOOS_ON
,
EOOS_UNKNOW
}
OnOffStatusEnum
;
typedef
enum
{
EOOC_OFF
=
0
,
EOOC_ON
,
EOOC_TOGGLE
,
EOOC_UNKNOW
}
OnOffCtrlEnum
;
typedef
enum
{
EOOC_OFF
=
0
,
EOOC_ON
,
EOOC_TOGGLE
,
EOOC_UNKNOW
}
OnOffCtrlEnum
;
#define RESET_ENDPOINT 0xFE
#define ZCL_CMD_ONOFF_OFF 0x00
#define ZCL_CMD_ONOFF_OFF 0x00
#define ZCL_CMD_ONOFF_ON 0x01
#define ZCL_CMD_ONOFF_ON 0x01
#define ZCL_CMD_ONOFF_TOGGLE 0x02
#define ZCL_CMD_ONOFF_TOGGLE 0x02
...
@@ -19,12 +30,15 @@ typedef enum{ EOOC_OFF = 0, EOOC_ON, EOOC_TOGGLE, EOOC_UNKNOW }OnOffCtrlEnum;
...
@@ -19,12 +30,15 @@ typedef enum{ EOOC_OFF = 0, EOOC_ON, EOOC_TOGGLE, EOOC_UNKNOW }OnOffCtrlEnum;
#define ZCL_ONOFF_STATUS_OFF 0x00
#define ZCL_ONOFF_STATUS_OFF 0x00
#define ZCL_ONOFF_STATUS_ON 0x01
#define ZCL_ONOFF_STATUS_ON 0x01
typedef
struct
tag_zcl_report_table
{
typedef
struct
tag_zcl_report_table
{
uint8_t
endpoint
;
uint8_t
endpoint
;
uint16_t
cluster
;
uint16_t
cluster
;
bool
reportEnable
;
bool
reportEnable
;
bool
sceneRecallFlg
;
bool
sceneRecallFlg
;
bool
reportGatewayEnable
;
bool
reportChildDeviceEnable
;
addrExt_t
maskEui64Addr
;
uint8_t
dest_endpoint
;
}
ZclReportTableSt
;
}
ZclReportTableSt
;
#define MAX_ATTR_CHANGE_SUPPORT_NUMS 8
#define MAX_ATTR_CHANGE_SUPPORT_NUMS 8
...
@@ -61,7 +75,9 @@ kk_err_t kZclOnOffClusterServerOnOffControl(uint8_t endpoint, OnOffCtrlEnum ctrl
...
@@ -61,7 +75,9 @@ kk_err_t kZclOnOffClusterServerOnOffControl(uint8_t endpoint, OnOffCtrlEnum ctrl
bool
Get_Model_ID
(
uint8_t
*
ModeID
);
bool
Get_Model_ID
(
uint8_t
*
ModeID
);
bool
kkClusterGetReportingPeriod
(
uint8_t
endpoint
,
uint16_t
cluster_id
,
uint16_t
attribute_id
,
uint16_t
*
min_interval
,
uint16_t
*
max_interval
);
bool
kkClusterGetReportingPeriod
(
uint8_t
endpoint
,
uint16_t
cluster_id
,
uint16_t
attribute_id
,
uint16_t
*
min_interval
,
uint16_t
*
max_interval
);
void
kOptTunnelReportingPlagiarizeOriginal
(
uint8_t
endpoint
,
uint16_t
clusterId
,
uint16_t
attributeId
);
void
kOptTunnelReportingPlagiarizeOriginal
(
uint8_t
endpoint
,
uint16_t
clusterId
,
uint16_t
attributeId
);
void
kOptTunnelReportingStatus
(
uint8_t
endpoint
,
uint16_t
clusterId
,
uint16_t
attributeId
);
void
kZclClusterPermitReportTableInit
(
BindObjSt
clusterBindList
[],
uint8_t
size
);
void
kZclClusterPermitReportTableInit
(
BindObjSt
clusterBindList
[],
uint8_t
size
);
bool
kZclClusterGetPermitReportInfo
(
uint8_t
endpoint
,
uint16_t
cluster
,
ZclReportTableSt
*
zclReportPermit
);
bool
kZclClusterGetPermitReportInfo
(
uint8_t
endpoint
,
uint16_t
cluster
,
ZclReportTableSt
*
zclReportPermit
);
bool
kZclClusterSetPermitReportInfo
(
uint8_t
endpoint
,
uint16_t
cluster
,
bool
reportEnable
,
bool
sceneRecallFlg
);
bool
kZclClusterSetPermitReportInfo
(
uint8_t
endpoint
,
uint16_t
cluster
,
bool
reportEnable
,
bool
sceneRecallFlg
,
bool
reportGatewayEnable
,
bool
reportChildDeviceEnable
,
uint8_t
*
maskEui64Addr
,
uint8_t
dest_endpoint
);
#endif
/* _SAMPLE_LIGHT_H_ */
#endif
/* _SAMPLE_LIGHT_H_ */
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-command.c
View file @
b1dbfcb7
...
@@ -56,7 +56,7 @@ uint16_t kCmdGetMsgCrc16Value( uint8_t* msg, uint8_t len)
...
@@ -56,7 +56,7 @@ uint16_t kCmdGetMsgCrc16Value( uint8_t* msg, uint8_t len)
/* DESP: remap opcode, arg direction 0: FCC0->AA55 1:AA55->FCC0
/* DESP: remap opcode, arg direction 0: FCC0->AA55 1:AA55->FCC0
* Auth:
* Auth:
* */
* */
uint16_t
kCmdOpcodeRemap
(
uint16_t
Opcode
,
uint8_t
direction
)
static
uint16_t
kCmdOpcodeRemap
(
uint16_t
Opcode
,
uint8_t
direction
)
{
{
for
(
uint8_t
i
=
0
;
i
<
(
sizeof
(
opcodeReampTable
)
/
(
2
*
sizeof
(
uint16_t
)));
i
++
)
{
for
(
uint8_t
i
=
0
;
i
<
(
sizeof
(
opcodeReampTable
)
/
(
2
*
sizeof
(
uint16_t
)));
i
++
)
{
if
(
opcodeReampTable
[
i
][
0
]
==
Opcode
)
{
if
(
opcodeReampTable
[
i
][
0
]
==
Opcode
)
{
...
@@ -66,7 +66,6 @@ uint16_t kCmdOpcodeRemap(uint16_t Opcode, uint8_t direction)
...
@@ -66,7 +66,6 @@ uint16_t kCmdOpcodeRemap(uint16_t Opcode, uint8_t direction)
return
0xFFFF
;
return
0xFFFF
;
}
}
kk_err_t
kCmdGeneralMsgPaser
(
UMsgNodeSt
*
pMsgNode
,
ComPortEm
port
,
DataField_st
*
pDataOut
)
kk_err_t
kCmdGeneralMsgPaser
(
UMsgNodeSt
*
pMsgNode
,
ComPortEm
port
,
DataField_st
*
pDataOut
)
{
{
//UMsgNodeSt uMsgNode = {0};
//UMsgNodeSt uMsgNode = {0};
...
@@ -144,7 +143,7 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
...
@@ -144,7 +143,7 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
//check install code length 20200725
//check install code length 20200725
uint8_t
length
=
data
.
u8ARG
[
0
];
uint8_t
length
=
data
.
u8ARG
[
0
];
if
(
length
!=
16
)
{
if
(
length
!=
16
)
{
//如果不是16位的数据就不做任何改变,只回复
send_buf
.
u8ARG
[
0
]
=
ERR_FORMAT
;
send_buf
.
u8ARG
[
0
]
=
ERR_FORMAT
;
send_buf
.
u8ARG
[
1
]
=
data
.
u8ARG
[
0
];
send_buf
.
u8ARG
[
1
]
=
data
.
u8ARG
[
0
];
memcpy
(
&
send_buf
.
u8ARG
[
2
],
&
data
.
u8ARG
[
1
],
length
);
memcpy
(
&
send_buf
.
u8ARG
[
2
],
&
data
.
u8ARG
[
1
],
length
);
...
@@ -247,9 +246,9 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
...
@@ -247,9 +246,9 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
memset
(
buffer
,
0
,
33
);
memset
(
buffer
,
0
,
33
);
uint8_t
*
data
=
ISN_TOKEN_GET
();
uint8_t
*
data
=
ISN_TOKEN_GET
();
iKonkeAfSelfPrint
(
"len %x
\r\n
"
,
data
[
0
]);
iKonkeAfSelfPrintBuffer
(
data
+
1
,
32
);
length
=
data
[
0
];
length
=
data
[
0
];
iKonkeAfSelfPrint
(
"read ISN len %x
\r\n
"
,
data
[
0
]);
iKonkeAfSelfPrintBuffer
(
data
+
1
,
32
);
memcpy
(
buffer
,
data
,
length
+
1
);
memcpy
(
buffer
,
data
,
length
+
1
);
if
(
length
>
32
)
{
if
(
length
>
32
)
{
...
@@ -268,7 +267,7 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
...
@@ -268,7 +267,7 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
{
{
uint8_t
mac_length
=
0x00
;
uint8_t
mac_length
=
0x00
;
addrExt_t
addr
,
local_addr
;
addrExt_t
addr
,
local_addr
;
flash_read
(
CFG_MAC_ADDRESS
,
8
,(
uint8_t
*
)
local_addr
);
zb_getLocalExtAddr
(
local_addr
);
mac_length
=
data
.
u8ARG
[
0
];
mac_length
=
data
.
u8ARG
[
0
];
if
(
mac_length
!=
8
)
{
if
(
mac_length
!=
8
)
{
...
@@ -293,8 +292,7 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
...
@@ -293,8 +292,7 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
case
(
UART_MSG_READ_MAC_CODE_OPCODE
):
//ok
case
(
UART_MSG_READ_MAC_CODE_OPCODE
):
//ok
{
{
addrExt_t
addr
;
addrExt_t
addr
;
flash_read
(
CFG_MAC_ADDRESS
,
8
,(
uint8_t
*
)
addr
);
zb_getLocalExtAddr
(
addr
);
// zb_getLocalExtAddr(addr);
send_buf
.
u8ARG
[
0
]
=
0x00
;
send_buf
.
u8ARG
[
0
]
=
0x00
;
send_buf
.
u8ARG
[
1
]
=
0x08
;
send_buf
.
u8ARG
[
1
]
=
0x08
;
...
@@ -403,82 +401,48 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
...
@@ -403,82 +401,48 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
}
}
case
(
UART_MSG_WRITE_INTERPAN_PARA_OPCODE
):
case
(
UART_MSG_WRITE_INTERPAN_PARA_OPCODE
):
{
{
extern
void
GetInterpanPara
(
uint8_t
*
enable
,
uint8_t
*
channel
,
uint16_t
*
panId
);
uint8_t
enable
=
0
;
uint8_t
enable
=
0
;
uint16_t
panId
=
0
;
uint8_t
channel
=
0
;
uint8_t
channel
=
0
;
int8_t
radioTxPower
=
0
;
uint16_t
panId
=
0
;
enable
=
data
.
u8ARG
[
0
];
enable
=
data
.
u8ARG
[
0
];
channel
=
data
.
u8ARG
[
1
];
channel
=
data
.
u8ARG
[
1
];
panId
=
UINT16_HL
(
data
.
u8ARG
[
2
],
data
.
u8ARG
[
3
]);
panId
=
UINT16_HL
(
data
.
u8ARG
[
2
],
data
.
u8ARG
[
3
]);
radioTxPower
=
data
.
u8ARG
[
4
];
if
(
enable
==
1
)
SetInterpanPara
(
channel
,
panId
);
zb_factoryReset
(
);
GetInterpanPara
(
&
enable
,
&
channel
,
&
panId
);
SetInterpanPara
(
channel
,
panId
,
enable
);
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
memcpy
(
&
send_buf
.
u8ARG
[
1
],
&
data
.
u8ARG
[
0
],
data
.
u8ArgLen
);
send_buf
.
u8ARG
[
1
]
=
0xff
;
send_buf
.
u8ARG
[
2
]
=
channel
;
send_buf
.
u8ARG
[
3
]
=
HI_UINT16
(
panId
);
send_buf
.
u8ARG
[
4
]
=
LO_UINT16
(
panId
);
send_buf
.
u8ArgLen
=
5
;
reply_control_field
=
Z_TO_H_NO_ACK
;
break
;
}
send_buf
.
u8ArgLen
=
data
.
u8ArgLen
+
1
;
case
(
UART_MSG_READ_INTERPAN_PARA_OPCODE
):
{
extern
void
GetInterpanPara
(
uint8_t
*
enable
,
uint8_t
*
channel
,
uint16_t
*
panId
);
uint8_t
enable
=
0
;
uint8_t
channel
=
0
;
uint16_t
panId
=
0
;
GetInterpanPara
(
&
enable
,
&
channel
,
&
panId
);
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
send_buf
.
u8ARG
[
1
]
=
enable
;
send_buf
.
u8ARG
[
2
]
=
channel
;
send_buf
.
u8ARG
[
3
]
=
HI_UINT16
(
panId
);
send_buf
.
u8ARG
[
4
]
=
LO_UINT16
(
panId
);
send_buf
.
u8ArgLen
=
5
;
reply_control_field
=
Z_TO_H_NO_ACK
;
reply_control_field
=
Z_TO_H_NO_ACK
;
break
;
break
;
}
}
// case (UART_MSG_READ_DEVICE_SNAP_OPCODE):
// {
// uint8_t tmp_value = 0;
// uint8_t send_length = 0;
//
// send_buf.u8ARG[send_length++] = ERR_OK;
// emberAfReadAttribute(1, ZCL_BASIC_CLUSTER_ID, ZCL_STACK_VERSION_ATTRIBUTE_ID, CLUSTER_MASK_SERVER,
// &tmp_value, 1, NULL);
// send_buf.u8ARG[send_length++] = tmp_value;
//
// EmberEUI64 localEui64;
// EmberNodeType nodeTypeResult = 0xFF;
// EmberNetworkParameters networkParams;
// emberAfGetEui64(localEui64);
// SWAP_EUI64((uint8_t *)&localEui64);
//
// if(emberAfNetworkState() == EMBER_JOINED_NETWORK) {
// emberAfGetNetworkParameters(&nodeTypeResult, &networkParams);
// send_buf.u8ARG[send_length++] = HI_UINT16(networkParams.panId);
// send_buf.u8ARG[send_length++] = LO_UINT16(networkParams.panId);
// send_buf.u8ARG[send_length++] = HI_UINT16(emberAfGetNodeId());
// send_buf.u8ARG[send_length++] = LO_UINT16(emberAfGetNodeId());
// memcpy(&send_buf.u8ARG[send_length], localEui64, 8);
// send_length = send_length + 8;
// send_buf.u8ARG[send_length++] = networkParams.radioChannel;
// send_buf.u8ARG[send_length++] = networkParams.radioTxPower;
// } else {
// emberAfGetNetworkParameters(&nodeTypeResult, &networkParams);
// send_buf.u8ARG[send_length++] = 0xff;
// send_buf.u8ARG[send_length++] = 0xff;
// send_buf.u8ARG[send_length++] = 0xff;
// send_buf.u8ARG[send_length++] = 0xff;
// memcpy(&send_buf.u8ARG[send_length], localEui64, 8);
// send_length = send_length + 8;
// send_buf.u8ARG[send_length++] = 0xff;
// send_buf.u8ARG[send_length++] = 0xff;
// }
// //SV
// emberAfReadAttribute(1, ZCL_BASIC_CLUSTER_ID, ZCL_APPLICATION_VERSION_ATTRIBUTE_ID, CLUSTER_MASK_SERVER,
// &tmp_value, 1, NULL);
// send_buf.u8ARG[send_length++] = tmp_value;
// //HV
// emberAfReadAttribute(1, ZCL_BASIC_CLUSTER_ID, ZCL_HW_VERSION_ATTRIBUTE_ID, CLUSTER_MASK_SERVER,
// &tmp_value, 1, NULL);
// send_buf.u8ARG[send_length++] = tmp_value;
// memset(&send_buf.u8ARG[send_length], 0xff, 4);
// send_length = send_length + 4;
// send_buf.u8ARG[send_length++] = emberAfNetworkState();
//
// send_buf.u8ArgLen = send_length;
// //send_buf.u8Datalen = send_length + 3;
// reply_control_field = Z_TO_H_NO_ACK;
//
// break;
// }
//nwk operation request
//nwk operation request
case
(
UART_MSG_QUERY_NWK_STATUS_REQUEST_OPCODE
):
//ok
case
(
UART_MSG_QUERY_NWK_STATUS_REQUEST_OPCODE
):
//ok
{
{
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-command.h
View file @
b1dbfcb7
...
@@ -34,7 +34,6 @@ typedef struct{
...
@@ -34,7 +34,6 @@ typedef struct{
}
MsgFrameworkFormat_st
;
}
MsgFrameworkFormat_st
;
kk_err_t
kCmdGeneralMsgPaser
(
UMsgNodeSt
*
pMsgNode
,
ComPortEm
port
,
DataField_st
*
pDataOut
);
kk_err_t
kCmdGeneralMsgPaser
(
UMsgNodeSt
*
pMsgNode
,
ComPortEm
port
,
DataField_st
*
pDataOut
);
uint16_t
kCmdOpcodeRemap
(
uint16_t
Opcode
,
uint8_t
direction
);
uint16_t
kCmdGetMsgCrc16Value
(
uint8_t
*
msg
,
uint8_t
len
);
uint16_t
kCmdGetMsgCrc16Value
(
uint8_t
*
msg
,
uint8_t
len
);
uint8_t
kCmdMsgDataSentByPort
(
uint8_t
u8Control_Field
,
DataField_st
data
,
bool
isGetResult
,
ComPortEm
port
);
uint8_t
kCmdMsgDataSentByPort
(
uint8_t
u8Control_Field
,
DataField_st
data
,
bool
isGetResult
,
ComPortEm
port
);
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-debug.h
View file @
b1dbfcb7
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
#define __IKONKE_MODULE_DEBUG_H______________________________
#define __IKONKE_MODULE_DEBUG_H______________________________
#define IKONKE_DEBUG_LOG_ENABLE (
0
) // ENABLE
#define IKONKE_DEBUG_LOG_ENABLE (
1
) // ENABLE
#define PROMPT_DSR ""
#define PROMPT_DSR ""
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-factory-test.c
View file @
b1dbfcb7
...
@@ -3,16 +3,30 @@
...
@@ -3,16 +3,30 @@
#include "ikk-token.h"
#include "ikk-token.h"
#include "ikk-common-utils.h"
#include "ikk-common-utils.h"
#include "../driver/ikk-button.h"
#include "../driver/ikk-button.h"
#include "../driver/ikk-led.h"
#include "../driver/ikk-relay.h"
#include "ikk-cluster.h"
#include "ikk-command.h"
#define AGING_TEST_15MIN_VALUE 0xA1
#define AGING_TEST_15MIN_VALUE 0xA1
#define AGING_TEST_4HOU_VALUE 0xA2
#define AGING_TEST_4HOU_VALUE 0xA2
#define AGINE_TEST_DONE_VALUE 0xFA
#define AGINE_TEST_DONE_VALUE 0xFA
//已经置老化标志
//已经置老化标志
#define SINGLE_BOARD_TEST_DONE_VALUE 0xF1
//锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷
#define SINGLE_BOARD_TEST_DONE_VALUE 0xF1
#define FULL_DEVICE_TEST_DONE_VALUE 0xF2
//锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟?
#define FULL_DEVICE_TEST_DONE_VALUE 0xF2
#define FORCE_FACTORY_TEST_VALUE 0xF8
//锟斤拷锟斤拷锟斤拷锟斤拷锟角匡拷锟斤拷顺锟?
#define FORCE_FACTORY_TEST_VALUE 0xF8
#define TEST_INIT_VALUE 0xFF
#define LED_SLOW_BLINK_ON_TIME_MS 800
#define LED_SLOW_BLINK_OFF_TIME_MS 800
#define LED_FAST_BLINK_ON_TIME_MS 200
#define LED_FAST_BLINK_OFF_TIME_MS 200
#define LED_SLOW_BLINK_CONTINUE_TIME_MS (60 * 1000)
#define LED_FAST_BLINK_CONTINUE_TIME_MS (5 * 1000)
u8
g_u8NetworkSteeringChannel
=
20
;
u16
g_u16NetworkSteeringPanId
=
0xFFFF
;
static
ev_timer_event_t
*
kFactoryTestEvt
=
NULL
;
static
ev_timer_event_t
*
kFactoryTestEvt
=
NULL
;
s32
kFactoryTestEventHandler
(
void
*
arg
);
s32
kFactoryTestEventHandler
(
void
*
arg
);
...
@@ -28,17 +42,20 @@ typedef struct{
...
@@ -28,17 +42,20 @@ typedef struct{
uint32_t
u32FirstBtnLongPressedCountDown
;
uint32_t
u32FirstBtnLongPressedCountDown
;
}
FactoryTestControllerSt
;
}
FactoryTestControllerSt
;
typedef
enum
{
FT_SINGLE_BOARD_TEST
=
0x01
,
FT_FULL_DEVICE_TEST
=
0x02
,
FT_NORMAL_DONE
=
0x04
,
FT_FORCE_EXIT
=
0x08
}
FT_STATUS
;
typedef
enum
{
FT_SINGLE_BOARD_TEST
=
0x01
,
FT_FULL_DEVICE_TEST
=
0x02
,
FT_NORMAL_DONE
=
0x04
,
FT_FORCE_EXIT
=
0x08
,
FT_AGING_DONE
=
0X10
,}
FT_STATUS
;
extern
LedConfSt
g_ledConfList
;
FactoryTestControllerSt
g_stFactoryTestControllerList
[
AGING_EXIT_MAX_BTN_NUM
]
\
FactoryTestControllerSt
g_stFactoryTestControllerList
[
AGING_EXIT_MAX_BTN_NUM
]
\
=
{{
BTN_UNKNOW_ID
,
0
,
0
,
0
,
EBA_IDLE
,
EBA_IDLE
,
0
,
0
},
{
BTN_UNKNOW_ID
,
0
,
0
,
0
,
EBA_IDLE
,
EBA_IDLE
,
0
,
0
}};
=
{{
BTN_UNKNOW_ID
,
0
,
0
,
0
,
EBA_IDLE
,
EBA_IDLE
,
0
,
0
},
{
BTN_UNKNOW_ID
,
0
,
0
,
0
,
EBA_IDLE
,
EBA_IDLE
,
0
,
0
}};
static
FactoryTestStatusEnum
g_eFactoryTestStatus
=
FTS_NORMAL
;
FactoryTestStatusEnum
g_eFactoryTestStatus
=
FTS_NORMAL
;
static
FactoryTestStatusEnum
g_eLastFactoryTestStatus
=
FTS_NORMAL
;
static
FactoryTestStatusEnum
g_eLastFactoryTestStatus
=
FTS_NORMAL
;
static
uint32_t
g_u32AgingTotalTimeMS
=
0
;
static
uint32_t
g_u32AgingTotalTimeMS
=
0
;
static
uint32_t
g_u32AgingMaxTimeMS
=
0
;
static
pFactoryTestPollCallback
g_pFactoryTestPollCallback
=
NULL
;
static
pFactoryTestPollCallback
g_pFactoryTestPollCallback
=
NULL
;
static
uint8_t
g_u8LongPressedKeyIndex
=
0
;
static
uint8_t
g_u8LongPressedKeyIndex
=
0
;
static
uint32_t
g_u32Count
=
0
;
static
uint32_t
g_u32Count
=
0
;
static
uint8_t
g_u8FactoryTestLedId
=
LED_UNKNOW_ID
;
//just for single board test or full device test
/* DESP: get the test index by id.
/* DESP: get the test index by id.
* Auth: mazj.20200227.
* Auth: mazj.20200227.
* */
* */
...
@@ -102,6 +119,10 @@ uint8_t kGetFactoryTestValueStatus(void)
...
@@ -102,6 +119,10 @@ uint8_t kGetFactoryTestValueStatus(void)
status
=
status
|
FT_FORCE_EXIT
;
status
=
status
|
FT_FORCE_EXIT
;
}
else
if
(
kGetSingleBoardValue
()
!=
SINGLE_BOARD_TEST_DONE_VALUE
)
{
}
else
if
(
kGetSingleBoardValue
()
!=
SINGLE_BOARD_TEST_DONE_VALUE
)
{
status
=
status
|
FT_SINGLE_BOARD_TEST
;
status
=
status
|
FT_SINGLE_BOARD_TEST
;
}
else
{
#if !Z30_DEVICE_FULL_DEVICE_ENBALE
status
=
status
|
FT_NORMAL_DONE
;
#endif
}
}
#endif
#endif
...
@@ -109,12 +130,17 @@ uint8_t kGetFactoryTestValueStatus(void)
...
@@ -109,12 +130,17 @@ uint8_t kGetFactoryTestValueStatus(void)
if
(
kGetFullDeviceValue
()
==
FORCE_FACTORY_TEST_VALUE
)
{
if
(
kGetFullDeviceValue
()
==
FORCE_FACTORY_TEST_VALUE
)
{
status
=
status
|
FT_FORCE_EXIT
;
status
=
status
|
FT_FORCE_EXIT
;
}
else
if
(
kGetFullDeviceValue
()
!=
FULL_DEVICE_TEST_DONE_VALUE
){
}
else
if
(
kGetFullDeviceValue
()
!=
FULL_DEVICE_TEST_DONE_VALUE
){
status
=
status
|
FT_FULL_DEVICE_TEST
;
status
=
status
|
FT_FULL_DEVICE_TEST
;
//没过整机时该标志位是1,单板整机都过的时候第三位bit为1,最后两个bit位为0
}
else
if
(
kGetSingleBoardValue
()
==
SINGLE_BOARD_TEST_DONE_VALUE
)
{
}
else
{
status
=
status
|
FT_NORMAL_DONE
;
status
=
status
|
FT_NORMAL_DONE
;
}
}
#endif
#endif
#if Z30_DEVICE_AGING_ENABLE
if
(
kGetAgingTestValue
()
!=
AGINE_TEST_DONE_VALUE
)
{
status
=
status
|
FT_AGING_DONE
;
}
#endif
return
status
;
return
status
;
}
}
nv_sts_t
General_Set_Factory_Test
(
nv_item_t
items
,
uint8_t
value
)
nv_sts_t
General_Set_Factory_Test
(
nv_item_t
items
,
uint8_t
value
)
...
@@ -157,15 +183,34 @@ void kFactoryTestBtnActionCallback(unsigned char button_id, BtnActionEnum actio
...
@@ -157,15 +183,34 @@ void kFactoryTestBtnActionCallback(unsigned char button_id, BtnActionEnum actio
g_stFactoryTestControllerList
[
u8FactoryTestIndex
].
eCurrentBtnAction
=
action
;
g_stFactoryTestControllerList
[
u8FactoryTestIndex
].
eCurrentBtnAction
=
action
;
//松手复位,触摸按键长时间按着也会自动松手
//松手复位,触摸按键长时间按着也会自动松手
if
(
g_eFactoryTestStatus
==
FTS_AGING_WAITING
&&
g_stFactoryTestControllerList
[
g_u8LongPressedKeyIndex
].
eCurrentBtnAction
==
EBA_RELEASED
){
if
(
(
g_eFactoryTestStatus
==
FTS_WAITING_RELEASED
||
g_eFactoryTestStatus
==
FTS_FORCE_EXIT
)
&&
g_stFactoryTestControllerList
[
g_u8LongPressedKeyIndex
].
eCurrentBtnAction
==
EBA_RELEASED
){
g_eFactoryTestStatus
=
FTS_
AGING_
FORCE_REBOOT
;
g_eFactoryTestStatus
=
FTS_FORCE_REBOOT
;
g_u32Count
=
FACTORY_TEST_POLL_TIMES
;
//快点执行自定义函数
g_u32Count
=
FACTORY_TEST_POLL_TIMES
;
//快点执行自定义函数
iKonkeAfSelfPrint
(
"
######33333333333333333
FactoryTest Released
\r\n
"
);
iKonkeAfSelfPrint
(
"FactoryTest Released
\r\n
"
);
}
}
}
}
}
}
}
}
static
uint16_t
opcodeReampTable
[][
2
]
=
{
//FCC0, AA55
{
0xF0
,
0xED14
},
//打开产测
{
0xF1
,
0xED04
},
//退出产测
{
0xF2
,
0xED05
},
//查询产测(按bit位)
{
0xF8
,
0xED16
},
//查询产测(按字节)
};
static
uint16_t
kCmdOpcodeRemap
(
uint16_t
Opcode
,
uint8_t
direction
)
{
for
(
uint8_t
i
=
0
;
i
<
(
sizeof
(
opcodeReampTable
)
/
(
2
*
sizeof
(
uint16_t
)));
i
++
)
{
if
(
opcodeReampTable
[
i
][
0
]
==
Opcode
)
{
return
opcodeReampTable
[
i
][
1
];
}
}
return
0xFFFF
;
}
kk_err_t
kkFactoryMsgInComingPaser
(
UMsgNodeSt
*
pMsgNode
,
ComPortEm
port
,
DataField_st
*
pDataOut
)
kk_err_t
kkFactoryMsgInComingPaser
(
UMsgNodeSt
*
pMsgNode
,
ComPortEm
port
,
DataField_st
*
pDataOut
)
{
{
//UMsgNodeSt uMsgNode = {0};
//UMsgNodeSt uMsgNode = {0};
...
@@ -239,13 +284,23 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
...
@@ -239,13 +284,23 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
case
(
UART_MSG_QUERY_DEVICE_VERSION_OPCODE
):
case
(
UART_MSG_QUERY_DEVICE_VERSION_OPCODE
):
{
{
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
uint8_t
hardversion
=
0
;
uint8_t
softversion
=
0
;
status_t
status
;
zclAttrInfo_t
*
hwattrInfo
=
ReadServerAttribute
(
1
,
ZCL_CLUSTER_GEN_BASIC
,
ZCL_ATTRID_BASIC_HW_VER
,
&
status
);
hardversion
=
hwattrInfo
->
data
[
0
];
iKonkeAfSelfPrint
(
"hardversion = %x
\r\n
"
,
hwattrInfo
->
data
[
0
]);
zclAttrInfo_t
*
appattrInfo
=
ReadServerAttribute
(
1
,
ZCL_CLUSTER_GEN_BASIC
,
ZCL_ATTRID_BASIC_APP_VER
,
&
status
);
softversion
=
appattrInfo
->
data
[
0
];
iKonkeAfSelfPrint
(
"softversion = %x
\r\n
"
,
appattrInfo
->
data
[
0
]);
//wait to do
send_buf
.
u8ARG
[
1
]
=
hardversion
;
send_buf
.
u8ARG
[
1
]
=
0x20
;
send_buf
.
u8ARG
[
2
]
=
softversion
;
send_buf
.
u8ARG
[
2
]
=
0x20
;
send_buf
.
u8ARG
[
3
]
=
0XFF
;
send_buf
.
u8ARG
[
3
]
=
0XFF
;
send_buf
.
u8ARG
[
4
]
=
0XFF
;
send_buf
.
u8ARG
[
4
]
=
0XFF
;
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
;
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
send_buf
.
u8ArgLen
=
5
;
send_buf
.
u8ArgLen
=
5
;
reply_control_field
=
Z_TO_H_NO_ACK
;
reply_control_field
=
Z_TO_H_NO_ACK
;
break
;
break
;
...
@@ -272,26 +327,27 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
...
@@ -272,26 +327,27 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
}
}
case
(
UART_MSG_EXIT_FACTORY_TEST_OPCODE
):
case
(
UART_MSG_EXIT_FACTORY_TEST_OPCODE
):
{
{
uint8_t
token_data
=
0
;
if
(
data
.
u8ARG
[
0
]
&
0x01
)
if
(
data
.
u8ARG
[
0
]
&
0x01
)
{
{
kSetSingleBoardValue
(
SINGLE_BOARD_TEST_DONE_VALUE
);
kSetSingleBoardValue
(
SINGLE_BOARD_TEST_DONE_VALUE
);
iKonkeAfSelfPrint
(
"######kGetSingleBoardValue(%x)
\r\n
"
,
token_data
);
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
g_eFactoryTestStatus
=
FTS_SINGLE_BOARD_TEST_DONE
;
//单板结束,一直快闪
kLedOptTrigger
(
g_u8FactoryTestLedId
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
BLINK_DEAD
,
LED_ON
,
LED_ON
);
}
}
if
(
data
.
u8ARG
[
0
]
&
0x02
)
if
(
data
.
u8ARG
[
0
]
&
0x02
)
{
{
kSetFullDeviceValue
(
FULL_DEVICE_TEST_DONE_VALUE
);
kSetFullDeviceValue
(
FULL_DEVICE_TEST_DONE_VALUE
);
iKonkeAfSelfPrint
(
"######kGetFullBoardValue(%02x)
\r\n
"
,
token_data
);
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
g_eFactoryTestStatus
=
FTS_FULL_DEVICE_TEST_DONE
;
//整机结束,一直快闪
kLedOptTrigger
(
g_u8FactoryTestLedId
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
BLINK_DEAD
,
LED_ON
,
LED_ON
);
}
}
if
(
(
data
.
u8ARG
[
0
]
&
0x03
==
0x03
)
||
(
data
.
u8ARG
[
0
]
&
0x04
==
0x04
)
)
if
(
(
data
.
u8ARG
[
0
]
&
0x03
)
==
0x03
||
(
data
.
u8ARG
[
0
]
&
0x04
)
==
0x04
)
{
{
kSetAgingTestValue
(
AGINE_TEST_DONE_VALUE
);
kSetAgingTestValue
(
AGINE_TEST_DONE_VALUE
);
iKonkeAfSelfPrint
(
"######kGetAgingTestValue(%02x)
\r\n
"
,
token_data
);
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
g_eFactoryTestStatus
=
FTS_AGING_DONE
;
//g_eFactoryTestStatus = FTS_AGING_DONE;//指令退老化和正常4h退老化区分
}
}
send_buf
.
u8ARG
[
1
]
=
data
.
u8ARG
[
0
];
send_buf
.
u8ARG
[
1
]
=
data
.
u8ARG
[
0
];
send_buf
.
u8ArgLen
=
2
;
send_buf
.
u8ArgLen
=
2
;
...
@@ -307,7 +363,7 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
...
@@ -307,7 +363,7 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
iKonkeAfSelfPrint
(
"######UART_MSG_QUERY_FACTORY_INFO_OPCODE(%d)
\r\n
"
,
send_buf
.
u8ArgLen
);
iKonkeAfSelfPrint
(
"######UART_MSG_QUERY_FACTORY_INFO_OPCODE(%d)
\r\n
"
,
send_buf
.
u8ArgLen
);
break
;
break
;
}
}
case
UART_MSG_QUERY_SWITCH_ONOFF_OPCODE
:
case
(
UART_MSG_QUERY_SWITCH_ONOFF_OPCODE
)
:
{
{
extern
uint8_t
Key_Press_Test_Flag
[
5
];
extern
uint8_t
Key_Press_Test_Flag
[
5
];
for
(
uint8_t
i
=
0
;
i
<
6
;
i
++
){
for
(
uint8_t
i
=
0
;
i
<
6
;
i
++
){
...
@@ -342,25 +398,116 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
...
@@ -342,25 +398,116 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
send_buf
.
u8ARG
[
1
]
=
kGetFactoryTestValueStatus
();
send_buf
.
u8ARG
[
1
]
=
kGetFactoryTestValueStatus
();
break
;
break
;
}
}
case
UART_MSG_ONOFF_SWITCH_OPCODE
:
case
UART_MSG_ONOFF_SWITCH_OPCODE
:
{
{
uint8_t
err
=
0
;
uint8_t
command
=
data
.
u8ARG
[
0
];
if
(
data
.
u8ARG
[
0
]
==
0x01
)
{
if
(
command
==
1
){
//控制命令
for
(
uint8_t
i
=
1
;
i
<
9
;
i
++
)
{
for
(
uint8_t
i
=
0
;
i
<
9
;
i
++
){
if
(
data
.
u8ARG
[
i
]
==
0x00
)
{
// on
if
(
i
<
4
){
kZclOnOffClusterServerOnOffControl
(
i
,
EOOC_OFF
);
if
(
data
.
u8ARG
[
i
+
1
]
==
1
)
}
else
if
(
data
.
u8ARG
[
i
]
==
0x01
)
{
kZclOnOffClusterServerOnOffControl
(
i
+
1
,
1
);
kZclOnOffClusterServerOnOffControl
(
i
,
EOOC_ON
);
else
if
(
data
.
u8ARG
[
i
+
1
]
==
0
)
kZclOnOffClusterServerOnOffControl
(
i
+
1
,
0
);
}
else
{
data
.
u8ARG
[
i
+
1
]
=
0xff
;
}
}
}
}
}
}
//get onoff state
for
(
uint8_t
i
=
1
;
i
<
9
;
i
++
)
{
err
=
kZclOnOffClusterServerOnOffGet
(
i
);
send_buf
.
u8ARG
[
i
]
=
(
err
==
EOOS_ON
)
?
1
:
(
err
==
EOOS_UNKNOW
?
0xFF
:
0
);
}
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
memcpy
(
&
send_buf
.
u8ARG
[
1
],
&
data
.
u8ARG
[
1
],
8
);
send_buf
.
u8ArgLen
=
9
;
send_buf
.
u8ArgLen
=
10
;
break
;
}
//Auth: han_frc.20220105.
case
UART_MSG_QUERY_FACTORY_STATE_OPCODE
:
{
uint8_t
factoryTest
=
0
;
uint8_t
singleBoardTest
=
0
;
uint8_t
fullDeviceTest
=
0
;
uint8_t
agingTest
=
0
;
singleBoardTest
=
kGetSingleBoardValue
();
fullDeviceTest
=
kGetFullDeviceValue
();
agingTest
=
kGetAgingTestValue
();
if
(((
singleBoardTest
==
FORCE_FACTORY_TEST_VALUE
)
||
(
singleBoardTest
==
SINGLE_BOARD_TEST_DONE_VALUE
))
\
&&
((
fullDeviceTest
==
FULL_DEVICE_TEST_DONE_VALUE
)
||
(
fullDeviceTest
==
SINGLE_BOARD_TEST_DONE_VALUE
)))
{
factoryTest
=
0x00
;
}
else
{
factoryTest
=
0x01
;
}
#if Z30_DEVICE_SINGLE_BOARD_ENABLE
if
(
singleBoardTest
==
SINGLE_BOARD_TEST_DONE_VALUE
)
{
singleBoardTest
=
0x01
;
}
else
if
(
singleBoardTest
==
FORCE_FACTORY_TEST_VALUE
)
{
singleBoardTest
=
0x02
;
}
else
{
singleBoardTest
=
0x00
;
}
#else
singleBoardTest
=
0xff
;
#endif
#if Z30_DEVICE_FULL_DEVICE_ENBALE
if
(
fullDeviceTest
==
FULL_DEVICE_TEST_DONE_VALUE
)
{
fullDeviceTest
=
0x01
;
}
else
if
(
fullDeviceTest
==
FORCE_FACTORY_TEST_VALUE
)
{
fullDeviceTest
=
0x02
;
}
else
{
fullDeviceTest
=
0x00
;
}
#else
fullDeviceTest
=
0xff
;
#endif
#if Z30_DEVICE_AGING_ENABLE
if
(
agingTest
==
AGINE_TEST_DONE_VALUE
)
{
agingTest
=
0x01
;
}
else
if
(
agingTest
==
FORCE_FACTORY_TEST_VALUE
)
{
agingTest
=
0x02
;
}
else
{
agingTest
=
0x00
;
}
#else
agingTest
=
0xff
;
#endif
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
send_buf
.
u8ARG
[
1
]
=
factoryTest
;
send_buf
.
u8ARG
[
2
]
=
singleBoardTest
;
send_buf
.
u8ARG
[
3
]
=
fullDeviceTest
;
send_buf
.
u8ARG
[
4
]
=
agingTest
;
send_buf
.
u8ArgLen
=
5
;
break
;
}
//Auth: han_frc.20220105.
case
UART_MSG_LED_GROUP_CONTROL_OPCODE
:
{
for
(
uint8_t
i
=
5
;
i
<
9
;
i
++
){
if
(
data
.
u8ARG
[
i
]
!=
0x00
){
send_buf
.
u8ARG
[
0
]
=
ERR_EXEC_FAILED
;
}
}
for
(
uint8_t
i
=
0
;
i
<
5
;
i
++
){
if
(
data
.
u8ARG
[
i
]
==
0x81
){
if
(
send_buf
.
u8ARG
[
0
]
!=
ERR_EXEC_FAILED
){
LED_OPT_ON
(
i
+
1
);
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
}
}
else
if
(
data
.
u8ARG
[
i
]
==
0x80
){
if
(
send_buf
.
u8ARG
[
0
]
!=
ERR_EXEC_FAILED
){
LED_OPT_OFF
(
i
+
1
);
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
}
}
else
{
if
(
data
.
u8ARG
[
i
]
==
0x00
&&
send_buf
.
u8ARG
[
0
]
!=
ERR_EXEC_FAILED
){
send_buf
.
u8ARG
[
0
]
=
ERR_OK
;
}
else
{
send_buf
.
u8ARG
[
0
]
=
ERR_EXEC_FAILED
;
}
}
}
send_buf
.
u8ArgLen
=
1
;
break
;
break
;
}
}
default:
default:
...
@@ -381,9 +528,11 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
...
@@ -381,9 +528,11 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
}
}
}
}
void
kFactoryTestInit
(
pFactoryTestPollCallback
callback
,
FactoryTestConfSt
conf_list
[],
uint8_t
btn_num
)
void
kFactoryTestInit
(
pFactoryTestPollCallback
callback
,
FactoryTestConfSt
conf_list
[],
uint8_t
btn_num
,
uint8_t
led_id
)
{
{
g_eFactoryTestStatus
=
FTS_NORMAL
;
#if FACTORY_TEST_ENABLE
#if FACTORY_TEST_ENABLE
iKonkeAfSelfPrint
(
"######kFactoryTestInit11111111111111111111111111111111111111
\r\n
"
);
if
(
NULL
==
callback
||
NULL
==
conf_list
||
btn_num
>
AGING_EXIT_MAX_BTN_NUM
)
{
if
(
NULL
==
callback
||
NULL
==
conf_list
||
btn_num
>
AGING_EXIT_MAX_BTN_NUM
)
{
return
;
return
;
}
}
...
@@ -397,25 +546,73 @@ void kFactoryTestInit(pFactoryTestPollCallback callback, FactoryTestConfSt conf_
...
@@ -397,25 +546,73 @@ void kFactoryTestInit(pFactoryTestPollCallback callback, FactoryTestConfSt conf_
iKonkeAfSelfPrint
(
"######g_stFactoryTestControllerList[0].u8BtnId= %d u8BtnLongPressTimes = %d
\r\n
"
,
g_stFactoryTestControllerList
[
0
].
u8BtnId
,
g_stFactoryTestControllerList
[
0
].
u8BtnLongPressTimes
);
iKonkeAfSelfPrint
(
"######g_stFactoryTestControllerList[0].u8BtnId= %d u8BtnLongPressTimes = %d
\r\n
"
,
g_stFactoryTestControllerList
[
0
].
u8BtnId
,
g_stFactoryTestControllerList
[
0
].
u8BtnLongPressTimes
);
iKonkeAfSelfPrint
(
"######g_stFactoryTestControllerList[1].u8BtnId= %d u8BtnLongPressTimes = %d
\r\n
"
,
g_stFactoryTestControllerList
[
1
].
u8BtnId
,
g_stFactoryTestControllerList
[
1
].
u8BtnLongPressTimes
);
iKonkeAfSelfPrint
(
"######g_stFactoryTestControllerList[1].u8BtnId= %d u8BtnLongPressTimes = %d
\r\n
"
,
g_stFactoryTestControllerList
[
1
].
u8BtnId
,
g_stFactoryTestControllerList
[
1
].
u8BtnLongPressTimes
);
if
(
kGetAgingTestValue
()
!=
AGINE_TEST_DONE_VALUE
){
#if Z30_DEVICE_SINGLE_BOARD_ENABLE //优先级 单板 老化 整机
if
((
g_eFactoryTestStatus
==
FTS_NORMAL
)
&&
(
kGetSingleBoardValue
()
!=
SINGLE_BOARD_TEST_DONE_VALUE
)
\
&&
(
kGetSingleBoardValue
()
!=
FORCE_FACTORY_TEST_VALUE
)){
kBtnaIRQCallbackRegister
(
kFactoryTestBtnActionCallback
);
g_eFactoryTestStatus
=
FTS_SINGLE_BOARD_TEST
;
g_pFactoryTestPollCallback
=
callback
;
g_u8FactoryTestLedId
=
led_id
;
if
(
kFactoryTestEvt
){
TL_ZB_TIMER_CANCEL
(
&
kFactoryTestEvt
);
}
kFactoryTestEvt
=
TL_ZB_TIMER_SCHEDULE
(
kFactoryTestEventHandler
,
NULL
,
1000
);
}
#endif
#if Z30_DEVICE_AGING_ENABLE
if
((
g_eFactoryTestStatus
==
FTS_NORMAL
)
&&
(
kGetAgingTestValue
()
!=
AGINE_TEST_DONE_VALUE
)
\
&&
(
kGetAgingTestValue
()
!=
FORCE_FACTORY_TEST_VALUE
)){
kSetAgingTestValue
(
AGING_TEST_15MIN_VALUE
);
kSetAgingTestValue
(
AGING_TEST_15MIN_VALUE
);
kBtnaIRQCallbackRegister
(
kFactoryTestBtnActionCallback
);
g_eFactoryTestStatus
=
FTS_START
;
g_eFactoryTestStatus
=
FTS_START
;
//启动老化事件
g_pFactoryTestPollCallback
=
callback
;
g_u8FactoryTestLedId
=
led_id
;
g_u32AgingTotalTimeMS
=
0
;
//load aging time
g_u32AgingMaxTimeMS
=
kGetAgingMaxTime
();
if
(
kFactoryTestEvt
){
if
(
kFactoryTestEvt
){
TL_ZB_TIMER_CANCEL
(
&
kFactoryTestEvt
);
TL_ZB_TIMER_CANCEL
(
&
kFactoryTestEvt
);
}
}
kFactoryTestEvt
=
TL_ZB_TIMER_SCHEDULE
(
kFactoryTestEventHandler
,
NULL
,
1000
);
kFactoryTestEvt
=
TL_ZB_TIMER_SCHEDULE
(
kFactoryTestEventHandler
,
NULL
,
1000
);
g_eFactoryTestStatus
=
FTS_START
;
}
else
{
g_eFactoryTestStatus
=
FTS_NORMAL
;
}
}
kBtnaIRQCallbackRegister
(
kFactoryTestBtnActionCallback
);
#endif
g_pFactoryTestPollCallback
=
callback
;
g_u32AgingTotalTimeMS
=
0
;
#if Z30_DEVICE_FULL_DEVICE_ENBALE
// g_u8AgingForceExitBtnId = btn_id;
if
((
g_eFactoryTestStatus
==
FTS_NORMAL
)
&&
(
kGetFullDeviceValue
()
!=
FULL_DEVICE_TEST_DONE_VALUE
)
\
&&
(
kGetFullDeviceValue
()
!=
FORCE_FACTORY_TEST_VALUE
)){
kBtnaIRQCallbackRegister
(
kFactoryTestBtnActionCallback
);
g_eFactoryTestStatus
=
FTS_FULL_DEVICE_TEST
;
g_pFactoryTestPollCallback
=
callback
;
g_u8FactoryTestLedId
=
led_id
;
if
(
kFactoryTestEvt
){
TL_ZB_TIMER_CANCEL
(
&
kFactoryTestEvt
);
}
kFactoryTestEvt
=
TL_ZB_TIMER_SCHEDULE
(
kFactoryTestEventHandler
,
NULL
,
1000
);
}
#endif
iKonkeAfSelfPrint
(
"
\r\n
######kFactoryTestInit status1111111111111111111111111(%d)
\r\n
"
,
g_eFactoryTestStatus
);
//led indicate
if
(
g_eFactoryTestStatus
==
FTS_SINGLE_BOARD_TEST
)
{
kLedOptTrigger
(
g_u8FactoryTestLedId
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
1
,
LED_ON
,
LED_OFF
);
}
else
if
(
g_eFactoryTestStatus
==
FTS_FULL_DEVICE_TEST
)
{
kLedOptTrigger
(
g_u8FactoryTestLedId
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
2
,
LED_ON
,
LED_OFF
);
}
else
if
(
g_eFactoryTestStatus
==
FTS_START
)
{
kLedOptTrigger
(
g_u8FactoryTestLedId
,
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_OFF_TIME_MS
,
3
,
LED_ON
,
LED_OFF
);
}
#else
#else
uint8_t
value
=
TEST_INIT_VALUE
;
uint8_t
value
=
TEST_INIT_VALUE
;
kSetAgingTestValue
(
value
);
kSetAgingTestValue
(
value
);
kSetSingleBoardValue
(
value
);
kSetFullDeviceValue
(
value
);
g_eFactoryTestStatus
=
FTS_NORMAL
;
g_eFactoryTestStatus
=
FTS_NORMAL
;
#endif
#endif
}
}
...
@@ -427,7 +624,7 @@ s32 kFactoryTestEventHandler(void *arg)
...
@@ -427,7 +624,7 @@ s32 kFactoryTestEventHandler(void *arg)
g_u32AgingTotalTimeMS
+=
FACTORY_TEST_POLL_TTME_1S
;
g_u32AgingTotalTimeMS
+=
FACTORY_TEST_POLL_TTME_1S
;
if
(
g_eFactoryTestStatus
!=
FTS_
AGING_WAITING
&&
g_eFactoryTestStatus
!=
FTS_AGING
_WAITING_SECOND_PRESS
){
if
(
g_eFactoryTestStatus
!=
FTS_
WAITING_RELEASED
&&
g_eFactoryTestStatus
!=
FTS
_WAITING_SECOND_PRESS
){
switch
(
g_eFactoryTestStatus
)
switch
(
g_eFactoryTestStatus
)
{
{
case
(
FTS_START
):
case
(
FTS_START
):
...
@@ -449,8 +646,8 @@ s32 kFactoryTestEventHandler(void *arg)
...
@@ -449,8 +646,8 @@ s32 kFactoryTestEventHandler(void *arg)
g_eFactoryTestStatus
=
FTS_AGING_4HOU
;
g_eFactoryTestStatus
=
FTS_AGING_4HOU
;
break
;
break
;
case
(
FTS_AGING_4HOU
):
case
(
FTS_AGING_4HOU
):
//上电后
12小时老化时间到,12
小时内不可以短按按键和长按,不能组网
//上电后
4小时老化时间到,4
小时内不可以短按按键和长按,不能组网
if
(
g_u32AgingTotalTimeMS
>=
FACTORY_TEST_4HOU_
MS
){
if
(
g_u32AgingTotalTimeMS
>=
g_u32AgingMaxTime
MS
){
kSetAgingTestValue
(
AGINE_TEST_DONE_VALUE
);
kSetAgingTestValue
(
AGINE_TEST_DONE_VALUE
);
g_eFactoryTestStatus
=
FTS_AGING_DONE
;
g_eFactoryTestStatus
=
FTS_AGING_DONE
;
}
}
...
@@ -460,16 +657,20 @@ s32 kFactoryTestEventHandler(void *arg)
...
@@ -460,16 +657,20 @@ s32 kFactoryTestEventHandler(void *arg)
//return;
//return;
g_u32Count
=
FACTORY_TEST_POLL_TIMES
;
//快点处理自定义函数
g_u32Count
=
FACTORY_TEST_POLL_TIMES
;
//快点处理自定义函数
break
;
break
;
case
(
FTS_
AGING_
FORCE_EXIT
):
case
(
FTS_FORCE_EXIT
):
g_eFactoryTestStatus
=
FTS_
AGING_WAITING
;
g_eFactoryTestStatus
=
FTS_
WAITING_RELEASED
;
break
;
break
;
case
(
FTS_
AGING_WAITING
):
case
(
FTS_
WAITING_RELEASED
):
break
;
break
;
case
(
FTS_
AGING_
FIRST_LONG_PRESSED
):
case
(
FTS_FIRST_LONG_PRESSED
):
g_eFactoryTestStatus
=
FTS_
AGING_
WAITING_SECOND_PRESS
;
g_eFactoryTestStatus
=
FTS_WAITING_SECOND_PRESS
;
break
;
break
;
case
(
FTS_
AGING_
WAITING_SECOND_PRESS
):
case
(
FTS_WAITING_SECOND_PRESS
):
break
;
break
;
//Auth: han_frc.20220105.
case
(
FTS_NORMAL
):
iKonkeAfSelfPrint
(
"######FTS_NORMAL STOP EVENT!!!!!!!!!!!
\r\n
"
);
return
-
1
;
default:
default:
break
;
break
;
}
}
...
@@ -508,8 +709,8 @@ s32 kFactoryTestEventHandler(void *arg)
...
@@ -508,8 +709,8 @@ s32 kFactoryTestEventHandler(void *arg)
if
(
g_stFactoryTestControllerList
[
index
].
u8BtnLongPressTimes
==
LONG_PRESS_1_TIMES
\
if
(
g_stFactoryTestControllerList
[
index
].
u8BtnLongPressTimes
==
LONG_PRESS_1_TIMES
\
||
g_stFactoryTestControllerList
[
index
].
bIsFirstBtnLongPressed
==
true
){
||
g_stFactoryTestControllerList
[
index
].
bIsFirstBtnLongPressed
==
true
){
//successfully exit aging test
//successfully exit aging test
g_eFactoryTestStatus
=
FTS_
AGING_
FORCE_EXIT
;
g_eFactoryTestStatus
=
FTS_FORCE_EXIT
;
kSetAgingTestValue
(
AGINE_TEST_DONE
_VALUE
);
kSetAgingTestValue
(
FORCE_FACTORY_TEST
_VALUE
);
#if Z30_DEVICE_SINGLE_BOARD_ENABLE
#if Z30_DEVICE_SINGLE_BOARD_ENABLE
if
(
kGetSingleBoardValue
()
!=
SINGLE_BOARD_TEST_DONE_VALUE
)
if
(
kGetSingleBoardValue
()
!=
SINGLE_BOARD_TEST_DONE_VALUE
)
kSetSingleBoardValue
(
FORCE_FACTORY_TEST_VALUE
);
kSetSingleBoardValue
(
FORCE_FACTORY_TEST_VALUE
);
...
@@ -532,7 +733,7 @@ s32 kFactoryTestEventHandler(void *arg)
...
@@ -532,7 +733,7 @@ s32 kFactoryTestEventHandler(void *arg)
g_u32Count
=
FACTORY_TEST_POLL_TIMES
;
//快点处理自定义函数
g_u32Count
=
FACTORY_TEST_POLL_TIMES
;
//快点处理自定义函数
//记录当前的老化状态
//记录当前的老化状态
g_eLastFactoryTestStatus
=
g_eFactoryTestStatus
;
g_eLastFactoryTestStatus
=
g_eFactoryTestStatus
;
g_eFactoryTestStatus
=
FTS_
AGING_
FIRST_LONG_PRESSED
;
g_eFactoryTestStatus
=
FTS_FIRST_LONG_PRESSED
;
iKonkeAfSelfPrint
(
"######2222222222222222222222 == 0
\r\n
"
);
iKonkeAfSelfPrint
(
"######2222222222222222222222 == 0
\r\n
"
);
}
}
...
@@ -570,5 +771,20 @@ s32 kFactoryTestEventHandler(void *arg)
...
@@ -570,5 +771,20 @@ s32 kFactoryTestEventHandler(void *arg)
return
0
;
return
0
;
}
}
//Auth: han_frc.20220105.
void
kSetAgingTestDone
(
void
)
{
kSetAgingTestValue
(
AGINE_TEST_DONE_VALUE
);
g_eFactoryTestStatus
=
FTS_NORMAL
;
}
void
kSetNetworkSteeringInfo
(
uint8_t
channel
,
uint16_t
PanId
)
{
if
(
channel
>=
15
&&
channel
<=
26
){
g_u8NetworkSteeringChannel
=
channel
;
}
if
(
0xFFFF
!=
PanId
){
g_u16NetworkSteeringPanId
=
PanId
;
}
}
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-factory-test.h
View file @
b1dbfcb7
...
@@ -19,14 +19,14 @@
...
@@ -19,14 +19,14 @@
#define TOUCH_KEY_LONG_PRESS_TIME_MS (5 * 1000)
#define TOUCH_KEY_LONG_PRESS_TIME_MS (5 * 1000)
#define MECHANICAL_KEY_LONG_PRESS_TIME_MS (20 * 1000)
#define MECHANICAL_KEY_LONG_PRESS_TIME_MS (20 * 1000)
#define FIRST_BTN_LONG_PRESSED_VALIED_TIME_MS (1
5
* 1000)
#define FIRST_BTN_LONG_PRESSED_VALIED_TIME_MS (1
0
* 1000)
#define FACTORY_TEST_POLL_TTME_1S (1 * 1000)
#define FACTORY_TEST_POLL_TTME_1S (1 * 1000)
#define FACTORY_TEST_POLL_TTME_10S (10 * 1000)
#define FACTORY_TEST_POLL_TTME_10S (10 * 1000)
#define FACTORY_TEST_POLL_TIMES (FACTORY_TEST_POLL_TTME_10S / FACTORY_TEST_POLL_TTME_1S)
#define FACTORY_TEST_POLL_TIMES (FACTORY_TEST_POLL_TTME_10S / FACTORY_TEST_POLL_TTME_1S)
#if AGING_DEBUG
#if AGING_DEBUG
#define FACTORY_TEST_15MIN_MS (2 * 60 * 1000)
#define FACTORY_TEST_15MIN_MS (2 * 60 * 1000)
#define FACTORY_TEST_4HOU_MS (
5 * 1
* 60 * 1000)
#define FACTORY_TEST_4HOU_MS (
1 * 15
* 60 * 1000)
#else
#else
#define FACTORY_TEST_15MIN_MS (15 * 60 * 1000)
#define FACTORY_TEST_15MIN_MS (15 * 60 * 1000)
#define FACTORY_TEST_4HOU_MS (4 * 60 * 60 * 1000)
#define FACTORY_TEST_4HOU_MS (4 * 60 * 60 * 1000)
...
@@ -42,11 +42,15 @@ typedef enum{
...
@@ -42,11 +42,15 @@ typedef enum{
FTS_AGING_4HOU_START
,
FTS_AGING_4HOU_START
,
FTS_AGING_4HOU
,
FTS_AGING_4HOU
,
FTS_AGING_DONE
,
FTS_AGING_DONE
,
FTS_AGING_FORCE_EXIT
,
FTS_FORCE_EXIT
,
FTS_AGING_WAITING
,
FTS_WAITING_RELEASED
,
//waiting key released
FTS_AGING_FORCE_REBOOT
,
FTS_FORCE_REBOOT
,
FTS_AGING_FIRST_LONG_PRESSED
,
FTS_FIRST_LONG_PRESSED
,
FTS_AGING_WAITING_SECOND_PRESS
FTS_WAITING_SECOND_PRESS
,
FTS_SINGLE_BOARD_TEST
,
FTS_FULL_DEVICE_TEST
,
FTS_SINGLE_BOARD_TEST_DONE
,
FTS_FULL_DEVICE_TEST_DONE
,
}
FactoryTestStatusEnum
;
}
FactoryTestStatusEnum
;
typedef
struct
{
typedef
struct
{
...
@@ -74,7 +78,12 @@ void kSetAgingMaxTime(uint16_t value);
...
@@ -74,7 +78,12 @@ void kSetAgingMaxTime(uint16_t value);
//获取当前产测状态
//获取当前产测状态
FactoryTestStatusEnum
kGetFactoryTestStatus
(
void
);
FactoryTestStatusEnum
kGetFactoryTestStatus
(
void
);
//void kGetFactoryTestBtnAction(uint8_t btn_id, BtnActionEnum action);
//void kGetFactoryTestBtnAction(uint8_t btn_id, BtnActionEnum action);
void
kFactoryTestInit
(
pFactoryTestPollCallback
callback
,
FactoryTestConfSt
conf_list
[],
uint8_t
btn_num
);
void
kFactoryTestInit
(
pFactoryTestPollCallback
callback
,
FactoryTestConfSt
conf_list
[],
uint8_t
btn_num
,
uint8_t
led_id
);
void
kSetNetworkSteeringInfo
(
uint8_t
channel
,
uint16_t
PanId
);
//Auth: han_frc.20220105.
void
kSetAgingTestDone
(
void
);
kk_err_t
kkFactoryMsgInComingPaser
(
UMsgNodeSt
*
pMsgNode
,
ComPortEm
port
,
DataField_st
*
pDataOut
);
kk_err_t
kkFactoryMsgInComingPaser
(
UMsgNodeSt
*
pMsgNode
,
ComPortEm
port
,
DataField_st
*
pDataOut
);
#endif
#endif
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-interpan.c
View file @
b1dbfcb7
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
#include "ikk-debug.h"
#include "ikk-debug.h"
#include "ikk-token.h"
#include "ikk-token.h"
#include "ikk-network.h"
#include "ikk-network.h"
#include "ikk-factory-test.h"
static
bool
gInterPanEnabled
;
// 1:enable
static
bool
gInterPanEnabled
;
// 1:enable
static
uint16_t
gInterPanID
=
0x1111
;
// 1:enable
static
uint16_t
gInterPanID
=
0x1111
;
// 1:enable
...
@@ -16,12 +16,10 @@ static uint8_t g_interpanChannel = 20;
...
@@ -16,12 +16,10 @@ static uint8_t g_interpanChannel = 20;
pInterPanMsgIncomingCallback
gInterPanMsgIncomingCallback
;
pInterPanMsgIncomingCallback
gInterPanMsgIncomingCallback
;
static
ev_timer_event_t
*
Interpan_timerEvt
=
NULL
;
static
ev_timer_event_t
*
Interpan_DelaySendEvt
=
NULL
;
static
ev_timer_event_t
*
Interpan_DelaySendEvt
=
NULL
;
static
INCOM_MESSAGE_INFO
sIncomingMessageInfo
=
{
0
};
static
INCOM_MESSAGE_INFO
sIncomingMessageInfo
=
{
0
};
static
s32
kInterPanEventHandler
(
void
);
static
s32
kInterPanDelaySendTestDataEventHandler
(
void
);
static
s32
kInterPanDelaySendTestDataEventHandler
(
void
);
/**
/**
* @brief Definition for Incoming cluster / Sever Cluster
* @brief Definition for Incoming cluster / Sever Cluster
...
@@ -99,18 +97,16 @@ void afInterpan_dataSendConfirm(void *arg)
...
@@ -99,18 +97,16 @@ void afInterpan_dataSendConfirm(void *arg)
}
}
bool
interpanleaveflg
=
false
;
void
kInterPanEnable
(
uint8_t
channel
)
void
kInterPanEnable
(
uint8_t
channel
)
{
{
rf_setChannel
(
channel
);
rf_setChannel
(
channel
);
printf
(
"kInterPanEnable enable,Regesiter Interpan Func,network = %d
\r\n
!!
\r\n
"
,
kNwkGetCurrentStatus
());
printf
(
"kInterPanEnable enable,Regesiter Interpan Func,network = %d
\r\n
!!
\r\n
"
,
kNwkGetCurrentStatus
());
if
(
kNwkGetCurrentStatus
()
==
ENS_LEAVED
)
{
if
(
zb_isDeviceJoinedNwk
()){
zb_factoryReset
();
af_endpointRegister
(
INTERPAN_ENDPOINT
,
(
af_simple_descriptor_t
*
)
&
kInterpanSimpleDesc
,
afInterpan_rx_handler
,
afInterpan_dataSendConfirm
);
interpanleaveflg
=
true
;
}
else
{
kNwkFactoryReset
(
false
);
}
}
af_endpointRegister
(
INTERPAN_ENDPOINT
,
(
af_simple_descriptor_t
*
)
&
kInterpanSimpleDesc
,
afInterpan_rx_handler
,
afInterpan_dataSendConfirm
);
}
}
void
kInterpanDisable
(
void
)
void
kInterpanDisable
(
void
)
...
@@ -128,19 +124,17 @@ void kInterpanDisable(void)
...
@@ -128,19 +124,17 @@ void kInterpanDisable(void)
void
kInterPanMoudleInit
(
pInterPanMsgIncomingCallback
pfunc_incoming
)
void
kInterPanMoudleInit
(
pInterPanMsgIncomingCallback
pfunc_incoming
)
{
{
if
(
kGetFactoryTestStatus
()
==
FTS_NORMAL
)
{
bool
interPanEnabledFlg
=
kGetInterpanEnableFlg
()
;
gInterPanEnabled
=
false
;
if
(
interPanEnabledFlg
)
{
af_endpointUnregister
(
INTERPAN_ENDPOINT
);
gInterPanEnabled
=
true
;
printf
(
"kInterPanEnable disable
\r\n
!!
\r\n
"
)
;
}
}
if
(
gInterPanEnabled
==
true
)
{
else
{
gInterPanEnabled
=
true
;
printf
(
"kInterPanEnable enable
\r\n
!!
\r\n
"
);
kInterPanEnable
(
INTERPAN_CHANNEL
);
kInterPanEnable
(
INTERPAN_CHANNEL
);
if
(
Interpan_timerEvt
){
if
(
!
zb_isDeviceJoinedNwk
())
{
TL_ZB_TIMER_CANCEL
(
&
Interpan_timerEvt
);
}
Interpan_timerEvt
=
TL_ZB_TIMER_SCHEDULE
(
kInterPanEventHandler
,
NULL
,
INTERPAN_AUTO_OFF_TIME
);
if
(
kNwkGetCurrentStatus
()
==
ENS_LEAVED
)
{
if
(
Interpan_DelaySendEvt
)
if
(
Interpan_DelaySendEvt
)
TL_ZB_TIMER_CANCEL
(
&
Interpan_DelaySendEvt
);
TL_ZB_TIMER_CANCEL
(
&
Interpan_DelaySendEvt
);
...
@@ -184,21 +178,21 @@ bool kInterPanSetEnableStatus(uint8_t enable)
...
@@ -184,21 +178,21 @@ bool kInterPanSetEnableStatus(uint8_t enable)
kSetInterpanEnableFlg
(
!
gInterPanEnabled
);
kSetInterpanEnableFlg
(
!
gInterPanEnabled
);
}
}
void
SetInterpanPara
(
uint8_t
channel
,
uint16_t
panid
,
bool
is_enable
)
void
SetInterpanPara
(
uint8_t
channel
,
uint16_t
panid
)
{
{
if
((
channel
!=
0xff
)
&&
(
channel
>=
11
)
&&
(
channel
<=
26
))
g_interpanChannel
=
channel
;
if
(
panid
!=
0xffff
)
if
(
panid
!=
0xffff
)
gInterPanID
=
panid
;
gInterPanID
=
panid
;
if
((
channel
!=
0xff
)
&&
(
channel
>=
11
)
&&
(
channel
<=
26
))
g_interpanChannel
=
channel
;
if
(
is_enable
)
{
gInterPanEnabled
=
TRUE
;
kSetInterpanEnableFlg
(
gInterPanEnabled
);
}
else
kInterpanDisable
();
}
}
void
GetInterpanPara
(
uint8_t
*
enable
,
uint8_t
*
channel
,
uint16_t
*
panId
)
{
*
enable
=
(
gInterPanEnabled
==
false
)
?
0x00
:
0x01
;
*
channel
=
g_interpanChannel
;
*
panId
=
gInterPanID
;
}
static
uint8_t
sSend_Count
=
0
;
static
uint8_t
sSend_Count
=
0
;
static
s32
kInterPanDelaySendTestDataEventHandler
(
void
)
static
s32
kInterPanDelaySendTestDataEventHandler
(
void
)
{
{
...
@@ -211,17 +205,6 @@ static s32 kInterPanDelaySendTestDataEventHandler(void )
...
@@ -211,17 +205,6 @@ static s32 kInterPanDelaySendTestDataEventHandler(void )
sSend_Count
=
0
;
sSend_Count
=
0
;
return
-
1
;
return
-
1
;
}
}
static
s32
kInterPanEventHandler
(
void
)
{
iKonkeAfSelfPrint
(
"kInterPanEventHandler
\r\n
"
);
if
(
gInterPanEnabled
==
true
)
{
af_endpointUnregister
(
INTERPAN_ENDPOINT
);
kInterPanSetEnableStatus
(
false
);
}
return
-
1
;
}
kk_err_t
kInterPanSend
(
UMsgNodeSt
*
pMsgNode
)
kk_err_t
kInterPanSend
(
UMsgNodeSt
*
pMsgNode
)
{
{
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-interpan.h
View file @
b1dbfcb7
...
@@ -12,7 +12,6 @@ extern const af_simple_descriptor_t kInterpanSimpleDesc;
...
@@ -12,7 +12,6 @@ extern const af_simple_descriptor_t kInterpanSimpleDesc;
#define INTERPAN_EVENT_INIT 0x00 // interPan Event
#define INTERPAN_EVENT_INIT 0x00 // interPan Event
#define INTERPAN_EVENT_OFF 0x01 //
#define INTERPAN_EVENT_OFF 0x01 //
#define INTERPAN_AUTO_OFF_TIME (10 * 60 * 1000)
#define INTERPAN_DELAY_SEND_INTERVAL (3 * 1000)
#define INTERPAN_DELAY_SEND_INTERVAL (3 * 1000)
#define INTERPAN_DELAY_SEND_TIMES (2)
#define INTERPAN_DELAY_SEND_TIMES (2)
#define INTERPAN_CHANNEL 20
#define INTERPAN_CHANNEL 20
...
@@ -30,7 +29,8 @@ typedef struct{
...
@@ -30,7 +29,8 @@ typedef struct{
uint8_t
reserved
[
8
];
uint8_t
reserved
[
8
];
}
INCOM_MESSAGE_INFO
;
}
INCOM_MESSAGE_INFO
;
void
SetInterpanPara
(
uint8_t
channel
,
uint16_t
panid
,
bool
is_enable
);
void
SetInterpanPara
(
uint8_t
channel
,
uint16_t
panid
);
void
GetInterpanPara
(
uint8_t
*
enable
,
uint8_t
*
channel
,
uint16_t
*
panId
);
void
afInterpan_dataSendConfirm
(
void
*
arg
);
void
afInterpan_dataSendConfirm
(
void
*
arg
);
void
afInterpan_rx_handler
(
void
*
arg
);
void
afInterpan_rx_handler
(
void
*
arg
);
void
kInterpanDisable
(
void
);
void
kInterpanDisable
(
void
);
...
@@ -38,5 +38,7 @@ kk_err_t kInterPanSend(UMsgNodeSt *pMsgNode);
...
@@ -38,5 +38,7 @@ kk_err_t kInterPanSend(UMsgNodeSt *pMsgNode);
void
kInterpan_Init
(
void
);
void
kInterpan_Init
(
void
);
bool
kInterPanSetEnableStatus
(
uint8_t
enable
);
bool
kInterPanSetEnableStatus
(
uint8_t
enable
);
bool
kInterPanGetEnableStatus
(
void
);
void
kInterPanMoudleInit
(
pInterPanMsgIncomingCallback
pfunc_incoming
);
void
kInterPanMoudleInit
(
pInterPanMsgIncomingCallback
pfunc_incoming
);
#endif
/* _SAMPLE_LIGHT_H_ */
#endif
/* _SAMPLE_LIGHT_H_ */
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-module-def.h
View file @
b1dbfcb7
...
@@ -86,6 +86,8 @@
...
@@ -86,6 +86,8 @@
#define UART_MSG_QUERY_SWITCH_ONOFF_OPCODE 0xED06
#define UART_MSG_QUERY_SWITCH_ONOFF_OPCODE 0xED06
#define UART_MSG_ENTER_FACTORY_TEST_OPCODE 0xED14
#define UART_MSG_ENTER_FACTORY_TEST_OPCODE 0xED14
#define UART_MSG_ONOFF_SWITCH_OPCODE 0xED15
#define UART_MSG_ONOFF_SWITCH_OPCODE 0xED15
#define UART_MSG_QUERY_FACTORY_STATE_OPCODE 0xED16
#define UART_MSG_LED_GROUP_CONTROL_OPCODE 0xED17
#define UART_MSG_GPIO_TEST_OPCODE 0xED10
#define UART_MSG_GPIO_TEST_OPCODE 0xED10
#define UART_MSG_READ_RSSI_REQUEST_OPCODE 0xED12
#define UART_MSG_READ_RSSI_REQUEST_OPCODE 0xED12
...
@@ -172,6 +174,7 @@ typedef enum {
...
@@ -172,6 +174,7 @@ typedef enum {
ERR_WRITE_FAILED
=
0x04
,
ERR_WRITE_FAILED
=
0x04
,
ERR_READ_WRITE_TIMEOUT
=
0x05
,
ERR_READ_WRITE_TIMEOUT
=
0x05
,
ERR_NOT_EXIST
=
0x06
,
ERR_NOT_EXIST
=
0x06
,
ERR_EXEC_FAILED
=
0xe0
,
ERR_UNKNOW
=
0xFF
,
ERR_UNKNOW
=
0xFF
,
}
ERR_RET_E
;
}
ERR_RET_E
;
typedef
enum
{
Z3D_COORDINATOR
=
0
,
Z3D_ROUTER
,
Z3D_ENDDEVICE
}
Z3DevTypeEm
;
typedef
enum
{
Z3D_COORDINATOR
=
0
,
Z3D_ROUTER
,
Z3D_ENDDEVICE
}
Z3DevTypeEm
;
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-network.c
View file @
b1dbfcb7
...
@@ -7,6 +7,7 @@
...
@@ -7,6 +7,7 @@
#include "ikk-cluster.h"
#include "ikk-cluster.h"
#include "ikk-interpan.h"
#include "ikk-interpan.h"
#include "ikk-factory-test.h"
#include "ikk-factory-test.h"
#include "ikk-ota.h"
#include "../../../../zigbee/aps/aps_api.h"
#include "../../../../zigbee/aps/aps_api.h"
#include "../../../../zigbee/common/includes/zb_common.h"
#include "../../../../zigbee/common/includes/zb_common.h"
/**********************************************************************
/**********************************************************************
...
@@ -24,6 +25,18 @@ addrExt_t g_Eui64GatewayAddr = {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
...
@@ -24,6 +25,18 @@ addrExt_t g_Eui64GatewayAddr = {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
BindObjSt
g_lstBindingClusterConf
[
BINDING_CLUSTER_MAXN
]
=
{
{
0
},{
0
},{
0
},{
0
},{
0
},{
0
},{
0
},{
0
}
};
BindObjSt
g_lstBindingClusterConf
[
BINDING_CLUSTER_MAXN
]
=
{
{
0
},{
0
},{
0
},{
0
},{
0
},{
0
},{
0
},{
0
}
};
// Automatic execution procedure after joined successed.
#define JOINED_PROCEDURE_NONE (0)
#define JOINED_PROCEDURE_REP_SNAPSHOT (1)
#define JOINED_PROCEDURE_REP_CMEI (2) //CMEI
#define JOINED_PROCEDURE_REP_ISN (3) //ISN
#define JOINED_PROCEDURE_END (0XFF)
uint8_t
u8ActionIndexAfterJoined
=
JOINED_PROCEDURE_NONE
;
static
ev_timer_event_t
*
kUserJoinSucceedProcedureEvent
=
NULL
;
s32
kUserJoinSucceedProcedureEventHandler
(
void
*
arg
);
void
kNwkjoinSucceedProcedureTrigger
(
uint32_t
u32StartDelayNms
);
static
bool
g_bJoiningReportFlg
=
false
;
//static value
//static value
static
bool
g_bIsNwkJoiningFlg
=
false
;
static
bool
g_bIsNwkJoiningFlg
=
false
;
...
@@ -75,7 +88,11 @@ bool IsSteeringNwkTimeout(void)
...
@@ -75,7 +88,11 @@ bool IsSteeringNwkTimeout(void)
void
Set_Nwk_Steering_Status
(
NwkSteeringStatusEnum
Status
)
void
Set_Nwk_Steering_Status
(
NwkSteeringStatusEnum
Status
)
{
{
NetworkSteeringState
=
Status
;
NetworkSteeringState
=
Status
;
iKonkeAfSelfPrint
(
" set NetworkSteeringState = %d
\r\n
"
,
NetworkSteeringState
);
if
(
zb_isDeviceJoinedNwk
()
&&
g_u32NwkJoiningCountdownCounter
>
0
){
g_bJoiningReportFlg
=
true
;
}
else
g_bJoiningReportFlg
=
false
;
iKonkeAfSelfPrint
(
" set NetworkSteeringState = %d,g_bJoiningReportFlg = %d
\r\n
"
,
NetworkSteeringState
,
g_bJoiningReportFlg
);
}
}
/* DESP: 高精度随机值接口,取值[minNum, maxNum].
/* DESP: 高精度随机值接口,取值[minNum, maxNum].
Auth: dingmz_frc.20190701.
Auth: dingmz_frc.20190701.
...
@@ -225,8 +242,17 @@ void kNwkGetGateWayEui64(addrExt_t eui64)
...
@@ -225,8 +242,17 @@ void kNwkGetGateWayEui64(addrExt_t eui64)
* */
* */
void
kNwkNetworkStatusNotifyCall
(
NwkStatusEnum
nwkst
)
void
kNwkNetworkStatusNotifyCall
(
NwkStatusEnum
nwkst
)
{
{
extern
bool
interpanleaveflg
;
if
(
interpanleaveflg
)
{
interpanleaveflg
=
false
;
return
;
}
g_eCurrentNetworkStatus
=
nwkst
;
g_eCurrentNetworkStatus
=
nwkst
;
iKonkeAfSelfPrint
(
"!!!g_eCurrentNetworkStatus = %d, g_eLastNetworkStatus = %d
\r\n
"
,
g_eCurrentNetworkStatus
,
g_eLastNetworkStatus
);
if
(
g_eCurrentNetworkStatus
!=
g_eLastNetworkStatus
)
{
if
(
g_eCurrentNetworkStatus
!=
g_eLastNetworkStatus
)
{
g_eLastNetworkStatus
=
g_eCurrentNetworkStatus
;
g_eLastNetworkStatus
=
g_eCurrentNetworkStatus
;
...
@@ -241,6 +267,14 @@ void kNwkNetworkStatusNotifyCall(NwkStatusEnum nwkst )
...
@@ -241,6 +267,14 @@ void kNwkNetworkStatusNotifyCall(NwkStatusEnum nwkst )
Gateway_IEEE_Addr_Save
(
addr
);
Gateway_IEEE_Addr_Save
(
addr
);
iKonkeAfSelfPrint
(
"#####kNwkNetworkStatusNotifyCall,Join Network addr=%x%x%x%x-%x%x%x%x!
\r\n
"
,
iKonkeAfSelfPrint
(
"#####kNwkNetworkStatusNotifyCall,Join Network addr=%x%x%x%x-%x%x%x%x!
\r\n
"
,
addr
[
0
],
addr
[
1
],
addr
[
2
],
addr
[
3
],
addr
[
4
],
addr
[
5
],
addr
[
6
],
addr
[
7
]);
addr
[
0
],
addr
[
1
],
addr
[
2
],
addr
[
3
],
addr
[
4
],
addr
[
5
],
addr
[
6
],
addr
[
7
]);
if
(
kIsKonkeRemoteGateway
()
==
true
){
uint32_t
randTimeMS
=
NWK_MIN_DELAY_TIME_MS_AFTER_POWER_ON
*
2
;
if
(
g_bJoiningReportFlg
==
false
){
iKonkeAfSelfPrint
(
"g_u32NwkJoiningCountdownCounter = %d,zb_isDeviceJoinedNwk = %d 222222222222
\r\n
"
,
g_u32NwkJoiningCountdownCounter
,
zb_isDeviceJoinedNwk
());
randTimeMS
=
kGetRandNum
(
RAND_MIN_NUM
,
RAND_MAX_NUM
);
}
kNwkjoinSucceedProcedureTrigger
(
randTimeMS
);
}
}
}
}
}
/* DESP: Network module tick loop handler interface.
/* DESP: Network module tick loop handler interface.
...
@@ -250,7 +284,7 @@ void kNwkModuleActionDetectCallback(void )
...
@@ -250,7 +284,7 @@ void kNwkModuleActionDetectCallback(void )
{
{
//static EmberNetworkStatus s_old_network_st = EMBER_NO_NETWORK;
//static EmberNetworkStatus s_old_network_st = EMBER_NO_NETWORK;
static
uint16_t
ucRestoreSteeringCount
=
0
;
static
uint16_t
ucRestoreSteeringCount
=
0
;
//iKonkeAfSelfPrint("g_u32NwkJoiningCountdownCounter = %d,zb_isDeviceJoinedNwk = %d 111111111111\r\n",g_u32NwkJoiningCountdownCounter,zb_isDeviceJoinedNwk());
// joining procedure
// joining procedure
if
(
g_u32NwkJoiningCountdownCounter
>
0
)
{
if
(
g_u32NwkJoiningCountdownCounter
>
0
)
{
--
g_u32NwkJoiningCountdownCounter
;
--
g_u32NwkJoiningCountdownCounter
;
...
@@ -380,17 +414,18 @@ bool kNwkIsExiting(void)
...
@@ -380,17 +414,18 @@ bool kNwkIsExiting(void)
* */
* */
void
kNwkFactoryReset
(
bool
is_nwk_indicator
)
void
kNwkFactoryReset
(
bool
is_nwk_indicator
)
{
{
iKonkeAfSelfPrint
(
"######kNwkFactoryReset is_nwk_indicator1111111111111111111111111(%d)
\r\n
"
,
is_nwk_indicator
);
kNwkJoiningStart
(
0
,
NULL
);
kNwkJoiningStart
(
0
,
NULL
);
memset
(
g_Eui64GatewayAddr
,
0xFF
,
sizeof
(
g_Eui64GatewayAddr
));
memset
(
g_Eui64GatewayAddr
,
0xFF
,
sizeof
(
g_Eui64GatewayAddr
));
Gateway_IEEE_Addr_Save
(
g_Eui64GatewayAddr
);
Gateway_IEEE_Addr_Save
(
g_Eui64GatewayAddr
);
// //add by maozj 20200320
// //add by maozj 20200320
//
#if Z30_DEVICE_OTA_ENABLE
#if Z30_DEVICE_OTA_ENABLE
//
kSetOTAStatus(OTA_NORMAL);
kSetOTAStatus
(
OTA_NORMAL
);
//
#endif
#endif
// EmberNodeId
node = 0xFFFF;
uint16_t
node
=
0xFFFF
;
//
kNwksaveNodeIdToFlash(node);
kNwksaveNodeIdToFlash
(
node
);
g_u32NwkJoiningCountdownCounter
=
0
;
g_u32NwkJoiningCountdownCounter
=
0
;
// g_u32EnrollResultCheckCounter = 0;
// g_u32EnrollResultCheckCounter = 0;
...
@@ -400,7 +435,8 @@ void kNwkFactoryReset(bool is_nwk_indicator)
...
@@ -400,7 +435,8 @@ void kNwkFactoryReset(bool is_nwk_indicator)
//led can blink when network leaved
//led can blink when network leaved
if
(
is_nwk_indicator
==
true
){
if
(
is_nwk_indicator
==
true
){
zb_factoryReset
();
if
(
zb_isDeviceJoinedNwk
())
//true status
zb_factoryReset
();
g_KeyPressCauasLeave
=
true
;
g_KeyPressCauasLeave
=
true
;
//add by maozj 20200407 for reset count down after network leaved
//add by maozj 20200407 for reset count down after network leaved
g_u32NwkExitCountDownCounter
=
MS2COUNT
(
LED_FAST_BLINK_CONTINUE_TIME_MS
);
g_u32NwkExitCountDownCounter
=
MS2COUNT
(
LED_FAST_BLINK_CONTINUE_TIME_MS
);
...
@@ -444,7 +480,7 @@ void NetworkLeaveHandler(nlme_leave_cnf_t *pLeaveCnf)
...
@@ -444,7 +480,7 @@ void NetworkLeaveHandler(nlme_leave_cnf_t *pLeaveCnf)
NwkStatusEnum
kNwkGetCurrentStatus
(
void
)
NwkStatusEnum
kNwkGetCurrentStatus
(
void
)
{
{
NwkStatusEnum
status
;
NwkStatusEnum
status
;
if
(
zb_isDeviceJoinedNwk
()){
if
(
zb_isDeviceJoinedNwk
()
||
(
kInterPanGetEnableStatus
())
){
status
=
ENS_ONLINE
;
status
=
ENS_ONLINE
;
g_bIsNwkJoiningFlg
=
false
;
g_bIsNwkJoiningFlg
=
false
;
}
}
...
@@ -486,15 +522,16 @@ void kNwkJoiningStart(uint32_t u32JoiningDuration, pJoinCompleteCallback callbac
...
@@ -486,15 +522,16 @@ void kNwkJoiningStart(uint32_t u32JoiningDuration, pJoinCompleteCallback callbac
if
(
u32JoiningDuration
>
0
)
if
(
u32JoiningDuration
>
0
)
{
{
#if Z30_DEVICE_AGING_ENABLE
#if Z30_DEVICE_AGING_ENABLE
if
(
kGetFactoryTestStatus
()
!=
FTS_NORMAL
/*&& kGetFactoryTestStatus() != FTS_AGING_15MIN*/
){
if
(
kGetFactoryTestStatus
()
!=
FTS_NORMAL
&&
kGetFactoryTestStatus
()
!=
FTS_AGING_15MIN
\
&&
kGetFactoryTestStatus
()
!=
FTS_FULL_DEVICE_TEST
){
return
;
return
;
}
}
#endif
#endif
if
(
!
zb_isDeviceJoinedNwk
())
if
(
!
zb_isDeviceJoinedNwk
())
{
{
//disable interpan
//disable interpan
kInterpanDisable
();
if
(
kInterPanGetEnableStatus
())
kInterpanDisable
();
iKonkeAfSelfPrint
(
"#####Set Steering Counter
\r\n
"
);
iKonkeAfSelfPrint
(
"#####Set Steering Counter
\r\n
"
);
g_u32NwkJoiningCountdownCounter
=
MS2COUNT
(
u32JoiningDuration
);
g_u32NwkJoiningCountdownCounter
=
MS2COUNT
(
u32JoiningDuration
);
g_pJoinCompleteCallback
=
callback
;
g_pJoinCompleteCallback
=
callback
;
...
@@ -502,6 +539,10 @@ void kNwkJoiningStart(uint32_t u32JoiningDuration, pJoinCompleteCallback callbac
...
@@ -502,6 +539,10 @@ void kNwkJoiningStart(uint32_t u32JoiningDuration, pJoinCompleteCallback callbac
//add by maozj 20191206
//add by maozj 20191206
g_bNwkSteeringCompleteFlg
=
true
;
g_bNwkSteeringCompleteFlg
=
true
;
g_eLastNetworkStatus
=
ENS_UNKNOW
;
//add by Han. 20220210
g_bJoiningReportFlg
=
true
;
}
}
}
}
else
else
...
@@ -518,6 +559,7 @@ status_t General_Report(uint8_t src_ep,uint8_t des_ep,uint16_t cluster,uint16_t
...
@@ -518,6 +559,7 @@ status_t General_Report(uint8_t src_ep,uint8_t des_ep,uint16_t cluster,uint16_t
static
ReportAttrData_ST
reportInfo
;
static
ReportAttrData_ST
reportInfo
;
uint8_t
paload_len
=
0
;
uint8_t
paload_len
=
0
;
TL_SETSTRUCTCONTENT
(
dstEpInfo
,
0
);
TL_SETSTRUCTCONTENT
(
dstEpInfo
,
0
);
iKonkeAfSelfPrint
(
"General_Report111111
\r\n
"
);
dstEpInfo
.
dstAddrMode
=
APS_SHORT_DSTADDR_WITHEP
;
dstEpInfo
.
dstAddrMode
=
APS_SHORT_DSTADDR_WITHEP
;
dstEpInfo
.
dstEp
=
des_ep
;
dstEpInfo
.
dstEp
=
des_ep
;
...
@@ -542,3 +584,58 @@ status_t General_Report(uint8_t src_ep,uint8_t des_ep,uint16_t cluster,uint16_t
...
@@ -542,3 +584,58 @@ status_t General_Report(uint8_t src_ep,uint8_t des_ep,uint16_t cluster,uint16_t
ZCL_FRAME_SERVER_CLIENT_DIR
,
true
,
0
,
ZCL_SEQ_NUM
,
(
uint16_t
)
paload_len
,
(
uint8_t
*
)
&
reportInfo
);
ZCL_FRAME_SERVER_CLIENT_DIR
,
true
,
0
,
ZCL_SEQ_NUM
,
(
uint16_t
)
paload_len
,
(
uint8_t
*
)
&
reportInfo
);
}
}
/*Auth: Han_frc.20220125.*/
void
kNwkjoinSucceedProcedureTrigger
(
uint32_t
u32StartDelayNms
)
{
u8ActionIndexAfterJoined
=
JOINED_PROCEDURE_REP_SNAPSHOT
;
if
(
!
ev_timer_exist
(
kUserJoinSucceedProcedureEvent
)){
kUserJoinSucceedProcedureEvent
=
TL_ZB_TIMER_SCHEDULE
(
kUserJoinSucceedProcedureEventHandler
,
NULL
,
u32StartDelayNms
);
}
}
extern
kk_err_t
kOptTunnelCommonReport
(
uint16_t
attribute_id
);
s32
kUserJoinSucceedProcedureEventHandler
(
void
*
arg
)
{
iKonkeAfSelfPrint
(
"
\r\n
6666Join Succeed procedure here(step: %d)
\r\n
"
,
u8ActionIndexAfterJoined
);
OPTTUNEL_TOKEN_ST
sOptunnel_Token_temp
;
flash_read
(
TOKEN_USER_LOCATION
,
USER_SIZE
,(
uint8_t
*
)
&
sOptunnel_Token_temp
);
switch
(
u8ActionIndexAfterJoined
)
{
case
(
JOINED_PROCEDURE_REP_SNAPSHOT
):
{
// report the device snap info,don't change the order.
iKonkeAfSelfPrint
(
"++++++++++++== report OPTDATA
\r\n
"
);
u8ActionIndexAfterJoined
=
JOINED_PROCEDURE_REP_CMEI
;
//step 1
kOptTunnelCommonReport
(
ECA_OPTDATA
);
//step 2
return
500
;
}
case
(
JOINED_PROCEDURE_REP_CMEI
):
{
// report the device snap info.
iKonkeAfSelfPrint
(
"++++++++++++== report CMEI
\r\n
"
);
u8ActionIndexAfterJoined
=
JOINED_PROCEDURE_REP_ISN
;
if
(
!
All_Same_Data
((
uint8_t
*
)
&
sOptunnel_Token_temp
.
cmei
,
0xff
,
32
)){
kOptTunnelCommonReport
(
ECA_CMEI
);
}
return
500
;
}
case
(
JOINED_PROCEDURE_REP_ISN
):
{
// report the device snap info.
iKonkeAfSelfPrint
(
"++++++++++++== report ISN
\r\n
"
);
u8ActionIndexAfterJoined
=
JOINED_PROCEDURE_END
;
if
(
!
All_Same_Data
((
uint8_t
*
)
&
sOptunnel_Token_temp
.
isn
,
0xff
,
32
)){
kOptTunnelCommonReport
(
ECA_ISN
);
}
return
200
;
}
case
(
JOINED_PROCEDURE_END
):
{
// report the device snap info.
iKonkeAfSelfPrint
(
"++++++++++++== JSP ended!
\r\n
"
);
u8ActionIndexAfterJoined
=
JOINED_PROCEDURE_NONE
;
return
-
1
;
}
default:
break
;
}
return
0
;
}
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-network.h
View file @
b1dbfcb7
#ifndef _IKK_NETWORK_H_
#ifndef _IKK_NETWORK_H_
#define _IKK_NETWORK_H_
#define _IKK_NETWORK_H_
#include "ikk-module-def.h"
#include "ikk-module-def.h"
#include "ikk-opt-tunnel.h"
#include "ikk-debug.h"
#include "ikk-debug.h"
#include "tl_common.h"
#include "tl_common.h"
#include "zb_api.h"
#include "zb_api.h"
...
@@ -12,6 +13,9 @@
...
@@ -12,6 +13,9 @@
#define BINDING_CLUSTER_MAXN 8
#define BINDING_CLUSTER_MAXN 8
#define BINDING_EP_DEF 1 // default endpoint for binding
#define BINDING_EP_DEF 1 // default endpoint for binding
#define NWK_MIN_DELAY_TIME_MS_AFTER_POWER_ON (500)
#define RAND_MIN_NUM (10 * 1000) //最小随机数,单位MS
#define RAND_MAX_NUM (40 * 1000 - RAND_MIN_NUM) //最大随机数
#define MAX_PALOAD_LEN 128
#define MAX_PALOAD_LEN 128
typedef
struct
tag_bind_objector_st
{
typedef
struct
tag_bind_objector_st
{
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-opt-tunnel.c
View file @
b1dbfcb7
...
@@ -6,6 +6,11 @@
...
@@ -6,6 +6,11 @@
#include "ikk-config.h"
#include "ikk-config.h"
#include "ikk-token.h"
#include "ikk-token.h"
#include "../../../../zigbee/zcl/zcl_include.h"
#include "../../../../zigbee/zcl/zcl_include.h"
#include "ikk-command.h"
#include "../driver/ikk-uart.h"
#include "ikk-factory-test.h"
#include "ikk-common-utils.h"
// FCC0-0000
// FCC0-0000
#pragma pack(1)
#pragma pack(1)
typedef
struct
tag_private_clsFCC0_attr0000_frame_st
{
typedef
struct
tag_private_clsFCC0_attr0000_frame_st
{
...
@@ -27,55 +32,27 @@ pFUNC_OPTDATA_MESSAGE_CALLBACK g_pOptDataIncomingMessageCallback = NULL;
...
@@ -27,55 +32,27 @@ pFUNC_OPTDATA_MESSAGE_CALLBACK g_pOptDataIncomingMessageCallback = NULL;
extern
bool
Get_Model_ID
(
uint8_t
*
ModeID
);
extern
bool
Get_Model_ID
(
uint8_t
*
ModeID
);
extern
_CODE_ZCL_
zclReadCmd_t
*
zcl_parseInReadCmd
(
zclIncoming_t
*
pCmd
);
extern
_CODE_ZCL_
zclReadCmd_t
*
zcl_parseInReadCmd
(
zclIncoming_t
*
pCmd
);
extern
_CODE_ZCL_
status_t
zcl_readRsp
(
u8
srcEp
,
epInfo_t
*
pDstEpInfo
,
u16
clusterId
,
u16
manuCode
,
u8
disableDefaultRsp
,
u8
direction
,
u8
seqNo
,
zclReadRspCmd_t
*
readRspCmd
);
extern
_CODE_ZCL_
status_t
zcl_readRsp
(
u8
srcEp
,
epInfo_t
*
pDstEpInfo
,
u16
clusterId
,
u16
manuCode
,
u8
disableDefaultRsp
,
u8
direction
,
u8
seqNo
,
zclReadRspCmd_t
*
readRspCmd
);
//_CODE_ZCL_ static status_t zcl_Private_cmdHandler(zclIncoming_t *pInMsg);
//
void
kOptTunneCheckNodeIdIsChangedReport
(
void
)
//
{
//
uint16_t
currentNodeId
=
0x1234
;
//
uint16_t
savedNodeId
;
//_CODE_ZCL_ status_t zcl_private_fcc0_register(u8 endpoint, u16 manuCode, u8 attrNum, const zclAttrInfo_t attrTbl[], cluster_forAppCb_t cb)
if
(
zb_isDeviceJoinedNwk
()){
//{
savedNodeId
=
kNwkgetNodeIdFromFlash
();
// return zcl_registerCluster(endpoint, ZCL_CLUSTER_PRIVATE_FCC0, manuCode, attrNum, attrTbl, zcl_Private_cmdHandler, cb);
currentNodeId
=
zb_getLocalShortAddr
();
//}
//iKonkeAfSelfPrint("!!!checkNodeIdIsChanged savedNodeId = %d, currentNodeId = %d\r\n", savedNodeId, currentNodeId);
//
if
(
savedNodeId
!=
currentNodeId
){
//_CODE_ZCL_ static status_t zcl_private_clientCmdHandler(zclIncoming_t *pInMsg)
//report AssociateAnnounce attr of private cluster
//{
iKonkeAfSelfPrint
(
"!!!checkNodeIdIsChanged savedNodeId = %d, currentNodeId = %d
\r\n
"
,
savedNodeId
,
currentNodeId
);
// u8 status = ZCL_STA_SUCCESS;
if
(
savedNodeId
!=
0xFFFF
){
// apsdeDataInd_t *pApsdeInd = (apsdeDataInd_t*)pInMsg->msg;
kOptTunnelCommonReport
(
ECA_ASSOCIATED_AOUNCE
);
// iKonkeAfSelfPrint("#############zcl_private_clientCmdHandler ,command id =%x!!!!!!!\r\n",pInMsg->hdr.cmd);
}
//// switch(pInMsg->hdr.cmd)
//save changed nodeId to flash
//// {
kNwksaveNodeIdToFlash
(
currentNodeId
);
//// case ZCL_CMD_BASIC_RESET_FAC_DEFAULT:
}
//// if(pInMsg->clusterAppCb){
}
//// zclIncomingAddrInfo_t addrInfo;
}
//// addrInfo.dirCluster = pInMsg->hdr.frmCtrl.bf.dir;
//// addrInfo.profileId = pApsdeInd->indInfo.profile_id;
//// addrInfo.srcAddr = pApsdeInd->indInfo.src_short_addr;
//// addrInfo.dstAddr = pApsdeInd->indInfo.dst_addr;
//// addrInfo.srcEp = pApsdeInd->indInfo.src_ep;
//// addrInfo.dstEp = pApsdeInd->indInfo.dst_ep;
////
//// status = pInMsg->clusterAppCb(&addrInfo, ZCL_CMD_BASIC_RESET_FAC_DEFAULT, NULL);
//// }else{
//// status = ZCL_STA_FAILURE;
//// }
//// break;
//// default:
//// status = ZCL_STA_UNSUP_CLUSTER_COMMAND;
//// break;
//// }
//
// return status;
//}
//
//_CODE_ZCL_ static status_t zcl_Private_cmdHandler(zclIncoming_t *pInMsg)
//{
// if(pInMsg->hdr.frmCtrl.bf.dir == ZCL_FRAME_CLIENT_SERVER_DIR){
// return zcl_private_clientCmdHandler(pInMsg);
// }else{
// return ZCL_STA_UNSUP_CLUSTER_COMMAND;
// }
//}
//
uint8_t
kOptTunnelChunkRead
(
uint8_t
endpoint
,
uint8_t
kOptTunnelChunkRead
(
uint8_t
endpoint
,
uint16_t
clusterId
,
uint16_t
clusterId
,
uint16_t
attributeId
,
uint16_t
attributeId
,
...
@@ -83,7 +60,7 @@ uint8_t kOptTunnelChunkRead(uint8_t endpoint,
...
@@ -83,7 +60,7 @@ uint8_t kOptTunnelChunkRead(uint8_t endpoint,
uint8_t
*
buffer
,
uint8_t
*
buffer
,
uint8_t
*
length_out
)
uint8_t
*
length_out
)
{
{
iKonkeAfSelfPrint
(
"&&&&&&&&&&&&&Token Read cluster(%
2X), attr(%2X
)
\r\n
"
,
clusterId
,
attributeId
);
iKonkeAfSelfPrint
(
"&&&&&&&&&&&&&Token Read cluster(%
d), attr(%d
)
\r\n
"
,
clusterId
,
attributeId
);
uint8_t
length
=
0
;
uint8_t
length
=
0
;
if
(
buffer
==
NULL
){
if
(
buffer
==
NULL
){
iKonkeAfSelfPrint
(
"Err: Buffer is null(%d)!!
\r\n
"
);
iKonkeAfSelfPrint
(
"Err: Buffer is null(%d)!!
\r\n
"
);
...
@@ -113,6 +90,10 @@ uint8_t kOptTunnelChunkRead(uint8_t endpoint,
...
@@ -113,6 +90,10 @@ uint8_t kOptTunnelChunkRead(uint8_t endpoint,
memcpy
(
&
buffer
[
1
],
INSTALL_CODE_TOKEN_GET
(),
length
);
memcpy
(
&
buffer
[
1
],
INSTALL_CODE_TOKEN_GET
(),
length
);
break
;
break
;
}
}
case
(
ZCL_CHUNK_N1_ATTRIBUTE_ID
):
{
break
;
}
default:
default:
return
0xfe
;
return
0xfe
;
}
}
...
@@ -153,32 +134,32 @@ status_t kOptTunnelMessageReadResponse(zclIncoming_t *pInHdlrMsg,uint8_t *pData)
...
@@ -153,32 +134,32 @@ status_t kOptTunnelMessageReadResponse(zclIncoming_t *pInHdlrMsg,uint8_t *pData)
u16
clusterId
=
pInHdlrMsg
->
msg
->
indInfo
.
cluster_id
;
u16
clusterId
=
pInHdlrMsg
->
msg
->
indInfo
.
cluster_id
;
u8
endpoint
=
pInHdlrMsg
->
msg
->
indInfo
.
dst_ep
;
u8
endpoint
=
pInHdlrMsg
->
msg
->
indInfo
.
dst_ep
;
/* Parse In Read Command */
/* Parse In Read Command */
zclReadCmd_t
*
pReadCmd
=
zcl_parseInReadCmd
(
pInHdlrMsg
);
u8
*
pBuf
=
pInHdlrMsg
->
pData
;
if
(
pReadCmd
==
NULL
){
zclReadCmd_t
pReadCmd
=
{
0
};
return
ZCL_STA_INSUFFICIENT_SPACE
;
pReadCmd
.
numAttr
=
pInHdlrMsg
->
dataLen
/
2
;
//attr ID
}
else
{
for
(
u8
i
=
0
;
i
<
pReadCmd
.
numAttr
;
i
++
){
pInHdlrMsg
->
attrCmd
=
(
void
*
)
pReadCmd
;
pReadCmd
.
attrID
[
i
]
=
BUILD_U16
(
pBuf
[
0
],
pBuf
[
1
]);
pBuf
+=
2
;
}
}
iKonkeAfSelfPrint
(
"#########kOptTunnelMessageReadResponse111111 attr = %d,%d
\r\n
"
,
pReadCmd
.
attrID
[
0
],
pReadCmd
.
numAttr
);
if
(
!
pInHdlrMsg
->
msg
->
indInfo
.
security_status
){
if
(
!
pInHdlrMsg
->
msg
->
indInfo
.
security_status
){
return
ZCL_STA_FAILURE
;
status
=
ZCL_STA_FAILURE
;
}
}
/* Build Read Response Command */
/* Build Read Response Command */
u16
len
=
sizeof
(
zclReadRspCmd_t
)
+
(
pReadCmd
->
numAttr
*
sizeof
(
zclReadRspStatus_t
));
u16
len
=
sizeof
(
zclReadRspCmd_t
)
+
(
pReadCmd
.
numAttr
*
sizeof
(
zclReadRspStatus_t
));
zclReadRspCmd_t
*
pReadRspCmd
=
(
zclReadRspCmd_t
*
)
ev_buf_allocate
(
len
);
zclReadRspCmd_t
*
pReadRspCmd
=
(
zclReadRspCmd_t
*
)
ev_buf_allocate
(
len
);
if
(
!
pReadRspCmd
){
if
(
!
pReadRspCmd
){
return
ZCL_STA_INSUFFICIENT_SPACE
;
return
ZCL_STA_INSUFFICIENT_SPACE
;
}
}
pReadRspCmd
->
numAttr
=
pReadCmd
->
numAttr
;
pReadRspCmd
->
numAttr
=
pReadCmd
.
numAttr
;
pReadRspCmd
->
attrList
[
0
].
attrID
=
pReadCmd
.
attrID
[
0
];
pReadRspCmd
->
attrList
[
0
].
status
=
status
;
pReadRspCmd
->
attrList
[
0
].
dataType
=
ZCL_DATA_TYPE_CHAR_STR
;
pReadRspCmd
->
attrList
[
0
].
dataType
=
ZCL_DATA_TYPE_CHAR_STR
;
pReadRspCmd
->
attrList
[
0
].
data
=
pData
;
pReadRspCmd
->
attrList
[
0
].
data
=
pData
;
pReadRspCmd
->
attrList
[
0
].
attrID
=
pReadCmd
->
attrID
[
0
];
pReadRspCmd
->
attrList
[
0
].
status
=
ZCL_STA_SUCCESS
;
epInfo_t
dstEp
;
epInfo_t
dstEp
;
TL_SETSTRUCTCONTENT
(
dstEp
,
0
);
TL_SETSTRUCTCONTENT
(
dstEp
,
0
);
...
@@ -191,8 +172,11 @@ status_t kOptTunnelMessageReadResponse(zclIncoming_t *pInHdlrMsg,uint8_t *pData)
...
@@ -191,8 +172,11 @@ status_t kOptTunnelMessageReadResponse(zclIncoming_t *pInHdlrMsg,uint8_t *pData)
if
(
pInHdlrMsg
->
msg
->
indInfo
.
security_status
&
SECURITY_IN_APSLAYER
){
if
(
pInHdlrMsg
->
msg
->
indInfo
.
security_status
&
SECURITY_IN_APSLAYER
){
dstEp
.
txOptions
|=
APS_TX_OPT_SECURITY_ENABLED
;
dstEp
.
txOptions
|=
APS_TX_OPT_SECURITY_ENABLED
;
}
}
status
=
zcl_readRsp
(
endpoint
,
&
dstEp
,
clusterId
,
pInHdlrMsg
->
hdr
.
manufCode
,
false
,
!
pInHdlrMsg
->
hdr
.
frmCtrl
.
bf
.
dir
,
pInHdlrMsg
->
hdr
.
seqNum
,
pReadRspCmd
);
status
=
zcl_readRsp
(
endpoint
,
&
dstEp
,
clusterId
,
pInHdlrMsg
->
hdr
.
manufCode
,
false
,
!
pInHdlrMsg
->
hdr
.
frmCtrl
.
bf
.
dir
,
pInHdlrMsg
->
hdr
.
seqNum
,
pReadRspCmd
);
//free data
ev_buf_free
((
void
*
)
pReadRspCmd
);
return
status
;
return
status
;
}
}
status_t
kOptTunnelMessageWriteResponse
(
zclIncoming_t
*
pCmd
,
uint8_t
*
pData
)
status_t
kOptTunnelMessageWriteResponse
(
zclIncoming_t
*
pCmd
,
uint8_t
*
pData
)
...
@@ -204,7 +188,6 @@ status_t kOptTunnelMessageWriteResponse(zclIncoming_t *pCmd,uint8_t *pData)
...
@@ -204,7 +188,6 @@ status_t kOptTunnelMessageWriteResponse(zclIncoming_t *pCmd,uint8_t *pData)
uint8_t
i
=
0
;
uint8_t
i
=
0
;
uint8_t
payload_len
=
pData
[
0
];
uint8_t
payload_len
=
pData
[
0
];
// 8 0 51 86 10 0 0 0 0
// 8 0 51 86 10 0 0 0 0
if
(
pCmd
->
hdr
.
cmd
==
ZCL_CMD_WRITE
){
if
(
pCmd
->
hdr
.
cmd
==
ZCL_CMD_WRITE
){
tmp_buffer
[
i
++
]
=
0x00
;
tmp_buffer
[
i
++
]
=
0x00
;
...
@@ -242,16 +225,21 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method,zclIncoming_t *pCmd)
...
@@ -242,16 +225,21 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method,zclIncoming_t *pCmd)
kk_err_t
status
=
KET_OK
;
kk_err_t
status
=
KET_OK
;
// 0 0 42 7 6 0 51 86 10 0 0 oring data zcl global write 0xfcc0 0x0000 0x42 {06 00 51 86 10 00 00}
// 0 0 42 7 6 0 51 86 10 0 0 oring data zcl global write 0xfcc0 0x0000 0x42 {06 00 51 86 10 00 00}
//out 6 0 51 86 10 0 0 0
//out 6 0 51 86 10 0 0 0
iKonkeAfSelfPrint
(
"
\r\n
-------------------------
\r\n
"
);
// device id
// device id
uint32_t
modeid
=
(
uint32_t
)
MODEL_ID
;
uint32_t
modeid
=
(
uint32_t
)
MODEL_ID
;
uint16_t
attribute_id
=
0xffff
;
uint8_t
tmp_buffer
[
6
];
uint8_t
tmp_buffer
[
6
];
tmp_buffer
[
0
]
=
5
;
tmp_buffer
[
0
]
=
5
;
tmp_buffer
[
1
]
=
modeid
>>
24
;
tmp_buffer
[
1
]
=
modeid
>>
24
;
tmp_buffer
[
2
]
=
modeid
>>
16
;
tmp_buffer
[
2
]
=
modeid
>>
16
;
tmp_buffer
[
3
]
=
modeid
>>
8
;
tmp_buffer
[
3
]
=
modeid
>>
8
;
tmp_buffer
[
4
]
=
modeid
;
tmp_buffer
[
4
]
=
modeid
;
attribute_id
=
(
pCmd
->
pData
[
1
]
>>
8
)
+
(
pCmd
->
pData
[
0
]);
iKonkeAfSelfPrint
(
"pData(1)=0x%x,pData(0)=0x%x,attribute_id=%d
\r\n
"
,
pCmd
->
pData
[
1
],
pCmd
->
pData
[
0
],
attribute_id
);
switch
(
method
)
{
switch
(
method
)
{
case
(
EOM_WRITE
):
case
(
EOM_WRITE
):
{
{
...
@@ -260,10 +248,13 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method,zclIncoming_t *pCmd)
...
@@ -260,10 +248,13 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method,zclIncoming_t *pCmd)
memcpy
(
g_tmp_buffer
,
pCmd
->
pData
+
4
,
length
);
memcpy
(
g_tmp_buffer
,
pCmd
->
pData
+
4
,
length
);
g_tmp_length
=
length
;
g_tmp_length
=
length
;
}
}
iKonkeAfSelfPrint
(
"#######kOptTunnelMessageIncoming length(0x%d)
\r\n
"
,
length
);
iKonkeAfSelfPrint
(
"#######kOptTunnelMessageIncoming length(0x%d)
\r\n
"
,
length
);
iKonkeAfSelfPrintBuffer
(
g_tmp_buffer
,
length
);
iKonkeAfSelfPrintBuffer
(
g_tmp_buffer
,
length
);
//copy device id
//copy device id
memcpy
(
&
g_tmp_buffer
[
1
],
&
tmp_buffer
[
1
],
4
);
memcpy
(
&
g_tmp_buffer
[
1
],
&
tmp_buffer
[
1
],
4
);
// switch(attribute_id)
// switch(attribute_id)
// {
// {
...
@@ -271,7 +262,29 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method,zclIncoming_t *pCmd)
...
@@ -271,7 +262,29 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method,zclIncoming_t *pCmd)
// {
// {
if
(
length
>=
7
)
{
if
(
length
>=
7
)
{
iKonkeAfSelfPrint
(
"
\r\n
########################OPTDATA WRITE,g_tmp_length = %d
\r\n
"
,
g_tmp_length
);
iKonkeAfSelfPrint
(
"
\r\n
########################OPTDATA WRITE,g_tmp_length = %d
\r\n
"
,
g_tmp_length
);
if
(
g_pOptDataIncomingMessageCallback
)
{
extern
kk_err_t
kCmdGeneralMsgPaser
(
UMsgNodeSt
*
pMsgNode
,
ComPortEm
port
,
DataField_st
*
pDataOut
);
UMsgNodeSt
msgNode
;
DataField_st
dataOut
;
// length pid ch opcode arg
memcpy
(
msgNode
.
buffer
,
&
g_tmp_buffer
[
0
],
g_tmp_length
);
msgNode
.
length
=
g_tmp_length
;
if
(
kCmdGeneralMsgPaser
(
&
msgNode
,
ECOM_PORT_FCC0
,
&
dataOut
)
==
KET_OK
)
{
iKonkeAfSelfPrint
(
"length(%d)
\r\n
"
,
dataOut
.
u8Datalen
);
iKonkeAfSelfPrintBuffer
(
dataOut
.
u8ARG
,
dataOut
.
u8Datalen
);
g_tmp_length
=
dataOut
.
u8Datalen
+
7
;
g_tmp_buffer
[
0
]
=
g_tmp_length
-
1
;
memcpy
(
&
g_tmp_buffer
[
7
],
dataOut
.
u8ARG
,
dataOut
.
u8Datalen
);
kOptTunnelMessageWriteResponse
(
pCmd
,
g_tmp_buffer
);
}
else
if
(
kkFactoryMsgInComingPaser
(
&
msgNode
,
ECOM_PORT_FCC0
,
&
dataOut
)
==
KET_OK
)
{
iKonkeAfSelfPrint
(
"length(%d)
\r\n
"
,
dataOut
.
u8Datalen
);
iKonkeAfSelfPrintBuffer
(
dataOut
.
u8ARG
,
dataOut
.
u8Datalen
);
g_tmp_length
=
dataOut
.
u8Datalen
+
7
;
g_tmp_buffer
[
0
]
=
g_tmp_length
-
1
;
memcpy
(
&
g_tmp_buffer
[
7
],
dataOut
.
u8ARG
,
dataOut
.
u8Datalen
);
kOptTunnelMessageWriteResponse
(
pCmd
,
g_tmp_buffer
);
}
else
if
(
g_pOptDataIncomingMessageCallback
)
{
g_tmp_length
=
g_tmp_length
-
6
;
g_tmp_length
=
g_tmp_length
-
6
;
if
(
KET_NO_RESPONSE
==
g_pOptDataIncomingMessageCallback
(
g_tmp_buffer
[
5
],
g_tmp_buffer
[
6
],
g_tmp_buffer
+
7
,
&
g_tmp_length
)){
if
(
KET_NO_RESPONSE
==
g_pOptDataIncomingMessageCallback
(
g_tmp_buffer
[
5
],
g_tmp_buffer
[
6
],
g_tmp_buffer
+
7
,
&
g_tmp_length
)){
return
KET_NO_RESPONSE
;
return
KET_NO_RESPONSE
;
...
@@ -293,10 +306,10 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method,zclIncoming_t *pCmd)
...
@@ -293,10 +306,10 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method,zclIncoming_t *pCmd)
}
}
case
(
EOM_READ
):
case
(
EOM_READ
):
{
{
//
switch(attribute_id){
switch
(
attribute_id
){
//
// OptData read command is same to write opcode 0x00, read the device snap.
// OptData read command is same to write opcode 0x00, read the device snap.
//
case (ECA_OPTDATA):
case
(
ECA_OPTDATA
):
//
{
{
iKonkeAfSelfPrint
(
"
\r\n
########################OPTDATA READ
\r\n
"
);
iKonkeAfSelfPrint
(
"
\r\n
########################OPTDATA READ
\r\n
"
);
if
(
g_pOptDataIncomingMessageCallback
)
{
if
(
g_pOptDataIncomingMessageCallback
)
{
memcpy
(
&
g_tmp_buffer
[
2
],
&
tmp_buffer
[
1
],
4
);
memcpy
(
&
g_tmp_buffer
[
2
],
&
tmp_buffer
[
1
],
4
);
...
@@ -311,9 +324,63 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method,zclIncoming_t *pCmd)
...
@@ -311,9 +324,63 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method,zclIncoming_t *pCmd)
g_tmp_buffer
[
1
]
=
g_tmp_length
-
1
;
//string length
g_tmp_buffer
[
1
]
=
g_tmp_length
-
1
;
//string length
kOptTunnelMessageReadResponse
(
pCmd
,
g_tmp_buffer
);
kOptTunnelMessageReadResponse
(
pCmd
,
g_tmp_buffer
);
}
}
// break;
break
;
// }
}
// }
case
(
ECA_TTS
):
case
(
ECA_MTORR_RR
):
{
kOptTunnelMessageReadResponse
(
pCmd
,
g_tmp_buffer
);
break
;
}
case
(
ECA_ASSOCIATED_AOUNCE
):
{
addrExt_t
u64LocalEui64
=
{
0
};
uint16_t
NodeID
=
zb_getLocalShortAddr
();
uint16_t
index
;
tl_zbExtAddrByShortAddr
(
NodeID
,
u64LocalEui64
,
&
index
);
g_tmp_buffer
[
0
]
=
(
NodeID
>>
8
)
&
0xff
;
g_tmp_buffer
[
1
]
=
(
NodeID
>>
0
)
&
0xff
;
SWAP_EUI64
(
u64LocalEui64
);
memcpy
(
g_tmp_buffer
+
2
,
u64LocalEui64
,
8
);
g_tmp_length
=
10
;
memmove
(
&
g_tmp_buffer
[
1
],
&
g_tmp_buffer
[
0
],
g_tmp_length
);
g_tmp_buffer
[
0
]
=
g_tmp_length
;
kOptTunnelMessageReadResponse
(
pCmd
,
g_tmp_buffer
);
iKonkeAfSelfPrint
(
"#########Token Get Buffer(length(%d)): "
,
g_tmp_length
);
iKonkeAfSelfPrintBuffer
(
g_tmp_buffer
,
g_tmp_length
);
iKonkeAfSelfPrint
(
"
\r\n
"
);
break
;
}
case
(
ECA_CMEI
):
case
(
ECA_ISN
):
case
(
ECA_CHUNK_N1
):
case
(
ECA_INSTALL_CODE
):
{
g_tmp_length
=
OPTTUNNEL_CHUNK_MAXLEN
;
kk_err_t
status
=
kOptTunnelAttrChunkLocalRead
(
attribute_id
,
g_tmp_buffer
,
&
g_tmp_length
);
iKonkeAfSelfPrint
(
"#########Token Get Buffer(length(%d)): "
,
g_tmp_length
);
if
(
g_tmp_length
>
1
){
memmove
(
&
g_tmp_buffer
[
1
],
&
g_tmp_buffer
[
0
],
g_tmp_length
);
g_tmp_buffer
[
0
]
=
g_tmp_length
;
}
if
(
status
==
KET_OK
){
kOptTunnelMessageReadResponse
(
pCmd
,
g_tmp_buffer
);
}
else
{
tmp_buffer
[
5
]
=
ZCL_STA_FAILURE
;
kOptTunnelMessageReadResponse
(
pCmd
,
tmp_buffer
);
}
break
;
}
}
g_tmp_length
=
0
;
g_tmp_buffer
[
0
]
=
0
;
memset
(
g_tmp_buffer
,
0
,
32
);
break
;
break
;
}
}
default:
break
;
default:
break
;
...
@@ -339,7 +406,7 @@ static status_t kOptTunnelCommonReportSend(uint16_t attribute_id, uint8_t *arg,
...
@@ -339,7 +406,7 @@ static status_t kOptTunnelCommonReportSend(uint16_t attribute_id, uint8_t *arg,
/* DESP: Private protocol common report interface.
/* DESP: Private protocol common report interface.
* Auth: dingmz_frc.20191113.
* Auth: dingmz_frc.20191113.
* */
* */
kk_err_t
kOptTunnelCommonReport
(
uint16_t
attribute_id
)
kk_err_t
kOptTunnelCommonReport
(
uint16_t
attribute_id
)
{
{
if
(
attribute_id
==
OPTTUNNEL_UNKNOW
)
{
if
(
attribute_id
==
OPTTUNNEL_UNKNOW
)
{
return
KET_ERR_NON_EXIST
;
return
KET_ERR_NON_EXIST
;
...
@@ -347,7 +414,6 @@ kk_err_t kOptTunnelCommonReport(uint16_t attribute_id )
...
@@ -347,7 +414,6 @@ kk_err_t kOptTunnelCommonReport(uint16_t attribute_id )
kk_err_t
err
=
KET_OK
;
kk_err_t
err
=
KET_OK
;
uint8_t
bufCount
=
0
;
uint8_t
bufCount
=
0
;
switch
(
attribute_id
)
{
switch
(
attribute_id
)
{
case
(
ECA_OPTDATA
):
case
(
ECA_OPTDATA
):
{
{
...
@@ -390,7 +456,7 @@ kk_err_t kOptTunnelCommonReport(uint16_t attribute_id )
...
@@ -390,7 +456,7 @@ kk_err_t kOptTunnelCommonReport(uint16_t attribute_id )
break
;
break
;
}
}
case
(
ECA_CMEI
):
case
(
ECA_CMEI
):
case
(
ECA_ISN
):
case
(
ECA_ISN
):
{
{
g_tmp_length
=
OPTTUNNEL_CHUNK_MAXLEN
;
g_tmp_length
=
OPTTUNNEL_CHUNK_MAXLEN
;
kOptTunnelAttrChunkLocalRead
(
attribute_id
,
g_tmp_buffer
,
&
g_tmp_length
);
kOptTunnelAttrChunkLocalRead
(
attribute_id
,
g_tmp_buffer
,
&
g_tmp_length
);
...
@@ -414,6 +480,10 @@ kk_err_t kOptTunnelCommonReport(uint16_t attribute_id )
...
@@ -414,6 +480,10 @@ kk_err_t kOptTunnelCommonReport(uint16_t attribute_id )
err
=
KET_FAILED
;
err
=
KET_FAILED
;
}
}
g_tmp_length
=
0
;
g_tmp_buffer
[
0
]
=
0
;
memset
(
g_tmp_buffer
,
0
,
32
);
return
err
;
return
err
;
}
}
/* DESP: Private protocol message(command) reporting interface
/* DESP: Private protocol message(command) reporting interface
...
@@ -450,4 +520,40 @@ kk_err_t kOptTunnelModuleInit(pFUNC_OPTDATA_MESSAGE_CALLBACK pOptdataIncomingCal
...
@@ -450,4 +520,40 @@ kk_err_t kOptTunnelModuleInit(pFUNC_OPTDATA_MESSAGE_CALLBACK pOptdataIncomingCal
return
KET_OK
;
return
KET_OK
;
}
}
uint8_t
HexToASCII
(
uint8_t
hex
){
if
((
hex
>=
0x0A
)
&&
(
hex
<=
0x0F
))
//дĸ
hex
+=
0x37
;
else
if
((
hex
>=
0x00
)
&&
(
hex
<=
0x09
))
hex
+=
0x30
;
else
hex
=
0xff
;
return
hex
;
}
//DESP: write default installcode.
bool
kOptTunnelTrytoWriteInstallCode
(
void
)
{
OPTTUNEL_TOKEN_ST
sOptunnel_Token_temp
;
flash_read
(
TOKEN_USER_LOCATION
,
USER_SIZE
,(
uint8_t
*
)
&
sOptunnel_Token_temp
);
if
(
All_Same_Data
((
uint8_t
*
)
&
sOptunnel_Token_temp
.
install_code
.
install_code_data
,
0xff
,
16
)){
uint8_t
installcode_buffer
[
16
]
=
{
0x30
,
0x30
,
0x30
,
0x30
,
0x30
,
0x30
,
0x30
,
0x30
};
uint8_t
length
=
16
;
addrExt_t
long_address
;
zb_getLocalExtAddr
(
long_address
);
SWAP_EUI64
((
uint8_t
*
)
long_address
);
//ȡ
uint8_t
mac_address
[
8
]
=
{
0
};
for
(
uint8_t
i
=
4
;
i
<
8
;
i
++
){
//0-7
mac_address
[
2
*
i
-
8
]
=
long_address
[
i
]
>>
4
;
mac_address
[
2
*
i
-
7
]
=
long_address
[
i
]
&
0x0f
;
}
iKonkeAfSelfPrint
(
"!!!MAC_address:
\r\n
"
);
iKonkeAfSelfPrintBuffer
(
mac_address
,
8
);
for
(
uint8_t
i
=
0
;
i
<
8
;
i
++
)
mac_address
[
i
]
=
HexToASCII
(
mac_address
[
i
]);
memcpy
(
&
installcode_buffer
[
8
],
&
mac_address
[
0
],
8
);
INSTALL_CODE_TOKEN_SET
(
installcode_buffer
,
length
);
}
}
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-opt-tunnel.h
View file @
b1dbfcb7
...
@@ -71,8 +71,10 @@ void Set2NwkJoiningCountdownCounter(u32 time_ms);
...
@@ -71,8 +71,10 @@ void Set2NwkJoiningCountdownCounter(u32 time_ms);
* */
* */
kk_err_t
kOptTunnelModuleInit
(
pFUNC_OPTDATA_MESSAGE_CALLBACK
pOptdataIncomingCallback
);
kk_err_t
kOptTunnelModuleInit
(
pFUNC_OPTDATA_MESSAGE_CALLBACK
pOptdataIncomingCallback
);
/*Auth: han_frc.20220119.*/
uint8_t
HexToASCII
(
uint8_t
hex
);
bool
kOptTunnelTrytoWriteInstallCode
(
void
);
kk_err_t
kOptTunnelCommonReport
(
uint16_t
attribute_id
);
kk_err_t
kOptTunnelOODReport
(
uint8_t
channel
,
uint8_t
opcode
,
uint8_t
*
arg
,
uint8_t
length
);
kk_err_t
kOptTunnelOODReport
(
uint8_t
channel
,
uint8_t
opcode
,
uint8_t
*
arg
,
uint8_t
length
);
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.c
View file @
b1dbfcb7
/*
//#include "app/framework/plugin/network-steering/network-steering.h"
//#include "app/framework/plugin/network-steering/network-steering.h"
//#include "app/framework/plugin/network-steering/network-steering-internal.h"
//#include "app/framework/plugin/network-steering/network-steering-internal.h"
#include "ikk-ota.h"
#include "ikk-ota.h"
...
@@ -21,11 +22,6 @@ pOTACallback g_pOTACallback = NULL;
...
@@ -21,11 +22,6 @@ pOTACallback g_pOTACallback = NULL;
static void kOTAMoudleOptCallback(OTAStatusEnum status);
static void kOTAMoudleOptCallback(OTAStatusEnum status);
//__no_init OTAGpioStatusST g_stOTAGpioStatus @ 0x2000FFF0;
static
OTAGpioStatusST
g_stOTAGpioStatus
;
OTAStatusEnum kGetOTAStatus(void)
OTAStatusEnum kGetOTAStatus(void)
{
{
return g_eOTAStatus;
return g_eOTAStatus;
...
@@ -76,7 +72,6 @@ static void kOTAMoudleOptCallback(OTAStatusEnum status)
...
@@ -76,7 +72,6 @@ static void kOTAMoudleOptCallback(OTAStatusEnum status)
break;
break;
case OTA_DOWNLOAD_DONE:
case OTA_DOWNLOAD_DONE:
{
{
g_eOTAStatus = OTA_DOWNLOAD_DONE;
g_eOTAStatus = OTA_DOWNLOAD_DONE;
break;
break;
}
}
...
@@ -99,3 +94,4 @@ static void kOTAMoudleOptCallback(OTAStatusEnum status)
...
@@ -99,3 +94,4 @@ static void kOTAMoudleOptCallback(OTAStatusEnum status)
break;
break;
}
}
}
}
*/
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.h
View file @
b1dbfcb7
/*
#ifndef __IKONKE_MODULE_OTA_H_______________________
#ifndef __IKONKE_MODULE_OTA_H_______________________
#define __IKONKE_MODULE_OTA_H_______________________
#define __IKONKE_MODULE_OTA_H_______________________
#include "tl_common.h"
#include "tl_common.h"
...
@@ -9,7 +10,6 @@
...
@@ -9,7 +10,6 @@
typedef enum{OTA_NORMAL=0, OTA_START,OTA_DOWNLOAD_DONE, OTA_VERITY_SUCCEED, OTA_FAILED}OTAStatusEnum;
typedef enum{OTA_NORMAL=0, OTA_START,OTA_DOWNLOAD_DONE, OTA_VERITY_SUCCEED, OTA_FAILED}OTAStatusEnum;
typedef
enum
{
OTA_GPIO_OFF
=
0
,
OAT_GPIO_ON
}
OTAGpioEnum
;
#pragma pack(1) //按1字节对齐
#pragma pack(1) //按1字节对齐
typedef struct {
typedef struct {
...
@@ -40,3 +40,4 @@ void kOTAMoudleCallback(OTAStatusEnum status);
...
@@ -40,3 +40,4 @@ void kOTAMoudleCallback(OTAStatusEnum status);
#endif
#endif
*/
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-token.c
View file @
b1dbfcb7
...
@@ -111,12 +111,13 @@ bool kGetIndicatorNotDisturbModeFlg(void)
...
@@ -111,12 +111,13 @@ bool kGetIndicatorNotDisturbModeFlg(void)
st
=
nv_flashReadNew
(
1
,
NV_MODULE_APP
,
NV_NO_DISTURB_MODE
,
sizeof
(
temp
),
(
u8
*
)
&
temp
);
st
=
nv_flashReadNew
(
1
,
NV_MODULE_APP
,
NV_NO_DISTURB_MODE
,
sizeof
(
temp
),
(
u8
*
)
&
temp
);
if
(
st
!=
NV_SUCC
){
if
(
st
!=
NV_SUCC
){
temp
=
0
;
temp
=
0
;
iKonkeAfSelfPrint
(
"kGetIndicatorNotDisturbModeFlg failed!!
\r\n
"
);
//
iKonkeAfSelfPrint("kGetIndicatorNotDisturbModeFlg failed!!\r\n");
}
}
iKonkeAfSelfPrint
(
"Read st =%d,data=%d
\r\n
"
,
st
,
temp
);
//iKonkeAfSelfPrint("Read st =%d,data=%d\r\n",st,temp);
return
(
temp
==
1
)
;
return
(
temp
==
1
)
;
}
}
nv_sts_t
kSetIndicatorNotDisturbModeFlg
(
uint8_t
value
)
nv_sts_t
kSetIndicatorNotDisturbModeFlg
(
uint8_t
value
)
{
{
nv_sts_t
st
=
NV_SUCC
;
nv_sts_t
st
=
NV_SUCC
;
...
@@ -132,6 +133,7 @@ nv_sts_t kSetIndicatorNotDisturbModeFlg(uint8_t value)
...
@@ -132,6 +133,7 @@ nv_sts_t kSetIndicatorNotDisturbModeFlg(uint8_t value)
{
{
iKonkeAfSelfPrint
(
"kSetIndicatorNotDisturbModeFlg failed!!
\r\n
"
);
iKonkeAfSelfPrint
(
"kSetIndicatorNotDisturbModeFlg failed!!
\r\n
"
);
}
}
return
st
;
return
st
;
}
}
...
@@ -144,9 +146,10 @@ bool kGetInterpanEnableFlg(void)
...
@@ -144,9 +146,10 @@ bool kGetInterpanEnableFlg(void)
temp
=
1
;
temp
=
1
;
iKonkeAfSelfPrint
(
"kGetInterpanEnableFlg failed!!
\r\n
"
);
iKonkeAfSelfPrint
(
"kGetInterpanEnableFlg failed!!
\r\n
"
);
}
}
return
(
temp
==
1
)
;
return
(
temp
==
1
)
;
}
}
nv_sts_t
kSetInterpanEnableFlg
(
uint8_t
value
)
nv_sts_t
kSetInterpanEnableFlg
(
uint8_t
value
)
{
{
nv_sts_t
st
=
NV_SUCC
;
nv_sts_t
st
=
NV_SUCC
;
...
@@ -156,6 +159,35 @@ nv_sts_t kSetInterpanEnableFlg(uint8_t value)
...
@@ -156,6 +159,35 @@ nv_sts_t kSetInterpanEnableFlg(uint8_t value)
{
{
iKonkeAfSelfPrint
(
"kSetIndicatorNotDisturbModeFlg failed!!
\r\n
"
);
iKonkeAfSelfPrint
(
"kSetIndicatorNotDisturbModeFlg failed!!
\r\n
"
);
}
}
return
st
;
}
uint16_t
kNwkgetNodeIdFromFlash
(
void
)
{
nv_sts_t
st
=
NV_SUCC
;
uint16_t
temp
;
st
=
nv_flashReadNew
(
1
,
NV_MODULE_APP
,
NV_NODE_ID_FLG
,
sizeof
(
temp
),
(
u8
*
)
&
temp
);
if
(
st
!=
NV_SUCC
){
temp
=
0xFFFF
;
}
return
temp
;
}
nv_sts_t
kNwksaveNodeIdToFlash
(
uint16_t
node_id
)
{
nv_sts_t
st
=
NV_SUCC
;
uint16_t
temp
;
st
=
nv_flashReadNew
(
1
,
NV_MODULE_APP
,
NV_NODE_ID_FLG
,
sizeof
(
temp
),
(
u8
*
)
&
temp
);
if
(
st
==
NV_SUCC
){
if
(
temp
!=
node_id
){
st
=
nv_flashWriteNew
(
1
,
NV_MODULE_APP
,
NV_NODE_ID_FLG
,
sizeof
(
uint16_t
),
(
u8
*
)
&
node_id
);
iKonkeAfSelfPrint
(
"NodeId_Save result = %d
\r\n
"
,
st
);
}
}
else
if
(
st
==
NV_ITEM_NOT_FOUND
){
st
=
nv_flashWriteNew
(
1
,
NV_MODULE_APP
,
NV_NODE_ID_FLG
,
sizeof
(
uint16_t
),
(
u8
*
)
&
node_id
);
}
return
st
;
return
st
;
}
}
...
@@ -288,7 +320,11 @@ uint8_t General_Custom_Token_Save(uint8_t item,uint8_t *buff,uint8_t len)
...
@@ -288,7 +320,11 @@ uint8_t General_Custom_Token_Save(uint8_t item,uint8_t *buff,uint8_t len)
//same data ,not need rewrite!
//same data ,not need rewrite!
return
0
;
return
0
;
}
else
if
(
All_Same_Data
((
uint8_t
*
)
&
sOptunnel_Token_temp
.
modeid
,
0xff
,
32
)){
}
else
if
(
All_Same_Data
((
uint8_t
*
)
&
sOptunnel_Token_temp
.
modeid
,
0xff
,
32
)){
flash_write
(
TOKEN_USER_LOCATION
+
MODEL_ID_LOC_OFFSET
,
len
,
buff
);
//Auth: han_frc.20220105.
u8
modelid_buff
[
35
]
=
{
0
};
modelid_buff
[
0
]
=
len
;
memcpy
(
modelid_buff
+
1
,
buff
,
len
);
flash_write
(
TOKEN_USER_LOCATION
+
MODEL_ID_LOC_OFFSET
,
len
+
1
,
modelid_buff
);
return
0
;
return
0
;
}
else
{
}
else
{
sOptunnel_Token_temp
.
modeid
.
modeid_len
=
len
;
sOptunnel_Token_temp
.
modeid
.
modeid_len
=
len
;
...
@@ -309,7 +345,11 @@ uint8_t General_Custom_Token_Save(uint8_t item,uint8_t *buff,uint8_t len)
...
@@ -309,7 +345,11 @@ uint8_t General_Custom_Token_Save(uint8_t item,uint8_t *buff,uint8_t len)
//same data ,not need rewrite!
//same data ,not need rewrite!
return
0
;
return
0
;
}
else
if
(
All_Same_Data
((
uint8_t
*
)
&
sOptunnel_Token_temp
.
cmei
,
0xff
,
32
)){
}
else
if
(
All_Same_Data
((
uint8_t
*
)
&
sOptunnel_Token_temp
.
cmei
,
0xff
,
32
)){
flash_write
(
TOKEN_USER_LOCATION
+
CMEI_LOC_OFFSET
,
len
,
buff
);
//Auth: han_frc.20220105.
u8
cmei_buff
[
35
]
=
{
0
};
cmei_buff
[
0
]
=
len
;
memcpy
(
cmei_buff
+
1
,
buff
,
len
);
flash_write
(
TOKEN_USER_LOCATION
+
CMEI_LOC_OFFSET
,
len
+
1
,
cmei_buff
);
return
0
;
return
0
;
}
else
{
}
else
{
sOptunnel_Token_temp
.
cmei
.
cmei_len
=
len
;
sOptunnel_Token_temp
.
cmei
.
cmei_len
=
len
;
...
@@ -330,7 +370,11 @@ uint8_t General_Custom_Token_Save(uint8_t item,uint8_t *buff,uint8_t len)
...
@@ -330,7 +370,11 @@ uint8_t General_Custom_Token_Save(uint8_t item,uint8_t *buff,uint8_t len)
//same data ,not need rewrite!
//same data ,not need rewrite!
return
0
;
return
0
;
}
else
if
(
All_Same_Data
((
uint8_t
*
)
&
sOptunnel_Token_temp
.
isn
,
0xff
,
32
)){
}
else
if
(
All_Same_Data
((
uint8_t
*
)
&
sOptunnel_Token_temp
.
isn
,
0xff
,
32
)){
flash_write
(
TOKEN_USER_LOCATION
+
ISN_LOC_OFFSET
,
len
,
buff
);
//Auth: han_frc.20220105.
u8
isn_buff
[
35
]
=
{
0
};
isn_buff
[
0
]
=
len
;
memcpy
(
isn_buff
+
1
,
buff
,
len
);
flash_write
(
TOKEN_USER_LOCATION
+
ISN_LOC_OFFSET
,
len
+
1
,
isn_buff
);
return
0
;
return
0
;
}
else
{
}
else
{
sOptunnel_Token_temp
.
isn
.
isn_len
=
len
;
sOptunnel_Token_temp
.
isn
.
isn_len
=
len
;
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-token.h
View file @
b1dbfcb7
...
@@ -82,6 +82,10 @@ nv_sts_t kSetIndicatorNotDisturbModeFlg(uint8_t value);
...
@@ -82,6 +82,10 @@ nv_sts_t kSetIndicatorNotDisturbModeFlg(uint8_t value);
nv_sts_t
kSetInterpanEnableFlg
(
uint8_t
value
);
nv_sts_t
kSetInterpanEnableFlg
(
uint8_t
value
);
bool
kGetInterpanEnableFlg
(
void
);
bool
kGetInterpanEnableFlg
(
void
);
uint16_t
kNwkgetNodeIdFromFlash
(
void
);
nv_sts_t
kNwksaveNodeIdToFlash
(
uint16_t
node_id
);
#if 1
#if 1
void
falsh_test
(
uint8_t
count
);
void
falsh_test
(
uint8_t
count
);
#endif
#endif
...
...
tl_zigbee_sdk/build/tlsr_tc32/.cproject
View file @
b1dbfcb7
This source diff could not be displayed because it is too large. You can
view the blob
instead.
tl_zigbee_sdk/build/tlsr_tc32/.project
View file @
b1dbfcb7
...
@@ -216,5 +216,15 @@
...
@@ -216,5 +216,15 @@
<type>
1
</type>
<type>
1
</type>
<locationURI>
PARENT-2-PROJECT_LOC/platform/services/b85m/irq_handler.c
</locationURI>
<locationURI>
PARENT-2-PROJECT_LOC/platform/services/b85m/irq_handler.c
</locationURI>
</link>
</link>
<link>
<name>
apps/common/00ikonke_app/general/ikk-sequence.c
</name>
<type>
1
</type>
<location>
E:/telin_zigbee_sdk/tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-sequence.c
</location>
</link>
<link>
<name>
apps/common/00ikonke_app/general/ikk-sequence.h
</name>
<type>
1
</type>
<location>
E:/telin_zigbee_sdk/tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-sequence.h
</location>
</link>
</linkedResources>
</linkedResources>
</projectDescription>
</projectDescription>
tl_zigbee_sdk/proj/drivers/drv_nv.h
View file @
b1dbfcb7
...
@@ -360,6 +360,7 @@ typedef enum{
...
@@ -360,6 +360,7 @@ typedef enum{
NV_NO_DISTURB_MODE
,
//lmm add
NV_NO_DISTURB_MODE
,
//lmm add
NV_AGING_TEST_TIME
,
//lmm add
NV_AGING_TEST_TIME
,
//lmm add
NV_INTERPAN_ENABLE_FLG
,
//lmm add
NV_INTERPAN_ENABLE_FLG
,
//lmm add
NV_NODE_ID_FLG
,
//han add
NV_ITEM_ID_MAX
=
0xFF
,
/* Item id 0xFF should not be used. */
NV_ITEM_ID_MAX
=
0xFF
,
/* Item id 0xFF should not be used. */
}
nv_item_t
;
}
nv_item_t
;
...
...
tl_zigbee_sdk/proj/os/ev_buffer.c
View file @
b1dbfcb7
...
@@ -228,6 +228,7 @@ buf_sts_t ev_buf_free(u8 *pBuf)
...
@@ -228,6 +228,7 @@ buf_sts_t ev_buf_free(u8 *pBuf)
#endif
#endif
ZB_EXCEPTION_POST
(
SYS_EXCEPTTION_EV_BUFFER_EXCEPTION_FREE_OVERFLON
);
ZB_EXCEPTION_POST
(
SYS_EXCEPTTION_EV_BUFFER_EXCEPTION_FREE_OVERFLON
);
}
}
ev_bufItem_t
*
pDelBuf
=
ev_buf_getHead
(
pBuf
);
ev_bufItem_t
*
pDelBuf
=
ev_buf_getHead
(
pBuf
);
...
@@ -247,7 +248,9 @@ buf_sts_t ev_buf_free(u8 *pBuf)
...
@@ -247,7 +248,9 @@ buf_sts_t ev_buf_free(u8 *pBuf)
}
}
mempool_free
(
ev_buf_v
->
bufGroups
[
pDelBuf
->
groupIndex
].
qHead
,
ev_buf_retriveMempoolHeader
(
pBuf
));
mempool_free
(
ev_buf_v
->
bufGroups
[
pDelBuf
->
groupIndex
].
qHead
,
ev_buf_retriveMempoolHeader
(
pBuf
));
ev_buf_v
->
bufGroups
[
pDelBuf
->
groupIndex
].
availBufNum
++
;
ev_buf_v
->
bufGroups
[
pDelBuf
->
groupIndex
].
availBufNum
++
;
//Tl_printf("ev_buf_free pBuf = %d 11111111111111111\r\n",pBuf);
#if EV_BUFFER_DEBUG
#if EV_BUFFER_DEBUG
pDelBuf
->
line
=
line
;
pDelBuf
->
line
=
line
;
...
...
tl_zigbee_sdk/zigbee/zcl/zcl.c
View file @
b1dbfcb7
...
@@ -47,8 +47,7 @@
...
@@ -47,8 +47,7 @@
* INCLUDES
* INCLUDES
*/
*/
#include "zcl_include.h"
#include "zcl_include.h"
#include "../common/00ikonke_app/general/ikk-cluster.h"
/**********************************************************************
/**********************************************************************
* LOCAL CONSTANTS
* LOCAL CONSTANTS
*/
*/
...
@@ -643,6 +642,7 @@ _CODE_ZCL_ static u8 zcl_buildHdr(u8 *buf, u8 clusterSpec, u8 dir, u8 disDefRsp,
...
@@ -643,6 +642,7 @@ _CODE_ZCL_ static u8 zcl_buildHdr(u8 *buf, u8 clusterSpec, u8 dir, u8 disDefRsp,
_CODE_ZCL_
status_t
zcl_sendCmd
(
u8
srcEp
,
epInfo_t
*
pDstEpInfo
,
u16
clusterId
,
u8
cmd
,
u8
specific
,
_CODE_ZCL_
status_t
zcl_sendCmd
(
u8
srcEp
,
epInfo_t
*
pDstEpInfo
,
u16
clusterId
,
u8
cmd
,
u8
specific
,
u8
direction
,
u8
disableDefaultRsp
,
u16
manuCode
,
u8
seqNo
,
u16
cmdPldLen
,
u8
*
cmdPld
)
u8
direction
,
u8
disableDefaultRsp
,
u16
manuCode
,
u8
seqNo
,
u16
cmdPldLen
,
u8
*
cmdPld
)
{
{
Tl_printf
(
"
\r\n
###zcl_sendCmd111111 srcEp = %d, direction = %d
\r\n
"
,
srcEp
,
direction
);
u8
*
asdu
=
(
u8
*
)
ev_buf_allocate
(
sizeof
(
zclHdr_t
)
+
cmdPldLen
);
u8
*
asdu
=
(
u8
*
)
ev_buf_allocate
(
sizeof
(
zclHdr_t
)
+
cmdPldLen
);
if
(
!
asdu
){
if
(
!
asdu
){
return
ZCL_STA_INSUFFICIENT_SPACE
;
return
ZCL_STA_INSUFFICIENT_SPACE
;
...
@@ -1063,8 +1063,8 @@ _CODE_ZCL_ status_t zcl_readRspHandler(zclIncoming_t *pCmd)
...
@@ -1063,8 +1063,8 @@ _CODE_ZCL_ status_t zcl_readRspHandler(zclIncoming_t *pCmd)
_CODE_ZCL_
zclReadCmd_t
*
zcl_parseInReadCmd
(
zclIncoming_t
*
pCmd
)
_CODE_ZCL_
zclReadCmd_t
*
zcl_parseInReadCmd
(
zclIncoming_t
*
pCmd
)
{
{
u8
*
pBuf
=
pCmd
->
pData
;
u8
*
pBuf
=
pCmd
->
pData
;
zclReadCmd_t
*
p
=
(
zclReadCmd_t
*
)
ev_buf_allocate
(
sizeof
(
zclReadCmd_t
)
+
pCmd
->
dataLen
);
zclReadCmd_t
*
p
=
(
zclReadCmd_t
*
)
ev_buf_allocate
(
sizeof
(
zclReadCmd_t
)
+
pCmd
->
dataLen
);
if
(
p
!=
NULL
){
if
(
p
!=
NULL
){
p
->
numAttr
=
pCmd
->
dataLen
/
2
;
//attr ID
p
->
numAttr
=
pCmd
->
dataLen
/
2
;
//attr ID
for
(
u8
i
=
0
;
i
<
p
->
numAttr
;
i
++
){
for
(
u8
i
=
0
;
i
<
p
->
numAttr
;
i
++
){
...
@@ -1656,7 +1656,42 @@ _CODE_ZCL_ status_t zcl_report(u8 srcEp, epInfo_t *pDstEpInfo, u8 disableDefault
...
@@ -1656,7 +1656,42 @@ _CODE_ZCL_ status_t zcl_report(u8 srcEp, epInfo_t *pDstEpInfo, u8 disableDefault
*
pBuf
++
=
dataType
;
*
pBuf
++
=
dataType
;
memcpy
(
pBuf
,
pData
,
attrSize
);
memcpy
(
pBuf
,
pData
,
attrSize
);
//modify
ZclReportTableSt
zclReportInfo
;
addrExt_t
g_Eui64GatewayAddr
;
extern
void
kNwkGetGateWayEui64
(
addrExt_t
eui64
);
kNwkGetGateWayEui64
(
g_Eui64GatewayAddr
);
zdo_bind_req_t
req
;
memset
(
&
req
,
0
,
sizeof
(
zdo_bind_req_t
));
bool
permitStatus
=
kZclClusterGetPermitReportInfo
(
srcEp
,
clusterId
,
&
zclReportInfo
);
if
(
permitStatus
&&
(
!
zclReportInfo
.
reportGatewayEnable
||
!
zclReportInfo
.
reportChildDeviceEnable
)){
if
((
zclReportInfo
.
reportGatewayEnable
&&
!
memcmp
(
g_Eui64GatewayAddr
,
req
.
dst_ext_addr
,
8
))
\
||
(
zclReportInfo
.
reportChildDeviceEnable
&&
memcmp
(
g_Eui64GatewayAddr
,
req
.
dst_ext_addr
,
8
))){
Tl_printf
(
"
\r\n
###111111 ep(%d),cluster(%d),Send child(%d),gateway(%d),permitStatus(%d)
\r\n
"
,
srcEp
,
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
,
permitStatus
);
}
else
{
Tl_printf
(
"
\r\n
###222222 ep(%d),cluster(%d),Send child(%d),gateway(%d),permitStatus(%d)
\r\n
"
,
srcEp
,
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
,
permitStatus
);
ev_buf_free
(
buf
);
return
0
;
}
}
else
if
(
!
permitStatus
){
Tl_printf
(
"
\r\n
###333333 ep(%d),cluster(%d),Send child(%d),gateway(%d),permitStatus(%d)
\r\n
"
,
srcEp
,
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
,
permitStatus
);
ev_buf_free
(
buf
);
return
0
;
}
if
(
!
memcmp
(
zclReportInfo
.
maskEui64Addr
,
req
.
dst_ext_addr
,
8
)
&&
(
zclReportInfo
.
dest_endpoint
==
req
.
dst_endpoint
)
&&
(
zclReportInfo
.
endpoint
==
srcEp
)
){
memset
(
zclReportInfo
.
maskEui64Addr
,
0xff
,
8
);
zclReportInfo
.
endpoint
=
RESET_ENDPOINT
;
zclReportInfo
.
dest_endpoint
=
RESET_ENDPOINT
;
//KKK clear addr
Tl_printf
(
"
\r\n
###444444 ep(%d),cluster(%d),Send child(%d),gateway(%d),permitStatus(%d)
\r\n
"
,
srcEp
,
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
,
permitStatus
);
kZclClusterSetPermitReportInfo
(
srcEp
,
zclReportInfo
.
cluster
,
zclReportInfo
.
reportEnable
,
zclReportInfo
.
sceneRecallFlg
,
zclReportInfo
.
reportGatewayEnable
,
zclReportInfo
.
reportChildDeviceEnable
,
NULL
,
RESET_ENDPOINT
);
ev_buf_free
(
buf
);
return
0
;
}
u8
status
=
zcl_sendCmd
(
srcEp
,
pDstEpInfo
,
clusterId
,
ZCL_CMD_REPORT
,
FALSE
,
direction
,
disableDefaultRsp
,
manuCode
,
seqNo
,
len
,
buf
);
u8
status
=
zcl_sendCmd
(
srcEp
,
pDstEpInfo
,
clusterId
,
ZCL_CMD_REPORT
,
FALSE
,
direction
,
disableDefaultRsp
,
manuCode
,
seqNo
,
len
,
buf
);
Tl_printf
(
"
\r\n
###555555 ep(%d),cluster(%d),Send child(%d),gateway(%d),permitStatus(%d)
\r\n
"
,
srcEp
,
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
,
permitStatus
);
ev_buf_free
(
buf
);
ev_buf_free
(
buf
);
...
...
tl_zigbee_sdk/zigbee/zcl/zcl.h
View file @
b1dbfcb7
...
@@ -562,7 +562,7 @@ typedef struct {
...
@@ -562,7 +562,7 @@ typedef struct {
* @brief Definition for ZCL layer sequence number.
* @brief Definition for ZCL layer sequence number.
*/
*/
extern
u8
zcl_seqNum
;
extern
u8
zcl_seqNum
;
#define ZCL_SEQ_NUM (zcl_seqNum
++
)
#define ZCL_SEQ_NUM (zcl_seqNum
< 127?(++zcl_seqNum):((zcl_seqNum = 0?(++zcl_seqNum):0))
)
extern
const
u16
zcl_attr_global_clusterRevision
;
extern
const
u16
zcl_attr_global_clusterRevision
;
...
...
tl_zigbee_sdk/zigbee/zcl/zcl_reporting.c
View file @
b1dbfcb7
...
@@ -465,6 +465,10 @@ _CODE_ZCL_ void reportNoMinLimit(void)
...
@@ -465,6 +465,10 @@ _CODE_ZCL_ void reportNoMinLimit(void)
||
((
zcl_analogDataType
(
pAttrEntry
->
type
)
||
((
zcl_analogDataType
(
pAttrEntry
->
type
)
&&
reportableChangeValueChk
(
pAttrEntry
->
type
,
pAttrEntry
->
data
,
pEntry
->
prevData
,
pEntry
->
reportableChange
)))
&&
reportableChangeValueChk
(
pAttrEntry
->
type
,
pAttrEntry
->
data
,
pEntry
->
prevData
,
pEntry
->
reportableChange
)))
){
){
Tl_printf
(
"ReportAttrTimerCb!!!!!!(%d),(%d)
\r\n
"
,
\
(
!
zcl_analogDataType
(
pAttrEntry
->
type
)
&&
(
memcmp
(
pEntry
->
prevData
,
pAttrEntry
->
data
,
len
)
!=
SUCCESS
)),
\
((
zcl_analogDataType
(
pAttrEntry
->
type
)
&&
reportableChangeValueChk
(
pAttrEntry
->
type
,
pAttrEntry
->
data
,
pEntry
->
prevData
,
pEntry
->
reportableChange
))));
//lmm add for report control
//lmm add for report control
extern
bool
kZclClusterReportChangeCallback
(
uint8_t
endpoint
,
uint16_t
clusterId
,
uint16_t
attributeId
);
extern
bool
kZclClusterReportChangeCallback
(
uint8_t
endpoint
,
uint16_t
clusterId
,
uint16_t
attributeId
);
if
(
!
kZclClusterReportChangeCallback
(
pEntry
->
endPoint
,
pEntry
->
clusterID
,
pEntry
->
attrID
)){
if
(
!
kZclClusterReportChangeCallback
(
pEntry
->
endPoint
,
pEntry
->
clusterID
,
pEntry
->
attrID
)){
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment