瀏覽代碼

解决mac/ip显示错乱问题

guohui 2 年之前
父節點
當前提交
182575f466
共有 15 個文件被更改,包括 296 次插入 和 71 次删除
  1. 2 2
      pro/config/cfg.h
  2. 1 1
      pro/src/appweb_handle.c
  3. 2 1
      pro/src/cascade.c
  4. 1 1
      pro/src/json_handle.c
  5. 80 8
      pro/src/lock.c
  6. 14 4
      pro/src/lock.h
  7. 42 23
      pro/src/mqtt.c
  8. 6 2
      pro/src/netswitch.c
  9. 92 8
      pro/src/paras.c
  10. 29 8
      pro/src/paras.h
  11. 21 7
      pro/src/sqlite_handle.c
  12. 1 1
      pro/src/sqlite_handle.h
  13. 2 2
      pro/src/sys.c
  14. 2 2
      pro/src/websocket_handle.c
  15. 1 1
      pub

+ 2 - 2
pro/config/cfg.h

@@ -71,8 +71,8 @@
     #undef PHASE_GROUP_CNT
     #undef CHANNEL_DELAY_SEC
 
-    #define PHASE_GROUP_CNT                 6
-    #define CHANNEL_DELAY_SEC               6
+    #define PHASE_GROUP_CNT             6
+    #define CHANNEL_DELAY_SEC           6
 #endif
 
 

+ 1 - 1
pro/src/appweb_handle.c

@@ -1185,7 +1185,7 @@ static void channelStatusMonitoring(void* conn)
             if(product_chn_id==0)
             {
                 pthread_mutex_lock(&__globalDeviceManage._power_update); 
-                dev_search_latest_power_All_info(&__globalDeviceManage,&_over_chn_pwr_back_info);
+                dev_search_latest_power_All_info(&__globalDeviceManage,&_over_chn_pwr_back_info, cur_dev_addr);
                 pthread_mutex_unlock(&__globalDeviceManage._power_update);
             }
             else //指定通道

+ 2 - 1
pro/src/cascade.c

@@ -705,6 +705,7 @@ static int mb_receive(cascade_handle_t *cas)
 
 #if 1
     //do not know why slave can receive all address data
+    //LOGD("____mb_receive, %d\n", h.addr);
     if(h.addr>0 && h.addr!=cas->addr) {
         return -1;
     }
@@ -877,7 +878,7 @@ static int master_scan(cascade_handle_t *cas)
             slave_add(cas, cas->scanAddr);
         }
         else {
-            //LOGW("____ scan %d fail, %s\n", cas->scanAddr, modbus_strerror(errno));
+            LOGW("____ scan %d fail, %s\n", cas->scanAddr, modbus_strerror(errno));
         }
     }
     cas->scanAddr++;

+ 1 - 1
pro/src/json_handle.c

@@ -1823,7 +1823,7 @@ char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_bac
 
     sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->freq);
     cJSON_AddStringToObject(data_filed2,"productPowerFreq",temp);
-    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->consumption*1000);  
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->consumption);  
     cJSON_AddStringToObject(data_filed2,"productConsumption",temp);
     sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->factor);                 
     cJSON_AddStringToObject(data_filed2,"productPowerFactor",temp);

+ 80 - 8
pro/src/lock.c

@@ -1,5 +1,6 @@
-#include <pthread.h>
 #include <stdio.h>
+#include <stdlib.h>
+#include <pthread.h>
 #include "lock.h"
 #include "elog.h"
 
@@ -14,13 +15,22 @@
 
 //static global lock 
 
