Ver código fonte

Merge branch 'master' of http://jiecheng2024.tpddns.cn:3000/liyuezong/SmartPDCode

# Conflicts:
#	pro/src/appweb_handle.c
guohui 1 ano atrás
pai
commit
4bd4bfdb96
7 arquivos alterados com 215 adições e 78 exclusões
  1. 1 1
      output/prod/PDUInfo.txt
  2. 6 7
      output/prod/push.bat
  3. 1 1
      pro/CMakeLists.txt
  4. 6 1
      pro/src/app.c
  5. 118 30
      pro/src/appweb_handle.c
  6. 82 36
      pro/src/cascade.c
  7. 1 2
      pro/src/cascade.h

+ 1 - 1
output/prod/PDUInfo.txt

@@ -4,7 +4,7 @@
 "device_date": "2024/01/01 11:10:10"
 "device_batch": "GC101X5502"
 "server_name": "购旺工业(赣州)有限公司"
-"server_net": "https://www.gowone.com"
+"server_site": "https://www.gowone.com"
 "server_mail": "steven@gowone.com"
 "server_address": "江西省赣州市赣州经济技术开发区香江科技园11栋"
 "server_telephone": "400-013-7168"

+ 6 - 7
output/prod/push.bat

@@ -1,6 +1,6 @@
 @ECHO OFF
 
-SET IP=192.168.1.132
+SET IP=192.168.234.132
 
 SET BAT=0
 IF "%~1" NEQ "" (
@@ -11,7 +11,6 @@ IF "%~1" NEQ "" (
 SET CURDIR=%~dp0
 SET CURDIR=%CURDIR:~0,-1%
 
-SET  TMPDIR=tmp
 SET  DEVDIR=/root
 
 SET PSCP=%CURDIR%\tools\pscp 
@@ -25,25 +24,25 @@ SET FILE=PDUInfo.txt
 
 ::test ip
 ECHO ping %IP% ...
-PING -n 3 -w 500 %IP%  >NUL
+PING -n 3 -w 500 %IP%  > NUL
 IF %ERRORLEVEL% NEQ 0 (
     IF %BAT% EQU 0 (
-    ECHO %IP% can't reached!
-        TIMEOUT /T 2 > NUL
+        ECHO %IP% can't reached!
     )
     EXIT /B 1
 )
 
 ::send files
 ECHO send %FILE% to device ...
-ECHO  y  | %PSCP%  %FILE% %USR%@%IP%:%DEVDIR%
+ECHO y | %PSCP% -pw %PWD% %FILE% %USR%@%IP%:%DEVDIR%
 IF %ERRORLEVEL% NEQ 0 (
     ECHO send failed!
+    TIMEOUT /T 2 > NUL
     EXIT /B 2
 )
 
 ECHO send finished, release files now ...
-ECHO  y  | %PLINK%  -ssh -t  -pw %PWD% %USR%@%IP% -m %FBAT%
+ECHO y | %PLINK%  -ssh -t -pw %PWD% %USR%@%IP% -m %FBAT%
 IF %ERRORLEVEL% NEQ 0 (
     ECHO upgrade failed!
     EXIT /B 3

+ 1 - 1
pro/CMakeLists.txt

@@ -1,6 +1,6 @@
 cmake_minimum_required (VERSION 2.8)
 
-set(CHIP t113s)
+set(CHIP t113i)
 
 if(${CHIP} STREQUAL "t113i" )
 

+ 6 - 1
pro/src/app.c

@@ -164,6 +164,8 @@ int board_list_get(board_list_t *list)
     list_for_each_entry(tmp,&hd->list,list) {
         if(tmp->product_saddr>0) {
             l->info[l->cnt++].addr=tmp->product_saddr;
+            g_switch_get_board_info(&l->info[l->cnt]);
+            l->cnt++;
             if(l->cnt>=max) break;
         }
     }
@@ -1622,7 +1624,10 @@ static void* breaker_thread(void *arg)
                     break;
                 }
             }
-            
+            if(temp->breaker_gather_addr == 0)
+            {
+                hlw8110_read_Status(NULL,(int*)(&temp->breaker_status));
+            }
         }
         lock_s_release(LOCK_ID_BREAKER);
         sleep(1);

+ 118 - 30
pro/src/appweb_handle.c

@@ -15,6 +15,7 @@
 #include "mongoose.h"
 #include "language_common.h"
 #include "websocket_handle.h"
+#include "breaker_detection.h"
 
 #define TOTAL_COUNT 60
 #define FN_MAX  30
