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
e31877dc
Commit
e31877dc
authored
Jan 11, 2022
by
limm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
V1.1
parent
4f207db8
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
716 additions
and
516 deletions
+716
-516
tl_zigbee_sdk/apps/3LightPanelDemo/app_cfg.h
tl_zigbee_sdk/apps/3LightPanelDemo/app_cfg.h
+1
-1
tl_zigbee_sdk/apps/3LightPanelDemo/user.c
tl_zigbee_sdk/apps/3LightPanelDemo/user.c
+309
-72
tl_zigbee_sdk/apps/common/00ikonke_app/driver/ikk-led.c
tl_zigbee_sdk/apps/common/00ikonke_app/driver/ikk-led.c
+5
-1
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-cluster.c
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-cluster.c
+0
-5
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-cluster.h
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-cluster.h
+0
-1
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-command.c
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-command.c
+6
-63
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-factory-test.c
...e_sdk/apps/common/00ikonke_app/general/ikk-factory-test.c
+299
-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
-6
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-interpan.c
...igbee_sdk/apps/common/00ikonke_app/general/ikk-interpan.c
+10
-26
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-interpan.h
...igbee_sdk/apps/common/00ikonke_app/general/ikk-interpan.h
+2
-1
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
+3
-2
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-opt-tunnel.c
...bee_sdk/apps/common/00ikonke_app/general/ikk-opt-tunnel.c
+28
-50
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.c
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.c
+0
-101
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.h
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.h
+0
-42
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-token.c
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-token.c
+15
-3
tl_zigbee_sdk/build/tlsr_tc32/.cproject
tl_zigbee_sdk/build/tlsr_tc32/.cproject
+18
-82
No files found.
tl_zigbee_sdk/apps/3LightPanelDemo/app_cfg.h
View file @
e31877dc
...
@@ -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/user.c
View file @
e31877dc
...
@@ -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-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-pwm.h"
#include "ikk-module-def.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
...
@@ -138,6 +160,7 @@ AttributeChangeConfSt attribte_change_list[] = {
...
@@ -138,6 +160,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
;
...
@@ -162,7 +185,7 @@ void kUserFactorTestPollCallback(FactoryTestStatusEnum status);
...
@@ -162,7 +185,7 @@ 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
);
...
@@ -184,17 +207,13 @@ AttributeChangeConfSt g_ClusterAttributeConfList[] = {
...
@@ -184,17 +207,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 +234,7 @@ void App_Init(void)
...
@@ -215,7 +234,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
};
...
@@ -228,7 +247,7 @@ void App_Init(void)
...
@@ -228,7 +247,7 @@ void App_Init(void)
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
);
...
@@ -254,8 +273,22 @@ void Test(void )
...
@@ -254,8 +273,22 @@ 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
)
{
{
...
@@ -328,7 +361,7 @@ void kUserNetworkStatusNotify(NwkStatusEnum nwkst )
...
@@ -328,7 +361,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
);
...
@@ -387,8 +420,8 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -387,8 +420,8 @@ 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
());
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,6 +434,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -401,6 +434,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
{
{
case
EBA_CLICK
:
case
EBA_CLICK
:
{
{
iKonkeAfSelfPrint
(
"INTO KEY_SYS_ID EBA_CLICK kNwkGetCurrentStatus = (%d)
\r\n
"
,
kNwkGetCurrentStatus
());
Key_Press_Test_Flag
[
0
]
=
1
;
Key_Press_Test_Flag
[
0
]
=
1
;
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
)
{
// report connected!
if
(
kNwkGetCurrentStatus
()
==
ENS_ONLINE
)
{
// report connected!
...
@@ -411,6 +445,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -411,6 +445,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
else
if
(
kNwkGetCurrentStatus
()
==
ENS_LEAVED
)
else
if
(
kNwkGetCurrentStatus
()
==
ENS_LEAVED
)
{
{
kNwkFactoryReset
(
false
);
kNwkFactoryReset
(
false
);
iKonkeAfSelfPrint
(
"Start Joining...........
\r\n
"
);
kNwkJoiningStart
(
NWK_STEERING_TIMEOUT_MS
,
JoinCompleteCallback
);
//开启组网
kNwkJoiningStart
(
NWK_STEERING_TIMEOUT_MS
,
JoinCompleteCallback
);
//开启组网
}
}
}
}
...
@@ -445,6 +480,15 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -445,6 +480,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 +497,7 @@ void kUserButtonAcitonCallback(unsigned char button_id, BtnActionEnum action )
...
@@ -453,9 +497,7 @@ 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
){
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
){
...
@@ -535,8 +577,8 @@ void kUserRelayLedCallback(RelayStatusSt status)
...
@@ -535,8 +577,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 +599,8 @@ void kUserRelayLedCallback(RelayStatusSt status)
...
@@ -557,8 +599,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 +621,8 @@ void kUserRelayLedCallback(RelayStatusSt status)
...
@@ -579,8 +621,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 +643,8 @@ void kUserRelayLedCallback(RelayStatusSt status)
...
@@ -601,8 +643,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
);
...
@@ -661,6 +703,7 @@ static void kSetLedStatus(LED_ID_ENUM id)
...
@@ -661,6 +703,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
){
...
@@ -818,6 +861,7 @@ bool kZclClusterReportChangeCallback(uint8_t endpoint, uint16_t clusterId, uint1
...
@@ -818,6 +861,7 @@ bool kZclClusterReportChangeCallback(uint8_t endpoint, uint16_t clusterId, uint1
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 +875,223 @@ kk_err_t kUserOODMessageIncoming(uint8_t channel, uint8_t opcode, uint8_t args_i
...
@@ -831,59 +875,223 @@ 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
);
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
);
//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
);
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
);
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
&&
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,6 +1103,23 @@ kk_err_t kUserOODMessageIncoming(uint8_t channel, uint8_t opcode, uint8_t args_i
...
@@ -895,6 +1103,23 @@ 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
)
{
{
...
@@ -991,7 +1216,7 @@ s32 kkSystemSetUpEventHandler(void *arg )
...
@@ -991,7 +1216,7 @@ 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
]);
...
@@ -1008,6 +1233,14 @@ s32 kkSystemSetUpEventHandler(void *arg )
...
@@ -1008,6 +1233,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
;
}
}
...
@@ -1058,18 +1291,18 @@ void kUserFactorTestPollCallback(FactoryTestStatusEnum status)
...
@@ -1058,18 +1291,18 @@ 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:
...
@@ -1149,8 +1382,8 @@ s32 kRadarCheckEventHandler(void *arg)
...
@@ -1149,8 +1382,8 @@ 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,8 +1407,8 @@ s32 kRadarLedEventHandler(void *arg)
...
@@ -1174,8 +1407,8 @@ 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
;
}
}
...
@@ -1324,6 +1557,8 @@ void UartMsgProcessHandle(UMsgNodeSt *pMsgNode )
...
@@ -1324,6 +1557,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
;
...
@@ -1422,6 +1657,8 @@ void kUserInterPanMsgInComingPaser(UMsgNodeSt *pMsgNode)
...
@@ -1422,6 +1657,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/common/00ikonke_app/driver/ikk-led.c
View file @
e31877dc
...
@@ -305,7 +305,11 @@ void kLedOptTrigger(uint8_t id, uint32_t duration_on_ms, uint32_t duration_off_m
...
@@ -305,7 +305,11 @@ void kLedOptTrigger(uint8_t id, uint32_t duration_on_ms, uint32_t duration_off_m
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
);
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-cluster.c
View file @
e31877dc
...
@@ -202,11 +202,6 @@ void Update_Local_Attribute_Info(void)
...
@@ -202,11 +202,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
;
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-cluster.h
View file @
e31877dc
...
@@ -19,7 +19,6 @@ typedef enum{ EOOC_OFF = 0, EOOC_ON, EOOC_TOGGLE, EOOC_UNKNOW }OnOffCtrlEnum;
...
@@ -19,7 +19,6 @@ 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
;
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-command.c
View file @
e31877dc
...
@@ -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
;
...
@@ -424,61 +422,6 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
...
@@ -424,61 +422,6 @@ kk_err_t kCmdGeneralMsgPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataField_st
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 @
e31877dc
...
@@ -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-factory-test.c
View file @
e31877dc
...
@@ -3,16 +3,35 @@
...
@@ -3,16 +3,35 @@
#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)
#define NETWORK_STEERING_WHITELIST_START_PANID 0xE000
#define NETWORK_STEERING_WHITELIST_NUM 32
#define PANID_ENABLE 0
#define PANID_DISABLE 1
u8
g_u8NetworkSteeringWhitelist
[
NETWORK_STEERING_WHITELIST_NUM
]
=
{
PANID_ENABLE
};
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 +47,20 @@ typedef struct{
...
@@ -28,17 +47,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 +124,10 @@ uint8_t kGetFactoryTestValueStatus(void)
...
@@ -102,6 +124,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 +135,17 @@ uint8_t kGetFactoryTestValueStatus(void)
...
@@ -109,12 +135,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,8 +188,9 @@ void kFactoryTestBtnActionCallback(unsigned char button_id, BtnActionEnum actio
...
@@ -157,8 +188,9 @@ 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
){
iKonkeAfSelfPrint
(
"######daiyanzhengqiangtui111 FactoryTest Released
\r\n
"
);
g_eFactoryTestStatus
=
FTS_AGING_FORCE_REBOOT
;
if
((
g_eFactoryTestStatus
==
FTS_WAITING_RELEASED
||
g_eFactoryTestStatus
==
FTS_FORCE_EXIT
)
&&
g_stFactoryTestControllerList
[
g_u8LongPressedKeyIndex
].
eCurrentBtnAction
==
EBA_RELEASED
){
g_eFactoryTestStatus
=
FTS_FORCE_REBOOT
;
g_u32Count
=
FACTORY_TEST_POLL_TIMES
;
//快点执行自定义函数
g_u32Count
=
FACTORY_TEST_POLL_TIMES
;
//快点执行自定义函数
iKonkeAfSelfPrint
(
"######33333333333333333 FactoryTest Released
\r\n
"
);
iKonkeAfSelfPrint
(
"######33333333333333333 FactoryTest Released
\r\n
"
);
}
}
...
@@ -166,6 +198,25 @@ void kFactoryTestBtnActionCallback(unsigned char button_id, BtnActionEnum actio
...
@@ -166,6 +198,25 @@ void kFactoryTestBtnActionCallback(unsigned char button_id, BtnActionEnum actio
}
}
}
}
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 +290,23 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
...
@@ -239,13 +290,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
;
//wait to do
status_t
status
;
send_buf
.
u8ARG
[
1
]
=
0x20
;
zclAttrInfo_t
*
hwattrInfo
=
ReadServerAttribute
(
1
,
ZCL_CLUSTER_GEN_BASIC
,
ZCL_ATTRID_BASIC_HW_VER
,
&
status
);
send_buf
.
u8ARG
[
2
]
=
0x20
;
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
]);
send_buf
.
u8ARG
[
1
]
=
hardversion
;
send_buf
.
u8ARG
[
2
]
=
softversion
;
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 +333,27 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
...
@@ -272,26 +333,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 +369,7 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
...
@@ -307,7 +369,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 +404,116 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
...
@@ -342,25 +404,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
.
u8ArgLen
=
9
;
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
[
0
]
=
ERR_OK
;
memcpy
(
&
send_buf
.
u8ARG
[
1
],
&
data
.
u8ARG
[
1
],
8
);
send_buf
.
u8ARG
[
1
]
=
factoryTest
;
send_buf
.
u8ArgLen
=
10
;
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 +534,11 @@ kk_err_t kkFactoryMsgInComingPaser(UMsgNodeSt *pMsgNode, ComPortEm port, DataFie
...
@@ -381,9 +534,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 +552,73 @@ void kFactoryTestInit(pFactoryTestPollCallback callback, FactoryTestConfSt conf_
...
@@ -397,25 +552,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
){
TL_ZB_TIMER_CANCEL
(
&
kFactoryTestEvt
);
}
kFactoryTestEvt
=
TL_ZB_TIMER_SCHEDULE
(
kFactoryTestEventHandler
,
NULL
,
1000
);
}
#endif
#if Z30_DEVICE_FULL_DEVICE_ENBALE
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
){
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
;
iKonkeAfSelfPrint
(
"
\r\n
######kFactoryTestInit status1111111111111111111111111(%d)
\r\n
"
,
g_eFactoryTestStatus
);
g_u32AgingTotalTimeMS
=
0
;
//led indicate
// g_u8AgingForceExitBtnId = btn_id;
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 +630,7 @@ s32 kFactoryTestEventHandler(void *arg)
...
@@ -427,7 +630,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
):
...
@@ -460,16 +663,20 @@ s32 kFactoryTestEventHandler(void *arg)
...
@@ -460,16 +663,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 +715,8 @@ s32 kFactoryTestEventHandler(void *arg)
...
@@ -508,8 +715,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 +739,7 @@ s32 kFactoryTestEventHandler(void *arg)
...
@@ -532,7 +739,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 +777,38 @@ s32 kFactoryTestEventHandler(void *arg)
...
@@ -570,5 +777,38 @@ 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
;
}
}
bool
kCmdNetworkSteeringinfoCheck
(
uint8_t
channel
,
uint16_t
panid
)
{
bool
status
=
false
;
if
(
0xFFFF
!=
g_u16NetworkSteeringPanId
){
if
((
channel
==
g_u8NetworkSteeringChannel
)
&&
(
panid
==
g_u16NetworkSteeringPanId
)){
status
=
true
;
}
}
else
if
((
panid
>=
NETWORK_STEERING_WHITELIST_START_PANID
)
&&
(
panid
<=
(
NETWORK_STEERING_WHITELIST_START_PANID
+
NETWORK_STEERING_WHITELIST_NUM
))){
if
((
channel
==
g_u8NetworkSteeringChannel
)
&&
(
PANID_ENABLE
==
g_u8NetworkSteeringWhitelist
[
panid
-
NETWORK_STEERING_WHITELIST_START_PANID
])){
status
=
true
;
}
}
iKonkeAfSelfPrint
(
"kCmdNetworkSteeringinfoCheck[%d], channel[%d], PanID[0X%04X]
\r\n
"
,
status
,
channel
,
panid
);
return
status
;
}
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-factory-test.h
View file @
e31877dc
...
@@ -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,14 @@ void kSetAgingMaxTime(uint16_t value);
...
@@ -74,7 +78,14 @@ 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
);
bool
kCmdNetworkSteeringinfoCheck
(
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 @
e31877dc
...
@@ -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
...
@@ -104,8 +102,7 @@ void kInterPanEnable(uint8_t channel)
...
@@ -104,8 +102,7 @@ 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
())
{
af_endpointRegister
(
INTERPAN_ENDPOINT
,
(
af_simple_descriptor_t
*
)
&
kInterpanSimpleDesc
,
afInterpan_rx_handler
,
afInterpan_dataSendConfirm
);
af_endpointRegister
(
INTERPAN_ENDPOINT
,
(
af_simple_descriptor_t
*
)
&
kInterpanSimpleDesc
,
afInterpan_rx_handler
,
afInterpan_dataSendConfirm
);
}
}
else
{
else
{
...
@@ -128,19 +125,17 @@ void kInterpanDisable(void)
...
@@ -128,19 +125,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
);
...
@@ -211,17 +206,6 @@ static s32 kInterPanDelaySendTestDataEventHandler(void )
...
@@ -211,17 +206,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 @
e31877dc
...
@@ -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
...
@@ -38,5 +37,7 @@ kk_err_t kInterPanSend(UMsgNodeSt *pMsgNode);
...
@@ -38,5 +37,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 @
e31877dc
...
@@ -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 @
e31877dc
...
@@ -400,7 +400,8 @@ void kNwkFactoryReset(bool is_nwk_indicator)
...
@@ -400,7 +400,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
())
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 +445,7 @@ void NetworkLeaveHandler(nlme_leave_cnf_t *pLeaveCnf)
...
@@ -444,7 +445,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
;
}
}
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-opt-tunnel.c
View file @
e31877dc
...
@@ -6,6 +6,10 @@
...
@@ -6,6 +6,10 @@
#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"
// 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 +31,7 @@ pFUNC_OPTDATA_MESSAGE_CALLBACK g_pOptDataIncomingMessageCallback = NULL;
...
@@ -27,55 +31,7 @@ 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);
//
//
//
//
//_CODE_ZCL_ status_t zcl_private_fcc0_register(u8 endpoint, u16 manuCode, u8 attrNum, const zclAttrInfo_t attrTbl[], cluster_forAppCb_t cb)
//{
// return zcl_registerCluster(endpoint, ZCL_CLUSTER_PRIVATE_FCC0, manuCode, attrNum, attrTbl, zcl_Private_cmdHandler, cb);
//}
//
//_CODE_ZCL_ static status_t zcl_private_clientCmdHandler(zclIncoming_t *pInMsg)
//{
// u8 status = ZCL_STA_SUCCESS;
// apsdeDataInd_t *pApsdeInd = (apsdeDataInd_t*)pInMsg->msg;
// iKonkeAfSelfPrint("#############zcl_private_clientCmdHandler ,command id =%x!!!!!!!\r\n",pInMsg->hdr.cmd);
//// switch(pInMsg->hdr.cmd)
//// {
//// 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
,
...
@@ -271,7 +227,29 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method,zclIncoming_t *pCmd)
...
@@ -271,7 +227,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
;
...
...
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.c
deleted
100644 → 0
View file @
4f207db8
//#include "app/framework/plugin/network-steering/network-steering.h"
//#include "app/framework/plugin/network-steering/network-steering-internal.h"
#include "ikk-ota.h"
#include "ikk-debug.h"
#include "../driver/ikk-led.h"
#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)
static
OTAStatusEnum
g_eOTAStatus
=
OTA_NORMAL
;
static
uint8_t
g_u8OtaLedId
=
LED_UNKNOW_ID
;
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
;
}
void
kSetOTAStatus
(
OTAStatusEnum
status
)
{
g_eOTAStatus
=
status
;
}
void
kOTAMoudleInit
(
pOTACallback
callback
,
uint8_t
led_id
)
{
g_pOTACallback
=
callback
;
g_u8OtaLedId
=
led_id
;
}
void
kOTAMoudleCallback
(
OTAStatusEnum
status
)
{
//校验成功或失败保存gpio状态,待bootloader中恢复
if
(
status
==
OTA_VERITY_SUCCEED
||
status
==
OTA_FAILED
){
iKonkeAfSelfPrint
(
"OTA GPIO KEEP status(%d)
\r\n
"
,
g_eOTAStatus
);
}
if
(
g_pOTACallback
){
g_pOTACallback
(
status
);
}
else
{
if
(
g_u8OtaLedId
!=
LED_UNKNOW_ID
){
kOTAMoudleOptCallback
(
status
);
}
}
}
static
void
kOTAMoudleOptCallback
(
OTAStatusEnum
status
)
{
iKonkeAfSelfPrint
(
"##############kOTAMoudleUserCallback status(%d)##################
\r\n
"
,
status
);
static
bool
flg
=
false
;
//防止网关断电后,ota失败后会间隔快闪
switch
(
status
)
{
case
OTA_NORMAL
:
break
;
case
OTA_START
:
kLedOptTrigger
(
g_u8OtaLedId
,
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
);
g_eOTAStatus
=
OTA_START
;
flg
=
false
;
break
;
case
OTA_DOWNLOAD_DONE
:
{
g_eOTAStatus
=
OTA_DOWNLOAD_DONE
;
break
;
}
case
OTA_VERITY_SUCCEED
:
//校验成功,记录继电器状态
//常亮5S
kLedOptTrigger
(
g_u8OtaLedId
,
25
*
LED_FAST_BLINK_ON_TIME_MS
,
LED_FAST_BLINK_ON_TIME_MS
,
1
,
LED_ON
,
LED_ON
);
g_eOTAStatus
=
OTA_NORMAL
;
break
;
case
OTA_FAILED
:
if
(
flg
!=
true
){
kLedOptTrigger
(
g_u8OtaLedId
,
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
);
g_eOTAStatus
=
OTA_NORMAL
;
}
flg
=
true
;
break
;
default:
iKonkeAfSelfPrint
(
"##############Err: OTA status is not exist
\r\n
"
);
break
;
}
}
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-ota.h
deleted
100644 → 0
View file @
4f207db8
#ifndef __IKONKE_MODULE_OTA_H_______________________
#define __IKONKE_MODULE_OTA_H_______________________
#include "tl_common.h"
#define OTA_UPGRADE__CONTINUE_MAX_TIME_MS (16*60*1000)
#define OTA_GPIO_RESTORE_MAXN 8
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
{
uint32_t
pin
;
bool
bStatus
;
// on/off
}
OTAGpioListSt
;
#pragma pack() //取消自定义字节对齐方式
#pragma pack(1) //按1字节对齐
typedef
struct
{
bool
bIsValid
;
uint8_t
gpioNum
;
OTAGpioListSt
gpio
[
OTA_GPIO_RESTORE_MAXN
];
}
OTAGpioStatusST
;
#pragma pack() //取消自定义字节对齐方式
//OTA操作函数,一般操作用来操作led
typedef
void
(
*
pOTACallback
)(
OTAStatusEnum
status
);
//获取当前产测状态
OTAStatusEnum
kGetOTAStatus
(
void
);
void
kSetOTAStatus
(
OTAStatusEnum
status
);
void
kOTAMoudleInit
(
pOTACallback
callback
,
uint8_t
led_id
);
void
kOTAMoudleCallback
(
OTAStatusEnum
status
);
#endif
tl_zigbee_sdk/apps/common/00ikonke_app/general/ikk-token.c
View file @
e31877dc
...
@@ -288,7 +288,11 @@ uint8_t General_Custom_Token_Save(uint8_t item,uint8_t *buff,uint8_t len)
...
@@ -288,7 +288,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 +313,11 @@ uint8_t General_Custom_Token_Save(uint8_t item,uint8_t *buff,uint8_t len)
...
@@ -309,7 +313,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 +338,11 @@ uint8_t General_Custom_Token_Save(uint8_t item,uint8_t *buff,uint8_t len)
...
@@ -330,7 +338,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/build/tlsr_tc32/.cproject
View file @
e31877dc
...
@@ -87,7 +87,7 @@
...
@@ -87,7 +87,7 @@
</toolChain>
</toolChain>
</folderInfo>
</folderInfo>
<sourceEntries>
<sourceEntries>
<entry excluding="apps/common|apps/sampleLight|apps/sampleContactSensor|platform/chip_826x|apps/3LightPanelDemo|apps/sampleSwitch|apps/bootLoader|platform/chip_8278" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
<entry excluding="apps/common
/00ikonke_app
|apps/sampleLight|apps/sampleContactSensor|platform/chip_826x|apps/3LightPanelDemo|apps/sampleSwitch|apps/bootLoader|platform/chip_8278" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</sourceEntries>
</configuration>
</configuration>
</storageModule>
</storageModule>
...
@@ -5162,7 +5162,7 @@
...
@@ -5162,7 +5162,7 @@
</toolChain>
</toolChain>
</folderInfo>
</folderInfo>
<sourceEntries>
<sourceEntries>
<entry excluding="apps/common|apps/sampleLight|apps/3LightPanelDemo|apps/sampleContactSensor|apps/sampleGW|platform/chip_826x|apps/bootLoader|platform/chip_8278" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
<entry excluding="apps/common
/00ikonke_app
|apps/sampleLight|apps/3LightPanelDemo|apps/sampleContactSensor|apps/sampleGW|platform/chip_826x|apps/bootLoader|platform/chip_8278" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</sourceEntries>
</configuration>
</configuration>
</storageModule>
</storageModule>
...
@@ -10295,6 +10295,7 @@
...
@@ -10295,6 +10295,7 @@
<sourceEntries>
<sourceEntries>
<entry excluding="apps|apps/sampleContactSensor|apps/sampleGW|platform/chip_826x|apps/3LightPanelDemo/|apps/sampleSwitch|apps/bootLoader|platform/chip_8278" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
<entry excluding="apps|apps/sampleContactSensor|apps/sampleGW|platform/chip_826x|apps/3LightPanelDemo/|apps/sampleSwitch|apps/bootLoader|platform/chip_8278" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="apps/sampleLight"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="apps/sampleLight"/>
<entry excluding="00ikonke_app" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="apps/common"/>
</sourceEntries>
</sourceEntries>
</configuration>
</configuration>
</storageModule>
</storageModule>
...
@@ -20435,7 +20436,7 @@
...
@@ -20435,7 +20436,7 @@
</toolChain>
</toolChain>
</folderInfo>
</folderInfo>
<sourceEntries>
<sourceEntries>
<entry excluding="apps/common|apps/sampleLight|apps/3LightPanelDemo|zigbee|apps/sampleContactSensor|zbhci|apps/common/main.c|apps/sampleGW|platform/chip_826x|apps/common/factory_reset.c|apps/sampleSwitch|platform/chip_8278|apps/common/module_test.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
<entry excluding="apps/common
/00ikonke_app
|apps/sampleLight|apps/3LightPanelDemo|zigbee|apps/sampleContactSensor|zbhci|apps/common/main.c|apps/sampleGW|platform/chip_826x|apps/common/factory_reset.c|apps/sampleSwitch|platform/chip_8278|apps/common/module_test.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</sourceEntries>
</configuration>
</configuration>
</storageModule>
</storageModule>
...
@@ -25544,81 +25545,16 @@
...
@@ -25544,81 +25545,16 @@
<tool id="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1858568854" name="Print Size" superClass="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1213737038"/>
<tool id="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1858568854" name="Print Size" superClass="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1213737038"/>
</toolChain>
</toolChain>
</folderInfo>
</folderInfo>
<folderInfo id="com.telink.tc32eclipse.configuration.app.debug.1775306817.1609575092.51908207.315250623.639924188.972222429" name="/" resourcePath="apps">
<toolChain id="com.telink.tc32eclipse.toolchain.TC32Win.app.debug.1440142784" name="TC32-GCC Toolchain" superClass="com.telink.tc32eclipse.toolchain.TC32Win.app.debug" unusedChildren="">
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.objcopy.flash.app.debug.689852528.380148680" name="Generate binary file for Flash memory" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.objcopy.flash.app.debug.689852528"/>
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.objdump.app.debug.95576922.1680786533" name="Generate Extended Listing (Source + generated Assembler)" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.objdump.app.debug.95576922"/>
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.size.app.debug.389953994.747141055" name="Print Size" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.size.app.debug.389953994"/>
<targetPlatform id="com.telink.tc32eclipse.targetplatform.TC32Win.app.debug" name="TC32 Cross-Target" superClass="com.telink.tc32eclipse.targetplatform.TC32Win.app.debug"/>
<tool id="com.telink.tc32eclipse.tool.assembler.TC32Win.app.debug.3052926" name="TC32 CC/Assembler" superClass="com.telink.tc32eclipse.tool.assembler.TC32Win.app.debug.1623452904">
<inputType id="com.telink.tc32eclipse.tool.assembler.input.1723657684" superClass="com.telink.tc32eclipse.tool.assembler.input"/>
</tool>
<tool id="com.telink.tc32eclipse.tool.compiler.TC32Win.app.debug.429172573" name="TC32 Compiler" superClass="com.telink.tc32eclipse.tool.compiler.TC32Win.app.debug.1699036449">
<option id="com.telink.tc32eclipse.compiler.option.incpath.2057043023" name="Include Paths (-I)" superClass="com.telink.tc32eclipse.compiler.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="../../../apps/common"/>
<listOptionValue builtIn="false" value="../../../platform"/>
<listOptionValue builtIn="false" value="../../../proj/common"/>
<listOptionValue builtIn="false" value="../../../proj"/>
<listOptionValue builtIn="false" value="../../../zigbee/common/includes"/>
<listOptionValue builtIn="false" value="../../../zigbee/zbapi"/>
<listOptionValue builtIn="false" value="../../../zigbee/bdb/includes"/>
<listOptionValue builtIn="false" value="../../../zigbee/gp"/>
<listOptionValue builtIn="false" value="../../../zigbee/zcl"/>
<listOptionValue builtIn="false" value="../../../zigbee/ota"/>
<listOptionValue builtIn="false" value="../../../zbhci"/>
<listOptionValue builtIn="false" value="../../../apps3LightPanelDemo"/>
</option>
<inputType id="com.telink.tc32eclipse.compiler.TC32Win.input.1884210857" name="C Source Files" superClass="com.telink.tc32eclipse.compiler.TC32Win.input"/>
</tool>
<tool id="com.telink.tc32eclipse.tool.linker.TC32Win.app.debug.1312256434" name="TC32 C Linker" superClass="com.telink.tc32eclipse.tool.linker.TC32Win.app.debug.374658101"/>
<tool id="com.telink.tc32eclipse.tool.archiver.TC32Win.base.105924924" name="TC32 Archiver" superClass="com.telink.tc32eclipse.tool.archiver.TC32Win.base.390926111"/>
<tool id="com.telink.tc32eclipse.tool.objdump.TC32Win.app.debug.1069527759" name="TC32 Create Extended Listing" superClass="com.telink.tc32eclipse.tool.objdump.TC32Win.app.debug.911217276"/>
<tool id="com.telink.tc32eclipse.tool.objcopy.flash.TC32Win.app.debug.519967884" name="TC32 Create Flash image" superClass="com.telink.tc32eclipse.tool.objcopy.flash.TC32Win.app.debug.1247140710"/>
<tool id="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1447950833" name="Print Size" superClass="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1213737038"/>
</toolChain>
</folderInfo>
<folderInfo id="com.telink.tc32eclipse.configuration.app.debug.1775306817.1609575092.51908207.315250623.639924188.616483876" name="/" resourcePath="apps/common">
<toolChain id="com.telink.tc32eclipse.toolchain.TC32Win.app.debug.613123056" name="TC32-GCC Toolchain" superClass="com.telink.tc32eclipse.toolchain.TC32Win.app.debug" unusedChildren="">
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.objcopy.flash.app.debug.689852528.380148680.1225216096" name="Generate binary file for Flash memory" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.objcopy.flash.app.debug.689852528.380148680"/>
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.objdump.app.debug.95576922.1680786533.1868876062" name="Generate Extended Listing (Source + generated Assembler)" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.objdump.app.debug.95576922.1680786533"/>
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.size.app.debug.389953994.747141055.457526171" name="Print Size" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.size.app.debug.389953994.747141055"/>
<tool id="com.telink.tc32eclipse.tool.assembler.TC32Win.app.debug.341293686" name="TC32 CC/Assembler" superClass="com.telink.tc32eclipse.tool.assembler.TC32Win.app.debug.3052926">
<inputType id="com.telink.tc32eclipse.tool.assembler.input.540379208" superClass="com.telink.tc32eclipse.tool.assembler.input"/>
</tool>
<tool id="com.telink.tc32eclipse.tool.compiler.TC32Win.app.debug.343483956" name="TC32 Compiler" superClass="com.telink.tc32eclipse.tool.compiler.TC32Win.app.debug.429172573">
<option id="com.telink.tc32eclipse.compiler.option.incpath.1484820834" superClass="com.telink.tc32eclipse.compiler.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="../../../apps/common"/>
<listOptionValue builtIn="false" value="../../../platform"/>
<listOptionValue builtIn="false" value="../../../proj/common"/>
<listOptionValue builtIn="false" value="../../../proj"/>
<listOptionValue builtIn="false" value="../../../zigbee/common/includes"/>
<listOptionValue builtIn="false" value="../../../zigbee/zbapi"/>
<listOptionValue builtIn="false" value="../../../zigbee/bdb/includes"/>
<listOptionValue builtIn="false" value="../../../zigbee/gp"/>
<listOptionValue builtIn="false" value="../../../zigbee/zcl"/>
<listOptionValue builtIn="false" value="../../../zigbee/ota"/>
<listOptionValue builtIn="false" value="../../../zbhci"/>
<listOptionValue builtIn="false" value="../../../apps/3LightPanelDemo"/>
</option>
<inputType id="com.telink.tc32eclipse.compiler.TC32Win.input.938244707" name="C Source Files" superClass="com.telink.tc32eclipse.compiler.TC32Win.input"/>
</tool>
<tool id="com.telink.tc32eclipse.tool.linker.TC32Win.app.debug.1425616030" name="TC32 C Linker" superClass="com.telink.tc32eclipse.tool.linker.TC32Win.app.debug.1312256434"/>
<tool id="com.telink.tc32eclipse.tool.archiver.TC32Win.base.83582154" name="TC32 Archiver" superClass="com.telink.tc32eclipse.tool.archiver.TC32Win.base.105924924"/>
<tool id="com.telink.tc32eclipse.tool.objdump.TC32Win.app.debug.1103277855" name="TC32 Create Extended Listing" superClass="com.telink.tc32eclipse.tool.objdump.TC32Win.app.debug.1069527759"/>
<tool id="com.telink.tc32eclipse.tool.objcopy.flash.TC32Win.app.debug.1272775821" name="TC32 Create Flash image" superClass="com.telink.tc32eclipse.tool.objcopy.flash.TC32Win.app.debug.519967884"/>
<tool id="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.668024269" name="Print Size" superClass="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1447950833"/>
</toolChain>
</folderInfo>
<folderInfo id="com.telink.tc32eclipse.configuration.app.debug.1775306817.1609575092.51908207.315250623.639924188.1821413199" name="/" resourcePath="apps/common/00ikonke_app">
<folderInfo id="com.telink.tc32eclipse.configuration.app.debug.1775306817.1609575092.51908207.315250623.639924188.1821413199" name="/" resourcePath="apps/common/00ikonke_app">
<toolChain id="com.telink.tc32eclipse.toolchain.TC32Win.app.debug.187646455" name="TC32-GCC Toolchain" superClass="com.telink.tc32eclipse.toolchain.TC32Win.app.debug" unusedChildren="">
<toolChain id="com.telink.tc32eclipse.toolchain.TC32Win.app.debug.187646455" name="TC32-GCC Toolchain" superClass="com.telink.tc32eclipse.toolchain.TC32Win.app.debug" unusedChildren="">
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.objcopy.flash.app.debug.689852528.380148680.928630173.1947215794" name="Generate binary file for Flash memory" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.objcopy.flash.app.debug.689852528.380148680.928630173"/>
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.objcopy.flash.app.debug.689852528.380148680.928630173.1947215794" name="Generate binary file for Flash memory" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.objcopy.flash.app.debug.689852528.380148680.928630173"/>
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.objdump.app.debug.95576922.1680786533.657496731.2048600887" name="Generate Extended Listing (Source + generated Assembler)" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.objdump.app.debug.95576922.1680786533.657496731"/>
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.objdump.app.debug.95576922.1680786533.657496731.2048600887" name="Generate Extended Listing (Source + generated Assembler)" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.objdump.app.debug.95576922.1680786533.657496731"/>
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.size.app.debug.389953994.747141055.718476718.725671209" name="Print Size" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.size.app.debug.389953994.747141055.718476718"/>
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.size.app.debug.389953994.747141055.718476718.725671209" name="Print Size" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.size.app.debug.389953994.747141055.718476718"/>
<targetPlatform id="com.telink.tc32eclipse.targetplatform.TC32Win.app.debug" name="TC32 Cross-Target" superClass="com.telink.tc32eclipse.targetplatform.TC32Win.app.debug"/>
<targetPlatform id="com.telink.tc32eclipse.targetplatform.TC32Win.app.debug" name="TC32 Cross-Target" superClass="com.telink.tc32eclipse.targetplatform.TC32Win.app.debug"/>
<tool id="com.telink.tc32eclipse.tool.assembler.TC32Win.app.debug.753340373" name="TC32 CC/Assembler" superClass="com.telink.tc32eclipse.tool.assembler.TC32Win.app.debug.
3052926
">
<tool id="com.telink.tc32eclipse.tool.assembler.TC32Win.app.debug.753340373" name="TC32 CC/Assembler" superClass="com.telink.tc32eclipse.tool.assembler.TC32Win.app.debug.
1623452904
">
<inputType id="com.telink.tc32eclipse.tool.assembler.input.564927692" superClass="com.telink.tc32eclipse.tool.assembler.input"/>
<inputType id="com.telink.tc32eclipse.tool.assembler.input.564927692" superClass="com.telink.tc32eclipse.tool.assembler.input"/>
</tool>
</tool>
<tool id="com.telink.tc32eclipse.tool.compiler.TC32Win.app.debug.718615725" name="TC32 Compiler" superClass="com.telink.tc32eclipse.tool.compiler.TC32Win.app.debug.
429172573
">
<tool id="com.telink.tc32eclipse.tool.compiler.TC32Win.app.debug.718615725" name="TC32 Compiler" superClass="com.telink.tc32eclipse.tool.compiler.TC32Win.app.debug.
1699036449
">
<option id="com.telink.tc32eclipse.compiler.option.incpath.1184969672" name="Include Paths (-I)" superClass="com.telink.tc32eclipse.compiler.option.incpath" valueType="includePath">
<option id="com.telink.tc32eclipse.compiler.option.incpath.1184969672" name="Include Paths (-I)" superClass="com.telink.tc32eclipse.compiler.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="../../../apps/common"/>
<listOptionValue builtIn="false" value="../../../apps/common"/>
<listOptionValue builtIn="false" value="../../../platform"/>
<listOptionValue builtIn="false" value="../../../platform"/>
...
@@ -25636,11 +25572,11 @@
...
@@ -25636,11 +25572,11 @@
</option>
</option>
<inputType id="com.telink.tc32eclipse.compiler.TC32Win.input.2049876111" name="C Source Files" superClass="com.telink.tc32eclipse.compiler.TC32Win.input"/>
<inputType id="com.telink.tc32eclipse.compiler.TC32Win.input.2049876111" name="C Source Files" superClass="com.telink.tc32eclipse.compiler.TC32Win.input"/>
</tool>
</tool>
<tool id="com.telink.tc32eclipse.tool.linker.TC32Win.app.debug.911635503" name="TC32 C Linker" superClass="com.telink.tc32eclipse.tool.linker.TC32Win.app.debug.
1312256434
"/>
<tool id="com.telink.tc32eclipse.tool.linker.TC32Win.app.debug.911635503" name="TC32 C Linker" superClass="com.telink.tc32eclipse.tool.linker.TC32Win.app.debug.
374658101
"/>
<tool id="com.telink.tc32eclipse.tool.archiver.TC32Win.base.1338933857" name="TC32 Archiver" superClass="com.telink.tc32eclipse.tool.archiver.TC32Win.base.
105924924
"/>
<tool id="com.telink.tc32eclipse.tool.archiver.TC32Win.base.1338933857" name="TC32 Archiver" superClass="com.telink.tc32eclipse.tool.archiver.TC32Win.base.
390926111
"/>
<tool id="com.telink.tc32eclipse.tool.objdump.TC32Win.app.debug.1672188041" name="TC32 Create Extended Listing" superClass="com.telink.tc32eclipse.tool.objdump.TC32Win.app.debug.
1069527759
"/>
<tool id="com.telink.tc32eclipse.tool.objdump.TC32Win.app.debug.1672188041" name="TC32 Create Extended Listing" superClass="com.telink.tc32eclipse.tool.objdump.TC32Win.app.debug.
911217276
"/>
<tool id="com.telink.tc32eclipse.tool.objcopy.flash.TC32Win.app.debug.2053522754" name="TC32 Create Flash image" superClass="com.telink.tc32eclipse.tool.objcopy.flash.TC32Win.app.debug.
519967884
"/>
<tool id="com.telink.tc32eclipse.tool.objcopy.flash.TC32Win.app.debug.2053522754" name="TC32 Create Flash image" superClass="com.telink.tc32eclipse.tool.objcopy.flash.TC32Win.app.debug.
1247140710
"/>
<tool id="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1691902702" name="Print Size" superClass="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1
447950833
"/>
<tool id="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1691902702" name="Print Size" superClass="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1
213737038
"/>
</toolChain>
</toolChain>
</folderInfo>
</folderInfo>
<folderInfo id="com.telink.tc32eclipse.configuration.app.debug.1775306817.1609575092.51908207.315250623.639924188.1919322824" name="/" resourcePath="apps/3LightPanelDemo">
<folderInfo id="com.telink.tc32eclipse.configuration.app.debug.1775306817.1609575092.51908207.315250623.639924188.1919322824" name="/" resourcePath="apps/3LightPanelDemo">
...
@@ -25693,10 +25629,10 @@
...
@@ -25693,10 +25629,10 @@
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.objdump.app.debug.95576922.1680786533.1682866220" name="Generate Extended Listing (Source + generated Assembler)" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.objdump.app.debug.95576922.1680786533"/>
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.objdump.app.debug.95576922.1680786533.1682866220" name="Generate Extended Listing (Source + generated Assembler)" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.objdump.app.debug.95576922.1680786533"/>
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.size.app.debug.389953994.747141055.1750090503" name="Print Size" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.size.app.debug.389953994.747141055"/>
<option id="com.telink.tc32eclipse.toolchain.options.toolchain.size.app.debug.389953994.747141055.1750090503" name="Print Size" superClass="com.telink.tc32eclipse.toolchain.options.toolchain.size.app.debug.389953994.747141055"/>
<targetPlatform id="com.telink.tc32eclipse.targetplatform.TC32Win.app.debug" name="TC32 Cross-Target" superClass="com.telink.tc32eclipse.targetplatform.TC32Win.app.debug"/>
<targetPlatform id="com.telink.tc32eclipse.targetplatform.TC32Win.app.debug" name="TC32 Cross-Target" superClass="com.telink.tc32eclipse.targetplatform.TC32Win.app.debug"/>
<tool id="com.telink.tc32eclipse.tool.assembler.TC32Win.app.debug.1591846300" name="TC32 CC/Assembler" superClass="com.telink.tc32eclipse.tool.assembler.TC32Win.app.debug.
3052926
">
<tool id="com.telink.tc32eclipse.tool.assembler.TC32Win.app.debug.1591846300" name="TC32 CC/Assembler" superClass="com.telink.tc32eclipse.tool.assembler.TC32Win.app.debug.
1623452904
">
<inputType id="com.telink.tc32eclipse.tool.assembler.input.700290468" superClass="com.telink.tc32eclipse.tool.assembler.input"/>
<inputType id="com.telink.tc32eclipse.tool.assembler.input.700290468" superClass="com.telink.tc32eclipse.tool.assembler.input"/>
</tool>
</tool>
<tool id="com.telink.tc32eclipse.tool.compiler.TC32Win.app.debug.291726593" name="TC32 Compiler" superClass="com.telink.tc32eclipse.tool.compiler.TC32Win.app.debug.
429172573
">
<tool id="com.telink.tc32eclipse.tool.compiler.TC32Win.app.debug.291726593" name="TC32 Compiler" superClass="com.telink.tc32eclipse.tool.compiler.TC32Win.app.debug.
1699036449
">
<option id="com.telink.tc32eclipse.compiler.option.incpath.1247767108" name="Include Paths (-I)" superClass="com.telink.tc32eclipse.compiler.option.incpath" valueType="includePath">
<option id="com.telink.tc32eclipse.compiler.option.incpath.1247767108" name="Include Paths (-I)" superClass="com.telink.tc32eclipse.compiler.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="../../../apps/common"/>
<listOptionValue builtIn="false" value="../../../apps/common"/>
<listOptionValue builtIn="false" value="../../../platform"/>
<listOptionValue builtIn="false" value="../../../platform"/>
...
@@ -25713,11 +25649,11 @@
...
@@ -25713,11 +25649,11 @@
</option>
</option>
<inputType id="com.telink.tc32eclipse.compiler.TC32Win.input.1401590976" name="C Source Files" superClass="com.telink.tc32eclipse.compiler.TC32Win.input"/>
<inputType id="com.telink.tc32eclipse.compiler.TC32Win.input.1401590976" name="C Source Files" superClass="com.telink.tc32eclipse.compiler.TC32Win.input"/>
</tool>
</tool>
<tool id="com.telink.tc32eclipse.tool.linker.TC32Win.app.debug.2030034369" name="TC32 C Linker" superClass="com.telink.tc32eclipse.tool.linker.TC32Win.app.debug.
1312256434
"/>
<tool id="com.telink.tc32eclipse.tool.linker.TC32Win.app.debug.2030034369" name="TC32 C Linker" superClass="com.telink.tc32eclipse.tool.linker.TC32Win.app.debug.
374658101
"/>
<tool id="com.telink.tc32eclipse.tool.archiver.TC32Win.base.585422860" name="TC32 Archiver" superClass="com.telink.tc32eclipse.tool.archiver.TC32Win.base.
105924924
"/>
<tool id="com.telink.tc32eclipse.tool.archiver.TC32Win.base.585422860" name="TC32 Archiver" superClass="com.telink.tc32eclipse.tool.archiver.TC32Win.base.
390926111
"/>
<tool id="com.telink.tc32eclipse.tool.objdump.TC32Win.app.debug.452692940" name="TC32 Create Extended Listing" superClass="com.telink.tc32eclipse.tool.objdump.TC32Win.app.debug.
1069527759
"/>
<tool id="com.telink.tc32eclipse.tool.objdump.TC32Win.app.debug.452692940" name="TC32 Create Extended Listing" superClass="com.telink.tc32eclipse.tool.objdump.TC32Win.app.debug.
911217276
"/>
<tool id="com.telink.tc32eclipse.tool.objcopy.flash.TC32Win.app.debug.1187529474" name="TC32 Create Flash image" superClass="com.telink.tc32eclipse.tool.objcopy.flash.TC32Win.app.debug.
519967884
"/>
<tool id="com.telink.tc32eclipse.tool.objcopy.flash.TC32Win.app.debug.1187529474" name="TC32 Create Flash image" superClass="com.telink.tc32eclipse.tool.objcopy.flash.TC32Win.app.debug.
1247140710
"/>
<tool id="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1675834392" name="Print Size" superClass="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1
447950833
"/>
<tool id="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1675834392" name="Print Size" superClass="com.telink.tc32eclipse.tool.size.TC32Win.app.debug.1
213737038
"/>
</toolChain>
</toolChain>
</folderInfo>
</folderInfo>
<sourceEntries>
<sourceEntries>
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