-static pthread_mutex_t mutex_pool[LOCK_ID_MAX];
+static pthread_mutex_t *mutex_pool[LOCK_ID_MAX]={0};
 int lock_s_init(void)
 {
     int i,r;
+    pthread_mutex_t *m=NULL;
     
     for(i=0; i<LOCK_ID_MAX; i++) {
-        r = pthread_mutex_init(&mutex_pool[i], NULL);
+        m = malloc(sizeof(pthread_mutex_t));
+        if(m) {
+            r = pthread_mutex_init(m, NULL);
+            if(r) {
+                LOGE("lock_s_init %d failed\n", i);
+                free(m); m = NULL;
+            }
+            mutex_pool[i] = m;
+        }
     }
     
     return 0;
@@ -32,7 +42,15 @@ int lock_s_deinit(void)
     int i,r;
     
     for(i=0; i<LOCK_ID_MAX; i++) {
-        r = pthread_mutex_destroy(&mutex_pool[i]);
+        if(mutex_pool[i]) {
+            r = pthread_mutex_destroy(mutex_pool[i]);
+            if(r) {
+                LOGE("lock_s_deinit %d failed\n", i);
+                continue;
+            }
+            
+            mutex_pool[i] = NULL;
+        }
     }
     
     return 0;
@@ -41,20 +59,74 @@ int lock_s_deinit(void)
 
 int lock_s_hold(int id)
 {
-    if(id<0 || id>=LOCK_ID_MAX) {
+    if(id<0 || id>=LOCK_ID_MAX || !mutex_pool[id]) {
         return -1;
     }
     
-     return pthread_mutex_lock(&mutex_pool[id]);
+     return pthread_mutex_lock(mutex_pool[id]);
 }
 
 
 int lock_s_release(int id)
 {
-    if(id<0 || id>=LOCK_ID_MAX) {
+    if(id<0 || id>=LOCK_ID_MAX || !mutex_pool[id]) {
         return -1;
     }
     
-    return pthread_mutex_unlock(&mutex_pool[id]);
+    return pthread_mutex_unlock(mutex_pool[id]);
+}
+
+
+///////////////////////////////////////////////////////
+
+lock_t lock_d_init(void)
+{
+    int r;
+    pthread_mutex_t *m=malloc(sizeof(pthread_mutex_t));
+    if(!m) {
+        return 0;
+    }
+    
+    r = pthread_mutex_init(m, NULL);
+    if(r) {
+        LOGE("pthread_mutex_create failed\n");
+        free(m); return 0;
+    }
+    
+    return (lock_t)m;
 }
 
+
+int lock_d_deinit(lock_t h)
+{
+    int r;
+    
+    if(!h) {
+        return -1;
+    }
+    
+    return pthread_mutex_destroy((pthread_mutex_t*)h);
+}
+
+
+int lock_d_hold(lock_t h)
+{
+    if(!h) {
+        return -1;
+    }
+    
+    return pthread_mutex_lock((pthread_mutex_t*)h);
+}
+
+
+int lock_d_release(lock_t h)
+{
+    if(!h) {
+        return -1;
+    }
+    
+    return pthread_mutex_unlock((pthread_mutex_t*)h);
+}
+
+
+

+ 14 - 4
pro/src/lock.h

@@ -1,22 +1,32 @@
 #ifndef __LOCK_Hx__
 #define __LOCK_Hx__
 
-#include "upgrade.h"
 
 enum {
-    
-    LOCK_ID_SNMP=0,
-    
+    LOCK_ID_DB=0,
+    LOCK_ID_MQTT,
+    LOCK_ID_PARAS,
     
     
     LOCK_ID_MAX
 };
 
 
+//static lock
 int lock_s_init(void);
 int lock_s_deinit(void);
 int lock_s_hold(int id);
 int lock_s_release(int id);
 
+
+//dynamic lock
+typedef unsigned long lock_t;
+
+lock_t lock_d_init(void);
+int lock_d_deinit(lock_t h);
+int lock_d_hold(lock_t h);
+int lock_d_release(lock_t h);
+
+
 #endif
 

+ 42 - 23
pro/src/mqtt.c

@@ -2,8 +2,9 @@
 #include "thread.h"
 #include "mongoose.h"
 #include "elog.h"
+#include "lock.h"
 
-#if 1
+#if 0
     #define LOGD            log_d
     #define LOGE            log_e
     #define LOGW            log_w
@@ -24,6 +25,7 @@ char *topic_sub[]={
     "/pdu/%d/control/device/restart",
     "/pdu/%d/control/device/reset",
     "/PDU/%d/control/service",
+    NULL,
 };
 char *topic_pub[]={
     "/pdu/%d/info/device",
@@ -35,6 +37,7 @@ char *topic_pub[]={
     "/pdu/%d/alarm/power",
     "/pdu/%d/alarm/sensor",
     "/PDU/%d/status/service",
+    NULL,
 };
 
 
@@ -49,7 +52,7 @@ typedef struct {
     mg_conn_t     *conn;
     mqtt_para_t   para;
     
-    pthread_mutex_t mutex;
+    lock_t        lck;
     int           inited;
     bool          isover;
     
@@ -91,7 +94,7 @@ static void mqtt_fn(mg_conn_t *c, int ev, void *ev_data)
     }
 
     if (ev == MG_EV_ERROR || ev == MG_EV_CLOSE) {
-        MG_INFO(("Got event %d, stopping...", ev));
+        MG_INFO(("got event %d, stopping...", ev));
         *(bool *) c->fn_data = true;  // Signal that we're done
     }
 }
@@ -103,20 +106,39 @@ static void* mqtt_thread(void *arg)
     
     while(th->quit==0) {
         if(h->inited) {
-            pthread_mutex_lock(&h->mutex);
+            lock_s_hold(LOCK_ID_MQTT);
             if (h->isover) {
                 h->conn = mg_mqtt_connect(&h->mgr, h->para.user.url, &h->opts, mqtt_fn, &h->isover);
             }
             else {
                 mg_mgr_poll(&h->mgr, 300);
             }
-            pthread_mutex_unlock(&h->mutex);
+            lock_s_release(LOCK_ID_MQTT);
+            lock_s_release(LOCK_ID_MQTT);
         }
         
         if(h->isover) usleep(1000);
     }
     pthread_exit(NULL);
 }
+
+static int sub_all(mqtt_handle_t *h, int id, int qos)
+{
+    int i;
+    mg_opts_t opts;
+    char temp[512];
+    
+    memset(&opts, 0, sizeof(opts));
+    
+    opts.qos = qos;
+    for(i=0; topic_sub[i]; i++) {
+        sprintf(temp, topic_sub[i], id);
+        opts.topic = mg_str(temp);
+        mg_mqtt_sub(h->conn, &opts);
+    }
+    
+    return 0;
+}
 //////////////////////////////////////////////////////////////////////////
 int mqtt_init(void)
 {
@@ -131,12 +153,6 @@ int mqtt_init(void)
     h->para.conn.ver = 4;
     h->para.conn.qos = 1;
     
-    r = pthread_mutex_init(&h->mutex, NULL);
-    if(r) {
-        LOGE("___ mqtt mutex init failed\n");
-        return -1;
-    }
-    
     thread_start(THREAD_ID_MQTT, mqtt_thread, h, 4*MB, 0);
     h->inited = 1;
     
@@ -150,7 +166,6 @@ int mqtt_deinit(void)
     
     thread_stop(THREAD_ID_MQTT);
     mg_mgr_free(&h->mgr);
-    pthread_mutex_destroy(&h->mutex);
     h->inited = 0;
     
     return 0;
@@ -159,17 +174,21 @@ int mqtt_deinit(void)
 
 int mqtt_set(mqtt_para_t *para)
 {
+    int r=0;
     mqtt_handle_t *h=&mqHandle;
     
     if(!para) {
         return -1;
     }
 
-    //para check
+    lock_s_hold(LOCK_ID_MQTT);
     if(para->conn.ver<3 || para->conn.ver>5) {
-        return -1;
+        r = -1;
+    }
+    else {
+        h->para = *para;
     }
-    h->para = *para;
+    lock_s_release(LOCK_ID_MQTT);
     
     return 0;
 }
@@ -179,7 +198,7 @@ int mqtt_conn(void)
 {
     mqtt_handle_t *h=&mqHandle;
     
-    pthread_mutex_lock(&h->mutex);
+    lock_s_hold(LOCK_ID_MQTT);
     if(!h->inited) {
         goto quit;
     }
@@ -199,7 +218,7 @@ int mqtt_conn(void)
     h->conn = mg_mqtt_connect(&h->mgr, h->para.user.url, &h->opts, mqtt_fn, &h->isover);
     
 quit:
-    pthread_mutex_unlock(&h->mutex);
+    lock_s_release(LOCK_ID_MQTT);
     return h->conn?0:-1;
 }
 
@@ -209,7 +228,7 @@ int mqtt_disconn(void)
     int r=0;
     mqtt_handle_t *h=&mqHandle;
 
-    pthread_mutex_lock(&h->mutex);
+    lock_s_hold(LOCK_ID_MQTT);
     if(!h->inited) {
         r = -1;
         goto quit;
@@ -217,7 +236,7 @@ int mqtt_disconn(void)
     mg_mqtt_disconnect(h->conn, NULL);
     
 quit:
-    pthread_mutex_unlock(&h->mutex);
+    lock_s_release(LOCK_ID_MQTT);
     return r;
 }
 
@@ -228,7 +247,7 @@ int mqtt_sub(char *topic, int qos)
     mg_opts_t opts;
     mqtt_handle_t *h=&mqHandle;
 
-    pthread_mutex_lock(&h->mutex);
+    lock_s_hold(LOCK_ID_MQTT);
     if(!h->inited || !h->conn) {
         r = -1;
         goto quit;
@@ -240,7 +259,7 @@ int mqtt_sub(char *topic, int qos)
     mg_mqtt_sub(h->conn, &opts);
     
 quit:
-    pthread_mutex_unlock(&h->mutex);
+    lock_s_release(LOCK_ID_MQTT);
     return r;
 }
 
@@ -251,7 +270,7 @@ int mqtt_pub(char *topic, int qos, char *data, int dlen)
     mg_opts_t opts;
     mqtt_handle_t *h=&mqHandle;
 
-    pthread_mutex_lock(&h->mutex);
+    lock_s_hold(LOCK_ID_MQTT);
     if(!h->inited || !h->conn) {
         r = -1;
         goto quit;
@@ -266,7 +285,7 @@ int mqtt_pub(char *topic, int qos, char *data, int dlen)
     r = mg_mqtt_pub(h->conn, &opts);
     
 quit:
-    pthread_mutex_unlock(&h->mutex);
+    lock_s_release(LOCK_ID_MQTT);
     return r;
 }
 

+ 6 - 2
pro/src/netswitch.c

@@ -535,12 +535,16 @@ static int sw_get(netswitch_info_t *sw)
             }
         }
 
+    #if 0
         if((p=strrchr(h->local_ip, '.')) || (p=strrchr(h->local_ip, ':'))) {
             if(strstr(p, "132")==0) {
                 p[1] = 0; strcat(p, "132");
-                set_ip(h->local_ip); set_gw(h->host_ip);
+                set_ip(h->local_ip);
             }
         }
+    #endif
+
+        set_gw(h->host_ip);
         h->ipflag = 1;
 #endif
     }