@@ -5374,51 +5375,138 @@ static void equipmentMintenance(void *conn)
                 strcpy(breakerManager->breaker_switch_name,buff);
                 breakerManager->breaker_id =  i;  
                 uint32_t jdh = atoi(_Over_equipment_mintenance.jdh);
-                if(jdh <= MAX_BREAKER_CHN)
+                if(breakerManager->breaker_gather_addr >= BREADER_485_ADDR && 
+                                    breakerManager->breaker_gather_addr <= (BREADER_485_ADDR + BREAKER_BOARD_MAX))
                 {
-                    char jdh_flag = 0;
-                    char chn[MAX_BREAKER_CHN] = {0};
-
-                    lock_s_hold(LOCK_ID_BREAKER);
-                    list_for_each_entry(temp, &__globalDeviceManage.g_new_global_breaker.list, list)
+                    if(jdh <= MAX_BREAKER_CHN && jdh >0)
                     {
-                        if(temp->breaker_gather_addr == breakerManager->breaker_gather_addr)
+                        char jdh_flag = 0;
+                        char chn[MAX_BREAKER_CHN] = {0};
+
+                        lock_s_hold(LOCK_ID_BREAKER);
+                        list_for_each_entry(temp, &__globalDeviceManage.g_new_global_breaker.list, list)
                         {
-                            chn[temp->breaker_chn-1] = 1;
+                            if(temp->breaker_gather_addr == breakerManager->breaker_gather_addr)
+                            {
+                                chn[temp->breaker_chn-1] = 1;
+                            }
                         }
-                    }
-                    lock_s_release(LOCK_ID_BREAKER);
+                        lock_s_release(LOCK_ID_BREAKER);
 
-                    if(chn[jdh-1] != 1)
+                        if(chn[jdh-1] != 1)
+                        {
+                            breakerManager->breaker_chn = jdh;
+                        }else
+                        {
+                            jdh_flag = 1;
+                        }
+                        
+                        if(jdh_flag == 1)
+                        {
+                            free(breakerManager);
+                            breakerManager = NULL;
+                            ack_str = ctrl_breaker_err_ack_to_json("channel or id is existing!!!!");
+                            
+                        }else{
+                            dev_insert_breaker_genera_manage(__globalDeviceManage.db,breakerManager);
+
+                            lock_s_hold(LOCK_ID_BREAKER);
+                            list_add_tail(&breakerManager->list,&__globalDeviceManage.g_new_global_breaker.list);
+                            lock_s_release(LOCK_ID_BREAKER);
+
+                            ack_str=ctrl_sts_ack_to_json();
+                        }
+                    }else {
+                            free(breakerManager);
+                            breakerManager = NULL;
+                            ack_str = ctrl_breaker_err_ack_to_json("jdh error!!!!");
+                    }
+                }else if(breakerManager->breaker_gather_addr >= 1 && breakerManager->breaker_gather_addr <=30) //controller
+                {
+                    if(jdh <= 2 && jdh > 0)    
                     {
-                        breakerManager->breaker_chn = jdh;
+                        char jdh_flag = 0;
+                        char chn[2] = {0};
+                        lock_s_hold(LOCK_ID_BREAKER);
+                        list_for_each_entry(temp, &__globalDeviceManage.g_new_global_breaker.list, list)
+                        {
+                            if(temp->breaker_gather_addr == breakerManager->breaker_gather_addr)
+                            {
+                                chn[temp->breaker_chn-1] = 1;
+                            }
+                        }
+                        lock_s_release(LOCK_ID_BREAKER);
+                        if(chn[jdh-1] != 1)
+                        {
+                            breakerManager->breaker_chn = jdh;
+                        }else
+                        {
+                            jdh_flag = 1;
+                        }
+                        if(jdh_flag == 1)
+                        {
+                            free(breakerManager);
+                            breakerManager = NULL;
+                            ack_str = ctrl_breaker_err_ack_to_json("channel or id is existing!!!!");
+                            
+                        }else{
+                            dev_insert_breaker_genera_manage(__globalDeviceManage.db,breakerManager);
+
+                            lock_s_hold(LOCK_ID_BREAKER);
+                            list_add_tail(&breakerManager->list,&__globalDeviceManage.g_new_global_breaker.list);
+                            lock_s_release(LOCK_ID_BREAKER);
+
+                            ack_str=ctrl_sts_ack_to_json();
+                        }
+
                     }else
-                    {
-                        jdh_flag = 1;
-                    }
-                     
-                    if(jdh_flag == 1)
                     {
                         free(breakerManager);
                         breakerManager = NULL;
-                        ack_str = ctrl_breaker_err_ack_to_json("channel or id is existing!!!!");
-                        
-                    }else{
-                        dev_insert_breaker_genera_manage(__globalDeviceManage.db,breakerManager);
-
+                        ack_str = ctrl_breaker_err_ack_to_json("jdh error!!!!");
+                    }
+                }else if(breakerManager->breaker_gather_addr == 0) //current support one breaker
+                {
+                    if(jdh == 1)
+                    {
+                        char jdh_flag = 0;
                         lock_s_hold(LOCK_ID_BREAKER);
-                        list_add_tail(&breakerManager->list,&__globalDeviceManage.g_new_global_breaker.list);
+                        list_for_each_entry(temp, &__globalDeviceManage.g_new_global_breaker.list, list)
+                        {
+                            if(temp->breaker_gather_addr == breakerManager->breaker_gather_addr)
+                            {
+                                jdh_flag = 1;
+                            }
+                        }
                         lock_s_release(LOCK_ID_BREAKER);
-
-                        ack_str=ctrl_sts_ack_to_json();
-                    }
-                }else {
+                        if(jdh_flag == 1)
+                        {
+                            free(breakerManager);
+                            breakerManager = NULL;
+                            ack_str = ctrl_breaker_err_ack_to_json("channel or id is existing!!!!");
+                            
+                        }else{
+                            breakerManager->breaker_chn = jdh;
+                            dev_insert_breaker_genera_manage(__globalDeviceManage.db,breakerManager);
+
+                            lock_s_hold(LOCK_ID_BREAKER);
+                            list_add_tail(&breakerManager->list,&__globalDeviceManage.g_new_global_breaker.list);
+                            lock_s_release(LOCK_ID_BREAKER);
+
+                            ack_str=ctrl_sts_ack_to_json();
+                        }
+                    }else
+                    {
                         free(breakerManager);
                         breakerManager = NULL;
                         ack_str = ctrl_breaker_err_ack_to_json("jdh error!!!!");
-                    }
-               
-
+                    }   
+                }else
+                {
+                    free(breakerManager);
+                    breakerManager = NULL;
+                    ack_str = ctrl_breaker_err_ack_to_json("not surpport base addr !!");
+                }
             }else
             {
                 ack_str = ctrl_breaker_err_ack_to_json("ID More 48 !!!!");

+ 82 - 36
pro/src/cascade.c

@@ -10,6 +10,7 @@
 #include "paras.h"
 #include "cascade_slave_tcp.h"
 #include "sys.h"
+#include "breaker_detection.h"
 
 #if 1
     #define LOGD            log_d
@@ -346,69 +347,114 @@ static int slave_breaker_add(cascade_breaker_add_t *data)
         if(id[i] == 0)
         break;
     }
