Просмотр исходного кода

阈值设置时,两张表只能设置阈值一次

guohui 1 год назад
Родитель
Сommit
dcaee9a4e7
1 измененных файлов с 25 добавлено и 21 удалено
  1. 25 21
      pro/src/paras.c

+ 25 - 21
pro/src/paras.c

@@ -2459,7 +2459,7 @@ static int get_power(int ch_id, GlobalPowerManger *power)
     return -1;
 }
 
-static int proc_power(char *path, int op, GlobalPowerManger *power)
+static int proc_power(char *path, int op, GlobalPowerManger *power, int flag)
 {
     int i,j,r=0;
     char temp[100];
@@ -2595,7 +2595,7 @@ static int proc_power(char *path, int op, GlobalPowerManger *power)
                     r = ini_rw(dic, token, &pover->product_pwrcon_over_upper_threshold_ctrl_para, sizeof(pover->product_pwrcon_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break; 
                     
                     if(chk_ok==0) {
-                        r = proc_power(path, PARAS_CHECK, tmp); if(r) break;
+                        r = proc_power(path, PARAS_CHECK, tmp, 0); if(r) break;
                         cnt_ok++;
                     }
                     else {
@@ -2604,11 +2604,13 @@ static int proc_power(char *path, int op, GlobalPowerManger *power)
                         r = dev_update_power_manage_genera_info(dm->db, 0, tmp->product_ch_id, tmp);  if(r) break;
                         r = dev_update_power_manage_over_info(dm->db, 0, tmp->product_ch_id, tmp);    if(r) break;
 
-                        r = get_power(tmp->product_ch_id, &pwr); if(r) break;
-                        tmp->_PowerInfo = pwr._PowerInfo;
-                        r = g_switch_set_all_single_threshold(&dm->_globalRelaySampManger,
-                                                    tmp->product_ch_type, tmp->product_saddr,
-                                                    tmp->product_ch_addr, tmp, 0);
+                        if(flag) {
+                            r = get_power(tmp->product_ch_id, &pwr); if(r) break;
+                            tmp->_PowerInfo = pwr._PowerInfo;
+                            r = g_switch_set_all_single_threshold(&dm->_globalRelaySampManger,
+                                                        tmp->product_ch_type, tmp->product_saddr,
+                                                        tmp->product_ch_addr, tmp, 0);
+                        }
                     }
                 }
 
@@ -2640,7 +2642,7 @@ static int proc_power(char *path, int op, GlobalPowerManger *power)
 
             list_for_each_entry(tmp, &ppower->list, list) {
                 if(!tmp) break;
-                r = proc_power(path, PARAS_CHECK, tmp); if(r) break;
+                r = proc_power(path, PARAS_CHECK, tmp, 0); if(r) break;
 
                 sprintf(token, "power:channel%d.addr",tmp->product_ch_id);
                 r = ini_rw(dic, token, &tmp->product_saddr, sizeof(tmp->product_saddr), TYPE_INT, op, 1); if(r) break;
@@ -2749,7 +2751,7 @@ static int proc_power(char *path, int op, GlobalPowerManger *power)
 
     return r;
 }
-static int proc_power3(char *path, int op, GlobalTreeACManager *power)
+static int proc_power3(char *path, int op, GlobalTreeACManager *power, int flag)
 {
    int i,j,r=0;
     char temp[100];
@@ -2886,7 +2888,7 @@ static int proc_power3(char *path, int op, GlobalTreeACManager *power)
                     r = ini_rw(dic, token, &pover->product_pwrcon_over_upper_threshold_ctrl_para, sizeof(pover->product_pwrcon_over_upper_threshold_ctrl_para), TYPE_INT, op, 1); if(r) break;
                     
                     if(chk_ok==0) {
-                        r = proc_power3(path, PARAS_CHECK, tmp); if(r) break;
+                        r = proc_power3(path, PARAS_CHECK, tmp, 0); if(r) break;
                         cnt_ok++;
                     }
                     else {
@@ -2899,11 +2901,13 @@ static int proc_power3(char *path, int op, GlobalTreeACManager *power)
                         pwr.global_over_manager = tmp->global_over_manager;
                         r = dev_update_t_ac_power_manage_over_info(dm->db, tmp);    if(r) break;
 
-                        r = g_switch_set_all_single_threshold(&dm->_globalRelaySampManger,
-                                                    pwr.product_ch_type,
-                                                    tmp->product_saddr,
-                                                    tmp->product_ch_addr,
-                                                    &pwr, 0);
+                        if(flag) {
+                            r = g_switch_set_all_single_threshold(&dm->_globalRelaySampManger,
+                                                        pwr.product_ch_type,
+                                                        tmp->product_saddr,
+                                                        tmp->product_ch_addr,
+                                                        &pwr, 0);
+                        }
                     }
                 }
 
@@ -2938,7 +2942,7 @@ static int proc_power3(char *path, int op, GlobalTreeACManager *power)
                 //channelID = tmp->product_ph_id/3+1;
                 channelID = tmp->product_ph_id+1;
 
-                r = proc_power3(path, PARAS_CHECK, tmp); if(r) break;
+                r = proc_power3(path, PARAS_CHECK, tmp, 0); if(r) break;
 
                 sprintf(token, "power3:channel%d.addr",channelID);
                 r = ini_rw(dic, token, &tmp->product_saddr, sizeof(tmp->product_saddr), TYPE_INT, op, 1); if(r) break;
@@ -3507,17 +3511,17 @@ int paras_alarm_xport(char *path, int io)
     int r=-1,pwr3;
     char temp[100];
 
-    //pwr3 = is_power3();
+    pwr3 = is_power3();
     if(io==PARAS_IMPORT) {
-        r = proc_power(path, PARAS_READ, NULL);
-        r = proc_power3(path, PARAS_READ, NULL);
+        r = proc_power(path, PARAS_READ, NULL, !pwr3);
+        r = proc_power3(path, PARAS_READ, NULL, pwr3);
     }
     else if(io==PARAS_EXPORT) {
         get_curtime_str(temp,sizeof(temp));
         sprintf(path, "/tmp/power_%s.ini", temp);
 
-        r = proc_power(path, PARAS_WRITE, NULL);
-        r = proc_power3(path, PARAS_WRITE, NULL);
+        r = proc_power(path, PARAS_WRITE, NULL, 0);
+        r = proc_power3(path, PARAS_WRITE, NULL, 0);
     }
 
     return r;