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
f49071b9
Commit
f49071b9
authored
Sep 13, 2021
by
陈伟灿
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'yjq' into 'master'
去除编译警告,离线语音面板接入空调,新风,线控器,窗帘 See merge request chenweican/k-sdk!131
parents
23221610
a8ec59b6
Changes
33
Show whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
1325 additions
and
417 deletions
+1325
-417
application/klansdk/kk_ccu_msg.c
application/klansdk/kk_ccu_msg.c
+3
-2
application/klansdk/kk_data_handle.c
application/klansdk/kk_data_handle.c
+4
-2
application/klansdk/kk_data_handle.h
application/klansdk/kk_data_handle.h
+6
-0
application/klansdk/kk_data_mng.c
application/klansdk/kk_data_mng.c
+7
-7
application/klansdk/kk_data_mng.h
application/klansdk/kk_data_mng.h
+9
-2
application/klansdk/kk_findccu_handle.c
application/klansdk/kk_findccu_handle.c
+1
-0
application/klansdk/kk_findccu_handle.h
application/klansdk/kk_findccu_handle.h
+1
-0
application/klansdk/kk_lan_ctrl.c
application/klansdk/kk_lan_ctrl.c
+8
-3
application/klansdk/kk_lan_debug.h
application/klansdk/kk_lan_debug.h
+7
-0
application/klansdk/kk_lan_main.c
application/klansdk/kk_lan_main.c
+9
-7
application/klansdk/kk_lan_new_dev_notify.c
application/klansdk/kk_lan_new_dev_notify.c
+5
-5
application/klansdk/kk_lan_new_dev_notify.h
application/klansdk/kk_lan_new_dev_notify.h
+10
-3
application/klansdk/kk_lan_node_db.c
application/klansdk/kk_lan_node_db.c
+18
-16
application/klansdk/kk_lan_node_db.h
application/klansdk/kk_lan_node_db.h
+2
-2
application/klansdk/kk_lan_queue.c
application/klansdk/kk_lan_queue.c
+1
-2
application/klansdk/kk_lan_sync.c
application/klansdk/kk_lan_sync.c
+164
-66
application/klansdk/kk_lan_sync.h
application/klansdk/kk_lan_sync.h
+12
-1
application/klansdk/kk_lan_voice_panel.c
application/klansdk/kk_lan_voice_panel.c
+19
-9
application/klansdk/kk_lan_vp_ctrl.c
application/klansdk/kk_lan_vp_ctrl.c
+387
-83
application/klansdk/kk_lan_vp_ctrl.h
application/klansdk/kk_lan_vp_ctrl.h
+54
-1
application/klansdk/kk_login_handle.c
application/klansdk/kk_login_handle.c
+4
-0
application/klansdk/kk_newccu_msg.c
application/klansdk/kk_newccu_msg.c
+4
-1
application/klansdk/kk_oldccu_msg.c
application/klansdk/kk_oldccu_msg.c
+19
-13
application/klansdk/kk_oldccu_msg.h
application/klansdk/kk_oldccu_msg.h
+4
-0
application/klansdk/kk_voice_panel_cfg.c
application/klansdk/kk_voice_panel_cfg.c
+344
-50
application/klansdk/kk_voice_panel_cfg.h
application/klansdk/kk_voice_panel_cfg.h
+9
-7
application/klansdk/kk_voice_panel_handle.c
application/klansdk/kk_voice_panel_handle.c
+142
-99
application/klansdk/kk_voice_panel_handle.h
application/klansdk/kk_voice_panel_handle.h
+10
-15
application/klansdk/uart_proto.c
application/klansdk/uart_proto.c
+9
-10
midware/midware/dm/kk_sync_data.c
midware/midware/dm/kk_sync_data.c
+12
-5
midware/midware/scene/kk_scene_db.c
midware/midware/scene/kk_scene_db.c
+3
-0
midware/midware/scene/kk_scene_handle.c
midware/midware/scene/kk_scene_handle.c
+37
-5
midware/tsl/tsl_handle/kk_tsl_common.h
midware/tsl/tsl_handle/kk_tsl_common.h
+1
-1
No files found.
application/klansdk/kk_ccu_msg.c
View file @
f49071b9
...
...
@@ -464,6 +464,7 @@ int kk_lan_get_msg_id_str(char *msgId,int size)
{
memset
(
msgId
,
0
,
size
);
snprintf
(
msgId
,
size
,
"%d"
,
kk_lan_get_msg_id
());
return
0
;
}
...
...
@@ -495,7 +496,7 @@ int kk_lan_add_val_to_obj(cJSON *obj,cJSON *val,const char *id)
}
else
if
(
val
->
type
==
cJSON_String
){
cJSON_AddStringToObject
(
obj
,
id
,
val
->
valuestring
);
}
else
{
debug_log
(
LOG_DEBUG_LEVEL
,
"[err] nonsupport type(%
s
).
\n
"
,
val
->
type
);
debug_log
(
LOG_DEBUG_LEVEL
,
"[err] nonsupport type(%
d
).
\n
"
,
val
->
type
);
return
-
1
;
}
return
0
;
...
...
@@ -525,7 +526,7 @@ int kk_lan_replace_val_to_obj(cJSON *obj,cJSON *val,const char *id)
}
else
if
(
val
->
type
==
cJSON_String
){
cJSON_ReplaceItemInObject
(
obj
,
id
,
cJSON_CreateString
(
val
->
valuestring
));
}
else
{
debug_log
(
LOG_DEBUG_LEVEL
,
"[err] nonsupport type(%
s
).
\n
"
,
val
->
type
);
debug_log
(
LOG_DEBUG_LEVEL
,
"[err] nonsupport type(%
d
).
\n
"
,
val
->
type
);
return
-
1
;
}
return
0
;
...
...
application/klansdk/kk_data_handle.c
View file @
f49071b9
...
...
@@ -18,8 +18,10 @@
#include "kk_lan_ctrl.h"
#include "kk_lan_sync.h"
#include "kk_lan_debug.h"
#include "kk_findccu_handle.h"
#include "kk_voice_panel_handle.h"
#include "kk_lan_node_db.h"
#include "kk_oldccu_msg.h"
const
char
DM_MSG_TO_MIDDWARE
[]
=
"{
\"
msgtype
\"
:
\"
%s
\"
,
\"
productCode
\"
:
\"
%s
\"
,
\"
deviceCode
\"
:
\"
%s
\"
}"
;
...
...
@@ -219,7 +221,7 @@ static int kk_loginccu_ack(cJSON *arg,int sockfd)
}
//构建hw信息
static
cJSON
*
kk_zb_dev_hw_info_build
(
const
char
*
deviceCode
,
c
JSON
*
productCode
,
int
online
,
const
char
*
hw_ver
,
const
char
*
sw_ver
)
static
cJSON
*
kk_zb_dev_hw_info_build
(
const
char
*
deviceCode
,
c
onst
char
*
productCode
,
int
online
,
const
char
*
hw_ver
,
const
char
*
sw_ver
)
{
cJSON
*
item
;
char
mac
[
32
]
=
{
0
};
...
...
application/klansdk/kk_data_handle.h
View file @
f49071b9
...
...
@@ -7,4 +7,10 @@
int
kk_data_handle
(
cJSON
*
json
,
int
sockfd
);
void
kk_handle_sync_info
(
void
);
void
KK_Data_FromMid
(
void
*
str
,
int
len
);
int
kk_lan_property_syn_deal
(
const
char
*
deviceCode
,
cJSON
*
properties
);
int
send_msg_to_module
(
cJSON
*
root
);
void
device_add_sync
(
cJSON
*
payload
);
void
kk_handle_sync_push_info
(
void
);
#endif
\ No newline at end of file
application/klansdk/kk_data_mng.c
View file @
f49071b9
...
...
@@ -5,7 +5,7 @@
#include "kk_data_mng.h"
#include "kk_lan_node_db.h"
#include "kk_oldccu_msg.h"
#include "kk_utils.h"
static
kk_map_dev_ctx
g_map_dev_mgr
=
{
0
};
...
...
@@ -192,7 +192,7 @@ static kk_map_dev_node_t *kk_map_dev_node_create_ex(const char *deviceCode,const
}
static
char
*
kk_open_lan_cfg_file
(
char
*
deviceCode
)
static
char
*
kk_open_lan_cfg_file
(
c
onst
c
har
*
deviceCode
)
{
char
path
[
128
]
=
{
0
};
unsigned
int
filesize
;
...
...
@@ -226,7 +226,7 @@ static char *kk_open_lan_cfg_file(char *deviceCode)
return
buf
;
}
//todo:
int
kk_creater_nodeid
(
char
*
deviceCode
,
int
channel
,
char
*
nodeId
,
int
operate_type
)
int
kk_creater_nodeid
(
char
*
deviceCode
,
int
channel
,
char
*
nodeId
)
{
static
int
next
=
1
;
int
node
=-
1
;
...
...
@@ -245,7 +245,7 @@ int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId,int operate_type
while
(
kk_check_lan_node
(
next
)){
++
next
;
}
if
(
0
==
kk_lan_db_node_insert
(
deviceCode
,
channel
,
next
,
operate_type
)){
if
(
0
==
kk_lan_db_node_insert
(
deviceCode
,
channel
,
next
)){
node
=
next
;
}
}
...
...
@@ -264,7 +264,7 @@ int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId,int operate_type
static
char
*
kk_value_int_map_string
(
char
*
opcodemap
,
kk_map_dev_node_t
*
node
,
int
idx
)
{
if
(
opcodemap
==
NULL
||
node
==
NULL
){
return
-
1
;
return
""
;
}
cJSON
*
oldccuItem
=
node
->
oldccu
->
child
;
while
(
oldccuItem
!=
NULL
){
...
...
@@ -321,7 +321,7 @@ int mac_switchto_deviceCode(char *mac,char * deviceCode)
deviceCode
[
j
]
=
'\0'
;
/*在串s结尾加结束标志*/
return
0
;
}
int
_deviceCode_switchto_mac
(
char
*
deviceCode
,
char
*
mac
)
int
_deviceCode_switchto_mac
(
c
onst
c
har
*
deviceCode
,
char
*
mac
)
{
char
deviceCode_bak
[
33
]
=
{
0
};
int
i
,
j
;
...
...
@@ -435,7 +435,7 @@ int kk_map_dev_update_int_value_by_devicecode(char *deviceCode,char *identifier,
}
int
kk_map_dev_search_by_deviceCode
(
char
*
deviceCode
,
kk_map_dev_node_t
**
node
)
int
kk_map_dev_search_by_deviceCode
(
c
onst
c
har
*
deviceCode
,
kk_map_dev_node_t
**
node
)
{
kk_map_dev_ctx
*
ctx
=
_kk_map_dev_ctx
();
kk_map_dev_node_t
*
search_node
=
NULL
;
...
...
application/klansdk/kk_data_mng.h
View file @
f49071b9
...
...
@@ -31,11 +31,18 @@ typedef struct {
kk_map_dev_node_t
*
kk_map_dev_node_add
(
const
char
*
deviceCode
,
const
char
*
productCode
,
const
char
*
gwdeviceCode
,
const
char
*
onlineStatus
);
int
kk_create_devicestatus_to_sdk
(
cJSON
*
root
);
int
kk_create_devices_to_sdk
(
cJSON
*
root
);
int
_deviceCode_switchto_mac
(
char
*
deviceCode
,
char
*
mac
);
int
_deviceCode_switchto_mac
(
c
onst
c
har
*
deviceCode
,
char
*
mac
);
int
mac_switchto_deviceCode
(
char
*
mac
,
char
*
deviceCode
);
int
kk_map_dev_search_by_deviceCode
(
char
*
deviceCode
,
kk_map_dev_node_t
**
node
);
int
kk_map_dev_search_by_deviceCode
(
c
onst
c
har
*
deviceCode
,
kk_map_dev_node_t
**
node
);
kk_map_dev_ctx
*
_kk_map_dev_ctx
(
void
);
int
kk_map_dev_init
(
void
);
int
kk_map_dev_search_by_productCode
(
char
*
productCode
,
kk_map_dev_node_t
**
node
);
void
_kk_map_dev_mutex_lock
(
void
);
void
_kk_map_dev_mutex_unlock
(
void
);
void
kk_map_dev_deinit
(
void
);
int
kk_creater_nodeid
(
char
*
deviceCode
,
int
channel
,
char
*
nodeId
);
#endif
application/klansdk/kk_findccu_handle.c
View file @
f49071b9
...
...
@@ -17,6 +17,7 @@
#include "kk_hal.h"
#include "cJSON.h"
static
int
kk_findccu_ack
(
int
sockfd
,
struct
sockaddr_in
*
addr
){
cJSON
*
json
=
NULL
,
*
args
=
NULL
;
cJSON
*
ccu
=
NULL
;
...
...
application/klansdk/kk_findccu_handle.h
View file @
f49071b9
...
...
@@ -15,6 +15,7 @@
#define FINDCCU_LOCAL_PORT 8989
int
kk_lan_get_ccuid
(
_OU_
char
*
device_code
);
int
kk_findccu_handle_init
(
void
);
#endif
\ No newline at end of file
application/klansdk/kk_lan_ctrl.c
View file @
f49071b9
...
...
@@ -10,8 +10,9 @@
#include "kk_ccu_msg.h"
#include "kk_oldccu_msg.h"
#include "kk_newccu_msg.h"
#include "kk_lan_node_db.h"
extern
int
kk_lan_get_ccuid
(
_OU_
char
*
device_code
);
int
match_opcode_pos
(
cJSON
*
array
,
const
char
*
opcode
,
int
ch
)
...
...
@@ -320,8 +321,12 @@ int kk_ccu_opcode_handle(cJSON *root)
WARNING_PRINT
(
"[requester]%s
\n
"
,
requester
->
valuestring
);
if
(
strcmp
(
requester
->
valuestring
,
"HJ_CentralAC"
)
==
0
&&
strcmp
(
opcode
->
valuestring
,
"CENTRAL_AC_INDOOR_UNIT_SETTING"
)
==
0
){
int
channel
=
-
1
;
char
epNum
[
8
]
=
{
0
};
kk_indoorAir_ctrl_handle
(
nodeId
->
valuestring
,
arg
);
kk_lan_db_channel_get
(
atoi
(
nodeId
->
valuestring
),
&
channel
);
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
channel
);
kk_indoorAir_ctrl_handle
(
epNum
,
arg
);
return
0
;
}
else
if
(
strcmp
(
requester
->
valuestring
,
"HJ_Server"
)
==
0
){
if
(
strcmp
(
opcode
->
valuestring
,
"ARMING_IN_HOME"
)
==
0
){
...
...
application/klansdk/kk_lan_debug.h
View file @
f49071b9
...
...
@@ -49,8 +49,15 @@
printf("%s%s [%s:%d(%s)] "format"\033[m", LOG_LEVEL_(level),buff,__FILE__,__LINE__,__func__,##__VA_ARGS__); \
} \
}while(0)
#define _debug_log(level,format,...) do { \
if( level >= LOG_LEVEL && level <= LOG_CRITICAL_LEVEL) { \
printf("%s"format"\033[m", LOG_LEVEL_(level),##__VA_ARGS__); \
} \
}while(0)
#else
#define debug_log(level,format,...)
#define _debug_log(level,format,...)
#endif
...
...
application/klansdk/kk_lan_main.c
View file @
f49071b9
...
...
@@ -59,8 +59,8 @@ static void kk_lan_ccuid_init(void)
HAL_Execel_cmd
(
GET_CCUID_CMD
,(
char
*
)
ccuid
,
sizeof
(
ccuid
),
&
ccuid_len
);
printf
(
"GET_CCUID_CMD:%s
\n
"
,
ccuid
);
if
(
ccuid_len
>
0
&&
ccuid_len
<=
DEVICE_CODE_LEN
){
sprintf
(
ccuidTmp
,
"CCU_%s"
,
ccuid
);
_setDevice_Code
(
ccuidTmp
,
strlen
(
ccuidTmp
)
-
1
);
sprintf
(
(
char
*
)
ccuidTmp
,
"CCU_%s"
,
ccuid
);
_setDevice_Code
(
(
char
*
)
ccuidTmp
,
strlen
((
char
*
)
ccuidTmp
)
-
1
);
}
else
{
_setDevice_Code
(
KK_CCU_ID
,
strlen
(
KK_CCU_ID
));
}
...
...
@@ -132,10 +132,10 @@ int main(int argc, char* argv[])
open
(
"kk_lan"
,
LOG_PID
,
LOG_USER
);
//
if(prg_run_singleton(argv[0])<0){
//
debug_log(LOG_CRITICAL_LEVEL,"[%s]run singleton fail!\n",argv[0]);
//
return -1;
//
}
if
(
prg_run_singleton
(
argv
[
0
])
<
0
){
debug_log
(
LOG_CRITICAL_LEVEL
,
"[%s]run singleton fail!
\n
"
,
argv
[
0
]);
return
-
1
;
}
kk_lan_ccuid_init
();
...
...
@@ -144,7 +144,9 @@ int main(int argc, char* argv[])
kk_findccu_handle_init
();
kk_map_dev_init
();
kk_login_init
();
//kk_voice_panel_init(argc,argv);
kk_voice_panel_init
(
argc
,
argv
);
//lan_queue_init();
kk_lan_db_node_init
();
...
...
application/klansdk/kk_lan_new_dev_notify.c
View file @
f49071b9
...
...
@@ -33,8 +33,8 @@ static cJSON * _new_central_ac_gw_indoor_build(void* arg);
static
cJSON
*
_new_youzhuan_music_controllers_build
(
void
*
arg
);
typedef
cJSON
*
(
*
build_func
)(
void
*
*
items
);
typedef
struct
{
typedef
cJSON
*
(
*
build_func
)(
void
*
arg
);
typedef
struct
BUILD_FUNC
{
#define NEW_DEVICES_BUILD_TYPE 0
#define NEW_HUE_LIGHTS_BUILD_TYPE 1
...
...
@@ -74,13 +74,13 @@ static BUILD_FUNC new_dev_build_table[]={
{
NEW_YOUZHUAN_MUSIC_CONTROLLERS_BUILD_TYPE
,
_new_youzhuan_music_controllers_build
},
};
build_func
*
find_build_func
(
int
type
)
build_func
find_build_func
(
int
type
)
{
int
i
,
size
;
BUILD_FUNC
*
func
=
NULL
;
size
=
sizeof
(
new_dev_build_table
)
/
sizeof
(
BUILD_FUNC
);
func
=
&
new_dev_build_table
;
func
=
(
BUILD_FUNC
*
)
&
new_dev_build_table
;
for
(
i
=
0
;
i
<
size
;
i
++
,
func
++
){
if
(
func
->
type
==
type
){
...
...
@@ -353,7 +353,7 @@ static cJSON *new_devices_build_gw(int count)
}
return
ary
;
}
static
cJSON
*
new_devices_build_indoor
(
int
count
)
cJSON
*
new_devices_build_indoor
(
int
count
)
{
int
i
=
0
;
cJSON
*
ary
=
cJSON_CreateArray
();
...
...
application/klansdk/kk_lan_new_dev_notify.h
View file @
f49071b9
#ifndef __KK_LAN_NEW_DEV_NOTIFY_H
#define __KK_LAN_NEW_DEV_NOTIFY_H
#include "kk_ccu_msg.h"
#include "kk_lan_sync.h"
#include <stdbool.h>
typedef
struct
{
cJSON
*
new_device_count
;
...
...
@@ -135,9 +136,11 @@ typedef struct{
}
CENTRAL_AC_INDOOR_STATUS
;
typedef
struct
{
char
id
[
4
];
char
indooruint_addr
[
4
];
char
nodeid
[
8
];
char
id
[
AIR_AC_INDOOR_ID_SIZE
];
char
indooruint_addr
[
AIR_AC_INDOOR_ADDR_SIZE
];
char
nodeid
[
AIR_AC_INDOOR_ID_SIZE
];
char
dev_name
[
AIR_AC_INDOOR_NAME_SIZE
];
char
room_id
[
AIR_AC_INDOOR_ROOM_ID_SIZE
];
CENTRAL_AC_INDOOR_STATUS
ac_gw_status
;
}
CENTRAL_AC_INDOOR_ITEM
;
...
...
@@ -150,6 +153,10 @@ typedef struct{
char
*
music_controller_status
;
}
YOUZHUAN_MC_CTRL_ITEM
;
void
kk_clear_indoor_data
();
void
kk_new_device_send
();
#endif
...
...
application/klansdk/kk_lan_node_db.c
View file @
f49071b9
...
...
@@ -7,6 +7,9 @@
extern
void
HAL_MutexLock
(
_IN_
void
*
mutex
);
extern
void
HAL_MutexUnlock
(
_IN_
void
*
mutex
);
extern
void
*
HAL_MutexCreate
(
void
);
static
sqlite3
*
g_lan_pDb
;
...
...
@@ -46,8 +49,7 @@ static int _kk_lan_node_db_Init(void)
idx INTEGER PRIMARY KEY, \
deviceCode varchar(33), \
channel INTEGER, \
nodeId INTEGER, \
operate_type INTEGER)"
;
nodeId INTEGER)"
;
char
*
pcErr
;
...
...
@@ -105,7 +107,7 @@ int kk_check_lan_node(int nodeId)
{
int
isExist
=
0
;
sqlite3_stmt
*
stmt
;
char
*
pDeviceCode
=
NULL
;
unsigned
char
*
pDeviceCode
=
NULL
;
int
node
=
0
;
kk_lan_node_db_ctx_t
*
ctx
=
_kk_lan_node_db_get_ctx
();
const
char
*
searchCmd
=
"select * from Map2Node;"
;
...
...
@@ -140,7 +142,7 @@ int kk_check_lan_node_exist(const char* deviceCode,int channel)
{
int
isExist
=
0
;
sqlite3_stmt
*
stmt
;
char
*
pDeviceCode
=
NULL
;
c
onst
unsigned
c
har
*
pDeviceCode
=
NULL
;
int
ch
=
0
;
int
node
=
0
;
kk_lan_node_db_ctx_t
*
ctx
=
_kk_lan_node_db_get_ctx
();
...
...
@@ -151,7 +153,7 @@ int kk_check_lan_node_exist(const char* deviceCode,int channel)
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pDeviceCode
=
sqlite3_column_text
(
stmt
,
LAN_DB_DEVICECODE
);
ch
=
sqlite3_column_int
(
stmt
,
LAN_DB_CHANNEL
);
if
(
!
strcmp
(
deviceCode
,
pDeviceCode
)
&&
ch
==
channel
)
if
(
!
strcmp
(
deviceCode
,
(
const
char
*
)
pDeviceCode
)
&&
ch
==
channel
)
{
isExist
=
1
;
break
;
...
...
@@ -166,7 +168,7 @@ static int _kk_check_lan_node_same(const char* deviceCode,int channel,int nodeId
{
int
same
=
0
;
sqlite3_stmt
*
stmt
;
char
*
pDeviceCode
=
NULL
;
c
onst
unsigned
c
har
*
pDeviceCode
=
NULL
;
int
ch
=
0
;
int
node
=
0
;
kk_lan_node_db_ctx_t
*
ctx
=
_kk_lan_node_db_get_ctx
();
...
...
@@ -178,7 +180,7 @@ static int _kk_check_lan_node_same(const char* deviceCode,int channel,int nodeId
pDeviceCode
=
sqlite3_column_text
(
stmt
,
LAN_DB_DEVICECODE
);
ch
=
sqlite3_column_int
(
stmt
,
LAN_DB_CHANNEL
);
node
=
sqlite3_column_int
(
stmt
,
LAN_DB_NODE
);
if
(
!
strcmp
(
deviceCode
,
pDeviceCode
)
&&
ch
==
channel
&&
node
==
nodeId
)
if
(
!
strcmp
(
deviceCode
,
(
const
char
*
)
pDeviceCode
)
&&
ch
==
channel
&&
node
==
nodeId
)
{
same
=
1
;
break
;
...
...
@@ -234,10 +236,10 @@ static int kk_lan_db_node_update(const char *deviceCode,int channel,int node)
*返 回 值: 0:成功;其他:失败
*其他说明:属性的值插入的时候先置空,后续再update
*************************************************************/
int
kk_lan_db_node_insert
(
const
char
*
deviceCode
,
int
channel
,
int
node
,
int
operate_type
)
int
kk_lan_db_node_insert
(
const
char
*
deviceCode
,
int
channel
,
int
node
)
{
const
char
*
insertCmd
=
"insert into Map2Node (deviceCode,channel,nodeId
,operate_type
) \
values ('%s','%d','%d'
,'%d'
);"
;
const
char
*
insertCmd
=
"insert into Map2Node (deviceCode,channel,nodeId) \
values ('%s','%d','%d');"
;
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
...
...
@@ -251,7 +253,7 @@ int kk_lan_db_node_insert(const char *deviceCode,int channel,int node,int operat
}
_kk_lan_node_db_lock
();
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
deviceCode
,
channel
,
node
,
operate_type
);
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
deviceCode
,
channel
,
node
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
...
...
@@ -355,7 +357,7 @@ int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel)
char
*
zErrMsg
=
0
;
sqlite3_stmt
*
stmt
;
kk_lan_node_db_ctx_t
*
ctx
=
_kk_lan_node_db_get_ctx
();
char
*
dCode
=
0
;
c
onst
unsigned
c
har
*
dCode
=
0
;
_kk_lan_node_db_lock
();
sqlCmd
=
sqlite3_mprintf
(
"select * from Map2Node WHERE nodeId= '%d' "
,
node
);
...
...
@@ -363,7 +365,7 @@ int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel)
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
if
(
deviceCode
!=
NULL
){
dCode
=
sqlite3_column_text
(
stmt
,
LAN_DB_DEVICECODE
);
memcpy
(
deviceCode
,
dCode
,
strlen
(
dCode
));
memcpy
(
deviceCode
,
(
char
*
)
dCode
,
strlen
((
char
*
)
dCode
));
}
if
(
channel
!=
NULL
){
...
...
@@ -379,12 +381,12 @@ int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel)
}
int
kk_lan_db_channel_get
(
int
node
,
int
*
channel
)
{
kk_lan_db_get_item_by_node
(
node
,
NULL
,
channel
);
return
kk_lan_db_get_item_by_node
(
node
,
NULL
,
channel
);
}
int
kk_lan_db_deviceCode_get
(
int
node
,
char
*
deviceCode
)
{
kk_lan_db_get_item_by_node
(
node
,
deviceCode
,
NULL
);
return
kk_lan_db_get_item_by_node
(
node
,
deviceCode
,
NULL
);
}
...
...
@@ -396,7 +398,7 @@ int kk_lan_db_deviceCode_get(int node,char *deviceCode)
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
int
kk_lan_db_node_delete
(
char
*
deviceCode
)
int
kk_lan_db_node_delete
(
c
onst
c
har
*
deviceCode
)
{
const
char
*
deleteCmd
=
"delete from Map2Node where deviceCode = '%s';"
;
char
*
sqlCmd
=
NULL
;
...
...
application/klansdk/kk_lan_node_db.h
View file @
f49071b9
...
...
@@ -18,7 +18,7 @@ enum{
};
int
kk_lan_db_node_init
(
void
);
int
kk_lan_db_node_insert
(
const
char
*
deviceCode
,
int
channel
,
int
node
,
int
operate_type
);
int
kk_lan_db_node_insert
(
const
char
*
deviceCode
,
int
channel
,
int
node
);
int
kk_lan_db_node_get
(
const
char
*
deviceCode
,
int
channel
);
int
kk_lan_db_node_get_all
(
const
char
*
deviceCode
,
int
*
nodes
);
...
...
@@ -26,7 +26,7 @@ int kk_lan_db_deviceCode_get(int node,char *deviceCode);
int
kk_lan_db_channel_get
(
int
node
,
int
*
channel
);
int
kk_lan_db_get_item_by_node
(
int
node
,
char
*
deviceCode
,
int
*
channel
);
int
kk_lan_db_node_delete
(
char
*
deviceCode
);
int
kk_lan_db_node_delete
(
c
onst
c
har
*
deviceCode
);
int
kk_check_lan_node_exist
(
const
char
*
deviceCode
,
int
channel
);
int
kk_check_lan_node
(
int
nodeId
);
...
...
application/klansdk/kk_lan_queue.c
View file @
f49071b9
...
...
@@ -38,7 +38,6 @@ static int _lan_queue_init(LAN_QUEUE_ENUM ix,int max_size)
ctx
->
mutex
=
(
pthread_mutex_t
*
)
malloc
(
sizeof
(
pthread_mutex_t
));
if
(
ctx
->
mutex
==
NULL
)
{
WARNING_PRINT
(
"
\n
malloc queue mutex[%d] failed: - '%s' (%d)
\n
"
,
ix
,
strerror
(
err_num
),
err_num
);
return
-
1
;
}
...
...
@@ -59,7 +58,7 @@ static int _lan_queue_init(LAN_QUEUE_ENUM ix,int max_size)
int
lan_queue_init
(
void
)
{
_lan_queue_init
(
NODE_MAP
,
LAN_QUEUE_SIZE
(
1
));
return
_lan_queue_init
(
NODE_MAP
,
LAN_QUEUE_SIZE
(
1
));
}
void
lan_queue_deinit
(
void
)
{
...
...
application/klansdk/kk_lan_sync.c
View file @
f49071b9
...
...
@@ -9,7 +9,7 @@
#include "kk_lan_debug.h"
#include "kk_lan_node_db.h"
#include "kk_lan_new_dev_notify.h"
#include "kk_oldccu_msg.h"
/*******获取同步数据json*******/
static
cJSON
*
kk_get_sync_data
(
cJSON
*
payload
)
...
...
@@ -553,7 +553,7 @@ static int _kk_sync_devices_status_arg_str(kk_map_dev_node_t *node,cJSON *devSta
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
((
val
=
val_conver_new2old
(
newccuItem
,
oldccuItem
,
0
))
!=
NULL
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
char
indexId
[
4
]
=
{
0
};
char
indexId
[
16
]
=
{
0
};
char
nodeid
[
32
]
=
{
0
};
cJSON
*
epNum
=
cJSON_GetObjectItem
(
newccuItem
,
CHANNEL_STRING
);
cJSON
*
opcode
=
cJSON_GetObjectItem
(
newccuItem
,
OPCODEMAP_STRING
);
...
...
@@ -587,7 +587,7 @@ static int _kk_sync_devices_status_arg_str(kk_map_dev_node_t *node,cJSON *devSta
static
int
_kk_sync_devices_status_arg_obj
(
kk_map_dev_node_t
*
node
,
cJSON
*
devStatusAry
,
int
*
aryIx
)
{
char
indexId
[
4
]
=
{
0
};
char
indexId
[
16
]
=
{
0
};
char
nodeid
[
32
]
=
{
0
};
cJSON
*
arg
=
NULL
;
cJSON
*
dev_status
=
NULL
;
...
...
@@ -805,16 +805,12 @@ int kk_sync_guard_to_sdk(cJSON *root,cJSON *data)
//同步空调网关
typedef
struct
{
char
*
node
;
char
*
dev_name
;
char
*
id
;
char
*
room_id
;
cJSON
*
status
;
}
SYN_CENTRAL_AC_GW
;
/*
cJSON *_kk_sync_central_ac_gw(SYN_CENTRAL_AC_GW *gw)
{
cJSON *item = cJSON_CreateObject();
cJSON *status;
cJSON_AddStringToObject(item, "bind_central_ac_gw_node_id",(gw->node)?gw->node:"");
...
...
@@ -823,31 +819,81 @@ cJSON *_kk_sync_central_ac_gw(SYN_CENTRAL_AC_GW *gw)
cJSON_AddStringToObject(item, "room_id", (gw->room_id)?gw->room_id:"");
cJSON_AddItemToObject(item, "status",gw->status?gw->status:cJSON_CreateNull());
return item;
}
*/
static
int
kk_get_roomInfo_by_deviceCode
(
cJSON
*
data
,
char
*
pdeviceCode
,
char
*
roomId
)
static
int
kk_get_ac_indoor_info_by_deviceCode
(
cJSON
*
data
,
char
*
pdeviceCode
,
char
*
roomId
,
char
*
name
,
int
epNum
)
{
cJSON
*
rooms
=
cJSON_GetObjectItem
(
data
,
"rooms"
);
cJSON
*
item
=
rooms
->
child
;
while
(
item
!=
NULL
){
cJSON
*
devices
=
cJSON_GetObjectItem
(
item
,
"devices"
);
if
(
devices
==
NULL
){
return
-
1
;
}
cJSON
*
subitem
=
devices
->
child
;
while
(
subitem
!=
NULL
){
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
subitem
,
"deviceCode"
);
cJSON
*
epObj
=
cJSON_GetObjectItem
(
subitem
,
"epNum"
);
if
(
deviceCode
!=
NULL
&&
!
strcmp
(
deviceCode
->
valuestring
,
pdeviceCode
))
{
if
(
epObj
!=
NULL
&&
epObj
->
type
==
cJSON_String
){
if
(
atoi
(
epObj
->
valuestring
)
==
epNum
){
cJSON
*
roomIdJ
=
cJSON_GetObjectItem
(
item
,
"roomId"
);
cJSON
*
nameObj
=
cJSON_GetObjectItem
(
subitem
,
"name"
);
if
(
roomId
!=
NULL
){
memcpy
(
roomId
,
roomIdJ
->
valuestring
,
strlen
(
roomIdJ
->
valuestring
));
debug_log
(
LOG_CRITICAL_LEVEL
,
"roomId=%s
\n
"
,
roomId
);
}
if
(
name
!=
NULL
){
memcpy
(
name
,
nameObj
->
valuestring
,
strlen
(
nameObj
->
valuestring
));
}
debug_log
(
LOG_CRITICAL_LEVEL
,
"name=%s
\n
"
,
name
);
return
0
;
}
}
else
{
cJSON
*
roomIdJ
=
cJSON_GetObjectItem
(
item
,
"roomId"
);
cJSON
*
nameObj
=
cJSON_GetObjectItem
(
item
,
"name"
);
if
(
roomId
!=
NULL
){
memcpy
(
roomId
,
roomIdJ
->
valuestring
,
strlen
(
roomIdJ
->
valuestring
));
debug_log
(
LOG_CRITICAL_LEVEL
,
"roomId=%s
\n
"
,
roomId
);
}
if
(
name
!=
NULL
){
memcpy
(
name
,
nameObj
->
valuestring
,
strlen
(
nameObj
->
valuestring
));
}
debug_log
(
LOG_CRITICAL_LEVEL
,
"name=%s
\n
"
,
name
);
return
0
;
}
}
subitem
=
subitem
->
next
;
}
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
item
=
item
->
next
;
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
}
debug_log
(
LOG_CRITICAL_LEVEL
,
"[err]
\n
"
);
return
-
1
;
}
new_dev_item
g_new_item
[
16
]
=
{
0
};
CENTRAL_AC_INDOOR_ITEM
*
g_indoor_item
=
NULL
;
int
g_newgw_count
=
0
;
...
...
@@ -866,7 +912,7 @@ void kk_create_new_central_ac(char *gwDeviceCode,char *deviceCode,char *nodeId)
{
char
gwmac
[
32
]
=
{
0
};
char
submac
[
32
]
=
{
0
};
if
(
g_newgw_count
>
16
){
if
(
g_newgw_count
>
64
){
return
;
}
//printf("------------------CWC------------------------>[%s][%d]\n",__FUNCTION__,__LINE__);
...
...
@@ -881,9 +927,7 @@ void kk_create_new_central_ac(char *gwDeviceCode,char *deviceCode,char *nodeId)
//printf("------------------CWC------------------------>[%s][%d]\n",__FUNCTION__,__LINE__);
return
;
}
int
kk_sync_indoor_status
(
cJSON
*
eps
){
}
char
*
modeMap
[]
=
{
"AUTO"
,
"COLD"
,
...
...
@@ -901,30 +945,53 @@ char *speedMap[] = {
"UNKONWN"
,
"UNKONWN"
,
};
int
kk_send_indoorAir_status
(
cJSON
*
info
)
int
kk_send_indoorAir_status
(
cJSON
*
info
,
const
char
*
deviceCode
)
{
char
epStr
[
4
]
=
{
0
};
char
nodeStr
[
12
]
=
{
0
};
int
node
;
if
(
info
==
NULL
){
return
-
1
;
}
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
epNum
=
cJSON_GetObjectItem
(
info
,
"epNum"
);
cJSON_AddStringToObject
(
root
,
"nodeid"
,
epNum
->
valuestring
);
node
=
kk_lan_db_node_get
(
deviceCode
,
atoi
(
epNum
->
valuestring
));
snprintf
(
nodeStr
,
sizeof
(
nodeStr
),
"%d"
,
node
);
cJSON_AddStringToObject
(
root
,
"nodeid"
,
nodeStr
);
cJSON_AddStringToObject
(
root
,
"opcode"
,
"CENTRAL_AC_INDOOR_UNIT_STATUS"
);
cJSON_AddStringToObject
(
root
,
"status"
,
"success"
);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON
*
arg
=
cJSON_CreateObject
();
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON_AddBoolToObject
(
arg
,
"online"
,
1
);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON
*
PowerSwitch
=
cJSON_GetObjectItem
(
info
,
"PowerSwitch"
);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON_AddBoolToObject
(
arg
,
"on"
,
PowerSwitch
->
valueint
);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON
*
Temperature
=
cJSON_GetObjectItem
(
info
,
"Temperature"
);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON_AddNumberToObject
(
arg
,
"settingTemperature"
,
Temperature
->
valuedouble
);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON
*
CurrentTemperature
=
cJSON_GetObjectItem
(
info
,
"CurrentTemperature"
);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON_AddNumberToObject
(
arg
,
"roomTemperature"
,
CurrentTemperature
->
valuedouble
);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON
*
WindSpeed
=
cJSON_GetObjectItem
(
info
,
"WindSpeed"
);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON_AddStringToObject
(
arg
,
"fanSpeed"
,
speedMap
[
WindSpeed
->
valueint
]);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON
*
WorkMode
=
cJSON_GetObjectItem
(
info
,
"WorkMode"
);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON_AddStringToObject
(
arg
,
"runModel"
,
modeMap
[
WorkMode
->
valueint
]);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
cJSON_AddItemToObject
(
root
,
"arg"
,
arg
);
_debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
send_msg_to_module
(
root
);
cJSON_Delete
(
root
);
return
0
;
...
...
@@ -936,11 +1003,12 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
int
sub_num
=
0
,
j
=
0
;
int
k
=
0
;
char
nodeid
[
8
]
=
{
0
};
char
ac_gw_nodeid
[
8
]
=
{
0
};
char
roomId
[
32
]
=
{
0
};
char
deviceName
[
256
]
=
{
0
};
char
epStr
[
4
]
=
{
0
};
cJSON
*
central_ac_gws
=
cJSON_CreateArray
();
SYN_CENTRAL_AC_GW
ac
;
//
SYN_CENTRAL_AC_GW ac;
if
(
data
==
NULL
){
return
NULL
;
}
...
...
@@ -961,13 +1029,19 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
cJSON
*
productCode
=
cJSON_GetObjectItem
(
subitem
,
"productCode"
);
if
(
productCode
!=
NULL
&&
strcmp
(
productCode
->
valuestring
,
"3062"
)
==
0
){
//空调网关设备
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
subitem
,
"deviceCode"
);
kk_creater_nodeid
(
deviceCode
->
valuestring
,
1
,
nodeid
);
kk_creater_nodeid
(
deviceCode
->
valuestring
,
1
,
ac_gw_nodeid
);
cJSON
*
properties
=
cJSON_GetObjectItem
(
subitem
,
"properties"
);
cJSON
*
indoorItem
=
cJSON_CreateObject
();
kk_get_roomInfo_by_deviceCode
(
data
,
deviceCode
->
valuestring
,
roomId
);
cJSON_AddStringToObject
(
indoorItem
,
"bind_central_ac_gw_node_id"
,
nodeid
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
kk_get_ac_indoor_info_by_deviceCode
(
data
,
deviceCode
->
valuestring
,
roomId
,
NULL
,
1
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"deviceCode->valuestring=%s"
,
deviceCode
->
valuestring
);
cJSON_AddStringToObject
(
indoorItem
,
"bind_central_ac_gw_node_id"
,
ac_gw_nodeid
);
cJSON_AddStringToObject
(
indoorItem
,
"dev_name"
,
"空调网关"
);
cJSON_AddStringToObject
(
indoorItem
,
"id"
,
nodeid
);
cJSON_AddStringToObject
(
indoorItem
,
"id"
,
ac_gw_
nodeid
);
cJSON_AddStringToObject
(
indoorItem
,
"room_id"
,
roomId
);
cJSON_AddItemToArray
(
central_ac_gws
,
indoorItem
);
...
...
@@ -981,43 +1055,57 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
memset
(
g_indoor_item
,
0x0
,
sizeof
(
CENTRAL_AC_INDOOR_ITEM
)
*
epsize
);
g_indoor_count
=
epsize
;
for
(
k
=
0
;
k
<
epsize
;
k
++
){
char
tmpIdx
[
4
]
=
{
0
};
char
tmpIdx
[
16
]
=
{
0
};
cJSON
*
infoItem
=
cJSON_GetArrayItem
(
epsAry
,
k
);
if
(
infoItem
==
NULL
)
continue
;
cJSON
*
epNum
=
cJSON_GetObjectItem
(
infoItem
,
"epNum"
);
memset
(
epStr
,
0x0
,
sizeof
(
epStr
));
sprintf
(
epStr
,
"%d"
,
epNum
->
valueint
);
memcpy
(
g_indoor_item
[
k
].
id
,
epStr
,
strlen
(
epStr
));
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
kk_creater_nodeid
(
deviceCode
->
valuestring
,
k
+
2
,
nodeid
);
kk_get_ac_indoor_info_by_deviceCode
(
data
,
deviceCode
->
valuestring
,
g_indoor_item
[
k
].
room_id
,
g_indoor_item
[
k
].
dev_name
,
k
+
2
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
memcpy
(
g_indoor_item
[
k
].
id
,
nodeid
,
strlen
(
nodeid
));
sprintf
(
tmpIdx
,
"%d"
,
k
);
memcpy
(
g_indoor_item
[
k
].
indooruint_addr
,
tmpIdx
,
strlen
(
tmpIdx
));
memcpy
(
g_indoor_item
[
k
].
nodeid
,
nodeid
,
strlen
(
nodeid
));
memcpy
(
g_indoor_item
[
k
].
nodeid
,
ac_gw_nodeid
,
strlen
(
ac_gw_nodeid
));
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
cJSON
*
PowerSwitch
=
cJSON_GetObjectItem
(
infoItem
,
"PowerSwitch"
);
g_indoor_item
[
k
].
ac_gw_status
.
on
=
PowerSwitch
->
valueint
==
1
?
true
:
false
;
g_indoor_item
[
k
].
ac_gw_status
.
online
=
1
;
cJSON
*
Temperature
=
cJSON_GetObjectItem
(
infoItem
,
"Temperature"
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
cJSON
*
CurrentTemperature
=
cJSON_GetObjectItem
(
infoItem
,
"CurrentTemperature"
);
g_indoor_item
[
k
].
ac_gw_status
.
settingTemperature
=
Temperature
->
valuedouble
;
g_indoor_item
[
k
].
ac_gw_status
.
roomTemperature
=
CurrentTemperature
->
valuedouble
;
cJSON
*
WindSpeed
=
cJSON_GetObjectItem
(
infoItem
,
"WindSpeed"
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
memcpy
(
g_indoor_item
[
k
].
ac_gw_status
.
speed
,
speedMap
[
WindSpeed
->
valueint
],
strlen
(
speedMap
[
WindSpeed
->
valueint
]));
cJSON
*
WorkMode
=
cJSON_GetObjectItem
(
infoItem
,
"WorkMode"
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
memcpy
(
g_indoor_item
[
k
].
ac_gw_status
.
mode
,
modeMap
[
WorkMode
->
valueint
],
strlen
(
modeMap
[
WorkMode
->
valueint
]));
}
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
kk_create_new_central_ac
(
gwDeviceCode
->
valuestring
,
deviceCode
->
valuestring
,
nodeid
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
}
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
}
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
}
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
cJSON_AddItemToObject
(
root
,
"central_ac_gws"
,
central_ac_gws
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
return
root
;
}
//同步空调网关内机
typedef
struct
{
char
*
id
;
char
*
room_id
;
char
*
indoorunit_name
;
char
*
indooruint_addr
;
char
*
central_ac_gw_devid
;
char
id
[
AIR_AC_INDOOR_ID_SIZE
]
;
char
room_id
[
AIR_AC_INDOOR_ROOM_ID_SIZE
]
;
char
indoorunit_name
[
AIR_AC_INDOOR_NAME_SIZE
]
;
char
indooruint_addr
[
AIR_AC_INDOOR_ADDR_SIZE
]
;
char
central_ac_gw_devid
[
AIR_AC_INDOOR_ID_SIZE
]
;
cJSON
*
indoorunit_state
;
}
SYN_CENTRAL_AC_INDOOR
;
cJSON
*
_kk_sync_central_ac_indoorunit_to_sdk
(
SYN_CENTRAL_AC_INDOOR
*
indoorunit
)
...
...
@@ -1038,47 +1126,56 @@ cJSON *_kk_sync_central_ac_indoorunits(int num,SYN_CENTRAL_AC_INDOOR *indoorunit
{
int
i
;
cJSON
*
central_ac_indoorunits
=
cJSON_CreateArray
();
SYN_CENTRAL_AC_
GW
*
i
ndoorunit
=
indoorunits
;
SYN_CENTRAL_AC_
INDOOR
*
pI
ndoorunit
=
indoorunits
;
for
(
i
=
0
;
i
<
num
;
i
++
,
indoorunit
++
)
{
cJSON
*
item
=
_kk_sync_central_ac_indoorunit_to_sdk
(
indoorunit
);
for
(
i
=
0
;
i
<
num
;
i
++
,
pIndoorunit
++
)
{
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark[%d]...
\n
"
,
i
);
cJSON
*
item
=
_kk_sync_central_ac_indoorunit_to_sdk
(
pIndoorunit
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
cJSON_AddItemToArray
(
central_ac_indoorunits
,
item
);
}
return
central_ac_indoorunits
;
}
cJSON
*
kk_sync_central_ac_indoorunits_to_sdk
(
cJSON
*
root
,
cJSON
*
data
)
{
int
i
=
0
;
cJSON
*
central_ac_indoorunits
;
central_ac_indoorunits
=
cJSON_CreateArray
();
SYN_CENTRAL_AC_INDOOR
*
indoorunitAry
=
NULL
;
SYN_CENTRAL_AC_INDOOR
*
pIndoorunit
=
NULL
;
SYN_CENTRAL_AC_INDOOR
indoorunit
;
indoorunit
.
id
=
malloc
(
20
);
memset
(
indoorunit
.
id
,
0
,
20
);
memcpy
(
indoorunit
.
id
,
"4"
,
sizeof
(
"4"
));
indoorunit
.
room_id
=
malloc
(
20
);
memset
(
indoorunit
.
room_id
,
0
,
20
);
memcpy
(
indoorunit
.
room_id
,
"44"
,
sizeof
(
"44"
));
indoorunitAry
=
(
SYN_CENTRAL_AC_INDOOR
*
)
malloc
(
g_indoor_count
*
sizeof
(
SYN_CENTRAL_AC_INDOOR
));
memset
(
indoorunitAry
,
0
,
g_indoor_count
*
sizeof
(
SYN_CENTRAL_AC_INDOOR
));
pIndoorunit
=
indoorunitAry
;
indoorunit
.
indoorunit_name
=
malloc
(
20
);
memset
(
indoorunit
.
indoorunit_name
,
0
,
20
);
memcpy
(
indoorunit
.
indoorunit_name
,
"444"
,
sizeof
(
"444"
));
for
(
i
=
0
;
i
<
g_indoor_count
;
i
++
,
pIndoorunit
++
){
indoorunit
.
indooruint_addr
=
malloc
(
20
);
memset
(
indoorunit
.
indooruint_addr
,
0
,
20
);
memcpy
(
indoorunit
.
indooruint_addr
,
"4444"
,
sizeof
(
"4444"
));
snprintf
(
pIndoorunit
->
id
,
AIR_AC_INDOOR_ID_SIZE
,
"%s"
,
g_indoor_item
[
i
].
id
);
snprintf
(
pIndoorunit
->
room_id
,
AIR_AC_INDOOR_ROOM_ID_SIZE
,
"%s"
,
g_indoor_item
[
i
].
room_id
);
snprintf
(
pIndoorunit
->
indoorunit_name
,
AIR_AC_INDOOR_NAME_SIZE
,
"%s"
,
g_indoor_item
[
i
].
dev_name
);
snprintf
(
pIndoorunit
->
central_ac_gw_devid
,
AIR_AC_INDOOR_ID_SIZE
,
"%s"
,
g_indoor_item
[
i
].
nodeid
);
snprintf
(
pIndoorunit
->
indooruint_addr
,
AIR_AC_INDOOR_ADDR_SIZE
,
"%s"
,
g_indoor_item
[
i
].
indooruint_addr
);
indoorunit
.
central_ac_gw_devid
=
malloc
(
20
);
memset
(
indoorunit
.
central_ac_gw_devid
,
0
,
20
);
memcpy
(
indoorunit
.
central_ac_gw_devid
,
"44444"
,
sizeof
(
"44444"
));
cJSON
*
status
=
cJSON_CreateObject
();
cJSON_AddBoolToObject
(
status
,
"online"
,
g_indoor_item
[
i
].
ac_gw_status
.
online
);
cJSON_AddBoolToObject
(
status
,
"on"
,
g_indoor_item
[
i
].
ac_gw_status
.
on
);
cJSON_AddStringToObject
(
status
,
"runModel"
,
g_indoor_item
[
i
].
ac_gw_status
.
mode
);
cJSON_AddStringToObject
(
status
,
"fanSpeed"
,
g_indoor_item
[
i
].
ac_gw_status
.
speed
);
cJSON_AddNumberToObject
(
status
,
"settingTemperature"
,
g_indoor_item
[
i
].
ac_gw_status
.
settingTemperature
);
cJSON_AddNumberToObject
(
status
,
"roomTemperature"
,
g_indoor_item
[
i
].
ac_gw_status
.
roomTemperature
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
pIndoorunit
->
indoorunit_state
=
status
;
}
indoorunit
.
indoorunit_state
=
NULL
;
central_ac_indoorunits
=
_kk_sync_central_ac_indoorunits
(
1
,
&
indoorunit
);
central_ac_indoorunits
=
_kk_sync_central_ac_indoorunits
(
g_indoor_count
,
indoorunitAry
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark...
\n
"
);
cJSON_AddItemToObject
(
root
,
"central_ac_indoorunits"
,
central_ac_indoorunits
);
return
root
;
...
...
@@ -1182,7 +1279,7 @@ static cJSON * kk_create_floor_obj(SYN_FLOOR *floor)
}
static
int
kk_create_floors
(
int
num
,
SYN_FLOOR
*
floor
)
static
cJSON
*
kk_create_floors
(
int
num
,
SYN_FLOOR
*
floor
)
{
int
i
;
cJSON
*
floors
=
cJSON_CreateArray
();
...
...
@@ -1300,6 +1397,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload,int push)
kk_sync_central_ac_to_sdk
(
root
,
data
);
kk_sync_central_ac_indoorunits_to_sdk
(
root
,
data
);
...
...
application/klansdk/kk_lan_sync.h
View file @
f49071b9
...
...
@@ -4,6 +4,16 @@
#include "cJSON.h"
#define AIR_AC_INDOOR_ID_SIZE 8
#define AIR_AC_INDOOR_ROOM_ID_SIZE 24
#define AIR_AC_INDOOR_NAME_SIZE 32
#define AIR_AC_INDOOR_ADDR_SIZE 8
typedef
struct
{
char
*
floor_id
;
char
*
room_id
;
...
...
@@ -48,7 +58,8 @@ int kk_sync_devices_status_to_sdk(cJSON *root);
int
kk_create_syncinfo_to_sdk
(
cJSON
*
payload
,
int
push
);
int
kk_send_indoorAir_status
(
cJSON
*
info
);
int
kk_send_indoorAir_status
(
cJSON
*
info
,
const
char
*
deviceCode
);
cJSON
*
val_conver_new2old
(
cJSON
*
newccuItem
,
cJSON
*
oldccuItem
,
int
syn_type
);
...
...
application/klansdk/kk_lan_voice_panel.c
View file @
f49071b9
...
...
@@ -83,6 +83,7 @@ static void *kk_vp_uart_thread(void *arg)
}
ERROR_PRINT
(
"[%s]thread end...
\n
"
,
__FUNCTION__
);
return
0
;
}
...
...
@@ -118,7 +119,7 @@ char *vp_file_load(const char *path)
fp
=
fopen
(
path
,
"r"
);
if
(
fp
==
NULL
){
printf
(
"open err.
\n
"
);
debug_log
(
LOG_WARNING_LEVEL
,
"[%s]fopen err!
\n
"
,
path
);
return
NULL
;
}
...
...
@@ -175,6 +176,7 @@ static int _vp_config_file_version_load(void)
cJSON_Delete
(
json
);
free
(
pFile
);
return
1
;
}
void
kk_vp_set_updateFlag
(
int
flag
)
...
...
@@ -208,7 +210,7 @@ void kk_vp_set_state_machine(int state)
}
}
void
kk_vp_get_config_file_version
(
int
ver
)
int
kk_vp_get_config_file_version
(
void
)
{
return
vp_mag
.
cfg_info
.
next_ver
;
}
...
...
@@ -341,6 +343,7 @@ void *kk_vp_manage_thread(void *arg)
usleep
(
50
*
1000
);
}
ERROR_PRINT
(
"[%s]thread end...
\n
"
,
__FUNCTION__
);
return
0
;
}
...
...
@@ -375,6 +378,15 @@ void kk_voice_panel_uart_dev_chose(int argc, char* argv[])
debug_log
(
LOG_FOCUS_LEVEL
,
"serialDev=%s
\n
"
,
serialDev
);
}
static
int
kk_vp_cfg_file_dir_create
(
void
){
char
cmd
[
128
]
=
{
0
};
snprintf
(
cmd
,
sizeof
(
cmd
),
"mkdir -p %s"
,
VP_VP_CONFIG_FILE_DIR
);
return
system
(
cmd
);
}
int
kk_voice_panel_init
(
int
argc
,
char
*
argv
[])
{
size_t
s
=
1500
;
...
...
@@ -387,9 +399,13 @@ int kk_voice_panel_init(int argc, char* argv[])
kk_voice_panel_uart_dev_chose
(
argc
,
argv
);
kk_vp_cfg_file_dir_create
();
pthread_attr_setstacksize
(
&
attr
,
s
);
pthread_attr_setdetachstate
(
&
attr
,
PTHREAD_CREATE_DETACHED
);
kk_vp_ac_mutex_init
();
if
(
pthread_mutex_init
(
&
v_mux
,
NULL
)
!=
0
)
{
pthread_attr_destroy
(
&
attr
);
ERROR_PRINT
(
"pthread_mutex_init v_mux fail.
\n
"
);
...
...
@@ -407,12 +423,6 @@ int kk_voice_panel_init(int argc, char* argv[])
return
-
3
;
}
/*if((pthread_create(&tid3, NULL, kk_voice_panel_333, NULL))!= 0 ) {
ERROR_PRINT("pthread_create kk_voice_panel fail\n");
return -4;
}*/
return
0
;
}
...
...
application/klansdk/kk_lan_vp_ctrl.c
View file @
f49071b9
...
...
@@ -2,109 +2,213 @@
#include "kk_lan_vp_ctrl.h"
#include "kk_lan_debug.h"
#include "cJSON.h"
#include "kk_voice_panel_cfg.h"
typedef
cJSON
*
(
*
dev_handle_func
)(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
typedef
struct
{
const
int
*
pidAry
;
int
num
;
dev_handle_func
func
;
}
DEV_PID_S
;
static
cJSON
*
air_conditioner_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
);
static
cJSON
*
curtain_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
);
static
cJSON
*
freshAir_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
);
static
const
int
air_conditioner_dev_pid
[]
=
AIR_CONDITIONER_DEV_PID
;
static
const
int
light_dev_pid
[]
=
LIGHT_DEV_PID
;
static
const
int
curtain_dev_pid
[]
=
CURTAIN_DEV_PID
;
static
const
int
outlet_dev_pid
[]
=
OUTLET_DEV_PID
;
static
const
int
freshAir_dev_pid
[]
=
FRESHAIR_DEV_PID
;
static
const
int
fanCoilSwitch_dev_pid
[]
=
FANCOILSWITCH_DEV_PID
;
static
DEV_PID_S
g_dev_pid
[]
=
{
{
light_dev_pid
,
sizeof
(
light_dev_pid
)
/
sizeof
(
int
),
light_dev_handle
},
{
curtain_dev_pid
,
sizeof
(
curtain_dev_pid
)
/
sizeof
(
int
),
curtain_dev_handle
},
{
outlet_dev_pid
,
sizeof
(
outlet_dev_pid
)
/
sizeof
(
int
),
outlet_dev_handle
},
{
freshAir_dev_pid
,
sizeof
(
freshAir_dev_pid
)
/
sizeof
(
int
),
freshAir_dev_handle
},
{
fanCoilSwitch_dev_pid
,
sizeof
(
fanCoilSwitch_dev_pid
)
/
sizeof
(
int
),
fanCoilSwitch_dev_handle
}
};
static
dev_handle_func
dev_pid_dispatch
(
int
pid
)
{
int
i
,
j
;
int
num
=
sizeof
(
g_dev_pid
)
/
sizeof
(
DEV_PID_S
);
DEV_PID_S
*
pDevPid
=
g_dev_pid
;
for
(
i
=
0
;
i
<
num
;
i
++
,
pDevPid
++
)
{
for
(
j
=
0
;
j
<
pDevPid
->
num
;
j
++
)
{
if
(
pid
==
pDevPid
->
pidAry
[
j
]){
return
pDevPid
->
func
;
}
}
}
return
NULL
;
}
//****************************************************************************
cJSON
*
PowerSwitch_msg_build
(
int
ep
,
int
onoff
)
{
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddNumberToObject
(
params
,
"PowerSwitch"
,
onoff
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
params
;
}
static
cJSON
*
windSpeed_msg_build
(
int
ep
,
int
level
)
{
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
,
"WindSpeed"
,
level
);
return
params
;
}
static
cJSON
*
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
,
"WorkMode"
,
mode
);
return
params
;
}
static
cJSON
*
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
,
"Temperature"
,
tmp
);
return
params
;
}
static
int
is_light_dev
(
int
pid
);
static
cJSON
*
light_dev
(
int
ep
,
int
onoff
);
static
cJSON
*
light_dev_handle
(
int
ep
,
uint8_t
*
arg
);
static
int
is_curtain_dev
(
int
pid
);
static
cJSON
*
curtain_dev_msg_build
(
int
ep
,
int
OperationMode
);
static
cJSON
*
curtain_dev_handle
(
int
ep
,
uint8_t
*
arg
);
static
int
is_outlet_dev
(
int
pid
);
static
cJSON
*
outlet_msg_build
(
int
ep
,
int
onoff
);
static
cJSON
*
outlet_dev_handle
(
int
ep
,
uint8_t
*
arg
);
typedef
int
(
*
pid_mth_func
)(
int
pid
);
typedef
cJSON
*
(
*
dev_handle
)(
int
ep
,
uint8_t
*
arg
);
typedef
struct
{
pid_mth_func
mth
;
dev_handle
handle
;
}
KK_VP_CTRL
;
static
KK_VP_CTRL
vp_ctrl_table
[]
=
{
{
is_light_dev
,
light_dev_handle
},
{
is_curtain_dev
,
curtain_dev_handle
},
{
is_outlet_dev
,
outlet_dev_handle
}
};
static
int
light_dev_pid
[]
=
{
3001
,
3002
,
3003
,
3022
,
3023
,
3024
};
static
int
curtain_dev_pid
[]
=
{
3005
,
3006
,
3007
,
3008
,
3009
,
3010
,
3011
,
3026
,
3027
,
3067
};
static
int
outlet_dev_pid
[]
=
{
3019
,
3020
,
3037
,
3038
};
static
int
is_light_dev
(
int
pid
)
//****************************************************************************
static
cJSON
*
light_msg_build
(
int
ep
,
int
onoff
)
{
int
i
;
for
(
i
=
0
;
i
<
sizeof
(
light_dev_pid
)
/
sizeof
(
int
);
i
++
){
if
(
pid
==
light_dev_pid
[
i
]){
return
1
;
}
}
return
0
;
return
PowerSwitch_msg_build
(
ep
,
onoff
);
}
static
int
is_curtain_dev
(
int
pid
)
static
cJSON
*
freshAir_msg_build
(
int
ep
,
int
onoff
)
{
int
i
;
for
(
i
=
0
;
i
<
sizeof
(
curtain_dev_pid
)
/
sizeof
(
int
);
i
++
){
if
(
pid
==
curtain_dev_pid
[
i
]){
return
1
;
}
}
return
0
;
return
PowerSwitch_msg_build
(
ep
,
onoff
);
}
static
int
is_outlet_dev
(
int
pid
)
//****************************************************************************
static
cJSON
*
air_conditioner_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
{
int
i
;
for
(
i
=
0
;
i
<
sizeof
(
outlet_dev_pid
)
/
sizeof
(
int
);
i
++
){
if
(
pid
==
outlet_dev_pid
[
i
]){
return
1
;
uint8_t
skill_type
=
arg
[
0
];
switch
(
skill_type
){
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
(
arg
[
1
]
!=
0x20
){
return
NULL
;
}
uint8_t
windspeed
=
arg
[
2
];
debug_log
(
LOG_FOCUS_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
(
arg
[
1
]
!=
0x20
){
return
NULL
;
}
uint8_t
mode
=
arg
[
2
];
_debug_log
(
LOG_FOCUS_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
;
}
return
0
;
}
case
VP_CTRL_TMP_SET
:
if
(
arg
[
1
]
!=
0x20
){
return
NULL
;
}
uint8_t
tmp
=
arg
[
2
];
_debug_log
(
LOG_FOCUS_LEVEL
,
"[VP] set tmp=%d
\n
"
,
tmp
);
return
temperature_msg_build
(
ep
,
tmp
);
static
cJSON
*
light_msg_build
(
int
ep
,
int
onoff
)
{
return
PowerSwitch_msg_build
(
ep
,
onoff
)
;
default:
break
;
}
return
NULL
;
}
static
cJSON
*
light_dev_handle
(
int
ep
,
uint8_t
*
arg
)
static
cJSON
*
light_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
{
uint8_t
skill_type
=
arg
[
0
];
printf
(
"[%s][%d]skill_type=%d,ep=%d
\n
"
,
__FUNCTION__
,
__LINE__
,
skill_type
,
ep
);
switch
(
skill_type
){
case
VP_CTRL_OPEN
:
//
return
light_msg_build
(
ep
,
1
);
...
...
@@ -134,10 +238,10 @@ static cJSON *curtain_dev_msg_build(int ep,int OperationMode)
return
params
;
}
static
cJSON
*
curtain_dev_handle
(
int
ep
,
uint8_t
*
arg
)
static
cJSON
*
curtain_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
{
uint8_t
skill_type
=
arg
[
0
];
printf
(
"[%s][%d]skill_type=%d,ep=%d
\n
"
,
__FUNCTION__
,
__LINE__
,
skill_type
,
ep
);
debug_log
(
LOG_FOCUS_LEVEL
,
"skill_type=%d,ep=%d
\n
"
,
skill_type
,
ep
);
switch
(
skill_type
){
case
VP_CTRL_OPEN
:
//
return
curtain_dev_msg_build
(
ep
,
1
);
...
...
@@ -157,10 +261,10 @@ static cJSON *outlet_msg_build(int ep,int onoff)
}
static
cJSON
*
outlet_dev_handle
(
int
ep
,
uint8_t
*
arg
)
static
cJSON
*
outlet_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
{
uint8_t
skill_type
=
arg
[
0
];
printf
(
"[%s][%d]skill_type=%d,ep=%d
\n
"
,
__FUNCTION__
,
__LINE__
,
skill_type
,
ep
);
debug_log
(
LOG_FOCUS_LEVEL
,
"skill_type=%d,ep=%d
\n
"
,
skill_type
,
ep
);
switch
(
skill_type
){
case
VP_CTRL_OPEN
:
//
return
outlet_msg_build
(
ep
,
1
);
...
...
@@ -172,20 +276,217 @@ static cJSON *outlet_dev_handle(int ep,uint8_t *arg)
}
void
kk_lan_vp_control
(
uint8_t
num
,
uint32_t
nodeIdAry
[],
uint8_t
*
arg
)
static
cJSON
*
freshAir_windspeed_msg_build
(
int
ep
,
int
level
)
{
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
,
"WindSpeed"
,
level
);
return
params
;
}
static
cJSON
*
freshAir_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
,
"WorkMode"
,
mode
);
return
params
;
}
static
cJSON
*
freshAir_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
{
uint8_t
skill_type
=
arg
[
0
];
if
(
arg_len
!=
3
){
debug_log
(
LOG_ERROR_LEVEL
,
"[err] arg_len=%d
\n
"
,
arg_len
);
return
NULL
;
}
switch
(
skill_type
){
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
(
arg
[
1
]
!=
0x20
){
return
NULL
;
}
uint8_t
windspeed
=
arg
[
2
];
_debug_log
(
LOG_FOCUS_LEVEL
,
"[VP] set windspeed=%d
\n
"
,
windspeed
);
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_LOW
){
return
freshAir_windspeed_msg_build
(
ep
,
1
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_MID
){
return
freshAir_windspeed_msg_build
(
ep
,
2
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_HIGH
){
return
freshAir_windspeed_msg_build
(
ep
,
3
);
}
break
;
}
case
VP_CTRL_MODE
:{
if
(
arg
[
1
]
!=
0x20
){
return
NULL
;
}
uint8_t
mode
=
arg
[
2
];
_debug_log
(
LOG_FOCUS_LEVEL
,
"[VP] set mode=%d
\n
"
,
mode
);
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_AUTO
){
return
freshAir_workMode_msg_build
(
ep
,
0
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_MANUAL
){
return
freshAir_workMode_msg_build
(
ep
,
1
);
}
break
;
}
default:
break
;
}
return
NULL
;
}
static
cJSON
*
fanCoilSwitch_windspeed_msg_build
(
int
ep
,
int
level
)
{
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
,
"WindSpeed"
,
level
);
return
params
;
}
static
cJSON
*
fanCoilSwitch_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
,
"WorkMode"
,
mode
);
return
params
;
}
static
cJSON
*
fanCoilSwitch_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
,
"Temperature"
,
tmp
);
return
params
;
}
static
cJSON
*
fanCoilSwitch_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
)
{
uint8_t
skill_type
=
arg
[
0
];
switch
(
skill_type
){
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
(
arg
[
1
]
!=
0x20
){
return
NULL
;
}
uint8_t
windspeed
=
arg
[
2
];
debug_log
(
LOG_FOCUS_LEVEL
,
"[VP] set windspeed=%d
\n
"
,
windspeed
);
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_LOW
){
return
fanCoilSwitch_windspeed_msg_build
(
ep
,
2
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_MID
){
return
fanCoilSwitch_windspeed_msg_build
(
ep
,
3
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_HIGH
){
return
fanCoilSwitch_windspeed_msg_build
(
ep
,
4
);
}
else
if
(
windspeed
==
VP_SKILLTYPE_12_WINDSPEED_AUTO
){
return
fanCoilSwitch_windspeed_msg_build
(
ep
,
0
);
}
break
;
}
case
VP_CTRL_MODE
:{
if
(
arg
[
1
]
!=
0x20
){
return
NULL
;
}
uint8_t
mode
=
arg
[
2
];
_debug_log
(
LOG_FOCUS_LEVEL
,
"[VP] set mode=%d
\n
"
,
mode
);
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_COLD
){
return
freshAir_workMode_msg_build
(
ep
,
1
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_HEATING
){
return
freshAir_workMode_msg_build
(
ep
,
2
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_FAN
){
return
freshAir_workMode_msg_build
(
ep
,
3
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_DEHUM
){
return
freshAir_workMode_msg_build
(
ep
,
4
);
}
break
;
}
case
VP_CTRL_TMP_SET
:
if
(
arg
[
1
]
!=
0x20
){
return
NULL
;
}
uint8_t
tmp
=
arg
[
2
];
_debug_log
(
LOG_FOCUS_LEVEL
,
"[VP] set tmp=%d
\n
"
,
tmp
);
return
fanCoilSwitch_Temperature_msg_build
(
ep
,
tmp
);
default:
break
;
}
return
NULL
;
}
int
kk_lan_vp_control
(
uint8_t
num
,
uint32_t
nodeIdAry
[],
uint8_t
*
arg
,
uint8_t
arg_len
)
{
uint8_t
i
,
j
;
uint8_t
err
=
0
;
uint8_t
skill_type
;
int
ep
;
int
pid
=
0
;
dev_handle_func
func
;
char
productCode
[
PRODUCT_CODE_LEN
]
=
{
0
};
char
deviceCode
[
DEVICE_CODE_LEN
]
=
{
0
};
char
productCode
[
32
]
=
{
0
};
char
deviceCode
[
32
]
=
{
0
};
cJSON
*
msg
=
NULL
;
cJSON
*
params
=
NULL
;
kk_map_dev_node_t
*
node
=
NULL
;
KK_VP_CTRL
*
pVpCtr
=
vp_ctrl_table
;
if
(
arg_len
<=
1
){
debug_log
(
LOG_ERROR_LEVEL
,
"[err].
\n
"
);
return
1
;
}
skill_type
=
arg
[
0
];
for
(
i
=
0
;
i
<
num
;
i
++
){
memset
(
deviceCode
,
0
,
sizeof
(
deviceCode
));
...
...
@@ -197,30 +498,33 @@ void kk_lan_vp_control(uint8_t num,uint32_t nodeIdAry[],uint8_t *arg)
continue
;
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
snprintf
(
productCode
,
sizeof
(
productCode
),
"%s"
,
node
->
productCode
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
pid
=
atoi
(
productCode
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
params
=
NULL
;
for
(
j
=
0
;
j
<
sizeof
(
vp_ctrl_table
)
/
sizeof
(
KK_VP_CTRL
);
j
++
,
pVpCtr
++
){
if
(
pVpCtr
->
mth
!=
NULL
&&
pVpCtr
->
handle
!=
NULL
){
if
(
pVpCtr
->
mth
(
pid
)){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
params
=
pVpCtr
->
handle
(
ep
,
arg
);
break
;
}
if
(
is_ac_gw_pid
(
pid
)
!=
0
){
debug_log
(
LOG_FOCUS_LEVEL
,
"air conditioner,pid=%d
\n
"
,
pid
);
params
=
air_conditioner_dev_handle
(
ep
,
arg
,
arg_len
);
}
else
{
if
((
func
=
dev_pid_dispatch
(
pid
))
!=
NULL
){
debug_log
(
LOG_FOCUS_LEVEL
,
"skill_type=%02x,ep=%d
\n
"
,
skill_type
,
ep
);
params
=
func
(
ep
,
arg
,
arg_len
);
}
}
if
(
params
!=
NULL
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
msg
=
property_set
(
productCode
,
deviceCode
,
"*"
,
"*"
,
params
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_ipc_send_json
(
msg
);
}
else
{
err
=
1
;
break
;
}
}
return
err
;
}
...
...
application/klansdk/kk_lan_vp_ctrl.h
View file @
f49071b9
...
...
@@ -44,7 +44,60 @@
void
kk_lan_vp_control
(
uint8_t
num
,
uint32_t
nodeIdAry
[],
uint8_t
*
arg
);
//SKILL TYPE(0x12)----------------------------------------->WINDSPEED
#define VP_SKILLTYPE_12_WINDSPEED_LOW 0x01
#define VP_SKILLTYPE_12_WINDSPEED_MID 0x02
#define VP_SKILLTYPE_12_WINDSPEED_HIGH 0x03
#define VP_SKILLTYPE_12_WINDSPEED_AUTO 0x04
//SKILL TYPE(0X1C)----------------------------------------->WORKMODE
#define VP_SKILLTYPE_1C_WORKMODE_AUTO 0x01
#define VP_SKILLTYPE_1C_WORKMODE_MANUAL 0x02
#define VP_SKILLTYPE_1C_WORKMODE_COLD 0x03
#define VP_SKILLTYPE_1C_WORKMODE_HEATING 0x04
#define VP_SKILLTYPE_1C_WORKMODE_ENERGY 0x05
#define VP_SKILLTYPE_1C_WORKMODE_COMFORT 0x06
#define VP_SKILLTYPE_1C_WORKMODE_FAN 0x07
#define VP_SKILLTYPE_1C_WORKMODE_DEHUM 0x08
#define AIR_CONDITIONER_DEV_PID {\
3062\
}
//DEVICE PID DEFINE
//3001,3002,3003,3022,3023,3024
#define LIGHT_DEV_PID {\
3024\
}
//3005,3006,3007,3008,3009,3010,3011,3026,3027,3067
#define CURTAIN_DEV_PID {\
3027\
}
//3019,3020,3037,3038
#define OUTLET_DEV_PID {\
3019,3020,3037,3038\
}
#define FRESHAIR_DEV_PID {\
3032\
}
#define FANCOILSWITCH_DEV_PID {\
3034\
}
int
kk_lan_vp_control
(
uint8_t
num
,
uint32_t
nodeIdAry
[],
uint8_t
*
arg
,
uint8_t
arg_len
);
...
...
application/klansdk/kk_login_handle.c
View file @
f49071b9
...
...
@@ -52,15 +52,18 @@ int kk_send_data_to_sdk(char *buf)
INFO_PRINT
(
"tmpBuf:%s
\n
"
,
tmpBuf
);
for
(
i
=
0
;
i
<
LISTEN_MAX
;
i
++
){
tcp_data_mutex_lock
();
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
s_ConnInfo
[
i
].
socketfd
!=
-
1
){
send
(
s_ConnInfo
[
i
].
socketfd
,
tmpBuf
,
strlen
(
tmpBuf
),
0
);
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
tcp_data_mutex_unlock
();
}
free
(
tmpBuf
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
0
;
}
static
int
_kk_handle_data
(
char
*
buf
,
int
sockfd
){
...
...
@@ -83,6 +86,7 @@ static int _kk_handle_data(char *buf,int sockfd){
kk_data_handle
(
json
,
sockfd
);
cJSON_Delete
(
json
);
}
return
0
;
}
static
void
PrintMesg
(
int
i
,
char
buf
[])
...
...
application/klansdk/kk_newccu_msg.c
View file @
f49071b9
...
...
@@ -11,6 +11,7 @@
#include "kk_newccu_msg.h"
#include "kk_product.h"
#include "kk_lan_node_db.h"
static
pthread_mutex_t
*
mutex
=
NULL
;
...
...
@@ -83,6 +84,8 @@ cJSON * property_report(const char *productCode,const char *deviceCode,const cha
}
extern
int
kk_lan_get_ccuid
(
_OU_
char
*
device_code
);
cJSON
*
scene_payload_build
(
const
char
*
method
,
const
char
*
msgId
,
cJSON
*
params
)
{
char
ccuid
[
33
]
=
{
0
};
...
...
@@ -141,7 +144,7 @@ int kk_ipc_send_json(cJSON *root)
}
msg
=
cJSON_Print
(
root
);
printf
(
"[lan->midware]json:
\n
%s
\n
"
,
msg
);
debug_log
(
LOG_NORMAL_LEVEL
,
"[lan->midware]json:
\n
%s
\n
"
,
msg
);
cJSON_Minify
(
msg
);
pthread_mutex_lock
(
mutex
);
...
...
application/klansdk/kk_oldccu_msg.c
View file @
f49071b9
...
...
@@ -13,10 +13,9 @@
#include "kk_lan_ctrl.h"
#include "kk_data_mng.h"
#include "kk_oldccu_msg.h"
#include "kk_lan_sync.h"
#include "kk_data_mng.h"
#include "kk_data_handle.h"
cJSON
*
old_ccu_msg_build_json
(
const
char
*
nodeid
,
const
char
*
opcode
,
const
char
*
status
,
cJSON
*
arg
)
{
...
...
@@ -382,7 +381,7 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev
static
int
attr_indoorAir_report
(
cJSON
*
params
)
static
int
attr_indoorAir_report
(
cJSON
*
params
,
const
char
*
deviceCode
)
{
int
k
=
0
;
if
(
params
==
NULL
){
...
...
@@ -390,14 +389,18 @@ static int attr_indoorAir_report(cJSON *params)
}
cJSON
*
epsAry
=
cJSON_GetObjectItem
(
params
,
"eps"
);
if
(
epsAry
==
NULL
){
kk_send_indoorAir_status
(
params
,
deviceCode
);
return
-
1
;
}
}
else
{
int
epsize
=
cJSON_GetArraySize
(
epsAry
);
for
(
k
=
0
;
k
<
epsize
;
k
++
){
char
tmpIdx
[
4
]
=
{
0
};
cJSON
*
infoItem
=
cJSON_GetArrayItem
(
epsAry
,
k
);
if
(
infoItem
==
NULL
)
continue
;
kk_send_indoorAir_status
(
infoItem
);
kk_send_indoorAir_status
(
infoItem
,
deviceCode
);
}
}
return
0
;
}
...
...
@@ -413,8 +416,11 @@ int kk_lan_property_post_deal(const char *deviceCode,cJSON *payload)
params
=
cJSON_GetObjectItem
(
payload
,
"params"
);
if
(
strcmp
(
dev
->
productCode
,
"3062"
)
==
0
){
attr_indoorAir_report
(
params
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
attr_indoorAir_report
(
params
,
deviceCode
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
}
else
{
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
return
kk_lan_property_convert
(
deviceCode
,
dev
,
params
);
}
}
else
{
...
...
application/klansdk/kk_oldccu_msg.h
View file @
f49071b9
...
...
@@ -25,6 +25,10 @@ int kk_lan_device_delete_notify(cJSON *payload);
cJSON
*
_kk_sync_devicestatus_arg_build
(
kk_map_dev_node_t
*
node
);
int
kk_send_indoorAir_status
(
cJSON
*
info
,
const
char
*
deviceCode
);
#endif
...
...
application/klansdk/kk_voice_panel_cfg.c
View file @
f49071b9
...
...
@@ -9,6 +9,10 @@
#include "kk_voice_panel_cfg.h"
#include "kk_ccu_msg.h"
#include "kk_lan_node_db.h"
#include "kk_voice_panel_handle.h"
static
_OUT
int
node_id_check
(
_IN
cJSON
*
zbDevsAry
,
_IN
const
char
*
id
);
...
...
@@ -20,18 +24,12 @@ _OUT cJSON *gws_ary_build(_IN int num,_IN VP_GW_ITEM list[]);
static
pthread_mutex_t
*
mutex
;
int
kk_vp_cfg_init
(
void
)
void
kk_vp_ac_mutex_init
(
void
)
{
int
err
=
0
;
mutex
=
(
pthread_mutex_t
*
)
malloc
(
sizeof
(
pthread_mutex_t
));
if
(
0
!=
(
err
=
pthread_mutex_init
(
mutex
,
NULL
)
))
{
if
(
0
!=
pthread_mutex_init
(
mutex
,
NULL
))
{
free
(
mutex
);
}
pthread_mutex_init
(
&
mutex
,
NULL
);
return
err
;
}
static
_OUT
cJSON
*
zigbee_devices_item_build
(
_IN
VP_ZB_DEV_ITEM
*
item
);
...
...
@@ -224,18 +222,19 @@ static _OUT cJSON *kk_vp_sync_scences(_IN cJSON *data)
static
int
kk_vp_get_device_name
(
_IN
cJSON
*
devices
,
_IN
const
char
*
epNum
,
_IN
const
char
*
deviceCode
,
_IN
int
size
,
_OUT
char
*
buf
)
static
int
kk_vp_get_device_name
(
_IN
cJSON
*
devices
,
_IN
const
char
*
epNum
,
_IN
const
char
*
deviceCode
,
_IN
int
multi
,
_IN
int
size
,
_OUT
char
*
buf
)
{
int
i
=
0
,
devNum
=
0
;
cJSON
*
name
=
NULL
;
cJSON
*
epNumObj
=
NULL
;
cJSON
*
deviceItem
=
NULL
,
*
devCodeObj
=
NULL
;
devNum
=
cJSON_GetArraySize
(
devices
);
//
printf("[%s][%d]devNum=%d\n",__FUNCTION__,__LINE__,devNum);
printf
(
"[%s][%d]devNum=%d
\n
"
,
__FUNCTION__
,
__LINE__
,
devNum
);
for
(
i
=
0
;
i
<
devNum
;
i
++
){
deviceItem
=
cJSON_GetArrayItem
(
devices
,
i
);
if
(
deviceItem
->
type
!=
cJSON_Object
){
//
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
continue
;
}
...
...
@@ -243,31 +242,45 @@ static int kk_vp_get_device_name(_IN cJSON *devices,_IN const char*epNum,_IN con
devCodeObj
=
cJSON_GetObjectItem
(
deviceItem
,
"deviceCode"
);
if
(
devCodeObj
==
NULL
||
devCodeObj
->
type
!=
cJSON_String
){
//
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
continue
;
}
//
printf("[%s][%d]%d,%d,%s,%s\n",__FUNCTION__,__LINE__,strlen(devCodeObj->valuestring),strlen(deviceCode),devCodeObj->valuestring,deviceCode);
printf
(
"[%s][%d]%d,%d,%s,%s
\n
"
,
__FUNCTION__
,
__LINE__
,
strlen
(
devCodeObj
->
valuestring
),
strlen
(
deviceCode
),
devCodeObj
->
valuestring
,
deviceCode
);
if
((
strlen
(
devCodeObj
->
valuestring
)
==
strlen
(
deviceCode
))
&&
!
strcmp
(
devCodeObj
->
valuestring
,
deviceCode
)){
//
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
((
name
=
cJSON_GetObjectItem
(
deviceItem
,
"name"
))
!=
NULL
&&
name
->
type
==
cJSON_String
){
//
printf("[%s][%d]name=%s\n",__FUNCTION__,__LINE__,name->valuestring);
printf
(
"[%s][%d]name=%s
\n
"
,
__FUNCTION__
,
__LINE__
,
name
->
valuestring
);
if
(
multi
!=
0
){
if
((
epNumObj
=
cJSON_GetObjectItem
(
deviceItem
,
"epNum"
))
!=
NULL
&&
epNumObj
->
type
==
cJSON_String
&&
!
strcmp
(
epNumObj
->
valuestring
,
epNum
)){
snprintf
(
buf
,
size
,
"%s"
,
name
->
valuestring
);
return
1
;
}
}
else
{
if
((
epNumObj
=
cJSON_GetObjectItem
(
deviceItem
,
"epNum"
))
!=
NULL
&&
epNumObj
->
type
==
cJSON_String
&&
!
strcmp
(
epNumObj
->
valuestring
,
"1"
)){
snprintf
(
buf
,
size
,
"%s"
,
name
->
valuestring
);
return
1
;
}
return
1
;
}
//printf("[%s][%d]\n",__FUNCTION__,__LINE__);
}
}
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
0
;
}
static
int
kk_vp_get_device_info
(
_IN
cJSON
*
rooms
,
_IN
VP_ZB_DEV_ITEM
*
pDevs
)
static
int
kk_vp_get_device_info
(
_IN
cJSON
*
rooms
,
_IN
VP_ZB_DEV_ITEM
*
pDevs
,
_IN
int
multi
)
{
cJSON
*
roomItem
=
NULL
;
cJSON
*
roomId
=
NULL
,
*
devices
=
NULL
;
...
...
@@ -292,9 +305,10 @@ static int kk_vp_get_device_info(_IN cJSON *rooms,_IN VP_ZB_DEV_ITEM *pDevs)
continue
;
}
isFind
=
kk_vp_get_device_name
(
devices
,
pDevs
->
ch
,
pDevs
->
mac
,
sizeof
(
pDevs
->
name
),
pDevs
->
name
);
isFind
=
kk_vp_get_device_name
(
devices
,
pDevs
->
ch
,
pDevs
->
mac
,
multi
,
sizeof
(
pDevs
->
name
),
pDevs
->
name
);
if
(
isFind
!=
0
){
debug_log
(
LOG_CRITICAL_LEVEL
,
"roomId->valuestring=%s
\n
"
,
roomId
->
valuestring
);
snprintf
(
pDevs
->
room
,
sizeof
(
pDevs
->
room
),
"%s"
,
roomId
->
valuestring
);
//printf("[%s][%d]\n",__FUNCTION__,__LINE__);
return
isFind
;
...
...
@@ -370,22 +384,31 @@ static int kk_vp_sync_device_multi_eps(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c
snprintf
(
pDevs
->
nodeId
,
sizeof
(
pDevs
->
nodeId
)
-
1
,
"%d"
,
nodeId
);
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
);
}
else
{
if
(
is_ac_gw_pid
(
atoi
(
pDevs
->
pid
))
!=
0
){
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
"12008"
);
}
else
{
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
"1"
);
}
}
printf
(
"pDevs->mac=%s,pDevs->ch=%s,pDevs->nodeId=%s
\n
"
,
pDevs
->
mac
,
pDevs
->
ch
,
pDevs
->
nodeId
);
if
(
kk_vp_get_device_info
(
rooms
,
pDevs
)
!=
0
){
if
((
zbDevObj
=
zigbee_devices_item_build
(
pDevs
))
!=
NULL
){
if
(
kk_vp_get_device_info
(
rooms
,
pDevs
,
1
)
!=
0
){
if
(
node_id_check
(
zbDevsAry
,
pDevs
->
nodeId
)
==
0
){
if
((
zbDevObj
=
zigbee_devices_item_build
(
pDevs
))
!=
NULL
){
cJSON_AddItemToArray
(
zbDevsAry
,
zbDevObj
);
isFind
=
1
;
}
}
}
}
free
(
pDevs
);
//printf("[%s][%d]\n",__FUNCTION__,__LINE__);
...
...
@@ -438,12 +461,16 @@ 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
){
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
node
->
opearteType
);
}
else
{
if
(
is_ac_gw_pid
(
atoi
(
pDevs
->
pid
))
!=
0
){
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
"12008"
);
}
else
{
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
"1"
);
}
}
if
(
kk_vp_get_device_info
(
rooms
,
pDevs
)
!=
0
){
if
(
kk_vp_get_device_info
(
rooms
,
pDevs
,
0
)
!=
0
){
//printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if
((
zbDevObj
=
zigbee_devices_item_build
(
pDevs
))
!=
NULL
){
cJSON_AddItemToArray
(
zbDevsAry
,
zbDevObj
);
...
...
@@ -459,9 +486,92 @@ static int kk_vp_sync_device_single_ep(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c
}
#define VP_AC_GW_MAX_DEVICE_NUMBER 5
#define VP_AC_GW_INDOOR_MAX_DEVICE_NUMBER 16
static
const
int
ac_gw_pid
[]
=
{
3062
};
typedef
struct
{
int
insert
;
char
mac
[
17
];
}
AC_GW_TABLE_S
;
static
AC_GW_TABLE_S
ac_gw_mac
[
VP_AC_GW_MAX_DEVICE_NUMBER
];
static
void
ac_gw_table_init
(
void
)
{
memset
(
ac_gw_mac
,
0
,
sizeof
(
ac_gw_mac
));
}
static
int
ac_gw_table_insert
(
const
char
*
mac
)
{
int
i
;
for
(
i
=
0
;
i
<
VP_AC_GW_MAX_DEVICE_NUMBER
;
i
++
){
if
(
ac_gw_mac
[
i
].
insert
==
0
){
snprintf
(
ac_gw_mac
[
i
].
mac
,
17
,
"%s"
,
mac
);
ac_gw_mac
[
i
].
insert
=
1
;
debug_log
(
LOG_DEBUG_LEVEL
,
"[insert suc] index=%d,mac=%s
\n
"
,
i
,
ac_gw_mac
[
i
].
mac
);
return
0
;
}
}
debug_log
(
LOG_DEBUG_LEVEL
,
"[insert fail] no space!mac=%s
\n
"
,
ac_gw_mac
[
i
].
mac
);
return
-
1
;
}
static
int
ac_gw_table_find
(
const
char
*
mac
)
{
int
i
;
if
(
mac
==
NULL
){
return
0
;
}
for
(
i
=
0
;
i
<
VP_AC_GW_MAX_DEVICE_NUMBER
;
i
++
){
if
(
ac_gw_mac
[
i
].
insert
!=
0
){
if
(
!
strcmp
(
mac
,
ac_gw_mac
[
i
].
mac
)){
return
1
;
}
}
}
return
0
;
}
static
int
ac_gw_table_handle
(
cJSON
*
productCode
,
cJSON
*
mac
)
{
int
i
;
int
pid
=
0
;
if
(
productCode
==
NULL
||
mac
==
NULL
||
productCode
->
type
!=
cJSON_String
||
mac
->
type
!=
cJSON_String
){
return
0
;
}
pid
=
atoi
(
productCode
->
valuestring
);
for
(
i
=
0
;
i
<
sizeof
(
ac_gw_pid
)
/
sizeof
(
int
);
i
++
){
if
(
pid
==
ac_gw_pid
[
i
]){
ac_gw_table_insert
(
mac
->
valuestring
);
return
1
;
}
}
return
0
;
}
int
is_ac_gw_pid
(
int
pid
)
{
int
i
;
for
(
i
=
0
;
i
<
sizeof
(
ac_gw_pid
)
/
sizeof
(
int
);
i
++
){
if
(
pid
==
ac_gw_pid
[
i
]){
return
1
;
}
}
return
0
;
}
static
_OUT
cJSON
*
kk_vp_sync_device
(
_IN
cJSON
*
data
)
{
int
i
,
j
;
int
isAcGw
=
0
;
cJSON
*
zbDevsAry
=
NULL
;
...
...
@@ -477,6 +587,9 @@ static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data)
cJSON
*
properties
=
NULL
;
cJSON
*
eps
=
NULL
;
cJSON
*
productCode
=
NULL
;
cJSON
*
mac
=
NULL
;
if
((
zbDevsAry
=
cJSON_CreateArray
())
==
NULL
){
printf
(
"[cJSON_CreateArray err]zbDevsAry...
\n
"
);
...
...
@@ -511,12 +624,31 @@ static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data)
for
(
j
=
0
;
j
<
subDevAryNum
;
j
++
){
if
((
dev
=
cJSON_GetArrayItem
(
subDevAry
,
j
))
==
NULL
||
dev
->
type
!=
cJSON_Object
){
printf
(
"[prase fail]dev...
\n
"
);
continue
;
}
productCode
=
cJSON_GetObjectItem
(
dev
,
"productCode"
);
mac
=
cJSON_GetObjectItem
(
dev
,
"mac"
);
pthread_mutex_lock
(
mutex
);
isAcGw
=
ac_gw_table_handle
(
productCode
,
mac
);
pthread_mutex_unlock
(
mutex
);
if
(
isAcGw
!=
0
){
roomsAry
=
cJSON_GetObjectItem
(
data
,
ROOMS_STR
);
if
(
roomsAry
==
NULL
||
roomsAry
->
type
!=
cJSON_Array
){
printf
(
"[prase fail]roomsAry...
\n
"
);
continue
;
}
debug_log
(
LOG_CRITICAL_LEVEL
,
"~~~~~~~~~~~~~~~~~~~
\n
"
);
kk_vp_sync_device_single_ep
(
zbDevsAry
,
dev
,
roomsAry
);
}
else
{
if
((
properties
=
cJSON_GetObjectItem
(
dev
,
"properties"
))
==
NULL
||
properties
->
type
!=
cJSON_Object
){
printf
(
"[prase fail]properties...
\n
"
);
...
...
@@ -525,6 +657,8 @@ static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data)
eps
=
cJSON_GetObjectItem
(
properties
,
"eps"
);
roomsAry
=
cJSON_GetObjectItem
(
data
,
ROOMS_STR
);
if
(
roomsAry
==
NULL
||
roomsAry
->
type
!=
cJSON_Array
){
printf
(
"[prase fail]roomsAry...
\n
"
);
...
...
@@ -532,12 +666,15 @@ static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data)
}
if
(
eps
==
NULL
){
//printf("[%s][%d]
\n",__FUNCTION__,__LINE__);
printf
(
"[%s][%d]---------------->
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_vp_sync_device_single_ep
(
zbDevsAry
,
dev
,
roomsAry
);
}
else
if
(
eps
->
type
==
cJSON_Array
){
//printf("[%s][%d]
\n",__FUNCTION__,__LINE__);
printf
(
"[%s][%d]---------------->
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_vp_sync_device_multi_eps
(
zbDevsAry
,
dev
,
roomsAry
,
eps
);
}
}
}
}
//printf("[%s][%d]\n",__FUNCTION__,__LINE__);
...
...
@@ -598,9 +735,110 @@ static _OUT cJSON *kk_vp_sync_gws(_IN cJSON *data)
static
_OUT
cJSON
*
kk_vp_sync_ac_indoors
(
_IN
cJSON
*
data
)
{
//todo:
cJSON
*
roomsAry
=
NULL
;
cJSON
*
roomObj
=
NULL
;
cJSON
*
roomId
=
NULL
,
*
room_name
=
NULL
;
cJSON
*
devsAry
=
NULL
,
*
devObj
=
NULL
;
cJSON
*
dev_name
=
NULL
,
*
epNum
=
NULL
,
*
deviceCode
=
NULL
;
VP_AC_INDOOR_ITEM
*
indoorList
=
NULL
;
VP_AC_INDOOR_ITEM
*
pIndoorItem
=
NULL
;
int
i
,
j
,
roomNum
=
0
,
devNum
=
0
;
int
node
;
int
max_indoor_size
=
VP_AC_GW_MAX_DEVICE_NUMBER
*
VP_AC_GW_INDOOR_MAX_DEVICE_NUMBER
;
int
indoor_num
=
0
;
if
((
roomsAry
=
cJSON_GetObjectItem
(
data
,
ROOMS_STR
))
==
NULL
||
roomsAry
->
type
!=
cJSON_Array
){
return
ac_indoors_ary_build
(
0
,
NULL
);
}
if
((
roomNum
=
cJSON_GetArraySize
(
roomsAry
))
==
0
){
return
ac_indoors_ary_build
(
0
,
NULL
);
}
indoorList
=
(
VP_AC_INDOOR_ITEM
*
)
malloc
(
sizeof
(
VP_AC_INDOOR_ITEM
)
*
VP_AC_GW_MAX_DEVICE_NUMBER
*
VP_AC_GW_INDOOR_MAX_DEVICE_NUMBER
);
memset
(
indoorList
,
0
,
sizeof
(
VP_AC_INDOOR_ITEM
)
*
VP_AC_GW_MAX_DEVICE_NUMBER
*
VP_AC_GW_INDOOR_MAX_DEVICE_NUMBER
);
pIndoorItem
=
indoorList
;
for
(
i
=
0
;
i
<
roomNum
;
i
++
){
if
((
roomObj
=
cJSON_GetArrayItem
(
roomsAry
,
i
))
==
NULL
||
roomObj
->
type
!=
cJSON_Object
){
continue
;
}
roomId
=
cJSON_GetObjectItem
(
roomObj
,
ROOMS_ID_STR
);
room_name
=
cJSON_GetObjectItem
(
roomObj
,
NAME_STR
);
if
(
roomId
==
NULL
||
roomId
->
type
!=
cJSON_String
||
room_name
==
NULL
||
room_name
->
type
!=
cJSON_String
){
continue
;
}
if
((
devsAry
=
cJSON_GetObjectItem
(
roomObj
,
DEVICES_STR
))
==
NULL
&&
devsAry
->
type
!=
cJSON_Array
){
continue
;
}
if
((
devNum
=
cJSON_GetArraySize
(
devsAry
))
==
0
){
continue
;
}
for
(
j
=
0
;
j
<
devNum
;
j
++
){
devObj
=
cJSON_GetArrayItem
(
devsAry
,
j
);
if
((
deviceCode
=
cJSON_GetObjectItem
(
devObj
,
"deviceCode"
))
==
NULL
||
deviceCode
->
type
!=
cJSON_String
){
continue
;
}
pthread_mutex_lock
(
mutex
);
if
(
ac_gw_table_find
(
deviceCode
->
valuestring
)
!=
0
){
pthread_mutex_unlock
(
mutex
);
dev_name
=
cJSON_GetObjectItem
(
devObj
,
NAME_STR
);
epNum
=
cJSON_GetObjectItem
(
devObj
,
"epNum"
);
if
(
dev_name
->
type
!=
cJSON_String
||
epNum
->
type
!=
cJSON_String
||
!
strcmp
(
epNum
->
valuestring
,
"1"
)){
continue
;
}
debug_log
(
LOG_DEBUG_LEVEL
,
"deviceCode=%s,epNum=%s,dev_name=%s"
,
deviceCode
->
valuestring
,
epNum
->
valuestring
,
dev_name
->
valuestring
);
pIndoorItem
->
online
=
1
;
node
=
kk_lan_db_node_get
(
deviceCode
->
valuestring
,
1
);
snprintf
(
pIndoorItem
->
ac_gw_nodeId
,
sizeof
(
pIndoorItem
->
ac_gw_nodeId
),
"%d"
,
node
);
node
=
kk_lan_db_node_get
(
deviceCode
->
valuestring
,
atoi
(
epNum
->
valuestring
));
snprintf
(
pIndoorItem
->
nodeId
,
sizeof
(
pIndoorItem
->
nodeId
),
"%d"
,
node
);
snprintf
(
pIndoorItem
->
addr
,
sizeof
(
pIndoorItem
->
addr
),
"%s"
,
epNum
->
valuestring
);
snprintf
(
pIndoorItem
->
operateType
,
sizeof
(
pIndoorItem
->
operateType
),
"%s"
,
"-5"
);
snprintf
(
pIndoorItem
->
name
,
sizeof
(
pIndoorItem
->
name
),
"%s"
,
dev_name
->
valuestring
);
snprintf
(
pIndoorItem
->
room
,
sizeof
(
pIndoorItem
->
room
),
"%s"
,
roomId
->
valuestring
);
indoor_num
+=
1
;
++
pIndoorItem
;
}
pthread_mutex_unlock
(
mutex
);
}
}
roomsAry
=
ac_indoors_ary_build
(
indoor_num
,
indoorList
);
free
(
indoorList
);
return
roomsAry
;
}
//保留
static
_OUT
cJSON
*
infrared_codelib_info_ary_build
(
_IN
cJSON
*
data
)
{
...
...
@@ -661,6 +899,54 @@ _OUT cJSON * kk_voice_panel_cfg_build(_IN VP_CFG_JSON *arg,int ver)
static
_OUT
int
node_id_check
(
_IN
cJSON
*
zbDevsAry
,
_IN
const
char
*
id
)
{
int
itemNum
;
int
chansItemNum
;
int
i
,
j
;
cJSON
*
itemObj
=
NULL
;
cJSON
*
chans
=
NULL
;
cJSON
*
chansItem
=
NULL
;
cJSON
*
idObj
=
NULL
;
if
(
zbDevsAry
==
NULL
||
zbDevsAry
->
type
!=
cJSON_Array
){
return
0
;
}
itemNum
=
cJSON_GetArraySize
(
zbDevsAry
);
for
(
i
=
0
;
i
<
itemNum
;
i
++
){
if
((
itemObj
=
cJSON_GetArrayItem
(
zbDevsAry
,
i
))
==
NULL
||
itemObj
->
type
!=
cJSON_Object
){
continue
;
}
if
((
chans
=
cJSON_GetObjectItem
(
itemObj
,
"chans"
))
==
NULL
||
chans
->
type
!=
cJSON_Array
){
continue
;
}
chansItemNum
=
cJSON_GetArraySize
(
chans
);
for
(
j
=
0
;
j
<
chansItemNum
;
j
++
){
if
((
chansItem
=
cJSON_GetArrayItem
(
chans
,
j
))
==
NULL
||
chansItem
->
type
!=
cJSON_Object
){
continue
;
}
if
((
idObj
=
cJSON_GetObjectItem
(
chansItem
,
"id"
))
==
NULL
||
idObj
->
type
!=
cJSON_String
){
continue
;
}
if
(
!
strcmp
(
id
,
idObj
->
valuestring
)){
return
1
;
}
}
}
return
0
;
}
...
...
@@ -924,6 +1210,14 @@ _OUT int kk_vp_syncinfo(_IN cJSON *payload,_IN int ver,_OUT cJSON **root)
return
-
1
;
}
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
pthread_mutex_lock
(
mutex
);
ac_gw_table_init
();
pthread_mutex_unlock
(
mutex
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
json
.
controller_buttons_config
=
infrared_codelib_info_ary_build
(
data
);
json
.
infrared_codelib_info
=
infrared_codelib_info_ary_build
(
data
);
...
...
application/klansdk/kk_voice_panel_cfg.h
View file @
f49071b9
...
...
@@ -34,12 +34,12 @@ typedef struct{
typedef
struct
{
char
*
ac_gw_nodeId
;
char
*
addr
;
char
*
nodeId
;
char
*
name
;
char
*
operateType
;
char
*
room
;
char
ac_gw_nodeId
[
8
]
;
char
addr
[
8
]
;
char
nodeId
[
8
]
;
char
name
[
32
]
;
char
operateType
[
8
]
;
char
room
[
32
]
;
int
online
;
}
VP_AC_INDOOR_ITEM
;
...
...
@@ -64,7 +64,9 @@ typedef struct{
int
kk_vp_cfg_init
(
void
);
void
kk_vp_ac_mutex_init
(
void
);
int
is_ac_gw_pid
(
int
pid
);
_OUT
int
kk_vp_syncinfo
(
_IN
cJSON
*
payload
,
_IN
int
ver
,
_OUT
cJSON
**
root
);
...
...
application/klansdk/kk_voice_panel_handle.c
View file @
f49071b9
...
...
@@ -9,6 +9,8 @@
#include "kk_voice_panel_handle.h"
#include "uart_proto.h"
#include "kk_lan_vp_ctrl.h"
#include "Serial.h"
#include "kk_oldccu_msg.h"
#define MK_VERSION(x) ((*x<<24) | (*(x+1)<<16) | (*(x+2)<<8) | *(x+3))
...
...
@@ -40,6 +42,8 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data);
static
void
kk_vp_config_file_update_stop_handle
(
pro_data_t
*
pro_data
);
static
void
kk_vp_config_file_info_query_handle
(
pro_data_t
*
pro_data
);
static
void
kk_vp_config_file_update_status_handle
(
pro_data_t
*
pro_data
);
static
void
kk_vp_voice_control_handle
(
pro_data_t
*
pro_data
);
static
VP_OPCODE_HANDLE
vp_opcode_table
[]
=
{
...
...
@@ -53,7 +57,8 @@ static VP_OPCODE_HANDLE vp_opcode_table[] = {
{
OPCODE_CONFIG_DATA_REQUEST
,
kk_vp_config_file_update_data_req_handle
},
{
OPCODE_CONFIG_FILE_UPDATE_STOP
,
kk_vp_config_file_update_stop_handle
},
{
OPCODE_CONFIG_FILE_INFO_GET
,
kk_vp_config_file_info_query_handle
},
{
OPCODE_CONFIG_FILE_UPDATE_STATUS
,
kk_vp_config_file_update_status_handle
}
{
OPCODE_CONFIG_FILE_UPDATE_STATUS
,
kk_vp_config_file_update_status_handle
},
{
OPCODE_VOICE_CONTROL_NOTIFY
,
kk_vp_voice_control_handle
}
};
...
...
@@ -118,7 +123,7 @@ uint32_t CreateCrc32(const uint8_t* s, uint32_t len) {
typedef
struct
typedef
struct
VP_SCENE_MAP
{
int
raw_id
;
uint16_t
map_id
;
...
...
@@ -172,8 +177,7 @@ int vp_scene_id_item_add(int scene_id)
pScene
->
raw_id
=
scene_id
;
pScene
->
map_id
=
vp_map_id
++
;
printf
(
"[vp scene map]%d->%d
\n
"
,
pScene
->
raw_id
,
pScene
->
map_id
);
_debug_log
(
LOG_NORMAL_LEVEL
,
"[vp scene map]%d->%d
\n
"
,
pScene
->
raw_id
,
pScene
->
map_id
);
if
(
vp_scene_map
==
NULL
){
vp_scene_map
=
pScene
;
...
...
@@ -195,7 +199,8 @@ int vp_scene_id_item_load(int scene_id,uint16_t map_id)
pScene
->
raw_id
=
scene_id
;
pScene
->
map_id
=
map_id
;
printf
(
"[vp scene map load]%d->%d
\n
"
,
pScene
->
raw_id
,
pScene
->
map_id
);
_debug_log
(
LOG_NORMAL_LEVEL
,
"[vp scene map load]%d->%d
\n
"
,
pScene
->
raw_id
,
pScene
->
map_id
);
if
(
vp_scene_map
==
NULL
){
...
...
@@ -272,7 +277,8 @@ int vp_scene_id_map_save(void)
cJSON
*
json
=
vp_scene_id_map_file_build
();
pStr
=
cJSON_Print
(
json
);
printf
(
"[%s][%d][vp scene id file]%s
\n
"
,
__FUNCTION__
,
__LINE__
,
pStr
);
debug_log
(
LOG_NORMAL_LEVEL
,
"[vp scene id file]%s
\n
"
,
pStr
);
cJSON_Minify
(
pStr
);
length
=
strlen
(
pStr
);
...
...
@@ -310,15 +316,14 @@ int vp_scene_id_map_load(void)
fp
=
fopen
(
VP_SCENE_ID_FILE
,
"r"
);
if
(
fp
==
NULL
){
printf
(
"open err.
\n
"
);
return
;
debug_log
(
LOG_WARNING_LEVEL
,
"[%s]fopen err!
\n
"
,
VP_SCENE_ID_FILE
);
return
-
1
;
}
printf
(
"vp_scene_id_map_load
\n
"
);
fseek
(
fp
,
0
,
SEEK_END
);
size
=
ftell
(
fp
);
printf
(
"size=%d
\n
"
,
size
);
fseek
(
fp
,
0
,
SEEK_SET
);
...
...
@@ -378,12 +383,12 @@ void vp_send_data_build(uint16_t opCode,uint8_t len,uint8_t *data)
data_len
=
proto_frame_to_uart
(
&
pro_data
,
data_buf
);
printf
(
"
\n
*********************************
\n
"
);
printf
(
"[send]
len=%d
\n
"
,
data_len
);
_debug_log
(
LOG_INFO_LEVEL
,
"
\n
[LAN->VP]
len=%d
\n
"
,
data_len
);
for
(
int
i
=
0
;
i
<
data_len
;
i
++
){
printf
(
"%02X "
,
data_buf
[
i
]);
_debug_log
(
LOG_INFO_LEVEL
,
"%02X "
,
data_buf
[
i
]);
}
printf
(
"
\n
"
);
_debug_log
(
LOG_INFO_LEVEL
,
"
\n
\n
"
);
eSerial_WriteBuffer
(
data_buf
,
data_len
);
}
...
...
@@ -408,12 +413,12 @@ 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
);
printf
(
"
\n
*********************************
\n
"
);
printf
(
"[reply]
len=%d
\n
"
,
data_len
);
_debug_log
(
LOG_INFO_LEVEL
,
"
\n
[LAN->VP]
len=%d
\n
"
,
data_len
);
for
(
int
i
=
0
;
i
<
data_len
;
i
++
){
printf
(
"%02X "
,
data_buf
[
i
]);
_debug_log
(
LOG_INFO_LEVEL
,
"%02X "
,
data_buf
[
i
]);
}
printf
(
"
\n\n
"
);
_debug_log
(
LOG_INFO_LEVEL
,
"
\n\n
"
);
eSerial_WriteBuffer
(
data_buf
,
data_len
);
}
...
...
@@ -451,7 +456,7 @@ int _vp_get_cfg_file_size(void)
fp
=
fopen
(
VP_CONFIG_FILE_TAR_GZ
,
"r"
);
if
(
fp
==
NULL
){
perror
(
"open err"
);
debug_log
(
LOG_WARNING_LEVEL
,
"[%s]fopen err!
\n
"
,
VP_CONFIG_FILE_TAR_GZ
);
return
0
;
}
fseek
(
fp
,
0
,
SEEK_END
);
...
...
@@ -475,13 +480,13 @@ int _vp_get_cfg_file_crc32(void)
fp
=
fopen
(
VP_CONFIG_FILE
,
"r"
);
if
(
fp
==
NULL
){
debug_log
(
LOG_WARNING_LEVEL
,
"[%s]fopen err!
\n
"
,
VP_CONFIG_FILE
);
printf
(
"open err.
\n
"
);
return
;
return
-
1
;
}
fseek
(
fp
,
0
,
SEEK_END
);
size
=
ftell
(
fp
);
printf
(
"size=%d
\n
"
,
size
);
fseek
(
fp
,
0
,
SEEK_SET
);
...
...
@@ -500,11 +505,11 @@ int _vp_get_cfg_file_crc32(void)
printf
(
"[remain]r_len=%d,remain=%d
\n
"
,
r_len
,
remain
);
}
else
{
remain
=
0
;
printf
(
"[remain] 0
\n
"
,
remain
);
pRead
[
size
]
=
'\0'
;
}
}
crc32
=
CreateCrc32
(
buff
,
size
);
crc32
=
CreateCrc32
(
(
uint8_t
*
)
buff
,
size
);
printf
(
"crc32=%x
\n
"
,
crc32
);
free
(
buff
);
...
...
@@ -517,7 +522,7 @@ static void vp_open_fd()
{
update_fp
=
fopen
(
VP_CONFIG_FILE_TAR_GZ
,
"rb"
);
if
(
update_fp
==
NULL
){
printf
(
"update_fp open err.
\n
"
);
debug_log
(
LOG_WARNING_LEVEL
,
"[%s]fopen err!
\n
"
,
VP_CONFIG_FILE_TAR_GZ
);
}
}
static
void
vp_close_fd
()
...
...
@@ -586,7 +591,7 @@ static void kk_vp_get_8009_snapshoot_handle(pro_data_t *pro_data)
kk_vp_set_state_machine
(
SET_8009_SYSTEM
);
kk_vp_set_config_file_version
(
f_ver
);
VP_RECV_PRINT
(
"
\n
[VP->LAN]
sv=%06X,hv=%06X,%d-%d-%d %d:%d:%d,volume=%d,f_ver=%08X
\n
"
,
_debug_log
(
LOG_INFO_LEVEL
,
"
\n
sv=%06X,hv=%06X,%d-%d-%d %d:%d:%d,volume=%d,f_ver=%08X
\n
"
,
sv
,
hv
,
year
,
month
,
day
,
hour
,
minute
,
second
,
volume
,
f_ver
);
}
}
...
...
@@ -613,7 +618,7 @@ static void kk_vp_get_snapshoot_handle(pro_data_t *pro_data)
data
[
9
]
=
(
nodeId
>>
8
)
&
0xff
;
data
[
10
]
=
nodeId
&
0xff
;
data
[
11
]
=
netStatus
;
VP_RECV_PRINT
(
"
\n
[vp snapshoot get]
\n
"
);
vp_reply_data_build
(
pro_data
->
seq
,
pro_data
->
ch
,
OPCODE_SNAPSHOOT
,
sizeof
(
data
),
data
);
}
...
...
@@ -637,18 +642,17 @@ static void kk_vp_scene_trigger_handle(pro_data_t *pro_data)
sceneNum
=
pro_data
->
arg
[
0
];
sceneAry
=
malloc
(
sizeof
(
uint16_t
)
*
sceneNum
);
VP_RECV_PRINT
(
"[VP]execute scene!"
,
sceneNum
);
printf
(
"sceneNum=%d
\n
"
,
sceneNum
);
debug_log
(
LOG_FOCUS_LEVEL
,
"execute scene
\n
"
);
_debug_log
(
LOG_FOCUS_LEVEL
,
"sceneNum=%d
\n
"
,
sceneNum
);
for
(
i
=
0
;
i
<
sceneNum
;
i
++
){
sceneAry
[
i
]
=
MK_UINT16
(
&
pro_data
->
arg
[
1
+
2
*
i
]);
printf
(
"scene
%d:%d
\n
"
,
i
,
sceneAry
[
i
]);
_debug_log
(
LOG_INFO_LEVEL
,
"scene-
%d:%d
\n
"
,
i
,
sceneAry
[
i
]);
}
VP_RECV_PRINT
(
"
\n
[vp call scene]
\n
"
);
for
(
i
=
0
;
i
<
sceneNum
;
i
++
){
if
((
sceneId
=
vp_scene_id_get_scene_id
(
sceneAry
[
i
]))
!=-
1
){
printf
(
"1...
\n
"
);
char
buff
[
32
]
=
{
0
};
memset
(
buff
,
0
,
32
);
snprintf
(
buff
,
32
,
"%d"
,
sceneId
);
...
...
@@ -659,13 +663,13 @@ static void kk_vp_scene_trigger_handle(pro_data_t *pro_data)
off
+=
1
;
}
}
printf
(
"2...
\n
"
);
if
(
off
!=
0
){
data
[
0
]
=
0x00
;
}
else
{
data
[
0
]
=
1
;
}
printf
(
"3...
\n
"
);
vp_reply_data_build
(
pro_data
->
seq
,
pro_data
->
ch
,
OPCODE_SCENE_ID_NOTIFY
,
1
+
2
*
off
+
1
,
data
);
free
(
sceneAry
);
}
...
...
@@ -694,7 +698,7 @@ static void kk_vp_set_8009_system_time_handle(pro_data_t *pro_data)
sec
=
pro_data
->
arg
[
7
];
kk_vp_set_state_machine
(
GET_8009_CONFIG_FILE_INFO
);
VP_RECV_PRINT
(
"
\n
[VP->LAN]
%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
);
}
static
void
kk_vp_get_system_time_handle
(
pro_data_t
*
pro_data
)
...
...
@@ -720,42 +724,43 @@ static void kk_vp_get_system_time_handle(pro_data_t *pro_data)
data
[
6
]
=
c
->
tm_min
;
data
[
7
]
=
c
->
tm_sec
;
VP_RECV_PRINT
(
"
\n
[vp system time get reply]
%d-%d-%d %d:%d:%d
\n
"
,(
c
->
tm_year
+
1900
),(
c
->
tm_mon
+
1
),
c
->
tm_mday
,
c
->
tm_hour
,
c
->
tm_min
,
c
->
tm_sec
);
_debug_log
(
LOG_INFO_LEVEL
,
"
\n
%d-%d-%d %d:%d:%d
\n
"
,(
c
->
tm_year
+
1900
),(
c
->
tm_mon
+
1
),
c
->
tm_mday
,
c
->
tm_hour
,
c
->
tm_min
,
c
->
tm_sec
);
vp_reply_data_build
(
pro_data
->
seq
,
pro_data
->
ch
,
OPCODE_SYSTEM_TIME_GET
,
sizeof
(
data
),
data
);
}
static
void
kk_vp_action_handle
(
pro_data_t
*
pro_data
)
{
uint8_t
err
=
0
;
uint8_t
i
=
0
;
uint8_t
devNum
=
0
;
uint32_t
*
nodeIdAry
=
NULL
;
uint32_t
*
OperatorIdAry
=
NULL
;
uint8_t
skillType
;
VP_RECV_PRINT
(
"
\n\n
******************0x010B***********************
\n\n
"
);
_debug_log
(
LOG_FOCUS_LEVEL
,
"
\n\n
*****************VP CTRL*****************
\n
"
);
if
((
devNum
=
pro_data
->
arg
[
0
])
!=
0
){
nodeIdAry
=
malloc
(
sizeof
(
uint32_t
)
*
devNum
);
OperatorIdAry
=
malloc
(
sizeof
(
uint32_t
)
*
devNum
);
printf
(
"devNum=%d"
,
devNum
);
_debug_log
(
LOG_DEBUG_LEVEL
,
"devNum=%d"
,
devNum
);
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
];
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
];
VP_RECV_PRINT
(
"[Node Id %d] %08x
"
,
i
,
nodeIdAry
[
i
]);
VP_RECV_PRINT
(
"[Operator Id %d] %08x
"
,
i
,
OperatorIdAry
[
i
]);
_debug_log
(
LOG_DEBUG_LEVEL
,
"[Node Id %d] %08x
\n
"
,
i
,
nodeIdAry
[
i
]);
_debug_log
(
LOG_DEBUG_LEVEL
,
"[Operator Id %d] %08x
\n
"
,
i
,
OperatorIdAry
[
i
]);
}
skillType
=
pro_data
->
arg
[
1
+
8
*
i
];
VP_RECV_PRINT
(
"[skillType] %02x"
,
skillType
);
kk_lan_vp_control
(
devNum
,
nodeIdAry
,
&
pro_data
->
arg
[
1
+
8
*
i
]);
_debug_log
(
LOG_DEBUG_LEVEL
,
"[skillType] %02x
\n
"
,
skillType
);
_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
);
if
(
err
==
0
){
uint8_t
data
[
256
]
=
{
0
};
memset
(
data
,
0
,
sizeof
(
data
));
data
[
0
]
=
0x00
;
data
[
0
]
=
err
;
data
[
1
]
=
devNum
;
//todo:根据实际的执行
for
(
i
=
0
;
i
<
devNum
;
i
++
){
...
...
@@ -778,12 +783,11 @@ static void kk_vp_action_handle(pro_data_t *pro_data)
}
vp_reply_data_build
(
pro_data
->
seq
,
pro_data
->
ch
,
OPCODE_ACTION_NOTIFY
,
off
+
i
,
data
);
}
free
(
nodeIdAry
);
free
(
OperatorIdAry
);
}
//OPCODE_ACTION_NOTIFY
}
static
void
kk_vp_config_file_update_notify_handle
(
pro_data_t
*
pro_data
)
...
...
@@ -804,7 +808,7 @@ static void kk_vp_config_file_update_notify_handle(pro_data_t *pro_data)
kk_vp_config_file_info_check
(
f_ver
,
f_size
,
crc32
);
VP_RECV_PRINT
(
"
\n
[cfg file update notify ack]
File Version=%08x,File Size=%d,CRC32 Value=%08X
\n
"
,
_debug_log
(
LOG_DEBUG_LEVEL
,
"
File Version=%08x,File Size=%d,CRC32 Value=%08X
\n
"
,
f_ver
,
f_size
,
crc32
);
}
else
{
printf
(
"
\n
"
);
...
...
@@ -832,9 +836,9 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data)
offset
=
MK_UINT32
(
&
pro_data
->
arg
[
4
]);
req_size
=
MK_UINT16
(
&
pro_data
->
arg
[
8
]);
VP_RECV_PRINT
(
"
\n
[vp config file req]
f_ver=%d,offset=%d,req_size=%d
\n
"
,
f_ver
,
offset
,
req_size
);
_debug_log
(
LOG_DEBUG_LEVEL
,
"
\n
f_ver=%d,offset=%d,req_size=%d
\n
"
,
f_ver
,
offset
,
req_size
);
if
(
update_fp
==
NULL
){
printf
(
"[update_fp] NULL!
\n
"
);
_debug_log
(
LOG_ERROR_LEVEL
,
"[update_fp] NULL!
\n
"
);
err
=
1
;
}
/*
...
...
@@ -855,13 +859,13 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data)
data
[
len
++
]
=
req_size
&
0xff
;
pCrc
=
&
data
[
len
];
printf
(
"-------->=%d
\n
"
,
len
);
if
(
err
==
0
){
int
err
=
fseek
(
update_fp
,
offset
,
SEEK_SET
);
if
(
err
==
0
){
while
(
req_size
>
t_len
){
r_len
=
fread
(
&
data
[
len
],
1
,
req_size
,
update_fp
);
printf
(
"r_len=%d
\n
"
,
r_len
);
if
(
r_len
>=
0
){
t_len
+=
r_len
;
len
+=
r_len
;
...
...
@@ -870,7 +874,7 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data)
}
}
}
else
{
printf
(
"[fseek fail]offset=%d
\n
"
,
offset
);
debug_log
(
LOG_ERROR_LEVEL
,
"[fseek fail]offset=%d
\n
"
,
offset
);
}
}
...
...
@@ -879,7 +883,7 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data)
data
[
len
++
]
=
(
crc
>>
16
)
&
0xff
;
data
[
len
++
]
=
(
crc
>>
8
)
&
0xff
;
data
[
len
++
]
=
crc
&
0xff
;
printf
(
"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
);
usleep
(
100
*
1000
);
...
...
@@ -901,9 +905,9 @@ static void kk_vp_config_file_update_stop_handle(pro_data_t *pro_data)
return
;
}
ver
=
MK_VERSION
(
&
pro_data
->
arg
[
1
]);
VP_RECV_PRINT
(
"
\n
[vp config file update stop ack]
version=%d
\n
"
,
ver
);
_debug_log
(
LOG_DEBUG_LEVEL
,
"
\n
version=%d
\n
"
,
ver
);
}
else
{
printf
(
"err=%d
\n
"
,
ve
r
);
printf
(
"err=%d
\n
"
,
er
r
);
}
ver
=
(
pro_data
->
arg
[
0
]
<<
24
)
|
(
pro_data
->
arg
[
1
]
<<
16
)
|
(
pro_data
->
arg
[
2
]
<<
8
)
|
pro_data
->
arg
[
3
];
...
...
@@ -927,7 +931,7 @@ static void kk_vp_config_file_update_status_handle(pro_data_t *pro_data)
VP_RECV_PRINT
(
"
\n
[config file update status]
ver=%d,status=%d
\n
"
,
ver
,
status
);
_debug_log
(
LOG_DEBUG_LEVEL
,
"
\n
ver=%d,status=%d
\n
"
,
ver
,
status
);
uint8_t
data
[
6
]
=
{
0
};
...
...
@@ -947,6 +951,42 @@ static void kk_vp_config_file_update_status_handle(pro_data_t *pro_data)
}
static
void
kk_vp_voice_control_notify
(
uint8_t
status
)
{
if
(
status
!=
1
&&
status
!=
2
){
return
;
}
cJSON
*
root
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
root
,
"node"
,
"*"
);
cJSON_AddStringToObject
(
root
,
"opcode"
,
"VOICE_CTRL"
);
if
(
status
==
1
){
_debug_log
(
LOG_DEBUG_LEVEL
,
"[VP]wake up.
\n\n
"
);
cJSON_AddStringToObject
(
root
,
"arg"
,
"ON"
);
}
else
if
(
status
==
2
){
_debug_log
(
LOG_DEBUG_LEVEL
,
"[VP]sleep.
\n\n
"
);
cJSON_AddStringToObject
(
root
,
"arg"
,
"OFF"
);
}
cJSON_AddStringToObject
(
root
,
"status"
,
"success"
);
send_msg_to_module
(
root
);
cJSON_Delete
(
root
);
}
static
void
kk_vp_voice_control_handle
(
pro_data_t
*
pro_data
)
{
if
(
pro_data
->
args_len
!=
1
)
{
return
;
}
debug_log
(
LOG_FOCUS_LEVEL
,
"[VP] voice contrl status =%d.
\n\n
"
,
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
)
{
uint8_t
err
;
...
...
@@ -965,11 +1005,9 @@ static void kk_vp_config_file_info_query_handle(pro_data_t *pro_data)
f_size
=
MK_UINT32
(
&
pro_data
->
arg
[
5
]);
crc32
=
MK_UINT32
(
&
pro_data
->
arg
[
9
]);
VP_RECV_PRINT
(
"[VP->LAN]
File Version=%08x,File Size=%08x,CRC32=%08x
\n
"
,
f_ver
,
f_size
,
crc32
);
_debug_log
(
LOG_DEBUG_LEVEL
,
"
File Version=%08x,File Size=%08x,CRC32=%08x
\n
"
,
f_ver
,
f_size
,
crc32
);
kk_vp_cfg_info_check
(
f_ver
,
f_size
,
crc32
);
}
else
{
printf
(
""
);
}
}
...
...
@@ -979,7 +1017,7 @@ static void kk_vp_config_file_info_query_handle(pro_data_t *pro_data)
void
kk_vp_get_8009_snapshoot
(
void
)
{
uint8_t
res
[
1
]
=
{
0
};
VP_SEND_PRINT
(
"[LAN->VP]
get snapshoot
\n
"
);
debug_log
(
LOG_DEBUG_LEVEL
,
"
get snapshoot
\n
"
);
vp_send_data_build
(
OPCODE_8009_SNAPSHOOT
,
sizeof
(
res
),
res
);
}
...
...
@@ -998,7 +1036,7 @@ void kk_vp_set_8009_system_time(void)
data
[
5
]
=
c
->
tm_min
;
data
[
6
]
=
c
->
tm_sec
;
VP_SEND_PRINT
(
"[LAN->VP]
set system (%d-%d-%d %d:%d:%d)
\n
"
,(
c
->
tm_year
+
1900
),(
c
->
tm_mon
+
1
),
c
->
tm_mday
,
c
->
tm_hour
,
c
->
tm_min
,
c
->
tm_sec
);
debug_log
(
LOG_DEBUG_LEVEL
,
"
set system (%d-%d-%d %d:%d:%d)
\n
"
,(
c
->
tm_year
+
1900
),(
c
->
tm_mon
+
1
),
c
->
tm_mday
,
c
->
tm_hour
,
c
->
tm_min
,
c
->
tm_sec
);
vp_send_data_build
(
OPCODE_SYSTEM_TIME_SET
,
sizeof
(
data
),
data
);
}
...
...
@@ -1033,7 +1071,8 @@ void kk_vp_config_file_update_start(uint32_t ver)
kk_vp_cfg_info_set
(
f_ver
,
f_size
,
crc32
);
VP_SEND_PRINT
(
"[cfg file update notify]File Version=%08x,File Size=%d,CRC32 Value=%08X
\n
"
,
debug_log
(
LOG_DEBUG_LEVEL
,
"[LAN->VP]config file update start,OPCODE=%04X
\n
"
,
OPCODE_CONFIG_FILE_UPDATE_NOTIFY
);
_debug_log
(
LOG_DEBUG_LEVEL
,
"File Version=%08x,File Size=%d,CRC32 Value=%08X
\n
"
,
f_ver
,
f_size
,
crc32
);
vp_send_data_build
(
OPCODE_CONFIG_FILE_UPDATE_NOTIFY
,
sizeof
(
data
),
data
);
...
...
@@ -1052,19 +1091,19 @@ void kk_vp_config_file_update_stop(uint32_t ver)
f_ver
[
2
]
=
(
ver
>>
8
)
&
0xff
;
f_ver
[
3
]
=
ver
&
0xff
;
VP_SEND_PRINT
(
"[vp config file update stop] version=%d
\n
"
,
ver
);
debug_log
(
LOG_DEBUG_LEVEL
,
"[LAN->VP]config file update stop,OPCODE=%04X
\n
"
,
OPCODE_CONFIG_FILE_UPDATE_STOP
);
vp_send_data_build
(
OPCODE_CONFIG_FILE_UPDATE_STOP
,
sizeof
(
f_ver
),
f_ver
);
}
void
kk_vp_get_config_file_info
(
void
)
{
uint8_t
res
[
1
]
=
{
0
};
VP_SEND_PRINT
(
"[config file info get]
\n
"
);
debug_log
(
LOG_DEBUG_LEVEL
,
"[LAN->VP]config file info get,OPCODE=%04X
\n
"
,
OPCODE_CONFIG_FILE_INFO_GET
);
vp_send_data_build
(
OPCODE_CONFIG_FILE_INFO_GET
,
sizeof
(
res
),
res
);
}
/////////////////////////////////////////////////////
int
kk_vp_opcode_handle
(
_IN
pro_data_t
*
pro_data
)
{
...
...
@@ -1079,13 +1118,13 @@ int kk_vp_opcode_handle(_IN pro_data_t *pro_data)
for
(
i
=
0
;
i
<
sizeof
(
vp_opcode_table
)
/
sizeof
(
VP_OPCODE_HANDLE
);
i
++
,
pFunc
++
){
if
(
pFunc
->
opcode
==
pro_data
->
opcode
){
if
(
pFunc
->
func
!=
NULL
){
printf
(
"[%s][%d][vp handle opcode]%04X
\n
"
,
__FUNCTION__
,
__LINE__
,
pro_data
->
opcode
);
debug_log
(
LOG_NORMAL_LEVEL
,
"[handle Opcode]%04X
\n
"
,
pro_data
->
opcode
);
pFunc
->
func
(
pro_data
);
return
1
;
}
}
}
printf
(
"[%s][%d][vp unknow opcode]%04X
\n
"
,
__FUNCTION__
,
__LINE__
,
pro_data
->
opcode
);
debug_log
(
LOG_WARNING_LEVEL
,
"[unknow Opcode]%04X
\n
"
,
pro_data
->
opcode
);
return
0
;
}
...
...
@@ -1110,6 +1149,7 @@ static int kk_vp_config_file_save(_IN cJSON *json)
pWrite
=
pStr
;
if
((
fp
=
fopen
(
VP_CONFIG_FILE
,
"w"
))
==
NULL
)
{
debug_log
(
LOG_WARNING_LEVEL
,
"[%s] fopen fail
\n
"
,
VP_CONFIG_FILE
);
return
0
;
}
...
...
@@ -1147,14 +1187,14 @@ static _OUT int kk_vp_config_file_update_check(void)
if
(
access
(
VP_CONFIG_FILE_MD5
,
F_OK
)
!=
0
){
memset
(
cmd
,
0
,
sizeof
(
cmd
));
snprintf
(
cmd
,
sizeof
(
cmd
),
md5_create
,
VP_CONFIG_FILE
,
VP_CONFIG_FILE_MD5
);
EXECUTE_CMD
(
cmd
);
debug_log
(
LOG_FOCUS_LEVEL
,
"%s
\n
"
,
cmd
);
system
(
cmd
);
updateFlag
=
1
;
}
else
{
memset
(
cmd
,
0
,
sizeof
(
cmd
));
snprintf
(
cmd
,
sizeof
(
cmd
),
md5_check
,
VP_CONFIG_FILE_MD5
);
EXECUTE_CMD
(
cmd
);
debug_log
(
LOG_FOCUS_LEVEL
,
"%s
\n
"
,
cmd
);
fp
=
popen
(
cmd
,
"r"
);
fread
(
buf
,
1
,
sizeof
(
buf
),
fp
);
...
...
@@ -1166,7 +1206,7 @@ static _OUT int kk_vp_config_file_update_check(void)
updateFlag
=
1
;
memset
(
cmd
,
0
,
sizeof
(
cmd
));
snprintf
(
cmd
,
sizeof
(
cmd
),
md5_create
,
VP_CONFIG_FILE
,
VP_CONFIG_FILE_MD5
);
EXECUTE_CMD
(
cmd
);
debug_log
(
LOG_FOCUS_LEVEL
,
"%s
\n
"
,
cmd
);
system
(
cmd
);
}
}
...
...
@@ -1174,7 +1214,7 @@ static _OUT int kk_vp_config_file_update_check(void)
if
(
updateFlag
!=
0
){
memset
(
cmd
,
0
,
sizeof
(
cmd
));
snprintf
(
cmd
,
sizeof
(
cmd
),
tar_cmd
,
VP_CONFIG_FILE_TAR_GZ
,
VP_CONFIG_FILE
);
EXECUTE_CMD
(
cmd
);
debug_log
(
LOG_FOCUS_LEVEL
,
"%s
\n
"
,
cmd
);
system
(
cmd
);
}
...
...
@@ -1186,14 +1226,17 @@ void kk_vp_syncinfo_handle(_IN cJSON *payload)
{
cJSON
*
root
=
NULL
;
int
err
=
0
;
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
if
((
err
=
kk_vp_syncinfo
(
payload
,
kk_vp_get_config_file_version
(),
&
root
))
!=
0
){
printf
(
"[%s][%d]SYNC fail,err=%d
\n
"
,
__FUNCTION__
,
__LINE__
,
err
);
}
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
if
(
kk_vp_config_file_save
(
root
)
!=
0
){
printf
(
"[%s][%d][vp config file] save.
\n
"
,
__FUNCTION__
,
__LINE__
);
}
debug_log
(
LOG_CRITICAL_LEVEL
,
"mark
\n
"
);
if
(
kk_vp_config_file_update_check
()
!=
0
){
printf
(
"[%s][%d][vp config file] update.
\n
"
,
__FUNCTION__
,
__LINE__
);
...
...
application/klansdk/kk_voice_panel_handle.h
View file @
f49071b9
...
...
@@ -5,12 +5,11 @@
#include "kk_lan_voice_panel.h"
#include "kk_voice_panel_cfg.h"
#define VP_VP_CONFIG_FILE_DIR "/etc/smarthome"
#define VP_CONFIG_FILE "/etc/smarthome/voice_data.json"
#define VP_CONFIG_FILE_MD5 "/data/kk/voice_data.MD5"
#define VP_CONFIG_FILE_TAR_GZ "/data/kk/voice_data.tar.gz"
#define OPCODE_8009_SNAPSHOOT 0x1000
#define OPCODE_SNAPSHOOT 0x1001
#define OPCODE_SCENE_ID_NOTIFY 0x1003
...
...
@@ -22,16 +21,7 @@
#define OPCODE_CONFIG_FILE_UPDATE_STOP 0x100E
#define OPCODE_CONFIG_FILE_INFO_GET 0x100F
#define OPCODE_CONFIG_FILE_UPDATE_STATUS 0x1010
#define EXECUTE_CMD(cmd) do {\
printf("\n[%s][%d]------------------execte cmd------------------\n",__FUNCTION__,__LINE__);\
printf("%s\n",cmd);\
}while(0)
#define VP_SEND_PRINT(format,...) printf("\n\033[33;32m"format"\033[0m\n",##__VA_ARGS__)
#define VP_RECV_PRINT(format,...) printf("\n\033[33;34m"format"\033[0m\n",##__VA_ARGS__)
#define OPCODE_VOICE_CONTROL_NOTIFY 0x1022
typedef
void
(
*
vp_handle_func
)(
pro_data_t
*
pro_data
);
typedef
struct
...
...
@@ -68,8 +58,13 @@ void kk_vp_get_8009_snapshoot(void);
void
kk_vp_syncinfo_handle
(
_IN
cJSON
*
payload
);
int
kk_vp_opcode_handle
(
_IN
pro_data_t
*
pro_data
);
int
kk_vp_get_config_file_version
(
void
);
void
vp_scene_id_map_deinit
(
void
);
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_map_save
(
void
);
...
...
application/klansdk/uart_proto.c
View file @
f49071b9
...
...
@@ -8,7 +8,7 @@
#include <unistd.h>
#include "Serial.h"
#include "main.h"
//#include "common.h"
...
...
@@ -18,7 +18,7 @@
//#include "net_handle.h"
#include "uart_proto.h"
#include "kk_lan_debug.h"
uart_data_t
g_uart_data
;
...
...
@@ -464,23 +464,23 @@ void dev_send_uart(uint8_t *data, uint16_t data_len)
static
void
uart_protocol_print
(
pro_data_t
*
pro_data
)
{
printf
(
"seq
%02X
\n
"
,
pro_data
->
seq
);
printf
(
"channel
%02X
\n
"
,
pro_data
->
ch
);
printf
(
"opcode
%04X
\n
"
,
pro_data
->
opcode
);
printf
(
"args_len:
%d
\n
"
,
pro_data
->
args_len
);
_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
,
"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
,
"args_len:
\t
%d
\n
"
,
pro_data
->
args_len
);
char
print_buf
[
512
]
=
{
0
};
int
i
=
0
;
snprintf
(
print_buf
,
sizeof
(
print_buf
),
"args:
"
);
snprintf
(
print_buf
,
sizeof
(
print_buf
),
"args:
\t\t
"
);
for
(
i
=
0
;
i
<
pro_data
->
args_len
;
i
++
)
{
snprintf
(
print_buf
+
strlen
(
print_buf
),
sizeof
(
print_buf
),
"%02X "
,
pro_data
->
arg
[
i
]);
}
printf
(
"%s
\n
"
,
print_buf
);
_debug_log
(
LOG_DEBUG_LEVEL
,
"%s
\n
\n
"
,
print_buf
);
}
...
...
@@ -875,7 +875,6 @@ extern void kk_vp_opcode_handle(pro_data_t *pro_data);
void
uart_frame_handle
()
{
GW_LOG_DBG
(
"uart_frame_handle
\n
"
);
uint8_t
*
data
=
g_uart_data
.
data
;
uint8_t
data_len
=
g_uart_data
.
data_len
;
pro_data_t
pro_data
;
...
...
midware/midware/dm/kk_sync_data.c
View file @
f49071b9
...
...
@@ -105,11 +105,11 @@ static cJSON * kk_get_room_devices(const char *roomId)
if
(
kk_check_multi_ep_num
(
deviceCode
)){
cJSON_AddStringToObject
(
dev
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
}
else
if
(
strcmp
(
node
->
productType
,
KK_DM_AIR_GATEWAY_TYPE
)
==
0
){
if
(
atoi
(
epNum
)
==
1
){
//epNum为1的是空调网关
continue
;
}
else
{
//
if(atoi(epNum) == 1){//epNum为1的是空调网关
//
continue;
//
}else{
cJSON_AddStringToObject
(
dev
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
}
//
}
}
cJSON_AddStringToObject
(
dev
,
KK_SYNC_DEVICECODE_STR
,
deviceCode
);
//cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
...
...
@@ -761,6 +761,7 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
char
*
propertyName
=
NULL
;
char
*
propertyValue
=
NULL
;
char
room_name
[
64
]
=
{
0
};
cJSON
*
prtyObj
=
NULL
;
char
*
type
=
NULL
;
int
delay
=
0
,
epNum
=
0
,
scene_id
=
0
;
...
...
@@ -807,7 +808,13 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
//cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_TYPE_STR
,
type
);
if
((
prtyObj
=
cJSON_Parse
(
propertyValue
))
==
NULL
){
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYVALUE_STR
,
propertyValue
);
}
else
{
cJSON_AddItemToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYVALUE_STR
,
prtyObj
);
}
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_ROOMID_STR
,
room_name
);
cJSON_AddItemToArray
(
actionArray
,
actionItem
);
}
...
...
midware/midware/scene/kk_scene_db.c
View file @
f49071b9
...
...
@@ -640,6 +640,9 @@ int kk_scene_insert_scene_action(const char* type,const char* deviceCode,int epN
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
printf
(
"----->kk_scene_insert_scene_action
\n
"
);
printf
(
"propertyValue----->%s
\n
"
,
propertyValue
);
const
char
*
insertCmd
=
"insert into SceneActionInfo (type, deviceCode,epNum,propertyName,propertyValue,delay,sceneId,gwdeviceCode) \
values ('%s','%s','%d','%s','%s','%d','%s','%s');"
;
...
...
midware/midware/scene/kk_scene_handle.c
View file @
f49071b9
...
...
@@ -510,6 +510,7 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
cJSON
*
array
;
cJSON
*
info
;
char
*
out
;
cJSON
*
prtyObj
=
NULL
;
kk_scene_action_t
*
ptr
=
p_kk_scene_action
;
kk_scene_action_info_ex_t
*
ptmp
=
NULL
;
if
(
ptr
==
NULL
){
...
...
@@ -524,7 +525,13 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
info
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
info
,
MSG_DEVICE_CODE_STR
,
ptr
->
actionInfo
->
info
.
deviceCode
);
cJSON_AddStringToObject
(
info
,
MSG_SCENE_PROPERTYNAME
,
ptr
->
actionInfo
->
info
.
propertyName
);
if
((
prtyObj
=
cJSON_Parse
(
ptr
->
actionInfo
->
info
.
propertyValue
))
==
NULL
){
cJSON_AddStringToObject
(
info
,
MSG_SCENE_PROPERTYVALUE
,
ptr
->
actionInfo
->
info
.
propertyValue
);
}
else
{
cJSON_AddItemToObject
(
info
,
MSG_SCENE_PROPERTYVALUE
,
prtyObj
);
}
cJSON_AddNumberToObject
(
info
,
MSG_SCENE_DELAY
,
ptr
->
actionInfo
->
info
.
delay
);
cJSON_AddNumberToObject
(
info
,
MSG_SCENE_EPNUM
,
ptr
->
actionInfo
->
info
.
epNum
);
cJSON_AddItemToArray
(
array
,
info
);
...
...
@@ -949,8 +956,20 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
delay
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_DELAY
);
if
(
delay
==
NULL
)
return
FAIL_RETURN
;
int
idelay
=
delay
->
valueint
;
if
(
propertyValue
->
type
==
cJSON_String
){
kk_subDev_set_action_by_productType
(
productType
->
valuestring
,
sceneId
,
propertyName
->
valuestring
,
propertyValue
->
valuestring
,
type
->
valuestring
,
idelay
);
}
else
{
printf
(
"1111
\r\n
"
);
char
*
str
=
cJSON_PrintUnformatted
(
propertyValue
);
printf
(
"222
\r\n
"
);
kk_subDev_set_action_by_productType
(
productType
->
valuestring
,
sceneId
,
propertyName
->
valuestring
,
str
,
type
->
valuestring
,
idelay
);
printf
(
"333
\r\n
"
);
free
(
str
);
printf
(
"4444
\r\n
"
);
}
}
else
{
memset
(
propertyValueStr
,
0x0
,
sizeof
(
propertyValueStr
));
...
...
@@ -989,8 +1008,20 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
kk_scene_action_detail_t
info
=
{
0
};
memcpy
(
info
.
deviceCode
,
node
->
deviceCode
,
strlen
(
node
->
deviceCode
));
memcpy
(
info
.
propertyValue
,
propertyValueStr
,
strlen
(
propertyValueStr
));
memcpy
(
info
.
propertyName
,
propertyName
->
valuestring
,
strlen
(
propertyName
->
valuestring
));
if
(
propertyValue
->
type
==
cJSON_Number
){
memset
(
propertyValueStr
,
0
,
sizeof
(
propertyValueStr
));
snprintf
(
propertyValueStr
,
sizeof
(
propertyValueStr
),
"%d"
,
propertyValue
->
valueint
);
}
else
if
(
propertyValue
->
type
==
cJSON_String
){
snprintf
(
propertyValueStr
,
sizeof
(
propertyValueStr
),
"%s"
,
propertyValue
->
valuestring
);
}
else
{
char
*
str
=
cJSON_PrintUnformatted
(
propertyValue
);
snprintf
(
propertyValueStr
,
sizeof
(
propertyValueStr
),
"%s"
,
str
);
free
(
str
);
}
memcpy
(
info
.
propertyValue
,
propertyValueStr
,
strlen
(
propertyValueStr
));
info
.
epNum
=
iepnum
;
info
.
delay
=
idelay
;
...
...
@@ -2135,3 +2166,4 @@ int kk_scene_execute_quickpanel(const char *buttonId,char *deviceCode)
INFO_PRINT
(
"[%d]kk_scene_execute_quickpanel called!!!
\n
"
,
__LINE__
);
return
res
;
}
midware/tsl/tsl_handle/kk_tsl_common.h
View file @
f49071b9
...
...
@@ -26,7 +26,7 @@
#define DM_UTILS_UINT32_STRLEN (10)
#define DM_UTILS_UINT64_STRLEN (20)
#define DEVICE_PROPERTY_NAME_MAX (64+1)
#define DEVICE_PROPERTY_VALUE_MAX (
64
+1)
#define DEVICE_PROPERTY_VALUE_MAX (
255
+1)
#define DEVICE_PROPERTY_NUM_MAX (16)
#define KK_TSL_KEY_SCHEMA "schema"
...
...
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