Parcourir la source

添加db接口

guohui il y a 1 an
Parent
commit
f8be6d1365

+ 1 - 2
f407/applications/breaker.c

@@ -154,7 +154,6 @@ int breaker_set(breaker_data_t *data)
 }
 
 
-
 int breaker_data_get(breaker_all_t *all)
 {
     int i,cnt;
@@ -182,7 +181,7 @@ int breaker_data_get(breaker_all_t *all)
     
     for(i=0; i<all->cnt; i++) {
         sprintf(all->data[i].info.name, "SW%d", i);
-        all->data[i].samp.bid = i;
+        all->data[i].samp.id = i;
         all->data[i].samp.nid = 0;
     }
     lock_off(h->lck);

+ 4 - 4
f407/applications/cascade.c

@@ -662,11 +662,11 @@ void cascade_scan_thread(void *arg)
 					slave_info.north->data.ac_dc.switch_stu[i] = 0;
 				for(int i = 0; i < cnt;i++)
 				{
-					slave_info.north->data.ac_dc.delay_open[i] = all.pch[i].info.start_delay;
+					slave_info.north->data.ac_dc.delay_open[i] = all.pch[i].info.open_delay;
 				}
 				for(int i = 0; i < cnt;i++)
 				{
-					slave_info.north->data.ac_dc.delay_close[i] = all.pch[i].info.stop_delay;
+					slave_info.north->data.ac_dc.delay_close[i] = all.pch[i].info.close_delay;
 				}
 			}else
 			{
@@ -698,11 +698,11 @@ void cascade_scan_thread(void *arg)
 				}	
 				for(int i = 0; i < cnt;i++)
 				{
-					slave_info.north->data.ac_3.delay_open[i] = all.pch[i].info.start_delay;
+					slave_info.north->data.ac_3.delay_open[i] = all.pch[i].info.open_delay;
 				}
 				for(int i = 0; i < cnt;i++)
 				{
-					slave_info.north->data.ac_3.delay_close[i] = all.pch[i].info.stop_delay;
+					slave_info.north->data.ac_3.delay_close[i] = all.pch[i].info.close_delay;
 				}
 				
 			}

+ 30 - 31
f407/applications/datadef.h

