Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
k-sdk
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
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
陈伟灿
k-sdk
Commits
d70cf063
Commit
d70cf063
authored
Nov 08, 2021
by
陈伟灿
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'yjq' into 'master'
1108代码合并 See merge request chenweican/k-sdk!155
parents
fd31b751
7b21e73c
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
8280 additions
and
7205 deletions
+8280
-7205
application/klansdk/Serial.c
application/klansdk/Serial.c
+450
-448
application/klansdk/kk_data_handle.c
application/klansdk/kk_data_handle.c
+33
-0
application/klansdk/kk_data_mng.c
application/klansdk/kk_data_mng.c
+1
-1
application/klansdk/kk_lan_main.c
application/klansdk/kk_lan_main.c
+4
-0
application/klansdk/kk_lan_sync.c
application/klansdk/kk_lan_sync.c
+1614
-1456
application/klansdk/kk_lan_sync.h
application/klansdk/kk_lan_sync.h
+97
-76
application/klansdk/kk_lan_voice_panel.c
application/klansdk/kk_lan_voice_panel.c
+521
-463
application/klansdk/kk_lan_voice_panel.h
application/klansdk/kk_lan_voice_panel.h
+58
-30
application/klansdk/kk_lan_vp_ctrl.c
application/klansdk/kk_lan_vp_ctrl.c
+1275
-660
application/klansdk/kk_oldccu_msg.c
application/klansdk/kk_oldccu_msg.c
+2
-0
application/klansdk/kk_voice_panel_cfg.c
application/klansdk/kk_voice_panel_cfg.c
+1271
-1261
application/klansdk/kk_voice_panel_handle.c
application/klansdk/kk_voice_panel_handle.c
+1816
-1628
application/klansdk/kk_voice_panel_handle.h
application/klansdk/kk_voice_panel_handle.h
+100
-92
application/klansdk/uart_proto.c
application/klansdk/uart_proto.c
+895
-947
application/klansdk/uart_proto.h
application/klansdk/uart_proto.h
+143
-143
No files found.
application/klansdk/Serial.c
View file @
d70cf063
...
@@ -245,6 +245,7 @@ void eSerial_start()
...
@@ -245,6 +245,7 @@ void eSerial_start()
#endif
#endif
serial_fd
=
devOpen
(
serialDev
);
serial_fd
=
devOpen
(
serialDev
);
printf
(
"------------------------------------>serial_fd=%d
\n
"
,
serial_fd
);
}
}
/***********************************************************
/***********************************************************
...
@@ -290,7 +291,8 @@ teSerial_Status eSerial_Read(unsigned char *data)
...
@@ -290,7 +291,8 @@ teSerial_Status eSerial_Read(unsigned char *data)
}
}
else
else
{
{
printf
(
"Serial read: %d
\n
"
,
res
);
printf
(
"Serial read: %d,serial_fd=%d
\n
"
,
res
,
serial_fd
);
if
(
res
==
0
)
if
(
res
==
0
)
{
{
...
...
application/klansdk/kk_data_handle.c
View file @
d70cf063
...
@@ -374,6 +374,22 @@ int kk_data_handle(cJSON *json,int sockfd)
...
@@ -374,6 +374,22 @@ int kk_data_handle(cJSON *json,int sockfd)
kk_zb_devs_hw_ack
(
sockfd
,
conditions
);
kk_zb_devs_hw_ack
(
sockfd
,
conditions
);
}
else
if
(
strcmp
(
opcode
->
valuestring
,
GET_HISTORY_ALARM_LOG
)
==
0
){
}
else
if
(
strcmp
(
opcode
->
valuestring
,
GET_HISTORY_ALARM_LOG
)
==
0
){
kk_handle_get_history_info
();
kk_handle_get_history_info
();
}
else
if
(
strcmp
(
opcode
->
valuestring
,
"SOUND_VAL"
)
==
0
){
arg
=
cJSON_GetObjectItem
(
json
,
ARG_STRING
);
int
val
=
atoi
(
arg
->
valuestring
);
if
(
val
>
100
){
val
=
100
;
}
else
if
(
val
<
0
){
val
=
0
;
}
}
else
if
(
strcmp
(
opcode
->
valuestring
,
"SOUND_SWITCH"
)
==
0
){
arg
=
cJSON_GetObjectItem
(
json
,
ARG_STRING
);
if
(
strcmp
(
arg
->
valuestring
,
"on"
)){
}
else
if
(
strcmp
(
arg
->
valuestring
,
"off"
)){
}
}
else
if
(
strcmp
(
opcode
->
valuestring
,
DEL_HISTORY_ALARM_LOG
)
==
0
){
}
else
if
(
strcmp
(
opcode
->
valuestring
,
DEL_HISTORY_ALARM_LOG
)
==
0
){
cJSON
*
key
=
cJSON_GetObjectItem
(
json
,
"arg"
);
cJSON
*
key
=
cJSON_GetObjectItem
(
json
,
"arg"
);
if
(
key
!=
NULL
){
if
(
key
!=
NULL
){
...
@@ -495,8 +511,19 @@ int is_arming_status_notify(cJSON *payload)
...
@@ -495,8 +511,19 @@ int is_arming_status_notify(cJSON *payload)
return
-
1
;
return
-
1
;
}
}
static
void
kk_dev_node_onoffline_handle
(
const
char
*
deviceCode
,
int
online
)
{
kk_map_dev_node_t
*
node
=
NULL
;
if
(
kk_map_dev_search_by_deviceCode
(
deviceCode
,
&
node
)
!=
0
){
return
;
}
node
->
online_status
=
(
online
==
1
)
?
1
:
0
;
}
static
int
kk_device_onoffline_handle
(
cJSON
*
payload
,
int
online
)
static
int
kk_device_onoffline_handle
(
cJSON
*
payload
,
int
online
)
{
{
if
(
payload
==
NULL
){
if
(
payload
==
NULL
){
return
-
1
;
return
-
1
;
}
}
...
@@ -504,6 +531,9 @@ static int kk_device_onoffline_handle(cJSON *payload,int online)
...
@@ -504,6 +531,9 @@ static int kk_device_onoffline_handle(cJSON *payload,int online)
if
(
params
==
NULL
)
return
-
1
;
if
(
params
==
NULL
)
return
-
1
;
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
params
,
"deviceCode"
);
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
params
,
"deviceCode"
);
if
(
deviceCode
==
NULL
)
return
-
1
;
if
(
deviceCode
==
NULL
)
return
-
1
;
kk_dev_node_onoffline_handle
(
deviceCode
->
valuestring
,
online
);
cJSON
*
hw_info
=
kk_zb_dev_hw_info_build_by_deviceCode
(
0
,
deviceCode
->
valuestring
,
online
);
cJSON
*
hw_info
=
kk_zb_dev_hw_info_build_by_deviceCode
(
0
,
deviceCode
->
valuestring
,
online
);
cJSON
*
root
;
cJSON
*
root
;
cJSON
*
array
=
cJSON_CreateArray
();
cJSON
*
array
=
cJSON_CreateArray
();
...
@@ -515,6 +545,9 @@ static int kk_device_onoffline_handle(cJSON *payload,int online)
...
@@ -515,6 +545,9 @@ static int kk_device_onoffline_handle(cJSON *payload,int online)
cJSON_AddItemToObject
(
root
,
"arg"
,
array
);
cJSON_AddItemToObject
(
root
,
"arg"
,
array
);
send_msg_to_module
(
root
);
send_msg_to_module
(
root
);
cJSON_Delete
(
root
);
cJSON_Delete
(
root
);
return
0
;
return
0
;
}
}
static
int
kk_del_historyalarm_handle
(
cJSON
*
payload
)
static
int
kk_del_historyalarm_handle
(
cJSON
*
payload
)
...
...
application/klansdk/kk_data_mng.c
View file @
d70cf063
...
@@ -141,7 +141,7 @@ static kk_map_dev_node_t *kk_map_dev_node_create(const char *deviceCode,const ch
...
@@ -141,7 +141,7 @@ static kk_map_dev_node_t *kk_map_dev_node_create(const char *deviceCode,const ch
memcpy
(
node
->
deviceCode
,
deviceCode
,
strlen
(
deviceCode
));
memcpy
(
node
->
deviceCode
,
deviceCode
,
strlen
(
deviceCode
));
memcpy
(
node
->
productCode
,
productCode
,
strlen
(
productCode
));
memcpy
(
node
->
productCode
,
productCode
,
strlen
(
productCode
));
node
->
online_status
=
(
strcmp
(
onlineStatus
,
"1"
)
==
0
)
?
1
:
0
;
node
->
online_status
=
(
strcmp
(
onlineStatus
,
"1"
)
==
0
)
?
1
:
0
;
debug_log
(
LOG_ALERT_LEVEL
,
"[add node]node->deviceCode=%s
\n
"
,
node
->
deviceCode
);
debug_log
(
LOG_ALERT_LEVEL
,
"[add node]node->deviceCode=%s
,node->online_status=%d
\n
"
,
node
->
deviceCode
,
node
->
online_status
);
memcpy
(
node
->
opearteType
,
optype
->
valuestring
,
strlen
(
optype
->
valuestring
));
memcpy
(
node
->
opearteType
,
optype
->
valuestring
,
strlen
(
optype
->
valuestring
));
node
->
channelNum
=
channel
->
valueint
;
node
->
channelNum
=
channel
->
valueint
;
...
...
application/klansdk/kk_lan_main.c
View file @
d70cf063
...
@@ -157,6 +157,10 @@ int kk_sync_timer_is_running(void)
...
@@ -157,6 +157,10 @@ int kk_sync_timer_is_running(void)
int
main
(
int
argc
,
char
*
argv
[])
int
main
(
int
argc
,
char
*
argv
[])
{
{
int
ret
=
0
;
int
ret
=
0
;
...
...
application/klansdk/kk_lan_sync.c
View file @
d70cf063
...
@@ -971,6 +971,152 @@ char *speedMap[] = {
...
@@ -971,6 +971,152 @@ char *speedMap[] = {
"UNKONWN"
,
"UNKONWN"
,
"UNKONWN"
,
"UNKONWN"
,
};
};
static
INDOOR_AIR_DEV
indoor_air_status
[
MAX_AC_GW_AIR_NUM
];
int
indoor_airstatus_table_match_item
(
const
char
*
deviceCode
)
{
int
i
;
for
(
i
=
0
;
i
<
MAX_AC_GW_AIR_NUM
;
i
++
){
if
(
strcmp
(
deviceCode
,
indoor_air_status
[
i
].
deviceCode
)
==
0
){
return
i
;
}
}
return
-
1
;
}
int
indoor_airstatus_table_find_empty_item
(
void
)
{
int
i
;
for
(
i
=
0
;
i
<
MAX_AC_GW_AIR_NUM
;
i
++
){
if
(
strlen
(
indoor_air_status
[
i
].
deviceCode
)
==
0
){
return
i
;
}
}
return
-
1
;
}
int
indoor_airstatus_table_match_status_item
(
int
epNum
,
INDOOR_AIR_STATUS
*
status
)
{
int
i
;
INDOOR_AIR_STATUS
*
ptr
=
status
;
for
(
i
=
0
;
i
<
MAX_AC_INDOOR_AIR_NUM
;
i
++
,
ptr
++
){
if
(
ptr
->
epNum
==
epNum
){
return
i
;
}
}
return
-
1
;
}
int
indoor_airstatus_table_find_empty_status_item
(
INDOOR_AIR_STATUS
*
status
)
{
int
i
;
INDOOR_AIR_STATUS
*
ptr
=
status
;
for
(
i
=
0
;
i
<
MAX_AC_INDOOR_AIR_NUM
;
i
++
,
ptr
++
){
if
(
ptr
->
epNum
==
0
){
return
i
;
}
}
return
-
1
;
}
int
indoor_airstatus_table_insert_item
(
const
char
*
deviceCode
,
int
epNum
,
int
online
,
int
PowerSwitch
,
double
Temperature
,
int
WindSpeed
,
int
WorkMode
)
{
if
(
PowerSwitch
==
0
&&
Temperature
==
0
&&
WindSpeed
==
0
&&
WorkMode
==
0
){
return
-
1
;
}
int
ix
=
indoor_airstatus_table_match_item
(
deviceCode
);
if
(
ix
!=-
1
){
int
ix2
=
indoor_airstatus_table_match_status_item
(
epNum
,
indoor_air_status
[
ix
].
status
);
if
(
ix2
!=-
1
){
indoor_air_status
[
ix
].
status
[
ix2
].
online
=
online
;
indoor_air_status
[
ix
].
status
[
ix2
].
PowerSwitch
=
PowerSwitch
;
indoor_air_status
[
ix
].
status
[
ix2
].
Temperature
=
Temperature
;
indoor_air_status
[
ix
].
status
[
ix2
].
WindSpeed
=
WindSpeed
;
indoor_air_status
[
ix
].
status
[
ix2
].
WorkMode
=
WorkMode
;
debug_log
(
LOG_NOTICE_LEVEL
,
"[update] ix=%d,ix2=%d
\n
"
,
ix
,
ix2
);
}
else
{
ix2
=
indoor_airstatus_table_find_empty_status_item
(
indoor_air_status
[
ix
].
status
);
if
(
ix2
==-
1
){
debug_log
(
LOG_WARNING_LEVEL
,
"table full!!!
\n
"
);
return
-
1
;
}
debug_log
(
LOG_NOTICE_LEVEL
,
"[add] epNum=%d,ix2=%d
\n
"
,
epNum
,
ix2
);
indoor_air_status
[
ix
].
status
[
ix2
].
epNum
=
epNum
;
indoor_air_status
[
ix
].
status
[
ix2
].
online
=
online
;
indoor_air_status
[
ix
].
status
[
ix2
].
PowerSwitch
=
PowerSwitch
;
indoor_air_status
[
ix
].
status
[
ix2
].
Temperature
=
Temperature
;
indoor_air_status
[
ix
].
status
[
ix2
].
WindSpeed
=
WindSpeed
;
indoor_air_status
[
ix
].
status
[
ix2
].
WorkMode
=
WorkMode
;
}
}
else
{
ix
=
indoor_airstatus_table_find_empty_item
();
if
(
ix
==-
1
){
debug_log
(
LOG_WARNING_LEVEL
,
"table full!!!
\n
"
);
return
-
1
;
}
debug_log
(
LOG_NOTICE_LEVEL
,
"[add] deviceCode=%s
\n
"
,
deviceCode
);
snprintf
(
indoor_air_status
[
ix
].
deviceCode
,
PRODUCT_CODE_LEN
,
"%s"
,
deviceCode
);
indoor_air_status
[
ix
].
status
[
0
].
epNum
=
epNum
;
indoor_air_status
[
ix
].
status
[
0
].
online
=
online
;
indoor_air_status
[
ix
].
status
[
0
].
PowerSwitch
=
PowerSwitch
;
indoor_air_status
[
ix
].
status
[
0
].
Temperature
=
Temperature
;
indoor_air_status
[
ix
].
status
[
0
].
WindSpeed
=
WindSpeed
;
indoor_air_status
[
ix
].
status
[
0
].
WorkMode
=
WorkMode
;
}
return
0
;
}
INDOOR_AIR_STATUS
*
indoor_airstatus_table_find_item
(
const
char
*
deviceCode
,
int
epNum
)
{
int
ix
=
indoor_airstatus_table_match_item
(
deviceCode
);
if
(
ix
!=-
1
){
int
ix2
=
indoor_airstatus_table_match_status_item
(
epNum
,
indoor_air_status
[
ix
].
status
);
if
(
ix2
!=-
1
){
return
&
indoor_air_status
[
ix
].
status
[
ix2
];
}
}
return
NULL
;
}
int
indoor_airstatus_table_delete_item
(
const
char
*
deviceCode
)
{
debug_log
(
LOG_NOTICE_LEVEL
,
"[delete] deviceCode=%s
\n
"
,
deviceCode
);
int
ix
=
indoor_airstatus_table_match_item
(
deviceCode
);
if
(
ix
!=-
1
){
memset
(
indoor_air_status
[
ix
].
deviceCode
,
0
,
PRODUCT_CODE_LEN
);
for
(
int
i
=
0
;
i
<
MAX_AC_INDOOR_AIR_NUM
;
i
++
){
memset
(
&
indoor_air_status
[
ix
].
status
[
i
],
0
,
sizeof
(
INDOOR_AIR_STATUS
));
}
}
else
{
return
-
1
;
}
return
0
;
}
int
kk_send_indoorAir_status
(
cJSON
*
info
,
const
char
*
deviceCode
)
int
kk_send_indoorAir_status
(
cJSON
*
info
,
const
char
*
deviceCode
)
{
{
char
epStr
[
4
]
=
{
0
};
char
epStr
[
4
]
=
{
0
};
...
@@ -1011,6 +1157,8 @@ int kk_send_indoorAir_status(cJSON *info,const char *deviceCode)
...
@@ -1011,6 +1157,8 @@ int kk_send_indoorAir_status(cJSON *info,const char *deviceCode)
cJSON_AddStringToObject
(
arg
,
"runModel"
,
modeMap
[
WorkMode
->
valueint
]);
cJSON_AddStringToObject
(
arg
,
"runModel"
,
modeMap
[
WorkMode
->
valueint
]);
cJSON_AddItemToObject
(
root
,
"arg"
,
arg
);
cJSON_AddItemToObject
(
root
,
"arg"
,
arg
);
indoor_airstatus_table_insert_item
(
deviceCode
,
atoi
(
epNum
->
valuestring
),
1
,
PowerSwitch
->
valueint
,
Temperature
->
valuedouble
,
WindSpeed
->
valueint
,
WorkMode
->
valueint
);
send_msg_to_module
(
root
);
send_msg_to_module
(
root
);
cJSON_Delete
(
root
);
cJSON_Delete
(
root
);
return
0
;
return
0
;
...
@@ -1052,6 +1200,7 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
...
@@ -1052,6 +1200,7 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
kk_creater_nodeid
(
deviceCode
->
valuestring
,
1
,
ac_gw_nodeid
);
kk_creater_nodeid
(
deviceCode
->
valuestring
,
1
,
ac_gw_nodeid
);
cJSON
*
properties
=
cJSON_GetObjectItem
(
subitem
,
"properties"
);
cJSON
*
properties
=
cJSON_GetObjectItem
(
subitem
,
"properties"
);
cJSON
*
onlineStatus
=
cJSON_GetObjectItem
(
subitem
,
"onlineStatus"
);
cJSON
*
indoorItem
=
cJSON_CreateObject
();
cJSON
*
indoorItem
=
cJSON_CreateObject
();
kk_get_ac_indoor_info_by_deviceCode
(
data
,
deviceCode
->
valuestring
,
roomId
,
NULL
,
1
);
kk_get_ac_indoor_info_by_deviceCode
(
data
,
deviceCode
->
valuestring
,
roomId
,
NULL
,
1
);
...
@@ -1065,6 +1214,8 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
...
@@ -1065,6 +1214,8 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
cJSON
*
epsAry
=
cJSON_GetObjectItem
(
properties
,
"eps"
);
cJSON
*
epsAry
=
cJSON_GetObjectItem
(
properties
,
"eps"
);
cJSON
*
EpTotal
=
cJSON_GetObjectItem
(
properties
,
"EpTotal"
);
cJSON
*
EpTotal
=
cJSON_GetObjectItem
(
properties
,
"EpTotal"
);
int
epsize
=
cJSON_GetArraySize
(
epsAry
);
int
epsize
=
cJSON_GetArraySize
(
epsAry
);
g_indoor_item
=
(
CENTRAL_AC_INDOOR_ITEM
*
)
malloc
(
sizeof
(
CENTRAL_AC_INDOOR_ITEM
)
*
epsize
);
g_indoor_item
=
(
CENTRAL_AC_INDOOR_ITEM
*
)
malloc
(
sizeof
(
CENTRAL_AC_INDOOR_ITEM
)
*
epsize
);
if
(
g_indoor_item
==
NULL
){
if
(
g_indoor_item
==
NULL
){
...
@@ -1097,6 +1248,13 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
...
@@ -1097,6 +1248,13 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
memcpy
(
g_indoor_item
[
k
].
ac_gw_status
.
speed
,
speedMap
[
WindSpeed
->
valueint
],
strlen
(
speedMap
[
WindSpeed
->
valueint
]));
memcpy
(
g_indoor_item
[
k
].
ac_gw_status
.
speed
,
speedMap
[
WindSpeed
->
valueint
],
strlen
(
speedMap
[
WindSpeed
->
valueint
]));
cJSON
*
WorkMode
=
cJSON_GetObjectItem
(
infoItem
,
"WorkMode"
);
cJSON
*
WorkMode
=
cJSON_GetObjectItem
(
infoItem
,
"WorkMode"
);
memcpy
(
g_indoor_item
[
k
].
ac_gw_status
.
mode
,
modeMap
[
WorkMode
->
valueint
],
strlen
(
modeMap
[
WorkMode
->
valueint
]));
memcpy
(
g_indoor_item
[
k
].
ac_gw_status
.
mode
,
modeMap
[
WorkMode
->
valueint
],
strlen
(
modeMap
[
WorkMode
->
valueint
]));
cJSON
*
epNum
=
cJSON_GetObjectItem
(
infoItem
,
"epNum"
);
indoor_airstatus_table_insert_item
(
deviceCode
->
valuestring
,
epNum
->
valueint
,
onlineStatus
->
valueint
,
PowerSwitch
->
valueint
,
Temperature
->
valuedouble
,
WindSpeed
->
valueint
,
WorkMode
->
valueint
);
debug_log
(
LOG_EMERG_LEVEL
,
"mark!!!
\n
"
);
}
}
kk_create_new_central_ac
(
gwDeviceCode
->
valuestring
,
deviceCode
->
valuestring
,
nodeid
);
kk_create_new_central_ac
(
gwDeviceCode
->
valuestring
,
deviceCode
->
valuestring
,
nodeid
);
}
}
...
...
application/klansdk/kk_lan_sync.h
View file @
d70cf063
...
@@ -3,6 +3,8 @@
...
@@ -3,6 +3,8 @@
#include "cJSON.h"
#include "cJSON.h"
#define MAX_AC_GW_AIR_NUM 5
#define MAX_AC_INDOOR_AIR_NUM 16
#define AIR_AC_INDOOR_ID_SIZE 8
#define AIR_AC_INDOOR_ID_SIZE 8
#define AIR_AC_INDOOR_ROOM_ID_SIZE 24
#define AIR_AC_INDOOR_ROOM_ID_SIZE 24
...
@@ -46,6 +48,23 @@ typedef struct{
...
@@ -46,6 +48,23 @@ typedef struct{
}
SYN_SCENE_ITEM
;
}
SYN_SCENE_ITEM
;
typedef
struct
{
int
epNum
;
int
online
;
int
PowerSwitch
;
double
Temperature
;
int
WindSpeed
;
int
WorkMode
;
}
INDOOR_AIR_STATUS
;
typedef
struct
{
char
deviceCode
[
PRODUCT_CODE_LEN
];
INDOOR_AIR_STATUS
status
[
MAX_AC_INDOOR_AIR_NUM
];
}
INDOOR_AIR_DEV
;
cJSON
*
kk_get_raw_sync_data
(
cJSON
*
payload
);
cJSON
*
kk_get_raw_sync_data
(
cJSON
*
payload
);
...
@@ -64,7 +83,9 @@ cJSON * val_conver_new2old(cJSON *newccuItem,cJSON *oldccuItem,int syn_type);
...
@@ -64,7 +83,9 @@ cJSON * val_conver_new2old(cJSON *newccuItem,cJSON *oldccuItem,int syn_type);
int
indoor_airstatus_table_insert_item
(
const
char
*
deviceCode
,
int
epNum
,
int
online
,
int
PowerSwitch
,
double
Temperature
,
int
WindSpeed
,
int
WorkMode
);
INDOOR_AIR_STATUS
*
indoor_airstatus_table_find_item
(
const
char
*
deviceCode
,
int
epNum
);
int
indoor_airstatus_table_delete_item
(
const
char
*
deviceCode
);
...
...
application/klansdk/kk_lan_voice_panel.c
View file @
d70cf063
...
@@ -96,9 +96,14 @@ typedef struct {
...
@@ -96,9 +96,14 @@ typedef struct {
}
vpCFGInfo
;
}
vpCFGInfo
;
typedef
struct
{
typedef
struct
{
int
state
;
int
set_time_flag
;
int
get_ver_flag
;
int
ota_update_flag
;
int
file_update_flag
;
vpCFGInfo
cfg_info
;
vpCFGInfo
cfg_info
;
int
updateFlag
;
}
VP_MANAGE
;
}
VP_MANAGE
;
...
@@ -185,36 +190,20 @@ static int _vp_config_file_version_load(void)
...
@@ -185,36 +190,20 @@ static int _vp_config_file_version_load(void)
return
1
;
return
1
;
}
}
void
kk_vp_set_updateFlag
(
int
flag
)
{
vp_mag
.
updateFlag
=
(
flag
!=
0
)
?
1
:
0
;
}
void
kk_v
p_config_file_update
(
void
)
void
kk_v
oice_update_config_file
(
void
)
{
{
if
(
vp_mag
.
updateFlag
==
0
){
kk_vp_config_file_update_stop
(
vp_mag
.
cfg_info
.
f_ver
);
return
;
}
if
(
vp_mag
.
state
==
UPDATING_8009_CONFIG_FILE_INFO
||
kk_vp_config_file_update_start
(
vp_mag
.
cfg_info
.
next_ver
);
vp_mag
.
state
==
START_8009_CONFIG_FILE_UPDATE
){
kk_vp_set_state_machine
(
STOP_8009_CONFIG_FILE_UPDATE
);
}
else
{
kk_vp_set_state_machine
(
START_8009_CONFIG_FILE_UPDATE
);
}
kk_vp_set_updateFlag
(
0
);
vp_mag
.
file_update_flag
=
1
;
}
}
void
kk_vp_set_state_machine
(
int
state
)
{
if
(
vp_mag
.
state
!=
state
){
INFO_PRINT
(
"[vp state machine]%d->%d
\n
"
,
vp_mag
.
state
,
state
);
vp_mag
.
state
=
state
;
}
}
int
kk_vp_get_config_file_version
(
void
)
int
kk_vp_get_config_file_version
(
void
)
{
{
...
@@ -244,8 +233,9 @@ void kk_vp_cfg_info_check(uint32_t f_ver,uint32_t f_size,uint32_t crc32)
...
@@ -244,8 +233,9 @@ void kk_vp_cfg_info_check(uint32_t f_ver,uint32_t f_size,uint32_t crc32)
printf
(
"[VP]File Version=%08x,File Size=%08x,CRC32=%08x
\n
"
,
f_ver
,
f_size
,
crc32
);
printf
(
"[VP]File Version=%08x,File Size=%08x,CRC32=%08x
\n
"
,
f_ver
,
f_size
,
crc32
);
printf
(
"[LAN]File Version=%08x,File Size=%08x,CRC32=%08x
\n
"
,
vp_mag
.
cfg_info
.
f_ver
,
vp_mag
.
cfg_info
.
f_size
,
vp_mag
.
cfg_info
.
crc32
);
printf
(
"[LAN]File Version=%08x,File Size=%08x,CRC32=%08x
\n
"
,
vp_mag
.
cfg_info
.
f_ver
,
vp_mag
.
cfg_info
.
f_size
,
vp_mag
.
cfg_info
.
crc32
);
kk_vp_set_updateFlag
(
1
);
printf
(
"[%s][%d]update config file.
\n
"
,
__FUNCTION__
,
__LINE__
);
debug_log
(
LOG_EMERG_LEVEL
,
"-------------------->start update config file<------------------
\n
"
);
kk_voice_update_config_file
();
}
}
}
}
...
@@ -254,13 +244,29 @@ void kk_vp_update_result_check(uint8_t status,uint32_t f_ver)
...
@@ -254,13 +244,29 @@ void kk_vp_update_result_check(uint8_t status,uint32_t f_ver)
if
(
status
==
0
&&
(
vp_mag
.
cfg_info
.
f_ver
==
f_ver
)
){
if
(
status
==
0
&&
(
vp_mag
.
cfg_info
.
f_ver
==
f_ver
)
){
vp_mag
.
cfg_info
.
next_ver
=
vp_mag
.
cfg_info
.
f_ver
+
1
;
vp_mag
.
cfg_info
.
next_ver
=
vp_mag
.
cfg_info
.
f_ver
+
1
;
printf
(
"[cfg ver]File Version=%08x
\n
"
,
vp_mag
.
cfg_info
.
f_ver
);
printf
(
"[cfg ver]File Version=%08x
\n
"
,
vp_mag
.
cfg_info
.
f_ver
);
kk_vp_set_state_machine
(
GET_8009_CONFIG_FILE_INFO
);
}
else
{
}
else
{
kk_vp_set_updateFlag
(
1
);
debug_log
(
LOG_EMERG_LEVEL
,
"-------------------->start update config file again<------------------
\n
"
);
printf
(
"[%s][%d]update config file.
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_voice_update_config_file
();
}
}
}
}
void
kk_voice_reset_ver_flag
(
void
)
{
vp_mag
.
get_ver_flag
=
0
;
vp_mag
.
ota_update_flag
=
0
;
}
void
kk_voice_set_time_flag
(
void
)
{
vp_mag
.
set_time_flag
=
1
;
}
void
kk_get_voice_version
(
void
)
{
debug_log
(
LOG_INFO_LEVEL
,
"mark!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
\n
"
);
vp_mag
.
get_ver_flag
=
1
;
}
...
@@ -270,13 +276,11 @@ void kk_vp_update_result_check(uint8_t status,uint32_t f_ver)
...
@@ -270,13 +276,11 @@ void kk_vp_update_result_check(uint8_t status,uint32_t f_ver)
int
kk_vp_config_file_info_check
(
int
f_ver
,
int
f_size
,
int
crc32
)
int
kk_vp_config_file_info_check
(
int
f_ver
,
int
f_size
,
int
crc32
)
{
{
kk_vp_set_state_machine
(
UPDATING_8009_CONFIG_FILE_INFO
);
if
(
vp_mag
.
cfg_info
.
f_ver
==
f_ver
&&
if
(
vp_mag
.
cfg_info
.
f_ver
==
f_ver
&&
vp_mag
.
cfg_info
.
f_size
==
f_size
&&
vp_mag
.
cfg_info
.
f_size
==
f_size
&&
vp_mag
.
cfg_info
.
crc32
==
crc32
){
vp_mag
.
cfg_info
.
crc32
==
crc32
){
kk_vp_set_state_machine
(
UPDATING_8009_CONFIG_FILE_INFO
);
return
1
;
return
1
;
}
}
...
@@ -301,6 +305,8 @@ void kk_voice_ota_mtu_set(uint16_t mtu)
...
@@ -301,6 +305,8 @@ void kk_voice_ota_mtu_set(uint16_t mtu)
void
kk_vp_manage_init
(
void
)
void
kk_vp_manage_init
(
void
)
{
{
kk_voice_ota_mtu_set
(
KK_VOICE_OTA_MTU
);
vp_scene_id_map_load
();
vp_scene_id_map_load
();
_vp_config_file_version_load
();
_vp_config_file_version_load
();
vp_mag
.
cfg_info
.
f_size
=
_vp_get_cfg_file_size
();
vp_mag
.
cfg_info
.
f_size
=
_vp_get_cfg_file_size
();
...
@@ -310,63 +316,80 @@ void kk_vp_manage_init(void)
...
@@ -310,63 +316,80 @@ void kk_vp_manage_init(void)
void
*
kk_vp_manage_thread
(
void
*
arg
)
void
*
kk_vp_manage_thread
(
void
*
arg
)
{
{
INFO_PRINT
(
"[%s] start...
\n
"
,
__FUNCTION__
);
INFO_PRINT
(
"[%s] start...
\n
"
,
__FUNCTION__
);
usleep
(
100
*
1000
);
kk_vp_manage_init
();
kk_vp_manage_init
();
while
(
1
)
while
(
1
)
{
{
kk_vp_config_file_update
();
if
(
vp_mag
.
file_update_flag
==
1
||
vp_mag
.
ota_update_flag
==
1
){
sleep
(
1
);
continue
;
}
kk_vp_get_config_file_info
();
sleep
(
60
*
30
);
}
switch
(
vp_mag
.
state
){
ERROR_PRINT
(
"[%s]thread end...
\n
"
,
__FUNCTION__
);
case
GET_8009_SNAPSHOOT_STATE
:
return
0
;
kk_vp_get_8009_snapshoot
();
}
kk_vp_get_ota_file_info
();
sleep
(
5
);
static
void
*
kk_voice_ctrl_status_thread
(
void
*
arg
)
break
;
{
debug_log
(
LOG_INFO_LEVEL
,
"[%s] start...
\n
"
,
__FUNCTION__
);
case
SET_8009_SYSTEM
:
kk_vp_set_8009_system_time
();
sleep
(
5
);
break
;
case
START_8009_CONFIG_FILE_UPDATE
:
#define SET_8009_TIME (60*60)
kk_vp_config_file_update_start
(
vp_mag
.
cfg_info
.
next_ver
);
kk_vp_set_state_machine
(
UPDATING_8009_CONFIG_FILE_INFO
);
break
;
case
UPDATING_8009_CONFIG_FILE_INFO
:
static
time_t
set_time
;
//debug_log(LOG_INFO,"updating...\n");
while
(
1
)
{
int
delay
=
1
;
time_t
curTime
=
time
(
NULL
);
if
(
vp_mag
.
get_ver_flag
==
0
){
debug_log
(
LOG_DEBUG_LEVEL
,
"get 8009 snapshoot
\n
"
);
kk_vp_get_8009_snapshoot
();
sleep
(
2
);
continue
;
}
if
(
vp_mag
.
set_time_flag
==
0
){
struct
tm
*
c
=
localtime
(
&
curTime
);
if
(
c
->
tm_year
!=
70
){
set_time
=
curTime
;
debug_log
(
LOG_NOTICE_LEVEL
,
"set 8009 system time
\n
"
);
kk_vp_set_8009_system_time
();
}
sleep
(
2
);
continue
;
}
if
(
vp_mag
.
file_update_flag
==
1
||
vp_mag
.
ota_update_flag
==
1
){
sleep
(
1
);
sleep
(
1
);
//todo :超时取消
continue
;
break
;
}
case
STOP_8009_CONFIG_FILE_UPDATE
:
kk_vp_config_file_update_stop
(
vp_mag
.
cfg_info
.
f_ver
);
if
((
curTime
-
set_time
)
>=
SET_8009_TIME
){
if
(
vp_mag
.
updateFlag
==
1
){
set_time
=
curTime
;
kk_vp_set_state_machine
(
UPDATING_8009_CONFIG_FILE_INFO
);
debug_log
(
LOG_NOTICE_LEVEL
,
"[timing %ds] set 8009 system time
\n
"
,
SET_8009_TIME
);
}
else
{
kk_vp_set_8009_system_time
();
kk_vp_set_state_machine
(
GET_8009_CONFIG_FILE_INFO
);
}
}
sleep
(
3
);
break
;
case
GET_8009_CONFIG_FILE_INFO
:
kk_vp_get_config_file_info
();
sleep
(
15
);
break
;
default:
if
(
delay
){
break
;
usleep
(
100
*
1000
);
}
}
usleep
(
50
*
1000
);
}
}
ERROR_PRINT
(
"[%s]thread end...
\n
"
,
__FUNCTION__
);
return
0
;
return
0
;
}
}
void
kk_voice_panel_uart_dev_chose
(
int
argc
,
char
*
argv
[])
void
kk_voice_panel_uart_dev_chose
(
int
argc
,
char
*
argv
[])
{
{
int
flag
=
0
;
int
flag
=
0
;
...
@@ -407,12 +430,43 @@ static int kk_vp_cfg_file_dir_create(void){
...
@@ -407,12 +430,43 @@ static int kk_vp_cfg_file_dir_create(void){
return
system
(
cmd
);
return
system
(
cmd
);
}
}
static
pthread_mutex_t
voice_uart_mutex
;
void
voice_uart_lock
(
void
)
{
pthread_mutex_lock
(
&
voice_uart_mutex
);
}
void
voice_uart_unlock
(
void
)
{
pthread_mutex_unlock
(
&
voice_uart_mutex
);
}
void
kk_voice_ota_start
(
char
*
in
)
{
char
file
[
128
]
=
{
0
};
char
*
ptr
=
strstr
(
in
,
"_"
);
if
(
ptr
!=
NULL
)
{
snprintf
(
file
,
sizeof
(
file
),
"/data/OTA/%s"
,
ptr
+
1
);
}
else
{
snprintf
(
file
,
sizeof
(
file
),
"/data/OTA/%s"
,
in
);
}
debug_log
(
LOG_WARNING_LEVEL
,
"%s.
\n
"
,
file
);
kk_vp_ota_file_update_start
(
file
);
}
int
kk_voice_panel_init
(
int
argc
,
char
*
argv
[])
int
kk_voice_panel_init
(
int
argc
,
char
*
argv
[])
{
{
size_t
s
=
1500
;
size_t
s
=
1500
;
pthread_t
uart_tid
=
0
;
pthread_t
uart_tid
=
0
;
pthread_t
mag_tid
=
0
;
pthread_t
mag_tid
=
0
;
pthread_t
t_tid
=
0
;
pthread_attr_t
attr
;
pthread_attr_t
attr
;
pthread_attr_init
(
&
attr
);
pthread_attr_init
(
&
attr
);
...
@@ -443,6 +497,10 @@ int kk_voice_panel_init(int argc, char* argv[])
...
@@ -443,6 +497,10 @@ int kk_voice_panel_init(int argc, char* argv[])
return
-
3
;
return
-
3
;
}
}
if
((
pthread_create
(
&
t_tid
,
NULL
,
kk_voice_ctrl_status_thread
,
NULL
))
!=
0
)
{
return
-
4
;
}
return
0
;
return
0
;
}
}
...
...
application/klansdk/kk_lan_voice_panel.h
View file @
d70cf063
...
@@ -8,23 +8,51 @@
...
@@ -8,23 +8,51 @@
int
kk_voice_panel_init
(
int
argc
,
char
*
argv
[]);
int
kk_voice_panel_init
(
int
argc
,
char
*
argv
[]);
#define GET_8009_SNAPSHOOT_STATE 0
#define SET_8009_SYSTEM 1
#define START_8009_CONFIG_FILE_UPDATE 2
#define UPDATING_8009_CONFIG_FILE_INFO 3
#define STOP_8009_CONFIG_FILE_UPDATE 4
#define GET_8009_CONFIG_FILE_INFO 5
#define KK_VOICE_OTA_MTU 128
void
kk_vp_set_state_machine
(
int
state
);
void
kk_vp_set_config_file_version
(
int
ver
);
void
kk_vp_set_config_file_version
(
int
ver
);
int
kk_vp_config_file_info_check
(
int
f_ver
,
int
f_size
,
int
crc32
);
int
kk_vp_config_file_info_check
(
int
f_ver
,
int
f_size
,
int
crc32
);
void
kk_vp_update_result_check
(
uint8_t
status
,
uint32_t
f_ver
);
void
kk_vp_update_result_check
(
uint8_t
status
,
uint32_t
f_ver
);
void
kk_vp_set_config_file_version
(
int
ver
);
void
kk_vp_set_config_file_version
(
int
ver
);
void
kk_vp_cfg_info_check
(
uint32_t
f_ver
,
uint32_t
f_size
,
uint32_t
crc32
);
void
kk_vp_cfg_info_check
(
uint32_t
f_ver
,
uint32_t
f_size
,
uint32_t
crc32
);
void
kk_vp_cfg_info_set
(
uint32_t
f_ver
,
uint32_t
f_size
,
uint32_t
crc32
);
void
kk_vp_cfg_info_set
(
uint32_t
f_ver
,
uint32_t
f_size
,
uint32_t
crc32
);
void
kk_vp_set_updateFlag
(
int
flag
);
void
kk_voice_ota_mtu_set
(
uint16_t
mtu
);
void
voice_uart_lock
(
void
);
void
voice_uart_unlock
(
void
);
void
kk_voice_ota_start
(
char
*
in
);
int
kk_voice_exit_factory_mode
(
void
);
int
kk_voice_exit_factory_mode
(
void
);
void
kk_voice_ota_mtu_set
(
uint16_t
mtu
);
void
kk_voice_update_config_file
(
void
);
void
kk_voice_reset_ver_flag
(
void
);
void
kk_get_voice_version
(
void
);
#endif
#endif
application/klansdk/kk_lan_vp_ctrl.c
View file @
d70cf063
...
@@ -3,8 +3,9 @@
...
@@ -3,8 +3,9 @@
#include "kk_lan_debug.h"
#include "kk_lan_debug.h"
#include "cJSON.h"
#include "cJSON.h"
#include "kk_voice_panel_cfg.h"
#include "kk_voice_panel_cfg.h"
#include "kk_lan_sync.h"
typedef
cJSON
*
(
*
dev_handle_func
)(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
typedef
cJSON
*
(
*
dev_handle_func
)(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
);
typedef
struct
{
typedef
struct
{
const
int
*
pidAry
;
const
int
*
pidAry
;
...
@@ -12,15 +13,15 @@ typedef struct {
...
@@ -12,15 +13,15 @@ typedef struct {
dev_handle_func
func
;
dev_handle_func
func
;
}
DEV_PID_S
;
}
DEV_PID_S
;
static
cJSON
*
air_conditioner_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
static
cJSON
*
air_conditioner_dev_handle
(
const
char
*
deviceCode
,
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
static
cJSON
*
light_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
static
cJSON
*
light_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
);
static
cJSON
*
curtain_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
static
cJSON
*
curtain_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
);
static
cJSON
*
outlet_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
static
cJSON
*
outlet_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
);
static
cJSON
*
freshAir_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
static
cJSON
*
freshAir_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
);
static
cJSON
*
fanCoilSwitch_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
static
cJSON
*
fanCoilSwitch_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
);
static
cJSON
*
underfloor_heating_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
static
cJSON
*
underfloor_heating_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
);
static
cJSON
*
dimming_light_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
static
cJSON
*
dimming_light_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
);
static
const
int
air_conditioner_dev_pid
[]
=
AIR_CONDITIONER_DEV_PID
;
static
const
int
air_conditioner_dev_pid
[]
=
AIR_CONDITIONER_DEV_PID
;
...
@@ -63,9 +64,40 @@ static dev_handle_func dev_pid_dispatch(int pid)
...
@@ -63,9 +64,40 @@ static dev_handle_func dev_pid_dispatch(int pid)
return
NULL
;
return
NULL
;
}
}
//****************************************************************************
cJSON
*
PowerSwitch_msg_build
(
int
ep
,
int
onoff
)
static
cJSON
*
get_value
(
kk_map_dev_node_t
*
node
,
const
char
*
key
)
{
cJSON
*
value
=
NULL
;
int
i
,
size
;
if
(
key
==
NULL
||
node
==
NULL
||
node
->
newccu
==
NULL
||
node
->
newccu
->
type
!=
cJSON_Array
){
return
NULL
;
}
size
=
cJSON_GetArraySize
(
node
->
newccu
);
for
(
i
=
0
;
i
<
size
;
i
++
){
cJSON
*
obj
=
cJSON_GetArrayItem
(
node
->
newccu
,
i
);
cJSON
*
id
=
cJSON_GetObjectItem
(
obj
,
"identifier"
);
if
(
id
==
NULL
){
continue
;
}
if
(
strcmp
(
id
->
valuestring
,
key
)
==
0
){
value
=
cJSON_GetObjectItem
(
obj
,
"value"
);
return
value
;
}
}
return
NULL
;
}
//****************************************************************************
cJSON
*
air_conditioner_dev_powerswitch_msg_build
(
int
ep
,
int
onoff
)
{
{
char
epNum
[
12
]
=
{
0
};
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
...
@@ -77,7 +109,7 @@ cJSON *PowerSwitch_msg_build(int ep,int onoff)
...
@@ -77,7 +109,7 @@ cJSON *PowerSwitch_msg_build(int ep,int onoff)
return
params
;
return
params
;
}
}
static
cJSON
*
windSpeed_msg_build
(
int
ep
,
int
level
)
static
cJSON
*
air_conditioner_dev_windspeed_msg_build
(
int
ep
,
int
level
)
{
{
char
epNum
[
12
]
=
{
0
};
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
...
@@ -86,12 +118,13 @@ static cJSON *windSpeed_msg_build(int ep,int level)
...
@@ -86,12 +118,13 @@ static cJSON *windSpeed_msg_build(int ep,int level)
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
1
);
cJSON_AddNumberToObject
(
params
,
"WindSpeed"
,
level
);
cJSON_AddNumberToObject
(
params
,
"WindSpeed"
,
level
);
return
params
;
return
params
;
}
}
static
cJSON
*
workMode_msg_build
(
int
ep
,
int
mode
)
static
cJSON
*
air_conditioner_dev_workmode_msg_build
(
int
ep
,
int
mode
)
{
{
char
epNum
[
12
]
=
{
0
};
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
...
@@ -100,14 +133,12 @@ static cJSON *workMode_msg_build(int ep,int mode)
...
@@ -100,14 +133,12 @@ static cJSON *workMode_msg_build(int ep,int mode)
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
1
);
cJSON_AddNumberToObject
(
params
,
"WorkMode"
,
mode
);
cJSON_AddNumberToObject
(
params
,
"WorkMode"
,
mode
);
return
params
;
return
params
;
}
}
static
cJSON
*
air_conditioner_dev_temperature_msg_build
(
int
ep
,
int
tmp
)
static
cJSON
*
temperature_msg_build
(
int
ep
,
int
tmp
)
{
{
char
epNum
[
12
]
=
{
0
};
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
...
@@ -116,206 +147,367 @@ static cJSON *temperature_msg_build(int ep,int tmp)
...
@@ -116,206 +147,367 @@ static cJSON *temperature_msg_build(int ep,int tmp)
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
1
);
cJSON_AddNumberToObject
(
params
,
"Temperature"
,
tmp
);
cJSON_AddNumberToObject
(
params
,
"Temperature"
,
tmp
);
return
params
;
return
params
;
}
}
static
cJSON
*
ColorTemperature_msg_build
(
int
ep
,
int
val
)
static
cJSON
*
air_conditioner_dev_handle
(
const
char
*
deviceCode
,
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
{
{
char
epNum
[
12
]
=
{
0
};
uint8_t
skill_type
=
arg
[
0
];
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
param
=
NULL
;
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
switch
(
skill_type
){
cJSON_AddNumberToObject
(
params
,
"ColorTemperature"
,
val
);
case
VP_CTRL_OPEN
:{
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] on
\n
"
);
param
=
air_conditioner_dev_powerswitch_msg_build
(
ep
,
1
);
}
break
;
return
params
;
case
VP_CTRL_CLOSE
:{
}
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] off
\n
"
);
param
=
air_conditioner_dev_powerswitch_msg_build
(
ep
,
0
);
}
break
;
static
cJSON
*
Brightness_msg_build
(
int
ep
,
int
val
)
case
VP_CTRL_WINDSPEE_SET
:{
{
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x20
){
char
epNum
[
12
]
=
{
0
};
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
cJSON
*
params
=
cJSON_CreateObject
();
return
NULL
;
}
memset
(
epNum
,
0
,
sizeof
(
epNum
));
uint8_t
windspeed
=
arg
[
2
];
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
debug_log
(
LOG_INFO_LEVEL
,
"[windspeed] %d
\n
"
,
windspeed
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_LOW
){
cJSON_AddNumberToObject
(
params
,
"Brightness"
,
val
);
param
=
air_conditioner_dev_windspeed_msg_build
(
ep
,
2
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_MID
){
param
=
air_conditioner_dev_windspeed_msg_build
(
ep
,
3
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_HIGH
){
param
=
air_conditioner_dev_windspeed_msg_build
(
ep
,
4
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_AUTO
){
param
=
air_conditioner_dev_windspeed_msg_build
(
ep
,
0
);
}
}
break
;
return
params
;
case
VP_CTRL_MODE
:{
}
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
uint8_t
mode
=
arg
[
2
];
debug_log
(
LOG_INFO_LEVEL
,
"[mode] %d
\n
"
,
mode
);
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_COLD
){
param
=
air_conditioner_dev_workmode_msg_build
(
ep
,
1
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_HEATING
){
param
=
air_conditioner_dev_workmode_msg_build
(
ep
,
2
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_FAN
){
param
=
air_conditioner_dev_workmode_msg_build
(
ep
,
3
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_DEHUM
){
param
=
air_conditioner_dev_workmode_msg_build
(
ep
,
4
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_AUTO
){
param
=
air_conditioner_dev_workmode_msg_build
(
ep
,
0
);
}
}
break
;
case
VP_CTRL_TMP_SET
:{
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
uint8_t
tmp
=
arg
[
2
];
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] %d
\n
"
,
tmp
);
if
(
tmp
>
30
){
tmp
=
30
;
}
else
if
(
tmp
<
17
){
tmp
=
17
;
}
param
=
air_conditioner_dev_temperature_msg_build
(
ep
,
tmp
);
}
break
;
case
VP_CTRL_WINDSPEE_UP
:{
if
(
arg
[
1
]
!=
0x42
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
INDOOR_AIR_STATUS
*
pStatus
=
indoor_airstatus_table_find_item
(
deviceCode
,
ep
);
if
(
pStatus
==
NULL
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
}
if
(
pStatus
->
online
!=
1
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] offline
\n
"
);
return
NULL
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[pStatus->WindSpeed] %d
\n
"
,
pStatus
->
WindSpeed
);
debug_log
(
LOG_INFO_LEVEL
,
"[WindSpeed] inc
\n
"
);
if
(
pStatus
->
WindSpeed
==
2
){
param
=
air_conditioner_dev_windspeed_msg_build
(
ep
,
3
);
}
else
if
(
pStatus
->
WindSpeed
==
3
||
pStatus
->
WindSpeed
==
4
||
pStatus
->
WindSpeed
==
0
){
param
=
air_conditioner_dev_windspeed_msg_build
(
ep
,
4
);
}
}
break
;
case
VP_CTRL_WINDSPEE_DOWN
:{
if
(
arg
[
1
]
!=
0x42
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
INDOOR_AIR_STATUS
*
pStatus
=
indoor_airstatus_table_find_item
(
deviceCode
,
ep
);
if
(
pStatus
==
NULL
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
}
if
(
pStatus
->
online
!=
1
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] offline
\n
"
);
return
NULL
;
}
//****************************************************************************
debug_log
(
LOG_INFO_LEVEL
,
"[pStatus->WindSpeed] %d
\n
"
,
pStatus
->
WindSpeed
);
debug_log
(
LOG_INFO_LEVEL
,
"[WindSpeed] dec
\n
"
);
static
cJSON
*
light_msg_build
(
int
ep
,
int
onoff
)
if
(
pStatus
->
WindSpeed
==
4
){
{
param
=
air_conditioner_dev_windspeed_msg_build
(
ep
,
3
);
return
PowerSwitch_msg_build
(
ep
,
onoff
);
}
else
if
(
pStatus
->
WindSpeed
==
3
||
pStatus
->
WindSpeed
==
2
||
pStatus
->
WindSpeed
==
0
){
}
param
=
air_conditioner_dev_windspeed_msg_build
(
ep
,
2
);
}
}
break
;
case
VP_CTRL_TMP_UP
:{
if
(
arg_len
!=
5
||
arg
[
1
]
!=
0x42
&&
arg
[
2
]
!=
0x02
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
INDOOR_AIR_STATUS
*
pStatus
=
indoor_airstatus_table_find_item
(
deviceCode
,
ep
);
static
cJSON
*
freshAir_msg_build
(
int
ep
,
int
onoff
)
if
(
pStatus
==
NULL
){
{
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
PowerSwitch_msg_build
(
ep
,
onoff
);
return
NULL
;
}
}
if
(
pStatus
->
online
!=
1
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] offline
\n
"
);
return
NULL
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[pStatus->Temperature] %f
\n
"
,
pStatus
->
Temperature
);
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] inc %d
\n
"
,
arg
[
3
]);
double
tmp
=
pStatus
->
Temperature
+
arg
[
3
];
//****************************************************************************
if
(
tmp
>
30
){
tmp
=
30
;
}
else
if
(
tmp
<
17
){
tmp
=
17
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] %f
\n
"
,
tmp
);
param
=
air_conditioner_dev_temperature_msg_build
(
ep
,
tmp
);
}
break
;
static
cJSON
*
air_conditioner_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
case
VP_CTRL_TMP_DOWN
:{
{
if
(
arg_len
!=
5
||
arg
[
1
]
!=
0x42
&&
arg
[
2
]
!=
0x02
){
uint8_t
skill_type
=
arg
[
0
];
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
switch
(
skill_type
){
INDOOR_AIR_STATUS
*
pStatus
=
indoor_airstatus_table_find_item
(
deviceCode
,
ep
);
case
VP_CTRL_OPEN
:
//
return
PowerSwitch_msg_build
(
ep
,
1
);
case
VP_CTRL_CLOSE
:
return
PowerSwitch_msg_build
(
ep
,
0
);
case
VP_CTRL_WINDSPEE_SET
:{
if
(
pStatus
==
NULL
){
if
(
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
return
NULL
;
}
}
uint8_t
windspeed
=
arg
[
2
];
debug_log
(
LOG_CRIT_LEVEL
,
"[VP] set windspeed=%d
\n
"
,
windspeed
);
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_LOW
){
return
windSpeed_msg_build
(
ep
,
2
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_MID
){
return
windSpeed_msg_build
(
ep
,
3
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_HIGH
){
return
windSpeed_msg_build
(
ep
,
4
);
}
break
;
}
case
VP_CTRL_MODE
:{
if
(
pStatus
->
online
!=
1
){
if
(
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] offline
\n
"
);
return
NULL
;
return
NULL
;
}
}
uint8_t
mode
=
arg
[
2
];
debug_log
(
LOG_CRIT_LEVEL
,
"[VP] set mode=%d
\n
"
,
mode
);
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_COLD
){
return
workMode_msg_build
(
ep
,
1
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_HEATING
){
return
workMode_msg_build
(
ep
,
2
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_FAN
){
return
workMode_msg_build
(
ep
,
3
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_DEHUM
){
return
workMode_msg_build
(
ep
,
4
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_AUTO
){
return
workMode_msg_build
(
ep
,
0
);
}
break
;
}
case
VP_CTRL_TMP_SET
:
debug_log
(
LOG_INFO_LEVEL
,
"[pStatus->Temperature] %f
\n
"
,
pStatus
->
Temperature
);
if
(
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] dec %d
\n
"
,
arg
[
3
]);
return
NULL
;
double
tmp
=
pStatus
->
Temperature
-
arg
[
3
];
if
(
tmp
>
30
){
tmp
=
30
;
}
else
if
(
tmp
<
17
){
tmp
=
17
;
}
}
uint8_t
tmp
=
arg
[
2
];
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] %f
\n
"
,
tmp
);
debug_log
(
LOG_CRIT_LEVEL
,
"[VP] set tmp=%d
\n
"
,
tmp
);
param
=
air_conditioner_dev_temperature_msg_build
(
ep
,
tmp
);
return
temperature_msg_build
(
ep
,
tmp
);
}
break
;
default:
break
;
default:
break
;
}
}
return
NULL
;
return
param
;
}
}
static
cJSON
*
light_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
static
cJSON
*
light_dev_msg_build
(
int
ep
,
int
onoff
)
{
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
onoff
);
return
params
;
}
static
cJSON
*
light_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
)
{
{
uint8_t
skill_type
=
arg
[
0
];
uint8_t
skill_type
=
arg
[
0
];
cJSON
*
param
=
NULL
;
switch
(
skill_type
){
switch
(
skill_type
){
case
VP_CTRL_OPEN
:
//
case
VP_CTRL_OPEN
:{
return
light_msg_build
(
ep
,
1
);
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] on
\n
"
);
case
VP_CTRL_CLOSE
:
param
=
light_dev_msg_build
(
ep
,
1
);
return
light_msg_build
(
ep
,
0
);
}
break
;
case
VP_CTRL_CLOSE
:{
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] off
\n
"
);
param
=
light_dev_msg_build
(
ep
,
0
);
}
break
;
default:
break
;
default:
break
;
}
}
return
NULL
;
return
param
;
}
}
static
cJSON
*
curtain_dev_m
sg_build
(
int
ep
,
int
OperationMode
)
static
cJSON
*
curtain_dev_m
ode_msg_build
(
int
ep
,
int
OperationMode
)
{
{
char
epNum
[
12
]
=
{
0
};
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
memset
(
epNum
,
0
,
sizeof
(
epNum
));
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddNumberToObject
(
params
,
"OperationMode"
,
OperationMode
);
cJSON_AddNumberToObject
(
params
,
"OperationMode"
,
OperationMode
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
params
;
}
static
cJSON
*
curtain_dev_position_msg_build
(
int
ep
,
int
position
)
{
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"OperationMode"
,
1
);
cJSON_AddNumberToObject
(
params
,
"Position"
,
position
);
return
params
;
return
params
;
}
}
static
cJSON
*
curtain_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
static
cJSON
*
curtain_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
)
{
{
uint8_t
skill_type
=
arg
[
0
];
uint8_t
skill_type
=
arg
[
0
];
debug_log
(
LOG_CRIT_LEVEL
,
"skill_type=%d,ep=%d
\n
"
,
skill_type
,
ep
);
cJSON
*
param
=
NULL
;
switch
(
skill_type
){
switch
(
skill_type
){
case
VP_CTRL_OPEN
:
//
case
VP_CTRL_OPEN
:{
return
curtain_dev_msg_build
(
ep
,
1
);
if
(
arg_len
==
3
&&
arg
[
1
]
==
0x20
){
case
VP_CTRL_CLOSE
:
int
position
=
arg
[
2
];
return
curtain_dev_msg_build
(
ep
,
0
);
debug_log
(
LOG_INFO_LEVEL
,
"[position] %d%
\n
"
,
position
);
case
VP_CTRL_STOP
:
if
(
position
<
0
){
return
curtain_dev_msg_build
(
ep
,
2
);
position
=
0
;
}
else
if
(
position
>
100
){
position
=
100
;
}
param
=
curtain_dev_position_msg_build
(
ep
,
position
);
}
else
{
debug_log
(
LOG_INFO_LEVEL
,
"[mode] open
\n
"
);
param
=
curtain_dev_mode_msg_build
(
ep
,
1
);
}
}
break
;
case
VP_CTRL_CLOSE
:{
debug_log
(
LOG_INFO_LEVEL
,
"[mode] close
\n
"
);
param
=
curtain_dev_mode_msg_build
(
ep
,
0
);
}
break
;
case
VP_CTRL_STOP
:{
debug_log
(
LOG_INFO_LEVEL
,
"[mode] stop
\n
"
);
param
=
curtain_dev_mode_msg_build
(
ep
,
2
);
}
default:
break
;
default:
break
;
}
}
return
NULL
;
return
param
;
}
}
static
cJSON
*
outlet_
msg_build
(
int
ep
,
int
onoff
)
static
cJSON
*
outlet_
dev_msg_build
(
int
ep
,
int
onoff
)
{
{
return
PowerSwitch_msg_build
(
ep
,
onoff
);
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
onoff
);
return
params
;
}
}
static
cJSON
*
outlet_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
static
cJSON
*
outlet_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
)
{
{
uint8_t
skill_type
=
arg
[
0
];
uint8_t
skill_type
=
arg
[
0
];
debug_log
(
LOG_CRIT_LEVEL
,
"skill_type=%d,ep=%d
\n
"
,
skill_type
,
ep
);
cJSON
*
param
=
NULL
;
switch
(
skill_type
){
switch
(
skill_type
){
case
VP_CTRL_OPEN
:
//
case
VP_CTRL_OPEN
:{
return
outlet_msg_build
(
ep
,
1
);
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] on
\n
"
);
case
VP_CTRL_CLOSE
:
param
=
outlet_dev_msg_build
(
ep
,
1
);
return
outlet_msg_build
(
ep
,
0
);
}
break
;
case
VP_CTRL_CLOSE
:{
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] off
\n
"
);
param
=
outlet_dev_msg_build
(
ep
,
0
);
}
break
;
default:
break
;
default:
break
;
}
}
return
NULL
;
return
param
;
}
}
cJSON
*
freshair_dev_powerswitch_msg_build
(
int
ep
,
int
onoff
)
{
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
static
cJSON
*
freshAir_windspeed_msg_build
(
int
ep
,
int
level
)
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
onoff
);
return
params
;
}
static
cJSON
*
freshair_dev_windspeed_msg_build
(
int
ep
,
int
level
)
{
{
char
epNum
[
12
]
=
{
0
};
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
...
@@ -324,12 +516,13 @@ static cJSON *freshAir_windspeed_msg_build(int ep,int level)
...
@@ -324,12 +516,13 @@ static cJSON *freshAir_windspeed_msg_build(int ep,int level)
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
1
);
cJSON_AddNumberToObject
(
params
,
"WindSpeed"
,
level
);
cJSON_AddNumberToObject
(
params
,
"WindSpeed"
,
level
);
return
params
;
return
params
;
}
}
static
cJSON
*
fresh
Air_workMode_msg_build
(
int
ep
,
int
mode
)
static
cJSON
*
fresh
air_dev_workmode_msg_build
(
int
ep
,
int
mode
)
{
{
char
epNum
[
12
]
=
{
0
};
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
...
@@ -338,6 +531,7 @@ static cJSON *freshAir_workMode_msg_build(int ep,int mode)
...
@@ -338,6 +531,7 @@ static cJSON *freshAir_workMode_msg_build(int ep,int mode)
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
1
);
cJSON_AddNumberToObject
(
params
,
"WorkMode"
,
mode
);
cJSON_AddNumberToObject
(
params
,
"WorkMode"
,
mode
);
return
params
;
return
params
;
...
@@ -345,59 +539,119 @@ static cJSON *freshAir_workMode_msg_build(int ep,int mode)
...
@@ -345,59 +539,119 @@ static cJSON *freshAir_workMode_msg_build(int ep,int mode)
static
cJSON
*
freshAir_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
static
cJSON
*
freshAir_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
)
{
{
uint8_t
skill_type
=
arg
[
0
];
uint8_t
skill_type
=
arg
[
0
];
cJSON
*
param
=
NULL
;
if
(
arg_len
!=
3
){
debug_log
(
LOG_ERROR_LEVEL
,
"[err] arg_len=%d
\n
"
,
arg_len
);
return
NULL
;
}
switch
(
skill_type
){
switch
(
skill_type
){
case
VP_CTRL_OPEN
:
//
case
VP_CTRL_OPEN
:{
return
PowerSwitch_msg_build
(
ep
,
1
);
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] on
\n
"
);
case
VP_CTRL_CLOSE
:
param
=
freshair_dev_powerswitch_msg_build
(
ep
,
1
);
return
PowerSwitch_msg_build
(
ep
,
0
);
}
break
;
case
VP_CTRL_CLOSE
:{
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] off
\n
"
);
param
=
freshair_dev_powerswitch_msg_build
(
ep
,
0
);
}
break
;
case
VP_CTRL_WINDSPEE_SET
:{
case
VP_CTRL_WINDSPEE_SET
:{
if
(
arg
[
1
]
!=
0x20
){
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
return
NULL
;
}
}
uint8_t
windspeed
=
arg
[
2
];
uint8_t
windspeed
=
arg
[
2
];
debug_log
(
LOG_CRIT_LEVEL
,
"[VP] set windspeed=%d
\n
"
,
windspeed
);
debug_log
(
LOG_INFO_LEVEL
,
"[windspeed] %d
\n
"
,
windspeed
);
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_LOW
){
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_LOW
){
return
freshAir_windspeed_msg_build
(
ep
,
1
);
param
=
freshair_dev_windspeed_msg_build
(
ep
,
1
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_MID
){
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_MID
){
return
freshAir_windspeed_msg_build
(
ep
,
2
);
param
=
freshair_dev_windspeed_msg_build
(
ep
,
2
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_HIGH
){
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_HIGH
){
return
freshAir_windspeed_msg_build
(
ep
,
3
);
param
=
freshair_dev_windspeed_msg_build
(
ep
,
3
);
}
}
break
;
}
break
;
}
case
VP_CTRL_MODE
:{
case
VP_CTRL_MODE
:{
if
(
arg
[
1
]
!=
0x20
){
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
return
NULL
;
}
}
uint8_t
mode
=
arg
[
2
];
uint8_t
mode
=
arg
[
2
];
debug_log
(
LOG_CRIT_LEVEL
,
"[VP] set mode=%d
\n
"
,
mode
);
debug_log
(
LOG_INFO_LEVEL
,
"[mode] %d
\n
"
,
mode
);
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_AUTO
){
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_AUTO
){
return
freshAir_workMode_msg_build
(
ep
,
0
);
param
=
freshair_dev_workmode_msg_build
(
ep
,
0
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_MANUAL
){
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_MANUAL
){
return
freshAir_workMode_msg_build
(
ep
,
1
);
param
=
freshair_dev_workmode_msg_build
(
ep
,
1
);
}
}
break
;
}
break
;
case
VP_CTRL_WINDSPEE_UP
:{
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x42
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
}
default:
break
;
cJSON
*
value
=
get_value
(
node
,
"WindSpeed"
);
if
(
value
==
NULL
||
value
->
type
!=
cJSON_Number
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
}
}
if
(
value
->
valueint
==
0
){
param
=
freshair_dev_windspeed_msg_build
(
ep
,
1
);
}
else
if
(
value
->
valueint
==
1
){
param
=
freshair_dev_windspeed_msg_build
(
ep
,
2
);
}
else
if
(
value
->
valueint
==
2
||
value
->
valueint
==
3
){
param
=
freshair_dev_windspeed_msg_build
(
ep
,
3
);
}
}
break
;
case
VP_CTRL_WINDSPEE_DOWN
:{
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x42
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
cJSON
*
value
=
get_value
(
node
,
"WindSpeed"
);
if
(
value
==
NULL
||
value
->
type
!=
cJSON_Number
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
return
NULL
;
}
if
(
value
->
valueint
==
3
){
param
=
freshair_dev_windspeed_msg_build
(
ep
,
2
);
}
else
if
(
value
->
valueint
==
2
){
param
=
freshair_dev_windspeed_msg_build
(
ep
,
1
);
}
else
if
(
value
->
valueint
==
1
||
value
->
valueint
==
0
){
param
=
freshair_dev_windspeed_msg_build
(
ep
,
0
);
}
}
break
;
default:
break
;
}
return
param
;
}
cJSON
*
fanCoilSwitch_powerswitch_msg_build
(
int
ep
,
int
onoff
)
{
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
onoff
);
return
params
;
}
}
static
cJSON
*
fan
CoilSwitch_windspeed_msg_build
(
int
ep
,
int
level
)
static
cJSON
*
fan
coilswitch_dev_windspeed_msg_build
(
int
ep
,
int
level
)
{
{
char
epNum
[
12
]
=
{
0
};
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
...
@@ -406,11 +660,12 @@ static cJSON *fanCoilSwitch_windspeed_msg_build(int ep,int level)
...
@@ -406,11 +660,12 @@ static cJSON *fanCoilSwitch_windspeed_msg_build(int ep,int level)
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
1
);
cJSON_AddNumberToObject
(
params
,
"WindSpeed"
,
level
);
cJSON_AddNumberToObject
(
params
,
"WindSpeed"
,
level
);
return
params
;
return
params
;
}
}
static
cJSON
*
fan
CoilSwitch_workMode_msg_build
(
int
ep
,
int
mode
)
static
cJSON
*
fan
coilswitch_dev_workmode_msg_build
(
int
ep
,
int
mode
)
{
{
char
epNum
[
12
]
=
{
0
};
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
cJSON
*
params
=
cJSON_CreateObject
();
...
@@ -419,6 +674,7 @@ static cJSON *fanCoilSwitch_workMode_msg_build(int ep,int mode)
...
@@ -419,6 +674,7 @@ static cJSON *fanCoilSwitch_workMode_msg_build(int ep,int mode)
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
1
);
cJSON_AddNumberToObject
(
params
,
"WorkMode"
,
mode
);
cJSON_AddNumberToObject
(
params
,
"WorkMode"
,
mode
);
return
params
;
return
params
;
...
@@ -433,150 +689,501 @@ static cJSON *fanCoilSwitch_Temperature_msg_build(int ep,int tmp)
...
@@ -433,150 +689,501 @@ static cJSON *fanCoilSwitch_Temperature_msg_build(int ep,int tmp)
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
1
);
cJSON_AddNumberToObject
(
params
,
"Temperature"
,
tmp
);
cJSON_AddNumberToObject
(
params
,
"Temperature"
,
tmp
);
return
params
;
return
params
;
}
}
static
cJSON
*
fanCoilSwitch_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
static
cJSON
*
fanCoilSwitch_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
)
{
{
uint8_t
skill_type
=
arg
[
0
];
uint8_t
skill_type
=
arg
[
0
];
cJSON
*
param
=
NULL
;
switch
(
skill_type
){
switch
(
skill_type
){
case
VP_CTRL_OPEN
:
//
case
VP_CTRL_OPEN
:{
return
PowerSwitch_msg_build
(
ep
,
1
);
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] on
\n
"
);
case
VP_CTRL_CLOSE
:
param
=
fanCoilSwitch_powerswitch_msg_build
(
ep
,
1
);
return
PowerSwitch_msg_build
(
ep
,
0
);
}
break
;
case
VP_CTRL_CLOSE
:{
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] off
\n
"
);
param
=
fanCoilSwitch_powerswitch_msg_build
(
ep
,
0
);
}
break
;
case
VP_CTRL_WINDSPEE_SET
:{
case
VP_CTRL_WINDSPEE_SET
:{
if
(
arg
[
1
]
!=
0x20
){
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
return
NULL
;
}
}
uint8_t
windspeed
=
arg
[
2
];
uint8_t
windspeed
=
arg
[
2
];
debug_log
(
LOG_
CRIT_LEVEL
,
"[VP] set windspeed=%d
\n
"
,
windspeed
);
debug_log
(
LOG_
INFO_LEVEL
,
"[windSpeed] %d
\n
"
,
windspeed
);
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_LOW
){
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_LOW
){
return
fanCoilSwitch_windspeed_msg_build
(
ep
,
2
);
param
=
fancoilswitch_dev_windspeed_msg_build
(
ep
,
2
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_MID
){
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_MID
){
return
fanCoilSwitch_windspeed_msg_build
(
ep
,
3
);
param
=
fancoilswitch_dev_windspeed_msg_build
(
ep
,
3
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_HIGH
){
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_HIGH
){
return
fanCoilSwitch_windspeed_msg_build
(
ep
,
4
);
param
=
fancoilswitch_dev_windspeed_msg_build
(
ep
,
4
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_AUTO
){
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_AUTO
){
return
fanCoilSwitch_windspeed_msg_build
(
ep
,
0
);
param
=
fancoilswitch_dev_windspeed_msg_build
(
ep
,
0
);
}
}
else
{
break
;
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
}
}
break
;
case
VP_CTRL_MODE
:{
case
VP_CTRL_MODE
:{
if
(
arg
[
1
]
!=
0x20
){
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
return
NULL
;
}
}
uint8_t
mode
=
arg
[
2
];
uint8_t
mode
=
arg
[
2
];
debug_log
(
LOG_
CRIT_LEVEL
,
"[VP] set mode=%d
\n
"
,
mode
);
debug_log
(
LOG_
INFO_LEVEL
,
"[mode] %d
\n
"
,
mode
);
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_COLD
){
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_COLD
){
return
freshAir_workMode_msg_build
(
ep
,
1
);
param
=
fancoilswitch_dev_workmode_msg_build
(
ep
,
1
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_HEATING
){
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_HEATING
){
return
freshAir_workMode_msg_build
(
ep
,
2
);
param
=
fancoilswitch_dev_workmode_msg_build
(
ep
,
2
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_FAN
){
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_FAN
){
return
freshAir_workMode_msg_build
(
ep
,
3
);
param
=
fancoilswitch_dev_workmode_msg_build
(
ep
,
3
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_DEHUM
){
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_DEHUM
){
return
freshAir_workMode_msg_build
(
ep
,
4
);
param
=
fancoilswitch_dev_workmode_msg_build
(
ep
,
4
);
}
}
else
{
break
;
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
}
}
break
;
case
VP_CTRL_TMP_SET
:
case
VP_CTRL_TMP_SET
:{
if
(
arg
[
1
]
!=
0x20
){
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
return
NULL
;
}
}
uint8_t
tmp
=
arg
[
2
];
uint8_t
tmp
=
arg
[
2
];
debug_log
(
LOG_CRIT_LEVEL
,
"[VP] set tmp=%d
\n
"
,
tmp
);
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] %d
\n
"
,
tmp
);
return
fanCoilSwitch_Temperature_msg_build
(
ep
,
tmp
);
if
(
tmp
>
30
){
tmp
=
30
;
}
else
if
(
tmp
<
17
){
tmp
=
17
;
}
default:
break
;
param
=
fanCoilSwitch_Temperature_msg_build
(
ep
,
tmp
);
}
break
;
case
VP_CTRL_WINDSPEE_UP
:{
if
(
arg
[
1
]
!=
0x42
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
cJSON
*
value
=
get_value
(
node
,
"WindSpeed"
);
if
(
value
==
NULL
||
value
->
type
!=
cJSON_Number
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[value] %d
\n
"
,
value
->
valueint
);
debug_log
(
LOG_INFO_LEVEL
,
"[WindSpeed] inc
\n
"
);
if
(
value
->
valueint
==
2
){
param
=
fancoilswitch_dev_windspeed_msg_build
(
ep
,
3
);
}
else
if
(
value
->
valueint
==
3
){
param
=
fancoilswitch_dev_windspeed_msg_build
(
ep
,
4
);
}
else
if
(
value
->
valueint
==
4
||
value
->
valueint
==
0
){
param
=
fancoilswitch_dev_windspeed_msg_build
(
ep
,
4
);
}
else
{
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value=%d
\n
"
,
value
->
valueint
);
return
NULL
;
}
}
break
;
case
VP_CTRL_WINDSPEE_DOWN
:{
if
(
arg
[
1
]
!=
0x42
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
cJSON
*
value
=
get_value
(
node
,
"WindSpeed"
);
if
(
value
==
NULL
||
value
->
type
!=
cJSON_Number
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
}
}
debug_log
(
LOG_INFO_LEVEL
,
"[value] %d
\n
"
,
value
->
valueint
);
debug_log
(
LOG_INFO_LEVEL
,
"[WindSpeed] dec
\n
"
);
if
(
value
->
valueint
==
4
){
param
=
fancoilswitch_dev_windspeed_msg_build
(
ep
,
3
);
}
else
if
(
value
->
valueint
==
3
){
param
=
fancoilswitch_dev_windspeed_msg_build
(
ep
,
2
);
}
else
if
(
value
->
valueint
==
2
||
value
->
valueint
==
0
){
param
=
fancoilswitch_dev_windspeed_msg_build
(
ep
,
2
);
}
else
{
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value=%d
\n
"
,
value
->
valueint
);
return
NULL
;
}
}
break
;
case
VP_CTRL_TMP_UP
:{
if
(
arg_len
!=
5
||
arg
[
1
]
!=
0x42
&&
arg
[
2
]
!=
0x02
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
cJSON
*
value
=
get_value
(
node
,
"Temperature"
);
if
(
value
==
NULL
||
value
->
type
!=
cJSON_Number
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[value] %d
\n
"
,
value
->
valueint
);
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] inc %d
\n
"
,
arg
[
3
]);
double
tmp
=
value
->
valuedouble
+
arg
[
3
];
if
(
tmp
>
30
){
tmp
=
30
;
}
else
if
(
tmp
<
17
){
tmp
=
17
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] %f
\n
"
,
tmp
);
param
=
fanCoilSwitch_Temperature_msg_build
(
ep
,
tmp
);
}
break
;
case
VP_CTRL_TMP_DOWN
:{
if
(
arg_len
!=
5
||
arg
[
1
]
!=
0x42
&&
arg
[
2
]
!=
0x02
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
return
NULL
;
}
cJSON
*
value
=
get_value
(
node
,
"Temperature"
);
if
(
value
==
NULL
||
value
->
type
!=
cJSON_Number
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[value] %d
\n
"
,
value
->
valueint
);
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] dec %d
\n
"
,
arg
[
3
]);
double
tmp
=
value
->
valuedouble
-
arg
[
3
];
if
(
tmp
>
30
){
tmp
=
30
;
}
else
if
(
tmp
<
17
){
tmp
=
17
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] %f
\n
"
,
tmp
);
param
=
fanCoilSwitch_Temperature_msg_build
(
ep
,
tmp
);
}
break
;
default:
break
;
}
return
param
;
}
}
static
cJSON
*
underfloor_heating_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
cJSON
*
underfloor_heating_powerswitch_msg_build
(
int
ep
,
int
onoff
)
{
{
uint8_t
skill_type
=
arg
[
0
];
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
onoff
);
return
params
;
}
static
cJSON
*
underfloor_heating_workmode_msg_build
(
int
ep
,
int
mode
)
{
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
1
);
cJSON_AddNumberToObject
(
params
,
"WorkMode"
,
mode
);
return
params
;
}
static
cJSON
*
underfloor_heating_temperature_msg_build
(
int
ep
,
int
tmp
)
{
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
1
);
cJSON_AddNumberToObject
(
params
,
"WorkMode"
,
1
);
cJSON_AddNumberToObject
(
params
,
"Temperature"
,
tmp
);
return
params
;
}
static
cJSON
*
underfloor_heating_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
)
{
uint8_t
skill_type
=
arg
[
0
];
cJSON
*
param
=
NULL
;
switch
(
skill_type
){
switch
(
skill_type
){
case
VP_CTRL_OPEN
:
//
case
VP_CTRL_OPEN
:{
return
PowerSwitch_msg_build
(
ep
,
1
);
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] on
\n
"
);
case
VP_CTRL_CLOSE
:
param
=
underfloor_heating_powerswitch_msg_build
(
ep
,
1
);
return
PowerSwitch_msg_build
(
ep
,
0
);
}
break
;
case
VP_CTRL_CLOSE
:{
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] off
\n
"
);
param
=
underfloor_heating_powerswitch_msg_build
(
ep
,
0
);
}
break
;
case
VP_CTRL_MODE
:{
case
VP_CTRL_MODE
:{
if
(
arg
[
1
]
!=
0x20
){
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
return
NULL
;
}
}
uint8_t
mode
=
arg
[
2
];
uint8_t
mode
=
arg
[
2
];
debug_log
(
LOG_
CRIT_LEVEL
,
"[VP] set mode=%d
\n
"
,
mode
);
debug_log
(
LOG_
INFO_LEVEL
,
"[mode] %d
\n
"
,
mode
);
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_AUTO
){
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_AUTO
){
return
workMode_msg_build
(
ep
,
0
);
param
=
underfloor_heating_workmode_msg_build
(
ep
,
0
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_MANUAL
){
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_MANUAL
){
return
workMode_msg_build
(
ep
,
1
);
param
=
underfloor_heating_workmode_msg_build
(
ep
,
1
);
}
break
;
}
}
}
break
;
case
VP_CTRL_TMP_SET
:
case
VP_CTRL_TMP_SET
:{
if
(
arg
[
1
]
!=
0x20
){
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
return
NULL
;
}
}
uint8_t
tmp
=
arg
[
2
];
uint8_t
tmp
=
arg
[
2
];
debug_log
(
LOG_CRIT_LEVEL
,
"[VP] set tmp=%d
\n
"
,
tmp
);
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] %d
\n
"
,
tmp
);
return
temperature_msg_build
(
ep
,
tmp
);
default:
break
;
if
(
tmp
>
30
){
tmp
=
30
;
}
else
if
(
tmp
<
20
){
tmp
=
20
;
}
param
=
underfloor_heating_temperature_msg_build
(
ep
,
tmp
);
}
break
;
case
VP_CTRL_TMP_UP
:{
if
(
arg_len
!=
5
||
arg
[
1
]
!=
0x42
&&
arg
[
2
]
!=
0x02
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
}
cJSON
*
value
=
get_value
(
node
,
"Temperature"
);
if
(
value
==
NULL
||
value
->
type
!=
cJSON_Number
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[value] %d
\n
"
,
value
->
valueint
);
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] inc %d
\n
"
,
arg
[
3
]);
double
tmp
=
value
->
valuedouble
+
arg
[
3
];
if
(
tmp
>
30
){
tmp
=
30
;
}
else
if
(
tmp
<
20
){
tmp
=
20
;
}
debug_log
(
LOG_INFO_LEVEL
,
"tmp=%f
\n
"
,
tmp
);
param
=
underfloor_heating_temperature_msg_build
(
ep
,
tmp
);
}
break
;
case
VP_CTRL_TMP_DOWN
:{
if
(
arg
[
1
]
!=
0x42
&&
arg
[
2
]
!=
0x02
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
return
NULL
;
}
cJSON
*
value
=
get_value
(
node
,
"Temperature"
);
if
(
value
==
NULL
||
value
->
type
!=
cJSON_Number
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[value] %d
\n
"
,
value
->
valueint
);
debug_log
(
LOG_INFO_LEVEL
,
"[tmp] dec %d
\n
"
,
arg
[
3
]);
double
tmp
=
value
->
valuedouble
-
arg
[
3
];
if
(
tmp
>
30
){
tmp
=
30
;
}
else
if
(
tmp
<
20
){
tmp
=
20
;
}
debug_log
(
LOG_INFO_LEVEL
,
"tmp=%f
\n
"
,
tmp
);
param
=
underfloor_heating_temperature_msg_build
(
ep
,
tmp
);
}
break
;
default:
break
;
}
return
param
;
}
cJSON
*
dimming_light_dev_powerSwitch_msg_build
(
int
ep
,
int
onoff
)
{
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
onoff
);
return
params
;
}
}
static
cJSON
*
dimming_light_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
static
cJSON
*
dimming_light_dev_colortemperature_msg_build
(
int
ep
,
int
val
)
{
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
1
);
cJSON_AddNumberToObject
(
params
,
"ColorTemperature"
,
val
);
return
params
;
}
static
cJSON
*
dimming_light_dev_brightness_msg_build
(
int
ep
,
int
val
)
{
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
1
);
cJSON_AddNumberToObject
(
params
,
"Brightness"
,
val
);
return
params
;
}
static
cJSON
*
dimming_light_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
,
kk_map_dev_node_t
*
node
)
{
{
uint8_t
skill_type
=
arg
[
0
];
uint8_t
skill_type
=
arg
[
0
];
cJSON
*
param
=
NULL
;
switch
(
skill_type
){
switch
(
skill_type
){
case
VP_CTRL_OPEN
:
//
case
VP_CTRL_OPEN
:{
return
PowerSwitch_msg_build
(
ep
,
1
);
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] on
\n
"
);
case
VP_CTRL_CLOSE
:
param
=
dimming_light_dev_powerSwitch_msg_build
(
ep
,
1
);
return
PowerSwitch_msg_build
(
ep
,
0
);
}
break
;
case
VP_CTRL_CLOSE
:{
debug_log
(
LOG_INFO_LEVEL
,
"[OnOff] off
\n
"
);
param
=
dimming_light_dev_powerSwitch_msg_build
(
ep
,
0
);
}
break
;
case
VP_CTRL_SET_COLOR_TMP
:{
case
VP_CTRL_SET_COLOR_TMP
:{
if
(
arg
[
1
]
!=
0x20
){
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
return
NULL
;
}
}
uint8_t
mode
=
arg
[
2
];
uint8_t
mode
=
arg
[
2
];
debug_log
(
LOG_
CRIT_LEVEL
,
"[VP] set mode=%d
\n
"
,
mode
);
debug_log
(
LOG_
INFO_LEVEL
,
"[mode] %d
\n
"
,
mode
);
if
(
mode
==
0x01
){
if
(
mode
==
0x01
){
return
ColorTemperature_msg_build
(
ep
,
20
);
param
=
dimming_light_dev_colortemperature_msg_build
(
ep
,
20
);
}
else
if
(
mode
==
0x02
){
}
else
if
(
mode
==
0x02
){
return
ColorTemperature_msg_build
(
ep
,
50
);
param
=
dimming_light_dev_colortemperature_msg_build
(
ep
,
50
);
}
else
if
(
mode
==
0x03
){
}
else
if
(
mode
==
0x03
){
return
ColorTemperature_msg_build
(
ep
,
100
);
param
=
dimming_light_dev_colortemperature_msg_build
(
ep
,
100
);
}
break
;
}
}
case
VP_CTRL_BRIGHTNESS_SET
:
}
break
;
if
(
arg
[
1
]
!=
0x20
){
case
VP_CTRL_BRIGHTNESS_SET
:{
if
(
arg_len
!=
3
||
arg
[
1
]
!=
0x20
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
return
NULL
;
}
}
uint8_t
bri
=
arg
[
2
];
uint8_t
bri
=
arg
[
2
];
return
Brightness_msg_build
(
ep
,
bri
);
debug_log
(
LOG_INFO_LEVEL
,
"[bri] %d
\n
"
,
bri
);
break
;
if
(
bri
>
100
){
bri
=
100
;
}
else
if
(
bri
<=
1
){
bri
=
1
;
}
param
=
dimming_light_dev_brightness_msg_build
(
ep
,
bri
);
}
break
;
default:
break
;
case
VP_CTRL_BRIGHTNESS_DOWN
:{
if
(
arg_len
!=
5
||
arg
[
1
]
!=
0x42
&&
arg
[
2
]
!=
0x02
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
}
cJSON
*
value
=
get_value
(
node
,
"Brightness"
);
if
(
value
==
NULL
||
value
->
type
!=
cJSON_Number
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
return
NULL
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[value] %d
\n
"
,
value
->
valueint
);
debug_log
(
LOG_INFO_LEVEL
,
"[bri] dec %d
\n
"
,
arg
[
3
]);
int
bri
=
value
->
valueint
-
arg
[
3
];
if
(
bri
>
100
){
bri
=
100
;
}
else
if
(
bri
<=
1
){
bri
=
1
;
}
debug_log
(
LOG_INFO_LEVEL
,
"bri=%d
\n
"
,
bri
);
param
=
dimming_light_dev_brightness_msg_build
(
ep
,
bri
);
}
break
;
case
VP_CTRL_BRIGHTNESS_UP
:{
if
(
arg_len
!=
5
||
arg
[
1
]
!=
0x42
&&
arg
[
2
]
!=
0x02
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] para err
\n
"
);
return
NULL
;
}
cJSON
*
value
=
get_value
(
node
,
"Brightness"
);
if
(
value
==
NULL
||
value
->
type
!=
cJSON_Number
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] value err
\n
"
);
return
NULL
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[value] %d
\n
"
,
value
->
valueint
);
debug_log
(
LOG_INFO_LEVEL
,
"[bri] inc %d
\n
"
,
arg
[
3
]);
int
bri
=
value
->
valueint
+
arg
[
3
];
if
(
bri
>
100
){
bri
=
100
;
}
else
if
(
bri
<=
1
){
bri
=
1
;
}
debug_log
(
LOG_INFO_LEVEL
,
"bri=%d
\n
"
,
bri
);
param
=
dimming_light_dev_brightness_msg_build
(
ep
,
bri
);
}
break
;
default:
break
;
}
return
param
;
}
}
int
kk_lan_vp_control
(
uint8_t
num
,
uint32_t
nodeIdAry
[],
uint8_t
*
arg
,
uint8_t
arg_len
)
int
kk_lan_vp_control
(
uint8_t
num
,
uint32_t
nodeIdAry
[],
uint8_t
*
arg
,
uint8_t
arg_len
)
{
{
uint8_t
i
,
j
;
uint8_t
i
,
j
;
uint8_t
err
=
0
;
int
err
=
1
;
uint8_t
skill_type
;
uint8_t
skill_type
;
int
ep
;
int
ep
;
int
pid
=
0
;
int
pid
=
0
;
...
@@ -616,24 +1223,32 @@ int kk_lan_vp_control(uint8_t num,uint32_t nodeIdAry[],uint8_t *arg,uint8_t arg_
...
@@ -616,24 +1223,32 @@ int kk_lan_vp_control(uint8_t num,uint32_t nodeIdAry[],uint8_t *arg,uint8_t arg_
params
=
NULL
;
params
=
NULL
;
if
(
is_ac_gw_pid
(
pid
)
!=
0
){
if
(
is_ac_gw_pid
(
pid
)
!=
0
){
debug_log
(
LOG_CRIT_LEVEL
,
"air conditioner,pid=%d
\n
"
,
pid
);
params
=
air_conditioner_dev_handle
(
deviceCode
,
ep
,
arg
,
arg_len
);
params
=
air_conditioner_dev_handle
(
ep
,
arg
,
arg_len
);
}
else
{
}
else
{
if
((
func
=
dev_pid_dispatch
(
pid
))
!=
NULL
){
if
((
func
=
dev_pid_dispatch
(
pid
))
!=
NULL
){
debug_log
(
LOG_CRIT_LEVEL
,
"skill_type=%02x,ep=%d
\n
"
,
skill_type
,
ep
);
params
=
func
(
ep
,
arg
,
arg_len
);
if
(
node
==
NULL
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] node=NULL
\n
"
);
continue
;
}
if
(
node
->
online_status
==
0
){
debug_log
(
LOG_WARNING_LEVEL
,
"[ctrl fail] dev offline
\n
"
);
continue
;
}
params
=
func
(
ep
,
arg
,
arg_len
,
node
);
}
}
}
}
if
(
params
!=
NULL
){
if
(
params
!=
NULL
){
msg
=
property_set
(
productCode
,
deviceCode
,
"*"
,
"*"
,
params
);
msg
=
property_set
(
productCode
,
deviceCode
,
"*"
,
"*"
,
params
);
kk_ipc_send_json
(
msg
);
kk_ipc_send_json
(
msg
);
}
else
{
err
=
0
;
err
=
1
;
break
;
}
}
}
}
return
err
;
return
err
;
}
}
...
...
application/klansdk/kk_oldccu_msg.c
View file @
d70cf063
...
@@ -560,7 +560,9 @@ int kk_lan_device_delete_notify(cJSON *payload)
...
@@ -560,7 +560,9 @@ int kk_lan_device_delete_notify(cJSON *payload)
return
-
1
;
return
-
1
;
}
}
indoor_airstatus_table_delete_item
(
deviceCode
->
valuestring
);
_kk_lan_delete_device
(
deviceCode
->
valuestring
);
_kk_lan_delete_device
(
deviceCode
->
valuestring
);
return
0
;
return
0
;
}
}
...
...
application/klansdk/kk_voice_panel_cfg.c
View file @
d70cf063
...
@@ -390,7 +390,11 @@ static int kk_vp_sync_device_multi_eps(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c
...
@@ -390,7 +390,11 @@ static int kk_vp_sync_device_multi_eps(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c
if
(
kk_map_dev_search_by_deviceCode
(
pDevs
->
mac
,
&
node
)
==
0
){
if
(
kk_map_dev_search_by_deviceCode
(
pDevs
->
mac
,
&
node
)
==
0
){
/*if(strcmp(pDevs->online,"1")==0){
node->online_status = 1;
}else{
node->online_status = 0;
}*/
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
node
->
opearteType
);
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
node
->
opearteType
);
}
else
{
}
else
{
...
@@ -467,6 +471,12 @@ static int kk_vp_sync_device_single_ep(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c
...
@@ -467,6 +471,12 @@ static int kk_vp_sync_device_single_ep(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c
if
(
kk_map_dev_search_by_deviceCode
(
pDevs
->
mac
,
&
node
)
==
0
){
if
(
kk_map_dev_search_by_deviceCode
(
pDevs
->
mac
,
&
node
)
==
0
){
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
node
->
opearteType
);
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
node
->
opearteType
);
/*if(strcmp(pDevs->online,"1")==0){
node->online_status = 1;
}else{
node->online_status = 0;
}*/
}
else
{
}
else
{
if
(
is_ac_gw_pid
(
atoi
(
pDevs
->
pid
))
!=
0
){
if
(
is_ac_gw_pid
(
atoi
(
pDevs
->
pid
))
!=
0
){
...
...
application/klansdk/kk_voice_panel_handle.c
View file @
d70cf063
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
#include <time.h>
#include <time.h>
#include <unistd.h>
#include <unistd.h>
#include <fcntl.h>
#include <fcntl.h>
#include "kk_newccu_msg.h"
#include "kk_newccu_msg.h"
#include "kk_voice_panel_cfg.h"
#include "kk_voice_panel_cfg.h"
#include "kk_voice_panel_handle.h"
#include "kk_voice_panel_handle.h"
...
@@ -20,7 +21,7 @@
...
@@ -20,7 +21,7 @@
static
char
s_voice_sw
[
16
]
=
{
0
};
static
uint16_t
_g_seq
;
static
uint16_t
_g_seq
;
static
FILE
*
update_fp
=
NULL
;
static
FILE
*
update_fp
=
NULL
;
...
@@ -28,6 +29,7 @@ static FILE *ota_fp = NULL;
...
@@ -28,6 +29,7 @@ static FILE *ota_fp = NULL;
#define VP_CH 0
#define VP_CH 0
#define SOUND_SETE_VP_CH 9
#define VP_RES 0
#define VP_RES 0
...
@@ -393,11 +395,43 @@ uint16_t vp_get_seq(void)
...
@@ -393,11 +395,43 @@ uint16_t vp_get_seq(void)
{
{
return
_g_seq
++
;
return
_g_seq
++
;
}
}
void
vp_send_data_build_ex
(
uint16_t
opCode
,
int
len
,
uint8_t
*
data
)
{
uint8_t
data_buf
[
1024
]
=
{
0
};
int
data_len
=
0
;
pro_data_t
pro_data
;
memset
(
&
pro_data
,
0
,
sizeof
(
pro_data_t
));
pro_data
.
seq
=
vp_get_seq
();
pro_data
.
ch
=
SOUND_SETE_VP_CH
;
pro_data
.
opcode
=
opCode
;
pro_data
.
cf
.
ack
=
0
;
pro_data
.
cf
.
dir
=
1
;
pro_data
.
cf
.
sof_flag
=
1
;
void
vp_send_data_build
(
uint16_t
opCode
,
uint8_t
len
,
uint8_t
*
data
)
pro_data
.
args_len
=
len
;
memcpy
(
pro_data
.
arg
,
data
,
len
);
data_len
=
proto_frame_to_uart
(
&
pro_data
,
data_buf
);
debug_log
(
LOG_INFO_LEVEL
,
"
\n
[LAN->VP]len=%d
\n
"
,
data_len
);
uint8_t
dataStr
[
512
]
=
{
0
};
for
(
int
i
=
0
;
i
<
data_len
;
i
++
){
snprintf
((
char
*
)
dataStr
+
strlen
((
char
*
)
dataStr
),
sizeof
(
dataStr
),
"%02X "
,
data_buf
[
i
]);
}
debug_log
(
LOG_INFO_LEVEL
,
"%s
\n\n
"
,
dataStr
);
voice_uart_lock
();
eSerial_WriteBuffer
(
data_buf
,
data_len
);
voice_uart_unlock
();
}
void
vp_send_data_build
(
uint16_t
opCode
,
int
len
,
uint8_t
*
data
)
{
{
uint8_t
data_buf
[
256
]
=
{
0
};
uint8_t
data_buf
[
1024
]
=
{
0
};
uint8_t
data_len
=
0
;
int
data_len
=
0
;
pro_data_t
pro_data
;
pro_data_t
pro_data
;
memset
(
&
pro_data
,
0
,
sizeof
(
pro_data_t
));
memset
(
&
pro_data
,
0
,
sizeof
(
pro_data_t
));
...
@@ -422,13 +456,16 @@ void vp_send_data_build(uint16_t opCode,uint8_t len,uint8_t *data)
...
@@ -422,13 +456,16 @@ void vp_send_data_build(uint16_t opCode,uint8_t len,uint8_t *data)
snprintf
((
char
*
)
dataStr
+
strlen
((
char
*
)
dataStr
),
sizeof
(
dataStr
),
"%02X "
,
data_buf
[
i
]);
snprintf
((
char
*
)
dataStr
+
strlen
((
char
*
)
dataStr
),
sizeof
(
dataStr
),
"%02X "
,
data_buf
[
i
]);
}
}
debug_log
(
LOG_INFO_LEVEL
,
"%s
\n\n
"
,
dataStr
);
debug_log
(
LOG_INFO_LEVEL
,
"%s
\n\n
"
,
dataStr
);
voice_uart_lock
();
eSerial_WriteBuffer
(
data_buf
,
data_len
);
eSerial_WriteBuffer
(
data_buf
,
data_len
);
voice_uart_unlock
();
}
}
void
vp_reply_data_build
(
uint16_t
seq
,
uint8_t
ch
,
uint16_t
opCode
,
uint8_t
len
,
uint8_t
*
data
)
void
vp_reply_data_build
(
uint16_t
seq
,
uint8_t
ch
,
uint16_t
opCode
,
int
len
,
uint8_t
*
data
)
{
{
uint8_t
data_buf
[
256
]
=
{
0
};
uint8_t
data_buf
[
1024
]
=
{
0
};
uint8_t
data_len
=
0
;
int
data_len
=
0
;
pro_data_t
pro_data
;
pro_data_t
pro_data
;
memset
(
&
pro_data
,
0
,
sizeof
(
pro_data_t
));
memset
(
&
pro_data
,
0
,
sizeof
(
pro_data_t
));
...
@@ -447,13 +484,16 @@ void vp_reply_data_build(uint16_t seq,uint8_t ch,uint16_t opCode,uint8_t len,uin
...
@@ -447,13 +484,16 @@ void vp_reply_data_build(uint16_t seq,uint8_t ch,uint16_t opCode,uint8_t len,uin
data_len
=
proto_frame_to_uart
(
&
pro_data
,
data_buf
);
data_len
=
proto_frame_to_uart
(
&
pro_data
,
data_buf
);
debug_log
(
LOG_INFO_LEVEL
,
"
\n
[LAN->VP]len=%d
\n
"
,
data_len
);
uint8_t
dataStr
[
512
]
=
{
0
};
uint8_t
dataStr
[
1024
]
=
{
0
};
for
(
int
i
=
0
;
i
<
data_len
;
i
++
){
for
(
int
i
=
0
;
i
<
data_len
;
i
++
){
snprintf
((
char
*
)
dataStr
+
strlen
((
char
*
)
dataStr
),
sizeof
(
dataStr
),
"%02X "
,
data_buf
[
i
]);
snprintf
((
char
*
)
dataStr
+
strlen
((
char
*
)
dataStr
),
sizeof
(
dataStr
),
"%02X "
,
data_buf
[
i
]);
}
}
debug_log
(
LOG_INFO_LEVEL
,
"%s
\n\n
"
,
dataStr
);
debug_log
(
LOG_INFO_LEVEL
,
"%s
\n\n
"
,
dataStr
);
voice_uart_lock
();
eSerial_WriteBuffer
(
data_buf
,
data_len
);
eSerial_WriteBuffer
(
data_buf
,
data_len
);
voice_uart_unlock
();
}
}
...
@@ -551,19 +591,35 @@ int _vp_get_cfg_file_crc32(void)
...
@@ -551,19 +591,35 @@ int _vp_get_cfg_file_crc32(void)
return
crc32
;
return
crc32
;
}
}
int
kk_vp_voice_version_set
(
char
*
ver
,
int
len
)
{
if
(
ver
==
NULL
||
len
>=
strlen
(
s_voice_sw
)){
return
-
1
;
}
memcpy
(
s_voice_sw
,
ver
,
strlen
(
ver
));
return
0
;
}
static
void
vp_open_fd
()
static
void
vp_open_fd
()
{
{
if
(
update_fp
!=
NULL
){
fclose
(
update_fp
);
}
update_fp
=
fopen
(
VP_CONFIG_FILE_TAR_GZ
,
"rb"
);
update_fp
=
fopen
(
VP_CONFIG_FILE_TAR_GZ
,
"rb"
);
if
(
update_fp
==
NULL
){
if
(
update_fp
==
NULL
){
debug_log
(
LOG_WARNING_LEVEL
,
"[%s]fopen err!
\n
"
,
VP_CONFIG_FILE_TAR_GZ
);
debug_log
(
LOG_WARNING_LEVEL
,
"[%s]fopen err!
\n
"
,
VP_CONFIG_FILE_TAR_GZ
);
}
}
}
}
static
void
vp_close_fd
()
int
kk_vp_voice_version_get
(
char
*
ver
,
int
len
)
{
{
if
(
update_fp
!=
NULL
){
if
(
ver
==
NULL
||
len
<
strlen
(
s_voice_sw
)){
fclose
(
update_fp
);
return
-
1
;
}
}
memcpy
(
ver
,
s_voice_sw
,
strlen
(
s_voice_sw
));
return
0
;
}
}
...
@@ -593,23 +649,37 @@ static void vp_close_fd()
...
@@ -593,23 +649,37 @@ static void vp_close_fd()
static
char
s_voice_sw
[
16
]
=
{
0
};
int
kk_vp_voice_version_get
(
char
*
ver
,
int
len
)
{
if
(
ver
==
NULL
||
len
<
strlen
(
s_voice_sw
)){
return
-
1
;
}
memcpy
(
ver
,
s_voice_sw
,
strlen
(
s_voice_sw
));
return
0
;
}
int
kk_vp_voice_version_set
(
char
*
ver
,
int
len
)
{
if
(
ver
==
NULL
||
len
>=
strlen
(
s_voice_sw
)){
return
-
1
;
}
memcpy
(
s_voice_sw
,
ver
,
strlen
(
ver
));
return
0
;
}
static
void
kk_vp_get_8009_snapshoot_handle
(
pro_data_t
*
pro_data
)
static
void
kk_vp_get_8009_snapshoot_handle
(
pro_data_t
*
pro_data
)
{
{
uint8_t
err
;
uint8_t
err
;
...
@@ -639,7 +709,6 @@ static void kk_vp_get_8009_snapshoot_handle(pro_data_t *pro_data)
...
@@ -639,7 +709,6 @@ static void kk_vp_get_8009_snapshoot_handle(pro_data_t *pro_data)
f_ver
=
MK_UINT32
(
&
pro_data
->
arg
[
15
]);
f_ver
=
MK_UINT32
(
&
pro_data
->
arg
[
15
]);
kk_vp_set_state_machine
(
SET_8009_SYSTEM
);
kk_vp_set_config_file_version
(
f_ver
);
kk_vp_set_config_file_version
(
f_ver
);
memset
(
s_voice_sw
,
0x0
,
sizeof
(
s_voice_sw
));
memset
(
s_voice_sw
,
0x0
,
sizeof
(
s_voice_sw
));
//string version=std::to_string(pro_data->arg[1])+"."+std::to_string(pro_data->arg[2])+"."+std::to_string(pro_data->arg[3]);
//string version=std::to_string(pro_data->arg[1])+"."+std::to_string(pro_data->arg[2])+"."+std::to_string(pro_data->arg[3]);
...
@@ -649,6 +718,89 @@ static void kk_vp_get_8009_snapshoot_handle(pro_data_t *pro_data)
...
@@ -649,6 +718,89 @@ static void kk_vp_get_8009_snapshoot_handle(pro_data_t *pro_data)
}
}
}
}
char
MAC
[
18
];
#define CMD_MAC "fw_printenv ethaddr -n"
int
_System
(
const
char
*
cmd
,
char
*
pRetMsg
,
int
msg_len
){
FILE
*
fp
;
int
res
=
-
1
;
int
ret
=
0
;
if
(
cmd
==
NULL
||
pRetMsg
==
NULL
||
msg_len
<
0
)
{
printf
(
"Param Error!
\n
"
);
return
-
1
;
}
if
((
fp
=
popen
(
cmd
,
"r"
)
)
==
NULL
)
{
printf
(
"Popen Error!
\n
"
);
return
-
2
;
}
else
{
int
i
=
0
;
char
c
=
0
;
memset
(
pRetMsg
,
0
,
msg_len
);
//while(fgets(pRetMsg, msg_len, fp) != NULL)
while
(
fread
(
&
c
,
1
,
1
,
fp
),
!
feof
(
fp
))
{
//printf("%s, i=%d\n",pRetMsg, i);
pRetMsg
[
i
++
]
=
c
;
if
(
i
>=
msg_len
-
1
){
break
;
}
}
//printf("end %s \n",pRetMsg);
if
((
res
=
pclose
(
fp
))
==
-
1
)
{
printf
(
"close popenerror!
\n
"
);
return
-
3
;
}
if
(
pRetMsg
[
strlen
(
pRetMsg
)
-
1
]
==
'\n'
){
pRetMsg
[
strlen
(
pRetMsg
)
-
1
]
=
'\0'
;
}
return
ret
;
}
}
char
*
getMac
(){
char
tmp
[
128
]
=
{
0
};
int
ret
=
0
;
if
(
strlen
(
MAC
)
>
0
){
return
MAC
;
}
ret
=
_System
(
CMD_MAC
,
tmp
,
sizeof
(
tmp
));
if
(
ret
==
0
&&
strlen
(
tmp
)
>
0
){
memset
(
MAC
,
0x00
,
sizeof
(
MAC
));
strncpy
(
MAC
,
tmp
,
sizeof
(
MAC
));
MAC
[
sizeof
(
MAC
)
-
1
]
=
0
;
return
MAC
;
}
else
{
printf
(
"==== get mac error, exit sys_ota!!!!!!
\n
"
);
return
NULL
;
}
}
static
char
convert_byte
(
char
temp
)
{
char
data
=
0
;
if
((
temp
>=
'0'
)
&&
(
temp
<=
'9'
))
{
data
=
(
temp
-
'0'
);
}
else
if
((
temp
>=
'a'
)
&&
(
temp
<=
'f'
))
{
data
=
(
temp
-
'a'
+
10
);
}
else
if
((
temp
>=
'A'
)
&&
(
temp
<=
'F'
))
{
data
=
(
temp
-
'A'
+
10
);
}
return
data
;
}
static
void
kk_vp_get_snapshoot_handle
(
pro_data_t
*
pro_data
)
static
void
kk_vp_get_snapshoot_handle
(
pro_data_t
*
pro_data
)
{
{
uint8_t
data
[
12
]
=
{
0
};
uint8_t
data
[
12
]
=
{
0
};
...
@@ -659,10 +811,16 @@ static void kk_vp_get_snapshoot_handle(pro_data_t *pro_data)
...
@@ -659,10 +811,16 @@ static void kk_vp_get_snapshoot_handle(pro_data_t *pro_data)
uint16_t
nodeId
=
0
;
uint16_t
nodeId
=
0
;
uint8_t
netStatus
=
0x02
;
uint8_t
netStatus
=
0x02
;
if
(
pro_data
->
args_len
!=
1
){
char
*
pMac
=
getMac
();
if
(
pro_data
->
args_len
!=
1
||
pMac
==
NULL
){
return
;
return
;
}
}
for
(
int
j
=
0
;
j
<
6
;
j
++
){
mac
[
j
]
=
(
convert_byte
(
pMac
[
3
*
j
])
<<
4
)
|
convert_byte
(
pMac
[
3
*
j
+
1
]);
}
//todo:
//todo:
data
[
0
]
=
err
;
data
[
0
]
=
err
;
for
(
i
=
0
;
i
<
8
;
i
++
){
for
(
i
=
0
;
i
<
8
;
i
++
){
...
@@ -679,7 +837,7 @@ static void kk_vp_scene_trigger_handle(pro_data_t *pro_data)
...
@@ -679,7 +837,7 @@ static void kk_vp_scene_trigger_handle(pro_data_t *pro_data)
{
{
cJSON
*
msg
=
NULL
;
cJSON
*
msg
=
NULL
;
uint8_t
data
[
256
]
=
{
0
};
uint8_t
data
[
1024
]
=
{
0
};
uint8_t
off
=
0
;
uint8_t
off
=
0
;
uint16_t
*
sceneAry
;
uint16_t
*
sceneAry
;
...
@@ -750,7 +908,8 @@ static void kk_vp_set_8009_system_time_handle(pro_data_t *pro_data)
...
@@ -750,7 +908,8 @@ static void kk_vp_set_8009_system_time_handle(pro_data_t *pro_data)
minute
=
pro_data
->
arg
[
6
];
minute
=
pro_data
->
arg
[
6
];
sec
=
pro_data
->
arg
[
7
];
sec
=
pro_data
->
arg
[
7
];
kk_vp_set_state_machine
(
GET_8009_CONFIG_FILE_INFO
);
kk_voice_set_time_flag
();
debug_log
(
LOG_INFO_LEVEL
,
"
\n
%d-%d-%d %d:%d:%d
\n
"
,
year
,
month
,
day
,
hour
,
minute
,
sec
);
debug_log
(
LOG_INFO_LEVEL
,
"
\n
%d-%d-%d %d:%d:%d
\n
"
,
year
,
month
,
day
,
hour
,
minute
,
sec
);
}
}
...
@@ -766,7 +925,7 @@ static void kk_vp_get_system_time_handle(pro_data_t *pro_data)
...
@@ -766,7 +925,7 @@ static void kk_vp_get_system_time_handle(pro_data_t *pro_data)
}
}
time_t
curTime
=
time
(
NULL
);
time_t
curTime
=
time
(
NULL
);
struct
tm
*
c
=
gmtime
(
&
curTime
);
struct
tm
*
c
=
localtime
(
&
curTime
);
data
[
0
]
=
0
;
data
[
0
]
=
0
;
data
[
1
]
=
((
c
->
tm_year
+
1900
)
>>
8
)
&
0Xff
;
data
[
1
]
=
((
c
->
tm_year
+
1900
)
>>
8
)
&
0Xff
;
...
@@ -791,31 +950,30 @@ static void kk_vp_action_handle(pro_data_t *pro_data)
...
@@ -791,31 +950,30 @@ static void kk_vp_action_handle(pro_data_t *pro_data)
uint32_t
*
OperatorIdAry
=
NULL
;
uint32_t
*
OperatorIdAry
=
NULL
;
uint8_t
skillType
;
uint8_t
skillType
;
debug_log
(
LOG_CRIT_LEVEL
,
"
\n\n
*****************VP CTRL*****************
\n
"
);
debug_log
(
LOG_CRIT_LEVEL
,
"
\n\n
****************************KK VOICE CONTROL****************************
\n
"
);
if
((
devNum
=
pro_data
->
arg
[
0
])
!=
0
){
if
((
devNum
=
pro_data
->
arg
[
0
])
!=
0
){
nodeIdAry
=
malloc
(
sizeof
(
uint32_t
)
*
devNum
);
nodeIdAry
=
malloc
(
sizeof
(
uint32_t
)
*
devNum
);
OperatorIdAry
=
malloc
(
sizeof
(
uint32_t
)
*
devNum
);
OperatorIdAry
=
malloc
(
sizeof
(
uint32_t
)
*
devNum
);
debug_log
(
LOG_DEBUG_LEVEL
,
"devNum=%d"
,
devNum
);
debug_log
(
LOG_DEBUG_LEVEL
,
"devNum=%d
\n
"
,
devNum
);
for
(
i
=
0
;
i
<
devNum
;
i
++
){
for
(
i
=
0
;
i
<
devNum
;
i
++
){
nodeIdAry
[
i
]
=
(
pro_data
->
arg
[
1
+
8
*
i
]
<<
24
)
|
(
pro_data
->
arg
[
2
+
8
*
i
]
<<
16
)
|
(
pro_data
->
arg
[
3
+
8
*
i
]
<<
8
)
|
pro_data
->
arg
[
4
+
8
*
i
];
nodeIdAry
[
i
]
=
(
pro_data
->
arg
[
1
+
8
*
i
]
<<
24
)
|
(
pro_data
->
arg
[
2
+
8
*
i
]
<<
16
)
|
(
pro_data
->
arg
[
3
+
8
*
i
]
<<
8
)
|
pro_data
->
arg
[
4
+
8
*
i
];
OperatorIdAry
[
i
]
=
(
pro_data
->
arg
[
5
+
8
*
i
]
<<
24
)
|
(
pro_data
->
arg
[
6
+
8
*
i
]
<<
16
)
|
(
pro_data
->
arg
[
7
+
8
*
i
]
<<
8
)
|
pro_data
->
arg
[
8
+
8
*
i
];
OperatorIdAry
[
i
]
=
(
pro_data
->
arg
[
5
+
8
*
i
]
<<
24
)
|
(
pro_data
->
arg
[
6
+
8
*
i
]
<<
16
)
|
(
pro_data
->
arg
[
7
+
8
*
i
]
<<
8
)
|
pro_data
->
arg
[
8
+
8
*
i
];
debug_log
(
LOG_DEBUG_LEVEL
,
"[Node Id %d] %08x
\n
"
,
i
,
nodeIdAry
[
i
]);
debug_log
(
LOG_DEBUG_LEVEL
,
"[%d]Node Id=0x%08x,Operator Id=0x%08x
\n
"
,
i
,
nodeIdAry
[
i
],
OperatorIdAry
[
i
]);
debug_log
(
LOG_DEBUG_LEVEL
,
"[Operator Id %d] %08x
\n
"
,
i
,
OperatorIdAry
[
i
]);
}
}
skillType
=
pro_data
->
arg
[
1
+
8
*
i
];
skillType
=
pro_data
->
arg
[
1
+
8
*
i
];
debug_log
(
LOG_DEBUG_LEVEL
,
"[skillType] %02x
\n
"
,
skillType
);
debug_log
(
LOG_DEBUG_LEVEL
,
"skill type=0x%02x,arg len=%d
\n
"
,
skillType
,
pro_data
->
args_len
-
1
-
8
*
devNum
);
debug_log
(
LOG_DEBUG_LEVEL
,
"arg len=%d
\n
"
,
pro_data
->
args_len
-
1
-
8
*
devNum
);
err
=
kk_lan_vp_control
(
devNum
,
nodeIdAry
,
&
pro_data
->
arg
[
1
+
8
*
i
],
pro_data
->
args_len
-
1
-
8
*
devNum
);
err
=
kk_lan_vp_control
(
devNum
,
nodeIdAry
,
&
pro_data
->
arg
[
1
+
8
*
i
],
pro_data
->
args_len
-
1
-
8
*
devNum
);
if
(
err
==
0
){
if
(
err
==
0
){
uint8_t
data
[
256
]
=
{
0
};
uint8_t
data
[
256
]
=
{
0
};
memset
(
data
,
0
,
sizeof
(
data
));
memset
(
data
,
0
,
sizeof
(
data
));
data
[
0
]
=
err
;
data
[
0
]
=
err
;
data
[
1
]
=
devNum
;
data
[
1
]
=
devNum
;
//todo:根据实际的执行
for
(
i
=
0
;
i
<
devNum
;
i
++
){
for
(
i
=
0
;
i
<
devNum
;
i
++
){
data
[
2
+
8
*
i
]
=
(
nodeIdAry
[
i
]
>>
24
)
&
0xff
;
data
[
2
+
8
*
i
]
=
(
nodeIdAry
[
i
]
>>
24
)
&
0xff
;
data
[
3
+
8
*
i
]
=
(
nodeIdAry
[
i
]
>>
16
)
&
0xff
;
data
[
3
+
8
*
i
]
=
(
nodeIdAry
[
i
]
>>
16
)
&
0xff
;
...
@@ -870,14 +1028,14 @@ static void kk_vp_config_file_update_notify_handle(pro_data_t *pro_data)
...
@@ -870,14 +1028,14 @@ static void kk_vp_config_file_update_notify_handle(pro_data_t *pro_data)
static
void
kk_vp_config_file_update_data_req_handle
(
pro_data_t
*
pro_data
)
static
void
kk_vp_config_file_update_data_req_handle
(
pro_data_t
*
pro_data
)
{
{
uint8_t
err
=
0
;
int
err
=
0
;
uint32_t
f_ver
,
offset
;
uint32_t
f_ver
,
offset
;
uint16_t
req_size
;
uint16_t
req_size
;
uint8_t
data
[
256
]
=
{
0
};
uint8_t
data
[
1024
]
=
{
0
};
uint
8_t
len
=
0
;
uint
16_t
len
=
0
;
uint
8_t
r_len
=
0
;
uint
16_t
r_len
=
0
;
uint
8_t
t_len
=
0
;
uint
16_t
t_len
=
0
;
uint8_t
*
pCrc
=
NULL
;
uint8_t
*
pCrc
=
NULL
;
uint32_t
crc
;
uint32_t
crc
;
...
@@ -914,14 +1072,40 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data)
...
@@ -914,14 +1072,40 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data)
pCrc
=
&
data
[
len
];
pCrc
=
&
data
[
len
];
if
(
err
==
0
){
if
(
err
==
0
){
int
err
=
fseek
(
update_fp
,
offset
,
SEEK_SET
);
if
(
update_fp
!=
NULL
){
err
=
fseek
(
update_fp
,
offset
,
SEEK_SET
);
}
if
(
err
==
0
){
if
(
err
==
0
){
while
(
req_size
>
t_len
){
while
(
req_size
>
t_len
){
r_len
=
fread
(
&
data
[
len
],
1
,
req_size
,
update_fp
);
r_len
=
fread
(
&
data
[
len
],
1
,
req_size
,
update_fp
);
debug_log
(
LOG_ERROR_LEVEL
,
"r_len=%d
\n
"
,
r_len
);
if
(
r_len
>=
0
){
if
(
update_fp
==
NULL
){
debug_log
(
LOG_ERROR_LEVEL
,
"NULL
\n
"
);
}
if
(
r_len
<
req_size
){
debug_log
(
LOG_ERROR_LEVEL
,
"r_len<req_size
\n
"
);
if
(
feof
(
update_fp
)
!=
0
){
debug_log
(
LOG_ERROR_LEVEL
,
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@eof
\n
"
);
break
;
}
else
if
(
ferror
(
update_fp
)
!=
0
){
debug_log
(
LOG_ERROR_LEVEL
,
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@err:%d,%d
\n
"
,
ferror
(
update_fp
),
errno
);
break
;
}
}
if
(
r_len
>
0
){
t_len
+=
r_len
;
t_len
+=
r_len
;
len
+=
r_len
;
len
+=
r_len
;
}
else
if
(
r_len
==
0
){
if
(
errno
!=
EINTR
){
break
;
}
}
else
{
}
else
{
break
;
break
;
}
}
...
@@ -938,7 +1122,7 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data)
...
@@ -938,7 +1122,7 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data)
data
[
len
++
]
=
crc
&
0xff
;
data
[
len
++
]
=
crc
&
0xff
;
debug_log
(
LOG_DEBUG_LEVEL
,
"crc32=%x
\n
"
,
crc
);
debug_log
(
LOG_DEBUG_LEVEL
,
"crc32=%x
\n
"
,
crc
);
vp_reply_data_build
(
pro_data
->
seq
,
pro_data
->
ch
,
OPCODE_CONFIG_DATA_REQUEST
,
len
,
data
);
vp_reply_data_build
(
pro_data
->
seq
,
pro_data
->
ch
,
OPCODE_CONFIG_DATA_REQUEST
,
len
,
data
);
usleep
(
100
*
1000
);
//usleep(100*1000);
}
}
...
@@ -1034,9 +1218,7 @@ static void kk_vp_voice_control_handle(pro_data_t *pro_data)
...
@@ -1034,9 +1218,7 @@ static void kk_vp_voice_control_handle(pro_data_t *pro_data)
return
;
return
;
}
}
debug_log
(
LOG_CRIT_LEVEL
,
"[VP] voice contrl status =%d.
\n\n
"
,
pro_data
->
arg
[
0
]);
kk_vp_voice_control_notify
(
pro_data
->
arg
[
0
]);
kk_vp_voice_control_notify
(
pro_data
->
arg
[
0
]);
}
}
static
void
kk_vp_config_file_info_query_handle
(
pro_data_t
*
pro_data
)
static
void
kk_vp_config_file_info_query_handle
(
pro_data_t
*
pro_data
)
...
@@ -1066,10 +1248,65 @@ static void kk_vp_config_file_info_query_handle(pro_data_t *pro_data)
...
@@ -1066,10 +1248,65 @@ static void kk_vp_config_file_info_query_handle(pro_data_t *pro_data)
///////////////////////////////////////////
///////////////////////////////////////////
void
kk_voice_control
(
int
val
)
{
uint8_t
res
[
1
]
=
{
0
};
if
(
val
>
100
){
val
=
100
;
}
else
if
(
val
<
0
){
val
=
0
;
}
res
[
0
]
=
val
;
debug_log
(
LOG_DEBUG_LEVEL
,
"sound control
\n
"
);
vp_send_data_build_ex
(
OPCODE_VOICE_CONTROL
,
sizeof
(
res
),
res
);
}
void
kk_voice_switch
(
int
val
)
{
uint8_t
res
[
3
]
=
{
0
};
if
(
val
==
0
||
val
==
1
){
res
[
0
]
=
val
;
res
[
1
]
=
0xff
;
res
[
2
]
=
0xff
;
debug_log
(
LOG_DEBUG_LEVEL
,
"voice switch
\n
"
);
vp_send_data_build
(
OPCODE_VOICE_SWITCH
,
sizeof
(
res
),
res
);
}
}
void
kk_voice_cfg_init
(
void
)
{
uint8_t
res
[
3
]
=
{
0
};
res
[
0
]
=
0xff
;
res
[
1
]
=
(
KK_VOICE_OTA_MTU
>>
8
)
&
0xff
;
res
[
2
]
=
KK_VOICE_OTA_MTU
&
0xff
;
debug_log
(
LOG_DEBUG_LEVEL
,
"@@@@@@@@@@@@@@@@@@@@@@@
\n
"
);
vp_send_data_build
(
OPCODE_VOICE_SWITCH
,
sizeof
(
res
),
res
);
}
void
kk_voice_test
(
void
)
{
uint8_t
res
[
1
]
=
{
1
};
vp_send_data_build
(
0XEDB4
,
sizeof
(
res
),
res
);
}
void
kk_vp_get_8009_snapshoot
(
void
)
void
kk_vp_get_8009_snapshoot
(
void
)
{
{
uint8_t
res
[
1
]
=
{
0
};
uint8_t
res
[
1
]
=
{
0
};
debug_log
(
LOG_DEBUG_LEVEL
,
"get snapshoot
\n
"
);
debug_log
(
LOG_DEBUG_LEVEL
,
"get snapshoot
\n
"
);
kk_get_voice_version
();
vp_send_data_build
(
OPCODE_8009_SNAPSHOOT
,
sizeof
(
res
),
res
);
vp_send_data_build
(
OPCODE_8009_SNAPSHOOT
,
sizeof
(
res
),
res
);
}
}
...
@@ -1078,7 +1315,9 @@ void kk_vp_set_8009_system_time(void)
...
@@ -1078,7 +1315,9 @@ void kk_vp_set_8009_system_time(void)
uint8_t
data
[
7
]
=
{
0
};
uint8_t
data
[
7
]
=
{
0
};
time_t
curTime
=
time
(
NULL
);
time_t
curTime
=
time
(
NULL
);
struct
tm
*
c
=
gmtime
(
&
curTime
);
struct
tm
*
c
=
localtime
(
&
curTime
);
data
[
0
]
=
((
c
->
tm_year
+
1900
)
>>
8
)
&
0Xff
;
data
[
0
]
=
((
c
->
tm_year
+
1900
)
>>
8
)
&
0Xff
;
data
[
1
]
=
(
c
->
tm_year
+
1900
)
&
0Xff
;
data
[
1
]
=
(
c
->
tm_year
+
1900
)
&
0Xff
;
...
@@ -1104,6 +1343,10 @@ void kk_vp_config_file_update_start(uint32_t ver)
...
@@ -1104,6 +1343,10 @@ void kk_vp_config_file_update_start(uint32_t ver)
f_ver
=
ver
;
f_ver
=
ver
;
f_size
=
_vp_get_cfg_file_size
();
f_size
=
_vp_get_cfg_file_size
();
printf
(
"f_size=%d
\n
"
,
f_size
);
printf
(
"f_size=%d
\n
"
,
f_size
);
if
(
f_size
==
0
){
debug_log
(
LOG_EMERG_LEVEL
,
"[err]!!!!!!!!!!!!!!
\n
"
);
return
;
}
crc32
=
_vp_get_cfg_file_crc32
();
crc32
=
_vp_get_cfg_file_crc32
();
data
[
0
]
=
(
f_ver
>>
24
)
&
0xff
;
data
[
0
]
=
(
f_ver
>>
24
)
&
0xff
;
...
@@ -1165,7 +1408,9 @@ void kk_vp_get_ota_file_info(void)
...
@@ -1165,7 +1408,9 @@ void kk_vp_get_ota_file_info(void)
vp_send_data_build
(
OPCODE_VOICE_OTA_INFO_GET
,
sizeof
(
res
),
res
);
vp_send_data_build
(
OPCODE_VOICE_OTA_INFO_GET
,
sizeof
(
res
),
res
);
}
}
static
int
_vp_get_ota_file_crc32
(
char
*
file
)
static
int
_vp_get_ota_file_crc32
(
char
*
file
)
{
{
char
*
buff
=
NULL
;
char
*
buff
=
NULL
;
char
*
pRead
=
NULL
;
char
*
pRead
=
NULL
;
...
@@ -1319,12 +1564,6 @@ void kk_vp_ota_file_update_start(char* file)
...
@@ -1319,12 +1564,6 @@ void kk_vp_ota_file_update_start(char* file)
debug_log
(
LOG_DEBUG_LEVEL
,
"File Version=%d.%d.%d,File Size=%d,CRC32 Value=%08X
\n
"
,
debug_log
(
LOG_DEBUG_LEVEL
,
"File Version=%d.%d.%d,File Size=%d,CRC32 Value=%08X
\n
"
,
(
f_ver
>>
16
)
&
0xff
,(
f_ver
>>
8
&
0xff
),
f_ver
&
0xff
,
f_size
,
crc32
);
(
f_ver
>>
16
)
&
0xff
,(
f_ver
>>
8
&
0xff
),
f_ver
&
0xff
,
f_size
,
crc32
);
char
dateTime
[
64
]
=
{
0
};
time_t
curTime
=
time
(
NULL
);
struct
tm
*
ptm
=
localtime
(
&
curTime
);
snprintf
(
dateTime
,
sizeof
(
dateTime
),
"%d-%d-%d %d:%d:%d"
,(
ptm
->
tm_year
+
1900
),(
ptm
->
tm_mon
+
1
),
ptm
->
tm_mday
,
ptm
->
tm_hour
,
ptm
->
tm_min
,
ptm
->
tm_sec
);
debug_log
(
LOG_EMERG_LEVEL
,
"ota start time:%s
\n
"
,
dateTime
);
vp_send_data_build
(
OPCODE_VOICE_OTA_UPGRADE_STATR
,
sizeof
(
data
),
data
);
vp_send_data_build
(
OPCODE_VOICE_OTA_UPGRADE_STATR
,
sizeof
(
data
),
data
);
...
@@ -1476,8 +1715,10 @@ void kk_vp_syncinfo_handle(_IN cJSON *payload)
...
@@ -1476,8 +1715,10 @@ void kk_vp_syncinfo_handle(_IN cJSON *payload)
}
}
if
(
kk_vp_config_file_update_check
()
!=
0
){
if
(
kk_vp_config_file_update_check
()
!=
0
){
printf
(
"[%s][%d][vp config file] update.
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_vp_set_updateFlag
(
1
);
debug_log
(
LOG_EMERG_LEVEL
,
"-------------------->start update config file<------------------
\n
"
);
kk_voice_update_config_file
();
}
}
if
(
root
!=
NULL
){
if
(
root
!=
NULL
){
...
@@ -1541,6 +1782,7 @@ static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data)
...
@@ -1541,6 +1782,7 @@ static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data)
err = 2;
err = 2;
}*/
}*/
data
[
len
++
]
=
err
;
data
[
len
++
]
=
err
;
data
[
len
++
]
=
(
offset
>>
24
)
&
0xff
;
data
[
len
++
]
=
(
offset
>>
24
)
&
0xff
;
...
@@ -1553,6 +1795,7 @@ static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data)
...
@@ -1553,6 +1795,7 @@ static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data)
data
[
len
++
]
=
req_size
&
0xff
;
data
[
len
++
]
=
req_size
&
0xff
;
pCrc
=
&
data
[
len
];
pCrc
=
&
data
[
len
];
if
(
err
==
0
){
if
(
err
==
0
){
int
err
=
fseek
(
ota_fp
,
offset
,
SEEK_SET
);
int
err
=
fseek
(
ota_fp
,
offset
,
SEEK_SET
);
if
(
err
==
0
){
if
(
err
==
0
){
...
@@ -1569,12 +1812,15 @@ static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data)
...
@@ -1569,12 +1812,15 @@ static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data)
debug_log
(
LOG_ERROR_LEVEL
,
"[fseek fail]offset=%d
\n
"
,
offset
);
debug_log
(
LOG_ERROR_LEVEL
,
"[fseek fail]offset=%d
\n
"
,
offset
);
}
}
}
}
crc
=
CreateCrc32
(
pCrc
,
req_size
);
crc
=
CreateCrc32
(
pCrc
,
req_size
);
data
[
len
++
]
=
(
crc
>>
24
)
&
0xff
;
data
[
len
++
]
=
(
crc
>>
24
)
&
0xff
;
data
[
len
++
]
=
(
crc
>>
16
)
&
0xff
;
data
[
len
++
]
=
(
crc
>>
16
)
&
0xff
;
data
[
len
++
]
=
(
crc
>>
8
)
&
0xff
;
data
[
len
++
]
=
(
crc
>>
8
)
&
0xff
;
data
[
len
++
]
=
crc
&
0xff
;
data
[
len
++
]
=
crc
&
0xff
;
vp_reply_data_build
(
pro_data
->
seq
,
pro_data
->
ch
,
OPCODE_VOICE_OTA_REQUEST
,
len
,
data
);
vp_reply_data_build
(
pro_data
->
seq
,
pro_data
->
ch
,
OPCODE_VOICE_OTA_REQUEST
,
len
,
data
);
usleep
(
100
*
1000
);
}
}
...
@@ -1621,15 +1867,17 @@ static void kk_vp_ota_file_update_status_handle(pro_data_t *pro_data)
...
@@ -1621,15 +1867,17 @@ static void kk_vp_ota_file_update_status_handle(pro_data_t *pro_data)
status
=
pro_data
->
arg
[
3
];
status
=
pro_data
->
arg
[
3
];
if
(
status
==
0x00
){
if
(
status
==
0x00
){
kk_vp_set_state_machine
(
GET_8009_SNAPSHOOT_STATE
);
sprintf
(
verBuf
,
"%d.%d.%d"
,
pro_data
->
arg
[
0
],
pro_data
->
arg
[
1
],
pro_data
->
arg
[
2
]);
sprintf
(
verBuf
,
"%d.%d.%d"
,
pro_data
->
arg
[
0
],
pro_data
->
arg
[
1
],
pro_data
->
arg
[
2
]);
kk_vp_voice_version_set
(
verBuf
,
strlen
(
verBuf
));
kk_vp_voice_version_set
(
verBuf
,
strlen
(
verBuf
));
kk_voice_ota_finish_notify
(
verBuf
);
kk_voice_ota_finish_notify
(
verBuf
);
debug_log
(
LOG_NOTICE_LEVEL
,
"
\n
*********************OTA SUCCESS******************
\n
"
);
debug_log
(
LOG_NOTICE_LEVEL
,
"
\n
*********************OTA SUCCESS******************
\n
"
);
kk_voice_reset_ver_flag
();
}
}
debug_log
(
LOG_DEBUG_LEVEL
,
"
\n
ver=%d.%d.%d,status=%d
\n
"
,
pro_data
->
arg
[
0
],
pro_data
->
arg
[
1
],
pro_data
->
arg
[
2
],
status
);
debug_log
(
LOG_DEBUG_LEVEL
,
"
\n
ver=%d.%d.%d,status=%d
\n
"
,
pro_data
->
arg
[
0
],
pro_data
->
arg
[
1
],
pro_data
->
arg
[
2
],
status
);
uint8_t
data
[
5
]
=
{
0
};
uint8_t
data
[
5
]
=
{
0
};
data
[
0
]
=
err
;
data
[
0
]
=
err
;
data
[
1
]
=
(
ver
>>
16
)
&
0xff
;
data
[
1
]
=
(
ver
>>
16
)
&
0xff
;
...
@@ -1639,12 +1887,7 @@ static void kk_vp_ota_file_update_status_handle(pro_data_t *pro_data)
...
@@ -1639,12 +1887,7 @@ static void kk_vp_ota_file_update_status_handle(pro_data_t *pro_data)
vp_reply_data_build
(
pro_data
->
seq
,
pro_data
->
ch
,
OPCODE_VOICE_OTA_STATUS_NOTIFY
,
sizeof
(
data
),
data
);
vp_reply_data_build
(
pro_data
->
seq
,
pro_data
->
ch
,
OPCODE_VOICE_OTA_STATUS_NOTIFY
,
sizeof
(
data
),
data
);
char
dateTime
[
64
]
=
{
0
};
//kk_vp_update_result_check(status,ver);
time_t
curTime
=
time
(
NULL
);
struct
tm
*
ptm
=
localtime
(
&
curTime
);
snprintf
(
dateTime
,
sizeof
(
dateTime
),
"%d-%d-%d %d:%d:%d"
,(
ptm
->
tm_year
+
1900
),(
ptm
->
tm_mon
+
1
),
ptm
->
tm_mday
,
ptm
->
tm_hour
,
ptm
->
tm_min
,
ptm
->
tm_sec
);
debug_log
(
LOG_EMERG_LEVEL
,
"ota stop time:%s
\n
"
,
dateTime
);
}
}
...
@@ -1700,61 +1943,6 @@ static void kk_voice_volume_handle(pro_data_t *pro_data)
...
@@ -1700,61 +1943,6 @@ static void kk_voice_volume_handle(pro_data_t *pro_data)
cJSON_Delete
(
root
);
cJSON_Delete
(
root
);
}
}
}
}
#define SOUND_SETE_VP_CH 9
void
vp_send_data_build_ex
(
uint16_t
opCode
,
int
len
,
uint8_t
*
data
)
{
uint8_t
data_buf
[
1024
]
=
{
0
};
int
data_len
=
0
;
pro_data_t
pro_data
;
memset
(
&
pro_data
,
0
,
sizeof
(
pro_data_t
));
pro_data
.
seq
=
vp_get_seq
();
pro_data
.
ch
=
SOUND_SETE_VP_CH
;
pro_data
.
opcode
=
opCode
;
pro_data
.
cf
.
ack
=
0
;
pro_data
.
cf
.
dir
=
1
;
pro_data
.
cf
.
sof_flag
=
1
;
pro_data
.
args_len
=
len
;
memcpy
(
pro_data
.
arg
,
data
,
len
);
data_len
=
proto_frame_to_uart
(
&
pro_data
,
data_buf
);
debug_log
(
LOG_INFO_LEVEL
,
"
\n
[LAN->VP]len=%d
\n
"
,
data_len
);
uint8_t
dataStr
[
512
]
=
{
0
};
for
(
int
i
=
0
;
i
<
data_len
;
i
++
){
snprintf
((
char
*
)
dataStr
+
strlen
((
char
*
)
dataStr
),
sizeof
(
dataStr
),
"%02X "
,
data_buf
[
i
]);
}
debug_log
(
LOG_INFO_LEVEL
,
"%s
\n\n
"
,
dataStr
);
eSerial_WriteBuffer
(
data_buf
,
data_len
);
}
void
kk_voice_control
(
int
val
)
{
uint8_t
res
[
1
]
=
{
0
};
if
(
val
>
100
){
val
=
100
;
}
else
if
(
val
<
0
){
val
=
0
;
}
res
[
0
]
=
val
;
debug_log
(
LOG_DEBUG_LEVEL
,
"sound control
\n
"
);
vp_send_data_build_ex
(
OPCODE_VOICE_CONTROL
,
sizeof
(
res
),
res
);
}
void
kk_voice_switch
(
int
val
)
{
uint8_t
res
[
3
]
=
{
0
};
if
(
val
==
0
||
val
==
1
){
res
[
0
]
=
val
;
res
[
1
]
=
0xff
;
res
[
2
]
=
0xff
;
debug_log
(
LOG_DEBUG_LEVEL
,
"voice switch
\n
"
);
vp_send_data_build
(
OPCODE_VOICE_SWITCH
,
sizeof
(
res
),
res
);
}
}
\ No newline at end of file
application/klansdk/kk_voice_panel_handle.h
View file @
d70cf063
...
@@ -37,6 +37,7 @@
...
@@ -37,6 +37,7 @@
#define KK_VOICE_OTA_MTU 128
typedef
void
(
*
vp_handle_func
)(
pro_data_t
*
pro_data
);
typedef
void
(
*
vp_handle_func
)(
pro_data_t
*
pro_data
);
...
@@ -65,7 +66,7 @@ void kk_vp_get_config_file_info(void);
...
@@ -65,7 +66,7 @@ void kk_vp_get_config_file_info(void);
void
kk_vp_get_ota_file_info
(
void
);
void
kk_vp_get_ota_file_info
(
void
);
void
kk_vp_ota_file_update_start
(
char
*
file
);
void
kk_vp_ota_file_update_stop
(
uint32_t
ver
);
void
kk_vp_ota_file_update_stop
(
uint32_t
ver
);
...
@@ -86,6 +87,10 @@ void vp_scene_id_map_deinit(void);
...
@@ -86,6 +87,10 @@ void vp_scene_id_map_deinit(void);
int
vp_scene_id_item_add
(
int
scene_id
);
int
vp_scene_id_item_add
(
int
scene_id
);
int
vp_scene_id_item_load
(
int
scene_id
,
uint16_t
map_id
);
int
vp_scene_id_item_load
(
int
scene_id
,
uint16_t
map_id
);
int
vp_scene_id_map_save
(
void
);
int
vp_scene_id_map_save
(
void
);
int
_vp_get_cfg_file_crc32
(
void
);
int
_vp_get_cfg_file_crc32
(
void
);
int
_vp_get_cfg_file_size
(
void
);
int
_vp_get_cfg_file_size
(
void
);
void
kk_voice_control
(
int
val
);
void
kk_voice_control
(
int
val
);
...
@@ -93,7 +98,10 @@ int kk_vp_voice_version_get(char *ver,int len);
...
@@ -93,7 +98,10 @@ int kk_vp_voice_version_get(char *ver,int len);
void
kk_voice_switch
(
int
val
);
void
kk_voice_switch
(
int
val
);
void
kk_vp_ota_file_update_start
(
char
*
file
);
void
kk_vp_ota_file_update_start
(
char
*
file
);
void
vp_send_data_build
(
uint16_t
opCode
,
uint8_t
len
,
uint8_t
*
data
);
void
vp_send_data_build
(
uint16_t
opCode
,
int
len
,
uint8_t
*
data
);
void
kk_voice_set_time_flag
(
void
);
#endif
#endif
application/klansdk/uart_proto.c
View file @
d70cf063
...
@@ -378,11 +378,11 @@ uint8_t cf_to_uint8_t(control_field_t *cf)
...
@@ -378,11 +378,11 @@ uint8_t cf_to_uint8_t(control_field_t *cf)
return
((((
uint8_t
)(
cf
->
ack
)))
+
((
cf
->
dir
)
<<
5
)
+
((
cf
->
sof_flag
)
<<
4
)
+
((
cf
->
mf_flag
)
<<
3
));
return
((((
uint8_t
)(
cf
->
ack
)))
+
((
cf
->
dir
)
<<
5
)
+
((
cf
->
sof_flag
)
<<
4
)
+
((
cf
->
mf_flag
)
<<
3
));
}
}
uint
8_t
proto_frame_to_uart
(
pro_data_t
*
pro_data
,
uint8_t
*
uart_data
)
uint
16_t
proto_frame_to_uart
(
pro_data_t
*
pro_data
,
uint8_t
*
uart_data
)
{
{
uint
8_t
i
=
0
;
uint
16_t
i
=
0
;
uint16_t
cf
;
uint16_t
cf
;
uint8_t
len
;
int
len
;
uint16_t
crc
;
uint16_t
crc
;
uart_data
[
i
++
]
=
PRO_SOF_1
;
uart_data
[
i
++
]
=
PRO_SOF_1
;
...
@@ -422,7 +422,7 @@ void pro_send_link_ack(pro_data_t *pro_data)
...
@@ -422,7 +422,7 @@ void pro_send_link_ack(pro_data_t *pro_data)
uint8_t
buf
[
PRO_LINK_PAKCET_SIZE
];
uint8_t
buf
[
PRO_LINK_PAKCET_SIZE
];
uint16_t
len
=
2
;
uint16_t
len
=
2
;
uint16_t
crc
;
uint16_t
crc
;
uint
8_t
i
=
0
;
uint
16_t
i
=
0
;
buf
[
i
++
]
=
PRO_SOF_1
;
buf
[
i
++
]
=
PRO_SOF_1
;
buf
[
i
++
]
=
PRO_SOF_2
;
buf
[
i
++
]
=
PRO_SOF_2
;
...
@@ -464,16 +464,15 @@ void dev_send_uart(uint8_t *data, uint16_t data_len)
...
@@ -464,16 +464,15 @@ void dev_send_uart(uint8_t *data, uint16_t data_len)
static
void
uart_protocol_print
(
pro_data_t
*
pro_data
)
static
void
uart_protocol_print
(
pro_data_t
*
pro_data
)
{
{
debug_log
(
LOG_DEBUG_LEVEL
,
"
\n
[VP->LAN]
\n
"
);
debug_log
(
LOG_DEBUG_LEVEL
,
"seq:
\t\t
%02X
\n
"
,
pro_data
->
seq
);
debug_log
(
LOG_DEBUG_LEVEL
,
"seq:
\t\t
%02X
\n
"
,
pro_data
->
seq
);
debug_log
(
LOG_DEBUG_LEVEL
,
"channel:
\t
%02X
\n
"
,
pro_data
->
ch
);
debug_log
(
LOG_DEBUG_LEVEL
,
"channel:
\t
%02X
\n
"
,
pro_data
->
ch
);
debug_log
(
LOG_DEBUG_LEVEL
,
"opcode:
\t
\t
%04X
\n
"
,
pro_data
->
opcode
);
debug_log
(
LOG_DEBUG_LEVEL
,
"opcode:
\t
%04X
\n
"
,
pro_data
->
opcode
);
debug_log
(
LOG_DEBUG_LEVEL
,
"args_len:
\t
%d
\n
"
,
pro_data
->
args_len
);
debug_log
(
LOG_DEBUG_LEVEL
,
"args_len:
\t
%d
\n
"
,
pro_data
->
args_len
);
char
print_buf
[
512
]
=
{
0
};
char
print_buf
[
512
]
=
{
0
};
int
i
=
0
;
int
i
=
0
;
snprintf
(
print_buf
,
sizeof
(
print_buf
),
"args:
\t
\t
"
);
snprintf
(
print_buf
,
sizeof
(
print_buf
),
"args:
\t
"
);
for
(
i
=
0
;
i
<
pro_data
->
args_len
;
i
++
)
for
(
i
=
0
;
i
<
pro_data
->
args_len
;
i
++
)
{
{
...
@@ -499,7 +498,7 @@ void connect_status_ack(pro_data_t pro_data)
...
@@ -499,7 +498,7 @@ void connect_status_ack(pro_data_t pro_data)
pro_data_tmp
.
arg
[
pro_data_tmp
.
args_len
++
]
=
0
;
// err status
pro_data_tmp
.
arg
[
pro_data_tmp
.
args_len
++
]
=
0
;
// err status
uint8_t
data_buf
[
255
]
=
{
0
};
uint8_t
data_buf
[
255
]
=
{
0
};
uint8_t
data_len
=
0
;
int
data_len
=
0
;
data_len
=
proto_frame_to_uart
(
&
pro_data_tmp
,
data_buf
);
data_len
=
proto_frame_to_uart
(
&
pro_data_tmp
,
data_buf
);
dev_send_uart
(
data_buf
,
data_len
);
dev_send_uart
(
data_buf
,
data_len
);
...
@@ -518,7 +517,7 @@ void system_restart_ack(pro_data_t pro_data)
...
@@ -518,7 +517,7 @@ void system_restart_ack(pro_data_t pro_data)
pro_data_tmp
.
arg
[
pro_data_tmp
.
args_len
++
]
=
0
;
// err status
pro_data_tmp
.
arg
[
pro_data_tmp
.
args_len
++
]
=
0
;
// err status
uint8_t
data_buf
[
255
]
=
{
0
};
uint8_t
data_buf
[
255
]
=
{
0
};
uint8_t
data_len
=
0
;
int
data_len
=
0
;
data_len
=
proto_frame_to_uart
(
&
pro_data_tmp
,
data_buf
);
data_len
=
proto_frame_to_uart
(
&
pro_data_tmp
,
data_buf
);
dev_send_uart
(
data_buf
,
data_len
);
dev_send_uart
(
data_buf
,
data_len
);
...
@@ -744,7 +743,7 @@ void set_mac_ack(pro_data_t pro_data)
...
@@ -744,7 +743,7 @@ void set_mac_ack(pro_data_t pro_data)
pro_data_tmp
.
cf
.
sof_flag
=
0
;
pro_data_tmp
.
cf
.
sof_flag
=
0
;
//pro_data_tmp.arg[pro_data_tmp.args_len++] = 0; // err status
//pro_data_tmp.arg[pro_data_tmp.args_len++] = 0; // err status
uint8_t
mac_len
=
pro_data_tmp
.
arg
[
0
];
int
mac_len
=
pro_data_tmp
.
arg
[
0
];
int
i
=
0
;
int
i
=
0
;
for
(
i
=
0
;
i
<
mac_len
;
i
++
)
for
(
i
=
0
;
i
<
mac_len
;
i
++
)
...
@@ -771,7 +770,7 @@ void set_mac_ack(pro_data_t pro_data)
...
@@ -771,7 +770,7 @@ void set_mac_ack(pro_data_t pro_data)
pro_data_tmp
.
args_len
++
;
pro_data_tmp
.
args_len
++
;
uint8_t
data_buf
[
255
]
=
{
0
};
uint8_t
data_buf
[
255
]
=
{
0
};
uint8_t
data_len
=
0
;
int
data_len
=
0
;
data_len
=
proto_frame_to_uart
(
&
pro_data_tmp
,
data_buf
);
data_len
=
proto_frame_to_uart
(
&
pro_data_tmp
,
data_buf
);
dev_send_uart
(
data_buf
,
data_len
);
dev_send_uart
(
data_buf
,
data_len
);
...
@@ -806,7 +805,7 @@ void read_flash_mac_ack(pro_data_t pro_data)
...
@@ -806,7 +805,7 @@ void read_flash_mac_ack(pro_data_t pro_data)
uint8_t
data_buf
[
255
]
=
{
0
};
uint8_t
data_buf
[
255
]
=
{
0
};
uint8_t
data_len
=
0
;
int
data_len
=
0
;
data_len
=
proto_frame_to_uart
(
&
pro_data_tmp
,
data_buf
);
data_len
=
proto_frame_to_uart
(
&
pro_data_tmp
,
data_buf
);
dev_send_uart
(
data_buf
,
data_len
);
dev_send_uart
(
data_buf
,
data_len
);
...
@@ -876,7 +875,7 @@ extern void kk_vp_opcode_handle(pro_data_t *pro_data);
...
@@ -876,7 +875,7 @@ extern void kk_vp_opcode_handle(pro_data_t *pro_data);
void
uart_frame_handle
()
void
uart_frame_handle
()
{
{
uint8_t
*
data
=
g_uart_data
.
data
;
uint8_t
*
data
=
g_uart_data
.
data
;
uint8_t
data_len
=
g_uart_data
.
data_len
;
int
data_len
=
g_uart_data
.
data_len
;
pro_data_t
pro_data
;
pro_data_t
pro_data
;
//uint8_t pro_data_buf[256];
//uint8_t pro_data_buf[256];
...
@@ -891,57 +890,6 @@ void uart_frame_handle()
...
@@ -891,57 +890,6 @@ void uart_frame_handle()
kk_vp_opcode_handle
(
&
pro_data
);
kk_vp_opcode_handle
(
&
pro_data
);
// handle msg
switch
(
pro_data
.
opcode
)
{
case
OPCODE_CONNECT_STATUS_QUERY
:
{
connect_status_ack
(
pro_data
);
break
;
}
case
OPCODE_BURN_MAC
:
{
//��ʱ��֧��
set_mac_ack
(
pro_data
);
break
;
}
case
OPCODE_READ_MAC
:
{
read_mac_ack
(
pro_data
);
break
;
}
case
OPCODE_READ_VERSION
:
{
read_version_ack
(
pro_data
);
break
;
}
case
OPCODE_EXIT_SUBBOARD_TEST
:
{
exit_subboard_test_ack
(
pro_data
);
break
;
}
case
OPCODE_READ_MAC_FROM_FLASH
:
{
read_flash_mac_ack
(
pro_data
);
break
;
}
case
OPCODE_SYSTEM_RESTART
:
{
system_restart_ack
(
pro_data
);
break
;
}
default:
{
//GW_LOG_DBG("gw others opcode %04X ack\n", pro_data.opcode);
break
;
}
}
return
;
return
;
}
}
application/klansdk/uart_proto.h
View file @
d70cf063
...
@@ -113,7 +113,7 @@ typedef struct
...
@@ -113,7 +113,7 @@ typedef struct
uint8_t
ch
;
uint8_t
ch
;
uint16_t
opcode
;
uint16_t
opcode
;
uint16_t
args_len
;
uint16_t
args_len
;
uint8_t
arg
[
256
];
uint8_t
arg
[
1024
];
}
pro_data_t
;
}
pro_data_t
;
int
my_system
(
const
char
*
cmd
);
int
my_system
(
const
char
*
cmd
);
...
@@ -130,7 +130,7 @@ int get_proto_frame(uint8_t *data, uint16_t data_len, pro_data_t *pro_data);
...
@@ -130,7 +130,7 @@ int get_proto_frame(uint8_t *data, uint16_t data_len, pro_data_t *pro_data);
void
pro_send_link_ack
(
pro_data_t
*
pro_data
);
void
pro_send_link_ack
(
pro_data_t
*
pro_data
);
uint
8_t
proto_frame_to_uart
(
pro_data_t
*
pro_data
,
uint8_t
*
uart_data
);
uint
16_t
proto_frame_to_uart
(
pro_data_t
*
pro_data
,
uint8_t
*
uart_data
);
int
get_uart_frame
(
uint8_t
*
buf
,
int
len
);
int
get_uart_frame
(
uint8_t
*
buf
,
int
len
);
void
uart_frame_handle
();
void
uart_frame_handle
();
...
...
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