guohui пре 1 година
родитељ
комит
caf04a638b
5 измењених фајлова са 191 додато и 12 уклоњено
  1. 1 2
      pro/qrcode/qrc.c
  2. 9 1
      pro/src/common.h
  3. 8 0
      pro/src/dflt.c
  4. 24 9
      pro/src/json_handle.c
  5. 149 0
      pro/src/paras.c

+ 1 - 2
pro/qrcode/qrc.c

@@ -112,9 +112,8 @@ char* qrc_txt_to_png(char *txt)
         int b64len = base64_len(pngSize)+8;
         p64buf = (char*)malloc(b64len);
         if(p64buf) {
-            
-            extern char *rpng_save_image_to_memory(const char *data, int width, int height, int color_channels, int bit_depth, int *output_size);
             int d64len = base64_encode((uint8_t*)pPNG, pngSize, (uint8_t*)p64buf, b64len);
+            p64buf[d64len] = 0;
             
         }
         RPNG_FREE(pPNG);

+ 9 - 1
pro/src/common.h

@@ -323,6 +323,14 @@ typedef struct {
     uint16_t    ch_delay;               //通道延时
 }ProductInfo_t;
 
+typedef struct {
+    int        monway;                  //1:总检测 2:分监分控 3:分监不控
+    int        netsw;
+    int        nwire;
+    int        ipv4;
+    int        ipv6;
+}WebcfgInfo_t;
+
 typedef struct {
     char        p_name[32];
     char        p_sn[32];
@@ -336,7 +344,6 @@ typedef struct {
     char        s_tele[32];
 }prod_info_t;
 
-
 typedef struct
 {
     int         voltage;
@@ -352,6 +359,7 @@ typedef struct
     ModbusInfo_t    cascade;            //级联端口  
     ProductInfo_t   product;            //产品信息
     PowerTotal_t    ptotal;
+    WebcfgInfo_t    webcfg;
 }GlobalDeviceInfo;
 ///////////////////////////////////////////////////////////////////////////////////
 //自定义共享内存类

+ 8 - 0
pro/src/dflt.c

@@ -51,6 +51,14 @@ GlobalDeviceInfo DFLT_PARAS={
             .power = 100,
             .brdMax = 24,
         },
+
+        .webcfg = {
+            .monway = 2,
+            .netsw  = 0,
+            .nwire  = 0,
+            .ipv4   = 1,
+            .ipv6   = 1,
+        },
 };
 
 

+ 24 - 9
pro/src/json_handle.c

@@ -1386,6 +1386,9 @@ char* over_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackStsInfo*
                             cJSON_AddStringToObject(data_filed, "runTime", _over_back_sts_info->product_runTime);
                             cJSON_AddStringToObject(data_filed, "IPadress", _over_back_sts_info->productAddr);
                             cJSON_AddStringToObject(data_filed, "MACadress", _over_back_sts_info->product_mac);
+
+                            sprintf(temp, "%d", _over_back_sts_info->product_RS485Addr);
+                            cJSON_AddStringToObject(data_filed, "RSadress", temp);
                         }
                         else {
                             cJSON_AddStringToObject(data_filed, "productVersion", "");
@@ -1393,26 +1396,38 @@ char* over_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackStsInfo*
                             cJSON_AddStringToObject(data_filed, "runTime", "");
                             cJSON_AddStringToObject(data_filed, "IPadress", "");
                             cJSON_AddStringToObject(data_filed, "MACadress", "");
-                        }
 
-                        if (dl.slave[i].addr == 0)
-                        {
-                            sprintf(temp, "%d", _over_back_sts_info->product_RS485Addr);
-                            cJSON_AddStringToObject(data_filed, "RSadress", temp);
-                        }
-                        else
-                        {
                             sprintf(temp, "%d", dl.slave[i].addr);
                             cJSON_AddStringToObject(data_filed, "RSadress", temp);
                         }
+
                         if(_over_back_sts_info->product_type_id==SmartPDU_Tree_AC_One_B||_over_back_sts_info->product_type_id==SmartPDU_Tree_AC_One)
                         {
                             sprintf(temp, "%d", 4);
                         }else{
                             sprintf(temp, "%d", _over_back_sts_info->product_type_id);
                         }
-
                         cJSON_AddStringToObject(data_filed, "productType", temp);
+
+                        if(dl.slave[i].addr==0 && curFlag==0) {
+                            WebcfgInfo_t *wc=&dm->_globalDevInfo.webcfg;
+
+                            sprintf(temp, "%d", wc->monway);
+                            cJSON_AddStringToObject(data_filed, "jkfs",  temp);      //监控方式   (1,2,3)
+                            
+                            sprintf(temp, "%d", wc->netsw);
+                            cJSON_AddStringToObject(data_filed, "dwkjk", temp);      //电网口监测 (0,1)
+
+                            sprintf(temp, "%d", wc->nwire);
+                            cJSON_AddStringToObject(data_filed, "lxkz",  temp);      //零线控制   (0,1)
+
+                            sprintf(temp, "%d", wc->ipv4);
+                            cJSON_AddStringToObject(data_filed, "ip4sz", temp);      //ipv4设置  (0,1)
+
+                            sprintf(temp, "%d", wc->ipv6);
+                            cJSON_AddStringToObject(data_filed, "ip6sz", temp);      //ipv6设置  (0,1)
+                        }
+
                         cJSON_AddStringToObject(data_filed, "productStatus", "online");
                         cJSON_AddItemToArray(root_array, data_filed);
                     }

+ 149 - 0
pro/src/paras.c