-        if(i > MAX_BREAKER_ID)
+    if(i > MAX_BREAKER_ID)
+    {
+            goto quit;
+    }
+    uint32_t jdh = data->jdh;
+    char jdh_flag = 0;
+    if((data->cjdz >= BREADER_485_ADDR) && (data->cjdz <= (BREADER_485_ADDR+BREAKER_BOARD_MAX)))        //breaker board
+    {
+        if(jdh > MAX_BREAKER_CHN || jdh < 1)
         {
             goto quit;
         }
-        GlobalBreakerManager *breakerManager = (GlobalBreakerManager*) malloc(sizeof(GlobalBreakerManager));
-        memset(breakerManager,0,sizeof(GlobalBreakerManager));
-        breakerManager->product_id = __globalDeviceManage._globalDevInfo.product.id;
-        breakerManager->breaker_gather_addr = data->cjdz;
-        strcpy(breakerManager->breaker_com,data->com);
-        strcpy(breakerManager->breaker_gather_type,data->cjfs);
-        strcpy(breakerManager->breaker_chns_name,data->breaker_chns);
-
-        breakerManager->breaker_id =  i; 
-        sprintf(buff,"Breaker_%d",breakerManager->breaker_id);
-        strcpy(breakerManager->breaker_switch_name,buff);
         
-
-        uint32_t jdh = data->jdh;
-
-        if(jdh > MAX_BREAKER_CHN)
+        char chn[MAX_BREAKER_CHN] = {0};
+        lock_s_hold(LOCK_ID_BREAKER);
+        list_for_each_entry(temp, &dm->g_new_global_breaker.list, list)
         {
-            goto quit2;
+            if(temp->breaker_gather_addr == data->cjdz)
+            {
+                chn[temp->breaker_chn-1] = 1;
+            }
+        }
+        lock_s_release(LOCK_ID_BREAKER);
+        if(chn[jdh-1] != 1)
+        {
+            //breakerManager->breaker_chn = jdh;
+        }else
+        {
+            jdh_flag = 1;
+        }
+        if(jdh_flag == 1)
+        {
+            goto quit;
         }
 
-        char jdh_flag = 0;
-
-        char chn[MAX_BREAKER_CHN] = {0};
-
+    }else if(data->cjdz > 0 && data->cjdz <= 30)    //controller
+    {
+        char chn[2] = {0};
+        if(jdh > 2 || jdh < 1)
+        {
+            goto quit;
+        }
         lock_s_hold(LOCK_ID_BREAKER);
         list_for_each_entry(temp, &dm->g_new_global_breaker.list, list)
         {
-            if(temp->breaker_gather_addr == breakerManager->breaker_gather_addr)
+            if(temp->breaker_gather_addr == data->cjdz)
             {
                 chn[temp->breaker_chn-1] = 1;
             }
         }
         lock_s_release(LOCK_ID_BREAKER);
-
         if(chn[jdh-1] != 1)
         {
-            breakerManager->breaker_chn = jdh;
+           // breakerManager->breaker_chn = jdh;
         }else
         {
             jdh_flag = 1;
         }
-        
         if(jdh_flag == 1)
         {
-            goto quit2;
-        }else{
-            dev_insert_breaker_genera_manage(dm->db,breakerManager);
-
-            lock_s_hold(LOCK_ID_BREAKER);
-            list_add_tail(&breakerManager->list,&dm->g_new_global_breaker.list);
-            lock_s_release(LOCK_ID_BREAKER);
-            r = 0;
+            goto quit;
+        }
+    }else if(data->cjdz == 0)                //current board
+    {
+        if(jdh != 1)
+        {
+            goto quit;
+        }
+        lock_s_hold(LOCK_ID_BREAKER);
+        list_for_each_entry(temp, &dm->g_new_global_breaker.list, list)
+        {
+            if(temp->breaker_gather_addr == data->cjdz)
+            {
+                jdh_flag = 1;
+            }
         }
+        lock_s_release(LOCK_ID_BREAKER);
+        if(jdh_flag)
+        {
+            goto quit;
+        }
+    }else
+    {
+       goto quit;
+    }
+        GlobalBreakerManager *breakerManager = (GlobalBreakerManager*) malloc(sizeof(GlobalBreakerManager));
+        memset(breakerManager,0,sizeof(GlobalBreakerManager));
+        breakerManager->product_id = __globalDeviceManage._globalDevInfo.product.id;
+        breakerManager->breaker_gather_addr = data->cjdz;
+        strcpy(breakerManager->breaker_com,data->com);
+        strcpy(breakerManager->breaker_gather_type,data->cjfs);
+        strcpy(breakerManager->breaker_chns_name,data->breaker_chns);
+        breakerManager->breaker_chn = jdh;
+        breakerManager->breaker_id =  i; 
+        sprintf(buff,"Breaker_%d",breakerManager->breaker_id);
+        strcpy(breakerManager->breaker_switch_name,buff);
+    
+
+        dev_insert_breaker_genera_manage(dm->db,breakerManager);
+
+        lock_s_hold(LOCK_ID_BREAKER);
+        list_add_tail(&breakerManager->list,&dm->g_new_global_breaker.list);
+        lock_s_release(LOCK_ID_BREAKER);
+        r = 0;
+        
 
     return r;
 
-quit2:
-    free(breakerManager);
-    breakerManager = NULL;
 quit:
     return r;
 }

+ 1 - 2
pro/src/cascade.h

@@ -10,7 +10,6 @@
 
 #define MAX_BREAKER_CHN                 (6)
 #define MAX_BREAKER_ID                  (49) 
-#define MAX_BREAKER_DIO_CHN             1
 
 #define CASCADE_MAX                     32
 #define ERR_MAX                         5
@@ -179,7 +178,7 @@ typedef struct{
     uint16_t breaker_status;
     uint16_t breaker_addrs;
     int breaker_id;
-    char breaker_gather_type[6];
+    char breaker_gather_type[64];
     char breaker_com[20];
     char breaker_switch_name[64];
     char breaker_chns_name[64];    //