修复常亮
This commit is contained in:
parent
ae32d60119
commit
6eb5df592e
55
main.c
55
main.c
@ -37,6 +37,7 @@ pthread_t pt_removeduplicatetag;
|
|||||||
pthread_t pt_keycheck;
|
pthread_t pt_keycheck;
|
||||||
pthread_t pt_mqtt_status;
|
pthread_t pt_mqtt_status;
|
||||||
pthread_t pt_station_heartbeat;
|
pthread_t pt_station_heartbeat;
|
||||||
|
pthread_t pt_simulate_light;
|
||||||
uart_utils_t uartSend = {0};
|
uart_utils_t uartSend = {0};
|
||||||
uart_utils_t uartRecvData = {0};
|
uart_utils_t uartRecvData = {0};
|
||||||
uart_utils_t uartRecvBack = {0};
|
uart_utils_t uartRecvBack = {0};
|
||||||
@ -72,6 +73,7 @@ int lightbars_size=0;
|
|||||||
int lightbars_count=0;
|
int lightbars_count=0;
|
||||||
uint8_t changecolor=0;
|
uint8_t changecolor=0;
|
||||||
uint8_t changesound=0;
|
uint8_t changesound=0;
|
||||||
|
uint8_t changeflash=3; // 1=常亮, 3=闪烁
|
||||||
uint8_t groupno=0;
|
uint8_t groupno=0;
|
||||||
int fd;
|
int fd;
|
||||||
int UPCASE=0;
|
int UPCASE=0;
|
||||||
@ -132,6 +134,7 @@ void hmacsha1_hex(char *key, char* data, char *signhex, int signhex_len);
|
|||||||
void *thread_mqtt_status_check(void *arg);
|
void *thread_mqtt_status_check(void *arg);
|
||||||
void *thread_station_heartbeat(void *arg);
|
void *thread_station_heartbeat(void *arg);
|
||||||
void *thread_heartbeat_check(void *arg);
|
void *thread_heartbeat_check(void *arg);
|
||||||
|
void *thread_simulate_light(void *arg);
|
||||||
void update_lightbar_heartbeat(uint32_t tagCode);
|
void update_lightbar_heartbeat(uint32_t tagCode);
|
||||||
void report_lightbar_login(uint32_t tagCode);
|
void report_lightbar_login(uint32_t tagCode);
|
||||||
void report_lightbar_logout(uint32_t tagCode);
|
void report_lightbar_logout(uint32_t tagCode);
|
||||||
@ -286,6 +289,42 @@ void *thread_heartbeat_check(void *arg) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================================*/
|
||||||
|
// 模拟亮灯线程函数 - 每30秒发送一次亮灯任务
|
||||||
|
void *thread_simulate_light(void *arg){
|
||||||
|
LOG_I("thread_simulate_light started\n");
|
||||||
|
|
||||||
|
char sim_payload[1024] = {0};
|
||||||
|
|
||||||
|
while(1){
|
||||||
|
sleep(30); // 每30秒执行一次
|
||||||
|
|
||||||
|
// 从/root/payload文件读取内容
|
||||||
|
FILE *fp = fopen("/root/payload", "r");
|
||||||
|
if(fp == NULL){
|
||||||
|
LOG_I("simulate_light: cannot open /root/payload\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(sim_payload, 0, sizeof(sim_payload));
|
||||||
|
if(fgets(sim_payload, sizeof(sim_payload), fp) != NULL){
|
||||||
|
// 去掉换行符
|
||||||
|
int len = strlen(sim_payload);
|
||||||
|
if(len > 0 && sim_payload[len-1] == '\n'){
|
||||||
|
sim_payload[len-1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_I("simulate_light: putting payload into queue\n");
|
||||||
|
LOG_I("payload: %s\n", sim_payload);
|
||||||
|
|
||||||
|
// 直接把payload放入消息队列,由thread_mqtt_recv处理
|
||||||
|
PutDataIntoMQueue(sim_payload);
|
||||||
|
}
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
pthread_exit(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/*================================================================================*/
|
/*================================================================================*/
|
||||||
void doCommand_help(int argc, char *argv[])
|
void doCommand_help(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@ -1357,7 +1396,7 @@ void *thread_uart_recv_ack(void *arg){
|
|||||||
.s.color=changecolor,
|
.s.color=changecolor,
|
||||||
.s.sound=changesound,
|
.s.sound=changesound,
|
||||||
.s.single=0,
|
.s.single=0,
|
||||||
.s.flash=3,
|
.s.flash=changeflash,
|
||||||
};//0xC1 11000001 flash高位
|
};//0xC1 11000001 flash高位
|
||||||
jt_led_or_group_package_t group={
|
jt_led_or_group_package_t group={
|
||||||
.group=groupno,
|
.group=groupno,
|
||||||
@ -1910,7 +1949,8 @@ void *thread_mqtt_recv(void *arg){
|
|||||||
// 解析Flashing字段(闪烁)
|
// 解析Flashing字段(闪烁)
|
||||||
int flashing_enable = 0;
|
int flashing_enable = 0;
|
||||||
get_int_from_json_string_by_key(msg_items,"Flashing",&flashing_enable);
|
get_int_from_json_string_by_key(msg_items,"Flashing",&flashing_enable);
|
||||||
LOG_I("Flashing = %d\n", flashing_enable);
|
changeflash = flashing_enable ? 3 : 1; // 3=闪烁, 1=常亮
|
||||||
|
LOG_I("Flashing = %d, changeflash = %d\n", flashing_enable, changeflash);
|
||||||
|
|
||||||
// 解析TagID字段(灯条ID)
|
// 解析TagID字段(灯条ID)
|
||||||
LOG_I("Before parsing TagID, msg_items = %s\n", msg_items);
|
LOG_I("Before parsing TagID, msg_items = %s\n", msg_items);
|
||||||
@ -2026,6 +2066,7 @@ void *thread_mqtt_recv(void *arg){
|
|||||||
isBindTag = false;
|
isBindTag = false;
|
||||||
|
|
||||||
// P点灯 B绑定 &群控(不支持) *根据id点亮
|
// P点灯 B绑定 &群控(不支持) *根据id点亮
|
||||||
|
// timeout单位是5秒,所以 Time(秒) / 5 = timeout
|
||||||
uart_data_send_head(&uartSend, 'P', 5, mqtt_parm.msg_duration/5, lightbars_size);
|
uart_data_send_head(&uartSend, 'P', 5, mqtt_parm.msg_duration/5, lightbars_size);
|
||||||
} else {
|
} else {
|
||||||
LOG_I("Processing OTA task (task_id: ota)\n");
|
LOG_I("Processing OTA task (task_id: ota)\n");
|
||||||
@ -2343,6 +2384,16 @@ int main(int argc, char *argv[])
|
|||||||
LOG_I("pthread_create heartbeat_check success\n");
|
LOG_I("pthread_create heartbeat_check success\n");
|
||||||
pthread_detach(pt_heartbeat_check);
|
pthread_detach(pt_heartbeat_check);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
ret = pthread_create(&pt_simulate_light,NULL,thread_simulate_light,NULL);
|
||||||
|
if(ret!=0){
|
||||||
|
LOG_I("pthread_create simulate_light fail\n");
|
||||||
|
}else{
|
||||||
|
LOG_I("pthread_create simulate_light success\n");
|
||||||
|
pthread_detach(pt_simulate_light);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if 0
|
#if 0
|
||||||
readresult=file_to_buffer("mqttRawPassword",&len);
|
readresult=file_to_buffer("mqttRawPassword",&len);
|
||||||
if(readresult!=NULL){
|
if(readresult!=NULL){
|
||||||
|
|||||||
@ -43,7 +43,7 @@ char nativeInvokTopicName[1024] = "";
|
|||||||
char nativeUpgradeTopicName[1024] = "";
|
char nativeUpgradeTopicName[1024] = "";
|
||||||
|
|
||||||
// 多个订阅topic数组
|
// 多个订阅topic数组
|
||||||
char subscribeTopics[5][1024] = {""};
|
char subscribeTopics[10][1024] = {""};
|
||||||
int subscribeTopicCount = 0;
|
int subscribeTopicCount = 0;
|
||||||
extern char softwareVersion[16];
|
extern char softwareVersion[16];
|
||||||
typedef struct{
|
typedef struct{
|
||||||
@ -357,6 +357,7 @@ int mqtt_utils_init(mqtt_utils_t *mqtt_config)
|
|||||||
sprintf(subscribeTopics[subscribeTopicCount++], "/iot/estation%s/bind", mqtt_conf->username);
|
sprintf(subscribeTopics[subscribeTopicCount++], "/iot/estation%s/bind", mqtt_conf->username);
|
||||||
sprintf(subscribeTopics[subscribeTopicCount++], "/iot/estation%s/group", mqtt_conf->username);
|
sprintf(subscribeTopics[subscribeTopicCount++], "/iot/estation%s/group", mqtt_conf->username);
|
||||||
sprintf(subscribeTopics[subscribeTopicCount++], "/iot%s/thing/ota/upgrade", mqtt_conf->username);
|
sprintf(subscribeTopics[subscribeTopicCount++], "/iot%s/thing/ota/upgrade", mqtt_conf->username);
|
||||||
|
sprintf(subscribeTopics[subscribeTopicCount++], "/sys/WcSubLightStrip/AD1000014C11/thing/service/lightOperate/invoke");
|
||||||
|
|
||||||
LOG_I("设置了%d个订阅topic:\n", subscribeTopicCount);
|
LOG_I("设置了%d个订阅topic:\n", subscribeTopicCount);
|
||||||
for(int i = 0; i < subscribeTopicCount; i++) {
|
for(int i = 0; i < subscribeTopicCount; i++) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user