@@ -673,6 +673,147 @@ static int proc_ptotal(dictionary *dic, int op, PowerTotal_t *ptotal)
 
     return r;
 }
+static int proc_webcfg(dictionary *dic, int op, WebcfgInfo_t *webcfg)
+{
+    int r=0;
+    char temp[100];
+    char *p,*token=NULL;
+
+    if(op==PARAS_CHECK) {
+        if(webcfg->monway<0 || webcfg->monway>3) {
+            LOGE("___ check webcfg, mon_way is invalid, correct value is 1/2/3\n");
+            r = -1; 
+        }
+
+        if(webcfg->netsw!=0  && webcfg->netsw!=1) {
+            LOGE("___ check webcfg, netsw is invalid, correct value is 0/1\n");
+            r = -1; 
+        }
+
+        if(webcfg->nwire!=0  && webcfg->nwire!=1) {
+            LOGE("___ check webcfg, nwire is invalid, correct value is 0/1\n");
+            r = -1; 
+        }
+
+        if(webcfg->ipv4!=0  && webcfg->ipv4!=1) {
+            LOGE("___ check webcfg, ipv4_use is invalid, correct value is 0/1\n");
+            r = -1; 
+        }
+
+        if(webcfg->ipv6!=0  && webcfg->ipv6!=1) {
+            LOGE("___ check webcfg, ipv6_use is invalid, correct value is 0/1\n");
+            r = -1; 
+        }
+        return r;
+    }
+    else if (op==PARAS_WRITE) {
+        r = proc_webcfg(dic, PARAS_CHECK, webcfg);
+        if(r) {
+            return -1;
+        }
+    }
+
+    token = "webcfg:monway";
+    if(op==PARAS_READ) {
+        r = iniparser_getint(dic, token, -1);
+        if(r==-1) {
+            LOGE("___ iniparser_getint %s failed\n", token);
+            return -1;
+        } else {
+            webcfg->monway = r;
+        }
+    }
+    else {
+        sprintf(temp, "%d", webcfg->monway);
+        r = iniparser_set(dic, token, temp);
+        if(r) {
+            LOGE("___ iniparser_set %s failed\n", token);
+            return -1;
+        }
+    }
+
+    token = "webcfg:netsw";
+    if(op==PARAS_READ) {
+        r = iniparser_getint(dic, token, -1);
+        if(r==-1) {
+            LOGE("___ iniparser_getint %s failed\n", token);
+            return -1;
+        } else {
+            webcfg->netsw = r;
+        }
+    }
+    else {
+        sprintf(temp, "%d", webcfg->netsw);
+        r = iniparser_set(dic, token, temp);
+        if(r) {
+            LOGE("___ iniparser_set %s failed\n", token);
+            return -1;
+        }
+    }
+
+    token = "webcfg:nwire";
+    if(op==PARAS_READ) {
+        r = iniparser_getint(dic, token, -1);
+        if(r==-1) {
+            LOGE("___ iniparser_getint %s failed\n", token);
+            return -1;
+        } else {
+            webcfg->nwire = r;
+        }
+    }
+    else {
+        sprintf(temp, "%d", webcfg->nwire);
+        r = iniparser_set(dic, token, temp);
+        if(r) {
+            LOGE("___ iniparser_set %s failed\n", token);
+            return -1;
+        }
+    }
+
+    token = "webcfg:ipv4";
+    if(op==PARAS_READ) {
+        r = iniparser_getint(dic, token, -1);
+        if(r==-1) {
+            LOGE("___ iniparser_getint %s failed\n", token);
+            return -1;
+        } else {
+            webcfg->ipv4 = r;
+        }
+    }
+    else {
+        sprintf(temp, "%d", webcfg->ipv4);
+        r = iniparser_set(dic, token, temp);
+        if(r) {
+            LOGE("___ iniparser_set %s failed\n", token);
+            return -1;
+        }
+    }
+
+    token = "webcfg:ipv6";
+    if(op==PARAS_READ) {
+        r = iniparser_getint(dic, token, -1);
+        if(r==-1) {
+            LOGE("___ iniparser_getint %s failed\n", token);
+            return -1;
+        } else {
+            webcfg->ipv6 = r;
+        }
+    }
+    else {
+        sprintf(temp, "%d", webcfg->ipv6);
+        r = iniparser_set(dic, token, temp);
+        if(r) {
+            LOGE("___ iniparser_set %s failed\n", token);
+            return -1;
+        }
+    }
+
+    if(op==PARAS_READ) {
+        r = proc_webcfg(dic, PARAS_CHECK, webcfg);
+    }
+
+    return r;
+}
 static int proc_ntp(char *path, int op, NTPManager *ntp)
 {
     int r=0;
@@ -3079,6 +3220,14 @@ static int ini_reset(paras_handle_t *h)
     fprintf(fp, "brd_max     = \"%d\"\n", info->ptotal.brdMax);
     fprintf(fp, "\n");
 
+    fprintf(fp, "[webcfg]\n");
+    fprintf(fp, "monway      = \"%d\"\n", info->webcfg.monway);
+    fprintf(fp, "netsw       = \"%d\"\n", info->webcfg.netsw);
+    fprintf(fp, "nwire       = \"%d\"\n", info->webcfg.nwire);
+    fprintf(fp, "ipv4        = \"%d\"\n", info->webcfg.ipv4);
+    fprintf(fp, "ipv6        = \"%d\"\n", info->webcfg.ipv6);
+    fprintf(fp, "\n");
+
     fclose(fp);
 
     sys_get_path(tmp, INI_FILE_BAK_NAME);