diff --git a/applications/RS_485.c b/applications/RS_485.c index d2edea6..0e7b8ad 100644 --- a/applications/RS_485.c +++ b/applications/RS_485.c @@ -91,33 +91,34 @@ static void timer485_cb() { rt_sem_release(sendcmd); } - +static int b2v(uint8_t *din) +{ + int rst = (din[0] << 8) + din[1]; + return rst; +} void parseBattInfo(uint8_t *din, size_t len) { - LOG_HEX("batt",16,din,len); +// LOG_HEX("batt",16,din,len); uint8_t head[]={0x01,0x03,0x3a}; if (rt_memcmp(din, head, sizeof(head)) != 0) { LOG_W("answer from battery is error."); } rt_memcpy(&batt, din+sizeof(head), sizeof(batt)); - LOG_D("batt=%X,%X,%d\%",batt.level[0],batt.level[1]); -} -static uint16_t b2v(uint8_t *din) -{ - return din[0] << 8 + din[1]; +// LOG_D("batt=%X,%X,%d\%",batt.level[0],batt.level[1],b2v(batt.level)); } + static void dumpBattInfo() { - rt_kprintf("标称电压 %s\n",b2v(batt.norVol)); - rt_kprintf("电芯数量 %s\n",b2v(batt.cnt)); - rt_kprintf("电量 %s\n",b2v(batt.level)); - rt_kprintf("容量 %s\n",b2v(batt.Ah)); - rt_kprintf("输出电流 %s\n",b2v(batt.current)); - rt_kprintf("充电电流 %s\n",b2v(batt.incu)); - rt_kprintf("温度1 %s\n",b2v(batt.temp1)); - rt_kprintf("温度2 %s\n",b2v(batt.temp2)); - rt_kprintf("温度3 %s\n",b2v(batt.temp3)); - rt_kprintf("电芯 1电压 %s\n",b2v(batt.vol1)); + rt_kprintf("标称电压 %d\n",b2v(batt.norVol)); + rt_kprintf("电芯数量 %d\n",b2v(batt.cnt)); + rt_kprintf("电量 %d\n",b2v(batt.level)); + rt_kprintf("容量 %d\n",b2v(batt.Ah)); + rt_kprintf("输出电流 %d\n",b2v(batt.current)); + rt_kprintf("充电电流 %d\n",b2v(batt.incu)); + rt_kprintf("温度1 %d\n",b2v(batt.temp1)); + rt_kprintf("温度2 %d\n",b2v(batt.temp2)); + rt_kprintf("温度3 %d\n",b2v(batt.temp3)); + rt_kprintf("电芯 1电压 %d\n",b2v(batt.vol1)); } /** * 获取电池电量 @@ -125,7 +126,7 @@ static void dumpBattInfo() */ uint8_t getPowerLevel(void) { - return batt.level[1]; + return b2v(batt.level); } static void serial485_thread_entry(void *parameter) @@ -147,7 +148,6 @@ static void serial485_thread_entry(void *parameter) rt_device_write(serial485, 0, cmd, sizeof(cmd)); rt_pin_write(TR485_RE, PIN_LOW); } - rt_thread_mdelay(10*1000); rt_memset(&msg, 0, sizeof(msg)); /* 从消息队列中读取消息*/ @@ -167,6 +167,8 @@ static void serial485_thread_entry(void *parameter) parseBattInfo(rx_buffer, rx_length); } + rt_thread_mdelay(30*1000); + } diff --git a/applications/cfg/cfg.c b/applications/cfg/cfg.c index 5090f28..03f0887 100644 --- a/applications/cfg/cfg.c +++ b/applications/cfg/cfg.c @@ -25,16 +25,16 @@ volatile static uint8_t islock=0; static rt_mutex_t isCfgOk=RT_NULL; static rt_mutex_t isTosendOk=RT_NULL; -void initCfg() +void initCfgMutex() { isCfgOk = rt_mutex_create("cfg", RT_IPC_FLAG_FIFO); isTosendOk = rt_mutex_create("tosend", RT_IPC_FLAG_FIFO); } -INIT_APP_EXPORT(initCfg); +//INIT_APP_EXPORT(initCfg); static void setLock() { - rt_mutex_take(isCfgOk, RT_WAITING_FOREVER); +// rt_mutex_take(isCfgOk, RT_WAITING_FOREVER); return; while(islock) { @@ -45,9 +45,10 @@ static void setLock() } static void clearLock() { - rt_mutex_release(isCfgOk); - return; +// rt_mutex_release(isCfgOk); +// return; islock=0; + LOG_W("------file unlocked"); } extern rt_sem_t cfgUpdate; int get_cfg(const char *k); @@ -306,8 +307,8 @@ MSH_CMD_EXPORT_ALIAS(clear_sta,clsSta, 重置系统统计数据) volatile size_t nislock=0; static void nsetLock() { - rt_mutex_take(isTosendOk, RT_WAITING_FOREVER); - return; +// rt_mutex_take(isTosendOk, RT_WAITING_FOREVER); +// return; // LOG_D("--%d--",nislock); size_t cnt=10; while(nislock) @@ -323,8 +324,8 @@ static void nsetLock() } static void nclearLock() { - rt_mutex_release(isTosendOk); - return; +// rt_mutex_release(isTosendOk); +// return; nislock=0; LOG_W("file is unlocked."); } diff --git a/applications/core.c b/applications/core.c index 82b54fc..f4e29a4 100644 --- a/applications/core.c +++ b/applications/core.c @@ -212,7 +212,7 @@ void sysSemInit() // rt_event_init(&chkSta, "chkSta", RT_IPC_FLAG_FIFO);//检查天通状态 // rt_sem_release(cfgUpdate); //上电更新值 - initCfg(); + initCfgMutex(); // void reportINFO(); reportINFO(); /* 创建 serial 线程 */ @@ -252,7 +252,7 @@ void sysEventInit(void) void sysInit(void) { sysSemInit(); -// sysEventInit(); + initCfg(); if (isInWindowZone() || isManualWindow()) {//开机检查是否在开窗区间内,是则给TT开机 initTT(); setWindowMode(); @@ -671,6 +671,7 @@ void deInitTT_thread_entry() pwTT_thread_entry("0"); // startAlarm();//alarm 引起崩溃 clearWindowMode(); + setManualWindow(-1); LOG_W("shunt down TT DONE"); } // initThread = RT_NULL; @@ -689,7 +690,7 @@ void initTT() LOG_W("TT is already running."); return; } - initThread = rt_thread_create("initTT", initTT_thread_entry, RT_NULL, 1024 * 5, 20, 10); + initThread = rt_thread_create("initTT", initTT_thread_entry, RT_NULL, 1024 * 5, 25, 10); /* 创建成功则启动线程 */ if (initThread != RT_NULL) { @@ -705,7 +706,7 @@ void initTT() if (deinitThread != RT_NULL) { return; } - deinitThread = rt_thread_create("deInitTT", deInitTT_thread_entry, RT_NULL, 1024 * 5, 19, 10); + deinitThread = rt_thread_create("deInitTT", deInitTT_thread_entry, RT_NULL, 1024 * 5, 25, 10); /* 创建成功则启动线程 */ if (deinitThread != RT_NULL) { diff --git a/applications/func/func.c b/applications/func/func.c index dff4c9d..e3b4ce0 100644 --- a/applications/func/func.c +++ b/applications/func/func.c @@ -593,10 +593,10 @@ void updateAllSysCfg(uint8_t *cfg, size_t len) if (rst) { LOG_I("set value success."); } - if ((uint16_t)getFileSize("cfg.ini") != (uint16_t)getFileSize("sd/cfg.ini")) { - LOG_D("backup cfg file to sd"); - copy("cfg.ini", "sd/cfg.ini"); - } +// if ((uint16_t)getFileSize("cfg.ini") != (uint16_t)getFileSize("sd/cfg.ini")) { +// LOG_D("backup cfg file to sd"); +// copy("cfg.ini", "sd/cfg.ini"); +// } } /** * 上报系统各项工作参数 @@ -1109,6 +1109,14 @@ void parse3SData(uint8_t *din, size_t count) } else { LOG_W("无法解析的目标地址"); +// cacheDataToFile(din, count); + if (isTTjh()) + {//如果TT为开机状态(具备通信状态?待商榷)则不缓存直接发 + upSend(din, count); + } + else { + cacheDataToFile(din, count); + } } } diff --git a/applications/getinfo.c b/applications/getinfo.c index 2e87998..5ae18b1 100644 --- a/applications/getinfo.c +++ b/applications/getinfo.c @@ -474,7 +474,7 @@ void repGetTT(void) {} rt_memset(rstInfo,0x3f,RST_LEN);//初始化 /* 创建 serial 线程 */ - rt_thread_t thread = rt_thread_create("repGetTT", repGetTT_thread_entry, RT_NULL, 1024 * 10, 27+2, 10); + rt_thread_t thread = rt_thread_create("repGetTT", repGetTT_thread_entry, RT_NULL, 1024 * 30, 27+2, 10); /* 创建成功则启动线程 */ if (thread != RT_NULL) { diff --git a/applications/main.c b/applications/main.c index e7c4819..9bae3d3 100644 --- a/applications/main.c +++ b/applications/main.c @@ -86,7 +86,7 @@ void show_version(void) char str[30]; uint8_t t[10]; size_t len=time2Byte(t); - rt_kprintf("SW Version: %s, build-%s\n","1.6d",bytes2str(t, 3, 10, "", str)); + rt_kprintf("SW Version: %s, build-%s\n","1.7d",bytes2str(t, 3, 10, "", str)); } MSH_CMD_EXPORT(show_version,显示版本号);