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
Expand all
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 =
zcl_basicAttr_t
g_zcl_basicAttrs
=
{
.
zclVersion
=
0x03
,
.
appVersion
=
0x2
8
,
.
appVersion
=
0x2
9
,
.
stackVersion
=
0x02
,
.
hwVersion
=
0x20
,
.
manuName
=
ZCL_BASIC_MFG_NAME
,
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/3LightPanelDemo_endpoint_config.h
View file @
b1dbfcb7
...
...
@@ -2,20 +2,61 @@
#define __IKONKE_ENDPOINT_CONFIG_H___
#include "types.h"
/**
* @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_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
// Array of profile ids
#define FIXED_PROFILE_IDS { 260, 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, HA_DEV_ONOFF_LIGHT_SWITCH }
#endif
typedef
struct
{
u8
zclVersion
;
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/app_cfg.h
View file @
b1dbfcb7
...
...
@@ -101,7 +101,7 @@ extern "C" {
#endif
#define ZCL_GROUP_SUPPORT 1
#define ZCL_SCENE_SUPPORT 1
#define ZCL_OTA_SUPPORT
1
#define ZCL_OTA_SUPPORT
0
#define ZCL_PRIVATE_CLUSTER_FCC0_SUPPORT 1
#if TOUCHLINK_SUPPORT
#define ZCL_ZLL_COMMISSIONING_SUPPORT 1
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/ikk-config.h
View file @
b1dbfcb7
...
...
@@ -2,12 +2,133 @@
#define __IKONKE_CONFIG_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 */
#define PRODUCT_MODEL "KK-
PA-M10
X"
#define PRODUCT_MODEL "KK-
LP-D84
X"
/*Dsp: APP Version */
#define FIRMWARE_VER 0x2
0
#define FIRMWARE_VER 0x2
9
/*Dsp: Stack Version */
#define STACK_VER 0x11
...
...
@@ -22,10 +143,10 @@
#define MODEL_ID 0x00068624
/*Dsp: OTA_IMAGE_TYPE */
#define OTA_IMAGE_TYPE 6500
0
#define OTA_IMAGE_TYPE 6500
4
/*Dsp: OTA_FIRMVERSION */
#define OTA_FIRMVERSION 0x2
0
#define OTA_FIRMVERSION 0x2
9
/*Dsp: MANUFATURE_CODE */
#define MANUFATURE_CODE 0x1268
...
...
@@ -36,9 +157,10 @@
#define MANUFACTURER_CODE_TELINK 0x1268
#define IMAGE_TYPE 6500
0
#define IMAGE_TYPE 6500
4
#define FILE_VERSION 0x10
#endif
#include "../common/comm_cfg.h"
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/user.c
View file @
b1dbfcb7
This diff is collapsed.
Click to expand it.
tl_zigbee_sdk/apps/3LightPanelDemo/user.h
View file @
b1dbfcb7
...
...
@@ -7,7 +7,9 @@
#include "ikk-led.h"
#include "ikk-network.h"
#define ZCL_ATTRID_NoDisturbMode 0x100C
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
tl_zigbee_sdk/apps/3LightPanelDemo/zb_appCb.c
View file @
b1dbfcb7
...
...
@@ -54,6 +54,7 @@
#include "bdb.h"
#include "ota.h"
#include PROJECT_H
#include "ikk-ota.h"
#include "ikk-debug.h"
#include "ikk-network.h"
/**********************************************************************
...
...
@@ -258,31 +259,34 @@ void zbdemo_bdbIdentifyCb(u8 endpoint, u16 srcAddr, u16 identifyTime){
#endif
}
#ifdef ZCL_OTA
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
(
status
==
ZCL_STA_SUCCESS
){
kOTAMoudleCallback
(
OTA_START
);
}
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
){
if
(
status
==
ZCL_STA_SUCCESS
){
ota_mcuReboot
();
kOTAMoudleCallback
(
OTA_VERITY_SUCCEED
);
}
else
{
ota_queryStart
(
30
);
kOTAMoudleCallback
(
OTA_FAILED
);
}
}
}
#endif
/*********************************************************************
* @fn sampleLight_leaveIndHandler
*
...
...
tl_zigbee_sdk/apps/3LightPanelDemo/zcl_onOffCb.c
View file @
b1dbfcb7
...
...
@@ -53,6 +53,9 @@
#include "zcl_include.h"
#include PROJECT_H
#include "zcl.h"
#include "ikk-debug.h"
#include "ikk-sequence.h"
#include "ikk-cluster.h"
/**********************************************************************
* LOCAL CONSTANTS
*/
...
...
@@ -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
);
void
zclReportCmdHandler
(
uint8_t
ep
,
uint16_t
cluster
,
zclReportCmd_t
*
reportInfo
)
static
ev_timer_event_t
*
kSrcEp1Multieport
=
NULL
;
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
)
{
//当report的是子设备时进行过滤
case
ZCL_CLUSTER_GEN_ON_OFF
:
{
for
(
uint8_t
i
=
0
;
i
<
(
reportInfo
->
numAttr
);
i
++
)
{
if
(
reportInfo
->
attrList
[
i
].
attrID
==
ZCL_ATTRID_ONOFF
)
{
uint16_t
sender
=
pInHdlrMsg
->
msg
->
indInfo
.
src_short_addr
;
for
(
uint8_t
i
=
0
;
i
<
(
reportInfo
->
numAttr
);
i
++
)
{
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
];
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
;
}
default:
break
;
}
}
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 @@
#include "ota.h"
#include PROJECT_H
#include "ikk-debug.h"
#include "ikk-ota.h"
#include "ikk-opt-tunnel.h"
/**********************************************************************
* LOCAL CONSTANTS
...
...
@@ -110,7 +111,7 @@ static ev_timer_event_t *identifyTimerEvt = NULL;
* @return None
*/
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
)
{
iKonkeAfSelfPrint
(
"######sampleLight_zclProcessIncomingMsg,cmd = %d,len=%d,
\n
"
,
pInHdlrMsg
->
hdr
.
cmd
,
pInHdlrMsg
->
dataLen
);
...
...
@@ -147,7 +148,7 @@ void sampleLight_zclProcessIncomingMsg(zclIncoming_t *pInHdlrMsg)
sampleLight_zclCfgReportRspCmd
(
pInHdlrMsg
->
attrCmd
);
break
;
case
ZCL_CMD_REPORT
:
zclReportCmdHandler
(
ep
,
cluster
,
pInHdlrMsg
->
attrCmd
);
zclReportCmdHandler
(
ep
,
cluster
,
pInHdlrMsg
->
attrCmd
,
pInHdlrMsg
);
break
;
#endif
case
ZCL_CMD_DEFAULT_RSP
:
...
...
@@ -325,19 +326,25 @@ void sampleLight_zclIdentifyTimerStop(void)
*
* @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
)
{
// g_zcl_identifyAttrs.identifyTime = identifyTime;
//
// if(identifyTime == 0){
// sampleLight_zclIdentifyTimerStop();
// //light_blink_stop();
// }else{
// if(!identifyTimerEvt){
// //light_blink_start(identifyTime, 500, 500);
// identifyTimerEvt = TL_ZB_TIMER_SCHEDULE(sampleLight_zclIdentifyTimerCb, NULL, 1000);
// }
// }
g_zcl_identifyAttrs
->
identifyTime
=
identifyTime
;
/*if(kGetOTAStatus() == OTA_NORMAL){*/
if
(
identifyTime
==
0
){
kSetLedStatus
(
LED_ALL_ID
);
}
else
{
kLedOptTrigger
(
LED_ALL_ID
,
LED_SLOW_BLINK_ON_TIME_MS
,
LED_SLOW_BLINK_OFF_TIME_MS
,
identifyTime
*
1000
/
(
LED_SLOW_BLINK_ON_TIME_MS
+
LED_SLOW_BLINK_OFF_TIME_MS
),
LED_ON
,
LED_OFF
);
}
/* }*/
}
/*********************************************************************
...
...
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
pScene
->
extField
[
extLen
++
]
=
HI_UINT16
(
ZCL_CLUSTER_GEN_ON_OFF
);
pScene
->
extField
[
extLen
++
]
=
1
;
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
);
#endif
...
...
@@ -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
)
{
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
){
switch
(
cmdId
){
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
return
;
}
// 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);
if
(
id
!=
1
)
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
].
offDuration
=
duration_off_ms
/
TICK_LOOP_NMS
;
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
)
{
kLedDriverhandler
(
led_index
,
LED_ON
);
...
...
@@ -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
]){
bFlg
[
led_index
]
=
true
;
g_pLedBlinkDoneCallback
[
led_index
](
id
);
}
}
else
{
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;
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
;
...
...
@@ -80,7 +80,7 @@ uint8_t kPwmGetIndexByID(uint8_t pwm_id )
*/
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
){
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
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
);
if
(
!
Pwm_Tick_Detect_Running_Flag
)
{
Pwm_Tick_Detect_Running_Flag
=
true
;
if
(
!
Pwm_Tick_Detect_Running_Flag
[
pwm_index
]
)
{
Pwm_Tick_Detect_Running_Flag
[
pwm_index
]
=
true
;
}
}
/* DESP: single LED instance register interface.
...
...
@@ -253,15 +253,18 @@ kk_err_t kPwmModuleInit(PwmConfSt pwmlist[], unsigned char pwm_number, pPwmActio
}
static
s32
kPwmGradientChangeEventHandler
(
void
*
data
)
{
if
(
!
Pwm_Tick_Detect_Running_Flag
)
return
0
;
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
].
startDutyCycle
>
g_stPwmCtrller
[
i
].
endDutyCycle
){
g_stPwmCtrller
[
i
].
actionCounter
--
;
g_stPwmCtrller
[
i
].
startDutyCycleValue
-=
g_stPwmCtrller
[
i
].
intervalDutyCycle
;
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
){
g_stPwmCtrller
[
i
].
actionCounter
--
;
g_stPwmCtrller
[
i
].
startDutyCycleValue
+=
g_stPwmCtrller
[
i
].
intervalDutyCycle
;
...
...
@@ -272,7 +275,6 @@ static s32 kPwmGradientChangeEventHandler(void *data)
if
(
g_stPwmCtrller
[
i
].
actionCounter
==
0
){
//may be end duty cycle not equal, restore end duty cycle
pwmSetDuty
(
g_stPwmCtrller
[
i
].
gpioInfo
.
pwmChannel
,
g_stPwmCtrller
[
i
].
endDutyCycle
);
if
(
g_pPwmActionDoneCallback
){
PwmGradientDirectionEnum
opt
=
ELP_OPT_DEFAULT
;
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;
//static pClusterAttributeChangeCallback pLevelClusterCallback = NULL;
//static pClusterAttributeChangeCallback pColorClusterCallback = NULL;
static
status_t
WriteServerAttribute
(
u8
endpoint
,
u16
clusterId
,
uint8_t
attributeID
,
uint8_t
*
dataPtr
,
uint8_t
data_type
);
typedef
struct
{
ZclReportTableSt
g_stZclReportPermitList
[
ENDPOINT_MAXN
*
CLUSTER_MAXN
];
...
...
@@ -202,11 +201,6 @@ void Update_Local_Attribute_Info(void)
Rewrite_ManufactureName
();
}
typedef
struct
{
zcl_basicAttr_t
basicAttrs_temp
;
zcl_identifyAttr_t
identifyAttrs_temp
;
...
...
@@ -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
].
reportEnable
=
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
;
}
...
...
@@ -326,13 +322,15 @@ bool kZclClusterGetPermitReportInfo(uint8_t endpoint, uint16_t cluster, ZclRepor
zclReportPermit
->
cluster
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
cluster
;
zclReportPermit
->
reportEnable
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportEnable
;
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
false
;
}
//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
;
...
...
@@ -347,6 +345,14 @@ bool kZclClusterSetPermitReportInfo(uint8_t endpoint, uint16_t cluster, bool rep
if
(
index
!=
0xFF
){
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportEnable
=
reportEnable
;
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
;
}
}
else
{
//㲥
...
...
@@ -356,6 +362,14 @@ bool kZclClusterSetPermitReportInfo(uint8_t endpoint, uint16_t cluster, bool rep
if
(
index
!=
0xFF
){
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportEnable
=
reportEnable
;
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
;
}
}
...
...
@@ -377,9 +391,10 @@ kk_err_t kZclOnOffClusterServerInit(pOnOffClusterOnOffStatusCallback pOnOffStatu
void
ON_OFF_Cmd_Handler
(
uint8_t
endpoint
,
bool
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
);
}
/* DESP: Modified attribute reporting interface, reference from SDK callback[emberAfReportingAttributeChangeCallback].
* Auth: dingmz_frc.20190701.
* */
...
...
@@ -388,6 +403,7 @@ void kOptTunnelReportingPlagiarizeOriginal(uint8_t endpoint, uint16_t clusterId,
if
(
!
zb_bindingTblSearched
(
clusterId
,
endpoint
)){
return
;
}
iKonkeAfSelfPrint
(
"######kOptTunnelReportingPlagiarizeOriginal111111
\r\n
"
);
for
(
u8
i
=
0
;
i
<
ZCL_REPORTING_TABLE_NUM
;
i
++
){
reportCfgInfo_t
*
pEntry
=
&
reportingTab
.
reportCfgInfo
[
i
];
if
(
pEntry
->
endPoint
==
endpoint
...
...
@@ -404,6 +420,7 @@ void kOptTunnelReportingPlagiarizeOriginal(uint8_t endpoint, uint16_t clusterId,
ZB_EXCEPTION_POST
(
SYS_EXCEPTTION_ZB_ZCL_ENTRY
);
return
;
}
u16
len
=
zcl_getAttrSize
(
pAttrEntry
->
type
,
pAttrEntry
->
data
);
len
=
(
len
>
8
)
?
(
8
)
:
(
len
);
...
...
@@ -415,5 +432,43 @@ void kOptTunnelReportingPlagiarizeOriginal(uint8_t endpoint, uint16_t clusterId,
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 @@
#include "zcl.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
{
EOOC_OFF
=
0
,
EOOC_ON
,
EOOC_TOGGLE
,
EOOC_UNKNOW
}
OnOffCtrlEnum
;
#define RESET_ENDPOINT 0xFE
#define ZCL_CMD_ONOFF_OFF 0x00
#define ZCL_CMD_ONOFF_ON 0x01
#define ZCL_CMD_ONOFF_TOGGLE 0x02
...
...
@@ -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_ON 0x01
typedef
struct
tag_zcl_report_table
{
uint8_t
endpoint
;
uint16_t
cluster
;
bool
reportEnable
;
bool
sceneRecallFlg
;
bool
reportGatewayEnable
;
bool
reportChildDeviceEnable
;
addrExt_t
maskEui64Addr
;
uint8_t
dest_endpoint
;
}
ZclReportTableSt
;
#define MAX_ATTR_CHANGE_SUPPORT_NUMS 8
...
...
@@ -61,7 +75,9 @@ kk_err_t kZclOnOffClusterServerOnOffControl(uint8_t endpoint, OnOffCtrlEnum ctrl
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
);
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
);
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_ */
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)
/* DESP: remap opcode, arg direction 0: FCC0->AA55 1:AA55->FCC0
* 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
++
)
{
if
(
opcodeReampTable
[
i
][
0
]
==
Opcode
)
{
...
...
@@ -66,7 +66,6 @@ uint16_t kCmdOpcodeRemap(uint16_t Opcode, uint8_t direction)
return
0xFFFF
;
}
kk_err_t
kCmdGeneralMsgPaser
(
UMsgNodeSt
*
pMsgNode
,
ComPortEm
port
,
DataField_st
*
pDataOut
)
{
//UMsgNodeSt uMsgNode = {0};
...
...
@@ -144,7 +143,7 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
//check install code length 20200725
uint8_t
length
=
data
.
u8ARG
[
0
];
if
(
length
!=
16
)
{
if
(
length
!=
16
)
{
//如果不是16位的数据就不做任何改变,只回复
send_buf
.
u8ARG
[
0
]
=
ERR_FORMAT
;
send_buf
.
u8ARG
[
1
]
=
data
.
u8ARG
[
0
];
memcpy
(
&
send_buf
.
u8ARG
[
2
],
&
data
.
u8ARG
[
1
],
length
);
...
...
@@ -247,9 +246,9 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
memset
(
buffer
,
0
,
33
);
uint8_t
*
data
=
ISN_TOKEN_GET
();
iKonkeAfSelfPrint
(
"len %x
\r\n
"
,
data
[
0
]);
iKonkeAfSelfPrintBuffer
(
data
+
1
,
32
);
length
=
data
[
0
];
iKonkeAfSelfPrint
(
"read ISN len %x
\r\n
"
,
data
[
0
]);
iKonkeAfSelfPrintBuffer
(
data
+
1
,
32
);
memcpy
(
buffer
,
data
,
length
+
1
);
if
(
length
>
32
)
{
...
...
@@ -268,7 +267,7 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
{
uint8_t
mac_length
=
0x00
;
addrExt_t
addr
,
local_addr
;
flash_read
(
CFG_MAC_ADDRESS
,
8
,(
uint8_t
*
)
local_addr
);
zb_getLocalExtAddr
(
local_addr
);
mac_length
=
data
.
u8ARG
[
0
];
if
(
mac_length
!=
8
)
{
...
...
@@ -293,8 +292,7 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
case
(
UART_MSG_READ_MAC_CODE_OPCODE
):
//ok
{
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
[
1
]
=
0x08
;
...
...
@@ -403,82 +401,48 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
}
case
(
UART_MSG_WRITE_INTERPAN_PARA_OPCODE
):
{
extern
void
GetInterpanPara
(
uint8_t
*
enable
,
uint8_t
*
channel
,
uint16_t
*
panId
);
uint8_t
enable
=
0
;
uint16_t
panId
=
0
;
uint8_t
channel
=
0
;
int8_t
radioTxPower
=
0
;
uint16_t
panId
=
0
;
enable
=
data
.
u8ARG
[
0
];
channel
=
data
.
u8ARG
[
1
];
panId
=
UINT16_HL
(
data
.
u8ARG
[
2
],
data
.
u8ARG
[
3
]);
radioTxPower
=
data
.
u8ARG
[
4
];
if
(
enable
==
1
)
zb_factoryReset
(
);
SetInterpanPara
(
channel
,
panId
);
GetInterpanPara
(
&
enable
,
&
channel
,
&
panId
);
SetInterpanPara
(
channel
,
panId
,
enable
);
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
;
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
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{
}
MsgFrameworkFormat_st
;
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
);
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 @@
#define __IKONKE_MODULE_DEBUG_H______________________________
#define IKONKE_DEBUG_LOG_ENABLE (
0
) // ENABLE
#define IKONKE_DEBUG_LOG_ENABLE (
1
) // ENABLE
#define PROMPT_DSR ""
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-factory-test.c
View file @
b1dbfcb7
This diff is collapsed.
Click to expand it.
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-factory-test.h
View file @
b1dbfcb7
...
...
@@ -19,14 +19,14 @@
#define TOUCH_KEY_LONG_PRESS_TIME_MS (5 * 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_10S (10 * 1000)
#define FACTORY_TEST_POLL_TIMES (FACTORY_TEST_POLL_TTME_10S / FACTORY_TEST_POLL_TTME_1S)
#if AGING_DEBUG
#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
#define FACTORY_TEST_15MIN_MS (15 * 60 * 1000)
#define FACTORY_TEST_4HOU_MS (4 * 60 * 60 * 1000)
...
...
@@ -42,11 +42,15 @@ typedef enum{
FTS_AGING_4HOU_START
,
FTS_AGING_4HOU
,
FTS_AGING_DONE
,
FTS_AGING_FORCE_EXIT
,
FTS_AGING_WAITING
,
FTS_AGING_FORCE_REBOOT
,
FTS_AGING_FIRST_LONG_PRESSED
,
FTS_AGING_WAITING_SECOND_PRESS
FTS_FORCE_EXIT
,
FTS_WAITING_RELEASED
,
//waiting key released
FTS_FORCE_REBOOT
,
FTS_FIRST_LONG_PRESSED
,
FTS_WAITING_SECOND_PRESS
,
FTS_SINGLE_BOARD_TEST
,
FTS_FULL_DEVICE_TEST
,
FTS_SINGLE_BOARD_TEST_DONE
,
FTS_FULL_DEVICE_TEST_DONE
,
}
FactoryTestStatusEnum
;
typedef
struct
{
...
...
@@ -74,7 +78,12 @@ void kSetAgingMaxTime(uint16_t value);
//获取当前产测状态
FactoryTestStatusEnum
kGetFactoryTestStatus
(
void
);
//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
);
#endif
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-interpan.c
View file @
b1dbfcb7
...
...
@@ -8,7 +8,7 @@
#include "ikk-debug.h"
#include "ikk-token.h"
#include "ikk-network.h"
#include "ikk-factory-test.h"
static
bool
gInterPanEnabled
;
// 1:enable
static
uint16_t
gInterPanID
=
0x1111
;
// 1:enable
...
...
@@ -16,12 +16,10 @@ static uint8_t g_interpanChannel = 20;
pInterPanMsgIncomingCallback
gInterPanMsgIncomingCallback
;
static
ev_timer_event_t
*
Interpan_timerEvt
=
NULL
;
static
ev_timer_event_t
*
Interpan_DelaySendEvt
=
NULL
;
static
INCOM_MESSAGE_INFO
sIncomingMessageInfo
=
{
0
};
static
s32
kInterPanEventHandler
(
void
);
static
s32
kInterPanDelaySendTestDataEventHandler
(
void
);
/**
* @brief Definition for Incoming cluster / Sever Cluster
...
...
@@ -99,18 +97,16 @@ void afInterpan_dataSendConfirm(void *arg)
}
bool
interpanleaveflg
=
false
;
void
kInterPanEnable
(
uint8_t
channel
)
{
rf_setChannel
(
channel
);
printf
(
"kInterPanEnable enable,Regesiter Interpan Func,network = %d
\r\n
!!
\r\n
"
,
kNwkGetCurrentStatus
());
if
(
kNwkGetCurrentStatus
()
==
ENS_LEAVED
)
{
af_endpointRegister
(
INTERPAN_ENDPOINT
,
(
af_simple_descriptor_t
*
)
&
kInterpanSimpleDesc
,
afInterpan_rx_handler
,
afInterpan_dataSendConfirm
);
}
else
{
kNwkFactoryReset
(
false
);
if
(
zb_isDeviceJoinedNwk
()){
zb_factoryReset
();
interpanleaveflg
=
true
;
}
af_endpointRegister
(
INTERPAN_ENDPOINT
,
(
af_simple_descriptor_t
*
)
&
kInterpanSimpleDesc
,
afInterpan_rx_handler
,
afInterpan_dataSendConfirm
);
}
void
kInterpanDisable
(
void
)
...
...
@@ -128,19 +124,17 @@ void kInterpanDisable(void)
void
kInterPanMoudleInit
(
pInterPanMsgIncomingCallback
pfunc_incoming
)
{
bool
interPanEnabledFlg
=
kGetInterpanEnableFlg
()
;
if
(
interPanEnabledFlg
)
{
gInterPanEnabled
=
true
;
if
(
kGetFactoryTestStatus
()
==
FTS_NORMAL
)
{
gInterPanEnabled
=
false
;
af_endpointUnregister
(
INTERPAN_ENDPOINT
);
printf
(
"kInterPanEnable disable
\r\n
!!
\r\n
"
)
;
}
if
(
gInterPanEnabled
==
true
)
{
else
{
gInterPanEnabled
=
true
;
printf
(
"kInterPanEnable enable
\r\n
!!
\r\n
"
);
kInterPanEnable
(
INTERPAN_CHANNEL
);
if
(
Interpan_timerEvt
){
TL_ZB_TIMER_CANCEL
(
&
Interpan_timerEvt
);
}
Interpan_timerEvt
=
TL_ZB_TIMER_SCHEDULE
(
kInterPanEventHandler
,
NULL
,
INTERPAN_AUTO_OFF_TIME
);
if
(
kNwkGetCurrentStatus
()
==
ENS_LEAVED
)
{
if
(
!
zb_isDeviceJoinedNwk
())
{
if
(
Interpan_DelaySendEvt
)
TL_ZB_TIMER_CANCEL
(
&
Interpan_DelaySendEvt
);
...
...
@@ -184,21 +178,21 @@ bool kInterPanSetEnableStatus(uint8_t enable)
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
)
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
s32
kInterPanDelaySendTestDataEventHandler
(
void
)
{
...
...
@@ -211,17 +205,6 @@ static s32 kInterPanDelaySendTestDataEventHandler(void )
sSend_Count
=
0
;
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
)
{
...
...
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;
#define INTERPAN_EVENT_INIT 0x00 // interPan Event
#define INTERPAN_EVENT_OFF 0x01 //
#define INTERPAN_AUTO_OFF_TIME (10 * 60 * 1000)
#define INTERPAN_DELAY_SEND_INTERVAL (3 * 1000)
#define INTERPAN_DELAY_SEND_TIMES (2)
#define INTERPAN_CHANNEL 20
...
...
@@ -30,7 +29,8 @@ typedef struct{
uint8_t
reserved
[
8
];
}
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_rx_handler
(
void
*
arg
);
void
kInterpanDisable
(
void
);
...
...
@@ -38,5 +38,7 @@ kk_err_t kInterPanSend(UMsgNodeSt *pMsgNode);
void
kInterpan_Init
(
void
);
bool
kInterPanSetEnableStatus
(
uint8_t
enable
);
bool
kInterPanGetEnableStatus
(
void
);
void
kInterPanMoudleInit
(
pInterPanMsgIncomingCallback
pfunc_incoming
);
#endif
/* _SAMPLE_LIGHT_H_ */
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-module-def.h
View file @
b1dbfcb7
...
...
@@ -86,6 +86,8 @@
#define UART_MSG_QUERY_SWITCH_ONOFF_OPCODE 0xED06
#define UART_MSG_ENTER_FACTORY_TEST_OPCODE 0xED14
#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_READ_RSSI_REQUEST_OPCODE 0xED12
...
...
@@ -172,6 +174,7 @@ typedef enum {
ERR_WRITE_FAILED
=
0x04
,
ERR_READ_WRITE_TIMEOUT
=
0x05
,
ERR_NOT_EXIST
=
0x06
,
ERR_EXEC_FAILED
=
0xe0
,
ERR_UNKNOW
=
0xFF
,
}
ERR_RET_E
;
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 @@
#include "ikk-cluster.h"
#include "ikk-interpan.h"
#include "ikk-factory-test.h"
#include "ikk-ota.h"
#include "../../../../zigbee/aps/aps_api.h"
#include "../../../../zigbee/common/includes/zb_common.h"
/**********************************************************************
...
...
@@ -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
}
};
// 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
bool
g_bIsNwkJoiningFlg
=
false
;
...
...
@@ -75,7 +88,11 @@ bool IsSteeringNwkTimeout(void)
void
Set_Nwk_Steering_Status
(
NwkSteeringStatusEnum
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].
Auth: dingmz_frc.20190701.
...
...
@@ -225,8 +242,17 @@ void kNwkGetGateWayEui64(addrExt_t eui64)
* */
void
kNwkNetworkStatusNotifyCall
(
NwkStatusEnum
nwkst
)
{
extern
bool
interpanleaveflg
;
if
(
interpanleaveflg
)
{
interpanleaveflg
=
false
;
return
;
}
g_eCurrentNetworkStatus
=
nwkst
;
iKonkeAfSelfPrint
(
"!!!g_eCurrentNetworkStatus = %d, g_eLastNetworkStatus = %d
\r\n
"
,
g_eCurrentNetworkStatus
,
g_eLastNetworkStatus
);
if
(
g_eCurrentNetworkStatus
!=
g_eLastNetworkStatus
)
{
g_eLastNetworkStatus
=
g_eCurrentNetworkStatus
;
...
...
@@ -241,6 +267,14 @@ void kNwkNetworkStatusNotifyCall(NwkStatusEnum nwkst )
Gateway_IEEE_Addr_Save
(
addr
);
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
]);
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.
...
...
@@ -250,7 +284,7 @@ void kNwkModuleActionDetectCallback(void )
{
//static EmberNetworkStatus s_old_network_st = EMBER_NO_NETWORK;
static
uint16_t
ucRestoreSteeringCount
=
0
;
//iKonkeAfSelfPrint("g_u32NwkJoiningCountdownCounter = %d,zb_isDeviceJoinedNwk = %d 111111111111\r\n",g_u32NwkJoiningCountdownCounter,zb_isDeviceJoinedNwk());
// joining procedure
if
(
g_u32NwkJoiningCountdownCounter
>
0
)
{
--
g_u32NwkJoiningCountdownCounter
;
...
...
@@ -380,17 +414,18 @@ bool kNwkIsExiting(void)
* */
void
kNwkFactoryReset
(
bool
is_nwk_indicator
)
{
iKonkeAfSelfPrint
(
"######kNwkFactoryReset is_nwk_indicator1111111111111111111111111(%d)
\r\n
"
,
is_nwk_indicator
);
kNwkJoiningStart
(
0
,
NULL
);
memset
(
g_Eui64GatewayAddr
,
0xFF
,
sizeof
(
g_Eui64GatewayAddr
));
Gateway_IEEE_Addr_Save
(
g_Eui64GatewayAddr
);
// //add by maozj 20200320
//
#if Z30_DEVICE_OTA_ENABLE
//
kSetOTAStatus(OTA_NORMAL);
//
#endif
// EmberNodeId
node = 0xFFFF;
//
kNwksaveNodeIdToFlash(node);
#if Z30_DEVICE_OTA_ENABLE
kSetOTAStatus
(
OTA_NORMAL
);
#endif
uint16_t
node
=
0xFFFF
;
kNwksaveNodeIdToFlash
(
node
);
g_u32NwkJoiningCountdownCounter
=
0
;
// g_u32EnrollResultCheckCounter = 0;
...
...
@@ -400,7 +435,8 @@ void kNwkFactoryReset(bool is_nwk_indicator)
//led can blink when network leaved
if
(
is_nwk_indicator
==
true
){
zb_factoryReset
();
if
(
zb_isDeviceJoinedNwk
())
//true status
zb_factoryReset
();
g_KeyPressCauasLeave
=
true
;
//add by maozj 20200407 for reset count down after network leaved
g_u32NwkExitCountDownCounter
=
MS2COUNT
(
LED_FAST_BLINK_CONTINUE_TIME_MS
);
...
...
@@ -444,7 +480,7 @@ void NetworkLeaveHandler(nlme_leave_cnf_t *pLeaveCnf)
NwkStatusEnum
kNwkGetCurrentStatus
(
void
)
{
NwkStatusEnum
status
;
if
(
zb_isDeviceJoinedNwk
()){
if
(
zb_isDeviceJoinedNwk
()
||
(
kInterPanGetEnableStatus
())
){
status
=
ENS_ONLINE
;
g_bIsNwkJoiningFlg
=
false
;
}
...
...
@@ -486,15 +522,16 @@ void kNwkJoiningStart(uint32_t u32JoiningDuration, pJoinCompleteCallback callbac
if
(
u32JoiningDuration
>
0
)
{
#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
;
}
#endif
if
(
!
zb_isDeviceJoinedNwk
())
{
//disable interpan
kInterpanDisable
();
if
(
kInterPanGetEnableStatus
())
kInterpanDisable
();
iKonkeAfSelfPrint
(
"#####Set Steering Counter
\r\n
"
);
g_u32NwkJoiningCountdownCounter
=
MS2COUNT
(
u32JoiningDuration
);
g_pJoinCompleteCallback
=
callback
;
...
...
@@ -502,6 +539,10 @@ void kNwkJoiningStart(uint32_t u32JoiningDuration, pJoinCompleteCallback callbac
//add by maozj 20191206
g_bNwkSteeringCompleteFlg
=
true
;
g_eLastNetworkStatus
=
ENS_UNKNOW
;
//add by Han. 20220210
g_bJoiningReportFlg
=
true
;
}
}
else
...
...
@@ -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
;
uint8_t
paload_len
=
0
;
TL_SETSTRUCTCONTENT
(
dstEpInfo
,
0
);
iKonkeAfSelfPrint
(
"General_Report111111
\r\n
"
);
dstEpInfo
.
dstAddrMode
=
APS_SHORT_DSTADDR_WITHEP
;
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
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_
#define _IKK_NETWORK_H_
#include "ikk-module-def.h"
#include "ikk-opt-tunnel.h"
#include "ikk-debug.h"
#include "tl_common.h"
#include "zb_api.h"
...
...
@@ -12,6 +13,9 @@
#define BINDING_CLUSTER_MAXN 8
#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
typedef
struct
tag_bind_objector_st
{
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-opt-tunnel.c
View file @
b1dbfcb7
This diff is collapsed.
Click to expand it.
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-opt-tunnel.h
View file @
b1dbfcb7
...
...
@@ -71,8 +71,10 @@ void Set2NwkJoiningCountdownCounter(u32 time_ms);
* */
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
);
...
...
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-internal.h"
#include "ikk-ota.h"
...
...
@@ -21,11 +22,6 @@ pOTACallback g_pOTACallback = NULL;
static void kOTAMoudleOptCallback(OTAStatusEnum status);
//__no_init OTAGpioStatusST g_stOTAGpioStatus @ 0x2000FFF0;
static
OTAGpioStatusST
g_stOTAGpioStatus
;
OTAStatusEnum kGetOTAStatus(void)
{
return g_eOTAStatus;
...
...
@@ -76,7 +72,6 @@ static void kOTAMoudleOptCallback(OTAStatusEnum status)
break;
case OTA_DOWNLOAD_DONE:
{
g_eOTAStatus = OTA_DOWNLOAD_DONE;
break;
}
...
...
@@ -99,3 +94,4 @@ static void kOTAMoudleOptCallback(OTAStatusEnum status)
break;
}
}
*/
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.h
View file @
b1dbfcb7
/*
#ifndef __IKONKE_MODULE_OTA_H_______________________
#define __IKONKE_MODULE_OTA_H_______________________
#include "tl_common.h"
...
...
@@ -9,7 +10,6 @@
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字节对齐
typedef struct {
...
...
@@ -40,3 +40,4 @@ void kOTAMoudleCallback(OTAStatusEnum status);
#endif
*/
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-token.c
View file @
b1dbfcb7
...
...
@@ -111,12 +111,13 @@ bool kGetIndicatorNotDisturbModeFlg(void)
st
=
nv_flashReadNew
(
1
,
NV_MODULE_APP
,
NV_NO_DISTURB_MODE
,
sizeof
(
temp
),
(
u8
*
)
&
temp
);
if
(
st
!=
NV_SUCC
){
temp
=
0
;
iKonkeAfSelfPrint
(
"kGetIndicatorNotDisturbModeFlg failed!!
\r\n
"
);
//
iKonkeAfSelfPrint("kGetIndicatorNotDisturbModeFlg failed!!\r\n");
}
iKonkeAfSelfPrint
(
"Read st =%d,data=%d
\r\n
"
,
st
,
temp
);
return
(
temp
==
1
)
;
//iKonkeAfSelfPrint("Read st =%d,data=%d\r\n",st,temp);
return
(
temp
==
1
)
;
}
nv_sts_t
kSetIndicatorNotDisturbModeFlg
(
uint8_t
value
)
{
nv_sts_t
st
=
NV_SUCC
;
...
...
@@ -132,6 +133,7 @@ nv_sts_t kSetIndicatorNotDisturbModeFlg(uint8_t value)
{
iKonkeAfSelfPrint
(
"kSetIndicatorNotDisturbModeFlg failed!!
\r\n
"
);
}
return
st
;
}
...
...
@@ -144,9 +146,10 @@ bool kGetInterpanEnableFlg(void)
temp
=
1
;
iKonkeAfSelfPrint
(
"kGetInterpanEnableFlg failed!!
\r\n
"
);
}
return
(
temp
==
1
)
;
return
(
temp
==
1
)
;
}
nv_sts_t
kSetInterpanEnableFlg
(
uint8_t
value
)
{
nv_sts_t
st
=
NV_SUCC
;
...
...
@@ -156,6 +159,35 @@ nv_sts_t kSetInterpanEnableFlg(uint8_t value)
{
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
;
}
...
...
@@ -288,7 +320,11 @@ uint8_t General_Custom_Token_Save(uint8_t item,uint8_t *buff,uint8_t len)
//same data ,not need rewrite!
return
0
;
}
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
;
}
else
{
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)
//same data ,not need rewrite!
return
0
;
}
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
;
}
else
{
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)
//same data ,not need rewrite!
return
0
;
}
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
;
}
else
{
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);
nv_sts_t
kSetInterpanEnableFlg
(
uint8_t
value
);
bool
kGetInterpanEnableFlg
(
void
);
uint16_t
kNwkgetNodeIdFromFlash
(
void
);
nv_sts_t
kNwksaveNodeIdToFlash
(
uint16_t
node_id
);
#if 1
void
falsh_test
(
uint8_t
count
);
#endif
...
...
tl_zigbee_sdk/build/tlsr_tc32/.cproject
View file @
b1dbfcb7
This diff is collapsed.
Click to expand it.
tl_zigbee_sdk/build/tlsr_tc32/.project
View file @
b1dbfcb7
...
...
@@ -216,5 +216,15 @@
<type>
1
</type>
<locationURI>
PARENT-2-PROJECT_LOC/platform/services/b85m/irq_handler.c
</locationURI>
</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>
</projectDescription>
tl_zigbee_sdk/proj/drivers/drv_nv.h
View file @
b1dbfcb7
...
...
@@ -360,6 +360,7 @@ typedef enum{
NV_NO_DISTURB_MODE
,
//lmm add
NV_AGING_TEST_TIME
,
//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_t
;
...
...
tl_zigbee_sdk/proj/os/ev_buffer.c
View file @
b1dbfcb7
...
...
@@ -228,6 +228,7 @@ buf_sts_t ev_buf_free(u8 *pBuf)
#endif
ZB_EXCEPTION_POST
(
SYS_EXCEPTTION_EV_BUFFER_EXCEPTION_FREE_OVERFLON
);
}
ev_bufItem_t
*
pDelBuf
=
ev_buf_getHead
(
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
));
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
pDelBuf
->
line
=
line
;
...
...
tl_zigbee_sdk/zigbee/zcl/zcl.c
View file @
b1dbfcb7
...
...
@@ -47,8 +47,7 @@
* INCLUDES
*/
#include "zcl_include.h"
#include "../common/00ikonke_app/general/ikk-cluster.h"
/**********************************************************************
* LOCAL CONSTANTS
*/
...
...
@@ -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
,
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
);
if
(
!
asdu
){
return
ZCL_STA_INSUFFICIENT_SPACE
;
...
...
@@ -1063,8 +1063,8 @@ _CODE_ZCL_ status_t zcl_readRspHandler(zclIncoming_t *pCmd)
_CODE_ZCL_
zclReadCmd_t
*
zcl_parseInReadCmd
(
zclIncoming_t
*
pCmd
)
{
u8
*
pBuf
=
pCmd
->
pData
;
zclReadCmd_t
*
p
=
(
zclReadCmd_t
*
)
ev_buf_allocate
(
sizeof
(
zclReadCmd_t
)
+
pCmd
->
dataLen
);
if
(
p
!=
NULL
){
p
->
numAttr
=
pCmd
->
dataLen
/
2
;
//attr ID
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
*
pBuf
++
=
dataType
;
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
);
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
);
...
...
tl_zigbee_sdk/zigbee/zcl/zcl.h
View file @
b1dbfcb7
...
...
@@ -562,7 +562,7 @@ typedef struct {
* @brief Definition for ZCL layer sequence number.
*/
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
;
...
...
tl_zigbee_sdk/zigbee/zcl/zcl_reporting.c
View file @
b1dbfcb7
...
...
@@ -465,6 +465,10 @@ _CODE_ZCL_ void reportNoMinLimit(void)
||
((
zcl_analogDataType
(
pAttrEntry
->
type
)
&&
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
extern
bool
kZclClusterReportChangeCallback
(
uint8_t
endpoint
,
uint16_t
clusterId
,
uint16_t
attributeId
);
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