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
5cc42166
Commit
5cc42166
authored
Sep 15, 2021
by
尹佳钦
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
局域网
设置同步间隔30s 离线语音 添加OTA接口
parent
4c4600c3
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
600 additions
and
53 deletions
+600
-53
application/klansdk/kk_data_handle.c
application/klansdk/kk_data_handle.c
+10
-21
application/klansdk/kk_data_mng.c
application/klansdk/kk_data_mng.c
+5
-1
application/klansdk/kk_lan_debug.h
application/klansdk/kk_lan_debug.h
+1
-1
application/klansdk/kk_lan_main.c
application/klansdk/kk_lan_main.c
+82
-2
application/klansdk/kk_lan_voice_panel.c
application/klansdk/kk_lan_voice_panel.c
+11
-3
application/klansdk/kk_lan_vp_ctrl.c
application/klansdk/kk_lan_vp_ctrl.c
+108
-1
application/klansdk/kk_lan_vp_ctrl.h
application/klansdk/kk_lan_vp_ctrl.h
+14
-8
application/klansdk/kk_voice_panel_cfg.c
application/klansdk/kk_voice_panel_cfg.c
+29
-14
application/klansdk/kk_voice_panel_handle.c
application/klansdk/kk_voice_panel_handle.c
+321
-2
application/klansdk/kk_voice_panel_handle.h
application/klansdk/kk_voice_panel_handle.h
+19
-0
No files found.
application/klansdk/kk_data_handle.c
View file @
5cc42166
...
...
@@ -65,7 +65,7 @@ char *strrpl(char *in, char *out, int outlen, char *src, char *dst)
}
return
out
;
}
static
char
*
_kk_data_create
(
char
*
msgtype
,
const
char
*
productCode
,
const
char
*
deviceCode
,
const
char
*
param
)
char
*
_kk_data_create
(
char
*
msgtype
,
const
char
*
productCode
,
const
char
*
deviceCode
,
const
char
*
param
)
{
cJSON
*
root
;
cJSON
*
payload
;
...
...
@@ -108,31 +108,20 @@ static char * _kk_data_create(char *msgtype,const char *productCode,const char *
return
out
;
//free(out); /* Print to text, Delete the cJSON, print it, release the string. */
}
void
kk_handle_sync_info
(
void
)
{
char
*
send_data
=
NULL
;
send_data
=
_kk_data_create
(
SYNC_MSG_TYPE
,
"*"
,
"*"
,
"*"
);
if
(
send_data
==
NULL
){
return
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[sync] send.
\n
"
);
kk_ipc_send
(
IPC_APP2MID
,
send_data
,
strlen
(
send_data
)
+
1
);
free
(
send_data
);
extern
void
kk_sync_info_push
(
void
);
extern
void
kk_sync_info
(
void
);
void
kk_handle_sync_info
(
void
)
{
kk_sync_info
();
}
void
kk_handle_sync_push_info
(
void
)
{
char
*
send_data
=
NULL
;
send_data
=
_kk_data_create
(
SYNCPUSH_MSG_TYPE
,
"*"
,
"*"
,
"*"
);
if
(
send_data
==
NULL
){
return
;
}
debug_log
(
LOG_INFO_LEVEL
,
"[sync] send.
\n
"
);
kk_ipc_send
(
IPC_APP2MID
,
send_data
,
strlen
(
send_data
)
+
1
);
free
(
send_data
);
kk_sync_info_push
();
}
...
...
application/klansdk/kk_data_mng.c
View file @
5cc42166
...
...
@@ -140,7 +140,7 @@ static kk_map_dev_node_t *kk_map_dev_node_create(const char *deviceCode,const ch
memcpy
(
node
->
deviceCode
,
deviceCode
,
strlen
(
deviceCode
));
memcpy
(
node
->
productCode
,
productCode
,
strlen
(
productCode
));
node
->
online_status
=
(
strcmp
(
onlineStatus
,
"1"
)
==
0
)
?
1
:
0
;
debug_log
(
LOG_CRITICAL_LEVEL
,
"[add node]node->deviceCode=%s
\n
"
,
node
->
deviceCode
);
memcpy
(
node
->
opearteType
,
optype
->
valuestring
,
strlen
(
optype
->
valuestring
));
node
->
channelNum
=
channel
->
valueint
;
...
...
@@ -442,6 +442,10 @@ int kk_map_dev_search_by_deviceCode(const char *deviceCode, kk_map_dev_node_t **
//list_for_each_entry_safe
list_for_each_entry
(
search_node
,
&
ctx
->
dev_list
,
linked_list
,
kk_map_dev_node_t
)
{
debug_log
(
LOG_CRITICAL_LEVEL
,
"search_node->deviceCode=%s,deviceCode=%s
\n
"
,
search_node
->
deviceCode
,
deviceCode
);
debug_log
(
LOG_CRITICAL_LEVEL
,
"%d,%d
\n
"
,
strlen
(
search_node
->
deviceCode
),
strlen
(
deviceCode
));
if
(
(
strlen
(
search_node
->
deviceCode
)
==
strlen
(
deviceCode
))
&&
(
memcmp
(
search_node
->
deviceCode
,
deviceCode
,
strlen
(
deviceCode
))
==
0
))
{
/* dm_log_debug("Device Found, devid: %d", devid); */
...
...
application/klansdk/kk_lan_debug.h
View file @
5cc42166
...
...
@@ -44,7 +44,7 @@
if( level >= LOG_LEVEL && level <= LOG_CRITICAL_LEVEL) { \
char buff[64] = {0};\
time_t curTime = time(NULL); \
struct tm *c =
gm
time(&curTime);\
struct tm *c =
local
time(&curTime);\
snprintf(buff,sizeof(buff),"%d-%d-%d %d:%d:%d",(c->tm_year+1900),(c->tm_mon+1),c->tm_mday,c->tm_hour,c->tm_min,c->tm_sec);\
printf("%s%s [%s:%d(%s)] "format"\033[m", LOG_LEVEL_(level),buff,__FILE__,__LINE__,__func__,##__VA_ARGS__); \
} \
...
...
application/klansdk/kk_lan_main.c
View file @
5cc42166
...
...
@@ -34,6 +34,7 @@
#include "kk_lan_voice_panel.h"
#include "kk_data_mng.h"
#include "kk_lan_debug.h"
extern
char
*
_kk_data_create
(
char
*
msgtype
,
const
char
*
productCode
,
const
char
*
deviceCode
,
const
char
*
param
);
static
char
s_ccuid
[
DEVICE_CODE_LEN
]
=
{
0
};
...
...
@@ -103,15 +104,63 @@ int prg_run_singleton(const char *prg)
}
#define SYNC_INFO_FLAG 0x01
#define SYNC_INFO_PUSH_FLAG 0x02
static
int
g_sync_flag
;
void
kk_sync_info
(
void
)
{
if
(
g_sync_flag
&
SYNC_INFO_FLAG
){
debug_log
(
LOG_FOCUS_LEVEL
,
"[SYNC INFO] delay.
\n
"
);
}
g_sync_flag
|=
SYNC_INFO_FLAG
;
}
void
kk_sync_info_push
(
void
)
{
if
(
g_sync_flag
&
SYNC_INFO_PUSH_FLAG
){
debug_log
(
LOG_FOCUS_LEVEL
,
"[SYNC INFO PUSH] delay.
\n
"
);
}
g_sync_flag
|=
SYNC_INFO_PUSH_FLAG
;
}
void
handler
(
int
signum
)
{
printf
(
"[sig]---------------------->signum=%d
\n
"
,
signum
);
if
(
signum
!=
17
){
if
(
signum
==
SIGALRM
){
printf
(
"[SIGALRM]
\n
"
);
}
if
(
signum
!=
17
&&
signum
!=
SIGALRM
){
exit
(
-
1
);
}
}
void
kk_sync_timer_start
(
void
)
{
struct
itimerval
timer
;
timer
.
it_value
.
tv_sec
=
30
;
timer
.
it_value
.
tv_usec
=
0
;
timer
.
it_interval
.
tv_sec
=
0
;
timer
.
it_interval
.
tv_usec
=
0
;
if
(
setitimer
(
ITIMER_REAL
,
&
timer
,
NULL
)
<
0
){
debug_log
(
LOG_CRITICAL_LEVEL
,
"err.
\n
"
);
};
}
int
kk_sync_timer_is_running
(
void
)
{
struct
itimerval
timer
;
getitimer
(
ITIMER_REAL
,
&
timer
);
if
(
timer
.
it_value
.
tv_sec
!=
0
||
timer
.
it_value
.
tv_usec
!=
0
){
return
1
;
}
return
0
;
}
int
main
(
int
argc
,
char
*
argv
[])
{
...
...
@@ -124,6 +173,8 @@ int main(int argc, char* argv[])
for
(
int
i
=
1
;
i
<
32
;
i
++
){
signal
(
i
,
handler
);
}
//signal(SIGPIPE, SIG_IGN);
...
...
@@ -152,8 +203,37 @@ int main(int argc, char* argv[])
kk_lan_db_node_init
();
//kk_handle_sync_info();
while
(
1
){
sleep
(
1
);
if
(
kk_sync_timer_is_running
()
==
0
&&
g_sync_flag
!=
0
){
char
*
send_data
=
NULL
;
if
(
g_sync_flag
&
SYNC_INFO_FLAG
){
debug_log
(
LOG_INFO_LEVEL
,
"[SYNC INFO].
\n
"
);
send_data
=
_kk_data_create
(
SYNC_MSG_TYPE
,
"*"
,
"*"
,
"*"
);
g_sync_flag
&=~
SYNC_INFO_FLAG
;
}
else
if
(
g_sync_flag
&
SYNC_INFO_PUSH_FLAG
){
debug_log
(
LOG_INFO_LEVEL
,
"[SYNC INFO PUSH].
\n
"
);
send_data
=
_kk_data_create
(
SYNCPUSH_MSG_TYPE
,
"*"
,
"*"
,
"*"
);
kk_handle_sync_push_info
();
g_sync_flag
&=~
SYNC_INFO_PUSH_FLAG
;
}
else
{
g_sync_flag
=
0
;
debug_log
(
LOG_CRITICAL_LEVEL
,
"err
\n
"
);
}
if
(
send_data
!=
NULL
){
kk_ipc_send
(
IPC_APP2MID
,
send_data
,
strlen
(
send_data
)
+
1
);
kk_sync_timer_start
();
free
(
send_data
);
}
}
usleep
(
50
);
}
return
0
;
}
...
...
application/klansdk/kk_lan_voice_panel.c
View file @
5cc42166
...
...
@@ -169,8 +169,14 @@ static int _vp_config_file_version_load(void)
version
=
cJSON_GetObjectItem
(
json
,
"version"
);
if
(
version
!=
NULL
&&
version
->
type
==
cJSON_Number
){
vp_mag
.
cfg_info
.
f_ver
=
version
->
valueint
;
vp_mag
.
cfg_info
.
next_ver
=
version
->
valueint
;
if
(
version
->
valueint
<=
0
){
vp_mag
.
cfg_info
.
f_ver
=
0
;
vp_mag
.
cfg_info
.
next_ver
=
0
;
}
else
{
vp_mag
.
cfg_info
.
f_ver
=
version
->
valueint
;
vp_mag
.
cfg_info
.
next_ver
=
version
->
valueint
;
}
printf
(
"[vp load config version]%d
\n
"
,
vp_mag
.
cfg_info
.
f_ver
);
}
...
...
@@ -302,9 +308,11 @@ void *kk_vp_manage_thread(void *arg)
switch
(
vp_mag
.
state
){
case
GET_8009_SNAPSHOOT_STATE
:
kk_vp_get_8009_snapshoot
();
kk_vp_get_ota_file_info
();
sleep
(
5
);
break
;
case
SET_8009_SYSTEM
:
kk_vp_set_8009_system_time
();
sleep
(
5
);
...
...
application/klansdk/kk_lan_vp_ctrl.c
View file @
5cc42166
...
...
@@ -19,6 +19,8 @@ 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
cJSON
*
underfloor_heating_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
static
cJSON
*
dimming_light_dev_handle
(
int
ep
,
uint8_t
*
arg
,
uint8_t
arg_len
);
static
const
int
air_conditioner_dev_pid
[]
=
AIR_CONDITIONER_DEV_PID
;
...
...
@@ -27,6 +29,11 @@ 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
const
int
underfloor_heating_dev_pid
[]
=
UNDERFLOOR_HEATING_DEV_PID
;
static
const
int
dimming_light_dev_pid
[]
=
DIMMING_LIGHT_DEV_PID
;
static
DEV_PID_S
g_dev_pid
[]
=
{
...
...
@@ -34,7 +41,9 @@ static DEV_PID_S g_dev_pid[] = {
{
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
}
{
fanCoilSwitch_dev_pid
,
sizeof
(
fanCoilSwitch_dev_pid
)
/
sizeof
(
int
),
fanCoilSwitch_dev_handle
},
{
underfloor_heating_dev_pid
,
sizeof
(
underfloor_heating_dev_pid
)
/
sizeof
(
int
),
underfloor_heating_dev_handle
},
{
dimming_light_dev_pid
,
sizeof
(
dimming_light_dev_pid
)
/
sizeof
(
int
),
dimming_light_dev_handle
},
};
static
dev_handle_func
dev_pid_dispatch
(
int
pid
)
...
...
@@ -96,6 +105,8 @@ static cJSON *workMode_msg_build(int ep,int mode)
return
params
;
}
static
cJSON
*
temperature_msg_build
(
int
ep
,
int
tmp
)
{
char
epNum
[
12
]
=
{
0
};
...
...
@@ -110,8 +121,33 @@ static cJSON *temperature_msg_build(int ep,int tmp)
return
params
;
}
static
cJSON
*
ColorTemperature_msg_build
(
int
ep
,
int
val
)
{
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"ColorTemperature"
,
val
);
return
params
;
}
static
cJSON
*
Brightness_msg_build
(
int
ep
,
int
val
)
{
char
epNum
[
12
]
=
{
0
};
cJSON
*
params
=
cJSON_CreateObject
();
memset
(
epNum
,
0
,
sizeof
(
epNum
));
snprintf
(
epNum
,
sizeof
(
epNum
),
"%d"
,
ep
);
cJSON_AddStringToObject
(
params
,
"epNum"
,
epNum
);
cJSON_AddNumberToObject
(
params
,
"Brightness"
,
val
);
return
params
;
}
...
...
@@ -460,7 +496,78 @@ static cJSON *fanCoilSwitch_dev_handle(int ep,uint8_t *arg,uint8_t arg_len)
return
NULL
;
}
static
cJSON
*
underfloor_heating_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_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
workMode_msg_build
(
ep
,
0
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_MANUAL
){
return
workMode_msg_build
(
ep
,
1
);
}
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
temperature_msg_build
(
ep
,
tmp
);
default:
break
;
}
return
NULL
;
}
static
cJSON
*
dimming_light_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_SET_COLOR_TMP
:{
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
workMode_msg_build
(
ep
,
0
);
}
else
if
(
mode
==
VP_SKILLTYPE_1C_WORKMODE_MANUAL
){
return
workMode_msg_build
(
ep
,
1
);
}
break
;
}
case
VP_CTRL_BRIGHTNESS_SET
:
if
(
arg
[
1
]
!=
0x20
){
return
NULL
;
}
uint8_t
bri
=
arg
[
2
];
Brightness_msg_build
(
ep
,
bri
);
break
;
default:
break
;
}
return
NULL
;
}
int
kk_lan_vp_control
(
uint8_t
num
,
uint32_t
nodeIdAry
[],
uint8_t
*
arg
,
uint8_t
arg_len
)
...
...
application/klansdk/kk_lan_vp_ctrl.h
View file @
5cc42166
...
...
@@ -70,29 +70,35 @@
//DEVICE PID DEFINE
//3001,3002,3003,3022,3023,3024
#define LIGHT_DEV_PID {\
30
24
\
30
01,3002,3003,3009,3010,3011,3022,3023,3024,3069,3078,3079,3085,3086,3087,3115
\
}
//3005,3006,3007,3008,3009,3010,3011,3026,3027,3067
#define CURTAIN_DEV_PID {\
30
27
\
30
05,3006,3012,3013,3017,3026,3027,3067,3068,3088,3089
\
}
//3019,3020,3037,3038
#define OUTLET_DEV_PID {\
3019,3020,3037,3038\
3019,3020,3037,3038
,3037,3038
\
}
#define FRESHAIR_DEV_PID {\
3032\
3032
,3099
\
}
#define FANCOILSWITCH_DEV_PID {\
303
4
\
303
1,3033,3034,3035,3036,3095,3098
\
}
#define UNDERFLOOR_HEATING_DEV_PID {\
3029,3030,3097\
}
#define DIMMING_LIGHT_DEV_PID {\
3092\
}
...
...
application/klansdk/kk_voice_panel_cfg.c
View file @
5cc42166
...
...
@@ -256,20 +256,23 @@ static int kk_vp_get_device_name(_IN cJSON *devices,_IN const char*epNum,_IN con
name
->
type
==
cJSON_String
){
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
);
if
((
epNumObj
=
cJSON_GetObjectItem
(
deviceItem
,
"epNum"
))
!=
NULL
){
if
(
multi
!=
0
){
if
(
epNumObj
->
type
==
cJSON_String
&&
!
strcmp
(
epNumObj
->
valuestring
,
epNum
)){
snprintf
(
buf
,
size
,
"%s"
,
name
->
valuestring
);
return
1
;
}
}
else
{
if
(
epNumObj
->
type
==
cJSON_String
&&
!
strcmp
(
epNumObj
->
valuestring
,
"1"
)){
snprintf
(
buf
,
size
,
"%s"
,
name
->
valuestring
);
return
1
;
}
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
;
}
snprintf
(
buf
,
size
,
"%s"
,
name
->
valuestring
);
return
1
;
}
}
...
...
@@ -288,6 +291,7 @@ static int kk_vp_get_device_info(_IN cJSON *rooms,_IN VP_ZB_DEV_ITEM *pDevs,_IN
int
i
=
0
,
roomNum
=
0
,
isFind
=
0
;
roomNum
=
cJSON_GetArraySize
(
rooms
);
//printf("[%s][%d]roomNum=%d\n",__FUNCTION__,__LINE__,roomNum);
for
(
i
=
0
;
i
<
roomNum
;
i
++
){
...
...
@@ -307,6 +311,12 @@ static int kk_vp_get_device_info(_IN cJSON *rooms,_IN VP_ZB_DEV_ITEM *pDevs,_IN
isFind
=
kk_vp_get_device_name
(
devices
,
pDevs
->
ch
,
pDevs
->
mac
,
multi
,
sizeof
(
pDevs
->
name
),
pDevs
->
name
);
if
(
!
strcmp
(
pDevs
->
name
,
""
)){
if
(
is_ac_gw_pid
(
atoi
(
pDevs
->
pid
))
!=
0
){
snprintf
(
pDevs
->
name
,
sizeof
(
pDevs
->
name
),
"%s"
,
"空调网关"
);
}
}
if
(
isFind
!=
0
){
debug_log
(
LOG_CRITICAL_LEVEL
,
"roomId->valuestring=%s
\n
"
,
roomId
->
valuestring
);
snprintf
(
pDevs
->
room
,
sizeof
(
pDevs
->
room
),
"%s"
,
roomId
->
valuestring
);
...
...
@@ -386,13 +396,15 @@ static int kk_vp_sync_device_multi_eps(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c
if
(
kk_map_dev_search_by_deviceCode
(
pDevs
->
mac
,
&
node
)
==
0
){
debug_log
(
LOG_CRITICAL_LEVEL
,
"--->mark
\n
"
);
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
node
->
opearteType
);
}
else
{
debug_log
(
LOG_CRITICAL_LEVEL
,
"--->mark
\n
"
);
if
(
is_ac_gw_pid
(
atoi
(
pDevs
->
pid
))
!=
0
){
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
"12008"
);
}
else
{
debug_log
(
LOG_CRITICAL_LEVEL
,
"--->mark
\n
"
);
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
"1"
);
}
}
...
...
@@ -458,13 +470,16 @@ static int kk_vp_sync_device_single_ep(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c
nodeId
=
kk_lan_db_node_get
(
pDevs
->
mac
,
atoi
(
pDevs
->
ch
));
snprintf
(
pDevs
->
nodeId
,
sizeof
(
pDevs
->
nodeId
)
-
1
,
"%d"
,
nodeId
);
if
(
kk_map_dev_search_by_deviceCode
(
pDevs
->
mac
,
&
node
)
!=
0
){
debug_log
(
LOG_CRITICAL_LEVEL
,
"pDevs->mac=%s--->mark
\n
"
,
pDevs
->
mac
);
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
){
debug_log
(
LOG_CRITICAL_LEVEL
,
"--->mark
\n
"
);
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
"12008"
);
}
else
{
debug_log
(
LOG_CRITICAL_LEVEL
,
"--->mark
\n
"
);
snprintf
(
pDevs
->
operateType
,
sizeof
(
pDevs
->
operateType
)
-
1
,
"%s"
,
"1"
);
}
}
...
...
application/klansdk/kk_voice_panel_handle.c
View file @
5cc42166
...
...
@@ -25,6 +25,7 @@
static
uint16_t
_g_seq
;
static
FILE
*
update_fp
=
NULL
;
static
FILE
*
ota_fp
=
NULL
;
#define VP_CH 0
...
...
@@ -44,6 +45,12 @@ 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
void
kk_vp_ota_file_update_data_req_handle
(
pro_data_t
*
pro_data
);
static
void
kk_vp_ota_file_update_start_handle
(
pro_data_t
*
pro_data
);
static
void
kk_vp_ota_file_update_stop_handle
(
pro_data_t
*
pro_data
);
static
void
kk_vp_ota_info_query_handle
(
pro_data_t
*
pro_data
);
static
void
kk_vp_ota_file_update_status_handle
(
pro_data_t
*
pro_data
);
static
VP_OPCODE_HANDLE
vp_opcode_table
[]
=
{
...
...
@@ -58,12 +65,20 @@ static VP_OPCODE_HANDLE vp_opcode_table[] = {
{
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_VOICE_CONTROL_NOTIFY
,
kk_vp_voice_control_handle
}
{
OPCODE_VOICE_CONTROL_NOTIFY
,
kk_vp_voice_control_handle
},
{
OPCODE_VOICE_OTA_INFO_GET
,
kk_vp_ota_info_query_handle
},
{
OPCODE_VOICE_OTA_UPGRADE_STATR
,
kk_vp_ota_file_update_start_handle
},
{
OPCODE_VOICE_OTA_REQUEST
,
kk_vp_ota_file_update_data_req_handle
},
{
OPCODE_VOICE_OTA_UPGRADE_STOP
,
kk_vp_ota_file_update_stop_handle
},
{
OPCODE_VOICE_OTA_STATUS_NOTIFY
,
kk_vp_ota_file_update_status_handle
},
};
uint32_t
ms_uiCrc32Tab
[
256
]
=
{
/* CRC polynomial 0xedb88320 */
0x00000000
,
0x77073096
,
0xee0e612c
,
0x990951ba
,
0x076dc419
,
0x706af48f
,
0xe963a535
,
0x9e6495a3
,
0x0edb8832
,
0x79dcb8a4
,
0xe0d5e91e
,
0x97d2d988
,
...
...
@@ -532,6 +547,20 @@ static void vp_close_fd()
}
}
static
void
open_ota_fd
()
{
ota_fp
=
fopen
(
VP_OTA_FILE_BZIP
,
"rb"
);
if
(
ota_fp
==
NULL
){
debug_log
(
LOG_WARNING_LEVEL
,
"[%s]fopen err!
\n
"
,
VP_OTA_FILE_BZIP
);
}
}
static
void
close_ota_fd
()
{
if
(
ota_fp
!=
NULL
){
fclose
(
ota_fp
);
}
}
...
...
@@ -912,7 +941,6 @@ static void kk_vp_config_file_update_stop_handle(pro_data_t *pro_data)
ver
=
(
pro_data
->
arg
[
0
]
<<
24
)
|
(
pro_data
->
arg
[
1
]
<<
16
)
|
(
pro_data
->
arg
[
2
]
<<
8
)
|
pro_data
->
arg
[
3
];
status
=
pro_data
->
arg
[
4
];
}
static
void
kk_vp_config_file_update_status_handle
(
pro_data_t
*
pro_data
)
...
...
@@ -1104,6 +1132,132 @@ void kk_vp_get_config_file_info(void)
void
kk_vp_get_ota_file_info
(
void
)
{
uint8_t
res
[
1
]
=
{
0
};
debug_log
(
LOG_DEBUG_LEVEL
,
"[LAN->VP]OTA info get,OPCODE=%04X
\n
"
,
OPCODE_VOICE_OTA_INFO_GET
);
vp_send_data_build
(
OPCODE_VOICE_OTA_INFO_GET
,
sizeof
(
res
),
res
);
}
static
int
_vp_get_ota_file_size
(
void
)
{
int
size
=
0
;
FILE
*
fp
=
NULL
;
fp
=
fopen
(
VP_OTA_FILE_BZIP
,
"r"
);
if
(
fp
==
NULL
){
debug_log
(
LOG_WARNING_LEVEL
,
"[%s]fopen err!
\n
"
,
VP_OTA_FILE_BZIP
);
return
0
;
}
fseek
(
fp
,
0
,
SEEK_END
);
size
=
ftell
(
fp
);
fclose
(
fp
);
return
size
;
}
static
int
_vp_get_ota_file_crc32
(
void
)
{
char
*
buff
=
NULL
;
char
*
pRead
=
NULL
;
int
t_len
=
0
;
int
remain
=
0
;
int
r_len
=
0
;
uint32_t
crc32
=
0
;
FILE
*
fp
=
NULL
;
int
size
=
0
;
fp
=
fopen
(
VP_OTA_FILE_BZIP
,
"r"
);
if
(
fp
==
NULL
){
debug_log
(
LOG_WARNING_LEVEL
,
"[%s]fopen err!
\n
"
,
VP_OTA_FILE_BZIP
);
printf
(
"open err.
\n
"
);
return
-
1
;
}
fseek
(
fp
,
0
,
SEEK_END
);
size
=
ftell
(
fp
);
fseek
(
fp
,
0
,
SEEK_SET
);
buff
=
malloc
(
size
+
1
);
memset
(
buff
,
0
,
size
+
1
);
pRead
=
buff
;
remain
=
size
;
while
(
remain
>
0
){
r_len
=
fread
(
pRead
,
1
,
size
,
fp
);
if
(
remain
>=
r_len
){
remain
-=
r_len
;
pRead
+=
r_len
;
printf
(
"[remain]r_len=%d,remain=%d
\n
"
,
r_len
,
remain
);
}
else
{
remain
=
0
;
pRead
[
size
]
=
'\0'
;
}
}
crc32
=
CreateCrc32
((
uint8_t
*
)
buff
,
size
);
printf
(
"crc32=%x
\n
"
,
crc32
);
free
(
buff
);
fclose
(
fp
);
return
crc32
;
}
void
kk_vp_ota_file_update_start
(
uint32_t
ver
)
{
uint8_t
data
[
11
]
=
{
0
};
uint32_t
f_ver
,
f_size
,
crc32
;
f_ver
=
ver
;
f_size
=
_vp_get_ota_file_size
();
crc32
=
_vp_get_ota_file_crc32
();
data
[
0
]
=
(
f_ver
>>
16
)
&
0xff
;
data
[
1
]
=
(
f_ver
>>
8
)
&
0xff
;
data
[
2
]
=
f_ver
&
0xff
;
data
[
3
]
=
(
f_size
>>
24
)
&
0xff
;
data
[
4
]
=
(
f_size
>>
16
)
&
0xff
;
data
[
5
]
=
(
f_size
>>
8
)
&
0xff
;
data
[
6
]
=
f_size
&
0xff
;
data
[
7
]
=
(
crc32
>>
24
)
&
0xff
;
data
[
8
]
=
(
crc32
>>
16
)
&
0xff
;
data
[
9
]
=
(
crc32
>>
8
)
&
0xff
;
data
[
10
]
=
crc32
&
0xff
;
kk_vp_cfg_info_set
(
f_ver
,
f_size
,
crc32
);
debug_log
(
LOG_DEBUG_LEVEL
,
"[LAN->VP]ota file update start,OPCODE=%04X
\n
"
,
OPCODE_VOICE_OTA_UPGRADE_STATR
);
_debug_log
(
LOG_DEBUG_LEVEL
,
"File Version=%d.%d.%d,File Size=%d,CRC32 Value=%08X
\n
"
,
(
f_ver
>>
16
)
&
0xff
,(
f_ver
>>
8
&
0xff
),
f_ver
&
0xff
,
f_size
,
crc32
);
vp_send_data_build
(
OPCODE_VOICE_OTA_UPGRADE_STATR
,
sizeof
(
data
),
data
);
open_ota_fd
();
}
void
kk_vp_ota_file_update_stop
(
uint32_t
ver
)
{
uint8_t
f_ver
[
3
];
f_ver
[
0
]
=
(
ver
>>
16
)
&
0xff
;
f_ver
[
1
]
=
(
ver
>>
8
)
&
0xff
;
f_ver
[
2
]
=
ver
&
0xff
;
debug_log
(
LOG_DEBUG_LEVEL
,
"[LAN->VP]config file update stop,OPCODE=%04X
\n
"
,
OPCODE_VOICE_OTA_UPGRADE_STOP
);
vp_send_data_build
(
OPCODE_VOICE_OTA_UPGRADE_STOP
,
sizeof
(
f_ver
),
f_ver
);
}
/////////////////////////////////////////////////////
int
kk_vp_opcode_handle
(
_IN
pro_data_t
*
pro_data
)
{
...
...
@@ -1249,7 +1403,172 @@ void kk_vp_syncinfo_handle(_IN cJSON *payload)
}
static
void
kk_vp_ota_file_update_start_handle
(
pro_data_t
*
pro_data
)
{
uint8_t
err
;
uint32_t
f_size
,
crc32
;
if
(
pro_data
->
args_len
==
0
){
return
;
}
if
((
err
=
pro_data
->
arg
[
0
])
==
0
){
if
(
pro_data
->
args_len
!=
12
){
return
;
}
f_size
=
MK_UINT32
(
&
pro_data
->
arg
[
4
]);
crc32
=
MK_UINT32
(
&
pro_data
->
arg
[
8
]);
//kk_vp_config_file_info_check(f_ver,f_size,crc32);
_debug_log
(
LOG_DEBUG_LEVEL
,
"[VP->LAN] File Version=%d.%d.%d,File Size=%d,CRC32 Value=%08X
\n
"
,
pro_data
->
arg
[
1
],
pro_data
->
arg
[
2
],
pro_data
->
arg
[
3
],
f_size
,
crc32
);
}
}
static
void
kk_vp_ota_file_update_data_req_handle
(
pro_data_t
*
pro_data
)
{
uint8_t
err
=
0
;
uint32_t
offset
;
uint16_t
req_size
;
uint8_t
data
[
256
]
=
{
0
};
uint8_t
len
=
0
;
uint8_t
r_len
=
0
;
uint8_t
t_len
=
0
;
uint8_t
*
pCrc
=
NULL
;
uint32_t
crc
;
if
(
pro_data
->
args_len
!=
9
){
return
;
}
offset
=
MK_UINT32
(
&
pro_data
->
arg
[
3
]);
req_size
=
MK_UINT16
(
&
pro_data
->
arg
[
7
]);
debug_log
(
LOG_DEBUG_LEVEL
,
"[VP->LAN]f_ver=%d.%d.%d,offset=%d,req_size=%d
\n
"
,
pro_data
->
arg
[
0
],
pro_data
->
arg
[
1
],
pro_data
->
arg
[
2
],
offset
,
req_size
);
if
(
ota_fp
==
NULL
){
_debug_log
(
LOG_ERROR_LEVEL
,
"[ota_fp] NULL!
\n
"
);
err
=
1
;
}
/*
if(f_ver!=kk_vp_get_config_file_version()){
printf("[file version] not match!%d,%d\n",f_ver,kk_vp_get_config_file_version());
err = 2;
}*/
data
[
len
++
]
=
err
;
data
[
len
++
]
=
(
offset
>>
24
)
&
0xff
;
data
[
len
++
]
=
(
offset
>>
16
)
&
0xff
;
data
[
len
++
]
=
(
offset
>>
8
)
&
0xff
;
data
[
len
++
]
=
offset
&
0xff
;
data
[
len
++
]
=
(
req_size
>>
8
)
&
0xff
;
data
[
len
++
]
=
req_size
&
0xff
;
pCrc
=
&
data
[
len
];
if
(
err
==
0
){
int
err
=
fseek
(
ota_fp
,
offset
,
SEEK_SET
);
if
(
err
==
0
){
while
(
req_size
>
t_len
){
r_len
=
fread
(
&
data
[
len
],
1
,
req_size
,
ota_fp
);
if
(
r_len
>=
0
){
t_len
+=
r_len
;
len
+=
r_len
;
}
else
{
break
;
}
}
}
else
{
debug_log
(
LOG_ERROR_LEVEL
,
"[fseek fail]offset=%d
\n
"
,
offset
);
}
}
crc
=
CreateCrc32
(
pCrc
,
req_size
);
data
[
len
++
]
=
(
crc
>>
24
)
&
0xff
;
data
[
len
++
]
=
(
crc
>>
16
)
&
0xff
;
data
[
len
++
]
=
(
crc
>>
8
)
&
0xff
;
data
[
len
++
]
=
crc
&
0xff
;
vp_reply_data_build
(
pro_data
->
seq
,
pro_data
->
ch
,
OPCODE_VOICE_OTA_REQUEST
,
len
,
data
);
usleep
(
100
*
1000
);
}
static
void
kk_vp_ota_file_update_stop_handle
(
pro_data_t
*
pro_data
)
{
uint8_t
err
,
status
;
uint32_t
ver
;
if
(
pro_data
->
args_len
==
0
){
return
;
}
if
((
err
=
pro_data
->
arg
[
0
])
==
0
){
if
(
pro_data
->
args_len
!=
4
){
return
;
}
ver
=
MK_VERSION
(
&
pro_data
->
arg
[
1
]);
_debug_log
(
LOG_DEBUG_LEVEL
,
"[VP OTA STOP] ver=%d.%d.%d
\n
"
,
pro_data
->
arg
[
1
],
pro_data
->
arg
[
2
],
pro_data
->
arg
[
3
]);
}
}
static
void
kk_vp_ota_file_update_status_handle
(
pro_data_t
*
pro_data
)
{
int
err
=
0
;
int
ver
;
unsigned
char
status
;
if
(
pro_data
->
args_len
!=
4
){
return
;
}
ver
=
MK_UINT24
(
&
pro_data
->
arg
[
0
]);
status
=
pro_data
->
arg
[
3
];
debug_log
(
LOG_DEBUG_LEVEL
,
"
\n
ver=%d.%d.%d,status=%d
\n
"
,
pro_data
->
arg
[
0
],
pro_data
->
arg
[
1
],
pro_data
->
arg
[
2
],
status
);
uint8_t
data
[
5
]
=
{
0
};
data
[
0
]
=
err
;
data
[
1
]
=
(
ver
>>
16
)
&
0xff
;
data
[
2
]
=
(
ver
>>
8
)
&
0xff
;
data
[
3
]
=
ver
&
0xff
;
data
[
4
]
=
status
;
vp_reply_data_build
(
pro_data
->
seq
,
pro_data
->
ch
,
OPCODE_VOICE_OTA_STATUS_NOTIFY
,
sizeof
(
data
),
data
);
//kk_vp_update_result_check(status,ver);
}
static
void
kk_vp_ota_info_query_handle
(
pro_data_t
*
pro_data
)
{
uint8_t
err
;
uint32_t
f_ver
;
if
(
pro_data
->
args_len
!=
4
)
{
return
;
}
if
((
err
=
pro_data
->
arg
[
0
])
==
0
)
{
f_ver
=
MK_UINT24
(
&
pro_data
->
arg
[
1
]);
debug_log
(
LOG_DEBUG_LEVEL
,
"[VP->LAN] OTA File Version=%d.%d.%d
\n
"
,
pro_data
->
arg
[
0
],
pro_data
->
arg
[
1
],
pro_data
->
arg
[
2
]);
//kk_vp_cfg_info_check(f_ver,f_size,crc32);
}
}
...
...
application/klansdk/kk_voice_panel_handle.h
View file @
5cc42166
...
...
@@ -9,6 +9,9 @@
#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 VP_OTA_FILE_BZIP "/data/kk/kk_voice.bzip"
#define OPCODE_8009_SNAPSHOOT 0x1000
#define OPCODE_SNAPSHOOT 0x1001
...
...
@@ -23,6 +26,17 @@
#define OPCODE_CONFIG_FILE_UPDATE_STATUS 0x1010
#define OPCODE_VOICE_CONTROL_NOTIFY 0x1022
#define OPCODE_VOICE_OTA_UPGRADE_STATR 0x1016
#define OPCODE_VOICE_OTA_REQUEST 0x1017
#define OPCODE_VOICE_OTA_UPGRADE_STOP 0x1018
#define OPCODE_VOICE_OTA_INFO_GET 0x1019
#define OPCODE_VOICE_OTA_STATUS_NOTIFY 0x101A
typedef
void
(
*
vp_handle_func
)(
pro_data_t
*
pro_data
);
typedef
struct
{
...
...
@@ -48,6 +62,11 @@ void kk_vp_get_config_file_info(void);
void
kk_vp_get_ota_file_info
(
void
);
void
kk_vp_ota_file_update_start
(
uint32_t
ver
);
void
kk_vp_ota_file_update_stop
(
uint32_t
ver
);
...
...
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