@@ -191,9 +191,6 @@ typedef struct {
     char        batch[32];                  //设备生产批次
 
     uint8_t     type;                       //产品类型
-    uint8_t     pwr_type;                   //电源类型
-    char        version[8];                 //软件版本
-    uint8_t     language;                   //多国语言
     uint8_t     count;                      //级联设备数
     uint32_t    samp_time;                  //采集周期 单位ms
     uint32_t    save_time;                  //采集周期 单位ms
@@ -233,9 +230,13 @@ typedef struct {
     char                ver[16];
     char                bldtime[32];
 }version_data_t;
-
 typedef struct {
     uint8_t             lang;
+    int8_t              tzone;
+}system_data_t;
+
+typedef struct {
+    system_data_t       sys;
     version_data_t      ver;
     modbus_data_t       cas;
     misc_data_t         misc;
@@ -244,10 +245,6 @@ typedef struct {
     network_data_t      netwk;
 }paras_data_t;
 
-typedef struct {
-    uint8_t             lang;
-}sys_data_t;
-
 typedef struct {
     float               voltage;                //电压
     float               current;                //电流
@@ -302,8 +299,8 @@ typedef struct {
     uint8_t             ph_id;                   //phase id, 0:L1相 1:L2相 2:L3相
     
     uint8_t             ph_val;                  //三相输出设置,0:单相  1:三相
-    uint32_t            start_delay;
-    uint32_t            stop_delay;
+    uint32_t            open_delay;
+    uint32_t            close_delay;
 }info_t;
 typedef struct {
     info_t              info;
@@ -319,7 +316,7 @@ typedef struct {
     uint8_t             addr;
 }breaker_info_t;
 typedef struct {
-    uint8_t             bid;                    //breaker id
+    uint8_t             id;                     //breaker id
     uint8_t             nid;                    //node id
     uint8_t             sw;
     uint32_t            time;
@@ -386,20 +383,21 @@ typedef struct {
 }power_all_t;
 
 typedef struct {
+    char                name[32];
     uint8_t             type;
     uint8_t             subtype;
     uint8_t             addr;
     uint8_t             subaddr;
+    uint8_t             val_cnt;
 }sensor_info_t;
-typedef union {
-    char                name[32];
-    uint32_t            flag;
-    float               val[2];
-    uint32_t            time;
-}sensor_samp_t;
+typedef struct {
+    thr_val_t           thr;
+    float               value;
+}sensor_val_t;
 typedef struct {
     sensor_info_t       info;
-    sensor_samp_t       samp;
+    sensor_val_t        val[2];
+    uint32_t            time;
 }sensor_data_t;
 typedef struct {
     uint8_t             cnt;
@@ -524,10 +522,9 @@ typedef struct {
 }mqtt_info_t;
 
 typedef struct {
-    uint32_t    id;
-    uint32_t    type;
-    uint32_t    time;
-    char        *content;
+    uint8_t             type;
+    char                *content;
+    uint32_t            time;
 }log_data_t;
 ///////////////////////////////////////////////////////////
 typedef struct ac_dc_out{
@@ -617,7 +614,7 @@ typedef struct {
 
 
 enum {
-    PKT_TYPE_ACK=0,             
+    PKT_TYPE_ACK=0,    
     PKT_TYPE_PARAS,             
     PKT_TYPE_POWER_CH,          //power_ch_t
     PKT_TYPE_POWER_TOTAL,       //power_total_t
@@ -640,10 +637,10 @@ enum {
     SUB_TYPE_POWER_SWITCH=0,            //set relay switch
     SUB_TYPE_POWER_ALARM,
     SUB_TYPE_POWER_THRESHOLD,
-    SUB_TYPE_POWER_START_DELAY,
-    SUB_TYPE_POWER_STOP_DELAY,
+    SUB_TYPE_POWER_OPEN_DELAY,
+    SUB_TYPE_POWER_CLOSE_DELAY,
     
-    SUB_TYPE_PARAS_LANG,
+    SUB_TYPE_PARAS_SYS,
     SUB_TYPE_PARAS_MODBUS,
     SUB_TYPE_PARAS_MISC,
     SUB_TYPE_PARAS_PROD,
@@ -667,12 +664,7 @@ typedef struct {
 
 #pragma pack ()
 
-#define DB_NAME         "smartPDU.db"
-#define INI_NAME        "smartPDU.ini"
-#define INF_NAME        "PDUInfo.txt"
-
 #define CONCAT(a,b)     a b
-
 #define SD_DEV          "sd"
 #define NOR_DEV         "nor"
 
@@ -680,5 +672,12 @@ typedef struct {
 #define SD_PATH         CONCAT(ROOT_PATH,SD_DEV)
 #define NOR_PATH        CONCAT(ROOT_PATH,NOR_DEV)
 
+#define DB_NAME         "smartPDU"
+#define INI_NAME        "smartPDU.ini"
+#define INF_NAME        "PDUInfo.txt"
+
+#define DB_PATH         SD_PATH
+#define CFG_PATH        NOR_PATH
+
 #endif
 

Fichier diff supprimé car celui-ci est trop grand
+ 747 - 235
f407/applications/db.c


+ 12 - 6
f407/applications/db.h

@@ -1,17 +1,19 @@
 #ifndef __DB_Hx__
 #define __DB_Hx__
 
+#include "list.h"
+
 enum {
     DB_TAB_CFG_NTP=0,
     DB_TAB_CFG_USER,
     DB_TAB_CFG_SHED,
     DB_TAB_CFG_SNMP,
-    DB_TAB_CFG_SMTP,
+    DB_TAB_CFG_MAIL,
     DB_TAB_CFG_MQTT,
     DB_TAB_CFG_GROUP,
     DB_TAB_CFG_POWER,
     DB_TAB_CFG_SENSOR,
-    DB_TAB_CFG_ALARM,
+    DB_TAB_CFG_BREAKER,
     DB_TAB_CFG_LOG,
     
     DB_TAB_REC_POWER,
@@ -27,12 +29,16 @@ int db_deinit(void);
 int db_import(int tab_id, char *path);
 int db_export(int tab_id, char *path);
 
-int db_clear(int tab_id);
-int db_reset(int tab_id);
+int db_load(void);
+int db_reset_tab(int tab_id);
+int db_reset(void);
+
+int db_clear_tab(int tab_id);
+int db_clear(void);
 int db_remove(int tab_id, char *condion);
 
-int db_query(int tab_id, char *condion, void *data, int *cnt);
-int db_update(int tab_id, char *condion, void *data);
+int db_read(int tab_id, char *contiion, handle_t list);
+int db_write(int tab_id, char *contiion, handle_t list);
 
 #endif
 

+ 6 - 7
f407/applications/dflt.c

@@ -2,13 +2,15 @@
 #include "cfg.h"
 
 const paras_data_t DFLT_PARAS={
-        
-        .lang = LANG_ID_CHINESE,
-    
         .ver = {
             .ver = VERSION,
             .bldtime = "__DATE__""__TIME__",
         },
+        
+        .sys = {
+            .lang = LANGUAGE,
+            .tzone = 8,
+        },
     
         .prod = {
             .id         = 1011,
@@ -19,10 +21,7 @@ const paras_data_t DFLT_PARAS={
             .status     = "",
             .date = "2024.01.01",
             .batch= "1",
-            .type       = PROD_TYPE,
-            .pwr_type   = PROD_TYPE,
-            .version    = VERSION,
-            .language   = LANGUAGE,                     //多国语言
+            .type       = PROD_TYPE,                    //多国语言
             .count      = 0,                            //级联设备数
             .samp_time  = SMPLE_TIME,                   //采集周期 单位ms
             .save_time  = SAVE_TIME,                    //保存周期 单位ms

+ 3 - 0
f407/applications/main.c

@@ -7,6 +7,7 @@
 #include <sys/socket.h>
 #include <netdb.h>
 #include <unistd.h>
+#include "db.h"
 #include "web.h"
 #include "sys.h"
 #include "power.h"
@@ -99,6 +100,8 @@ static int user_init(void)
     modbus_data_t *cas=&p->cas;
     
     power_init();
+    db_init();
+    
     web_init();
     cascade_init(cas->mode, cas->addr, cas->baud);
     return 0;

+ 4 - 52
f407/applications/paras.c

@@ -46,7 +46,7 @@ static paras_handle_t  paraHandle={0};
 static int is_power3(void)
 {
     paras_handle_t *h=&paraHandle;
-    if(h->paras.prod.pwr_type>=PDU_AC_I3O3) {
+    if(h->paras.prod.type>=PDU_AC_I3O3) {
         return 1;
     }
     return 0;
@@ -216,18 +216,10 @@ static int proc_prod(dictionary *dic, int op, product_data_t *prod)
     char *token=NULL;
 
     if(op==PARAS_CHECK) {
-        if(prod->language>=LANG_ID_MAX) {
-            LOGE("___ check product.language %d is wrong\n", prod->language);
-            r = -1;
-        }
-        if(prod->type>=PDU_AC_I3O1_H) {
+        if(prod->type>PDU_AC_I3O1_H) {
             LOGE("___ check product.type %d is wrong\n", prod->type);
             r = -1;
         }
-        if(prod->pwr_type>PDU_AC_I3O1_H) {
-            LOGE("___ check product.pwr_type %d is wrong\n", prod->pwr_type);
-            r = -1;
-        }
         return r;
     }
     else if(op==PARAS_WRITE) {
@@ -312,25 +304,6 @@ static int proc_prod(dictionary *dic, int op, product_data_t *prod)
         }
     }
 
-    token = "product:pwrtype";
-    if(op==PARAS_READ) {
-        r = iniparser_getint(dic, token, -1);
-        if(r==-1) {
-            LOGE("___ iniparser_getint %s failed\n", token);
-            return -1;
-        } else {
-            prod->pwr_type = r;
-        }
-    }
-    else {
-        sprintf(temp, "%d", prod->pwr_type);
-        r = iniparser_set(dic, token, temp);
-        if(r) {
-            LOGE("___ iniparser_set %s failed\n", token);
-            return -1;
-        }
-    }
-
 #if 0
     token = "product:version";
     if(op==PARAS_READ) {
@@ -351,25 +324,6 @@ static int proc_prod(dictionary *dic, int op, product_data_t *prod)
     }
 #endif
 
-    token = "product:language";
-    if(op==PARAS_READ) {
-        r = iniparser_getint(dic, token, -1);
-        if(r==-1) {
-            LOGE("___ iniparser_getint %s failed\n", token);
-            return -1;
-        } else {
-            prod->language = r;
-        }
-    }
-    else {
-        sprintf(temp, "%d", prod->language);
-        r = iniparser_set(dic, token, temp);
-        if(r) {
-            LOGE("___ iniparser_set %s failed\n", token);
-            return -1;
-        }
-    }
-
     token = "product:samptime";
     if(op==PARAS_READ) {
         r = iniparser_getint(dic, token, -1);
@@ -3063,9 +3017,7 @@ static int ini_reset(paras_handle_t *h)
     fprintf(fp, "number      = \"%s\"\n", p->prod.number);
     fprintf(fp, "name        = \"%s\"\n", p->prod.name);
     fprintf(fp, "type        = \"%d\"\n", p->prod.type);
-    fprintf(fp, "pwrtype     = \"%d\"\n", p->prod.pwr_type);
     //fprintf(fp, "version     = %s\\"n", p->prod.version);
-    fprintf(fp, "language    = \"%d\"\n", p->prod.language);
     fprintf(fp, "samptime    = \"%d\"\n", p->prod.samp_time);
     fprintf(fp, "savetime    = \"%d\"\n", p->prod.save_time);
     fprintf(fp, "ph_group    = \"%d\"\n", p->prod.ph_group);
@@ -3137,13 +3089,13 @@ int paras_init(void)
     memset(h, 0, sizeof(paraHandle));
     h->lck = lock_init();
     h->paras = DFLT_PARAS;
-    sprintf(h->path, "%s/%s", NOR_PATH, INI_NAME);
+    sprintf(h->path, "%s/%s", CFG_PATH, INI_NAME);
     h->dic = ini_load(h->path, &h->paras);
     if(h->dic==NULL) {
         r = ini_reset(h);
     }
     strcpy(pv->ver, VERSION);
-    sprintf(tmp, "%s/%s", NOR_PATH, INF_NAME);
+    sprintf(tmp, "%s/%s", CFG_PATH, INF_NAME);
     sys_get_prod(tmp, &h->paras);
     sys_get_bldtime(pv->bldtime, sizeof(pv->bldtime));
     

+ 34 - 34
f407/applications/power.c

@@ -51,11 +51,11 @@ static int set_ch(power_ch_t *pch)
 }
 static int set_open_delay(power_ch_t *pch)
 {
-    return power_set_start_delay(pch);
+    return power_set_open_delay(pch);
 }
 static int set_close_delay(power_ch_t *pch)
 {
-    return power_set_stop_delay(pch);
+    return power_set_close_delay(pch);
 }
 static int set_kb_value(power_ch_t *pch)
 {
@@ -172,7 +172,7 @@ static int get_key(power_handle_t *h, uint8_t addr, board_key_t *key)
     int i,r;
     uint16_t tmp[2];
     
-    if(h->prod->pwr_type==PDU_AC_I1O1 || h->prod->pwr_type==PDU_AC_I3O1_H) {
+    if(h->prod->type==PDU_AC_I1O1 || h->prod->type==PDU_AC_I3O1_H) {
         r = read_reg(h, addr, POWER_AC_GET_INFO, tmp, 1);
         if(r==0) {
             key->type = (tmp[0]>>8)&0xFF;
@@ -276,7 +276,7 @@ int power_set_kb_value(power_handle_t *h, int type, int addr, kb_val_t *kv)
 static uint8_t get_ch_idx(board_data_t *pbrd, uint8_t sch)
 {
     uint8_t ch=0;
-    uint8_t pwr_type=paras_get()->prod.pwr_type;
+    uint8_t pwr_type=paras_get()->prod.type;
     if(pbrd->type==TREE_AC_TYPE) {
         if(pwr_type == PDU_AC_I3O3) {
             ch = pbrd->ch0 + sch/3;
@@ -298,7 +298,7 @@ static int threshold_proc(power_handle_t *h, board_data_t *pbrd)
     
     for (i=0; i<pbrd->chs; i++) {
         pch = &pbrd->pch[i];
-        if(h->prod->pwr_type==PDU_AC_I3O3) {
+        if(h->prod->type==PDU_AC_I3O3) {
             times = 3;
             
             //设置为输出三相且三相有缺失则报警
@@ -379,7 +379,7 @@ static int total_proc(power_handle_t *h)
     board_data_t *pbrd=NULL;
     
     lock_on(h->lck);
-    if(h->prod->pwr_type==PDU_AC_I3O3) times = 3;
+    if(h->prod->type==PDU_AC_I3O3) times = 3;
     for(i=0; i<h->brd_max; i++) {
         if(h->pbrd[i]) {
             for (j=0; i<h->pbrd[i]->chs; i++) {
@@ -397,7 +397,7 @@ static int total_proc(power_handle_t *h)
         }
     }
     
-    h->ttl.type = h->prod->pwr_type;
+    h->ttl.type = h->prod->type;
     for(k=0; k<times; k++) {
         h->ttl.total[k].voltage = tmp[k].voltage;
         h->ttl.total[k].current = tmp[k].current;
@@ -578,7 +578,7 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
                 for (i=0; i<pbrd->chs; i++) {
                     int Index = i * 16;
                     
-                    if(h->prod->pwr_type==PDU_AC_I3O3) {
+                    if(h->prod->type==PDU_AC_I3O3) {
                         int ch_idx = pbrd->ch0+i/3;
                         int ph_idx = i%3;
                         pwr = &pbrd->pch[ch_idx].power[ph_idx];
@@ -727,7 +727,6 @@ static void power_thread(void *arg)
     thread_handle_t *th=(thread_handle_t*)arg;
     power_handle_t *h=(power_handle_t*)th->attr->arg;;
     
-    power_scan();
     while(th->quit==0) {
         board_query(h);
         sleep(1);
@@ -761,6 +760,7 @@ int power_init(void)
     h->brd_max = POWER_BOARD_MAX;
     h->prod = &p->prod;
     
+    power_scan();
     thread_start(THREAD_ID_POWER, power_thread, h);
     return 0;
 }
@@ -835,7 +835,7 @@ static int power_map(power_handle_t *h, int chs)
 {
     int i,j,r,idx=1;
     board_data_t *pbrd=NULL;
-    uint8_t pwr_type=paras_get()->prod.pwr_type;
+    uint8_t pwr_type=paras_get()->prod.type;
     
     if(chs>0) {
         h->chs = 0;
@@ -939,7 +939,7 @@ int power_scan(void)
                 pch[j].info.sch  = j;                    //序号从0开始
                 pch[j].info.type = pkey->type;
                 
-                if(h->prod->pwr_type==PDU_AC_I3O3) {
+                if(h->prod->type==PDU_AC_I3O3) {
                     pch[j].info.ch  = ch_idx+j/3;       //序号从1开始, 发给控制板需从0开始
                     pch[j].info.ph_id = j%3;
                 }
@@ -949,8 +949,8 @@ int power_scan(void)
                 }
                 
                 times = (pch[j].info.ch%nGroups)?pch[j].info.ch:nGroups;
-                pch[j].info.start_delay = 1000*times;
-                pch[j].info.stop_delay  = 1000*times;
+                pch[j].info.open_delay = 1000*times;
+                pch[j].info.close_delay  = 1000*times;
             }
             
             if(pbrd->type==AC_SINGLE_S_TYPE || pbrd->type==AC_SINGLE_B_TYPE) {
@@ -960,7 +960,7 @@ int power_scan(void)
                 pbrd->brk[0].info.addr = pbrd->addr;
             }
             
-            if(h->prod->pwr_type==PDU_AC_I3O3) {
+            if(h->prod->type==PDU_AC_I3O3) {
                 ch_idx += pkey->chs/3;
             }
             else {
@@ -1118,8 +1118,8 @@ int power_set_ch_sw(uint8_t ch, uint8_t on)
         case TREE_AC_TYPE:
         {
             uint16_t reg;
-            uint8_t pwr_type=paras_get()->prod.pwr_type;
-            if(pwr_type==PDU_AC_I3O3 || pwr_type==PDU_AC_I3O1) {
+            uint8_t type=paras_get()->prod.type;
+            if(type==PDU_AC_I3O3 || type==PDU_AC_I3O1) {
                 reg = POWER_AC3_OUT_ENABLE;
             }
             else {
@@ -1552,7 +1552,7 @@ int power_set_threshold(power_ch_t *pch)
 }
 
 
-int power_set_start_delay(power_ch_t *pch)
+int power_set_open_delay(power_ch_t *pch)
 {
     int r=-1;
     uint16_t tmp[2],reg,offset;
@@ -1563,29 +1563,29 @@ int power_set_start_delay(power_ch_t *pch)
         case AC_SINGLE_S_TYPE:
         case AC_SINGLE_B_TYPE:
         {
-            tmp[0] = pch->info.start_delay;
-            offset = POWER_AC_START_DELAY_TIME_L+pch->info.ch-1;
+            tmp[0] = pch->info.open_delay;
+            offset = POWER_AC_OPEN_DELAY_TIME_L+pch->info.ch-1;
             r = write_reg(h, pch->info.addr, offset, tmp, 1);
         }
         break;
 
         case DCPDU_TYPE:
         {
-            uint32_t time=pch->info.start_delay/1000;
+            uint32_t time=pch->info.open_delay/1000;
             tmp[0] = time & 0xffff;
             tmp[1] = (time >> 16) & 0xffff;
-            offset = POWER_DC_SET_START_DELAY+pch->info.ch-1;
+            offset = POWER_DC_SET_OPEN_DELAY+pch->info.ch-1;
             r = write_reg(h, pch->info.addr, offset, tmp, 2);
         }
         break;
         
         case TREE_AC_TYPE:
         {
-            uint32_t time=pch->info.start_delay/1000;
+            uint32_t time=pch->info.open_delay/1000;
             tmp[0] = time & 0xffff;
             tmp[1] = (time >> 16) & 0xffff;
-            if(h->prod->pwr_type==PDU_AC_I3O3) {
-                offset = POWER_AC3_START_DELAY_TIME+pch->info.sch*3;
+            if(h->prod->type==PDU_AC_I3O3) {
+                offset = POWER_AC3_OPEN_DELAY_TIME+pch->info.sch*3;
                 r = write_reg(h, pch->info.addr, offset+0, tmp, 2);
                 if(r) break;
                 r = write_reg(h, pch->info.addr, offset+1, tmp, 2);
@@ -1594,7 +1594,7 @@ int power_set_start_delay(power_ch_t *pch)
                 if(r) break;
             }
             else {
-                offset = POWER_AC3_START_DELAY_TIME+pch->info.sch;
+                offset = POWER_AC3_OPEN_DELAY_TIME+pch->info.sch;
                 r = write_reg(h, pch->info.addr, offset, tmp, 2);
             }
         }
@@ -1611,7 +1611,7 @@ int power_set_start_delay(power_ch_t *pch)
     
     return r;
 }
-int power_set_stop_delay(power_ch_t *pch)
+int power_set_close_delay(power_ch_t *pch)
 {
     int r=-1;
     uint16_t tmp[2],reg,offset;
@@ -1622,27 +1622,27 @@ int power_set_stop_delay(power_ch_t *pch)
         case AC_SINGLE_S_TYPE:
         case AC_SINGLE_B_TYPE:
         {
-            tmp[0] = pch->info.start_delay;
-            offset = POWER_AC_STOP_DELAY_TIME_L+pch->info.ch-1;
+            tmp[0] = pch->info.close_delay;
+            offset = POWER_AC_CLOSE_DELAY_TIME_L+pch->info.ch-1;
             r = write_reg(h, pch->info.addr, offset, tmp, 1);
         }
         break;
 
         case DCPDU_TYPE:
         {
-            uint32_t time=pch->info.stop_delay/1000;
+            uint32_t time=pch->info.close_delay/1000;
             tmp[0] = time & 0xffff;
             tmp[1] = (time >> 16) & 0xffff;
-            offset = POWER_DC_SET_STOP_DELAY+pch->info.ch-1;
+            offset = POWER_DC_SET_CLOSE_DELAY+pch->info.ch-1;
             //r = write_reg(h, pch->info.addr, offset, tmp, 2);
         }
         break;
         
         case TREE_AC_TYPE:
         {
-            uint32_t time=pch->info.stop_delay/1000;
-            if(h->prod->pwr_type==PDU_AC_I3O3) {
-                offset = POWER_AC3_STOP_DELAY_TIME+pch->info.sch*3;
+            uint32_t time=pch->info.close_delay/1000;
+            if(h->prod->type==PDU_AC_I3O3) {
+                offset = POWER_AC3_CLOSE_DELAY_TIME+pch->info.sch*3;
                 r = write_reg(h, pch->info.addr, offset+0, tmp, 2);
                 if(r) break;
                 r = write_reg(h, pch->info.addr, offset+1, tmp, 2);
@@ -1651,7 +1651,7 @@ int power_set_stop_delay(power_ch_t *pch)
                 if(r) break;
             }
             else {
-                offset = POWER_AC3_START_DELAY_TIME+pch->info.sch;
+                offset = POWER_AC3_CLOSE_DELAY_TIME+pch->info.sch;
                 r = write_reg(h, pch->info.addr, offset, tmp, 2);
             }
         }

+ 12 - 12
f407/applications/power.h

@@ -9,10 +9,10 @@
 #define POWER_AC_CUR_INFO_H                       0x1015          //单相大电流继电器信息,共4路继电器
 #define POWER_AC_STAT_INFO_H                      0x1083          //单相大电流继电器开关状态,共4路继电器         
 #define POWER_AC_TOTAL_ALATRM                     0x10E0          //单相控制板总体报警信息 2024.11.12
-#define POWER_AC_START_DELAY_TIME_L               0x1194          //单相小电流继电器板开启延时
-#define POWER_AC_STOP_DELAY_TIME_L                0x11A6          //单相小电流继电器板关闭延时
-#define POWER_AC_START_DELAY_TIME_H               0x11B8          //单相大电流继电器板开启延时
-#define POWER_AC_STOP_DELAY_TIME_H                0x11C6          //单相大电流继电器板关闭延时
+#define POWER_AC_OPEN_DELAY_TIME_L                0x1194          //单相小电流继电器板开启延时
+#define POWER_AC_CLOSE_DELAY_TIME_L               0x11A6          //单相小电流继电器板关闭延时
+#define POWER_AC_OPEN_DELAY_TIME_H                0x11B8          //单相大电流继电器板开启延时
+#define POWER_AC_CLOSE_DELAY_TIME_H               0x11C6          //单相大电流继电器板关闭延时
 #define POWER_AC_CH_STAT_L                        0x11EA          //设置单相小电流通道开关状态
 #define POWER_AC_CH_STAT_H                        0x11FC          //设置单相大电流通道开关状态
 #define POWER_AC_THRESHOLD_L                      0x1215          //设置单相小电流通道超限报警阈值
@@ -28,8 +28,8 @@
 #define POWER_DC_SET_STAT                         0x120A          //设置直流继电器开关状态
 #define POWER_DC_SET_THRESHOLD                    0x12E9          //设置直流继电器超限报警X
 #define POWER_DC_SET_KB_VAL                       0x136D          //设置直流通道K、B值
-#define POWER_DC_SET_START_DELAY                  0x11D4          //直流继电器控制板开启延时
-#define POWER_DC_SET_STOP_DELAY                   0x11DF          //直流继电器控制板关闭延时
+#define POWER_DC_SET_OPEN_DELAY                   0x11D4          //直流继电器控制板开启延时
+#define POWER_DC_SET_CLOSE_DELAY                  0x11DF          //直流继电器控制板关闭延时
 #define POWER_DC_SET_OUT_INFO                     0x104F          //直流继电器电路控制板信息,采集一路输出
 #define POWER_DC_SET_STAT_INFO                    0x1097          //直流继电器电路控制板开关状态,采集一路输出
 #define POWER_DC_SET_IN_INFO                      0x105F          //直流总电流电压采集控制板,采集设备输入电压和输入电流
@@ -41,8 +41,8 @@
 #define POWER_DC_WARNING                          0x179A          //直流PDU报警信息
 #define POWER_DC_STAT_ERROR                       0x17E4          //直流PDU故障状态
 #define POWER_DC_IN_INFO                          0x1772          //直流PDU采集输入电压与输入电
-#define POWER_DC_START_DELAY                      0x17E6          //直流PDU延时
-#define POWER_DC_STOP_DELAY                       0x17F6          //直流PDU延时
+#define POWER_DC_OPEN_DELAY                       0x17E6          //直流PDU延时
+#define POWER_DC_CLOSE_DELAY                      0x17F6          //直流PDU延时
 #define POWER_DC_THRESHOLD_VOL_MAX                0x17A2          //max voltage threshold
 #define POWER_DC_THRESHOLD_VOL_MIN                0x17B2          //min voltage threshold
 #define POWER_DC_THRESHOLD_CUR_MAX                0x17C2          //max current threshold
@@ -70,8 +70,8 @@
 #define POWER_AC3_OUT_ERROR                       0x17DE          //三项交流输出故障状态
 #define POWER_AC3_IN_TOTAL_ERROR                  0x17CA          //三项交流总输入故障状态 2024.11.12 
 #define POWER_AC3_IN_ERROR                        0x17DD          //三项交流输入故障状态
-#define POWER_AC3_START_DELAY_TIME                0x1840          //三项交流延时
-#define POWER_AC3_STOP_DELAY_TIME                 0x184C          //三项交流延时
+#define POWER_AC3_OPEN_DELAY_TIME                 0x1840          //三项交流延时
+#define POWER_AC3_CLOSE_DELAY_TIME                0x184C          //三项交流延时
 #define POWER_AC3_THRESHOLD_IN                    0x17EA          //设置三项交流输入超限报警 
 #define POWER_AC3_THRESHOLD_OUT                   0x17EF          //设置三项交流输出超限报警
 #define POWER_AC3_ALL_OPEN_INFO                   0x182B          //ALL OPEN直流PDU开关状
@@ -161,8 +161,8 @@ int power_set_all_sw(uint8_t on);
 int power_set_alarm(power_ch_t *pch);
 int power_get_threshold(power_ch_t *pch);
 int power_set_threshold(power_ch_t *pch);
-int power_set_start_delay(power_ch_t *pch);
-int power_set_stop_delay(power_ch_t *pch);
+int power_set_open_delay(power_ch_t *pch);
+int power_set_close_delay(power_ch_t *pch);
 int power_get_board(board_data_t *pbrd);
 int power_reset(void);
 

+ 68 - 52
f407/applications/sensor.c

@@ -1,4 +1,5 @@
 #include <stdlib.h>
+#include <string.h>
 #include "mb.h"
 #include "lock.h"
 #include "sensor.h"
@@ -50,56 +51,84 @@ int sensor_deinit(void)
 }
 
 
-int sensor_add(sensor_data_t *data)
+int sensor_set(sensor_data_t *data)
 {
+    int i,r=-1,cnt;
+    sensor_data_t *p=NULL;
     sensor_handle_t *h=&ssHandle;
     
     if(!data) {
         return -1;
     }
     lock_on(h->lck);
+    for(i=0; i<h->all.cnt; i++) {
+        sensor_data_t *p=&h->all.data[i];
+        if(memcmp(&data->info, &p->info, sizeof(sensor_info_t))==0) {
+            r = 0;
+            p->info = data->info;
+            break;
+        }
+    }
     
-    lock_off(h->lck);
-    
-    return 0;
-}
-
-
-int sensor_remove(sensor_data_t *data)
-{
-    sensor_handle_t *h=&ssHandle;
-    
-    if(!data) {
-        return -1;
+    if(r==-1) {
+        cnt = h->all.cnt+1;
+        if(h->all.data) {
+            p = (sensor_data_t*)realloc(h->all.data, sizeof(sensor_data_t)*cnt);
+        }
+        else {
+            p = (sensor_data_t*)calloc(1, sizeof(sensor_data_t));
+        }
+        if(p) {
+            p[cnt-1].info = data->info;
+            memset(&p[cnt-1].val, 0, sizeof(p[cnt-1].val));
+            
+            h->all.cnt = cnt;
+            h->all.data = p;
+            r = 0;
+        }
     }
-    lock_on(h->lck);
     
+    if(r==0) {
+        //db_update
+    }
     lock_off(h->lck);
     
-    return 0;
+    return r;
 }
 
 
-int sensor_update(sensor_data_t *data)
+int sensor_remove(sensor_data_t *data)
 {
+    int i,r=-1;
     sensor_handle_t *h=&ssHandle;
     
     if(!data) {
         return -1;
     }
-    
     lock_on(h->lck);
-    
+    for(i=0; i<h->all.cnt; i++) {
+        sensor_data_t *p=&h->all.data[i];
+        if(memcmp(&data->info, &p->info, sizeof(sensor_info_t))==0) {
+            r = 0;
+            break;
+        }
+    }
+    if(r==0) {  //find and remove it
+        if(i!=h->all.cnt-1) {
+            memmove(&h->all.data[i], &h->all.data[i+1], sizeof(sensor_data_t)*(h->all.cnt-i-1));
+        }
+        h->all.cnt -= 1;
+    }
     lock_off(h->lck);
     
-    return 0;
+    return r;
 }
 
 
-
 static int my_read(sensor_data_t *data)
 {
     int r=-1;
+    uint16_t time=0;
     uint16_t tmp[10]={0};
     uint8_t addr=data->info.addr;
     sensor_handle_t *h=&ssHandle;
@@ -107,27 +136,26 @@ static int my_read(sensor_data_t *data)
     switch(data->info.type) {
         case SENSOR_TYPE_TEMP_HUMI:
         {
-            uint16_t tmp[2];
             switch(data->info.subtype) {
                 case SENSOR_TYPE_TEMP_HUMI_RSWSN01PVC:
                 {
-                    //r = g_modbus_read_x_reg(mm, addr, 0, 2, tmp);
-                    if(r<=0) {
+                    r = read_reg(addr, 0, tmp, 2);
+                    if(r<0) {
                         return -1 ;
                     }
-                    data->samp.val[0] = tmp[1]/10.0f; //湿度值
-                    data->samp.val[1] = tmp[0]/10.0f; //湿度值
+                    data->val[0].value = tmp[1]/10.0f; //湿度值
+                    data->val[1].value = tmp[0]/10.0f; //湿度值
                 }
                 break;
 
                 case SENSOR_TYPE_TEMP_HUMI_HKSHT301T1H536VRS485:    //anderson
                 {
-                    //r = g_modbus_read_input_reg(mm, addr, 0, 2, tmp);
-                    if (r <= 0) {
+                    r = read_reg(addr, 0, tmp, 2);
+                    if (r < 0) {
                         return -1;
                     }
-                    data->samp.val[0] = tmp[0]/10.0f;   //温度值
-                    data->samp.val[1] = tmp[1]/10.0f;   //湿度值
+                    data->val[0].value = tmp[0]/10.0f;   //温度值
+                    data->val[1].value = tmp[1]/10.0f;   //湿度值
                 }
                 break;
             }
@@ -142,7 +170,7 @@ static int my_read(sensor_data_t *data)
             if(r<0) {
                 return -1;
             }
-            data->samp.flag = r;   //温度值
+            data->val[0].value = r;
         }
         break;
 
@@ -152,7 +180,7 @@ static int my_read(sensor_data_t *data)
             if(r<0) {
                 return -1 ;
             }
-            data->samp.val[0] = tmp[0]; //气体浓度值
+            data->val[0].value = tmp[0]; //气体浓度值
         }
         break;
 
@@ -184,8 +212,8 @@ static int my_read(sensor_data_t *data)
                         LOGE("___ sensor RSWSN01PVC 2 read failed, addr: %d\n", addr);
                         return -1;
                     }
-                    data->samp.val[0] = tmp[1]/10.0f;   //解算温度值
-                    data->samp.val[1] = tmp[0]/10.0f;   //解算湿度值
+                    data->val[0].value = tmp[1]/10.0f;   //解算温度值
+                    data->val[0].value = tmp[0]/10.0f;   //解算湿度值
                 }
                 break;
             }
@@ -202,7 +230,7 @@ static int my_read(sensor_data_t *data)
                         LOGE("___ sensor BTG50H8EL3200 read failed, addr: %d\n", addr);
                         return -1;
                     }
-                    data->samp.val[0] = tmp[0]/10.0f - 50;
+                    data->val[0].value = tmp[0]/10.0f - 50;
                     //printf("___ BTG50H8EL3200 read: 0x%04x, temp: %0.2f\n", tmp, data->val[0]);
                 }
                 break;
@@ -222,9 +250,9 @@ static int my_read(sensor_data_t *data)
                     }
                     //printf("___ XWDC01A read: 0x%04x, 0x%04x, 0x%04x, 0x%04x\n", tmp[0],tmp[1],tmp[2],tmp[3]);
 
-                    data->samp.flag = 0;
+                    data->val[0].value = 0;
                     if(tmp[0] || tmp[1]) {
-                        data->samp.flag = 1;
+                        data->val[0].value = 1;
                     }
                 }
                 break;
@@ -233,26 +261,14 @@ static int my_read(sensor_data_t *data)
         break;
     }
 
-    return r;
-}
-int sensor_read(sensor_data_t *data)
-{
-    int r=-1;
-    uint8_t addr;
-    uint16_t tmp[10]={0};
-    sensor_handle_t *h=&ssHandle;
-
-    if(!data) {
-        return -1;
+    if(r==0) {
+        data->time = mktime(localtime(NULL));
     }
-
-    lock_on(h->lck);
-    r = my_read(data);
-    lock_off(h->lck);
-
+    
     return r;
 }
 
+
 int sensor_query(void)
 {
     int i,r=-1;

+ 1 - 3
f407/applications/sensor.h

@@ -5,10 +5,8 @@
 
 int sensor_init(void);
 int sensor_deinit(void);
-int sensor_add(sensor_data_t *data);
+int sensor_set(sensor_data_t *data);
 int sensor_remove(sensor_data_t *data);
-int sensor_update(sensor_data_t *data);
-int sensor_read(sensor_data_t *data);
 int sensor_query(void);
 int sensor_data_get(sensor_all_t *all);
 int sensor_data_free(sensor_all_t *all);

+ 4 - 4
f407/applications/ui/menu.c

@@ -102,9 +102,9 @@ static int is_ph3_in(menu_handle_t *h)
 {
     paras_data_t *p=paras_get();
     
-    if ((p->prod.pwr_type == PDU_AC_I3O3 ||
-         p->prod.pwr_type == PDU_AC_I3O1  ||
-         p->prod.pwr_type == PDU_AC_I3O1_H)) {
+    if ((p->prod.type == PDU_AC_I3O3 ||
+         p->prod.type == PDU_AC_I3O1  ||
+         p->prod.type == PDU_AC_I3O1_H)) {
         return 1;
     }
     return 0;
@@ -112,7 +112,7 @@ static int is_ph3_in(menu_handle_t *h)
 static int is_ph3_out(menu_handle_t *h)
 {
     paras_data_t *p=paras_get();
-    if (p->prod.pwr_type == PDU_AC_I3O3) {
+    if (p->prod.type == PDU_AC_I3O3) {
         return 1;
     }
     return 0;

+ 17 - 7
f407/applications/web.c

@@ -297,13 +297,23 @@ static int ws_handle(web_handle_t *h, pkt_hdr_t *hdr, mg_conn_t *c)
     switch(hdr->type) {
         case PKT_TYPE_PARAS:
         {
+            int flag=0;
             paras_data_t* para=paras_get();
             switch(hdr->subtype) {
                 
-                case SUB_TYPE_PARAS_LANG:
+                case SUB_TYPE_PARAS_SYS:
                 {
-                    if(hdr->flag<LANG_ID_MAX) {
-                        para->lang = hdr->flag;
+                    system_data_t *sys=(system_data_t*)hdr->data;
+                    if(sys->lang<LANG_ID_MAX && sys->lang!=para->sys.lang) {
+                        para->sys.lang = sys->lang;
+                        //set lang
+                    }
+                    if(sys->tzone<LANG_ID_MAX && sys->tzone!=para->sys.tzone) {
+                        para->sys.tzone = sys->tzone;
+                        //set tzone
+                    }
+                    
+                    if(flag) {
                         paras_save();
                     }
                 }
@@ -392,10 +402,10 @@ static int ws_handle(web_handle_t *h, pkt_hdr_t *hdr, mg_conn_t *c)
                     }
                     break;
                     
-                    case SUB_TYPE_POWER_START_DELAY:
+                    case SUB_TYPE_POWER_OPEN_DELAY:
                     {
                         if(hdr->addr==0) {
-                            r = power_set_start_delay(pch);
+                            r = power_set_open_delay(pch);
                         }
                         else {
                             
@@ -403,10 +413,10 @@ static int ws_handle(web_handle_t *h, pkt_hdr_t *hdr, mg_conn_t *c)
                     }
                     break;
                     
-                    case SUB_TYPE_POWER_STOP_DELAY:
+                    case SUB_TYPE_POWER_CLOSE_DELAY:
                     {
                         if(hdr->addr==0) {
-                            r = power_set_stop_delay(pch);
+                            r = power_set_close_delay(pch);
                         }
                         else {
                             

Fichier diff supprimé car celui-ci est trop grand
+ 374 - 430
f407/project/app/app.uvoptx


+ 51 - 130
f407/project/app/app.uvprojx

@@ -478,57 +478,6 @@
               <FileName>db.c</FileName>
               <FileType>1</FileType>
               <FilePath>..\..\applications\db.c</FilePath>
-              <FileOption>
-                <CommonProperty>
-                  <UseCPPCompiler>2</UseCPPCompiler>
-                  <RVCTCodeConst>0</RVCTCodeConst>
-                  <RVCTZI>0</RVCTZI>
-                  <RVCTOtherData>0</RVCTOtherData>
-                  <ModuleSelection>0</ModuleSelection>
-                  <IncludeInBuild>0</IncludeInBuild>
-                  <AlwaysBuild>2</AlwaysBuild>
-                  <GenerateAssemblyFile>2</GenerateAssemblyFile>
-                  <AssembleAssemblyFile>2</AssembleAssemblyFile>
-                  <PublicsOnly>2</PublicsOnly>
-                  <StopOnExitCode>11</StopOnExitCode>
-                  <CustomArgument></CustomArgument>
-                  <IncludeLibraryModules></IncludeLibraryModules>
-                  <ComprImg>1</ComprImg>
-                </CommonProperty>
-                <FileArmAds>
-                  <Cads>
-                    <interw>2</interw>
-                    <Optim>0</Optim>
-                    <oTime>2</oTime>
-                    <SplitLS>2</SplitLS>
-                    <OneElfS>2</OneElfS>
-                    <Strict>2</Strict>
-                    <EnumInt>2</EnumInt>
-                    <PlainCh>2</PlainCh>
-                    <Ropi>2</Ropi>
-                    <Rwpi>2</Rwpi>
-                    <wLevel>0</wLevel>
-                    <uThumb>2</uThumb>
-                    <uSurpInc>2</uSurpInc>
-                    <uC99>2</uC99>
-                    <uGnu>2</uGnu>
-                    <useXO>2</useXO>
-                    <v6Lang>0</v6Lang>
-                    <v6LangP>0</v6LangP>
-                    <vShortEn>2</vShortEn>
-                    <vShortWch>2</vShortWch>
-                    <v6Lto>2</v6Lto>
-                    <v6WtE>2</v6WtE>
-                    <v6Rtti>2</v6Rtti>
-                    <VariousControls>
-                      <MiscControls></MiscControls>
-                      <Define></Define>
-                      <Undefine></Undefine>
-                      <IncludePath></IncludePath>
-                    </VariousControls>
-                  </Cads>
-                </FileArmAds>
-              </FileOption>
             </File>
             <File>
               <FileName>cascade.c</FileName>
@@ -725,90 +674,62 @@
         </Group>
         <Group>
           <GroupName>packages/db</GroupName>
-          <GroupOption>
-            <CommonProperty>
-              <UseCPPCompiler>0</UseCPPCompiler>
-              <RVCTCodeConst>0</RVCTCodeConst>
-              <RVCTZI>0</RVCTZI>
-              <RVCTOtherData>0</RVCTOtherData>
-              <ModuleSelection>0</ModuleSelection>
-              <IncludeInBuild>0</IncludeInBuild>
-              <AlwaysBuild>2</AlwaysBuild>
-              <GenerateAssemblyFile>2</GenerateAssemblyFile>
-              <AssembleAssemblyFile>2</AssembleAssemblyFile>
-              <PublicsOnly>2</PublicsOnly>
-              <StopOnExitCode>11</StopOnExitCode>
-              <CustomArgument></CustomArgument>
-              <IncludeLibraryModules></IncludeLibraryModules>
-              <ComprImg>1</ComprImg>
-            </CommonProperty>
-            <GroupArmAds>
-              <Cads>
-                <interw>2</interw>
-                <Optim>0</Optim>
-                <oTime>2</oTime>
-                <SplitLS>2</SplitLS>
-                <OneElfS>2</OneElfS>
-                <Strict>2</Strict>
-                <EnumInt>2</EnumInt>
-                <PlainCh>2</PlainCh>
-                <Ropi>2</Ropi>
-                <Rwpi>2</Rwpi>
-                <wLevel>0</wLevel>
-                <uThumb>2</uThumb>
-                <uSurpInc>2</uSurpInc>
-                <uC99>2</uC99>
-                <uGnu>2</uGnu>
-                <useXO>2</useXO>
-                <v6Lang>0</v6Lang>
-                <v6LangP>0</v6LangP>
-                <vShortEn>2</vShortEn>
-                <vShortWch>2</vShortWch>
-                <v6Lto>2</v6Lto>
-                <v6WtE>2</v6WtE>
-                <v6Rtti>2</v6Rtti>
-                <VariousControls>
-                  <MiscControls></MiscControls>
-                  <Define></Define>
-                  <Undefine></Undefine>
-                  <IncludePath></IncludePath>
-                </VariousControls>
-              </Cads>
-              <Aads>
-                <interw>2</interw>
-                <Ropi>2</Ropi>
-                <Rwpi>2</Rwpi>
-                <thumb>2</thumb>
-                <SplitLS>2</SplitLS>
-                <SwStkChk>2</SwStkChk>
-                <NoWarn>2</NoWarn>
-                <uSurpInc>2</uSurpInc>
-                <useXO>2</useXO>
-                <ClangAsOpt>0</ClangAsOpt>
-                <VariousControls>
-                  <MiscControls></MiscControls>
-                  <Define></Define>
-                  <Undefine></Undefine>
-                  <IncludePath></IncludePath>
-                </VariousControls>
-              </Aads>
-            </GroupArmAds>
-          </GroupOption>
           <Files>
             <File>
               <FileName>dbhelper.c</FileName>
               <FileType>1</FileType>
               <FilePath>..\..\applications\packages\sqlite-v3.19.3\dbhelper.c</FilePath>
-            </File>
-            <File>
-              <FileName>rtthread_mutex.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\applications\packages\sqlite-v3.19.3\rtthread_mutex.c</FilePath>
-            </File>
-            <File>
-              <FileName>rtthread_vfs.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\applications\packages\sqlite-v3.19.3\rtthread_vfs.c</FilePath>
+              <FileOption>
+                <CommonProperty>
+                  <UseCPPCompiler>2</UseCPPCompiler>
+                  <RVCTCodeConst>0</RVCTCodeConst>
+                  <RVCTZI>0</RVCTZI>
+                  <RVCTOtherData>0</RVCTOtherData>
+                  <ModuleSelection>0</ModuleSelection>
+                  <IncludeInBuild>0</IncludeInBuild>
+                  <AlwaysBuild>2</AlwaysBuild>
+                  <GenerateAssemblyFile>2</GenerateAssemblyFile>
+                  <AssembleAssemblyFile>2</AssembleAssemblyFile>
+                  <PublicsOnly>2</PublicsOnly>
+                  <StopOnExitCode>11</StopOnExitCode>
+                  <CustomArgument></CustomArgument>
+                  <IncludeLibraryModules></IncludeLibraryModules>
+                  <ComprImg>1</ComprImg>
+                </CommonProperty>
+                <FileArmAds>
+                  <Cads>
+                    <interw>2</interw>
+                    <Optim>0</Optim>
+                    <oTime>2</oTime>
+                    <SplitLS>2</SplitLS>
+                    <OneElfS>2</OneElfS>
+                    <Strict>2</Strict>
+                    <EnumInt>2</EnumInt>
+                    <PlainCh>2</PlainCh>
+                    <Ropi>2</Ropi>
+                    <Rwpi>2</Rwpi>
+                    <wLevel>0</wLevel>
+                    <uThumb>2</uThumb>
+                    <uSurpInc>2</uSurpInc>
+                    <uC99>2</uC99>
+                    <uGnu>2</uGnu>
+                    <useXO>2</useXO>
+                    <v6Lang>0</v6Lang>
+                    <v6LangP>0</v6LangP>
+                    <vShortEn>2</vShortEn>
+                    <vShortWch>2</vShortWch>
+                    <v6Lto>2</v6Lto>
+                    <v6WtE>2</v6WtE>
+                    <v6Rtti>2</v6Rtti>
+                    <VariousControls>
+                      <MiscControls></MiscControls>
+                      <Define></Define>
+                      <Undefine></Undefine>
+                      <IncludePath></IncludePath>
+                    </VariousControls>
+                  </Cads>
+                </FileArmAds>
+              </FileOption>
             </File>
             <File>
               <FileName>sqlite3.c</FileName>

+ 86 - 38
f407/tools/web/JS/data.js

@@ -2,7 +2,7 @@ const MAGIC=0xdead;
 const PKT_TYPE=function(){
     var len = 0;
     return {
-        PKT_TYPE_ACK:len++,             
+        PKT_TYPE_ACK:len++,
         PKT_TYPE_PARAS:len++,             
         PKT_TYPE_POWER_CH:len++,          //power_ch_t
         PKT_TYPE_POWER_TOTAL:len++,       //power_total_t
@@ -25,9 +25,10 @@ const SUB_TYPE=function(){
         SUB_TYPE_POWER_SWITCH:len++,             
         SUB_TYPE_POWER_ALARM:len++,             
         SUB_TYPE_POWER_THRESHOLD:len++,         //power_ch_t
-        SUB_TYPE_POWER_START_DELAY:len++,       //power_total_t
-        SUB_TYPE_POWER_STOP_DELAY:len++,
+        SUB_TYPE_POWER_OPEN_DELAY:len++,        //power_total_t
+        SUB_TYPE_POWER_CLOSE_DELAY:len++,
         
+        SUB_TYPE_PARAS_SYS:len++,
         SUB_TYPE_PARAS_MODBUS:len++,
         SUB_TYPE_PARAS_MISC:len++,
         SUB_TYPE_PARAS_PROD:len++,
@@ -181,19 +182,62 @@ function pkt_to_bin(addr,type,subtype,nack,flag,js)
     
     switch(type){
         case PKT_TYPE.PKT_TYPE_POWER_CH:
-            tmp = new powerc_to_bin(js);
-            break;
+        tmp = new powerc_to_bin(js);
+        break;
 
         case PKT_TYPE.PKT_TYPE_POWER_TOTAL:
-            tmp = new powert_to_bin(js);
-            break;
-           
-       case PKT_TYPE.PKT_TYPE_ALARM:
-            tmp = new alarm_to_bin(js);
-            break;
+        tmp = new powert_to_bin(js);
+        break;
+
+        case PKT_TYPE.PKT_TYPE_ALARM:
+        tmp = new alarm_to_bin(js);
+        break;
+
+        case PKT_TYPE.PKT_TYPE_PARAS:
+        {
+            switch(subtype) {
+                case SUB_TYPE_PARAS_SYS:
+                {
+                    tmp = new sys_to_bin(js);
+                }
+                break;
+                
+                case SUB_TYPE_PARAS_MODBUS:
+                {
+                    tmp = new modbus_to_bin(js);
+                }
+                break;
+                
+                case SUB_TYPE_PARAS_MISC:
+                {
+                    tmp = new misc_to_bin(js);
+                }
+                break;
+                
+                case SUB_TYPE_PARAS_PROD:
+                {
+                    tmp = new prod_to_bin(js);
+                }
+                break;
+                
+                case SUB_TYPE_PARAS_SERV:
+                {
+                    tmp = new serv_to_bin(js);
+                }
+                break;
+                
+                case SUB_TYPE_PARAS_NETWORK:
+                {
+                    tmp = new network_to_bin(js);
+                }
+                break;
+            }
+        }
+        
+        break;
             
-       default:
-       return tmp;
+        default:
+        return tmp;
     }
     return array_cat(buffer,tmp);
 }
@@ -438,6 +482,19 @@ function bin_to_ver(bin) {
 
     this.len = length;
 }
+function bin_to_sys(bin) {
+    var tmp, length=0;
+    
+    tmp = new DataView(bin, length);
+    this.lang = tmp.getUint8(0,true);
+    length += 1;
+    
+    tmp = new DataView(bin, length);
+    this.tzone = tmp.getInt8(0,true);
+    length += 1;
+
+    this.len = length;
+}
 function bin_to_modbus(bin) {
     var tmp, length=0;
     
@@ -512,17 +569,6 @@ function bin_to_prod(bin) {
     this.type = tmp.getUint8(0,true);
     length += 1;
     
-    tmp = new DataView(bin, length);
-    this.pwr_type = tmp.getUint8(0,true);
-    length += 1;
-    
-    this.version = array_to_string(bin.slice(length,8));
-    length += 8;
-    
-    tmp = new DataView(bin, length);
-    this.language = tmp.getUint8(0,true);
-    length += 1;
-    
     tmp = new DataView(bin, length);
     this.samptime = tmp.getUint32(0,true);
     length += 4;
@@ -685,9 +731,8 @@ function bin_to_alarmd(bin) {
 function bin_to_paras(bin) {
     var tmp, length=0;
     
-    tmp = new DataView(bin, length);
-    this.lang = tmp.getUint8(0,true);
-    length += 1;
+    this.lang = new bin_to_sys(bin.slice(length));
+    length += this.lang.len;
     
     this.ver = new bin_to_ver(bin.slice(length));
     length += this.ver.len;
@@ -924,6 +969,20 @@ function thr_to_bin(js) {
     return bin;
 }
 ////////////////////////////////
+function sys_to_bin(js) {
+    var tmp, length=0;
+    var buffer = new ArrayBuffer(js.len);
+
+    tmp = new DataView(buffer, length);
+    tmp.setUint8(0,js.lang,true);
+    length += 1;
+    
+    tmp = new DataView(buffer, length);
+    tmp.setInt8(0,js.tzone,true);
+    length += 1;
+    
+    return buffer;
+}
 function modbus_to_bin(js) {
     var tmp, length=0;
     var buffer = new ArrayBuffer(js.len);
@@ -1001,17 +1060,6 @@ function prod_to_bin(js) {
     tmp.setUint8(0,js.type,true);
     length += 1;
     
-    tmp = new DataView(buffer, length);
-    tmp.setUint8(0,js.pwrtype,true);
-    length += 1;
-    
-    array_set(buffer,js.version,length);
-    length += 8;
-    
-    tmp = new DataView(buffer, length);
-    tmp.setUint8(0,js.language,true);
-    length += 1;
-    
     tmp = new DataView(buffer, length);
     tmp.setUint8(0,js.count,true);
     length += 1;