@@ -831,7 +835,7 @@ static int sw_alarm(netswitch_evts_t *evts, netswitch_info_t *old, netswitch_inf
         if(evts->evt[i].dev) {
             if(evts->evt[i].dev==EVT_MAC_CHG) {
                 //snprintf(temp, sizeof(temp), "port[%d] mac changed from %s to %s\n", i+1, old->port[i].mac, new->port[i].mac);
-                sprintf(temp, "|$%s$|$%s$|%d  %s -> %s\n", language_alarm_MAC_changed[0], language_alarm_Ch[0], i+1, old->port[i].mac, new->port[i].mac);
+                sprintf(temp, "|$%s$|, $%s$|%d  %s -> %s\n", language_alarm_MAC_changed[0], language_alarm_Ch[0], i+1, old->port[i].mac, new->port[i].mac);
                 strcat(alarm_str, temp);
                 flag = 1;
             }

+ 92 - 8
pro/src/paras.c

@@ -2,6 +2,7 @@
 #include <stdio.h>
 #include "sys.h"
 #include "file.h"
+#include "lock.h"
 #include "paras.h"
 #include "cascade.h"
 
@@ -23,6 +24,13 @@ enum {
 
 extern GlobalDeviceInfo DFLT_PARAS;
 
+typedef struct {
+    int  flag;
+    
+}paras_handle_t;
+static paras_handle_t  paraHandle={0};
+
+
 
 static int do_check(void *para)
 {
@@ -45,7 +53,7 @@ typedef struct {
     unsigned char   product_count               ;//级联设备数
     unsigned short  product_samp_time           ;//采集周期 单位ms
     unsigned short  product_save_time           ;//采集周期 单位ms
-}ProdInfo_t;
+}prod_info_t;
 
 static int ini_rw_prod(int rw, dictionary *dic, GlobalDeviceInfo *info)
 {
@@ -407,29 +415,105 @@ quit:
 }
 #endif
 
-
+static GlobalDeviceInfo *get_dm(void)
+{
+    return &__globalDeviceManage._globalDevInfo;
+}
 ////////////////////////////////////////////////////////////
-int paras_load(GlobalDeviceInfo *info)
+
+
+int paras_init(void)
+{
+    GlobalDeviceInfo *info=get_dm();
+    paras_handle_t  *h=&paraHandle;
+    
+    lock_s_hold(LOCK_ID_PARAS);
+    ini_load(info);
+    lock_s_release(LOCK_ID_PARAS);
+    
+    return 0;
+}
+
+
+int paras_deinit(void)
+{
+    paras_handle_t *h=&paraHandle;
+    
+    lock_s_hold(LOCK_ID_PARAS);
+    memset(&paraHandle, 0, sizeof(paraHandle));
+    lock_s_release(LOCK_ID_PARAS);
+    
+    return 0;
+}
+
+
+int paras_load(void)
 {
-    return ini_load(info);
+    int r=0;
+    GlobalDeviceInfo *info=get_dm();
+    paras_handle_t *h=&paraHandle;
+    
+    lock_s_hold(LOCK_ID_PARAS);
+    r = ini_load(info);
+    lock_s_release(LOCK_ID_PARAS);
+    
+    return r;
 }
 
 
-int paras_reset(GlobalDeviceInfo *info)
+int paras_reset(void)
 {
+    int r=0;
+    GlobalDeviceInfo *info=get_dm();
+    paras_handle_t *h=&paraHandle;
+    
+    lock_s_hold(LOCK_ID_PARAS);
     ini_reset();
-    return ini_load(info);
+    r = ini_load(info);
+    lock_s_release(LOCK_ID_PARAS);
+    
+    return r;
 }
 
 
-int paras_save(GlobalDeviceInfo *info)
+int paras_save(void)
 {
-    return ini_save(info);
+    int r=0;
+    GlobalDeviceInfo *info=get_dm();
+    paras_handle_t *h=&paraHandle;
+    
+    lock_s_hold(LOCK_ID_PARAS);
+    //r = ini_save(info);
+    lock_s_release(LOCK_ID_PARAS);
+    
+    return r;
 }
 
 
+int paras_read(int type, void *data)
+{
+    int r=0;
+    paras_handle_t  *h=&paraHandle;
+    
+    lock_s_hold(LOCK_ID_PARAS);
+    
+    lock_s_release(LOCK_ID_PARAS);
+    
+    return r;
+}
 
 
+int paras_write(int type, void *data)
+{
+    int r=0;
+    paras_handle_t  *h=&paraHandle;
+    
+    lock_s_hold(LOCK_ID_PARAS);
+    
+    lock_s_release(LOCK_ID_PARAS);
+    
+    return r;
+}
 
 
 

+ 29 - 8
pro/src/paras.h

@@ -7,14 +7,35 @@
 extern "C" {
 #endif
 
-typedef struct {
-    char    bldtime[32];
-    char    version[32];
-}fw_info_t;
-
-int paras_load(GlobalDeviceInfo *info);
-int paras_save(GlobalDeviceInfo *info);
-int paras_reset(GlobalDeviceInfo *info);
+
+enum {
+    PARAS_TYPE_DEV,
+    PARAS_TYPE_NTP,
+    PARAS_TYPE_SMTP,
+    PARAS_TYPE_SNMP,
+    PARAS_TYPE_MQTT,
+    PARAS_TYPE_USER,
+    PARAS_TYPE_ROLE,
+    PARAS_TYPE_GROUP,
+    PARAS_TYPE_POWER,
+    PARAS_TYPE_BREAKER,
+    PARAS_TYPE_NETSWITCH,
+    
+    PARAS_TYPE_MAX,
+};
+
+
+int paras_init(void);
+int paras_deinit(void);
+
+int paras_load(void);
+int paras_reset(void);
+int paras_save(void);
+
+int paras_read(int type, void *data);
+int paras_write(int type, void *data);
+
+
 
 #ifdef __cplusplus
 }

+ 21 - 7
pro/src/sqlite_handle.c

@@ -422,18 +422,22 @@ int dev_search_latest_power_info(sqlite3 *db,int product_id,int product_ch_id,Gl
 /// @param db 
 /// @param _globalPowerManger 
 /// @return 
-int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_OverChnPwrAckInfo* __overChnPwrAckInfo)
+int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_OverChnPwrAckInfo* __overChnPwrAckInfo, int dev_addr)
 {
     GlobalPowerManger* _globalPowerMangerTemp = NULL ;
     char* upgrade_msg = NULL ;
-    netswitch_info_t swInfo;
+    static netswitch_info_t swInfo;
+    port_info_t *info=NULL;
     int idx=0;
 
     if(list_empty(&globalDeviceManger->_globalPowerManger.list)) {
         return -1;
     }
 
-    netswitch_get(&swInfo);
+    if(dev_addr==0) {
+        netswitch_get(&swInfo);
+    }
+
     list_for_each_entry(_globalPowerMangerTemp, &globalDeviceManger->_globalPowerManger.list, list)
     {
         if (!_globalPowerMangerTemp)
@@ -506,8 +510,13 @@ int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_Ov
                 }
 
             #ifdef USE_NETSWITCH
-                idx = _overChnPwrBackInfoTemp->productChId-1;
-                port_info_t *info=&swInfo.port[idx];
+                if(dev_addr==0) {
+                    idx = _overChnPwrBackInfoTemp->productChId-1;
+                    info = &swInfo.port[idx];
+                }
+                else {
+                    info = &_globalPowerMangerTemp->_PowerInfo.port;
+                }
                 _overChnPwrBackInfoTemp->mac_addr = info->mac[0]?info->mac:"";
                 _overChnPwrBackInfoTemp->ip_addr = info->ip[0]?info->ip:"";
             #endif
@@ -540,8 +549,13 @@ int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_Ov
             _overChnPwrBackInfoTemp->product_ch_stop_delay = _globalPowerMangerTemp->product_ch_stop_delay;
 
         #ifdef USE_NETSWITCH
-            idx = _overChnPwrBackInfoTemp->productChId-1;
-            port_info_t *info=&swInfo.port[idx];
+            if(dev_addr==0) {
+                idx = _overChnPwrBackInfoTemp->productChId-1;
+                info = &swInfo.port[idx];
+            }
+            else {
+                info = &_globalPowerMangerTemp->_PowerInfo.port;
+            }
             _overChnPwrBackInfoTemp->mac_addr = info->mac[0]?info->mac:"";
             _overChnPwrBackInfoTemp->ip_addr = info->ip[0]?info->ip:"";
         #endif

+ 1 - 1
pro/src/sqlite_handle.h

@@ -21,7 +21,7 @@ int dev_search_last_Index(sqlite3 *db,int* nIndex,char* tableName);
 int dev_change_last_Index(sqlite3 *db,int* nIndex,int nDeleteNumber,char* tableName);
 int dev_insert_power_info(sqlite3 *db,GlobalPowerInfo* _globalPowerChnInfo,int* nIndex);
 int dev_search_latest_power_info(sqlite3 *db,int product_id,int product_ch_id,GlobalPowerInfo* _globalPowerInfo);
-int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_OverChnPwrAckInfo* __overChnPwrAckInfo);
+int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_OverChnPwrAckInfo* __overChnPwrAckInfo, int dev_addr);
 
 int dev_search_latest_power_statistic_info(GlobalDeviceManager* globalDeviceManger, _OverAllPwrAckInfo *all);
 int dev_search_latest_t_ac_power_statistic_info(int nCh,int nType,_OverAllPwrAckInfo* __overChnPwrAckInfo,GlobalDeviceManager* globalDeviceManger);

+ 2 - 2
pro/src/sys.c

@@ -828,8 +828,8 @@ int sys_set_net(NetworkInfo_t *para, int ipVersion)
             //system("ip addr flush dev eth0");
             //sprintf(eth0, "ip link set dev eth0 %s/%d && ip link set eth0 up && ip link set eth0 down", info->ip_address, info->netmask);
             //system(eth0);
-            system("ifdown eth0 && ifup eth0");
-            if(ipVersion==IP_V6) exit(0);
+            system("ifdown eth0; ifup eth0");
+            exit(0);
         }
     }
     else {

+ 2 - 2
pro/src/websocket_handle.c

@@ -154,13 +154,13 @@ static void web_update(ws_handle_t *wh)
 
             if(cur_dev_addr==0) {
                 pthread_mutex_lock(&gdm->_power_update); 
-                nRetCh=dev_search_latest_power_All_info(gdm,&chInfo);
+                nRetCh=dev_search_latest_power_All_info(gdm,&chInfo, cur_dev_addr);
                 pthread_mutex_unlock(&gdm->_power_update);
                 pdm = gdm;
             }
             else {
                 cascade_lock();
-                nRetCh=dev_search_latest_power_All_info(gdm2,&chInfo);
+                nRetCh=dev_search_latest_power_All_info(gdm2,&chInfo, cur_dev_addr);
                 cascade_unlock();
                 pdm = gdm2;
             }

+ 1 - 1
pub

@@ -79,7 +79,7 @@ function do_copy()
         rm -rf  $curdir/output/t113i/root/run/web
         cp -rf $custdir/web/anderson  $curdir/output/t113i/root/run/web
         
-        cp -f $custdir/etc/interfaces $curdir/output/t113i/etc/network/
+        #cp -f $custdir/etc/interfaces $curdir/output/t113i/etc/network/
         cp -f $custdir/db/ac_i3_o3_english.db $curdir/output/t113i/root/run/app/pdu_dat.db
         cp -f $custdir/logo/logo_neuter.png $curdir/output/t113i/root/run/app/image/logo.png
     elif [ $cust -eq 9 ]; then