Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
Z3dev-AllToOneFanPanel
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
Z3dev-AllToOneFanPanel
Commits
2d0a05ab
Commit
2d0a05ab
authored
Mar 18, 2021
by
limm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
v2.0
parent
3169de12
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
879 additions
and
835 deletions
+879
-835
Code/KKAllToOneFloorHeatingMG21SDK665/.cproject
Code/KKAllToOneFloorHeatingMG21SDK665/.cproject
+11
-11
Code/KKAllToOneFloorHeatingMG21SDK665/.project
Code/KKAllToOneFloorHeatingMG21SDK665/.project
+0
-5
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/OptTunnel.xml
...AllToOneFloorHeatingMG21SDK665/00ikonke-app/OptTunnel.xml
+1
-0
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/common_process.c
...ToOneFloorHeatingMG21SDK665/00ikonke-app/common_process.c
+187
-98
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/common_process.h
...ToOneFloorHeatingMG21SDK665/00ikonke-app/common_process.h
+15
-1
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/driver/ikk-uart.c
...oOneFloorHeatingMG21SDK665/00ikonke-app/driver/ikk-uart.c
+2
-2
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/general/ikk-cluster.c
...FloorHeatingMG21SDK665/00ikonke-app/general/ikk-cluster.c
+48
-27
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/general/ikk-cluster.h
...FloorHeatingMG21SDK665/00ikonke-app/general/ikk-cluster.h
+15
-3
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/general/ikk-opt-tunnel.c
...orHeatingMG21SDK665/00ikonke-app/general/ikk-opt-tunnel.c
+8
-1
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/ikk-user.c
.../KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/ikk-user.c
+79
-32
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/uart_handler.c
...llToOneFloorHeatingMG21SDK665/00ikonke-app/uart_handler.c
+301
-474
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/uart_handler.h
...llToOneFloorHeatingMG21SDK665/00ikonke-app/uart_handler.h
+1
-0
Code/KKAllToOneFloorHeatingMG21SDK665/KKFan_Control_MG21SDK665.isc
...lToOneFloorHeatingMG21SDK665/KKFan_Control_MG21SDK665.isc
+51
-12
Code/KKAllToOneFloorHeatingMG21SDK665/af-gen-event.h
Code/KKAllToOneFloorHeatingMG21SDK665/af-gen-event.h
+4
-0
Code/KKAllToOneFloorHeatingMG21SDK665/af-gen-event.h.bak
Code/KKAllToOneFloorHeatingMG21SDK665/af-gen-event.h.bak
+8
-0
Code/KKAllToOneFloorHeatingMG21SDK665/attribute-id.h
Code/KKAllToOneFloorHeatingMG21SDK665/attribute-id.h
+1
-0
Code/KKAllToOneFloorHeatingMG21SDK665/callback-stub.c.bak
Code/KKAllToOneFloorHeatingMG21SDK665/callback-stub.c.bak
+0
-29
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1-postbuild.py
...G21SDK665/kkAllInOneFloorHeatingMG21SDK665V1-postbuild.py
+2
-2
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1-postbuild.py.bak
...DK665/kkAllInOneFloorHeatingMG21SDK665V1-postbuild.py.bak
+2
-2
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1.ewp
...rHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1.ewp
+2
-2
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1.h
...oorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1.h
+8
-7
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1.h.bak
...eatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1.h.bak
+8
-7
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1_endpoint_config.h
...K665/kkAllInOneFloorHeatingMG21SDK665V1_endpoint_config.h
+50
-52
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1_endpoint_config.h.bak
.../kkAllInOneFloorHeatingMG21SDK665V1_endpoint_config.h.bak
+50
-52
Code/KKAllToOneFloorHeatingMG21SDK665/zcl-framework-core/af-main-common.c
...loorHeatingMG21SDK665/zcl-framework-core/af-main-common.c
+25
-16
No files found.
Code/KKAllToOneFloorHeatingMG21SDK665/.cproject
View file @
2d0a05ab
This source diff could not be displayed because it is too large. You can
view the blob
instead.
Code/KKAllToOneFloorHeatingMG21SDK665/.project
View file @
2d0a05ab
...
@@ -670,11 +670,6 @@
...
@@ -670,11 +670,6 @@
<type>
1
</type>
<type>
1
</type>
<locationURI>
STUDIO_SDK_LOC/protocol/zigbee/app/framework/util/time-util.c
</locationURI>
<locationURI>
STUDIO_SDK_LOC/protocol/zigbee/app/framework/util/time-util.c
</locationURI>
</link>
</link>
<link>
<name>
zcl-framework-core/util.c
</name>
<type>
1
</type>
<locationURI>
STUDIO_SDK_LOC/protocol/zigbee/app/framework/util/util.c
</locationURI>
</link>
<link>
<link>
<name>
zcl-framework-core/zdo-cli.c
</name>
<name>
zcl-framework-core/zdo-cli.c
</name>
<type>
1
</type>
<type>
1
</type>
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/OptTunnel.xml
View file @
2d0a05ab
...
@@ -39,6 +39,7 @@
...
@@ -39,6 +39,7 @@
<attribute
side=
"server"
code=
"0x100a"
define=
"FanMode"
type=
"ENUM8"
min=
"0x00"
max=
"0x09"
writable=
"true"
default=
"0x00"
optional=
"true"
>
FanMode
</attribute>
<attribute
side=
"server"
code=
"0x100a"
define=
"FanMode"
type=
"ENUM8"
min=
"0x00"
max=
"0x09"
writable=
"true"
default=
"0x00"
optional=
"true"
>
FanMode
</attribute>
<attribute
side=
"server"
code=
"0x100b"
define=
"OnOff"
type=
"BOOLEAN"
min=
"0x00"
max=
"0x01"
writable=
"true"
default=
"0x00"
optional=
"true"
>
OnOff
</attribute>
<attribute
side=
"server"
code=
"0x100b"
define=
"OnOff"
type=
"BOOLEAN"
min=
"0x00"
max=
"0x01"
writable=
"true"
default=
"0x00"
optional=
"true"
>
OnOff
</attribute>
<attribute
side=
"server"
code=
"0x100c"
define=
"NoDisturbMode"
type=
"BOOLEAN"
min=
"0x00"
max=
"0x01"
writable=
"true"
default=
"0x00"
optional=
"true"
>
NoDisturbMode
</attribute>
<attribute
side=
"server"
code=
"0x100c"
define=
"NoDisturbMode"
type=
"BOOLEAN"
min=
"0x00"
max=
"0x01"
writable=
"true"
default=
"0x00"
optional=
"true"
>
NoDisturbMode
</attribute>
<attribute
side=
"server"
code=
"0x100d"
define=
"RunMode"
type=
"INT8U"
min=
"0x00"
max=
"0x03"
writable=
"true"
default=
"0x00"
optional=
"true"
>
RunMode
</attribute>
</cluster>
</cluster>
</configurator>
</configurator>
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/common_process.c
View file @
2d0a05ab
...
@@ -10,7 +10,6 @@
...
@@ -10,7 +10,6 @@
#include "common_process.h"
#include "common_process.h"
#include "uart_handler.h"
#include "uart_handler.h"
#include <00ikonke-app/general/ikk-opt-tunnel.h>
#include <00ikonke-app/general/ikk-opt-tunnel.h>
#include <00ikonke-app/general/ikk-cluster.h>
#include "./general/ikk-common-utils.h"
#include "./general/ikk-common-utils.h"
DEVICVE_INFO_ST
g_sDevice_Info
=
{
DEVICVE_INFO_ST
g_sDevice_Info
=
{
...
@@ -19,7 +18,6 @@ DEVICVE_INFO_ST g_sDevice_Info = {
...
@@ -19,7 +18,6 @@ DEVICVE_INFO_ST g_sDevice_Info = {
.
mcu_hardware_version
=
0xff
,
.
mcu_hardware_version
=
0xff
,
.
mcu_hardware_version
=
0xff
,
.
mcu_hardware_version
=
0xff
,
};
};
bool
APP_PreCommandHandlerCallback
(
EmberAfClusterCommand
*
cmd
)
bool
APP_PreCommandHandlerCallback
(
EmberAfClusterCommand
*
cmd
)
{
{
uint8_t
i
=
cmd
->
payloadStartIndex
;
uint8_t
i
=
cmd
->
payloadStartIndex
;
...
@@ -43,10 +41,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -43,10 +41,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
if
(
sDevice_attr_last
.
air_condition
.
on_off
)
if
(
sDevice_attr_last
.
air_condition
.
on_off
)
{
{
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
else
else
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// Write_OnOff_Attr(0,endpoint,&temp_data);
// Write_OnOff_Attr(0,endpoint,&temp_data);
}
}
...
@@ -56,10 +54,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -56,10 +54,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
if
(
sDevice_attr_last
.
floor_heating
.
on_off
)
if
(
sDevice_attr_last
.
floor_heating
.
on_off
)
{
{
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
else
else
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// Control_MCU(&g_sMsgNode,endpoint,CMD_ON_OFF,temp_data);
// Control_MCU(&g_sMsgNode,endpoint,CMD_ON_OFF,temp_data);
// kZclClusterSetPermitReportInfo(endpoint, ZCL_ON_OFF_CLUSTER_ID, false, false, false, false);
// kZclClusterSetPermitReportInfo(endpoint, ZCL_ON_OFF_CLUSTER_ID, false, false, false, false);
}
}
...
@@ -69,10 +67,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -69,10 +67,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
if
(
sDevice_attr_last
.
fan
.
on_off
)
if
(
sDevice_attr_last
.
fan
.
on_off
)
{
{
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
else
else
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// Control_MCU(&g_sMsgNode,endpoint,CMD_ON_OFF,temp_data);
// Control_MCU(&g_sMsgNode,endpoint,CMD_ON_OFF,temp_data);
// kZclClusterSetPermitReportInfo(endpoint, ZCL_ON_OFF_CLUSTER_ID, false, false, false, false);
// kZclClusterSetPermitReportInfo(endpoint, ZCL_ON_OFF_CLUSTER_ID, false, false, false, false);
}
}
...
@@ -86,10 +84,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -86,10 +84,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
if
(
sDevice_attr_last
.
air_condition
.
on_off
==
0
)
if
(
sDevice_attr_last
.
air_condition
.
on_off
==
0
)
{
{
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
else
else
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// Control_MCU(&g_sMsgNode,endpoint,CMD_ON_OFF,temp_data);
// Control_MCU(&g_sMsgNode,endpoint,CMD_ON_OFF,temp_data);
// kZclClusterSetPermitReportInfo(endpoint, ZCL_ON_OFF_CLUSTER_ID, false, false, false, false);
// kZclClusterSetPermitReportInfo(endpoint, ZCL_ON_OFF_CLUSTER_ID, false, false, false, false);
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
...
@@ -101,10 +99,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -101,10 +99,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
if
(
sDevice_attr_last
.
floor_heating
.
on_off
==
0
)
if
(
sDevice_attr_last
.
floor_heating
.
on_off
==
0
)
{
{
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
else
else
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// Control_MCU(&g_sMsgNode,endpoint,CMD_ON_OFF,temp_data);
// Control_MCU(&g_sMsgNode,endpoint,CMD_ON_OFF,temp_data);
// kZclClusterSetPermitReportInfo(endpoint, ZCL_ON_OFF_CLUSTER_ID, false, false, false, false);
// kZclClusterSetPermitReportInfo(endpoint, ZCL_ON_OFF_CLUSTER_ID, false, false, false, false);
}
}
...
@@ -114,10 +112,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -114,10 +112,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
if
(
sDevice_attr_last
.
fan
.
on_off
==
0
)
if
(
sDevice_attr_last
.
fan
.
on_off
==
0
)
{
{
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
else
else
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// Control_MCU(&g_sMsgNode,endpoint,CMD_ON_OFF,temp_data);
// Control_MCU(&g_sMsgNode,endpoint,CMD_ON_OFF,temp_data);
// kZclClusterSetPermitReportInfo(endpoint, ZCL_ON_OFF_CLUSTER_ID, false, false, false, false);
// kZclClusterSetPermitReportInfo(endpoint, ZCL_ON_OFF_CLUSTER_ID, false, false, false, false);
}
}
...
@@ -131,12 +129,12 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -131,12 +129,12 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
{
{
temp_data
=
1
;
temp_data
=
1
;
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
else
{
else
{
temp_data
=
0
;
temp_data
=
0
;
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
}
}
else
if
(
endpoint
==
2
)
else
if
(
endpoint
==
2
)
...
@@ -145,12 +143,12 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -145,12 +143,12 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
{
{
temp_data
=
1
;
temp_data
=
1
;
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
else
{
else
{
temp_data
=
0
;
temp_data
=
0
;
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
}
}
else
if
(
endpoint
==
3
)
else
if
(
endpoint
==
3
)
...
@@ -159,12 +157,12 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -159,12 +157,12 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
{
{
temp_data
=
1
;
temp_data
=
1
;
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
else
{
else
{
temp_data
=
0
;
temp_data
=
0
;
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
}
}
break
;
break
;
...
@@ -188,12 +186,22 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -188,12 +186,22 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
iKonkeAfSelfPrint
(
"##### datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
5
]
);
iKonkeAfSelfPrint
(
"##### datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
5
]
);
if
((
datavalue
>=
1600
)
&&
(
datavalue
<=
3000
))
if
((
datavalue
>=
1600
)
&&
(
datavalue
<=
3000
))
{
{
temp_16_t
=
datavalue
/
10
;
temp_16_t
=
datavalue
/
10
;
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_TARGET_TEMPER
,
temp_16_t
);
//自动模式下不能调节目标温度
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
false
,
false
,
false
,
false
);
if
(
((
endpoint
==
2
)
&&
(
sDevice_attr_last
.
floor_heating
.
system_type
==
1
))
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
||
((
endpoint
==
1
)
&&
(
sDevice_attr_last
.
air_condition
.
system_type
==
7
))
)
// Write_TargetTemp_Attr(0,endpoint,&datavalue);
{
return
false
;
emberAfSendImmediateDefaultResponse
(
EMBER_ZCL_STATUS_INVALID_VALUE
);
return
true
;
}
else
{
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_TARGET_TEMPER
,
temp_16_t
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// Write_TargetTemp_Attr(0,endpoint,&datavalue);
return
false
;
}
}
}
else
else
{
{
...
@@ -206,12 +214,16 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -206,12 +214,16 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
{
{
uint8_t
datavalue
=
cmd
->
buffer
[
i
+
3
];
uint8_t
datavalue
=
cmd
->
buffer
[
i
+
3
];
iKonkeAfSelfPrint
(
"##### datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
3
]
);
iKonkeAfSelfPrint
(
"##### datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
3
]
);
if
(
(((
datavalue
==
3
)
||
(
datavalue
==
4
)
||
(
datavalue
==
7
)
||
(
datavalue
==
8
))
&&
(
endpoint
==
1
))
||
if
(
(((
datavalue
==
3
)
||
(
datavalue
==
4
)
||
(
datavalue
==
7
)
||
(
datavalue
==
8
))
&&
(
endpoint
==
1
)
&&
(
g_sDevice_Info
.
Device_subType
==
0
))
||
(((
datavalue
==
1
)
||
(
datavalue
==
2
))
&&
(
endpoint
==
2
)))
(((
datavalue
==
1
)
||
(
datavalue
==
2
))
&&
(
endpoint
==
2
))
||
((
endpoint
==
1
)
&&
(
g_sDevice_Info
.
Device_subType
==
1
)
&&
((
sDevice_attr_last
.
air_condition
.
operate_mode
==
0
)
||
(
sDevice_attr_last
.
air_condition
.
operate_mode
==
3
))
&&
((
datavalue
==
3
)
||
(
datavalue
==
4
)
||
(
datavalue
==
7
)))
||
((
endpoint
==
1
)
&&
(
g_sDevice_Info
.
Device_subType
==
1
)
&&
(
sDevice_attr_last
.
air_condition
.
operate_mode
==
1
)
&&
((
datavalue
==
3
)
||
(
datavalue
==
7
)))
||
//风机盘管单冷模式
((
endpoint
==
1
)
&&
(
g_sDevice_Info
.
Device_subType
==
1
)
&&
(
sDevice_attr_last
.
air_condition
.
operate_mode
==
2
)
&&
((
datavalue
==
4
)
||
(
datavalue
==
7
)))
///风机盘管单热模式
)
{
{
temp_data
=
datavalue
;
temp_data
=
datavalue
;
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_SYSTEM
,
temp_data
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_SYSTEM
,
temp_data
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// Write_SystemMode_Attr(0,endpoint,&datavalue);
// Write_SystemMode_Attr(0,endpoint,&datavalue);
return
false
;
return
false
;
...
@@ -227,10 +239,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -227,10 +239,10 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
{
{
int8_t
datavalue
=
cmd
->
buffer
[
i
+
3
];
int8_t
datavalue
=
cmd
->
buffer
[
i
+
3
];
iKonkeAfSelfPrint
(
"#####Calibration datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
3
]
);
iKonkeAfSelfPrint
(
"#####Calibration datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
3
]
);
if
(((
datavalue
>=
0
)
&&
(
datavalue
<=
0x5A
))
||
((
datavalue
>
-
90
)
&&
(
datavalue
<
0
)))
if
(((
datavalue
>=
0
)
&&
(
datavalue
<=
0x5A
))
||
((
datavalue
>
=
-
90
)
&&
(
datavalue
<
0
)))
{
{
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_CALI_TEMPER
,
datavalue
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_CALI_TEMPER
,
datavalue
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// Write_CalibrationTemp_Attr(1,endpoint,&datavalue);
// Write_CalibrationTemp_Attr(1,endpoint,&datavalue);
return
false
;
return
false
;
...
@@ -259,7 +271,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -259,7 +271,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
if
(
((
datavalue
>
0
)
&&
(
datavalue
<
4
))
||
(
datavalue
==
5
))
if
(
((
datavalue
>
0
)
&&
(
datavalue
<
4
))
||
(
datavalue
==
5
))
{
{
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_WIND_SPEED
,
datavalue
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_WIND_SPEED
,
datavalue
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// Write_FanSpeed_Attr(0,endpoint,&datavalue);
// Write_FanSpeed_Attr(0,endpoint,&datavalue);
return
false
;
return
false
;
...
@@ -287,7 +299,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -287,7 +299,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
if
(
datavalue
>=
0
)
if
(
datavalue
>=
0
)
{
{
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_CHILD_LOCK
,
datavalue
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_CHILD_LOCK
,
datavalue
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// Write_Child_Lock_Attr(1,endpoint,&datavalue);
// Write_Child_Lock_Attr(1,endpoint,&datavalue);
return
false
;
return
false
;
...
@@ -308,7 +320,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -308,7 +320,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
if
(
(
(
datavalue
==
2
)
||
(
datavalue
==
10
)
)
&&
(
endpoint
==
3
)
)
if
(
(
(
datavalue
==
2
)
||
(
datavalue
==
10
)
)
&&
(
endpoint
==
3
)
)
{
{
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_SYSTEM
,
datavalue
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_SYSTEM
,
datavalue
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
return
false
;
return
false
;
}
}
else
else
...
@@ -324,7 +336,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -324,7 +336,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
iKonkeAfSelfPrint
(
"#####delay off, datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
3
]
);
iKonkeAfSelfPrint
(
"#####delay off, datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
3
]
);
if
(
(
datavalue
>=
0
)
&&
(
datavalue
<=
240
)){
if
(
(
datavalue
>=
0
)
&&
(
datavalue
<=
240
)){
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_DELAY_OFF
,
datavalue
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_DELAY_OFF
,
datavalue
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// Write_Delay_off_Attr(1,endpoint,&datavalue);
// Write_Delay_off_Attr(1,endpoint,&datavalue);
return
false
;
return
false
;
...
@@ -341,7 +353,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -341,7 +353,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
iKonkeAfSelfPrint
(
"#####Swing_Mode, datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
3
]
);
iKonkeAfSelfPrint
(
"#####Swing_Mode, datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
3
]
);
if
(
(
datavalue
>=
0
)
&&
(
datavalue
<
3
)){
if
(
(
datavalue
>=
0
)
&&
(
datavalue
<
3
)){
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_WIND_DIRECT
,
datavalue
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_WIND_DIRECT
,
datavalue
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// Write_Wind_Direct_Attr(1,endpoint,&datavalue);
// Write_Wind_Direct_Attr(1,endpoint,&datavalue);
return
false
;
return
false
;
...
@@ -358,7 +370,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -358,7 +370,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
iKonkeAfSelfPrint
(
"#####Screen_Saver_Time, datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
3
]
);
iKonkeAfSelfPrint
(
"#####Screen_Saver_Time, datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
3
]
);
if
(
datavalue
<
10
){
if
(
datavalue
<
10
){
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_SCREEN_SAVE
,
datavalue
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_SCREEN_SAVE
,
datavalue
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// Write_Screen_Save_Time_Attr(1,endpoint,&datavalue);
// Write_Screen_Save_Time_Attr(1,endpoint,&datavalue);
return
false
;
return
false
;
...
@@ -373,11 +385,11 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -373,11 +385,11 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
{
{
int8_t
datavalue
=
cmd
->
buffer
[
i
+
3
];
int8_t
datavalue
=
cmd
->
buffer
[
i
+
3
];
iKonkeAfSelfPrint
(
"#####Calibration datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
3
]
);
iKonkeAfSelfPrint
(
"#####Calibration datavalue (%d),%d
\r\n
"
,
datavalue
,
cmd
->
buffer
[
i
+
3
]
);
if
(
(((
datavalue
>=
0
)
&&
(
datavalue
<=
0x5A
))
||
((
datavalue
>
-
90
)
&&
(
datavalue
<
0
)))
if
(
(((
datavalue
>=
0
)
&&
(
datavalue
<=
0x5A
))
||
((
datavalue
>
=
-
90
)
&&
(
datavalue
<
0
)))
&&
(
g_sDevice_Info
.
Device_Type
==
Device_Type_Fan
)
)
&&
(
g_sDevice_Info
.
Device_Type
==
Device_Type_Fan
)
)
{
{
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_CALI_TEMPER
,
datavalue
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_CALI_TEMPER
,
datavalue
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// Write_CalibrationTemp_Attr(1,endpoint,&datavalue);
// Write_CalibrationTemp_Attr(1,endpoint,&datavalue);
return
false
;
return
false
;
...
@@ -395,7 +407,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
...
@@ -395,7 +407,7 @@ bool APP_PreCommandHandlerCallback(EmberAfClusterCommand* cmd)
iKonkeAfSelfPrint
(
"#####Screen_Saver_Time, datavalue (%d),%d
\r\n
"
,
datavalue
);
iKonkeAfSelfPrint
(
"#####Screen_Saver_Time, datavalue (%d),%d
\r\n
"
,
datavalue
);
if
(
(
datavalue
>
0
)
&&
(
datavalue
<
0xffff
)){
if
(
(
datavalue
>
0
)
&&
(
datavalue
<
0xffff
)){
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_FILTER_CLEAN
,
datavalue
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_FILTER_CLEAN
,
datavalue
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// if(g_sMsgNode.buffer[POLAD_INDEX] == TP_SUCCESS)
// Write_Filter_Clean_Time_Attr(1,endpoint,(uint8_t *)&datavalue);
// Write_Filter_Clean_Time_Attr(1,endpoint,(uint8_t *)&datavalue);
return
false
;
return
false
;
...
@@ -554,7 +566,7 @@ bool emberAfThermostatClusterSetpointRaiseLowerCallback(uint8_t mode,
...
@@ -554,7 +566,7 @@ bool emberAfThermostatClusterSetpointRaiseLowerCallback(uint8_t mode,
uiCurrent_Target_Temper
*=
10
;
uiCurrent_Target_Temper
*=
10
;
if
(
g_sMsgNode
.
buffer
[
POLAD_INDEX
]
==
TP_SUCCESS
)
//wait test
if
(
g_sMsgNode
.
buffer
[
POLAD_INDEX
]
==
TP_SUCCESS
)
//wait test
{
{
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteServerAttribute
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
emberAfWriteServerAttribute
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,(
uint8_t
*
)
&
uiCurrent_Target_Temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
,(
uint8_t
*
)
&
uiCurrent_Target_Temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
iKonkeAfSelfPrint
(
"####Set Temper Command Control Success !!
\r\n
"
);
iKonkeAfSelfPrint
(
"####Set Temper Command Control Success !!
\r\n
"
);
...
@@ -591,9 +603,9 @@ void emberAfFanControlClusterServerAttributeChangedCallback(uint8_t endpoint,
...
@@ -591,9 +603,9 @@ void emberAfFanControlClusterServerAttributeChangedCallback(uint8_t endpoint,
EmberStatus
Write_Attr
(
bool
Report
,
uint8_t
ep
,
uint16_t
cluster
,
uint16_t
attr
,
uint8_t
*
dataPtr
,
EmberAfAttributeType
datatype
)
EmberStatus
Write_Attr
(
bool
Report
,
uint8_t
ep
,
uint16_t
cluster
,
uint16_t
attr
,
uint8_t
*
dataPtr
,
EmberAfAttributeType
datatype
)
{
{
if
(
Report
==
1
)
if
(
Report
==
1
)
kZclClusterSetPermitReportInfo
(
ep
,
cluster
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
ep
,
cluster
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
else
else
kZclClusterSetPermitReportInfo
(
ep
,
cluster
,
false
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
ep
,
cluster
,
false
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
EmberStatus
status
=
emberAfWriteServerAttribute
(
ep
,
cluster
,
attr
,(
uint8_t
*
)
dataPtr
,
datatype
);
EmberStatus
status
=
emberAfWriteServerAttribute
(
ep
,
cluster
,
attr
,(
uint8_t
*
)
dataPtr
,
datatype
);
return
status
;
return
status
;
}
}
...
@@ -604,14 +616,88 @@ uint8_t Read_Zigbee_Version(void)
...
@@ -604,14 +616,88 @@ uint8_t Read_Zigbee_Version(void)
(
uint8_t
*
)
&
version
,
sizeof
(
version
),
NULL
);
(
uint8_t
*
)
&
version
,
sizeof
(
version
),
NULL
);
return
version
;
return
version
;
}
}
EmberEventControl
ikkReportInfoCheckEventControl
;
ZclReportControlSt
sFilter_Report_Data
=
{
0
};
boolean
Add_Filter_Report_To_Queue
(
ZclReportControlInfoSt
*
Report_info
,
uint64_t
currentTime
)
{
for
(
uint8_t
i
=
0
;
i
<
MAX_QUEUE_SIZE
;
i
++
)
{
if
(
!
sFilter_Report_Data
.
index
[
i
])
{
sFilter_Report_Data
.
index
[
i
]
=
1
;
sFilter_Report_Data
.
add_data_begain_time
[
i
]
=
currentTime
;
iKonkeAfSelfPrint
(
"####Add attribute success,attribute = (%02x),i = %d
\r\n
"
,
Report_info
->
attribute
,
i
);
emberEventControlSetDelayMS
(
ikkReportInfoCheckEventControl
,
10
);
memcpy
((
ZclReportControlInfoSt
*
)
&
sFilter_Report_Data
.
sReport_Info
[
i
],
Report_info
,
sizeof
(
ZclReportControlInfoSt
));
return
true
;
}
}
return
false
;
}
boolean
Remove_Filter_Report_From_Queue
(
uint16_t
attribute_id
)
{
for
(
uint8_t
i
=
0
;
i
<
MAX_QUEUE_SIZE
;
i
++
)
{
if
((
sFilter_Report_Data
.
index
[
i
])
&&
(
attribute_id
==
sFilter_Report_Data
.
sReport_Info
[
i
].
attribute
))
{
sFilter_Report_Data
.
index
[
i
]
=
0
;
sFilter_Report_Data
.
add_data_begain_time
[
i
]
=
0
;
memset
(
&
sFilter_Report_Data
.
sReport_Info
[
i
],
0
,
sizeof
(
ZclReportControlInfoSt
));
return
true
;
}
}
return
false
;
}
boolean
IS_Resend_Report_Data
(
uint16_t
attribute_id
,
ZclReportControlInfoSt
*
Report_info
)
{
for
(
uint8_t
i
=
0
;
i
<
MAX_QUEUE_SIZE
;
i
++
)
{
iKonkeAfSelfPrint
(
"####IS_Resend_Report_Data,i = (%d)
\r\n
"
,
i
);
if
((
sFilter_Report_Data
.
index
[
i
])
&&
(
attribute_id
==
sFilter_Report_Data
.
sReport_Info
[
i
].
attribute
))
{
sFilter_Report_Data
.
index
[
i
]
=
0
;
sFilter_Report_Data
.
add_data_begain_time
[
i
]
=
0
;
memcpy
(
Report_info
,(
ZclReportControlInfoSt
*
)
&
sFilter_Report_Data
.
sReport_Info
[
i
],
sizeof
(
ZclReportControlInfoSt
));
iKonkeAfSelfPrint
(
"####find attribute,attribute = (%02x)
\r\n
"
,
Report_info
->
attribute
);
memset
(
&
sFilter_Report_Data
.
sReport_Info
[
i
],
0
,
sizeof
(
ZclReportControlInfoSt
));
return
true
;
}
}
return
false
;
}
//2s 超时,删除队列数据
void
Check_Queue
(
void
)
{
uint64_t
currentTime
=
halCommonGetInt64uMillisecondTick
();
for
(
uint8_t
i
=
0
;
i
<
MAX_QUEUE_SIZE
;
i
++
)
{
if
(
(
sFilter_Report_Data
.
index
[
i
])
&&
((
currentTime
-
sFilter_Report_Data
.
add_data_begain_time
[
i
])
>=
2
*
1000
))
{
sFilter_Report_Data
.
index
[
i
]
=
0
;
sFilter_Report_Data
.
add_data_begain_time
[
i
]
=
0
;
memset
(
&
sFilter_Report_Data
.
sReport_Info
[
i
],
0
,
sizeof
(
ZclReportControlInfoSt
));
iKonkeAfSelfPrint
(
"####Timeout ,Remove it !
\r\n
"
);
}
}
}
void
ikkReportInfoCheckEventHandler
(
void
)
{
emberEventControlSetInactive
(
ikkReportInfoCheckEventControl
);
Check_Queue
();
emberEventControlSetDelayMS
(
ikkReportInfoCheckEventControl
,
10
);
}
kk_err_t
PrivateClusterHandler
(
EmberAfClusterCommand
*
cmd
)
kk_err_t
PrivateClusterHandler
(
EmberAfClusterCommand
*
cmd
)
{
{
/*begin add by maozj 20191127 add get gateway EUI64*/
/*begin add by maozj 20191127 add get gateway EUI64*/
EmberNodeId
sender
=
emberGetSender
();
EmberNodeId
sender
=
emberGetSender
();
// Gateway Eui64 address cache.
// Gateway Eui64 address cache.
EmberEUI64
senderEui64
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
EmberEUI64
eui64GatewayAddr
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
EmberEUI64
eui64GatewayAddr
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
EmberEUI64
tmpEui64
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
EmberEUI64
tmpEui64
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
EmberStatus
status
=
emberGetSenderEui64
(
eui64GatewayAddr
);
EmberStatus
status
=
emberGetSenderEui64
(
senderEui64
);
uint8_t
i
=
cmd
->
payloadStartIndex
;
uint8_t
i
=
cmd
->
payloadStartIndex
;
uint8_t
dataValue
=
0
;
uint8_t
dataValue
=
0
;
uint16_t
dataValue1
=
0
;
uint16_t
dataValue1
=
0
;
...
@@ -619,6 +705,7 @@ kk_err_t PrivateClusterHandler(EmberAfClusterCommand* cmd)
...
@@ -619,6 +705,7 @@ kk_err_t PrivateClusterHandler(EmberAfClusterCommand* cmd)
uint16_t
attribute_id
=
U16MERG
(
cmd
->
buffer
[
i
+
1
],
cmd
->
buffer
[
i
+
0
]);
uint16_t
attribute_id
=
U16MERG
(
cmd
->
buffer
[
i
+
1
],
cmd
->
buffer
[
i
+
0
]);
uint8_t
dataType
=
cmd
->
buffer
[
i
+
2
];
uint8_t
dataType
=
cmd
->
buffer
[
i
+
2
];
uint8_t
endpoint
=
cmd
->
apsFrame
->
destinationEndpoint
;
uint8_t
endpoint
=
cmd
->
apsFrame
->
destinationEndpoint
;
uint64_t
currentTime
=
halCommonGetInt64uMillisecondTick
();
/***********************************多控处理************************************************/
/***********************************多控处理************************************************/
if
((
!
cmd
->
clusterSpecific
)
&&
(
cmd
->
direction
==
(
uint8_t
)
ZCL_DIRECTION_SERVER_TO_CLIENT
)
\
if
((
!
cmd
->
clusterSpecific
)
&&
(
cmd
->
direction
==
(
uint8_t
)
ZCL_DIRECTION_SERVER_TO_CLIENT
)
\
&&
(
!
cmd
->
mfgSpecific
))
&&
(
!
cmd
->
mfgSpecific
))
...
@@ -658,18 +745,18 @@ kk_err_t PrivateClusterHandler(EmberAfClusterCommand* cmd)
...
@@ -658,18 +745,18 @@ kk_err_t PrivateClusterHandler(EmberAfClusterCommand* cmd)
switch
(
attribute_id
)
switch
(
attribute_id
)
{
{
case
FCC0_ATTR_Error_Code
:
//
case FCC0_ATTR_Error_Code:
{
//
{
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
1
)
//
if(cmd->apsFrame->sourceEndpoint == 1)
sDevice_attr_new
.
air_condition
.
error
=
dataValue
;
//
sDevice_attr_new.air_condition.error = dataValue;
else
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
2
)
//
else if(cmd->apsFrame->sourceEndpoint == 2)
sDevice_attr_new
.
floor_heating
.
error
=
dataValue
;
//
sDevice_attr_new.floor_heating.error = dataValue;
else
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
3
)
//
else if(cmd->apsFrame->sourceEndpoint == 3)
sDevice_attr_new
.
fan
.
error
=
dataValue
;
//
sDevice_attr_new.fan.error = dataValue;
data_type
=
ZCL_INT8U_ATTRIBUTE_TYPE
;
//
data_type = ZCL_INT8U_ATTRIBUTE_TYPE;
Control_MCU
(
&
g_sMsgNode
,
cmd
->
apsFrame
->
sourceEndpoint
,
CMD_ERROR_CODE
,
dataValue
);
//
Control_MCU(&g_sMsgNode,cmd->apsFrame->sourceEndpoint,CMD_ERROR_CODE,dataValue);
}
//
}
break
;
//
break;
case
FCC0_ATTR_Child_Lock
:
case
FCC0_ATTR_Child_Lock
:
{
{
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
1
)
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
1
)
...
@@ -744,30 +831,30 @@ kk_err_t PrivateClusterHandler(EmberAfClusterCommand* cmd)
...
@@ -744,30 +831,30 @@ kk_err_t PrivateClusterHandler(EmberAfClusterCommand* cmd)
Control_MCU
(
&
g_sMsgNode
,
cmd
->
apsFrame
->
sourceEndpoint
,
CMD_TARGET_TEMPER
,
dataValue1
/
10
);
Control_MCU
(
&
g_sMsgNode
,
cmd
->
apsFrame
->
sourceEndpoint
,
CMD_TARGET_TEMPER
,
dataValue1
/
10
);
}
}
break
;
break
;
case
FCC0_ATTR_Current_Temperature
:
//
case FCC0_ATTR_Current_Temperature:
{
//
{
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
1
)
//
if(cmd->apsFrame->sourceEndpoint == 1)
sDevice_attr_new
.
air_condition
.
real_temperature
=
dataValue1
;
//
sDevice_attr_new.air_condition.real_temperature = dataValue1;
else
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
2
)
//
else if(cmd->apsFrame->sourceEndpoint == 2)
sDevice_attr_new
.
floor_heating
.
real_temperature
=
dataValue1
;
//
sDevice_attr_new.floor_heating.real_temperature = dataValue1;
else
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
3
)
//
else if(cmd->apsFrame->sourceEndpoint == 3)
sDevice_attr_new
.
fan
.
real_temperature
=
dataValue1
;
//
sDevice_attr_new.fan.real_temperature = dataValue1;
data_type
=
ZCL_INT16S_ATTRIBUTE_TYPE
;
//
data_type = ZCL_INT16S_ATTRIBUTE_TYPE;
Control_MCU
(
&
g_sMsgNode
,
cmd
->
apsFrame
->
sourceEndpoint
,
CMD_CURRENT_TEMPER
,
dataValue1
);
//
Control_MCU(&g_sMsgNode,cmd->apsFrame->sourceEndpoint,CMD_CURRENT_TEMPER,dataValue1);
}
//
}
break
;
//
break;
case
FCC0_ATTR_Calibration_Temperature
:
//
case FCC0_ATTR_Calibration_Temperature:
{
//
{
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
1
)
//
if(cmd->apsFrame->sourceEndpoint == 1)
sDevice_attr_new
.
air_condition
.
correct_temperature
=
dataValue
;
//
sDevice_attr_new.air_condition.correct_temperature = dataValue;
else
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
2
)
//
else if(cmd->apsFrame->sourceEndpoint == 2)
sDevice_attr_new
.
floor_heating
.
correct_temperature
=
dataValue
;
//
sDevice_attr_new.floor_heating.correct_temperature = dataValue;
else
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
3
)
//
else if(cmd->apsFrame->sourceEndpoint == 3)
sDevice_attr_new
.
fan
.
correct_temperature
=
dataValue
;
//
sDevice_attr_new.fan.correct_temperature = dataValue;
data_type
=
ZCL_INT8S_ATTRIBUTE_TYPE
;
//
data_type = ZCL_INT8S_ATTRIBUTE_TYPE;
Control_MCU
(
&
g_sMsgNode
,
cmd
->
apsFrame
->
sourceEndpoint
,
CMD_CALI_TEMPER
,
dataValue
);
//
Control_MCU(&g_sMsgNode,cmd->apsFrame->sourceEndpoint,CMD_CALI_TEMPER,dataValue);
}
//
}
break
;
//
break;
case
FCC0_ATTR_Fan_Mode
:
case
FCC0_ATTR_Fan_Mode
:
{
{
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
1
)
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
1
)
...
@@ -790,28 +877,30 @@ kk_err_t PrivateClusterHandler(EmberAfClusterCommand* cmd)
...
@@ -790,28 +877,30 @@ kk_err_t PrivateClusterHandler(EmberAfClusterCommand* cmd)
Control_MCU
(
&
g_sMsgNode
,
cmd
->
apsFrame
->
sourceEndpoint
,
CMD_ON_OFF
,
dataValue
);
Control_MCU
(
&
g_sMsgNode
,
cmd
->
apsFrame
->
sourceEndpoint
,
CMD_ON_OFF
,
dataValue
);
}
}
break
;
break
;
case
FCC0_ATTR_No_Disturb_Mode
:
//
case FCC0_ATTR_No_Disturb_Mode:
{
//
{
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
1
)
//
if(cmd->apsFrame->sourceEndpoint == 1)
sDevice_attr_new
.
air_condition
.
no_disturb_mode
=
dataValue
;
//
sDevice_attr_new.air_condition.no_disturb_mode = dataValue;
else
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
2
)
//
else if(cmd->apsFrame->sourceEndpoint == 2)
sDevice_attr_new
.
floor_heating
.
no_disturb_mode
=
dataValue
;
//
sDevice_attr_new.floor_heating.no_disturb_mode = dataValue;
else
if
(
cmd
->
apsFrame
->
sourceEndpoint
==
3
)
//
else if(cmd->apsFrame->sourceEndpoint == 3)
sDevice_attr_new
.
fan
.
no_disturb_mode
=
dataValue
;
//
sDevice_attr_new.fan.no_disturb_mode = dataValue;
data_type
=
ZCL_BOOLEAN_ATTRIBUTE_TYPE
;
//
data_type = ZCL_BOOLEAN_ATTRIBUTE_TYPE;
Control_MCU
(
&
g_sMsgNode
,
cmd
->
apsFrame
->
sourceEndpoint
,
CMD_NO_DISTURB_MODE
,
dataValue
);
//
Control_MCU(&g_sMsgNode,cmd->apsFrame->sourceEndpoint,CMD_NO_DISTURB_MODE,dataValue);
}
//
}
break
;
//
break;
default:
default:
break
;
break
;
}
}
kZclClusterSetPermitReportInfo
(
cmd
->
apsFrame
->
sourceEndpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
false
,
false
,
false
,
false
);
ZclReportControlInfoSt
ZclReportFCC0Info
;
if
(
emberAfGetDataSize
(
data_type
)
==
1
)
ZclReportFCC0Info
.
attribute
=
attribute_id
;
emberAfWriteServerAttribute
(
cmd
->
apsFrame
->
sourceEndpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
attribute_id
,
ZclReportFCC0Info
.
cluster
=
0Xfcc0
;
(
uint8_t
*
)
&
dataValue
,
data_type
);
ZclReportFCC0Info
.
endpoint
=
cmd
->
apsFrame
->
destinationEndpoint
;
else
ZclReportFCC0Info
.
dest_endpoint
=
cmd
->
apsFrame
->
sourceEndpoint
;
emberAfWriteServerAttribute
(
cmd
->
apsFrame
->
sourceEndpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
attribute_id
,
ZclReportFCC0Info
.
isMultiContorl
=
true
;
(
uint8_t
*
)
&
dataValue1
,
data_type
);
MEMCOPY
(
ZclReportFCC0Info
.
maskEui64Addr
,
senderEui64
,
EUI64_SIZE
);
iKonkeAfSelfPrint
(
"####send EUI = %x-%x-%x-%x!!!!
\r\n
"
,
senderEui64
[
0
],
senderEui64
[
1
],
senderEui64
[
2
],
senderEui64
[
3
]);
Add_Filter_Report_To_Queue
(
&
ZclReportFCC0Info
,
currentTime
);
emberAfSendImmediateDefaultResponse
(
EMBER_ZCL_STATUS_SUCCESS
);
emberAfSendImmediateDefaultResponse
(
EMBER_ZCL_STATUS_SUCCESS
);
return
KET_OK
;
return
KET_OK
;
}
}
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/common_process.h
View file @
2d0a05ab
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
#include "app/framework/include/af.h"
#include "app/framework/include/af.h"
#include "././00ikonke-app/general/ikk-debug.h"
#include "././00ikonke-app/general/ikk-debug.h"
#include "./general/ikk-module-def.h"
#include "./general/ikk-module-def.h"
#include <00ikonke-app/general/ikk-cluster.h>
#define BUILD_UINT16(lowByte, highByte) \
#define BUILD_UINT16(lowByte, highByte) \
((uint16_t)(((lowByte) & 0x00FF) + (((highByte) & 0x00FF) << 8)))
((uint16_t)(((lowByte) & 0x00FF) + (((highByte) & 0x00FF) << 8)))
...
@@ -23,7 +24,7 @@
...
@@ -23,7 +24,7 @@
#define FCC0_ATTR_Fan_Mode 0X100A
#define FCC0_ATTR_Fan_Mode 0X100A
#define FCC0_ATTR_ON_OFF 0X100B
#define FCC0_ATTR_ON_OFF 0X100B
#define FCC0_ATTR_No_Disturb_Mode 0X100C
#define FCC0_ATTR_No_Disturb_Mode 0X100C
#define FCC0_ATTR_No_Run_Mode 0X100D
...
@@ -31,6 +32,9 @@
...
@@ -31,6 +32,9 @@
#define Device_Type_Floor_Heating 2
#define Device_Type_Floor_Heating 2
#define Device_Type_Fan 3
#define Device_Type_Fan 3
#define MAX_QUEUE_SIZE 15
static
uint8_t
invalidMaskEui64
[
8
]
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
EmberStatus
Write_Attr
(
bool
Report
,
uint8_t
ep
,
uint16_t
cluster
,
uint16_t
attr
,
uint8_t
*
dataPtr
,
EmberAfAttributeType
datatype
);
EmberStatus
Write_Attr
(
bool
Report
,
uint8_t
ep
,
uint16_t
cluster
,
uint16_t
attr
,
uint8_t
*
dataPtr
,
EmberAfAttributeType
datatype
);
...
@@ -67,11 +71,21 @@ typedef struct
...
@@ -67,11 +71,21 @@ typedef struct
uint8_t
mcu_hardware_version
;
uint8_t
mcu_hardware_version
;
}
DEVICVE_INFO_ST
;
}
DEVICVE_INFO_ST
;
typedef
struct
{
ZclReportControlInfoSt
sReport_Info
[
MAX_QUEUE_SIZE
];
uint8_t
index
[
MAX_QUEUE_SIZE
]
;
uint64_t
add_data_begain_time
[
MAX_QUEUE_SIZE
];
}
ZclReportControlSt
;
extern
DEVICVE_INFO_ST
g_sDevice_Info
;
extern
DEVICVE_INFO_ST
g_sDevice_Info
;
uint8_t
Read_Zigbee_Version
(
void
);
uint8_t
Read_Zigbee_Version
(
void
);
kk_err_t
PrivateClusterHandler
(
EmberAfClusterCommand
*
cmd
);
kk_err_t
PrivateClusterHandler
(
EmberAfClusterCommand
*
cmd
);
void
kGetBindConfigInfo
(
void
);
void
kGetBindConfigInfo
(
void
);
void
Reset_Binding_Token
(
void
);
void
Reset_Binding_Token
(
void
);
void
Check_Queue
(
void
);
boolean
IS_Resend_Report_Data
(
uint16_t
attribute_id
,
ZclReportControlInfoSt
*
Report_info
);
/**********************common interface*******************************/
/**********************common interface*******************************/
uint8_t
Get_Device_Endpoint
(
void
);
uint8_t
Get_Device_Endpoint
(
void
);
uint8_t
Get_Binding_Device_EP
(
void
);
uint8_t
Get_Binding_Device_EP
(
void
);
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/driver/ikk-uart.c
View file @
2d0a05ab
...
@@ -262,12 +262,12 @@ void ikkUartRecvLoopCheck(UMsgNodeSt *pNode, int waitto_ms )
...
@@ -262,12 +262,12 @@ void ikkUartRecvLoopCheck(UMsgNodeSt *pNode, int waitto_ms )
{
{
if
(
emberSerialReadAvailable
(
g_uManagerInsc
.
port
))
{
if
(
emberSerialReadAvailable
(
g_uManagerInsc
.
port
))
{
while
(
emberSerialReadByte
(
g_uManagerInsc
.
port
,
&
data
)
==
EMBER_SUCCESS
)
{
while
(
emberSerialReadByte
(
g_uManagerInsc
.
port
,
&
data
)
==
EMBER_SUCCESS
)
{
iKonkeAfSelfPrint
(
">>>>>>1111Recv Data %x
\r\n
"
,
data
);
//
iKonkeAfSelfPrint(">>>>>>1111Recv Data %x\r\n", data);
currentTime
=
halCommonGetInt64uMillisecondTick
();
currentTime
=
halCommonGetInt64uMillisecondTick
();
//add by maozj 20200602
//add by maozj 20200602
//When the data header is detected, fix the problem that the data is too long to verify successfully
//When the data header is detected, fix the problem that the data is too long to verify successfully
if
(
currentTime
-
lastTime
>=
UART_MAX_RECV_INTERVAL_TIMEOUT
){
if
(
currentTime
-
lastTime
>=
UART_MAX_RECV_INTERVAL_TIMEOUT
){
iKonkeAfSelfPrint
(
">>>>>>>>>>1111New data package
\r\n
"
);
//
iKonkeAfSelfPrint(">>>>>>>>>>1111New data package\r\n");
recving
=
false
;
recving
=
false
;
}
}
lastTime
=
currentTime
;
lastTime
=
currentTime
;
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/general/ikk-cluster.c
View file @
2d0a05ab
...
@@ -161,28 +161,22 @@ bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd )
...
@@ -161,28 +161,22 @@ bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd )
/*begin add by maozj 20191127 add get gateway EUI64*/
/*begin add by maozj 20191127 add get gateway EUI64*/
EmberNodeId
sender
=
emberGetSender
();
EmberNodeId
sender
=
emberGetSender
();
// Gateway Eui64 address cache.
// Gateway Eui64 address cache.
EmberEUI64
eui64GatewayAddr
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
EmberEUI64
senderEui64
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
EmberEUI64
tmp
Eui64
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
EmberEUI64
invalid
Eui64
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
EmberStatus
status
=
emberGetSenderEui64
(
eui64GatewayAddr
);
EmberStatus
status
=
emberGetSenderEui64
(
senderEui64
);
// iKonkeAfSelfPrint("Get EUI64 PreCommand: status(0x%x)%X%X%X%X%X%X%X%X\r\n",status, eui64GatewayAddr[7], eui64GatewayAddr[6]
iKonkeAfSelfPrint
(
"####emberAfPreCommandReceivedCallback,dir(%d),mfgSpe(%d),id(%d),cluSpe(%d),####
\r\n
"
,
cmd
->
direction
,
cmd
->
mfgSpecific
,
cmd
->
apsFrame
->
clusterId
,
cmd
->
clusterSpecific
);
// , eui64GatewayAddr[5], eui64GatewayAddr[4], eui64GatewayAddr[3], eui64GatewayAddr[2]
// , eui64GatewayAddr[1], eui64GatewayAddr[0]);
//source is gateway
//source is gateway
if
(
sender
==
0x0000
){
if
(
sender
==
0x0000
){
kNwkGetGateWayEui64
(
eui64GatewayAddr
);
kNwkGetGateWayEui64
(
senderEui64
);
//iKonkeAfSelfPrint("----xxx getEui64FromFlash %x%x%x%x%x%x%x%x --",g_Eui64GatewayAddr[7], g_Eui64GatewayAddr[6], \
// g_Eui64GatewayAddr[5], g_Eui64GatewayAddr[4], g_Eui64GatewayAddr[3], g_Eui64GatewayAddr[2], g_Eui64GatewayAddr[1],g_Eui64GatewayAddr[0]);
if
(
MEMCOMPARE
(
senderEui64
,
invalidEui64
,
EUI64_SIZE
)){
if
(
MEMCOMPARE
(
eui64GatewayAddr
,
tmpEui64
,
EUI64_SIZE
)){
// iKonkeAfSelfPrint("Get EUI64 PreCommand is existed\r\n");
// iKonkeAfSelfPrint("Get EUI64 PreCommand is existed\r\n");
}
else
{
}
else
{
EmberStatus
status
=
emberGetSenderEui64
(
eui64GatewayAddr
);
EmberStatus
status
=
emberGetSenderEui64
(
senderEui64
);
if
(
status
==
EMBER_SUCCESS
){
if
(
status
==
EMBER_SUCCESS
){
if
(
kUtilsIsValidEui64Addr
(
eui64GatewayAddr
))
{
if
(
kUtilsIsValidEui64Addr
(
senderEui64
))
{
kNwkSetGateWayEui64
(
eui64GatewayAddr
);
kNwkSetGateWayEui64
(
senderEui64
);
iKonkeAfSelfPrint
(
"Get EUI64 PreCommand: %X%X%X%X%X%X%X%X
\r\n
"
,
eui64GatewayAddr
[
7
],
eui64GatewayAddr
[
6
]
,
eui64GatewayAddr
[
5
],
eui64GatewayAddr
[
4
],
eui64GatewayAddr
[
3
],
eui64GatewayAddr
[
2
]
,
eui64GatewayAddr
[
1
],
eui64GatewayAddr
[
0
]);
}
}
}
else
{
}
else
{
iKonkeAfSelfPrint
(
"Get EUI64 failed
\r\n
"
);
iKonkeAfSelfPrint
(
"Get EUI64 failed
\r\n
"
);
...
@@ -336,6 +330,7 @@ bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd )
...
@@ -336,6 +330,7 @@ bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd )
case
(
ZCL_ON_OFF_CLUSTER_ID
):
case
(
ZCL_ON_OFF_CLUSTER_ID
):
{
{
ZclOnOffControlInfoSt
ZclOnOffControlInfo
;
if
(
(
cmd
->
clusterSpecific
)
&&
(
cmd
->
direction
==
(
uint8_t
)
ZCL_DIRECTION_CLIENT_TO_SERVER
)
&&
if
(
(
cmd
->
clusterSpecific
)
&&
(
cmd
->
direction
==
(
uint8_t
)
ZCL_DIRECTION_CLIENT_TO_SERVER
)
&&
(
!
cmd
->
mfgSpecific
))
{
(
!
cmd
->
mfgSpecific
))
{
switch
(
cmd
->
commandId
)
{
switch
(
cmd
->
commandId
)
{
...
@@ -345,7 +340,13 @@ bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd )
...
@@ -345,7 +340,13 @@ bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd )
{
{
//add by maozj 20191224
//add by maozj 20191224
if
(
g_pfSceneClusterRecallCallback
){
if
(
g_pfSceneClusterRecallCallback
){
g_pfSceneClusterRecallCallback
(
cmd
->
apsFrame
->
destinationEndpoint
,
cmd
->
apsFrame
->
clusterId
,
cmd
->
commandId
,
true
,
false
,
true
,
true
,
NULL
);
//restore immediately report
//KKK
ZclOnOffControlInfo
.
isMultiContorl
=
false
;
ZclOnOffControlInfo
.
onOffValue
=
cmd
->
commandId
;
ZclOnOffControlInfo
.
endpoint
=
cmd
->
apsFrame
->
destinationEndpoint
;
ZclOnOffControlInfo
.
dest_endpoint
=
RESET_ENDPOINT
;
MEMCOPY
(
ZclOnOffControlInfo
.
maskEui64Addr
,
invalidEui64
,
EUI64_SIZE
);
g_pfSceneClusterRecallCallback
(
cmd
->
apsFrame
->
destinationEndpoint
,
cmd
->
apsFrame
->
clusterId
,
cmd
->
commandId
,
true
,
false
,
true
,
true
,
(
ZclOnOffControlInfoSt
*
)
&
ZclOnOffControlInfo
);
//restore immediately report
}
}
break
;
break
;
...
@@ -398,17 +399,22 @@ bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd )
...
@@ -398,17 +399,22 @@ bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd )
{
{
case
0x00
:
case
0x00
:
case
0x01
:
case
0x01
:
{
emberAfWriteServerAttribute
(
cmd
->
apsFrame
->
destinationEndpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
(
uint8_t
*
)
&
onOffValue
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
break
;
case
0x02
:
case
0x02
:
{
// emberAfWriteServerAttribute(cmd->apsFrame->destinationEndpoint,
// ZCL_ON_OFF_CLUSTER_ID,
// ZCL_ON_OFF_ATTRIBUTE_ID,
// (uint8_t *)&onOffValue,
// ZCL_BOOLEAN_ATTRIBUTE_TYPE);
//KKK 记录当前 rcv ieee
ZclOnOffControlInfo
.
endpoint
=
cmd
->
apsFrame
->
destinationEndpoint
;
ZclOnOffControlInfo
.
dest_endpoint
=
cmd
->
apsFrame
->
sourceEndpoint
;
ZclOnOffControlInfo
.
isMultiContorl
=
true
;
ZclOnOffControlInfo
.
onOffValue
=
onOffValue
;
MEMCOPY
(
ZclOnOffControlInfo
.
maskEui64Addr
,
senderEui64
,
EUI64_SIZE
);
g_pfSceneClusterRecallCallback
(
cmd
->
apsFrame
->
destinationEndpoint
,
cmd
->
apsFrame
->
clusterId
,
onOffValue
,
true
,
false
,
true
,
true
,
(
ZclOnOffControlInfoSt
*
)
&
ZclOnOffControlInfo
);
//restore immediately report
break
;
break
;
}
default:
default:
break
;
break
;
}
}
...
@@ -1480,13 +1486,16 @@ bool kZclClusterGetPermitReportInfo(uint8_t endpoint, EmberAfClusterId cluster,
...
@@ -1480,13 +1486,16 @@ bool kZclClusterGetPermitReportInfo(uint8_t endpoint, EmberAfClusterId cluster,
zclReportPermit
->
sceneRecallFlg
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
sceneRecallFlg
;
zclReportPermit
->
sceneRecallFlg
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
sceneRecallFlg
;
zclReportPermit
->
reportGatewayEnable
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportGatewayEnable
;
zclReportPermit
->
reportGatewayEnable
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportGatewayEnable
;
zclReportPermit
->
reportChildDeviceEnable
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportChildDeviceEnable
;
zclReportPermit
->
reportChildDeviceEnable
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportChildDeviceEnable
;
//KKK
MEMCOPY
(
zclReportPermit
->
maskEui64Addr
,
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
maskEui64Addr
,
EUI64_SIZE
);
zclReportPermit
->
dest_endpoint
=
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
dest_endpoint
;
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
//permit info set
//permit info set
bool
kZclClusterSetPermitReportInfo
(
uint8_t
endpoint
,
EmberAfClusterId
cluster
,
bool
reportEnable
,
bool
sceneRecallFlg
,
bool
reportGatewayEnable
,
bool
reportChildDeviceEnable
)
bool
kZclClusterSetPermitReportInfo
(
uint8_t
endpoint
,
EmberAfClusterId
cluster
,
bool
reportEnable
,
bool
sceneRecallFlg
,
bool
reportGatewayEnable
,
bool
reportChildDeviceEnable
,
uint8_t
*
maskEui64Addr
,
uint8_t
dest_endpoint
)
{
{
bool
ret
=
false
;
bool
ret
=
false
;
...
@@ -1503,6 +1512,12 @@ bool kZclClusterSetPermitReportInfo(uint8_t endpoint, EmberAfClusterId cluster,
...
@@ -1503,6 +1512,12 @@ bool kZclClusterSetPermitReportInfo(uint8_t endpoint, EmberAfClusterId cluster,
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
sceneRecallFlg
=
sceneRecallFlg
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
sceneRecallFlg
=
sceneRecallFlg
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportGatewayEnable
=
reportGatewayEnable
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportGatewayEnable
=
reportGatewayEnable
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportChildDeviceEnable
=
reportChildDeviceEnable
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportChildDeviceEnable
=
reportChildDeviceEnable
;
if
(
maskEui64Addr
!=
NULL
){
MEMCOPY
(
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
maskEui64Addr
,
maskEui64Addr
,
EUI64_SIZE
);
}
else
{
MEMSET
(
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
maskEui64Addr
,
0xFF
,
EUI64_SIZE
);
}
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
dest_endpoint
=
dest_endpoint
;
ret
=
true
;
ret
=
true
;
}
}
}
else
{
//广播
}
else
{
//广播
...
@@ -1514,6 +1529,12 @@ bool kZclClusterSetPermitReportInfo(uint8_t endpoint, EmberAfClusterId cluster,
...
@@ -1514,6 +1529,12 @@ bool kZclClusterSetPermitReportInfo(uint8_t endpoint, EmberAfClusterId cluster,
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
sceneRecallFlg
=
sceneRecallFlg
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
sceneRecallFlg
=
sceneRecallFlg
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportGatewayEnable
=
reportGatewayEnable
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportGatewayEnable
=
reportGatewayEnable
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportChildDeviceEnable
=
reportChildDeviceEnable
;
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
reportChildDeviceEnable
=
reportChildDeviceEnable
;
if
(
maskEui64Addr
!=
NULL
){
MEMCOPY
(
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
maskEui64Addr
,
maskEui64Addr
,
EUI64_SIZE
);
}
else
{
MEMSET
(
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
maskEui64Addr
,
0xFF
,
EUI64_SIZE
);
}
g_stZclClusterReportPermitTable
.
g_stZclReportPermitList
[
index
].
dest_endpoint
=
dest_endpoint
;
ret
=
true
;
ret
=
true
;
}
}
}
}
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/general/ikk-cluster.h
View file @
2d0a05ab
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
#include "kkAllInOneFloorHeatingMG21SDK665V1.h"
#include "kkAllInOneFloorHeatingMG21SDK665V1.h"
#define DEFAULT_TRANSITION_TIME_S (3)
#define DEFAULT_TRANSITION_TIME_S (3)
#define RESET_ENDPOINT 0xFE
// sleepy device poll procedule control manager
// sleepy device poll procedule control manager
typedef
struct
tag_poll_control_manager
{
typedef
struct
tag_poll_control_manager
{
...
@@ -27,6 +28,9 @@ typedef struct tag_zcl_report_table{
...
@@ -27,6 +28,9 @@ typedef struct tag_zcl_report_table{
bool
sceneRecallFlg
;
bool
sceneRecallFlg
;
bool
reportGatewayEnable
;
bool
reportGatewayEnable
;
bool
reportChildDeviceEnable
;
bool
reportChildDeviceEnable
;
EmberEUI64
maskEui64Addr
;
uint8_t
dest_endpoint
;
}
ZclReportTableSt
;
}
ZclReportTableSt
;
typedef
struct
{
typedef
struct
{
...
@@ -37,7 +41,16 @@ typedef struct {
...
@@ -37,7 +41,16 @@ typedef struct {
bool
isMultiContorl
;
//whether multi-control, used to judge whether send response or multi-control
bool
isMultiContorl
;
//whether multi-control, used to judge whether send response or multi-control
bool
isSendResponse
;
bool
isSendResponse
;
}
ZclLevelControlInfoSt
;
}
ZclLevelControlInfoSt
;
typedef
struct
{
uint8_t
endpoint
;
uint8_t
onOffValue
;
uint16_t
cluster
;
uint16_t
attribute
;
bool
isMultiContorl
;
//whether multi-control, used to judge whether send response or multi-control
bool
isSendResponse
;
EmberEUI64
maskEui64Addr
;
uint8_t
dest_endpoint
;
}
ZclReportControlInfoSt
;
typedef
enum
{
EOOC_OFF
=
0
,
EOOC_ON
,
EOOC_TOGGLE
,
EOOC_UNKNOW
}
OnOffCtrlEnum
;
typedef
enum
{
EOOC_OFF
=
0
,
EOOC_ON
,
EOOC_TOGGLE
,
EOOC_UNKNOW
}
OnOffCtrlEnum
;
typedef
enum
{
EOOS_OFF
=
0
,
EOOS_ON
,
EOOS_UNKNOW
}
OnOffStatusEnum
;
typedef
enum
{
EOOS_OFF
=
0
,
EOOS_ON
,
EOOS_UNKNOW
}
OnOffStatusEnum
;
...
@@ -146,8 +159,7 @@ void kZclClusterPermitReportTableInit(BindObjSt clusterBindList[], uint8_t size)
...
@@ -146,8 +159,7 @@ void kZclClusterPermitReportTableInit(BindObjSt clusterBindList[], uint8_t size)
bool
kZclClusterGetPermitReportInfo
(
uint8_t
endpoint
,
EmberAfClusterId
cluster
,
ZclReportTableSt
*
zclReportPermit
);
bool
kZclClusterGetPermitReportInfo
(
uint8_t
endpoint
,
EmberAfClusterId
cluster
,
ZclReportTableSt
*
zclReportPermit
);
bool
kZclClusterSetPermitReportInfo
(
uint8_t
endpoint
,
EmberAfClusterId
cluster
,
bool
reportEnable
,
bool
sceneRecallFlg
bool
kZclClusterSetPermitReportInfo
(
uint8_t
endpoint
,
EmberAfClusterId
cluster
,
bool
reportEnable
,
bool
sceneRecallFlg
,
bool
reportGatewayEnable
,
bool
reportChildDeviceEnable
,
uint8_t
*
maskEui64Addr
,
uint8_t
dest_endpoint
);
,
bool
reportGatewayEnable
,
bool
reportChildDeviceEnable
);
#if 0
#if 0
/* DESP: Send different data separately according to whether or not to bind multiple controllers
/* DESP: Send different data separately according to whether or not to bind multiple controllers
* Auth: maozj.20200511.
* Auth: maozj.20200511.
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/general/ikk-opt-tunnel.c
View file @
2d0a05ab
...
@@ -25,6 +25,7 @@ uint8_t g_tmp_buffer[OPTTUNNEL_CHUNK_MAXLEN+1] = { 0 }, g_tmp_length = 0;
...
@@ -25,6 +25,7 @@ uint8_t g_tmp_buffer[OPTTUNNEL_CHUNK_MAXLEN+1] = { 0 }, g_tmp_length = 0;
EmberEventControl
kOptTunnelMtoRRDelayRspEventControl
;
EmberEventControl
kOptTunnelMtoRRDelayRspEventControl
;
static
uint8_t
ucReceived_Many_To_One_Cmd
=
0
;
EmberAfStatus
emAfReadOrWriteAttribute
(
EmberAfAttributeSearchRecord
*
attRecord
,
EmberAfStatus
emAfReadOrWriteAttribute
(
EmberAfAttributeSearchRecord
*
attRecord
,
EmberAfAttributeMetadata
**
metadata
,
EmberAfAttributeMetadata
**
metadata
,
uint8_t
*
buffer
,
uint8_t
*
buffer
,
...
@@ -358,7 +359,11 @@ void kOptTunnelMtoRRDelayRspEventHandler(void )
...
@@ -358,7 +359,11 @@ void kOptTunnelMtoRRDelayRspEventHandler(void )
emberEventControlSetInactive
(
kOptTunnelMtoRRDelayRspEventControl
);
emberEventControlSetInactive
(
kOptTunnelMtoRRDelayRspEventControl
);
iKonkeAfSelfPrint
(
"####### MtoO report time(%llu)
\r\n
"
,
halCommonGetInt64uMillisecondTick
());
iKonkeAfSelfPrint
(
"####### MtoO report time(%llu)
\r\n
"
,
halCommonGetInt64uMillisecondTick
());
//Prevent interference when reading CMEI Or ISN Or installation code, resulting in error report
//Prevent interference when reading CMEI Or ISN Or installation code, resulting in error report
kOptTunnelCommonReport
(
ECA_OPTDATA
);
if
(
ucReceived_Many_To_One_Cmd
==
1
)
{
ucReceived_Many_To_One_Cmd
=
0
;
kOptTunnelCommonReport
(
ECA_OPTDATA
);
}
emberEventControlSetInactive
(
kOptTunnelMtoRRDelayRspEventControl
);
emberEventControlSetInactive
(
kOptTunnelMtoRRDelayRspEventControl
);
}
}
...
@@ -372,6 +377,7 @@ void kOptTunnelMessageResponse(OptMethodEm method, uint16_t attribute_id, EmberA
...
@@ -372,6 +377,7 @@ void kOptTunnelMessageResponse(OptMethodEm method, uint16_t attribute_id, EmberA
// command ack.
// command ack.
iKonkeAfSelfPrint
(
"kOptTunnelMessageResponse ->>1 method(%d), attr(%2x), status(%d) length(%d) rspLenth(%d)
\r\n
"
,
\
iKonkeAfSelfPrint
(
"kOptTunnelMessageResponse ->>1 method(%d), attr(%2x), status(%d) length(%d) rspLenth(%d)
\r\n
"
,
\
method
,
attribute_id
,
status
,
length
,
appResponseLength
);
method
,
attribute_id
,
status
,
length
,
appResponseLength
);
if
(
method
==
EOM_READ
)
{
if
(
method
==
EOM_READ
)
{
emberAfPutInt8uInResp
(
ZCL_READ_ATTRIBUTES_RESPONSE_COMMAND_ID
);
emberAfPutInt8uInResp
(
ZCL_READ_ATTRIBUTES_RESPONSE_COMMAND_ID
);
}
else
{
}
else
{
...
@@ -466,6 +472,7 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method, uint16_t attribute_id, ui
...
@@ -466,6 +472,7 @@ kk_err_t kOptTunnelMessageIncoming(OptMethodEm method, uint16_t attribute_id, ui
//kOptTunnelAttrChunkLocalWrite(attribute_id, (uint8_t *)&rand_value, sizeof(uint16_t));
//kOptTunnelAttrChunkLocalWrite(attribute_id, (uint8_t *)&rand_value, sizeof(uint16_t));
emberEventControlSetDelayMS
(
kOptTunnelMtoRRDelayRspEventControl
,
rand_value
);
emberEventControlSetDelayMS
(
kOptTunnelMtoRRDelayRspEventControl
,
rand_value
);
ucReceived_Many_To_One_Cmd
=
1
;
iKonkeAfSelfPrint
(
"$$$$$$$$$$$$$ RSP-RANDOM: pay(%d, %d), %d
\r\n
"
,
payload
[
0
],
payload
[
1
],
rand_value
);
iKonkeAfSelfPrint
(
"$$$$$$$$$$$$$ RSP-RANDOM: pay(%d, %d), %d
\r\n
"
,
payload
[
0
],
payload
[
1
],
rand_value
);
break
;
break
;
}
}
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/ikk-user.c
View file @
2d0a05ab
...
@@ -7,7 +7,6 @@ Release Notes:
...
@@ -7,7 +7,6 @@ Release Notes:
SV1.0 20200927
SV1.0 20200927
1.初始版本
1.初始版本
* ******/
* ******/
#define HEART_DEBUG false
#define HEART_DEBUG false
...
@@ -20,7 +19,6 @@ uint8_t runStatus = RUN_STATUS_NORMAL ;
...
@@ -20,7 +19,6 @@ uint8_t runStatus = RUN_STATUS_NORMAL ;
static
uint8_t
g_u8MessageSeqRecord
=
0XFF
;
static
uint8_t
g_u8MessageSeqRecord
=
0XFF
;
//delay to report cmei and isn after network joined
//delay to report cmei and isn after network joined
#define DELAY_REPORT_DATA_AFTER_NWK_JOINED_MS (3 * 1000)
#define DELAY_REPORT_DATA_AFTER_NWK_JOINED_MS (3 * 1000)
...
@@ -75,6 +73,7 @@ static uint8_t g_u8MessageSeqRecord = 0XFF;
...
@@ -75,6 +73,7 @@ static uint8_t g_u8MessageSeqRecord = 0XFF;
typedef
enum
{
SCENES1
=
0xF1
,
SCENES2
=
0xF2
,
SCENES3
=
0xF3
,
SCENES4
=
0xF4
}
SCENES_STATUS
;
//modify by zbw@200511
typedef
enum
{
SCENES1
=
0xF1
,
SCENES2
=
0xF2
,
SCENES3
=
0xF3
,
SCENES4
=
0xF4
}
SCENES_STATUS
;
//modify by zbw@200511
typedef
enum
{
KEY_SYS_ID
=
1
,
KEY1_ID
,
KEY2_ID
,
KEY3_ID
,
KEY4_ID
,
KEY5_ID
,
KEY6_ID
}
KEY_ID_ENUM
;
typedef
enum
{
KEY_SYS_ID
=
1
,
KEY1_ID
,
KEY2_ID
,
KEY3_ID
,
KEY4_ID
,
KEY5_ID
,
KEY6_ID
}
KEY_ID_ENUM
;
typedef
enum
{
LED_SYS_ID
=
1
,
LED1_ID
,
LED2_ID
,
LED3_ID
,
LED4_ID
,
LED5_ID
,
LED6_ID
}
LED_ID_ENUM
;
typedef
enum
{
LED_SYS_ID
=
1
,
LED1_ID
,
LED2_ID
,
LED3_ID
,
LED4_ID
,
LED5_ID
,
LED6_ID
}
LED_ID_ENUM
;
typedef
enum
{
RELAY_CHANNEL1_ID
=
1
,
RELAY_CHANNEL2_ID
,
RELAY_CHANNEL3_ID
,
RELAY_CHANNEL4_ID
}
RELAY_ID_ENUM
;
typedef
enum
{
RELAY_CHANNEL1_ID
=
1
,
RELAY_CHANNEL2_ID
,
RELAY_CHANNEL3_ID
,
RELAY_CHANNEL4_ID
}
RELAY_ID_ENUM
;
...
@@ -134,8 +133,9 @@ SensorStatusSt g_stSensorStatusBuffer = {
...
@@ -134,8 +133,9 @@ SensorStatusSt g_stSensorStatusBuffer = {
.
status
=
0x0
,
.
status
=
0x0
,
};
};
extern
uint8_t
generatedDefaults
[];
extern
uint8_t
generatedDefaults
[];
#define Software_Version 0x
14
#define Software_Version 0x
20
#define Hardware_Version 0x10
#define Hardware_Version 0x10
#define MODEID_AIR_MEIDI 0x03008611 //美的线控器
#define MODEID_AIR_MEIDI 0x03008611 //美的线控器
...
@@ -538,7 +538,7 @@ void kUserScheduleTaskHandlerCallback(uint8_t schedule_id )
...
@@ -538,7 +538,7 @@ void kUserScheduleTaskHandlerCallback(uint8_t schedule_id )
kOptTunnelCommonReport
(
ECA_OPTDATA
);
kOptTunnelCommonReport
(
ECA_OPTDATA
);
}
}
else
if
(
!
kIsKonkeRemoteGateway
())
{
else
if
(
!
kIsKonkeRemoteGateway
())
{
kZclClusterSetPermitReportInfo
(
1
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
//add by maozj 20200512 report on off status
//add by maozj 20200512 report on off status
if
(
g_bIsNotKonkeGatewayFirstReportedFlg
\
if
(
g_bIsNotKonkeGatewayFirstReportedFlg
\
...
@@ -594,33 +594,36 @@ EmberAfStatus emberAfPreAttributeChangeCallback(int8u endpoint,
...
@@ -594,33 +594,36 @@ EmberAfStatus emberAfPreAttributeChangeCallback(int8u endpoint,
int8u
size
,
int8u
size
,
int8u
*
value
)
int8u
*
value
)
{
{
if
(
Recall_scence_flag
==
0
)
return
EMBER_ZCL_STATUS_SUCCESS
;
switch
(
clusterId
)
switch
(
clusterId
)
{
{
case
ZCL_ON_OFF_CLUSTER_ID
:
case
ZCL_ON_OFF_CLUSTER_ID
:
{
{
if
(
Recall_scence_flag
==
0
)
return
EMBER_ZCL_STATUS_SUCCESS
;
uint8_t
on_off
=
value
[
0
];
uint8_t
on_off
=
value
[
0
];
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
true
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
true
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
if
(
((
endpoint
==
1
)
&&
(
sDevice_attr_last
.
air_condition
.
on_off
!=
on_off
))
if
(
((
endpoint
==
1
)
&&
(
sDevice_attr_last
.
air_condition
.
on_off
!=
on_off
))
||
(
(
endpoint
==
2
)
&&
(
sDevice_attr_last
.
floor_heating
.
on_off
!=
on_off
))
||
(
(
endpoint
==
2
)
&&
(
sDevice_attr_last
.
floor_heating
.
on_off
!=
on_off
))
||
((
endpoint
==
3
)
&&
(
sDevice_attr_last
.
fan
.
on_off
!=
on_off
))
)
||
((
endpoint
==
3
)
&&
(
sDevice_attr_last
.
fan
.
on_off
!=
on_off
))
)
{
{
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
true
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_ON_OFF_CLUSTER_ID
,
false
,
true
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
on_off
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_ON_OFF
,
on_off
);
}
}
}
}
break
;
break
;
case
ZCL_THERMOSTAT_CLUSTER_ID
:
case
ZCL_THERMOSTAT_CLUSTER_ID
:
{
{
if
(
Recall_scence_flag
==
0
)
return
EMBER_ZCL_STATUS_SUCCESS
;
if
(
attributeId
==
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
)
if
(
attributeId
==
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
)
{
{
uint8_t
system
=
value
[
0
];
uint8_t
system
=
value
[
0
];
if
(
((
system
!=
sDevice_attr_last
.
air_condition
.
system_type
)
&&
(
g_sDevice_Info
.
Device_Type
==
Device_Type_Air_Condition
))
||
if
(
((
system
!=
sDevice_attr_last
.
air_condition
.
system_type
)
&&
(
g_sDevice_Info
.
Device_Type
==
Device_Type_Air_Condition
))
||
((
system
!=
sDevice_attr_last
.
floor_heating
.
system_type
)
&&
(
g_sDevice_Info
.
Device_Type
==
Device_Type_Floor_Heating
))
)
((
system
!=
sDevice_attr_last
.
floor_heating
.
system_type
)
&&
(
g_sDevice_Info
.
Device_Type
==
Device_Type_Floor_Heating
))
)
{
{
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
false
,
true
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
false
,
true
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_SYSTEM
,
system
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_SYSTEM
,
system
);
}
}
}
}
...
@@ -633,17 +636,34 @@ EmberAfStatus emberAfPreAttributeChangeCallback(int8u endpoint,
...
@@ -633,17 +636,34 @@ EmberAfStatus emberAfPreAttributeChangeCallback(int8u endpoint,
if
(
((
Target_Temper
!=
sDevice_attr_last
.
air_condition
.
set_temperature
)
&&
(
g_sDevice_Info
.
Device_Type
==
Device_Type_Air_Condition
))
||
if
(
((
Target_Temper
!=
sDevice_attr_last
.
air_condition
.
set_temperature
)
&&
(
g_sDevice_Info
.
Device_Type
==
Device_Type_Air_Condition
))
||
((
Target_Temper
!=
sDevice_attr_last
.
floor_heating
.
set_temperature
)
&&
(
g_sDevice_Info
.
Device_Type
==
Device_Type_Floor_Heating
))
)
((
Target_Temper
!=
sDevice_attr_last
.
floor_heating
.
set_temperature
)
&&
(
g_sDevice_Info
.
Device_Type
==
Device_Type_Floor_Heating
))
)
{
{
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
false
,
true
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_THERMOSTAT_CLUSTER_ID
,
false
,
true
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_TARGET_TEMPER
,
Target_Temper
);
Control_MCU
(
&
g_sMsgNode
,
endpoint
,
CMD_TARGET_TEMPER
,
Target_Temper
);
}
}
}
}
}
}
}
}
break
;
break
;
case
ZCL_OPT_TUNNEL_CLUSTER_ID
:
{
ZclReportControlInfoSt
Report_info
;
iKonkeAfSelfPrint
(
"####emberAfPreAttributeChangeCallback ,attribute id= 0x%2x
\r\n
"
,
attributeId
);
if
(
IS_Resend_Report_Data
(
attributeId
,
&
Report_info
))
{
//如果是回传的reprot,只响应,不再发起多控
iKonkeAfSelfPrint
(
"####Reset Mode,111111111111111111111
\r\n
"
);
if
(
(
attributeId
==
FCC0_ATTR_Child_Lock
)
||
(
attributeId
==
FCC0_ATTR_Delay_Off
)
||
(
attributeId
==
FCC0_ATTR_Screen_Saver_Time
)
||
(
attributeId
==
FCC0_ATTR_Filter_Clean_Time
)
||
((
endpoint
==
3
)
&&
(
attributeId
==
FCC0_ATTR_System_Mode
)))
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
,
Report_info
.
maskEui64Addr
,
Report_info
.
dest_endpoint
);
else
kZclClusterSetPermitReportInfo
(
endpoint
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
break
;
}
default:
default:
break
;
break
;
}
}
iKonkeAfSelfPrint
(
"####emberAfPostAttributeChangeCallback ep = %d,cluster =%2x,attr = %2x
\r\n
"
,
endpoint
,
clusterId
,
attributeId
);
//
iKonkeAfSelfPrint("####emberAfPostAttributeChangeCallback ep = %d,cluster =%2x,attr = %2x\r\n",endpoint,clusterId,attributeId);
emberEventControlSetDelayMS
(
kDelayClearFlagEventControl
,
700
);
emberEventControlSetDelayMS
(
kDelayClearFlagEventControl
,
700
);
return
EMBER_ZCL_STATUS_SUCCESS
;
return
EMBER_ZCL_STATUS_SUCCESS
;
...
@@ -660,7 +680,7 @@ void kDelayClearFlagEventHandler(void)
...
@@ -660,7 +680,7 @@ void kDelayClearFlagEventHandler(void)
void
kZclClusterRecallSceneCallback
(
uint8_t
endpoint
,
uint16_t
cluster
,
uint8_t
command_id
void
kZclClusterRecallSceneCallback
(
uint8_t
endpoint
,
uint16_t
cluster
,
uint8_t
command_id
,
bool
reportEnable
,
bool
sceneRecallFlg
,
bool
reportGatewayEnable
,
bool
reportChildDeviceEnable
,
void
*
param
)
,
bool
reportEnable
,
bool
sceneRecallFlg
,
bool
reportGatewayEnable
,
bool
reportChildDeviceEnable
,
void
*
param
)
{
{
kZclClusterSetPermitReportInfo
(
endpoint
,
cluster
,
reportEnable
,
sceneRecallFlg
,
reportGatewayEnable
,
reportChildDeviceEnable
);
kZclClusterSetPermitReportInfo
(
endpoint
,
cluster
,
reportEnable
,
sceneRecallFlg
,
reportGatewayEnable
,
reportChildDeviceEnable
,
invalidMaskEui64
,
RESET_ENDPOINT
);
iKonkeAfSelfPrint
(
"####kZclClusterRecallSceneCallback
\r\n
"
);
iKonkeAfSelfPrint
(
"####kZclClusterRecallSceneCallback
\r\n
"
);
if
(
cluster
==
ZCL_SCENES_CLUSTER_ID
)
if
(
cluster
==
ZCL_SCENES_CLUSTER_ID
)
{
{
...
@@ -684,7 +704,7 @@ bool kZclClusterReportChangeCallback(uint8_t endpoint, EmberAfClusterId clusterI
...
@@ -684,7 +704,7 @@ bool kZclClusterReportChangeCallback(uint8_t endpoint, EmberAfClusterId clusterI
if
(
*
difference
==
0
)
if
(
*
difference
==
0
)
{
{
//上报数据,恢复正常状态
//上报数据,恢复正常状态
kZclClusterSetPermitReportInfo
(
endpoint
,
clusterId
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint
,
clusterId
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
iKonkeAfSelfPrint
(
"######kZclClusterReportChangeCallback attribute is not changed
\r\n
"
);
iKonkeAfSelfPrint
(
"######kZclClusterReportChangeCallback attribute is not changed
\r\n
"
);
return
false
;
return
false
;
}
}
...
@@ -735,7 +755,7 @@ bool kZclClusterReportChangeCallback(uint8_t endpoint, EmberAfClusterId clusterI
...
@@ -735,7 +755,7 @@ bool kZclClusterReportChangeCallback(uint8_t endpoint, EmberAfClusterId clusterI
// //kOptTunnelReportingPlagiarizeOriginal(endpoint, clusterId, attributeId, CLUSTER_MASK_SERVER);
// //kOptTunnelReportingPlagiarizeOriginal(endpoint, clusterId, attributeId, CLUSTER_MASK_SERVER);
// return false;
// return false;
// }
// }
//kZclClusterSetPermitReportInfo(endpoint, clusterId, true, false, true, false);
//kZclClusterSetPermitReportInfo(endpoint, clusterId, true, false, true, false
, invalidMaskEui64, RESET_ENDPOINT
);
return
true
;
return
true
;
}
}
}
}
...
@@ -747,13 +767,13 @@ void kOnOffDelayReportAttrEventHandler(void)
...
@@ -747,13 +767,13 @@ void kOnOffDelayReportAttrEventHandler(void)
{
{
iKonkeAfSelfPrint
(
"##############kOnOffDelayReportAttrEventHandler
\r\n
"
);
iKonkeAfSelfPrint
(
"##############kOnOffDelayReportAttrEventHandler
\r\n
"
);
emberEventControlSetInactive
(
kOnOffDelayReportAttrEventControl
);
emberEventControlSetInactive
(
kOnOffDelayReportAttrEventControl
);
kZclClusterSetPermitReportInfo
(
g_sDevice_Info
.
Device_Type
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
g_sDevice_Info
.
Device_Type
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kOptTunnelReportingPlagiarizeOriginal
(
g_sDevice_Info
.
Device_Type
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
);
kOptTunnelReportingPlagiarizeOriginal
(
g_sDevice_Info
.
Device_Type
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
);
}
}
void
kSystemModeDelayReportAttrEventHandler
(
void
)
void
kSystemModeDelayReportAttrEventHandler
(
void
)
{
{
emberEventControlSetInactive
(
kSystemModeDelayReportAttrEventControl
);
emberEventControlSetInactive
(
kSystemModeDelayReportAttrEventControl
);
kZclClusterSetPermitReportInfo
(
g_sDevice_Info
.
Device_Type
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
g_sDevice_Info
.
Device_Type
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kOptTunnelReportingPlagiarizeOriginal
(
g_sDevice_Info
.
Device_Type
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
);
kOptTunnelReportingPlagiarizeOriginal
(
g_sDevice_Info
.
Device_Type
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
);
}
}
...
@@ -761,14 +781,14 @@ void kTargetTemperDelayReportAttrEventHandler(void)
...
@@ -761,14 +781,14 @@ void kTargetTemperDelayReportAttrEventHandler(void)
{
{
iKonkeAfSelfPrint
(
"##############kTargetTemperDelayReportAttrEventHandler
\r\n
"
);
iKonkeAfSelfPrint
(
"##############kTargetTemperDelayReportAttrEventHandler
\r\n
"
);
emberEventControlSetInactive
(
kTargetTemperDelayReportAttrEventControl
);
emberEventControlSetInactive
(
kTargetTemperDelayReportAttrEventControl
);
kZclClusterSetPermitReportInfo
(
g_sDevice_Info
.
Device_Type
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
g_sDevice_Info
.
Device_Type
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kOptTunnelReportingPlagiarizeOriginal
(
g_sDevice_Info
.
Device_Type
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
);
kOptTunnelReportingPlagiarizeOriginal
(
g_sDevice_Info
.
Device_Type
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
);
}
}
void
kEndpoint4DelayReportAttrEventHandler
(
void
)
void
kEndpoint4DelayReportAttrEventHandler
(
void
)
{
{
emberEventControlSetInactive
(
kEndpoint4DelayReportAttrEventControl
);
emberEventControlSetInactive
(
kEndpoint4DelayReportAttrEventControl
);
kZclClusterSetPermitReportInfo
(
4
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
4
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
uint8_t
newValue
=
1
;
uint8_t
newValue
=
1
;
emberAfWriteAttribute
(
4
,
emberAfWriteAttribute
(
4
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_CLUSTER_ID
,
...
@@ -961,6 +981,16 @@ void UartMsgProcessHandle(UMsgNodeSt *pMsgNode )
...
@@ -961,6 +981,16 @@ void UartMsgProcessHandle(UMsgNodeSt *pMsgNode )
* PARAM[pframe][in/out] input command frame content, output command process result ack content.
* PARAM[pframe][in/out] input command frame content, output command process result ack content.
* Auth: dingmz_frc.20190701.
* Auth: dingmz_frc.20190701.
* */
* */
void
Get_MCU_Status_Immediately
(
UMsgNodeSt
*
uMsgNode
,
uint8_t
channel_id
,
uint16_t
opcode
)
{
DATA_FIELDED
sData_Field
=
{
0
};
uint8_t
data
=
0
;
sData_Field
.
ucData_Field_Len
=
4
;
sData_Field
.
ucChannel_ID
=
channel_id
;
sData_Field
.
uiOpcode
=
Swap_16U_Data
(
opcode
);
memcpy
(
sData_Field
.
uiPaload
,
&
data
,
1
);
uart_send_data
(
uMsgNode
,
0x30
,
0xff
,
&
sData_Field
,
true
);
}
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
)
{
{
extern
DEVICVE_INFO_ST
g_sDevice_Info
;
extern
DEVICVE_INFO_ST
g_sDevice_Info
;
...
@@ -973,13 +1003,29 @@ kk_err_t kUserOODMessageIncoming(uint8_t channel, uint8_t opcode, uint8_t args_i
...
@@ -973,13 +1003,29 @@ kk_err_t kUserOODMessageIncoming(uint8_t channel, uint8_t opcode, uint8_t args_i
iKonkeAfSelfPrint
(
"%X "
,
args_in_out
[
index
]);
iKonkeAfSelfPrint
(
"%X "
,
args_in_out
[
index
]);
}
}
iKonkeAfSelfPrint
(
"--------------------------------------
\r\n
"
);
//test
iKonkeAfSelfPrint
(
"--------------------------------------
\r\n
"
);
//test
if
(
opcode
==
0
)
if
(
(
g_sDevice_Info
.
mcu_software_version
==
0xff
))
//|| //未读取到版本,重新请求一次
// ((g_sDevice_Info.Device_Type == Device_Type_Air_Condition)&&(g_sDevice_Info.Device_subType == 0)&&
// (sDevice_attr_last.air_condition.air_brand == 0xff) ) ) //未读到空调品牌
{
{
Query_MCU_Info
();
//读取MCU的状态信息
Rewite_Attr_Witchout_Report
();
Get_MCU_Status_Immediately
(
&
g_sMsgNode
,
g_sDevice_Info
.
Device_Type
,
OPCODE_GENERAL_MCU_DATA_QUERY
);
iKonkeAfSelfPrint
(
"
\r\n
-- MSG Receive[%d]:
\r\n
"
,
g_sMsgNode
.
ack_length
);
iKonkeAfSelfPrintBuffer
(
g_sMsgNode
.
buffer
,
g_sMsgNode
.
ack_length
,
true
);
iKonkeAfSelfPrint
(
"
\r\n
-----------------
\r\n
"
);
//同步mcu属性
if
(
(
g_sDevice_Info
.
mcu_software_version
==
0xff
))
{
g_sDevice_Info
.
mcu_software_version
=
g_sMsgNode
.
buffer
[
10
];
g_sDevice_Info
.
mcu_hardware_version
=
g_sMsgNode
.
buffer
[
11
];
g_sDevice_Info
.
Device_Type
=
g_sMsgNode
.
buffer
[
12
];
g_sDevice_Info
.
Device_subType
=
g_sMsgNode
.
buffer
[
13
];
}
if
(
g_sDevice_Info
.
Device_Type
==
1
)
AirAttributeChangedReceiveReport
(
g_sDevice_Info
.
Device_Type
,(
AIR_ATTR_ST
*
)
&
g_sMsgNode
.
buffer
[
14
]);
else
if
(
g_sDevice_Info
.
Device_Type
==
2
)
FloorHeatingAttributeChangedReceiveReport
(
g_sDevice_Info
.
Device_Type
,(
FLOOR_HEATING_ATTR
*
)
&
g_sMsgNode
.
buffer
[
14
]);
else
if
(
g_sDevice_Info
.
Device_Type
==
3
)
FanAttributeChangedReceiveReport
(
g_sDevice_Info
.
Device_Type
,(
FAN_ATTR_ST
*
)
&
g_sMsgNode
.
buffer
[
14
]);
}
}
switch
(
opcode
)
{
switch
(
opcode
)
{
case
(
0x00
):
// get the device snap.
case
(
0x00
):
// get the device snap.
...
@@ -1007,6 +1053,7 @@ kk_err_t kUserOODMessageIncoming(uint8_t channel, uint8_t opcode, uint8_t args_i
...
@@ -1007,6 +1053,7 @@ kk_err_t kUserOODMessageIncoming(uint8_t channel, uint8_t opcode, uint8_t args_i
//空调线控器
//空调线控器
args_in_out
[
i
++
]
=
sDevice_attr_last
.
air_condition
.
air_brand
;
args_in_out
[
i
++
]
=
sDevice_attr_last
.
air_condition
.
air_brand
;
args_in_out
[
i
++
]
=
sDevice_attr_last
.
air_condition
.
air_type
;
args_in_out
[
i
++
]
=
sDevice_attr_last
.
air_condition
.
air_type
;
args_in_out
[
i
++
]
=
sDevice_attr_last
.
air_condition
.
operate_mode
;
args_in_out
[
i
++
]
=
sDevice_attr_last
.
floor_heating
.
error
;
args_in_out
[
i
++
]
=
sDevice_attr_last
.
floor_heating
.
error
;
args_in_out
[
i
++
]
=
sDevice_attr_last
.
floor_heating
.
on_off
;
args_in_out
[
i
++
]
=
sDevice_attr_last
.
floor_heating
.
on_off
;
...
@@ -1062,7 +1109,7 @@ kk_err_t kUserOODMessageIncoming(uint8_t channel, uint8_t opcode, uint8_t args_i
...
@@ -1062,7 +1109,7 @@ kk_err_t kUserOODMessageIncoming(uint8_t channel, uint8_t opcode, uint8_t args_i
if
(
mode
!=
0x00
&&
mode
!=
0x01
){
if
(
mode
!=
0x00
&&
mode
!=
0x01
){
args_in_out
[
0
]
=
ERR_NO_COMMAND_FORMAT
;
args_in_out
[
0
]
=
ERR_NO_COMMAND_FORMAT
;
}
else
{
}
else
{
kSetIndicatorNotDisturbModeFlg
(
mode
);
//
kSetIndicatorNotDisturbModeFlg(mode);
if
(
channel
==
0
)
if
(
channel
==
0
)
Set_No_Disturb_Mode
(
g_sDevice_Info
.
Device_Type
,
mode
);
Set_No_Disturb_Mode
(
g_sDevice_Info
.
Device_Type
,
mode
);
else
else
...
@@ -1156,12 +1203,12 @@ void kkSystemSetUpEventHandler(void )
...
@@ -1156,12 +1203,12 @@ void kkSystemSetUpEventHandler(void )
kSystemSetupStatusSet
(
SETUP_STATUS_EXIT
,
1500
);
kSystemSetupStatusSet
(
SETUP_STATUS_EXIT
,
1500
);
break
;
break
;
case
SETUP_STATUS_EXIT
:
case
SETUP_STATUS_EXIT
:
kZclClusterSetPermitReportInfo
(
1
,
ZCL_DIAGNOSTICS_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_DIAGNOSTICS_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_POWER_CONFIG_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_POWER_CONFIG_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
true
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
g_u8SystemSetupStatus
=
SETUP_STATUS_INIT
;
g_u8SystemSetupStatus
=
SETUP_STATUS_INIT
;
break
;
break
;
...
@@ -1306,7 +1353,7 @@ static void kClearBatteryVoltageAndPercentage(void)
...
@@ -1306,7 +1353,7 @@ static void kClearBatteryVoltageAndPercentage(void)
{
{
#if 1
#if 1
uint8_t
value
=
0
;
uint8_t
value
=
0
;
kZclClusterSetPermitReportInfo
(
1
,
ZCL_POWER_CONFIG_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
1
,
ZCL_POWER_CONFIG_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteServerAttribute
(
1
,
ZCL_POWER_CONFIG_CLUSTER_ID
,
ZCL_BATTERY_VOLTAGE_ATTRIBUTE_ID
,
&
value
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
emberAfWriteServerAttribute
(
1
,
ZCL_POWER_CONFIG_CLUSTER_ID
,
ZCL_BATTERY_VOLTAGE_ATTRIBUTE_ID
,
&
value
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
emberAfWriteServerAttribute
(
1
,
ZCL_POWER_CONFIG_CLUSTER_ID
,
ZCL_BATTERY_PERCENTAGE_REMAINING_ATTRIBUTE_ID
,
&
value
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
emberAfWriteServerAttribute
(
1
,
ZCL_POWER_CONFIG_CLUSTER_ID
,
ZCL_BATTERY_PERCENTAGE_REMAINING_ATTRIBUTE_ID
,
&
value
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
#endif
#endif
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/uart_handler.c
View file @
2d0a05ab
...
@@ -43,12 +43,12 @@ static void First_Synic_air_Attribute_Data(AIR_ATTR_ST *data,uint8_t channel_id)
...
@@ -43,12 +43,12 @@ static void First_Synic_air_Attribute_Data(AIR_ATTR_ST *data,uint8_t channel_id)
{
{
//开关
//开关
if
(
channel_id
==
1
){
if
(
channel_id
==
1
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
data
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_ON_OFF
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_ON_OFF
,
CLUSTER_MASK_SERVER
,
&
data
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
...
@@ -63,12 +63,12 @@ static void First_Synic_air_Attribute_Data(AIR_ATTR_ST *data,uint8_t channel_id)
...
@@ -63,12 +63,12 @@ static void First_Synic_air_Attribute_Data(AIR_ATTR_ST *data,uint8_t channel_id)
real_temper
=
65536
-
temp
;
real_temper
=
65536
-
temp
;
}
}
if
(
channel_id
==
1
){
if
(
channel_id
==
1
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Current_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Current_Temperature
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
}
...
@@ -77,137 +77,142 @@ static void First_Synic_air_Attribute_Data(AIR_ATTR_ST *data,uint8_t channel_id)
...
@@ -77,137 +77,142 @@ static void First_Synic_air_Attribute_Data(AIR_ATTR_ST *data,uint8_t channel_id)
set_temper
=
(
data
->
set_temperature
)
*
10
;
set_temper
=
(
data
->
set_temperature
)
*
10
;
if
(
channel_id
==
1
){
if
(
channel_id
==
1
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Target_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Target_Temperature
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
}
//模式
//模式
if
(
channel_id
==
1
){
if
(
channel_id
==
1
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
data
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
CLUSTER_MASK_SERVER
,
&
data
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
//风速
//风速
if
(
channel_id
==
1
){
if
(
channel_id
==
1
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
data
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Fan_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Fan_Mode
,
CLUSTER_MASK_SERVER
,
&
data
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
//错误码
//错误码
if
(
channel_id
==
1
)
if
(
channel_id
==
1
)
{
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
CLUSTER_MASK_SERVER
,
&
data
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
CLUSTER_MASK_SERVER
,
&
data
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
//童锁
//童锁
if
(
channel_id
==
1
){
if
(
channel_id
==
1
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
EmberAfStatus
status
=
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
EmberAfStatus
status
=
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
CLUSTER_MASK_SERVER
,
&
data
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
CLUSTER_MASK_SERVER
,
&
data
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
//延时关机时间
//延时关机时间
if
(
channel_id
==
1
){
if
(
channel_id
==
1
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
CLUSTER_MASK_SERVER
,
&
data
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
CLUSTER_MASK_SERVER
,
&
data
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
//风向
//风向
if
(
channel_id
==
1
){
if
(
channel_id
==
1
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Swing_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Swing_Mode
,
CLUSTER_MASK_SERVER
,
&
data
->
air_wind_direct
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
air_wind_direct
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Swing_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Swing_Mode
,
CLUSTER_MASK_SERVER
,
&
data
->
air_wind_direct
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
air_wind_direct
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
//屏保时间
//屏保时间
if
(
channel_id
==
1
){
if
(
channel_id
==
1
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
data
->
screen_save_time
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
data
->
screen_save_time
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
data
->
screen_save_time
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
data
->
screen_save_time
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
//滤网清洗时间
//滤网清洗时间
if
(
channel_id
==
1
){
if
(
channel_id
==
1
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
data
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
data
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
data
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
data
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
}
}
//校准温度
//校准温度
if
(
channel_id
==
1
){
if
(
channel_id
==
1
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
CLUSTER_MASK_SERVER
,
&
data
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
CLUSTER_MASK_SERVER
,
&
data
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
}
}
//勿扰模式
//勿扰模式
if
(
channel_id
==
1
){
if
(
channel_id
==
1
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
CLUSTER_MASK_SERVER
,
&
data
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
CLUSTER_MASK_SERVER
,
&
data
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
data
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
//风机盘管运行模式
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Run_Mode
,
CLUSTER_MASK_SERVER
,
&
data
->
operate_mode
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
void
First_Synic_FloorHeatingAttribute_Data
(
FLOOR_HEATING_ATTR
*
device_attr
,
uint8_t
channel_id
)
void
First_Synic_FloorHeatingAttribute_Data
(
FLOOR_HEATING_ATTR
*
device_attr
,
uint8_t
channel_id
)
{
{
if
(
channel_id
==
2
){
if
(
channel_id
==
2
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_ON_OFF
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_ON_OFF
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
...
@@ -222,103 +227,103 @@ void First_Synic_FloorHeatingAttribute_Data(FLOOR_HEATING_ATTR *device_attr,uint
...
@@ -222,103 +227,103 @@ void First_Synic_FloorHeatingAttribute_Data(FLOOR_HEATING_ATTR *device_attr,uint
real_temper
=
65536
-
temp
;
real_temper
=
65536
-
temp
;
}
}
if
(
channel_id
==
2
){
if
(
channel_id
==
2
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Current_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Current_Temperature
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
int16s
set_temper
=
device_attr
->
set_temperature
*
10
;
int16s
set_temper
=
device_attr
->
set_temperature
*
10
;
if
(
channel_id
==
2
){
if
(
channel_id
==
2
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Target_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Target_Temperature
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
2
){
if
(
channel_id
==
2
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
2
)
if
(
channel_id
==
2
)
{
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
2
){
if
(
channel_id
==
2
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
2
){
if
(
channel_id
==
2
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
uint8_t
screen_save
=
device_attr
->
screen_save_time
;
uint8_t
screen_save
=
device_attr
->
screen_save_time
;
if
(
channel_id
==
2
){
if
(
channel_id
==
2
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
2
){
if
(
channel_id
==
2
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_CALIBRATION_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_CALIBRATION_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
2
){
if
(
channel_id
==
2
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
...
@@ -326,12 +331,12 @@ void First_Synic_FloorHeatingAttribute_Data(FLOOR_HEATING_ATTR *device_attr,uint
...
@@ -326,12 +331,12 @@ void First_Synic_FloorHeatingAttribute_Data(FLOOR_HEATING_ATTR *device_attr,uint
void
First_Sync_FanAttribute_Data
(
uint8_t
channel_id
,
FAN_ATTR_ST
*
device_attr
)
void
First_Sync_FanAttribute_Data
(
uint8_t
channel_id
,
FAN_ATTR_ST
*
device_attr
)
{
{
if
(
channel_id
==
3
){
if
(
channel_id
==
3
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_ON_OFF
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_ON_OFF
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
...
@@ -346,113 +351,113 @@ void First_Sync_FanAttribute_Data(uint8_t channel_id , FAN_ATTR_ST *device_attr)
...
@@ -346,113 +351,113 @@ void First_Sync_FanAttribute_Data(uint8_t channel_id , FAN_ATTR_ST *device_attr)
real_temper
=
65536
-
temp
;
real_temper
=
65536
-
temp
;
}
}
if
(
channel_id
==
3
){
if
(
channel_id
==
3
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_TEMP_MEASUREMENT_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_TEMP_MEASUREMENT_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_TEMP_MEASUREMENT_CLUSTER_ID
,
ZCL_TEMP_MEASURED_VALUE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_TEMP_MEASUREMENT_CLUSTER_ID
,
ZCL_TEMP_MEASURED_VALUE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Current_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Current_Temperature
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
3
){
if
(
channel_id
==
3
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
3
){
if
(
channel_id
==
3
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Fan_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Fan_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
3
)
if
(
channel_id
==
3
)
{
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
3
){
if
(
channel_id
==
3
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
3
){
if
(
channel_id
==
3
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
}
uint8_t
screen_save
=
device_attr
->
screen_save_time
;
uint8_t
screen_save
=
device_attr
->
screen_save_time
;
if
(
channel_id
==
3
){
if
(
channel_id
==
3
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
3
){
if
(
channel_id
==
3
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
3
){
if
(
channel_id
==
3
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
}
}
if
(
channel_id
==
3
){
if
(
channel_id
==
3
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
else
{
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
}
...
@@ -475,23 +480,18 @@ void AirAttributeChangedReceiveReport(uint8_t channel_id , AIR_ATTR_ST *device_a
...
@@ -475,23 +480,18 @@ void AirAttributeChangedReceiveReport(uint8_t channel_id , AIR_ATTR_ST *device_a
if
(
sDevice_attr_last
.
air_condition
.
on_off
!=
device_attr
->
on_off
)
if
(
sDevice_attr_last
.
air_condition
.
on_off
!=
device_attr
->
on_off
)
{
{
iKonkeAfSelfPrint
(
"on-off current = %d,last = %d
\r\n
"
,
device_attr
->
on_off
,
sDevice_attr_last
.
air_condition
.
on_off
);
iKonkeAfSelfPrint
(
"on-off current = %d,last = %d
\r\n
"
,
device_attr
->
on_off
,
sDevice_attr_last
.
air_condition
.
on_off
);
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
))
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
true
,
false
,
false
);
else
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_ON_OFF
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
))
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
true
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
else
}
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_ON_OFF
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
sDevice_attr_last
.
air_condition
.
on_off
=
device_attr
->
on_off
;
sDevice_attr_last
.
air_condition
.
on_off
=
device_attr
->
on_off
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
real_temperature
!=
device_attr
->
real_temperature
)
if
(
sDevice_attr_last
.
air_condition
.
real_temperature
!=
device_attr
->
real_temperature
)
...
@@ -505,20 +505,16 @@ void AirAttributeChangedReceiveReport(uint8_t channel_id , AIR_ATTR_ST *device_a
...
@@ -505,20 +505,16 @@ void AirAttributeChangedReceiveReport(uint8_t channel_id , AIR_ATTR_ST *device_a
temp
=
temp
*
10
;
temp
=
temp
*
10
;
real_temper
=
65536
-
temp
;
real_temper
=
65536
-
temp
;
}
}
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
//不需要多控
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID
,
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID
,
}
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Current_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Current_Temperature
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
iKonkeAfSelfPrint
(
"real_temperature current = %d,last = %d
\r\n
"
,
iKonkeAfSelfPrint
(
"real_temperature current = %d,last = %d
\r\n
"
,
device_attr
->
real_temperature
,
sDevice_attr_last
.
air_condition
.
real_temperature
);
device_attr
->
real_temperature
,
sDevice_attr_last
.
air_condition
.
real_temperature
);
sDevice_attr_last
.
air_condition
.
real_temperature
=
device_attr
->
real_temperature
;
sDevice_attr_last
.
air_condition
.
real_temperature
=
device_attr
->
real_temperature
;
...
@@ -527,193 +523,138 @@ void AirAttributeChangedReceiveReport(uint8_t channel_id , AIR_ATTR_ST *device_a
...
@@ -527,193 +523,138 @@ void AirAttributeChangedReceiveReport(uint8_t channel_id , AIR_ATTR_ST *device_a
{
{
int16s
set_temper
=
0
;
int16s
set_temper
=
0
;
set_temper
=
(
device_attr
->
set_temperature
)
*
10
;
set_temper
=
(
device_attr
->
set_temperature
)
*
10
;
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
))
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
))
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
true
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
true
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
else
else
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Target_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Target_Temperature
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
iKonkeAfSelfPrint
(
"set_temperature current = %d,last = %d
\r\n
"
,
iKonkeAfSelfPrint
(
"set_temperature current = %d,last = %d
\r\n
"
,
device_attr
->
set_temperature
,
sDevice_attr_last
.
air_condition
.
set_temperature
);
device_attr
->
set_temperature
,
sDevice_attr_last
.
air_condition
.
set_temperature
);
sDevice_attr_last
.
air_condition
.
set_temperature
=
device_attr
->
set_temperature
;
sDevice_attr_last
.
air_condition
.
set_temperature
=
device_attr
->
set_temperature
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
system_type
!=
device_attr
->
system_type
)
if
(
sDevice_attr_last
.
air_condition
.
system_type
!=
device_attr
->
system_type
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
))
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
))
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
else
else
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
iKonkeAfSelfPrint
(
"system_type current = %d,last = %d
\r\n
"
,
iKonkeAfSelfPrint
(
"system_type current = %d,last = %d
\r\n
"
,
device_attr
->
system_type
,
sDevice_attr_last
.
air_condition
.
system_type
);
device_attr
->
system_type
,
sDevice_attr_last
.
air_condition
.
system_type
);
sDevice_attr_last
.
air_condition
.
system_type
=
device_attr
->
system_type
;
sDevice_attr_last
.
air_condition
.
system_type
=
device_attr
->
system_type
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
wind_speed
!=
device_attr
->
wind_speed
)
if
(
sDevice_attr_last
.
air_condition
.
wind_speed
!=
device_attr
->
wind_speed
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
else
{
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Fan_Mode
,
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Fan_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
iKonkeAfSelfPrint
(
"wind_speed current = %d,last = %d
\r\n
"
,
iKonkeAfSelfPrint
(
"wind_speed current = %d,last = %d
\r\n
"
,
device_attr
->
wind_speed
,
sDevice_attr_last
.
air_condition
.
wind_speed
);
device_attr
->
wind_speed
,
sDevice_attr_last
.
air_condition
.
wind_speed
);
sDevice_attr_last
.
air_condition
.
wind_speed
=
device_attr
->
wind_speed
;
sDevice_attr_last
.
air_condition
.
wind_speed
=
device_attr
->
wind_speed
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
error
!=
device_attr
->
error
)
if
(
sDevice_attr_last
.
air_condition
.
error
!=
device_attr
->
error
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
)
//不需要多控
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
air_condition
.
error
=
device_attr
->
error
;
sDevice_attr_last
.
air_condition
.
error
=
device_attr
->
error
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
lock_flage
!=
device_attr
->
lock_flage
)
if
(
sDevice_attr_last
.
air_condition
.
lock_flage
!=
device_attr
->
lock_flage
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
EmberAfStatus
status
=
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
iKonkeAfSelfPrint
(
"write result =0x%x
\r\n
"
,
status
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
air_condition
.
lock_flage
=
device_attr
->
lock_flage
;
sDevice_attr_last
.
air_condition
.
lock_flage
=
device_attr
->
lock_flage
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
power_off_time
!=
device_attr
->
power_off_time
)
if
(
sDevice_attr_last
.
air_condition
.
power_off_time
!=
device_attr
->
power_off_time
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
air_condition
.
power_off_time
=
device_attr
->
power_off_time
;
sDevice_attr_last
.
air_condition
.
power_off_time
=
device_attr
->
power_off_time
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
air_wind_direct
!=
device_attr
->
air_wind_direct
)
if
(
sDevice_attr_last
.
air_condition
.
air_wind_direct
!=
device_attr
->
air_wind_direct
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Swing_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Swing_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
air_wind_direct
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
air_wind_direct
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Swing_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
air_wind_direct
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
air_condition
.
air_wind_direct
=
device_attr
->
air_wind_direct
;
sDevice_attr_last
.
air_condition
.
air_wind_direct
=
device_attr
->
air_wind_direct
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
screen_save_time
!=
device_attr
->
screen_save_time
)
if
(
sDevice_attr_last
.
air_condition
.
screen_save_time
!=
device_attr
->
screen_save_time
)
{
{
uint8_t
screen_save
=
device_attr
->
screen_save_time
;
uint8_t
screen_save
=
device_attr
->
screen_save_time
;
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
air_condition
.
screen_save_time
=
device_attr
->
screen_save_time
;
sDevice_attr_last
.
air_condition
.
screen_save_time
=
device_attr
->
screen_save_time
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
filter_wash_time
!=
device_attr
->
filter_wash_time
)
if
(
sDevice_attr_last
.
air_condition
.
filter_wash_time
!=
device_attr
->
filter_wash_time
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
air_condition
.
filter_wash_time
=
device_attr
->
filter_wash_time
;
sDevice_attr_last
.
air_condition
.
filter_wash_time
=
device_attr
->
filter_wash_time
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
correct_temperature
!=
device_attr
->
correct_temperature
)
if
(
sDevice_attr_last
.
air_condition
.
correct_temperature
!=
device_attr
->
correct_temperature
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
//不需要多控
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_CALIBRATION_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_CALIBRATION_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
air_condition
.
correct_temperature
=
device_attr
->
correct_temperature
;
sDevice_attr_last
.
air_condition
.
correct_temperature
=
device_attr
->
correct_temperature
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
no_disturb_mode
!=
device_attr
->
no_disturb_mode
)
if
(
sDevice_attr_last
.
air_condition
.
no_disturb_mode
!=
device_attr
->
no_disturb_mode
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
//不需要多控
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
air_condition
.
no_disturb_mode
=
device_attr
->
no_disturb_mode
;
sDevice_attr_last
.
air_condition
.
no_disturb_mode
=
device_attr
->
no_disturb_mode
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
air_brand
!=
device_attr
->
air_brand
)
if
(
sDevice_attr_last
.
air_condition
.
air_brand
!=
device_attr
->
air_brand
)
{
{
sDevice_attr_last
.
air_condition
.
air_brand
=
device_attr
->
air_brand
;
sDevice_attr_last
.
air_condition
.
air_brand
=
device_attr
->
air_brand
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
no_disturb_mode
!=
device_attr
->
no_disturb_mod
e
)
if
(
sDevice_attr_last
.
air_condition
.
air_type
!=
device_attr
->
air_typ
e
)
{
{
sDevice_attr_last
.
air_condition
.
air_type
=
device_attr
->
air_type
;
sDevice_attr_last
.
air_condition
.
air_type
=
device_attr
->
air_type
;
}
}
if
(
sDevice_attr_last
.
air_condition
.
operate_mode
!=
device_attr
->
operate_mode
)
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Run_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
operate_mode
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
sDevice_attr_last
.
air_condition
.
operate_mode
=
device_attr
->
operate_mode
;
}
print_all_attr_vaule
(
channel_id
);
print_all_attr_vaule
(
channel_id
);
}
}
...
@@ -734,23 +675,17 @@ void FloorHeatingAttributeChangedReceiveReport(uint8_t channel_id , FLOOR_HEATIN
...
@@ -734,23 +675,17 @@ void FloorHeatingAttributeChangedReceiveReport(uint8_t channel_id , FLOOR_HEATIN
/**************************************Z3标准上报**************************************************/
/**************************************Z3标准上报**************************************************/
if
(
sDevice_attr_last
.
floor_heating
.
on_off
!=
device_attr
->
on_off
)
if
(
sDevice_attr_last
.
floor_heating
.
on_off
!=
device_attr
->
on_off
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
))
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
))
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
true
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
true
,
false
,
false
);
else
else
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_ON_OFF
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_ON_OFF
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
floor_heating
.
on_off
=
device_attr
->
on_off
;
sDevice_attr_last
.
floor_heating
.
on_off
=
device_attr
->
on_off
;
}
}
if
(
sDevice_attr_last
.
floor_heating
.
real_temperature
!=
device_attr
->
real_temperature
)
if
(
sDevice_attr_last
.
floor_heating
.
real_temperature
!=
device_attr
->
real_temperature
)
...
@@ -764,20 +699,15 @@ void FloorHeatingAttributeChangedReceiveReport(uint8_t channel_id , FLOOR_HEATIN
...
@@ -764,20 +699,15 @@ void FloorHeatingAttributeChangedReceiveReport(uint8_t channel_id , FLOOR_HEATIN
temp
=
temp
*
10
;
temp
=
temp
*
10
;
real_temper
=
65536
-
temp
;
real_temper
=
65536
-
temp
;
}
}
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
//不需要多控
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Current_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Current_Temperature
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
iKonkeAfSelfPrint
(
"real_temperature current = %d,last = %d
\r\n
"
,
iKonkeAfSelfPrint
(
"real_temperature current = %d,last = %d
\r\n
"
,
device_attr
->
real_temperature
,
sDevice_attr_last
.
floor_heating
.
real_temperature
);
device_attr
->
real_temperature
,
sDevice_attr_last
.
floor_heating
.
real_temperature
);
sDevice_attr_last
.
floor_heating
.
real_temperature
=
device_attr
->
real_temperature
;
sDevice_attr_last
.
floor_heating
.
real_temperature
=
device_attr
->
real_temperature
;
...
@@ -785,131 +715,86 @@ void FloorHeatingAttributeChangedReceiveReport(uint8_t channel_id , FLOOR_HEATIN
...
@@ -785,131 +715,86 @@ void FloorHeatingAttributeChangedReceiveReport(uint8_t channel_id , FLOOR_HEATIN
if
(
sDevice_attr_last
.
floor_heating
.
set_temperature
!=
device_attr
->
set_temperature
)
if
(
sDevice_attr_last
.
floor_heating
.
set_temperature
!=
device_attr
->
set_temperature
)
{
{
int16s
set_temper
=
device_attr
->
set_temperature
*
10
;
int16s
set_temper
=
device_attr
->
set_temperature
*
10
;
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
))
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
))
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
true
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
true
,
false
,
false
);
else
else
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
else
{
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Target_Temperature
,
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Target_Temperature
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
set_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
floor_heating
.
set_temperature
=
device_attr
->
set_temperature
;
sDevice_attr_last
.
floor_heating
.
set_temperature
=
device_attr
->
set_temperature
;
}
}
if
(
sDevice_attr_last
.
floor_heating
.
system_type
!=
device_attr
->
system_type
)
if
(
sDevice_attr_last
.
floor_heating
.
system_type
!=
device_attr
->
system_type
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
))
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
))
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
true
,
false
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
true
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
else
else
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_SYSTEM_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
floor_heating
.
system_type
=
device_attr
->
system_type
;
sDevice_attr_last
.
floor_heating
.
system_type
=
device_attr
->
system_type
;
}
}
if
(
sDevice_attr_last
.
floor_heating
.
error
!=
device_attr
->
error
)
if
(
sDevice_attr_last
.
floor_heating
.
error
!=
device_attr
->
error
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
)
//不需要多控
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
floor_heating
.
error
=
device_attr
->
error
;
sDevice_attr_last
.
floor_heating
.
error
=
device_attr
->
error
;
}
}
if
(
sDevice_attr_last
.
floor_heating
.
lock_flage
!=
device_attr
->
lock_flage
)
if
(
sDevice_attr_last
.
floor_heating
.
lock_flage
!=
device_attr
->
lock_flage
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
floor_heating
.
lock_flage
=
device_attr
->
lock_flage
;
sDevice_attr_last
.
floor_heating
.
lock_flage
=
device_attr
->
lock_flage
;
}
}
if
(
sDevice_attr_last
.
floor_heating
.
power_off_time
!=
device_attr
->
power_off_time
)
if
(
sDevice_attr_last
.
floor_heating
.
power_off_time
!=
device_attr
->
power_off_time
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
floor_heating
.
power_off_time
=
device_attr
->
power_off_time
;
sDevice_attr_last
.
floor_heating
.
power_off_time
=
device_attr
->
power_off_time
;
}
}
if
(
sDevice_attr_last
.
floor_heating
.
screen_save_time
!=
device_attr
->
screen_save_time
)
if
(
sDevice_attr_last
.
floor_heating
.
screen_save_time
!=
device_attr
->
screen_save_time
)
{
{
uint8_t
screen_save
=
device_attr
->
screen_save_time
;
uint8_t
screen_save
=
device_attr
->
screen_save_time
;
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
floor_heating
.
screen_save_time
=
device_attr
->
screen_save_time
;
sDevice_attr_last
.
floor_heating
.
screen_save_time
=
device_attr
->
screen_save_time
;
}
}
if
(
sDevice_attr_last
.
floor_heating
.
correct_temperature
!=
device_attr
->
correct_temperature
)
if
(
sDevice_attr_last
.
floor_heating
.
correct_temperature
!=
device_attr
->
correct_temperature
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
//不需要多控
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_CALIBRATION_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_THERMOSTAT_CLUSTER_ID
,
ZCL_LOCAL_TEMPERATURE_CALIBRATION_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
floor_heating
.
correct_temperature
=
device_attr
->
correct_temperature
;
sDevice_attr_last
.
floor_heating
.
correct_temperature
=
device_attr
->
correct_temperature
;
}
}
if
(
sDevice_attr_last
.
floor_heating
.
no_disturb_mode
!=
device_attr
->
no_disturb_mode
)
if
(
sDevice_attr_last
.
floor_heating
.
no_disturb_mode
!=
device_attr
->
no_disturb_mode
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
//不需要多控
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
floor_heating
.
no_disturb_mode
=
device_attr
->
no_disturb_mode
;
sDevice_attr_last
.
floor_heating
.
no_disturb_mode
=
device_attr
->
no_disturb_mode
;
}
}
print_all_attr_vaule
(
channel_id
);
print_all_attr_vaule
(
channel_id
);
...
@@ -931,22 +816,17 @@ void FanAttributeChangedReceiveReport(uint8_t channel_id , FAN_ATTR_ST *device_a
...
@@ -931,22 +816,17 @@ void FanAttributeChangedReceiveReport(uint8_t channel_id , FAN_ATTR_ST *device_a
/**************************************Z3标准上报**************************************************/
/**************************************Z3标准上报**************************************************/
if
(
sDevice_attr_last
.
fan
.
on_off
!=
device_attr
->
on_off
)
if
(
sDevice_attr_last
.
fan
.
on_off
!=
device_attr
->
on_off
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
))
if
(
Is_Recall_Scense_Cmd
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
))
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
true
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
true
,
false
,
false
);
else
else
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
else
{
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_ON_OFF
,
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_ON_OFF
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_ON_OFF_CLUSTER_ID
,
ZCL_ON_OFF_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
on_off
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
fan
.
on_off
=
device_attr
->
on_off
;
sDevice_attr_last
.
fan
.
on_off
=
device_attr
->
on_off
;
}
}
if
(
sDevice_attr_last
.
fan
.
real_temperature
!=
device_attr
->
real_temperature
)
if
(
sDevice_attr_last
.
fan
.
real_temperature
!=
device_attr
->
real_temperature
)
...
@@ -960,153 +840,97 @@ void FanAttributeChangedReceiveReport(uint8_t channel_id , FAN_ATTR_ST *device_a
...
@@ -960,153 +840,97 @@ void FanAttributeChangedReceiveReport(uint8_t channel_id , FAN_ATTR_ST *device_a
temp
=
temp
*
10
;
temp
=
temp
*
10
;
real_temper
=
65536
-
temp
;
real_temper
=
65536
-
temp
;
}
}
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
//不需要多控
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_TEMP_MEASUREMENT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_TEMP_MEASUREMENT_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_TEMP_MEASUREMENT_CLUSTER_ID
,
ZCL_TEMP_MEASURED_VALUE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_TEMP_MEASUREMENT_CLUSTER_ID
,
ZCL_TEMP_MEASURED_VALUE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Current_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Current_Temperature
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_TEMP_MEASUREMENT_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_TEMP_MEASUREMENT_CLUSTER_ID
,
ZCL_TEMP_MEASURED_VALUE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
real_temper
,
ZCL_INT16S_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
fan
.
real_temperature
=
device_attr
->
real_temperature
;
sDevice_attr_last
.
fan
.
real_temperature
=
device_attr
->
real_temperature
;
}
}
if
(
sDevice_attr_last
.
fan
.
system_type
!=
device_attr
->
system_type
)
if
(
sDevice_attr_last
.
fan
.
system_type
!=
device_attr
->
system_type
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_System_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
system_type
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
fan
.
system_type
=
device_attr
->
system_type
;
sDevice_attr_last
.
fan
.
system_type
=
device_attr
->
system_type
;
}
}
if
(
sDevice_attr_last
.
fan
.
wind_speed
!=
device_attr
->
wind_speed
)
if
(
sDevice_attr_last
.
fan
.
wind_speed
!=
device_attr
->
wind_speed
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID
,
emberAfWriteAttribute
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
else
{
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Fan_Mode
,
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Fan_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_FAN_CONTROL_CLUSTER_ID
,
ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
wind_speed
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
fan
.
wind_speed
=
device_attr
->
wind_speed
;
sDevice_attr_last
.
fan
.
wind_speed
=
device_attr
->
wind_speed
;
}
}
if
(
sDevice_attr_last
.
fan
.
error
!=
device_attr
->
error
)
if
(
sDevice_attr_last
.
fan
.
error
!=
device_attr
->
error
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
)
//不需要多控
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Error_Code
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
error
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
fan
.
error
=
device_attr
->
error
;
sDevice_attr_last
.
fan
.
error
=
device_attr
->
error
;
}
}
if
(
sDevice_attr_last
.
fan
.
lock_flage
!=
device_attr
->
lock_flage
)
if
(
sDevice_attr_last
.
fan
.
lock_flage
!=
device_attr
->
lock_flage
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Child_Lock
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
lock_flage
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
fan
.
lock_flage
=
device_attr
->
lock_flage
;
sDevice_attr_last
.
fan
.
lock_flage
=
device_attr
->
lock_flage
;
}
}
if
(
sDevice_attr_last
.
fan
.
power_off_time
!=
device_attr
->
power_off_time
)
if
(
sDevice_attr_last
.
fan
.
power_off_time
!=
device_attr
->
power_off_time
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Delay_Off
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
power_off_time
,
ZCL_INT8U_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
fan
.
power_off_time
=
device_attr
->
power_off_time
;
sDevice_attr_last
.
fan
.
power_off_time
=
device_attr
->
power_off_time
;
}
}
if
(
sDevice_attr_last
.
fan
.
screen_save_time
!=
device_attr
->
screen_save_time
)
if
(
sDevice_attr_last
.
fan
.
screen_save_time
!=
device_attr
->
screen_save_time
)
{
{
uint8_t
screen_save
=
device_attr
->
screen_save_time
;
uint8_t
screen_save
=
device_attr
->
screen_save_time
;
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Screen_Saver_Time
,
CLUSTER_MASK_SERVER
,
&
screen_save
,
ZCL_ENUM8_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
fan
.
screen_save_time
=
device_attr
->
screen_save_time
;
sDevice_attr_last
.
fan
.
screen_save_time
=
device_attr
->
screen_save_time
;
}
}
if
(
sDevice_attr_last
.
fan
.
filter_wash_time
!=
device_attr
->
filter_wash_time
)
if
(
sDevice_attr_last
.
fan
.
filter_wash_time
!=
device_attr
->
filter_wash_time
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
,
invalidMaskEui64
,
RESET_ENDPOINT
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Filter_Clean_Time
,
CLUSTER_MASK_SERVER
,(
uint8_t
*
)
&
device_attr
->
filter_wash_time
,
ZCL_INT16U_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
fan
.
filter_wash_time
=
device_attr
->
filter_wash_time
;
sDevice_attr_last
.
fan
.
filter_wash_time
=
device_attr
->
filter_wash_time
;
}
}
if
(
sDevice_attr_last
.
fan
.
correct_temperature
!=
device_attr
->
correct_temperature
)
if
(
sDevice_attr_last
.
fan
.
correct_temperature
!=
device_attr
->
correct_temperature
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
//不需要多控
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
false
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_Calibration_Temperature
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
correct_temperature
,
ZCL_INT8S_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
fan
.
correct_temperature
=
device_attr
->
correct_temperature
;
sDevice_attr_last
.
fan
.
correct_temperature
=
device_attr
->
correct_temperature
;
}
}
if
(
sDevice_attr_last
.
fan
.
no_disturb_mode
!=
device_attr
->
no_disturb_mode
)
if
(
sDevice_attr_last
.
fan
.
no_disturb_mode
!=
device_attr
->
no_disturb_mode
)
{
{
if
(
channel_id
==
g_sDevice_Info
.
Device_Type
){
//不需要多控
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
);
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
else
{
kZclClusterSetPermitReportInfo
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
true
,
false
,
true
,
true
);
emberAfWriteAttribute
(
channel_id
,
ZCL_OPT_TUNNEL_CLUSTER_ID
,
FCC0_ATTR_No_Disturb_Mode
,
CLUSTER_MASK_SERVER
,
&
device_attr
->
no_disturb_mode
,
ZCL_BOOLEAN_ATTRIBUTE_TYPE
);
}
sDevice_attr_last
.
fan
.
no_disturb_mode
=
device_attr
->
no_disturb_mode
;
sDevice_attr_last
.
fan
.
no_disturb_mode
=
device_attr
->
no_disturb_mode
;
}
}
print_all_attr_vaule
(
channel_id
);
print_all_attr_vaule
(
channel_id
);
...
@@ -1131,10 +955,13 @@ void Command_Process_Handler(DATA_FIELDED *Data_Field)
...
@@ -1131,10 +955,13 @@ void Command_Process_Handler(DATA_FIELDED *Data_Field)
uint8_t
Net_cmd
=
Data_Field
->
uiPaload
[
0
];
uint8_t
Net_cmd
=
Data_Field
->
uiPaload
[
0
];
if
(
Net_cmd
)
//入网
if
(
Net_cmd
)
//入网
{
{
kNwkFactoryReset
(
false
);
if
(
kNwkGetCurrentStatus
()
==
ENS_LEAVED
)
//steering timeout can be set
{
iKonkeAfSelfPrint
(
"#####Start Steering
\r\n
"
);
kNwkFactoryReset
(
false
);
kNwkJoiningStart
(
NWK_STEERING_TIMEOUT_MS
,
JoinCompleteCallback
);
//steering timeout can be set
iKonkeAfSelfPrint
(
"#####Start Steering
\r\n
"
);
kNwkJoiningStart
(
NWK_STEERING_TIMEOUT_MS
,
JoinCompleteCallback
);
}
}
}
else
else
{
{
...
@@ -1410,7 +1237,7 @@ uint8_t uart_send_data(UMsgNodeSt *uMsgNode,uint8_t ucControl_Field,uint8_t uiSe
...
@@ -1410,7 +1237,7 @@ uint8_t uart_send_data(UMsgNodeSt *uMsgNode,uint8_t ucControl_Field,uint8_t uiSe
else
else
uMsgNode
->
ack
=
NULL
;
uMsgNode
->
ack
=
NULL
;
uMsgNode
->
ack_length
=
0
;
uMsgNode
->
ack_length
=
0
;
return
kUartMsgSent
(
uMsgNode
,
0
);
return
kUartMsgSent
(
uMsgNode
,
(
isGetResult
?
200
:
0
)
);
}
}
uint16_t
check_sum
(
uint8_t
*
msg
,
uint8_t
len
)
uint16_t
check_sum
(
uint8_t
*
msg
,
uint8_t
len
)
{
{
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/00ikonke-app/uart_handler.h
View file @
2d0a05ab
...
@@ -96,6 +96,7 @@ typedef struct
...
@@ -96,6 +96,7 @@ typedef struct
uint8_t
no_disturb_mode
;
//勿扰模式
uint8_t
no_disturb_mode
;
//勿扰模式
uint8_t
air_brand
;
//空调品牌
uint8_t
air_brand
;
//空调品牌
uint8_t
air_type
;
//空调类型
uint8_t
air_type
;
//空调类型
uint8_t
operate_mode
;
//风机盘管模式
}
__attribute__
((
packed
))
AIR_ATTR_ST
;
}
__attribute__
((
packed
))
AIR_ATTR_ST
;
typedef
struct
typedef
struct
{
{
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/KKFan_Control_MG21SDK665.isc
View file @
2d0a05ab
...
@@ -43,22 +43,24 @@ efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flas
...
@@ -43,22 +43,24 @@ efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flas
on
on
}
}
{setupId:debugConfiguration
{setupId:debugConfiguration
o
ff
o
n
area name off
area name off
appSerial=1
appSerial=1
compile,DEBUG
compile,EMBER_AF_PLUGIN_NVM3
compile,EMBER_AF_PLUGIN_NVM3
compile,EMBER_AF_PLUGIN_REPORTING
compile,EMBER_AF_PLUGIN_REPORTING
compile,EMBER_AF_PLUGIN_UPDATE_TC_LINK_KEY
compile,EMBER_AF_PLUGIN_UPDATE_TC_LINK_KEY
compile,EMBER_AF_PLUGIN_ZIGBEE_PRO_LIBRARY
compile,EMBER_AF_PLUGIN_ZIGBEE_PRO_LIBRARY
compile,ON_OFF_CLUSTER
compile,ON_OFF_CLUSTER
compile,SCENES_CLUSTER
compile,SCENES_CLUSTER
compile,ZDO
enable,DEBUG
enable,EMBER_AF_PLUGIN_NVM3
enable,EMBER_AF_PLUGIN_NVM3
enable,EMBER_AF_PLUGIN_REPORTING
enable,EMBER_AF_PLUGIN_REPORTING
enable,EMBER_AF_PLUGIN_UPDATE_TC_LINK_KEY
enable,EMBER_AF_PLUGIN_UPDATE_TC_LINK_KEY
enable,EMBER_AF_PLUGIN_ZIGBEE_PRO_LIBRARY
enable,EMBER_AF_PLUGIN_ZIGBEE_PRO_LIBRARY
enable,ON_OFF_CLUSTER
enable,ON_OFF_CLUSTER
enable,SCENES_CLUSTER
enable,SCENES_CLUSTER
disable,ZDO
}
}
{setupId:eventConfiguration
{setupId:eventConfiguration
ikkUartRecvLoopCheckEventControl,ikkUartRecvLoopCheckEventHandler
ikkUartRecvLoopCheckEventControl,ikkUartRecvLoopCheckEventHandler
...
@@ -78,6 +80,7 @@ kDelayClearSequenceEventControl,kDelayClearSequenceEventHandler
...
@@ -78,6 +80,7 @@ kDelayClearSequenceEventControl,kDelayClearSequenceEventHandler
ikkGetBindInfoEventControl,ikkGetBindInfoEventHandler
ikkGetBindInfoEventControl,ikkGetBindInfoEventHandler
ikkDelayRebootEventControl,ikkDelayRebootEventHandler
ikkDelayRebootEventControl,ikkDelayRebootEventHandler
kDelayClearFlagEventControl,kDelayClearFlagEventHandler
kDelayClearFlagEventControl,kDelayClearFlagEventHandler
ikkReportInfoCheckEventControl,ikkReportInfoCheckEventHandler
}
}
{setupId:halOptions
{setupId:halOptions
}
}
...
@@ -140,6 +143,20 @@ beginAttrList:OPTIONAL
...
@@ -140,6 +143,20 @@ beginAttrList:OPTIONAL
cl:0xFCC0, at:0x100A, di:server, mf:0x0000
cl:0xFCC0, at:0x100A, di:server, mf:0x0000
cl:0xFCC0, at:0x100B, di:server, mf:0x0000
cl:0xFCC0, at:0x100B, di:server, mf:0x0000
cl:0xFCC0, at:0x100C, di:server, mf:0x0000
cl:0xFCC0, at:0x100C, di:server, mf:0x0000
cl:0xFCC0, at:0x1000, di:server, mf:0x0000
cl:0xFCC0, at:0x1001, di:server, mf:0x0000
cl:0xFCC0, at:0x1002, di:server, mf:0x0000
cl:0xFCC0, at:0x1003, di:server, mf:0x0000
cl:0xFCC0, at:0x1004, di:server, mf:0x0000
cl:0xFCC0, at:0x1005, di:server, mf:0x0000
cl:0xFCC0, at:0x1006, di:server, mf:0x0000
cl:0xFCC0, at:0x1007, di:server, mf:0x0000
cl:0xFCC0, at:0x1008, di:server, mf:0x0000
cl:0xFCC0, at:0x1009, di:server, mf:0x0000
cl:0xFCC0, at:0x100A, di:server, mf:0x0000
cl:0xFCC0, at:0x100B, di:server, mf:0x0000
cl:0xFCC0, at:0x100C, di:server, mf:0x0000
cl:0xFCC0, at:0x100D, di:server, mf:0x0000
endAttrList:OPTIONAL
endAttrList:OPTIONAL
beginAttrList:SAVED_TO_FLASH
beginAttrList:SAVED_TO_FLASH
cl:0x0006, at:0x0000, di:server, mf:0x0000
cl:0x0006, at:0x0000, di:server, mf:0x0000
...
@@ -153,23 +170,31 @@ beginAttrList:REPORTABLE
...
@@ -153,23 +170,31 @@ beginAttrList:REPORTABLE
cl:0xFCC0, at:0x1000, di:server, mf:0x0000
cl:0xFCC0, at:0x1000, di:server, mf:0x0000
cl:0xFCC0, at:0x1001, di:server, mf:0x0000
cl:0xFCC0, at:0x1001, di:server, mf:0x0000
cl:0xFCC0, at:0x1002, di:server, mf:0x0000
cl:0xFCC0, at:0x1002, di:server, mf:0x0000
cl:0xFCC0, at:0x1003, di:server, mf:0x0000
cl:0xFCC0, at:0x1004, di:server, mf:0x0000
cl:0xFCC0, at:0x1004, di:server, mf:0x0000
cl:0xFCC0, at:0x1005, di:server, mf:0x0000
cl:0xFCC0, at:0x1006, di:server, mf:0x0000
cl:0xFCC0, at:0x1006, di:server, mf:0x0000
cl:0xFCC0, at:0x1007, di:server, mf:0x0000
cl:0xFCC0, at:0x1008, di:server, mf:0x0000
cl:0xFCC0, at:0x1008, di:server, mf:0x0000
cl:0xFCC0, at:0x1009, di:server, mf:0x0000
cl:0xFCC0, at:0x100A, di:server, mf:0x0000
cl:0xFCC0, at:0x100A, di:server, mf:0x0000
cl:0xFCC0, at:0x100B, di:server, mf:0x0000
cl:0xFCC0, at:0x100B, di:server, mf:0x0000
cl:0xFCC0, at:0x100C, di:server, mf:0x0000
cl:0xFCC0, at:0x100C, di:server, mf:0x0000
cl:0xFCC0, at:0x1000, di:server, mf:0x0000
cl:0xFCC0, at:0x1001, di:server, mf:0x0000
cl:0xFCC0, at:0x1002, di:server, mf:0x0000
cl:0xFCC0, at:0x1004, di:server, mf:0x0000
cl:0xFCC0, at:0x1006, di:server, mf:0x0000
cl:0xFCC0, at:0x1008, di:server, mf:0x0000
cl:0xFCC0, at:0x100A, di:server, mf:0x0000
cl:0xFCC0, at:0x100B, di:server, mf:0x0000
cl:0xFCC0, at:0x100C, di:server, mf:0x0000
cl:0xFCC0, at:0x1005, di:server, mf:0x0000
cl:0xFCC0, at:0x1009, di:server, mf:0x0000
cl:0xFCC0, at:0x1007, di:server, mf:0x0000
endAttrList:REPORTABLE
endAttrList:REPORTABLE
beginAttributeDefaults
beginAttributeDefaults
cl:0x0000, at:0x0001, di:server, mf:0x0000 => 0x
14
cl:0x0000, at:0x0001, di:server, mf:0x0000 => 0x
21
cl:0x0000, at:0x0003, di:server, mf:0x0000 => 0x10
cl:0x0000, at:0x0003, di:server, mf:0x0000 => 0x10
cl:0x0000, at:0x0004, di:server, mf:0x0000 => Konke
cl:0x0000, at:0x0004, di:server, mf:0x0000 => Konke
cl:0x0000, at:0x0005, di:server, mf:0x0000 => 3AFE
10
1003008611
cl:0x0000, at:0x0005, di:server, mf:0x0000 => 3AFE
21
1003008611
cl:0x0000, at:0x0006, di:server, mf:0x0000 => 202
01126
cl:0x0000, at:0x0006, di:server, mf:0x0000 => 202
10309
cl:0x0000, at:0x0007, di:server, mf:0x0000 => 0x01
cl:0x0000, at:0x0007, di:server, mf:0x0000 => 0x01
cl:0x0000, at:0x0000, di:server, mf:0x0000 => 0x01
cl:0x0000, at:0x0000, di:server, mf:0x0000 => 0x01
cl:0x0000, at:0x0002, di:server, mf:0x0000 => 0x01
cl:0x0000, at:0x0002, di:server, mf:0x0000 => 0x01
...
@@ -184,6 +209,20 @@ cl:0x0201, at:0x001E, di:server, mf:0x0000 => 1,0:0
...
@@ -184,6 +209,20 @@ cl:0x0201, at:0x001E, di:server, mf:0x0000 => 1,0:0
cl:0x0402, at:0x0000, di:server, mf:0x0000 => 1,0:0
cl:0x0402, at:0x0000, di:server, mf:0x0000 => 1,0:0
cl:0x0202, at:0x0000, di:server, mf:0x0000 => 1,0:0
cl:0x0202, at:0x0000, di:server, mf:0x0000 => 1,0:0
cl:0x0201, at:0x0010, di:server, mf:0x0000 => 1,0:0
cl:0x0201, at:0x0010, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x1000, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x1001, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x1002, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x1003, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x1004, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x1005, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x1006, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x1007, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x1008, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x1009, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x100A, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x100B, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x100C, di:server, mf:0x0000 => 1,0:0
cl:0xFCC0, at:0x100D, di:server, mf:0x0000 => 1,0:0
endAttributeDefaultReportingConfig
endAttributeDefaultReportingConfig
configuredNetwork:*type:ZIGBEE_PRO, name:Primary
configuredNetwork:*type:ZIGBEE_PRO, name:Primary
beginEndpointType:Primary
beginEndpointType:Primary
...
@@ -803,9 +842,9 @@ AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]
...
@@ -803,9 +842,9 @@ AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_HARDWARE_VERSION,0x10
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_HARDWARE_VERSION,0x10
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_IMAGE_TYPE_ID,17061
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_IMAGE_TYPE_ID,17061
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_NVM3_MAX_OBJECT_SIZE,254
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_NVM3_MAX_OBJECT_SIZE,254
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE,62
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_NVM3_CACHE_SIZE,335
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_PACKET_BUFFER_COUNT,200
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_PACKET_BUFFER_COUNT,200
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_APS_UNICAST_MESSAGE_COUNT,64
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_APS_UNICAST_MESSAGE_COUNT,64
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_BROADCAST_TABLE_SIZE,64
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_BROADCAST_TABLE_SIZE,64
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION,0x14
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE,62
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_NVM3_CACHE_SIZE,400
AppPluginOption(efr32~family[M]~series[2]~device_configuration[1]~performance[A]~radio[020]~flash[768K]~temp[I]~package[M]~pins[32]~!module+iar):EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION,0x21
Code/KKAllToOneFloorHeatingMG21SDK665/af-gen-event.h
View file @
2d0a05ab
...
@@ -25,6 +25,7 @@
...
@@ -25,6 +25,7 @@
extern EmberEventControl emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventControl; \
extern EmberEventControl emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventControl; \
extern EmberEventControl ikkDelayRebootEventControl; \
extern EmberEventControl ikkDelayRebootEventControl; \
extern EmberEventControl ikkGetBindInfoEventControl; \
extern EmberEventControl ikkGetBindInfoEventControl; \
extern EmberEventControl ikkReportInfoCheckEventControl; \
extern EmberEventControl ikkUartMsgDispatchEventControl; \
extern EmberEventControl ikkUartMsgDispatchEventControl; \
extern EmberEventControl ikkUartRecvLoopCheckEventControl; \
extern EmberEventControl ikkUartRecvLoopCheckEventControl; \
extern EmberEventControl ikkUartSentLoopCheckEventControl; \
extern EmberEventControl ikkUartSentLoopCheckEventControl; \
...
@@ -50,6 +51,7 @@
...
@@ -50,6 +51,7 @@
extern void emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventHandler(void); \
extern void emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventHandler(void); \
extern void ikkDelayRebootEventHandler(void); \
extern void ikkDelayRebootEventHandler(void); \
extern void ikkGetBindInfoEventHandler(void); \
extern void ikkGetBindInfoEventHandler(void); \
extern void ikkReportInfoCheckEventHandler(void); \
extern void ikkUartMsgDispatchEventHandler(void); \
extern void ikkUartMsgDispatchEventHandler(void); \
extern void ikkUartRecvLoopCheckEventHandler(void); \
extern void ikkUartRecvLoopCheckEventHandler(void); \
extern void ikkUartSentLoopCheckEventHandler(void); \
extern void ikkUartSentLoopCheckEventHandler(void); \
...
@@ -98,6 +100,7 @@
...
@@ -98,6 +100,7 @@
{ &emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventControl, emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventHandler }, \
{ &emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventControl, emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventHandler }, \
{ &ikkDelayRebootEventControl, ikkDelayRebootEventHandler }, \
{ &ikkDelayRebootEventControl, ikkDelayRebootEventHandler }, \
{ &ikkGetBindInfoEventControl, ikkGetBindInfoEventHandler }, \
{ &ikkGetBindInfoEventControl, ikkGetBindInfoEventHandler }, \
{ &ikkReportInfoCheckEventControl, ikkReportInfoCheckEventHandler }, \
{ &ikkUartMsgDispatchEventControl, ikkUartMsgDispatchEventHandler }, \
{ &ikkUartMsgDispatchEventControl, ikkUartMsgDispatchEventHandler }, \
{ &ikkUartRecvLoopCheckEventControl, ikkUartRecvLoopCheckEventHandler }, \
{ &ikkUartRecvLoopCheckEventControl, ikkUartRecvLoopCheckEventHandler }, \
{ &ikkUartSentLoopCheckEventControl, ikkUartSentLoopCheckEventHandler }, \
{ &ikkUartSentLoopCheckEventControl, ikkUartSentLoopCheckEventHandler }, \
...
@@ -132,6 +135,7 @@
...
@@ -132,6 +135,7 @@
"Update TC Link Key Plugin BeginTcLinkKeyUpdate", \
"Update TC Link Key Plugin BeginTcLinkKeyUpdate", \
"Ikk delay reboot event control", \
"Ikk delay reboot event control", \
"Ikk get bind info event control", \
"Ikk get bind info event control", \
"Event data", \
"Ikk uart msg dispatch event control", \
"Ikk uart msg dispatch event control", \
"Ikk uart recv loop check event control", \
"Ikk uart recv loop check event control", \
"Ikk uart sent loop check event control", \
"Ikk uart sent loop check event control", \
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/af-gen-event.h.bak
View file @
2d0a05ab
...
@@ -16,6 +16,8 @@
...
@@ -16,6 +16,8 @@
EmberEventControl emberAfIdentifyClusterServerTickCallbackControl3; \
EmberEventControl emberAfIdentifyClusterServerTickCallbackControl3; \
EmberEventControl emberAfOtaBootloadClusterClientTickCallbackControl3; \
EmberEventControl emberAfOtaBootloadClusterClientTickCallbackControl3; \
extern EmberEventControl emberAfPluginFormAndJoinCleanupEventControl; \
extern EmberEventControl emberAfPluginFormAndJoinCleanupEventControl; \
extern EmberEventControl emberAfPluginGreenPowerClientChannelEventControl; \
extern EmberEventControl emberAfPluginGreenPowerClientExitCommissioningEventControl; \
extern EmberEventControl emberAfPluginNetworkSteeringFinishSteeringEventControl; \
extern EmberEventControl emberAfPluginNetworkSteeringFinishSteeringEventControl; \
extern EmberEventControl emberAfPluginOtaStorageSimpleEepromPageEraseEventControl; \
extern EmberEventControl emberAfPluginOtaStorageSimpleEepromPageEraseEventControl; \
extern EmberEventControl emberAfPluginReportingTickEventControl; \
extern EmberEventControl emberAfPluginReportingTickEventControl; \
...
@@ -39,6 +41,8 @@
...
@@ -39,6 +41,8 @@
extern EmberEventControl kUserJoinSucceedProcedureEventControl; \
extern EmberEventControl kUserJoinSucceedProcedureEventControl; \
extern EmberEventControl kkSystemSetUpEventControl; \
extern EmberEventControl kkSystemSetUpEventControl; \
extern void emberAfPluginFormAndJoinCleanupEventHandler(void); \
extern void emberAfPluginFormAndJoinCleanupEventHandler(void); \
extern void emberAfPluginGreenPowerClientChannelEventHandler(void); \
extern void emberAfPluginGreenPowerClientExitCommissioningEventHandler(void); \
extern void emberAfPluginNetworkSteeringFinishSteeringEventHandler(void); \
extern void emberAfPluginNetworkSteeringFinishSteeringEventHandler(void); \
extern void emberAfPluginOtaStorageSimpleEepromPageEraseEventHandler(void); \
extern void emberAfPluginOtaStorageSimpleEepromPageEraseEventHandler(void); \
extern void emberAfPluginReportingTickEventHandler(void); \
extern void emberAfPluginReportingTickEventHandler(void); \
...
@@ -85,6 +89,8 @@
...
@@ -85,6 +89,8 @@
{ &emberAfIdentifyClusterServerTickCallbackControl3, emberAfIdentifyClusterServerTickCallbackWrapperFunction3 }, \
{ &emberAfIdentifyClusterServerTickCallbackControl3, emberAfIdentifyClusterServerTickCallbackWrapperFunction3 }, \
{ &emberAfOtaBootloadClusterClientTickCallbackControl3, emberAfOtaBootloadClusterClientTickCallbackWrapperFunction3 }, \
{ &emberAfOtaBootloadClusterClientTickCallbackControl3, emberAfOtaBootloadClusterClientTickCallbackWrapperFunction3 }, \
{ &emberAfPluginFormAndJoinCleanupEventControl, emberAfPluginFormAndJoinCleanupEventHandler }, \
{ &emberAfPluginFormAndJoinCleanupEventControl, emberAfPluginFormAndJoinCleanupEventHandler }, \
{ &emberAfPluginGreenPowerClientChannelEventControl, emberAfPluginGreenPowerClientChannelEventHandler }, \
{ &emberAfPluginGreenPowerClientExitCommissioningEventControl, emberAfPluginGreenPowerClientExitCommissioningEventHandler }, \
{ &emberAfPluginNetworkSteeringFinishSteeringEventControl, emberAfPluginNetworkSteeringFinishSteeringEventHandler }, \
{ &emberAfPluginNetworkSteeringFinishSteeringEventControl, emberAfPluginNetworkSteeringFinishSteeringEventHandler }, \
{ &emberAfPluginOtaStorageSimpleEepromPageEraseEventControl, emberAfPluginOtaStorageSimpleEepromPageEraseEventHandler }, \
{ &emberAfPluginOtaStorageSimpleEepromPageEraseEventControl, emberAfPluginOtaStorageSimpleEepromPageEraseEventHandler }, \
{ &emberAfPluginReportingTickEventControl, emberAfPluginReportingTickEventHandler }, \
{ &emberAfPluginReportingTickEventControl, emberAfPluginReportingTickEventHandler }, \
...
@@ -117,6 +123,8 @@
...
@@ -117,6 +123,8 @@
"Identify Cluster Server EP 3", \
"Identify Cluster Server EP 3", \
"Over the Air Bootloading Cluster Client EP 3", \
"Over the Air Bootloading Cluster Client EP 3", \
"Form and Join Library Plugin Cleanup", \
"Form and Join Library Plugin Cleanup", \
"Green Power Client Plugin Channel", \
"Green Power Client Plugin ExitCommissioning", \
"Network Steering Plugin FinishSteering", \
"Network Steering Plugin FinishSteering", \
"OTA Simple Storage EEPROM Driver Plugin PageErase", \
"OTA Simple Storage EEPROM Driver Plugin PageErase", \
"Reporting Plugin Tick", \
"Reporting Plugin Tick", \
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/attribute-id.h
View file @
2d0a05ab
...
@@ -4786,6 +4786,7 @@
...
@@ -4786,6 +4786,7 @@
#define ZCL_FanMode_ATTRIBUTE_ID 0x100A // Ver.: always
#define ZCL_FanMode_ATTRIBUTE_ID 0x100A // Ver.: always
#define ZCL_OnOff_ATTRIBUTE_ID 0x100B // Ver.: always
#define ZCL_OnOff_ATTRIBUTE_ID 0x100B // Ver.: always
#define ZCL_NoDisturbMode_ATTRIBUTE_ID 0x100C // Ver.: always
#define ZCL_NoDisturbMode_ATTRIBUTE_ID 0x100C // Ver.: always
#define ZCL_RunMode_ATTRIBUTE_ID 0x100D // Ver.: always
#endif // SILABS_EMBER_AF_ATTRIBUTE_ID
#endif // SILABS_EMBER_AF_ATTRIBUTE_ID
Code/KKAllToOneFloorHeatingMG21SDK665/callback-stub.c.bak
View file @
2d0a05ab
...
@@ -1389,35 +1389,6 @@ bool emberAfPluginReportingGetDefaultReportingConfigCallback(EmberAfPluginReport
...
@@ -1389,35 +1389,6 @@ bool emberAfPluginReportingGetDefaultReportingConfigCallback(EmberAfPluginReport
return true;
return true;
}
}
/** @brief Pre Attribute Change
*
* This function is called by the application framework before it changes an
* attribute value. The value passed into this callback is the value to which
* the attribute is to be set by the framework. The application should return
* ::EMBER_ZCL_STATUS_SUCCESS to permit the change or any other ::EmberAfStatus
* to reject it.
*
* @param endpoint Ver.: always
* @param clusterId Ver.: always
* @param attributeId Ver.: always
* @param mask Ver.: always
* @param manufacturerCode Ver.: always
* @param type Ver.: always
* @param size Ver.: always
* @param value Ver.: always
*/
EmberAfStatus emberAfPreAttributeChangeCallback(uint8_t endpoint,
EmberAfClusterId clusterId,
EmberAfAttributeId attributeId,
uint8_t mask,
uint16_t manufacturerCode,
uint8_t type,
uint8_t size,
uint8_t* value)
{
return EMBER_ZCL_STATUS_SUCCESS;
}
/** @brief Pre Cli Send
/** @brief Pre Cli Send
*
*
* This function is called by the framework when it is about to pass a message
* This function is called by the framework when it is about to pass a message
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1-postbuild.py
View file @
2d0a05ab
...
@@ -90,14 +90,14 @@ def GBL():
...
@@ -90,14 +90,14 @@ def GBL():
def
OTA
():
def
OTA
():
if
not
'"
%
PROJECT_DIR
%
\
..
\\
..
\\
..
\\
..
\\
..
\\
..
\\
SiliconLabs
\\
SimplicityStudio
\\
v4
\\
developer
\\
sdks
\\
gecko_sdk_suite
\\
v2.6
\\
protocol
\\
zigbee
\\
tool
\\
image-builder
\\
image-builder-windows.exe" --create "
%
TARGET_BPATH
%
.ota" --version 0x
14
--manuf-id 0x1268 --image-type 17061 --tag-id 0x0000 --tag-file "
%
TARGET_BPATH
%
.gbl" --string "EBL kkAllInOneFloorHeatingMG21SDK665V1"'
:
if
not
'"
%
PROJECT_DIR
%
\
..
\\
..
\\
..
\\
..
\\
..
\\
..
\\
SiliconLabs
\\
SimplicityStudio
\\
v4
\\
developer
\\
sdks
\\
gecko_sdk_suite
\\
v2.6
\\
protocol
\\
zigbee
\\
tool
\\
image-builder
\\
image-builder-windows.exe" --create "
%
TARGET_BPATH
%
.ota" --version 0x
21
--manuf-id 0x1268 --image-type 17061 --tag-id 0x0000 --tag-file "
%
TARGET_BPATH
%
.gbl" --string "EBL kkAllInOneFloorHeatingMG21SDK665V1"'
:
sys
.
exit
(
0
)
sys
.
exit
(
0
)
print
(
" "
)
print
(
" "
)
print
(
"This creates a ZigBee OTA file if the OTA Client Policy Plugin has been enabled."
)
print
(
"This creates a ZigBee OTA file if the OTA Client Policy Plugin has been enabled."
)
print
(
"It uses the parameters defined there. "
)
print
(
"It uses the parameters defined there. "
)
print
(
" "
)
print
(
" "
)
# wine needed by postbuild script under studio for mac/linux
# wine needed by postbuild script under studio for mac/linux
IMAGE_BUILDER
=
'"
%
PROJECT_DIR
%
\
..
\\
..
\\
..
\\
..
\\
..
\\
..
\\
SiliconLabs
\\
SimplicityStudio
\\
v4
\\
developer
\\
sdks
\\
gecko_sdk_suite
\\
v2.6
\\
protocol
\\
zigbee
\\
tool
\\
image-builder
\\
image-builder-windows.exe" --create "
%
TARGET_BPATH
%
.ota" --version 0x
14
--manuf-id 0x1268 --image-type 17061 --tag-id 0x0000 --tag-file "
%
TARGET_BPATH
%
.gbl" --string "EBL kkAllInOneFloorHeatingMG21SDK665V1"'
.
replace
(
"
\t
"
,
"
\\
t"
)
IMAGE_BUILDER
=
'"
%
PROJECT_DIR
%
\
..
\\
..
\\
..
\\
..
\\
..
\\
..
\\
SiliconLabs
\\
SimplicityStudio
\\
v4
\\
developer
\\
sdks
\\
gecko_sdk_suite
\\
v2.6
\\
protocol
\\
zigbee
\\
tool
\\
image-builder
\\
image-builder-windows.exe" --create "
%
TARGET_BPATH
%
.ota" --version 0x
21
--manuf-id 0x1268 --image-type 17061 --tag-id 0x0000 --tag-file "
%
TARGET_BPATH
%
.gbl" --string "EBL kkAllInOneFloorHeatingMG21SDK665V1"'
.
replace
(
"
\t
"
,
"
\\
t"
)
WINE_CMD
=
WINE
.
replace
(
"cmd /C "
,
""
)
if
not
"echo"
in
IMAGE_BUILDER
else
WINE
WINE_CMD
=
WINE
.
replace
(
"cmd /C "
,
""
)
if
not
"echo"
in
IMAGE_BUILDER
else
WINE
OTA_COMMAND
=
WINE_CMD
+
IMAGE_BUILDER
OTA_COMMAND
=
WINE_CMD
+
IMAGE_BUILDER
OTA_COMMAND
=
OTA_COMMAND
.
replace
(
"
%
PROJECT_DIR
%
"
,
PROJECT_DIR
)
OTA_COMMAND
=
OTA_COMMAND
.
replace
(
"
%
PROJECT_DIR
%
"
,
PROJECT_DIR
)
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1-postbuild.py.bak
View file @
2d0a05ab
...
@@ -90,14 +90,14 @@ def GBL():
...
@@ -90,14 +90,14 @@ def GBL():
def OTA():
def OTA():
if not '"%PROJECT_DIR%\..\\..\\..\\..\\..\\..\\SiliconLabs\\SimplicityStudio\\v4\\developer\\sdks\\gecko_sdk_suite\\v2.6\\protocol\\zigbee\\tool\\image-builder\\image-builder-windows.exe" --create "%TARGET_BPATH%.ota" --version 0x
13
--manuf-id 0x1268 --image-type 17061 --tag-id 0x0000 --tag-file "%TARGET_BPATH%.gbl" --string "EBL kkAllInOneFloorHeatingMG21SDK665V1"':
if not '"%PROJECT_DIR%\..\\..\\..\\..\\..\\..\\SiliconLabs\\SimplicityStudio\\v4\\developer\\sdks\\gecko_sdk_suite\\v2.6\\protocol\\zigbee\\tool\\image-builder\\image-builder-windows.exe" --create "%TARGET_BPATH%.ota" --version 0x
20
--manuf-id 0x1268 --image-type 17061 --tag-id 0x0000 --tag-file "%TARGET_BPATH%.gbl" --string "EBL kkAllInOneFloorHeatingMG21SDK665V1"':
sys.exit(0)
sys.exit(0)
print (" ")
print (" ")
print ("This creates a ZigBee OTA file if the OTA Client Policy Plugin has been enabled.")
print ("This creates a ZigBee OTA file if the OTA Client Policy Plugin has been enabled.")
print ("It uses the parameters defined there. ")
print ("It uses the parameters defined there. ")
print (" ")
print (" ")
# wine needed by postbuild script under studio for mac/linux
# wine needed by postbuild script under studio for mac/linux
IMAGE_BUILDER = '"%PROJECT_DIR%\..\\..\\..\\..\\..\\..\\SiliconLabs\\SimplicityStudio\\v4\\developer\\sdks\\gecko_sdk_suite\\v2.6\\protocol\\zigbee\\tool\\image-builder\\image-builder-windows.exe" --create "%TARGET_BPATH%.ota" --version 0x
13
--manuf-id 0x1268 --image-type 17061 --tag-id 0x0000 --tag-file "%TARGET_BPATH%.gbl" --string "EBL kkAllInOneFloorHeatingMG21SDK665V1"'.replace("\t", "\\t")
IMAGE_BUILDER = '"%PROJECT_DIR%\..\\..\\..\\..\\..\\..\\SiliconLabs\\SimplicityStudio\\v4\\developer\\sdks\\gecko_sdk_suite\\v2.6\\protocol\\zigbee\\tool\\image-builder\\image-builder-windows.exe" --create "%TARGET_BPATH%.ota" --version 0x
20
--manuf-id 0x1268 --image-type 17061 --tag-id 0x0000 --tag-file "%TARGET_BPATH%.gbl" --string "EBL kkAllInOneFloorHeatingMG21SDK665V1"'.replace("\t", "\\t")
WINE_CMD = WINE.replace("cmd /C ","") if not "echo" in IMAGE_BUILDER else WINE
WINE_CMD = WINE.replace("cmd /C ","") if not "echo" in IMAGE_BUILDER else WINE
OTA_COMMAND = WINE_CMD + IMAGE_BUILDER
OTA_COMMAND = WINE_CMD + IMAGE_BUILDER
OTA_COMMAND = OTA_COMMAND.replace("%PROJECT_DIR%", PROJECT_DIR)
OTA_COMMAND = OTA_COMMAND.replace("%PROJECT_DIR%", PROJECT_DIR)
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1.ewp
View file @
2d0a05ab
...
@@ -222,7 +222,7 @@
...
@@ -222,7 +222,7 @@
<state>
APPLICATION_MFG_TOKEN_HEADER="znet-mfg-token.h"
</state>
<state>
APPLICATION_MFG_TOKEN_HEADER="znet-mfg-token.h"
</state>
<state>
MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE="configs/config-device-acceleration.h"
</state>
<state>
MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE="configs/config-device-acceleration.h"
</state>
<state>
MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE="config-device-acceleration-app.h"
</state>
<state>
MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE="config-device-acceleration-app.h"
</state>
<state>
NVM3_FLASH_PAGES=8
</state><state>
NVM3_DEFAULT_CACHE_SIZE=
335
</state><state>
NVM3_MAX_OBJECT_SIZE=254
</state><state>
NVM3_DEFAULT_REPACK_HEADROOM=0
</state><state>
PHY_RAIL=1
</state>
<state>
NVM3_FLASH_PAGES=8
</state><state>
NVM3_DEFAULT_CACHE_SIZE=
400
</state><state>
NVM3_MAX_OBJECT_SIZE=254
</state><state>
NVM3_DEFAULT_REPACK_HEADROOM=0
</state><state>
PHY_RAIL=1
</state>
</option>
</option>
<option>
<option>
<name>
CCPreprocFile
</name>
<name>
CCPreprocFile
</name>
...
@@ -610,7 +610,7 @@
...
@@ -610,7 +610,7 @@
<state>
APPLICATION_MFG_TOKEN_HEADER="znet-mfg-token.h"
</state>
<state>
APPLICATION_MFG_TOKEN_HEADER="znet-mfg-token.h"
</state>
<state>
MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE="configs/config-device-acceleration.h"
</state>
<state>
MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE="configs/config-device-acceleration.h"
</state>
<state>
MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE="config-device-acceleration-app.h"
</state>
<state>
MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE="config-device-acceleration-app.h"
</state>
<state>
NVM3_FLASH_PAGES=8
</state><state>
NVM3_DEFAULT_CACHE_SIZE=
335
</state><state>
NVM3_MAX_OBJECT_SIZE=254
</state><state>
NVM3_DEFAULT_REPACK_HEADROOM=0
</state><state>
PHY_RAIL=1
</state>
<state>
NVM3_FLASH_PAGES=8
</state><state>
NVM3_DEFAULT_CACHE_SIZE=
400
</state><state>
NVM3_MAX_OBJECT_SIZE=254
</state><state>
NVM3_DEFAULT_REPACK_HEADROOM=0
</state><state>
PHY_RAIL=1
</state>
</option>
</option>
<option>
<option>
<name>
AList
</name>
<name>
AList
</name>
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1.h
View file @
2d0a05ab
...
@@ -64,6 +64,7 @@
...
@@ -64,6 +64,7 @@
#define ZCL_USING_OPT_TUNNEL_CLUSTER_FanMode_ATTRIBUTE
#define ZCL_USING_OPT_TUNNEL_CLUSTER_FanMode_ATTRIBUTE
#define ZCL_USING_OPT_TUNNEL_CLUSTER_OnOff_ATTRIBUTE
#define ZCL_USING_OPT_TUNNEL_CLUSTER_OnOff_ATTRIBUTE
#define ZCL_USING_OPT_TUNNEL_CLUSTER_NoDisturbMode_ATTRIBUTE
#define ZCL_USING_OPT_TUNNEL_CLUSTER_NoDisturbMode_ATTRIBUTE
#define ZCL_USING_OPT_TUNNEL_CLUSTER_RunMode_ATTRIBUTE
#define EMBER_AF_MANUFACTURER_CODE 0x1268
#define EMBER_AF_MANUFACTURER_CODE 0x1268
#define EMBER_AF_DEFAULT_RESPONSE_POLICY_CONDITIONAL
#define EMBER_AF_DEFAULT_RESPONSE_POLICY_CONDITIONAL
...
@@ -204,20 +205,20 @@
...
@@ -204,20 +205,20 @@
/**** Debug printing section ****/
/**** Debug printing section ****/
// Global switch
// Global switch
//
#define EMBER_AF_PRINT_ENABLE
#define EMBER_AF_PRINT_ENABLE
// Individual areas
// Individual areas
#define EMBER_AF_PRINT_CORE 0x0001
#define EMBER_AF_PRINT_CORE 0x0001
#define EMBER_AF_PRINT_
APP
0x0002
#define EMBER_AF_PRINT_
DEBUG
0x0002
#define EMBER_AF_PRINT_A
TTRIBUTES
0x0004
#define EMBER_AF_PRINT_A
PP
0x0004
#define EMBER_AF_PRINT_
ZDO
0x0008
#define EMBER_AF_PRINT_
ATTRIBUTES
0x0008
#define EMBER_AF_PRINT_SCENES_CLUSTER 0x0010
#define EMBER_AF_PRINT_SCENES_CLUSTER 0x0010
#define EMBER_AF_PRINT_ON_OFF_CLUSTER 0x0020
#define EMBER_AF_PRINT_ON_OFF_CLUSTER 0x0020
#define EMBER_AF_PRINT_BITS { 0x3F }
#define EMBER_AF_PRINT_BITS { 0x3F }
#define EMBER_AF_PRINT_NAMES { \
#define EMBER_AF_PRINT_NAMES { \
"Core",\
"Core",\
"Debug",\
"Application",\
"Application",\
"Attributes",\
"Attributes",\
"ZDO (ZigBee Device Object)",\
"Scenes",\
"Scenes",\
"On/off",\
"On/off",\
NULL\
NULL\
...
@@ -333,7 +334,7 @@
...
@@ -333,7 +334,7 @@
#define EMBER_AF_PLUGIN_NVM3
#define EMBER_AF_PLUGIN_NVM3
// User options for plugin NVM3 Library
// User options for plugin NVM3 Library
#define EMBER_AF_PLUGIN_NVM3_FLASH_PAGES 8
#define EMBER_AF_PLUGIN_NVM3_FLASH_PAGES 8
#define EMBER_AF_PLUGIN_NVM3_CACHE_SIZE
335
#define EMBER_AF_PLUGIN_NVM3_CACHE_SIZE
400
#define EMBER_AF_PLUGIN_NVM3_MAX_OBJECT_SIZE 254
#define EMBER_AF_PLUGIN_NVM3_MAX_OBJECT_SIZE 254
#define EMBER_AF_PLUGIN_NVM3_USER_REPACK_HEADROOM 0
#define EMBER_AF_PLUGIN_NVM3_USER_REPACK_HEADROOM 0
...
@@ -369,7 +370,7 @@
...
@@ -369,7 +370,7 @@
#define CUSTOMER_APPLICATION_VERSION EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION
#define CUSTOMER_APPLICATION_VERSION EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION
// User options for plugin OTA Bootload Cluster Client Policy
// User options for plugin OTA Bootload Cluster Client Policy
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_IMAGE_TYPE_ID 17061
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_IMAGE_TYPE_ID 17061
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION
20
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION
33
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_HARDWARE_VERSION 16
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_HARDWARE_VERSION 16
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_EBL_VERIFICATION
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_EBL_VERIFICATION
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_DELETE_FAILED_DOWNLOADS
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_DELETE_FAILED_DOWNLOADS
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1.h.bak
View file @
2d0a05ab
...
@@ -64,6 +64,7 @@
...
@@ -64,6 +64,7 @@
#define ZCL_USING_OPT_TUNNEL_CLUSTER_FanMode_ATTRIBUTE
#define ZCL_USING_OPT_TUNNEL_CLUSTER_FanMode_ATTRIBUTE
#define ZCL_USING_OPT_TUNNEL_CLUSTER_OnOff_ATTRIBUTE
#define ZCL_USING_OPT_TUNNEL_CLUSTER_OnOff_ATTRIBUTE
#define ZCL_USING_OPT_TUNNEL_CLUSTER_NoDisturbMode_ATTRIBUTE
#define ZCL_USING_OPT_TUNNEL_CLUSTER_NoDisturbMode_ATTRIBUTE
#define ZCL_USING_OPT_TUNNEL_CLUSTER_RunMode_ATTRIBUTE
#define EMBER_AF_MANUFACTURER_CODE 0x1268
#define EMBER_AF_MANUFACTURER_CODE 0x1268
#define EMBER_AF_DEFAULT_RESPONSE_POLICY_CONDITIONAL
#define EMBER_AF_DEFAULT_RESPONSE_POLICY_CONDITIONAL
...
@@ -204,20 +205,20 @@
...
@@ -204,20 +205,20 @@
/**** Debug printing section ****/
/**** Debug printing section ****/
// Global switch
// Global switch
//
#define EMBER_AF_PRINT_ENABLE
#define EMBER_AF_PRINT_ENABLE
// Individual areas
// Individual areas
#define EMBER_AF_PRINT_CORE 0x0001
#define EMBER_AF_PRINT_CORE 0x0001
#define EMBER_AF_PRINT_
APP
0x0002
#define EMBER_AF_PRINT_
DEBUG
0x0002
#define EMBER_AF_PRINT_A
TTRIBUTES
0x0004
#define EMBER_AF_PRINT_A
PP
0x0004
#define EMBER_AF_PRINT_
ZDO
0x0008
#define EMBER_AF_PRINT_
ATTRIBUTES
0x0008
#define EMBER_AF_PRINT_SCENES_CLUSTER 0x0010
#define EMBER_AF_PRINT_SCENES_CLUSTER 0x0010
#define EMBER_AF_PRINT_ON_OFF_CLUSTER 0x0020
#define EMBER_AF_PRINT_ON_OFF_CLUSTER 0x0020
#define EMBER_AF_PRINT_BITS { 0x3F }
#define EMBER_AF_PRINT_BITS { 0x3F }
#define EMBER_AF_PRINT_NAMES { \
#define EMBER_AF_PRINT_NAMES { \
"Core",\
"Core",\
"Debug",\
"Application",\
"Application",\
"Attributes",\
"Attributes",\
"ZDO (ZigBee Device Object)",\
"Scenes",\
"Scenes",\
"On/off",\
"On/off",\
NULL\
NULL\
...
@@ -333,7 +334,7 @@
...
@@ -333,7 +334,7 @@
#define EMBER_AF_PLUGIN_NVM3
#define EMBER_AF_PLUGIN_NVM3
// User options for plugin NVM3 Library
// User options for plugin NVM3 Library
#define EMBER_AF_PLUGIN_NVM3_FLASH_PAGES 8
#define EMBER_AF_PLUGIN_NVM3_FLASH_PAGES 8
#define EMBER_AF_PLUGIN_NVM3_CACHE_SIZE
335
#define EMBER_AF_PLUGIN_NVM3_CACHE_SIZE
400
#define EMBER_AF_PLUGIN_NVM3_MAX_OBJECT_SIZE 254
#define EMBER_AF_PLUGIN_NVM3_MAX_OBJECT_SIZE 254
#define EMBER_AF_PLUGIN_NVM3_USER_REPACK_HEADROOM 0
#define EMBER_AF_PLUGIN_NVM3_USER_REPACK_HEADROOM 0
...
@@ -369,7 +370,7 @@
...
@@ -369,7 +370,7 @@
#define CUSTOMER_APPLICATION_VERSION EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION
#define CUSTOMER_APPLICATION_VERSION EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION
// User options for plugin OTA Bootload Cluster Client Policy
// User options for plugin OTA Bootload Cluster Client Policy
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_IMAGE_TYPE_ID 17061
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_IMAGE_TYPE_ID 17061
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION
19
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_FIRMWARE_VERSION
32
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_HARDWARE_VERSION 16
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_HARDWARE_VERSION 16
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_EBL_VERIFICATION
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_EBL_VERIFICATION
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_DELETE_FAILED_DOWNLOADS
#define EMBER_AF_PLUGIN_OTA_CLIENT_POLICY_DELETE_FAILED_DOWNLOADS
...
...
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1_endpoint_config.h
View file @
2d0a05ab
...
@@ -15,8 +15,8 @@
...
@@ -15,8 +15,8 @@
#if BIGENDIAN_CPU
#if BIGENDIAN_CPU
#define GENERATED_DEFAULTS { \
#define GENERATED_DEFAULTS { \
5,'K','o','n','k','e',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
/* 0,Default value: Basic,manufacturer name */
, \
5,'K','o','n','k','e',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
/* 0,Default value: Basic,manufacturer name */
, \
16,'3','A','F','E','
1','0
','1','0','0','3','0','0','8','6','1','1',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
/* 33,Default value: Basic,model identifier */
, \
16,'3','A','F','E','
2','1
','1','0','0','3','0','0','8','6','1','1',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
/* 33,Default value: Basic,model identifier */
, \
8,'2','0','2','
0','1','1','2','6
',0,0,0,0,0,0,0,0
/* 66,Default value: Basic,date code */
, \
8,'2','0','2','
1','0','3','0','9
',0,0,0,0,0,0,0,0
/* 66,Default value: Basic,date code */
, \
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
/* 83,Default value: Over the Air Bootloading,OTA Upgrade Server ID */
, \
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
/* 83,Default value: Over the Air Bootloading,OTA Upgrade Server ID */
, \
0xFF, 0xFF, 0xFF, 0xFF
/* 91,Default value: Over the Air Bootloading,Offset (address) into the file */
, \
0xFF, 0xFF, 0xFF, 0xFF
/* 91,Default value: Over the Air Bootloading,Offset (address) into the file */
, \
0x09, 0xAC, 0x2F
/* 95,Default value: Green Power,gpp functionality */
, \
0x09, 0xAC, 0x2F
/* 95,Default value: Green Power,gpp functionality */
, \
...
@@ -26,8 +26,8 @@
...
@@ -26,8 +26,8 @@
#else // ! BIGENDIAN_CPU
#else // ! BIGENDIAN_CPU
#define GENERATED_DEFAULTS { \
#define GENERATED_DEFAULTS { \
5,'K','o','n','k','e',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
/* 0,Default value: Basic,manufacturer name */
, \
5,'K','o','n','k','e',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
/* 0,Default value: Basic,manufacturer name */
, \
16,'3','A','F','E','
1','0
','1','0','0','3','0','0','8','6','1','1',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
/* 33,Default value: Basic,model identifier */
, \
16,'3','A','F','E','
2','1
','1','0','0','3','0','0','8','6','1','1',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
/* 33,Default value: Basic,model identifier */
, \
8,'2','0','2','
0','1','1','2','6
',0,0,0,0,0,0,0,0
/* 66,Default value: Basic,date code */
, \
8,'2','0','2','
1','0','3','0','9
',0,0,0,0,0,0,0,0
/* 66,Default value: Basic,date code */
, \
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
/* 83,Default value: Over the Air Bootloading,OTA Upgrade Server ID */
, \
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
/* 83,Default value: Over the Air Bootloading,OTA Upgrade Server ID */
, \
0xFF, 0xFF, 0xFF, 0xFF
/* 91,Default value: Over the Air Bootloading,Offset (address) into the file */
, \
0xFF, 0xFF, 0xFF, 0xFF
/* 91,Default value: Over the Air Bootloading,Offset (address) into the file */
, \
0x2F, 0xAC, 0x09
/* 95,Default value: Green Power,gpp functionality */
, \
0x2F, 0xAC, 0x09
/* 95,Default value: Green Power,gpp functionality */
, \
...
@@ -42,7 +42,7 @@
...
@@ -42,7 +42,7 @@
// Generated attributes
// Generated attributes
#define GENERATED_ATTRIBUTES { \
#define GENERATED_ATTRIBUTES { \
{ 0x0000, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x01 } },
/* 0 / Basic / ZCL version*/
\
{ 0x0000, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x01 } },
/* 0 / Basic / ZCL version*/
\
{ 0x0001, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x
14
} },
/* 1 / Basic / application version*/
\
{ 0x0001, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x
21
} },
/* 1 / Basic / application version*/
\
{ 0x0002, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x01 } },
/* 2 / Basic / stack version*/
\
{ 0x0002, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x01 } },
/* 2 / Basic / stack version*/
\
{ 0x0003, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x10 } },
/* 3 / Basic / hardware version*/
\
{ 0x0003, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x10 } },
/* 3 / Basic / hardware version*/
\
{ 0x0004, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, 33, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)&(generatedDefaults[0]) } },
/* 4 / Basic / manufacturer name*/
\
{ 0x0004, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, 33, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)&(generatedDefaults[0]) } },
/* 4 / Basic / manufacturer name*/
\
...
@@ -104,6 +104,7 @@
...
@@ -104,6 +104,7 @@
{ 0x100A, ZCL_ENUM8_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } },
/* 60 / OptTunnel / FanMode*/
\
{ 0x100A, ZCL_ENUM8_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } },
/* 60 / OptTunnel / FanMode*/
\
{ 0x100B, ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } },
/* 61 / OptTunnel / OnOff*/
\
{ 0x100B, ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } },
/* 61 / OptTunnel / OnOff*/
\
{ 0x100C, ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } },
/* 62 / OptTunnel / NoDisturbMode*/
\
{ 0x100C, ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } },
/* 62 / OptTunnel / NoDisturbMode*/
\
{ 0x100D, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } },
/* 63 / OptTunnel / RunMode*/
\
}
}
...
@@ -131,7 +132,7 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
...
@@ -131,7 +132,7 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
{ 0x0202, (EmberAfAttributeMetadata*)&(generatedAttributes[40]), 3, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayFanControlClusterServer, }, \
{ 0x0202, (EmberAfAttributeMetadata*)&(generatedAttributes[40]), 3, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayFanControlClusterServer, }, \
{ 0x0B05, (EmberAfAttributeMetadata*)&(generatedAttributes[47]), 3, 4, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0B05, (EmberAfAttributeMetadata*)&(generatedAttributes[47]), 3, 4, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 0, 0, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 0, 0, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 1
3, 16
, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 1
4, 17
, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0000, (EmberAfAttributeMetadata*)&(generatedAttributes[0]), 9, 0, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0000, (EmberAfAttributeMetadata*)&(generatedAttributes[0]), 9, 0, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[9]), 1, 2, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[9]), 1, 2, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[10]), 2, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayIdentifyClusterServer, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[10]), 2, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayIdentifyClusterServer, }, \
...
@@ -140,7 +141,7 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
...
@@ -140,7 +141,7 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
{ 0x0006, (EmberAfAttributeMetadata*)&(generatedAttributes[20]), 2, 3, (CLUSTER_MASK_SERVER| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayOnOffClusterServer, }, \
{ 0x0006, (EmberAfAttributeMetadata*)&(generatedAttributes[20]), 2, 3, (CLUSTER_MASK_SERVER| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayOnOffClusterServer, }, \
{ 0x0019, (EmberAfAttributeMetadata*)&(generatedAttributes[22]), 4, 15, (CLUSTER_MASK_CLIENT| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION), emberAfFuncArrayOtaBootloadClusterClient, }, \
{ 0x0019, (EmberAfAttributeMetadata*)&(generatedAttributes[22]), 4, 15, (CLUSTER_MASK_CLIENT| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION), emberAfFuncArrayOtaBootloadClusterClient, }, \
{ 0x0201, (EmberAfAttributeMetadata*)&(generatedAttributes[32]), 8, 12, (CLUSTER_MASK_SERVER| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayThermostatClusterServer, }, \
{ 0x0201, (EmberAfAttributeMetadata*)&(generatedAttributes[32]), 8, 12, (CLUSTER_MASK_SERVER| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayThermostatClusterServer, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 1
3, 16
, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 1
4, 17
, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0000, (EmberAfAttributeMetadata*)&(generatedAttributes[0]), 9, 0, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0000, (EmberAfAttributeMetadata*)&(generatedAttributes[0]), 9, 0, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[9]), 1, 2, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[9]), 1, 2, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[10]), 2, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayIdentifyClusterServer, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[10]), 2, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayIdentifyClusterServer, }, \
...
@@ -150,16 +151,16 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
...
@@ -150,16 +151,16 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
{ 0x0019, (EmberAfAttributeMetadata*)&(generatedAttributes[22]), 4, 15, (CLUSTER_MASK_CLIENT| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION), emberAfFuncArrayOtaBootloadClusterClient, }, \
{ 0x0019, (EmberAfAttributeMetadata*)&(generatedAttributes[22]), 4, 15, (CLUSTER_MASK_CLIENT| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION), emberAfFuncArrayOtaBootloadClusterClient, }, \
{ 0x0202, (EmberAfAttributeMetadata*)&(generatedAttributes[40]), 3, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayFanControlClusterServer, }, \
{ 0x0202, (EmberAfAttributeMetadata*)&(generatedAttributes[40]), 3, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayFanControlClusterServer, }, \
{ 0x0402, (EmberAfAttributeMetadata*)&(generatedAttributes[43]), 4, 8, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0402, (EmberAfAttributeMetadata*)&(generatedAttributes[43]), 4, 8, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 1
3, 16
, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 1
4, 17
, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0021, (EmberAfAttributeMetadata*)&(generatedAttributes[26]), 6, 27, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0x0021, (EmberAfAttributeMetadata*)&(generatedAttributes[26]), 6, 27, (CLUSTER_MASK_CLIENT), NULL, }, \
}
}
// Endpoint types
// Endpoint types
#define GENERATED_ENDPOINT_TYPES { \
#define GENERATED_ENDPOINT_TYPES { \
{ (EmberAfCluster*)&(generatedClusters[0]), 12, 7
1
}, \
{ (EmberAfCluster*)&(generatedClusters[0]), 12, 7
2
}, \
{ (EmberAfCluster*)&(generatedClusters[12]), 9, 6
3
}, \
{ (EmberAfCluster*)&(generatedClusters[12]), 9, 6
4
}, \
{ (EmberAfCluster*)&(generatedClusters[21]), 10, 6
3
}, \
{ (EmberAfCluster*)&(generatedClusters[21]), 10, 6
4
}, \
{ (EmberAfCluster*)&(generatedClusters[31]), 1, 27 }, \
{ (EmberAfCluster*)&(generatedClusters[31]), 1, 27 }, \
}
}
...
@@ -183,7 +184,7 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
...
@@ -183,7 +184,7 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
#define ATTRIBUTE_SINGLETONS_SIZE (90)
#define ATTRIBUTE_SINGLETONS_SIZE (90)
// Total size of attribute storage
// Total size of attribute storage
#define ATTRIBUTE_MAX_SIZE 22
4
#define ATTRIBUTE_MAX_SIZE 22
7
// Array of endpoints that are supported
// Array of endpoints that are supported
#define FIXED_ENDPOINT_ARRAY { 1, 2, 3, 242 }
#define FIXED_ENDPOINT_ARRAY { 1, 2, 3, 242 }
...
@@ -303,54 +304,51 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
...
@@ -303,54 +304,51 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0x0201, 0x001C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0x0201, 0x001C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0x0201, 0x001E, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0x0201, 0x001E, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0x0202, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0x0202, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1000, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1001, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1001, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1002, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1002, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1003, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1004, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1004, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1005, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1005, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1006, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1006, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1007, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1007, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1008, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1008, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1009, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1009, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x100A, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x100A, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x100B, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x100B, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x100C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x100C, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0006, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0006, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x0010, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x0010, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x0012, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x0012, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x001C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x001C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x001E, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x001E, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1000, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1001, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1001, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1002, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1002, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1003, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1004, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1004, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1005, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1005, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1006, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1006, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1007, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1007, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1008, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1008, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1009, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1009, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x100A, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x100A, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x100B, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x100B, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x100C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x100C, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0x0006, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0x0006, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0x0202, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0x0202, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0x0402, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0x0402, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1000, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1001, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1001, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1002, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1002, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1003, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1004, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1004, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1005, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1005, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1006, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1006, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1007, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1007, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1008, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1008, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1009, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1009, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x100A, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x100A, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x100B, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x100B, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x100C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x100C, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
}
}
#define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS_TABLE_SIZE (5
5
)
#define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS_TABLE_SIZE (5
2
)
#endif // SILABS_AF_ENDPOINT_CONFIG
#endif // SILABS_AF_ENDPOINT_CONFIG
Code/KKAllToOneFloorHeatingMG21SDK665/kkAllInOneFloorHeatingMG21SDK665V1_endpoint_config.h.bak
View file @
2d0a05ab
...
@@ -15,8 +15,8 @@
...
@@ -15,8 +15,8 @@
#if BIGENDIAN_CPU
#if BIGENDIAN_CPU
#define GENERATED_DEFAULTS { \
#define GENERATED_DEFAULTS { \
5,'K','o','n','k','e',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 0,Default value: Basic,manufacturer name */, \
5,'K','o','n','k','e',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 0,Default value: Basic,manufacturer name */, \
16,'3','A','F','E','
1
','0','1','0','0','3','0','0','8','6','1','1',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 33,Default value: Basic,model identifier */, \
16,'3','A','F','E','
2
','0','1','0','0','3','0','0','8','6','1','1',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 33,Default value: Basic,model identifier */, \
8,'2','0','2','
0','1','1','2','6
',0,0,0,0,0,0,0,0 /* 66,Default value: Basic,date code */, \
8,'2','0','2','
1','0','3','0','9
',0,0,0,0,0,0,0,0 /* 66,Default value: Basic,date code */, \
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF /* 83,Default value: Over the Air Bootloading,OTA Upgrade Server ID */, \
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF /* 83,Default value: Over the Air Bootloading,OTA Upgrade Server ID */, \
0xFF, 0xFF, 0xFF, 0xFF /* 91,Default value: Over the Air Bootloading,Offset (address) into the file */, \
0xFF, 0xFF, 0xFF, 0xFF /* 91,Default value: Over the Air Bootloading,Offset (address) into the file */, \
0x09, 0xAC, 0x2F /* 95,Default value: Green Power,gpp functionality */, \
0x09, 0xAC, 0x2F /* 95,Default value: Green Power,gpp functionality */, \
...
@@ -26,8 +26,8 @@
...
@@ -26,8 +26,8 @@
#else // ! BIGENDIAN_CPU
#else // ! BIGENDIAN_CPU
#define GENERATED_DEFAULTS { \
#define GENERATED_DEFAULTS { \
5,'K','o','n','k','e',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 0,Default value: Basic,manufacturer name */, \
5,'K','o','n','k','e',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 0,Default value: Basic,manufacturer name */, \
16,'3','A','F','E','
1
','0','1','0','0','3','0','0','8','6','1','1',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 33,Default value: Basic,model identifier */, \
16,'3','A','F','E','
2
','0','1','0','0','3','0','0','8','6','1','1',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 33,Default value: Basic,model identifier */, \
8,'2','0','2','
0','1','1','2','6
',0,0,0,0,0,0,0,0 /* 66,Default value: Basic,date code */, \
8,'2','0','2','
1','0','3','0','9
',0,0,0,0,0,0,0,0 /* 66,Default value: Basic,date code */, \
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF /* 83,Default value: Over the Air Bootloading,OTA Upgrade Server ID */, \
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF /* 83,Default value: Over the Air Bootloading,OTA Upgrade Server ID */, \
0xFF, 0xFF, 0xFF, 0xFF /* 91,Default value: Over the Air Bootloading,Offset (address) into the file */, \
0xFF, 0xFF, 0xFF, 0xFF /* 91,Default value: Over the Air Bootloading,Offset (address) into the file */, \
0x2F, 0xAC, 0x09 /* 95,Default value: Green Power,gpp functionality */, \
0x2F, 0xAC, 0x09 /* 95,Default value: Green Power,gpp functionality */, \
...
@@ -42,7 +42,7 @@
...
@@ -42,7 +42,7 @@
// Generated attributes
// Generated attributes
#define GENERATED_ATTRIBUTES { \
#define GENERATED_ATTRIBUTES { \
{ 0x0000, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x01 } }, /* 0 / Basic / ZCL version*/\
{ 0x0000, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x01 } }, /* 0 / Basic / ZCL version*/\
{ 0x0001, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x
13
} }, /* 1 / Basic / application version*/\
{ 0x0001, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x
20
} }, /* 1 / Basic / application version*/\
{ 0x0002, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x01 } }, /* 2 / Basic / stack version*/\
{ 0x0002, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x01 } }, /* 2 / Basic / stack version*/\
{ 0x0003, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x10 } }, /* 3 / Basic / hardware version*/\
{ 0x0003, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x10 } }, /* 3 / Basic / hardware version*/\
{ 0x0004, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, 33, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)&(generatedDefaults[0]) } }, /* 4 / Basic / manufacturer name*/\
{ 0x0004, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, 33, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)&(generatedDefaults[0]) } }, /* 4 / Basic / manufacturer name*/\
...
@@ -104,6 +104,7 @@
...
@@ -104,6 +104,7 @@
{ 0x100A, ZCL_ENUM8_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } }, /* 60 / OptTunnel / FanMode*/\
{ 0x100A, ZCL_ENUM8_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } }, /* 60 / OptTunnel / FanMode*/\
{ 0x100B, ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } }, /* 61 / OptTunnel / OnOff*/\
{ 0x100B, ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } }, /* 61 / OptTunnel / OnOff*/\
{ 0x100C, ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } }, /* 62 / OptTunnel / NoDisturbMode*/\
{ 0x100C, ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } }, /* 62 / OptTunnel / NoDisturbMode*/\
{ 0x100D, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x00 } }, /* 63 / OptTunnel / RunMode*/\
}
}
...
@@ -131,7 +132,7 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
...
@@ -131,7 +132,7 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
{ 0x0202, (EmberAfAttributeMetadata*)&(generatedAttributes[40]), 3, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayFanControlClusterServer, }, \
{ 0x0202, (EmberAfAttributeMetadata*)&(generatedAttributes[40]), 3, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayFanControlClusterServer, }, \
{ 0x0B05, (EmberAfAttributeMetadata*)&(generatedAttributes[47]), 3, 4, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0B05, (EmberAfAttributeMetadata*)&(generatedAttributes[47]), 3, 4, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 0, 0, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 0, 0, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 1
3, 16
, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 1
4, 17
, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0000, (EmberAfAttributeMetadata*)&(generatedAttributes[0]), 9, 0, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0000, (EmberAfAttributeMetadata*)&(generatedAttributes[0]), 9, 0, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[9]), 1, 2, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[9]), 1, 2, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[10]), 2, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayIdentifyClusterServer, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[10]), 2, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayIdentifyClusterServer, }, \
...
@@ -140,7 +141,7 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
...
@@ -140,7 +141,7 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
{ 0x0006, (EmberAfAttributeMetadata*)&(generatedAttributes[20]), 2, 3, (CLUSTER_MASK_SERVER| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayOnOffClusterServer, }, \
{ 0x0006, (EmberAfAttributeMetadata*)&(generatedAttributes[20]), 2, 3, (CLUSTER_MASK_SERVER| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayOnOffClusterServer, }, \
{ 0x0019, (EmberAfAttributeMetadata*)&(generatedAttributes[22]), 4, 15, (CLUSTER_MASK_CLIENT| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION), emberAfFuncArrayOtaBootloadClusterClient, }, \
{ 0x0019, (EmberAfAttributeMetadata*)&(generatedAttributes[22]), 4, 15, (CLUSTER_MASK_CLIENT| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION), emberAfFuncArrayOtaBootloadClusterClient, }, \
{ 0x0201, (EmberAfAttributeMetadata*)&(generatedAttributes[32]), 8, 12, (CLUSTER_MASK_SERVER| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayThermostatClusterServer, }, \
{ 0x0201, (EmberAfAttributeMetadata*)&(generatedAttributes[32]), 8, 12, (CLUSTER_MASK_SERVER| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayThermostatClusterServer, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 1
3, 16
, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 1
4, 17
, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0000, (EmberAfAttributeMetadata*)&(generatedAttributes[0]), 9, 0, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0000, (EmberAfAttributeMetadata*)&(generatedAttributes[0]), 9, 0, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[9]), 1, 2, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[9]), 1, 2, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[10]), 2, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayIdentifyClusterServer, }, \
{ 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[10]), 2, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayIdentifyClusterServer, }, \
...
@@ -150,16 +151,16 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
...
@@ -150,16 +151,16 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
{ 0x0019, (EmberAfAttributeMetadata*)&(generatedAttributes[22]), 4, 15, (CLUSTER_MASK_CLIENT| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION), emberAfFuncArrayOtaBootloadClusterClient, }, \
{ 0x0019, (EmberAfAttributeMetadata*)&(generatedAttributes[22]), 4, 15, (CLUSTER_MASK_CLIENT| CLUSTER_MASK_INIT_FUNCTION| CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION), emberAfFuncArrayOtaBootloadClusterClient, }, \
{ 0x0202, (EmberAfAttributeMetadata*)&(generatedAttributes[40]), 3, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayFanControlClusterServer, }, \
{ 0x0202, (EmberAfAttributeMetadata*)&(generatedAttributes[40]), 3, 4, (CLUSTER_MASK_SERVER| CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION), emberAfFuncArrayFanControlClusterServer, }, \
{ 0x0402, (EmberAfAttributeMetadata*)&(generatedAttributes[43]), 4, 8, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0402, (EmberAfAttributeMetadata*)&(generatedAttributes[43]), 4, 8, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 1
3, 16
, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0xFCC0, (EmberAfAttributeMetadata*)&(generatedAttributes[50]), 1
4, 17
, (CLUSTER_MASK_SERVER), NULL, }, \
{ 0x0021, (EmberAfAttributeMetadata*)&(generatedAttributes[26]), 6, 27, (CLUSTER_MASK_CLIENT), NULL, }, \
{ 0x0021, (EmberAfAttributeMetadata*)&(generatedAttributes[26]), 6, 27, (CLUSTER_MASK_CLIENT), NULL, }, \
}
}
// Endpoint types
// Endpoint types
#define GENERATED_ENDPOINT_TYPES { \
#define GENERATED_ENDPOINT_TYPES { \
{ (EmberAfCluster*)&(generatedClusters[0]), 12, 7
1
}, \
{ (EmberAfCluster*)&(generatedClusters[0]), 12, 7
2
}, \
{ (EmberAfCluster*)&(generatedClusters[12]), 9, 6
3
}, \
{ (EmberAfCluster*)&(generatedClusters[12]), 9, 6
4
}, \
{ (EmberAfCluster*)&(generatedClusters[21]), 10, 6
3
}, \
{ (EmberAfCluster*)&(generatedClusters[21]), 10, 6
4
}, \
{ (EmberAfCluster*)&(generatedClusters[31]), 1, 27 }, \
{ (EmberAfCluster*)&(generatedClusters[31]), 1, 27 }, \
}
}
...
@@ -183,7 +184,7 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
...
@@ -183,7 +184,7 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
#define ATTRIBUTE_SINGLETONS_SIZE (90)
#define ATTRIBUTE_SINGLETONS_SIZE (90)
// Total size of attribute storage
// Total size of attribute storage
#define ATTRIBUTE_MAX_SIZE 22
4
#define ATTRIBUTE_MAX_SIZE 22
7
// Array of endpoints that are supported
// Array of endpoints that are supported
#define FIXED_ENDPOINT_ARRAY { 1, 2, 3, 242 }
#define FIXED_ENDPOINT_ARRAY { 1, 2, 3, 242 }
...
@@ -303,54 +304,51 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
...
@@ -303,54 +304,51 @@ const EmberAfGenericClusterFunction emberAfFuncArrayFanControlClusterServer[] =
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0x0201, 0x001C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0x0201, 0x001C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0x0201, 0x001E, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0x0201, 0x001E, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0x0202, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0x0202, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1000, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1001, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1001, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1002, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1002, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1003, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1004, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1004, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1005, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1005, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1006, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1006, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1007, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1007, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1008, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1008, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1009, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x1009, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x100A, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x100A, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x100B, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x100B, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x100C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 1, 0xFCC0, 0x100C, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0006, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0006, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x0010, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x0010, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x0012, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x0012, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x001C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x001C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x001E, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0x0201, 0x001E, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1000, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1001, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1001, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1002, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1002, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1003, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1004, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1004, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1005, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1005, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1006, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1006, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1007, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1007, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1008, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1008, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1009, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x1009, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x100A, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x100A, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x100B, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x100B, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x100C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 2, 0xFCC0, 0x100C, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0x0006, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0x0006, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0x0202, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0x0202, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0x0402, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0x0402, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1000, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1000, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1001, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1001, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1002, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1002, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1003, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1004, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1004, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1005, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1005, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1006, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1006, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1007, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1007, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1008, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1008, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1009, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x1009, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x100A, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x100A, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x100B, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x100B, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x100C, CLUSTER_MASK_SERVER, 0x0000, 1, 0, 0 }, \
{ EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 3, 0xFCC0, 0x100C, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, \
}
}
#define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS_TABLE_SIZE (5
5
)
#define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS_TABLE_SIZE (5
2
)
#endif // SILABS_AF_ENDPOINT_CONFIG
#endif // SILABS_AF_ENDPOINT_CONFIG
Code/KKAllToOneFloorHeatingMG21SDK665/zcl-framework-core/af-main-common.c
View file @
2d0a05ab
...
@@ -91,6 +91,7 @@
...
@@ -91,6 +91,7 @@
#include "znet-bookkeeping.h"
#include "znet-bookkeeping.h"
#include "../00ikonke-app/general/ikk-debug.h"
#include "../00ikonke-app/general/ikk-debug.h"
#include "../00ikonke-app/general/ikk-cluster.h"
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
#define INVALID_MESSAGE_TAG 0xFF
#define INVALID_MESSAGE_TAG 0xFF
...
@@ -564,15 +565,8 @@ EmberStatus emberAfSendUnicastToBindingsWithCallback(EmberApsFrame *apsFrame,
...
@@ -564,15 +565,8 @@ EmberStatus emberAfSendUnicastToBindingsWithCallback(EmberApsFrame *apsFrame,
uint8_t
endpoint_mark
=
apsFrame
->
sourceEndpoint
;
uint8_t
endpoint_mark
=
apsFrame
->
sourceEndpoint
;
uint16_t
cluster_mark
=
apsFrame
->
clusterId
;
uint16_t
cluster_mark
=
apsFrame
->
clusterId
;
//add by maozj 20200426
EmberEUI64
invalidMaskEui64
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
typedef
struct
tag_zcl_report_table
{
uint8_t
endpoint
;
EmberAfClusterId
clusterId
;
bool
reportEnable
;
bool
sceneRecallFlg
;
bool
reportGatewayEnable
;
bool
reportChildDeviceEnable
;
}
ZclReportTableSt
;
EmberEUI64
eui64GatewayAddr
;
EmberEUI64
eui64GatewayAddr
;
extern
void
kNwkGetGateWayEui64
(
EmberEUI64
eui64
);
extern
void
kNwkGetGateWayEui64
(
EmberEUI64
eui64
);
kNwkGetGateWayEui64
(
eui64GatewayAddr
);
kNwkGetGateWayEui64
(
eui64GatewayAddr
);
...
@@ -592,22 +586,37 @@ EmberStatus emberAfSendUnicastToBindingsWithCallback(EmberApsFrame *apsFrame,
...
@@ -592,22 +586,37 @@ EmberStatus emberAfSendUnicastToBindingsWithCallback(EmberApsFrame *apsFrame,
#if 1
#if 1
//add by maozj 20200512, send to gateway,and multi-control report
//add by maozj 20200512, send to gateway,and multi-control report
bool
permitStatus
=
kZclClusterGetPermitReportInfo
(
binding
.
local
,
binding
.
clusterId
,
&
zclReportInfo
);
bool
permitStatus
=
kZclClusterGetPermitReportInfo
(
binding
.
local
,
binding
.
clusterId
,
&
zclReportInfo
);
if
(
permitStatus
&&
(
!
zclReportInfo
.
reportGatewayEnable
||
!
zclReportInfo
.
reportChildDeviceEnable
)){
if
(
permitStatus
&&
(
!
zclReportInfo
.
reportGatewayEnable
||
!
zclReportInfo
.
reportChildDeviceEnable
)){
// use flag to not send
//iKonkeAfSelfPrint("\r\n###2222 maskEui64Addr");
//iKonkeAfSelfPrintBuffer(zclReportInfo.maskEui64Addr, 8, true);
if
((
zclReportInfo
.
reportGatewayEnable
&&
!
MEMCOMPARE
(
eui64GatewayAddr
,
binding
.
identifier
,
EUI64_SIZE
))
\
if
((
zclReportInfo
.
reportGatewayEnable
&&
!
MEMCOMPARE
(
eui64GatewayAddr
,
binding
.
identifier
,
EUI64_SIZE
))
\
||
(
zclReportInfo
.
reportChildDeviceEnable
&&
MEMCOMPARE
(
eui64GatewayAddr
,
binding
.
identifier
,
EUI64_SIZE
))){
||
(
zclReportInfo
.
reportChildDeviceEnable
&&
MEMCOMPARE
(
eui64GatewayAddr
,
binding
.
identifier
,
EUI64_SIZE
))){
iKonkeAfSelfPrint
(
"
\r\n
###1111 ep(%d),cluster(%02x)Send child(%d), gateway(%d)
\r\n
"
,
binding
.
local
,
binding
.
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
);
iKonkeAfSelfPrint
(
"###1111 ep(%d),cluster(%02x)Send child(%d), gateway(%d)
\r\n
"
,
binding
.
local
,
binding
.
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
);
//continue;
//continue;
}
else
{
}
else
{
iKonkeAfSelfPrint
(
"
\r\n
###2222 ep(%d),cluster(%02x)Send child(%d), gateway(%d)
\r\n
"
,
binding
.
local
,
binding
.
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
);
iKonkeAfSelfPrint
(
"###2222 ep(%d),cluster(%02x)Send child(%d), gateway(%d)
\r\n
"
,
binding
.
local
,
binding
.
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
);
continue
;
continue
;
}
}
iKonkeAfSelfPrint
(
"
\r\n
###3333 ep(%d),cluster(%02x)Send child(%d), gateway(%d)
\r\n
"
,
binding
.
local
,
binding
.
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
);
iKonkeAfSelfPrint
(
"###3333 ep(%d),cluster(%02x)Send child(%d), gateway(%d)
\r\n
"
,
binding
.
local
,
binding
.
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
);
}
else
if
(
!
permitStatus
){
}
else
if
(
!
permitStatus
){
iKonkeAfSelfPrint
(
"
\r\n
###4444 ep(%d),cluster(%02x)Send child(%d), gateway(%d)
\r\n
"
,
binding
.
local
,
binding
.
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
);
iKonkeAfSelfPrint
(
"###4444 ep(%d),cluster(%02x)Send child(%d), gateway(%d)
\r\n
"
,
binding
.
local
,
binding
.
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
);
continue
;
continue
;
}
}
if
(
!
MEMCOMPARE
(
zclReportInfo
.
maskEui64Addr
,
binding
.
identifier
,
EUI64_SIZE
)
&&
(
zclReportInfo
.
dest_endpoint
==
binding
.
remote
)
&&
(
zclReportInfo
.
endpoint
==
binding
.
local
))
{
//1y??μ??·oí·¢?í?üá?°ó?¨±í?Dμ??·??ó|£?2?·¢?í?üá?, ??3yμ??·
MEMSET
(
zclReportInfo
.
maskEui64Addr
,
0xff
,
EUI64_SIZE
);
zclReportInfo
.
endpoint
=
RESET_ENDPOINT
;
zclReportInfo
.
dest_endpoint
=
RESET_ENDPOINT
;
//KKK clear addr
iKonkeAfSelfPrint
(
"###5555 ep(%d),cluster(%02x)Send child(%d), gateway(%d)
\r\n
"
,
binding
.
local
,
binding
.
clusterId
,
zclReportInfo
.
reportChildDeviceEnable
,
zclReportInfo
.
reportGatewayEnable
);
kZclClusterSetPermitReportInfo
(
endpoint_mark
,
zclReportInfo
.
cluster
,
zclReportInfo
.
reportEnable
,
\
zclReportInfo
.
sceneRecallFlg
,
zclReportInfo
.
reportGatewayEnable
,
zclReportInfo
.
reportChildDeviceEnable
,
invalidMaskEui64
,
RESET_ENDPOINT
);
continue
;
}
#endif
#endif
// if (!MEMCOMPARE(eui64GatewayAddr, binding.identifier, EUI64_SIZE)){
// if (!MEMCOMPARE(eui64GatewayAddr, binding.identifier, EUI64_SIZE)){
iKonkeAfSelfPrint
(
"###6666 send
\r\n
"
);
status
=
send
(
EMBER_OUTGOING_VIA_BINDING
,
status
=
send
(
EMBER_OUTGOING_VIA_BINDING
,
i
,
i
,
apsFrame
,
apsFrame
,
...
@@ -625,8 +634,8 @@ EmberStatus emberAfSendUnicastToBindingsWithCallback(EmberApsFrame *apsFrame,
...
@@ -625,8 +634,8 @@ EmberStatus emberAfSendUnicastToBindingsWithCallback(EmberApsFrame *apsFrame,
}
}
kZclClusterGetPermitReportInfo
(
endpoint_mark
,
cluster_mark
,
&
zclReportInfo
);
kZclClusterGetPermitReportInfo
(
endpoint_mark
,
cluster_mark
,
&
zclReportInfo
);
if
(
zclReportInfo
.
reportChildDeviceEnable
==
true
){
if
(
zclReportInfo
.
reportChildDeviceEnable
==
true
){
// clear report child attr
kZclClusterSetPermitReportInfo
(
endpoint_mark
,
zclReportInfo
.
reportEnable
,
zclReportInfo
.
sceneRecallFlg
,
zclReportInfo
.
reportGatewayEnable
,
false
);
kZclClusterSetPermitReportInfo
(
endpoint_mark
,
zclReportInfo
.
cluster
,
zclReportInfo
.
reportEnable
,
zclReportInfo
.
sceneRecallFlg
,
zclReportInfo
.
reportGatewayEnable
,
false
,
invalidMaskEui64
,
RESET_ENDPOINT
);
}
}
return
status
;
return
status
;
...
...
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