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
15e812ee
Commit
15e812ee
authored
Sep 18, 2020
by
chen.weican
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】修改启动后误报offline的bug
【提交人】陈伟灿
parent
c60ccdf7
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
131 additions
and
129 deletions
+131
-129
midware/midware/dm/kk_dm_heartbeat.c
midware/midware/dm/kk_dm_heartbeat.c
+128
-126
midware/midware/midware.c
midware/midware/midware.c
+3
-3
No files found.
midware/midware/dm/kk_dm_heartbeat.c
View file @
15e812ee
#include <string.h>
#include <stdlib.h>
#include "klist.h"
#include "kk_log.h"
#include "kk_tsl_common.h"
#include "kk_dm_mng.h"
typedef
struct
{
void
*
mutex
;
void
*
hearbeat_thread
;
int
hearbeat_thread_running
;
//struct list_head dev_list;
}
kk_heartbeat_ctx_t
;
#if 0
typedef struct {
unsigned int timerstamp;
char deviceCode[DEVICE_CODE_MAXLEN];
struct list_head linked_list;
} kk_dev_heartbeat_node_t;
static int _kk_add_heartbeat_node(const char* deviceCode,unsigned int timestamp)
{
kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx();
kk_dev_heartbeat_node_t *node = NULL;
node = malloc(sizeof(kk_dev_heartbeat_node_t));
if (node == NULL) {
return MEMORY_NOT_ENOUGH;
}
_kk_heartbeat_lock();
memset(node,0x0,sizeof(kk_dev_heartbeat_node_t));
memcpy(node->deviceCode,deviceCode,strlen(deviceCode));
node->timerstamp = timestamp;
INIT_LIST_HEAD(&node->linked_list);
list_add_tail(&node->linked_list, &ctx->dev_list);
_kk_heartbeat_unlock();
return SUCCESS_RETURN;
}
int kk_heartbeat_update_time(const char deviceCode[DEVICE_CODE_MAXLEN],unsigned int timestamp)
{
kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx();
kk_dev_heartbeat_node_t *search_node = NULL;
_kk_heartbeat_lock();
list_for_each_entry(search_node, &ctx->dev_list, linked_list, kk_dev_heartbeat_node_t) {
if ( (strlen(search_node->deviceCode) == strlen(deviceCode)) &&
(memcmp(search_node->deviceCode, deviceCode, strlen(deviceCode)) == 0)) {
search_node->timerstamp = timestamp;
_kk_heartbeat_unlock();
return SUCCESS_RETURN;
}
}
_kk_add_heartbeat_node(deviceCode,timestamp);
_kk_heartbeat_unlock();
return FAIL_RETURN;
}
#endif
static
kk_heartbeat_ctx_t
s_kk_heartbeat_ctx
=
{
0
};
static
kk_heartbeat_ctx_t
*
_kk_heartbeat_get_ctx
(
void
)
{
return
&
s_kk_heartbeat_ctx
;
}
static
void
_kk_heartbeat_lock
(
void
)
{
kk_heartbeat_ctx_t
*
ctx
=
_kk_heartbeat_get_ctx
();
if
(
ctx
->
mutex
)
{
HAL_MutexLock
(
ctx
->
mutex
);
}
}
static
void
_kk_heartbeat_unlock
(
void
)
{
kk_heartbeat_ctx_t
*
ctx
=
_kk_heartbeat_get_ctx
();
if
(
ctx
->
mutex
)
{
HAL_MutexUnlock
(
ctx
->
mutex
);
}
}
void
*
kk_heartbeat_yield
(
void
*
args
)
{
kk_heartbeat_ctx_t
*
ctx
=
_kk_heartbeat_get_ctx
();
uint64_t
current_time
=
0
;
dm_mgr_dev_node_t
*
search_node
=
NULL
;
while
(
ctx
->
hearbeat_thread_running
)
{
current_time
=
HAL_UptimeMs
();
_kk_heartbeat_lock
();
dm_mgr_check_heartbeat_timeout
(
current_time
);
_kk_heartbeat_unlock
();
sleep
(
30
);
}
return
NULL
;
}
int
kk_heartbeat_init
(
void
)
{
int
res
=
0
;
kk_heartbeat_ctx_t
*
ctx
=
_kk_heartbeat_get_ctx
();
/* Create Mutex */
ctx
->
mutex
=
HAL_MutexCreate
();
if
(
ctx
->
mutex
==
NULL
)
{
return
FAIL_RETURN
;
}
/* Init Device Id*/
ctx
->
hearbeat_thread_running
=
1
;
res
=
pthread_create
(
&
ctx
->
hearbeat_thread
,
NULL
,
kk_heartbeat_yield
,
NULL
);
if
(
res
<
0
)
{
ERROR_PRINT
(
"HAL_ThreadCreate ota Failed
\n
"
);
//IOT_Linkkit_Close(mid_ctx->master_devid);
return
FAIL_RETURN
;
}
return
SUCCESS_RETURN
;
/* Init Device List */
// INIT_LIST_HEAD(&ctx->dev_list);
}
#include <string.h>
#include <stdlib.h>
#include "klist.h"
#include "kk_log.h"
#include "kk_tsl_common.h"
#include "kk_dm_mng.h"
typedef
struct
{
void
*
mutex
;
void
*
hearbeat_thread
;
int
hearbeat_thread_running
;
//struct list_head dev_list;
}
kk_heartbeat_ctx_t
;
#if 0
typedef struct {
unsigned int timerstamp;
char deviceCode[DEVICE_CODE_MAXLEN];
struct list_head linked_list;
} kk_dev_heartbeat_node_t;
static int _kk_add_heartbeat_node(const char* deviceCode,unsigned int timestamp)
{
kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx();
kk_dev_heartbeat_node_t *node = NULL;
node = malloc(sizeof(kk_dev_heartbeat_node_t));
if (node == NULL) {
return MEMORY_NOT_ENOUGH;
}
_kk_heartbeat_lock();
memset(node,0x0,sizeof(kk_dev_heartbeat_node_t));
memcpy(node->deviceCode,deviceCode,strlen(deviceCode));
node->timerstamp = timestamp;
INIT_LIST_HEAD(&node->linked_list);
list_add_tail(&node->linked_list, &ctx->dev_list);
_kk_heartbeat_unlock();
return SUCCESS_RETURN;
}
int kk_heartbeat_update_time(const char deviceCode[DEVICE_CODE_MAXLEN],unsigned int timestamp)
{
kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx();
kk_dev_heartbeat_node_t *search_node = NULL;
_kk_heartbeat_lock();
list_for_each_entry(search_node, &ctx->dev_list, linked_list, kk_dev_heartbeat_node_t) {
if ( (strlen(search_node->deviceCode) == strlen(deviceCode)) &&
(memcmp(search_node->deviceCode, deviceCode, strlen(deviceCode)) == 0)) {
search_node->timerstamp = timestamp;
_kk_heartbeat_unlock();
return SUCCESS_RETURN;
}
}
_kk_add_heartbeat_node(deviceCode,timestamp);
_kk_heartbeat_unlock();
return FAIL_RETURN;
}
#endif
static
kk_heartbeat_ctx_t
s_kk_heartbeat_ctx
=
{
0
};
static
kk_heartbeat_ctx_t
*
_kk_heartbeat_get_ctx
(
void
)
{
return
&
s_kk_heartbeat_ctx
;
}
static
void
_kk_heartbeat_lock
(
void
)
{
kk_heartbeat_ctx_t
*
ctx
=
_kk_heartbeat_get_ctx
();
if
(
ctx
->
mutex
)
{
HAL_MutexLock
(
ctx
->
mutex
);
}
}
static
void
_kk_heartbeat_unlock
(
void
)
{
kk_heartbeat_ctx_t
*
ctx
=
_kk_heartbeat_get_ctx
();
if
(
ctx
->
mutex
)
{
HAL_MutexUnlock
(
ctx
->
mutex
);
}
}
uint64_t
s_start_time
=
0
;
void
*
kk_heartbeat_yield
(
void
*
args
)
{
kk_heartbeat_ctx_t
*
ctx
=
_kk_heartbeat_get_ctx
();
uint64_t
current_time
=
0
;
dm_mgr_dev_node_t
*
search_node
=
NULL
;
while
(
ctx
->
hearbeat_thread_running
)
{
current_time
=
HAL_UptimeMs
()
-
s_start_time
;
_kk_heartbeat_lock
();
dm_mgr_check_heartbeat_timeout
(
current_time
);
_kk_heartbeat_unlock
();
sleep
(
30
);
}
return
NULL
;
}
int
kk_heartbeat_init
(
void
)
{
int
res
=
0
;
kk_heartbeat_ctx_t
*
ctx
=
_kk_heartbeat_get_ctx
();
/* Create Mutex */
ctx
->
mutex
=
HAL_MutexCreate
();
if
(
ctx
->
mutex
==
NULL
)
{
return
FAIL_RETURN
;
}
/* Init Device Id*/
ctx
->
hearbeat_thread_running
=
1
;
s_start_time
=
HAL_UptimeMs
();
res
=
pthread_create
(
&
ctx
->
hearbeat_thread
,
NULL
,
kk_heartbeat_yield
,
NULL
);
if
(
res
<
0
)
{
ERROR_PRINT
(
"HAL_ThreadCreate ota Failed
\n
"
);
//IOT_Linkkit_Close(mid_ctx->master_devid);
return
FAIL_RETURN
;
}
return
SUCCESS_RETURN
;
/* Init Device List */
// INIT_LIST_HEAD(&ctx->dev_list);
}
midware/midware/midware.c
View file @
15e812ee
...
...
@@ -158,7 +158,7 @@ void gw2mid_cb(void* data, int len, char* chalMark){
}
}
extern
uint64_t
s_start_time
;
void
kk_platMsg_handle
(
void
*
data
,
char
*
chalMark
){
char
*
out
;
...
...
@@ -197,10 +197,10 @@ void kk_platMsg_handle(void* data, char* chalMark){
}
if
(
chalMark
!=
NULL
){
dm_mgr_update_timestamp_by_devicecode
(
chalMark
,
HAL_UptimeMs
());
dm_mgr_update_timestamp_by_devicecode
(
chalMark
,
HAL_UptimeMs
()
-
s_start_time
);
}
dm_mgr_update_timestamp_by_devicecode
(
info_dcode
->
valuestring
,
HAL_UptimeMs
());
dm_mgr_update_timestamp_by_devicecode
(
info_dcode
->
valuestring
,
HAL_UptimeMs
()
-
s_start_time
);
if
(
strcmp
(
msgType
->
valuestring
,
KK_THING_TOPO_ADD_MSG
)
==
0
){
proCode
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_PRODUCT_CODE_STR
);
...
...
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