Commit 9aa96c00 authored by 陈伟灿's avatar 陈伟灿

Merge branch 'cwc' into 'master'

Cwc

See merge request chenweican/k-sdk!13
parents 4dcf5660 70cb1a92
#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);
}
......@@ -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);
......
......@@ -209,7 +209,7 @@ void kk_device_table_delete(EmberEUI64 mac)
if(MEMCOMPARE(ptr->mac,mac,sizeof(EmberEUI64))==0){
if(ptr->next==NULL){
free(ptr);
kk_zb_device_table = NULL;
ptr_temp->next = NULL;
emberAfCorePrintln("[KK device table]delete,now is empty !!!");
return ;
}else{
......
......@@ -5,17 +5,19 @@ do
sleep 30
PIDS=`ps|grep kk_midware |grep -v grep | awk '{print $1}'`
if [ "$PIDS" != "" ]; then
echo "kk_midware is runing!"
echo "kk_midware is runing!"
else
/home/kk/kk_midware >/dev/null 2>&1 &
/home/kk/kk_midware >/dev/null 2>&1 &
#运行进程
fi
sleep 30
PIDS=`ps|grep kcloud |grep -v grep | awk '{print $1}'`
if [ "$PIDS" != "" ]; then
echo "kcloud is runing!"
echo "kcloud is runing!"
else
/home/kk/kcloud >/dev/null 2>&1 &
#运行进程
echo "kcloud is not running ,now restart kk_midware and kcloud"
pgrep kk_midware | xargs kill -s 9
/home/kk/kk_midware >/dev/null 2>&1 &
/home/kk/kcloud >/dev/null 2>&1 &
fi
done
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment