添加demo板兼容逻辑
添加规则处理函数(未测试) 添加总usrcfg.h文件
This commit is contained in:
parent
9b76e1fbe8
commit
e35670b6a9
@ -17,15 +17,15 @@
|
|||||||
#include <board.h>
|
#include <board.h>
|
||||||
#include <ttmsg/ttmsg.h>
|
#include <ttmsg/ttmsg.h>
|
||||||
#include <cfg.h>
|
#include <cfg.h>
|
||||||
|
#include <usrcfg.h>
|
||||||
struct rt_event sw_check;//软件条件
|
struct rt_event sw_check;//软件条件
|
||||||
struct rt_event hw_check;//硬件条件
|
struct rt_event hw_check;//硬件条件
|
||||||
#define FILE_IS_OK 1
|
//#define FILE_IS_OK 1
|
||||||
#define TIMER_IS_OUT 1<<1
|
//#define TIMER_IS_OUT 1<<1
|
||||||
#define TT_IS_OK 1<<2
|
//#define TT_IS_OK 1<<2
|
||||||
|
|
||||||
static maxWaitTime = 4;
|
static int maxTTWaitTime = 4;
|
||||||
static maxRetryCnt = 3;
|
static int maxTTRetryCnt = 3;
|
||||||
|
|
||||||
static init()
|
static init()
|
||||||
{
|
{
|
||||||
@ -43,8 +43,8 @@ static init()
|
|||||||
*/
|
*/
|
||||||
static void updatecfg()
|
static void updatecfg()
|
||||||
{
|
{
|
||||||
maxWaitTime = get_cfg("maxWaitTime");
|
maxTTWaitTime = get_cfg("maxTTWaitTime");
|
||||||
maxRetryCnt = get_cfg("maxRetryCnt");
|
maxTTRetryCnt = get_cfg("maxTTRetryCnt");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,11 +52,34 @@ static void updatecfg()
|
|||||||
*/
|
*/
|
||||||
void checkTT()
|
void checkTT()
|
||||||
{
|
{
|
||||||
|
static rt_thread_t thread = RT_NULL;
|
||||||
//上电
|
//上电
|
||||||
pwTT_thread_entry("1");
|
pwTT_thread_entry("1");
|
||||||
// rt_thread_create(name, entry, parameter, stack_size, priority, tick)
|
//延时30s等待系统启动、可以GET信息,避免不必要的错误
|
||||||
getTT();
|
rt_thread_mdelay(1000*30);
|
||||||
|
|
||||||
|
char c[3][10]={"getTT","","3"} ;
|
||||||
|
getTT(3,c);
|
||||||
// getTTinfo_thread_entry()
|
// getTTinfo_thread_entry()
|
||||||
|
#ifdef NEW_THREAD
|
||||||
|
static CFG cfg;
|
||||||
|
memset(&cfg, 0, sizeof(CFG));
|
||||||
|
|
||||||
|
cfg.s = 3;
|
||||||
|
cfg.cnt = maxTTWaitTime/cfg.s-2;//避免通信异常
|
||||||
|
/* 创建 serial 线程 */
|
||||||
|
thread = rt_thread_create("getTT", getTTinfo_thread_entry, (void *) &cfg, 1024 * 3, 25, 10);
|
||||||
|
/* 创建成功则启动线程 */
|
||||||
|
if (thread != RT_NULL)
|
||||||
|
{
|
||||||
|
rt_thread_startup(thread);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LOG_E("thread 'getTT' create failure.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void try()
|
void try()
|
||||||
@ -68,31 +91,32 @@ void try()
|
|||||||
int e;
|
int e;
|
||||||
rst = rt_event_recv(&sw_check, FILE_IS_OK | TIMER_IS_OUT, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,
|
rst = rt_event_recv(&sw_check, FILE_IS_OK | TIMER_IS_OUT, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,
|
||||||
RT_WAITING_FOREVER, &e);
|
RT_WAITING_FOREVER, &e);
|
||||||
if (rst == RT_EOK)
|
if (rst == RT_EOK)//软件条件满足
|
||||||
{
|
{
|
||||||
//上电
|
//检查硬件条件
|
||||||
pwTT_thread_entry("1");
|
checkTT();
|
||||||
|
//打包数据
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t var = 0; var < maxRetryCnt; ++var)
|
for (size_t var = 0; var < maxTTRetryCnt; ++var)//轮询尝试
|
||||||
{
|
{
|
||||||
rst = rt_event_recv(&sw_check, TT_IS_OK, RT_EVENT_FLAG_CLEAR, rt_tick_from_millisecond(maxWaitTime * 1000),
|
rst = rt_event_recv(&sw_check, TT_IS_OK, RT_EVENT_FLAG_CLEAR, rt_tick_from_millisecond(maxTTWaitTime * 1000),
|
||||||
&e);
|
&e);
|
||||||
if (rst == RT_ETIMEOUT)
|
if (rst == RT_EOK)//硬件条件满足
|
||||||
{
|
|
||||||
pwTT_thread_entry("0");
|
|
||||||
rt_thread_mdelay(1000);
|
|
||||||
pwTT_thread_entry("1");
|
|
||||||
}
|
|
||||||
else if (rst == RT_EOK)
|
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
elseif(rst == RT_ETIMEOUT);//超时则重试
|
||||||
{
|
{
|
||||||
LOG_E("Unknown error.");
|
pwTT_thread_entry("0");
|
||||||
|
rt_thread_mdelay(1000);
|
||||||
|
checkTT();
|
||||||
|
// continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//发送数据
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -132,7 +132,7 @@ MSH_CMD_EXPORT(cfg, config params. 配置系统参数,支持参数)
|
|||||||
* @param k
|
* @param k
|
||||||
* return 成功返回值,错误返回RT_ERROR
|
* return 成功返回值,错误返回RT_ERROR
|
||||||
*/
|
*/
|
||||||
static long get_val(const char *k)
|
long get_val(const char *k)
|
||||||
{
|
{
|
||||||
long v= ini_getl("stats", k, -1, LJW_CFG_FILE_NAME);
|
long v= ini_getl("stats", k, -1, LJW_CFG_FILE_NAME);
|
||||||
if( v == -1)
|
if( v == -1)
|
||||||
@ -145,7 +145,7 @@ static long get_val(const char *k)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int set_val(const char *k, long v)
|
int set_val(const char *k, long v)
|
||||||
{
|
{
|
||||||
if(!ini_putl("stats",k,v,LJW_CFG_FILE_NAME))
|
if(!ini_putl("stats",k,v,LJW_CFG_FILE_NAME))
|
||||||
{
|
{
|
||||||
|
@ -31,6 +31,8 @@ typedef struct
|
|||||||
int get_cfg(const char *k);
|
int get_cfg(const char *k);
|
||||||
int set_cfg(const char *k, const char*v);
|
int set_cfg(const char *k, const char*v);
|
||||||
int add_val(const char *k);
|
int add_val(const char *k);
|
||||||
|
long get_val(const char *k);
|
||||||
|
int set_val(const char *k, long v);
|
||||||
|
|
||||||
int setFileToSend(const char *f, int v);
|
int setFileToSend(const char *f, int v);
|
||||||
int getFilesToSend(char (*kstr)[MAX_KEY_LEN], int *v);
|
int getFilesToSend(char (*kstr)[MAX_KEY_LEN], int *v);
|
||||||
|
@ -20,6 +20,7 @@ void getcfg(void)
|
|||||||
// extern struct rt_messagequeue update_cfg;
|
// extern struct rt_messagequeue update_cfg;
|
||||||
extern struct rt_event update_cfg;
|
extern struct rt_event update_cfg;
|
||||||
CFG_MSG msg;
|
CFG_MSG msg;
|
||||||
|
pwTT_thread_entry("1");
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -43,7 +44,7 @@ void getcfg(void)
|
|||||||
void mpcfg()
|
void mpcfg()
|
||||||
{
|
{
|
||||||
/* 创建线程 */
|
/* 创建线程 */
|
||||||
rt_thread_t thread = rt_thread_create("getcfg", getcfg, RT_NULL, 1024 * 1, 20, 10);
|
rt_thread_t thread = rt_thread_create("getcfg", getcfg, RT_NULL, 1024 * 2, 20, 10);
|
||||||
/* 创建成功则启动线程 */
|
/* 创建成功则启动线程 */
|
||||||
if (thread != RT_NULL)
|
if (thread != RT_NULL)
|
||||||
{
|
{
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#define MAX_LEN 15
|
#define MAX_LEN 15
|
||||||
#include <cJSON.h>
|
#include <cJSON.h>
|
||||||
#include <finsh.h>
|
#include <finsh.h>
|
||||||
|
#include <usrcfg.h>
|
||||||
//#include <stdio.h>
|
//#include <stdio.h>
|
||||||
//#include <stdlib.h> //用于strtod函数
|
//#include <stdlib.h> //用于strtod函数
|
||||||
//#include <string.h>
|
//#include <string.h>
|
||||||
@ -48,6 +48,7 @@ typedef struct
|
|||||||
|
|
||||||
static TT tmp;
|
static TT tmp;
|
||||||
static TT *TTinfo=&tmp;
|
static TT *TTinfo=&tmp;
|
||||||
|
static rt_tick_t bootstamp=0;
|
||||||
|
|
||||||
//rt_memset(&tmp,0,sizeof(TT));
|
//rt_memset(&tmp,0,sizeof(TT));
|
||||||
//TTinfo = rt_malloc(sizeof(TT));
|
//TTinfo = rt_malloc(sizeof(TT));
|
||||||
@ -89,10 +90,67 @@ rt_uint8_t info2HEX(TT *TTinfo, rt_uint8_t *buffer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//TT TTinfo;
|
|
||||||
//TTinfo = (TT*)malloc(sizeof(TT));
|
|
||||||
|
|
||||||
//TTinfo = &tmp;
|
static int minTTPeriCnt=5;
|
||||||
|
static int minTTsinal=5;
|
||||||
|
static int minActiveTime=0;
|
||||||
|
static int maxActiveTime=0;
|
||||||
|
extern struct rt_event sw_check;//软件条件
|
||||||
|
static void updatecfg()
|
||||||
|
{
|
||||||
|
minTTsinal = get_cfg("minTTsinal");
|
||||||
|
minTTPeriCnt = get_cfg("minTTPeriCnt");
|
||||||
|
minActiveTime = get_val("minActiveTime");
|
||||||
|
maxActiveTime = get_val("maxActiveTime");
|
||||||
|
LOG_D("加载参数完成");
|
||||||
|
}
|
||||||
|
void initcfg()
|
||||||
|
{
|
||||||
|
updatecfg();
|
||||||
|
bootstamp = rt_tick_get_millisecond();
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateSta()
|
||||||
|
{
|
||||||
|
uint16_t v = (rt_tick_get_millisecond()-bootstamp)/1000;//转换为秒
|
||||||
|
LOG_D("耗时%dS.",v);
|
||||||
|
if ((minActiveTime ==0) | (minActiveTime > v)) {
|
||||||
|
minTTsinal = v;
|
||||||
|
set_val("minActiveTime", v);
|
||||||
|
}
|
||||||
|
if (v>maxActiveTime) {
|
||||||
|
maxActiveTime=v;
|
||||||
|
set_val("maxActiveTime", v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按规则检查TT状态
|
||||||
|
*/
|
||||||
|
void rulecheck(void)
|
||||||
|
{
|
||||||
|
//默认为 TT连续5个周期为激活状态且信号强度不低于5。
|
||||||
|
//满足加1,不满足清零
|
||||||
|
static int okCnt=0;
|
||||||
|
LOG_I("当前规则为:连续%d个采集周期TT信号质量不低于%d",minTTPeriCnt,minTTsinal);
|
||||||
|
if (atoi(TTinfo->jh) & !(atoi(TTinfo->xh) < minTTsinal) ) {//
|
||||||
|
okCnt += 1;
|
||||||
|
LOG_D("第%d次符合规则。",okCnt);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
okCnt = 0;
|
||||||
|
LOG_D("不符合。");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (okCnt > minTTPeriCnt -1) {
|
||||||
|
//TT具备发送条件
|
||||||
|
rt_event_send(&sw_check, TT_IS_OK);
|
||||||
|
LOG_D("符合规则,TT具备发送状态。");
|
||||||
|
updateSta();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
/* 数据解析 */
|
/* 数据解析 */
|
||||||
static void tt_parse(rt_uint8_t *data)
|
static void tt_parse(rt_uint8_t *data)
|
||||||
{
|
{
|
||||||
@ -196,6 +254,7 @@ static int webclient_get_data(const char *url)
|
|||||||
|
|
||||||
void getTTinfo_thread_entry(void* parameter)
|
void getTTinfo_thread_entry(void* parameter)
|
||||||
{
|
{
|
||||||
|
// bootstamp = rt_tick_get();
|
||||||
|
|
||||||
CFG* cfg = RT_NULL;
|
CFG* cfg = RT_NULL;
|
||||||
cfg = (CFG*) parameter;
|
cfg = (CFG*) parameter;
|
||||||
@ -223,6 +282,7 @@ void getTTinfo_thread_entry(void* parameter)
|
|||||||
web_free(url);
|
web_free(url);
|
||||||
rt_thread_mdelay(100);
|
rt_thread_mdelay(100);
|
||||||
}
|
}
|
||||||
|
rulecheck();
|
||||||
rt_kprintf("%5s%5d%5d%5d%15s%15s%10s\n", TTinfo->sim, TTinfo->xh, TTinfo->rw, TTinfo->jh, TTinfo->jd,
|
rt_kprintf("%5s%5d%5d%5d%15s%15s%10s\n", TTinfo->sim, TTinfo->xh, TTinfo->rw, TTinfo->jh, TTinfo->jd,
|
||||||
TTinfo->wd, TTinfo->ele);
|
TTinfo->wd, TTinfo->ele);
|
||||||
if (i != cfg->cnt - 1) //最后一次采集不延时
|
if (i != cfg->cnt - 1) //最后一次采集不延时
|
||||||
|
@ -132,4 +132,4 @@ void pp(int argc, char **argv)
|
|||||||
|
|
||||||
MSH_CMD_EXPORT(pp, 打包文件。);
|
MSH_CMD_EXPORT(pp, 打包文件。);
|
||||||
extern int rt_hw_stm32_eth_init(void);
|
extern int rt_hw_stm32_eth_init(void);
|
||||||
//MSH_CMD_EXPORT(rt_hw_stm32_eth_init, 初始化网络。);
|
MSH_CMD_EXPORT(rt_hw_stm32_eth_init, 初始化网络。);
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
|
#include <ttmsg/ttmsg.h>
|
||||||
|
|
||||||
|
|
||||||
/* 定时器的控制块 */
|
/* 定时器的控制块 */
|
||||||
@ -72,6 +72,7 @@ static void timeout1(void *parameter)
|
|||||||
rt_timer_stop(timer1);
|
rt_timer_stop(timer1);
|
||||||
|
|
||||||
rt_kprintf("periodic timer was stopped! \n");
|
rt_kprintf("periodic timer was stopped! \n");
|
||||||
|
// pwTT_thread_entry("0");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +85,7 @@ static void timeout1(void *parameter)
|
|||||||
static void timeout2(void *parameter)
|
static void timeout2(void *parameter)
|
||||||
|
|
||||||
{
|
{
|
||||||
|
// pwTT_thread_entry("1");
|
||||||
rt_kprintf("one shot timer is timeout\n");
|
rt_kprintf("one shot timer is timeout\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
17
applications/usrcfg.h
Normal file
17
applications/usrcfg.h
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Change Logs:
|
||||||
|
* Date Author Notes
|
||||||
|
* 2023-06-02 murmur the first version
|
||||||
|
*/
|
||||||
|
#ifndef APPLICATIONS_USRCFG_H_
|
||||||
|
#define APPLICATIONS_USRCFG_H_
|
||||||
|
|
||||||
|
#define FILE_IS_OK 1
|
||||||
|
#define TIMER_IS_OUT 1<<1
|
||||||
|
#define TT_IS_OK 1<<2
|
||||||
|
|
||||||
|
#endif /* APPLICATIONS_USRCFG_H_ */
|
@ -66,7 +66,7 @@ extern "C"
|
|||||||
* such as #define BSP_UART1_RX_USING_DMA
|
* such as #define BSP_UART1_RX_USING_DMA
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
#ifdef WORK_BOARD
|
||||||
#define BSP_USING_UART1
|
#define BSP_USING_UART1
|
||||||
#define BSP_UART1_TX_PIN "PB6"
|
#define BSP_UART1_TX_PIN "PB6"
|
||||||
#define BSP_UART1_RX_PIN "PB7"
|
#define BSP_UART1_RX_PIN "PB7"
|
||||||
@ -76,7 +76,17 @@ extern "C"
|
|||||||
#define BSP_UART3_TX_PIN "PB10"
|
#define BSP_UART3_TX_PIN "PB10"
|
||||||
#define BSP_UART3_RX_PIN "PB11"
|
#define BSP_UART3_RX_PIN "PB11"
|
||||||
#define BSP_UART3_RX_USING_DMA
|
#define BSP_UART3_RX_USING_DMA
|
||||||
|
#else
|
||||||
|
#define BSP_USING_UART1
|
||||||
|
#define BSP_UART1_TX_PIN "PA9"
|
||||||
|
#define BSP_UART1_RX_PIN "PA10"
|
||||||
|
#define BSP_UART1_RX_USING_DMA
|
||||||
|
|
||||||
|
#define BSP_USING_UART3
|
||||||
|
#define BSP_UART3_TX_PIN "PB10"
|
||||||
|
#define BSP_UART3_RX_PIN "PB11"
|
||||||
|
#define BSP_UART3_RX_USING_DMA
|
||||||
|
#endif
|
||||||
|
|
||||||
/*-------------------------- UART CONFIG END --------------------------*/
|
/*-------------------------- UART CONFIG END --------------------------*/
|
||||||
|
|
||||||
@ -370,12 +380,16 @@ extern "C"
|
|||||||
|
|
||||||
/*#define BSP_USING_ON_CHIP_FLASH*/
|
/*#define BSP_USING_ON_CHIP_FLASH*/
|
||||||
|
|
||||||
|
#ifdef WORK_BOARD
|
||||||
#define LED_HEART GET_PIN(E,3)
|
#define LED_HEART GET_PIN(E,3)
|
||||||
#define LED_HEART_DEBUG GET_PIN(B,3)
|
#define LED_HEART_DEBUG GET_PIN(B,3)
|
||||||
#define TT_EN GET_PIN(B,0)
|
#define TT_EN GET_PIN(B,0)
|
||||||
#ifndef ETH_RESET_PIN
|
#define ETH_RESET_PIN GET_PIN(A, 4)//E-7
|
||||||
#define ETH_RESET_PIN GET_PIN(A, 4)//E-7
|
#else
|
||||||
|
#define LED_HEART GET_PIN(E,3)
|
||||||
|
// #define LED_HEART_DEBUG GET_PIN(B,3)
|
||||||
|
#define TT_EN GET_PIN(B,0)
|
||||||
|
#define ETH_RESET_PIN GET_PIN(E, 7)
|
||||||
#endif
|
#endif
|
||||||
////#define RESET_LB GET_PIN(E, 1)
|
////#define RESET_LB GET_PIN(E, 1)
|
||||||
////#define RESET_UB GET_PIN(E, 0)
|
////#define RESET_UB GET_PIN(E, 0)
|
||||||
|
@ -370,7 +370,7 @@
|
|||||||
/* end of RT-Thread online packages */
|
/* end of RT-Thread online packages */
|
||||||
|
|
||||||
/* samples: kernel and components samples */
|
/* samples: kernel and components samples */
|
||||||
|
#define WORK_BOARD
|
||||||
/* end of samples: kernel and components samples */
|
/* end of samples: kernel and components samples */
|
||||||
#define RT_STUDIO_BUILT_IN
|
#define RT_STUDIO_BUILT_IN
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user