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
faea48f8
Commit
faea48f8
authored
Sep 15, 2021
by
陈伟灿
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'yjq' into 'master'
局域网 See merge request chenweican/k-sdk!133
parents
4c4600c3
5cc42166
Changes
10
Show 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 @
faea48f8
...
...
@@ -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 @
faea48f8
...
...
@@ -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 @
faea48f8
...
...
@@ -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 @
faea48f8
...
...
@@ -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 @
faea48f8
...
...
@@ -169,8 +169,14 @@ static int _vp_config_file_version_load(void)
version
=
cJSON_GetObjectItem
(
json
,
"version"
);
if
(
version
!=
NULL
&&
version
->
type
==
cJSON_Number
){
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,6 +308,8 @@ 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
;
...
...
application/klansdk/kk_lan_vp_ctrl.c
View file @
faea48f8
...
...
@@ -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 @
faea48f8
...
...
@@ -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 @
faea48f8
...
...
@@ -256,22 +256,25 @@ 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
((
epNumObj
=
cJSON_GetObjectItem
(
deviceItem
,
"epNum"
))
!=
NULL
){
if
(
multi
!=
0
){
if
((
epNumObj
=
cJSON_GetObjectItem
(
deviceItem
,
"epNum"
))
!=
NULL
&&
epNumObj
->
type
==
cJSON_String
&&
if
(
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
&&
if
(
epNumObj
->
type
==
cJSON_String
&&
!
strcmp
(
epNumObj
->
valuestring
,
"1"
)){
snprintf
(
buf
,
size
,
"%s"
,
name
->
valuestring
);
return
1
;
}
return
1
;
}
}
else
{
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"
);
}
}
...
...
@@ -459,12 +471,15 @@ static int kk_vp_sync_device_single_ep(_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
){
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 @
faea48f8
...
...
@@ -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 @
faea48f8
...
...
@@ -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