Procházet zdrojové kódy

1、合并代码20240627版

liyuezong před 2 roky
rodič
revize
3e5ac4ea10

+ 69 - 311
pro/src/app.c

@@ -144,18 +144,15 @@ void* power_thread(void* arg)
         int _chn = 0;
         list_for_each_entry(_globalPowerMangerTemp, &_globalDeviceManager->_globalPowerManger.list, list)
         {
-            #if(1)
             //获取通道类型
-            if (_globalDeviceManager->_global_device_info->product_type != 2) // 485
+
+            if (!(_globalPowerMangerTemp->product_saddr < MAX_CHN_COUNT && _globalPowerMangerTemp->product_saddr > 0))
             {
-                if (!(_globalPowerMangerTemp->product_saddr < MAX_CHN_COUNT && _globalPowerMangerTemp->product_saddr > 0))
-                {
-                    continue;
-                }
-                if (!(_globalPowerMangerTemp->product_ch_addr < AC_SINGLE_S_MAX_CHN_NUM && _globalPowerMangerTemp->product_ch_addr > 0))
-                {
-                    continue;
-                }
+            	continue;
+            }
+            if (!(_globalPowerMangerTemp->product_ch_addr < AC_SINGLE_S_MAX_CHN_NUM && _globalPowerMangerTemp->product_ch_addr > 0))
+            {
+                continue;
             }
             //log_d("ch%d cpy address:%d,chraddr:%d.\n",_globalPowerMangerTemp->product_ch_id,_globalPowerMangerTemp->product_saddr,_globalPowerMangerTemp->product_ch_addr);
             memcpy(&_globalPowerInfo._power_info,
@@ -201,7 +198,6 @@ void* power_thread(void* arg)
               case AC_SINGLE_S_TYPE:
               case AC_SINGLE_B_TYPE:
                   {
-                    #if(1)
                     //累加总电源信息
                     _globalTotalPowerInfo.product_id = _globalDeviceManager->_global_device_info->product_id;
                     _globalTotalPowerInfo.product_ch_id = 0 ; //总电源通道信息为0
@@ -277,7 +273,6 @@ void* power_thread(void* arg)
                         dev_Alarm_send_message(_globalDeviceManager,_globalPowerMangerTemp,WARNING_P_UP);
                     }
                     //动作
-                    #endif
 
                 }
                 break;
@@ -523,64 +518,6 @@ void* power_thread(void* arg)
                     */
             }
             break;
-            case RS485_Type:
-            {
-                // only one ch
-                _globalPowerMangerTemp->_PowerInfo.voltage = _globalPowerInfo._power_info.voltage;
-                _globalPowerMangerTemp->_PowerInfo.current = _globalPowerInfo._power_info.current;
-                _globalPowerMangerTemp->_PowerInfo.power = _globalPowerInfo._power_info.power;
-                _globalPowerMangerTemp->_PowerInfo.freq = _globalPowerInfo._power_info.freq;
-                _globalPowerMangerTemp->_PowerInfo.consumption = _globalPowerInfo._power_info.consumption;
-                _globalPowerMangerTemp->_PowerInfo.factor = _globalPowerInfo._power_info.factor;
-
-                _globalDeviceManager->_globalPowerManger._PowerInfo.voltage = _globalPowerInfo._power_info.voltage;
-                _globalDeviceManager->_globalPowerManger._PowerInfo.current = _globalPowerInfo._power_info.current;
-                _globalDeviceManager->_globalPowerManger._PowerInfo.power = _globalPowerInfo._power_info.power;
-                _globalDeviceManager->_globalPowerManger._PowerInfo.freq = _globalPowerInfo._power_info.freq;
-                _globalDeviceManager->_globalPowerManger._PowerInfo.consumption = _globalPowerInfo._power_info.consumption;
-                _globalDeviceManager->_globalPowerManger._PowerInfo.factor = _globalPowerInfo._power_info.factor;
-                _globalDeviceManager->_globalPowerManger._PowerInfo.status = _globalPowerInfo._power_info.status;
-                _globalDeviceManager->_globalPowerManger._PowerInfo.voltage = _globalPowerInfo._power_info.voltage;
-
-                _globalTotalPowerInfo._power_info.current = _globalPowerInfo._power_info.current;
-                _globalTotalPowerInfo._power_info.power = _globalPowerInfo._power_info.power;
-                _globalTotalPowerInfo._power_info.freq = _globalPowerInfo._power_info.freq;
-                _globalTotalPowerInfo._power_info.consumption = _globalPowerInfo._power_info.consumption;
-                _globalTotalPowerInfo._power_info.factor = _globalPowerInfo._power_info.factor;
-                _globalTotalPowerInfo._power_info.status = _globalPowerInfo._power_info.status;
-                _globalTotalPowerInfo.product_id = _globalDeviceManager->_global_device_info->product_id;
-                _globalTotalPowerInfo.product_ch_id = 0; // 总电源通道信息为0
-                _globalTotalPowerInfo.product_status = 0;
-                _globalPowerInfo.product_id = 1;
-                _globalPowerInfo.product_ch_id = 1;
-                gettimeofday(&tv, NULL);
-                // t = localtime(&tv.tv_sec);
-
-                time_t now;
-                time(&now);
-                t = localtime(&now);
-
-                char buffer[80];
-                strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", t);
-
-                memset(_globalPowerInfo.samp_time, 0, sizeof(_globalPowerInfo.samp_time));
-                strftime(_globalPowerInfo.samp_time, sizeof(_globalPowerInfo.samp_time), "%Y-%m-%d %H:%M:%S", t);
-                sprintf(buffer, ".%03d", tv.tv_usec / 1000);
-                strcat(_globalPowerInfo.samp_time, buffer);
-
-                if (difftime(now, _globalPowerMangerTemp->product_log_time) > (sSaveTime / 1000))
-                {
-                    _globalPowerMangerTemp->product_log_time = now;
-                    SaveDBFlag = true;
-                    /* code */
-                    // 插入数据库
-                    if (dev_insert_power_info(_globalDeviceManager->db, &_globalPowerInfo, &nSaveIndex) != 0)
-                    {
-                        log_d("ch%d insert data error.\n", _globalPowerMangerTemp->product_ch_id);
-                    }
-                }
-            }
-            break;
             }
             //nanosleep(&reqSleep, NULL); 
             //usleep(usleepTime);
@@ -665,19 +602,6 @@ void* power_thread(void* arg)
                 }
             }
         }
-        if (_globalDeviceManager->_global_device_info->product_type == 2)
-        {
-            memcpy(&_globalPowerInfo._power_info,
-                   &_globalDeviceManager->_all_ctrl_board[0]._PowerInfo[0],
-                   sizeof(PowerInfo));
-            _globalTotalPowerInfo._power_info.voltage = _globalPowerInfo._power_info.voltage;
-            _globalTotalPowerInfo._power_info.current = _globalPowerInfo._power_info.current;
-            _globalTotalPowerInfo._power_info.power = _globalPowerInfo._power_info.power;
-            _globalTotalPowerInfo._power_info.freq = _globalPowerInfo._power_info.freq;
-            _globalTotalPowerInfo._power_info.consumption = _globalPowerInfo._power_info.consumption;
-            _globalTotalPowerInfo._power_info.factor = _globalPowerInfo._power_info.factor;
-            _globalTotalPowerInfo._power_info.status = _globalPowerInfo._power_info.status;
-        }
 
         //插入总电源信息
         gettimeofday(&tv, &tz);
@@ -702,8 +626,6 @@ void* power_thread(void* arg)
 
         //动作
 
-        #endif
-
         //1ms
             //sleep(1);
         ///usleep(500*1000);  
@@ -750,6 +672,7 @@ int dev_sensor_init(GlobalDeviceManager *_globalDeviceManager)
     {
         log_e("sensor modbus init error.\n");
     }
+    else  log_i("sensor modbus init ok.\n");
 
     return 0;
 }
@@ -823,20 +746,7 @@ void* sensor_thread(void* arg)
                 _globalSensorInfo.sensor_id = _globalSensorMangerTemp->sensor_id;
                 _globalSensorInfo.val1 = temperature;
                 _globalSensorInfo.val2 = humidity;
-                if(_globalDeviceManager->_global_device_info->product_pwr_type == SmartPDU_AC)
-                {
-                    _globalDeviceManager->single_mmap->total_humidity = humidity * 1000;
-                    _globalDeviceManager->single_mmap->total_temp = temperature * 1000;
-                }
-                if (_globalDeviceManager->_global_device_info->product_type == 2)
-                 {
-                    // modbus_mapping_t *mb_mapping = _globalDeviceManager->_global_Slave_Modbus.mmp;
-                    //  *(uint32_t *)(&(mb_mapping->tab_registers[14])) = _globalSensorInfo.val1*1000;
-                    //  *(uint32_t *)(&(mb_mapping->tab_registers[16])) = _globalSensorInfo.val2*1000;
-                    _globalDeviceManager->g_modebus_read.temprature = _globalSensorInfo.val1 * 1000;
-                    _globalDeviceManager->g_modebus_read.humidity = _globalSensorInfo.val2 * 1000;
-                    _globalDeviceManager->g_modebus_read.sencor_status = _globalSensorMangerTemp->sensor_status;
-                }
+
                 // 写入数据库
                 gettimeofday(&tv, NULL);
                 time_t now;
@@ -859,6 +769,7 @@ void* sensor_thread(void* arg)
                         log_e("sensor_temp_write database error.");
                     }
                 }
+                 _globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
             }
             break;
             case 1: // 烟雾
@@ -883,7 +794,7 @@ void* sensor_thread(void* arg)
             break;
             }
         }
-        sleep(3);
+        sleep(1);
     }
 #endif
     pthread_exit(NULL);
@@ -891,6 +802,7 @@ void* sensor_thread(void* arg)
 void* shm_thread(void *arg)
 {
     int fd = 0;
+    GlobalPowerManger* _globalPowerMangerTemp = NULL ;
     GlobalDeviceManager *_globalDeviceManager = (GlobalDeviceManager *)&__globalDeviceManage;
     smartPDU_shm_data pShmData;
     memset(&pShmData, 0, sizeof(pShmData));
@@ -918,32 +830,52 @@ void* shm_thread(void *arg)
                 memcpy(&pShmData, _globalDeviceManager->g_shm_Data, sizeof(smartPDU_shm_data));
                 if (_globalDeviceManager->g_shm_Data->bPDUSet > 0) // 已更新
                 {
-
-                    GlobalPowerInfo _globalPowerInfo;
-                    memset(&_globalPowerInfo._power_info, 0, sizeof(PowerInfo));
-                    memcpy(&_globalPowerInfo._power_info,
-                           &_globalDeviceManager->_all_ctrl_board[0]._PowerInfo[0],
-                           sizeof(PowerInfo));
-                    _globalDeviceManager->g_shm_Data->fV = _globalPowerInfo._power_info.voltage;
-                    _globalDeviceManager->g_shm_Data->fA = _globalPowerInfo._power_info.current;
-                    _globalDeviceManager->g_shm_Data->fW = _globalPowerInfo._power_info.power;
-                    _globalDeviceManager->g_shm_Data->fF = _globalPowerInfo._power_info.factor;
-                    _globalDeviceManager->g_shm_Data->fS = _globalPowerInfo._power_info.consumption;
-                    _globalDeviceManager->g_shm_Data->nStatus = _globalPowerInfo._power_info.status;
-                    _globalDeviceManager->g_shm_Data->fT = _globalDeviceManager->g_modebus_read.temprature / 1000.0;                    
-                    _globalDeviceManager->g_shm_Data->fH = _globalDeviceManager->g_modebus_read.humidity / 1000.0;
-
+                    int nselect=_globalDeviceManager->g_shm_Data->nSelectPowerCH;
+                    int nIndex=0;
+                    if (nselect==0)
+                    {
+                        //_globalDeviceManager->_globalPowerManger;
+                        _globalDeviceManager->g_shm_Data->fV = _globalDeviceManager->_globalPowerManger._PowerInfo.voltage;
+                        _globalDeviceManager->g_shm_Data->fA = _globalDeviceManager->_globalPowerManger._PowerInfo.current;
+                        _globalDeviceManager->g_shm_Data->fW = _globalDeviceManager->_globalPowerManger._PowerInfo.power;
+                        _globalDeviceManager->g_shm_Data->fF = _globalDeviceManager->_globalPowerManger._PowerInfo.factor;
+                        _globalDeviceManager->g_shm_Data->fS = _globalDeviceManager->_globalPowerManger._PowerInfo.consumption;
+                        _globalDeviceManager->g_shm_Data->nStatus = _globalDeviceManager->_globalPowerManger._PowerInfo.status;
+                        _globalDeviceManager->g_shm_Data->fT = _globalDeviceManager->g_modebus_read.temprature / 1000.0;
+                        _globalDeviceManager->g_shm_Data->fH = _globalDeviceManager->g_modebus_read.humidity / 1000.0;
+                    }
+                    else
+                    {
+                        list_for_each_entry(_globalPowerMangerTemp, &_globalDeviceManager->_globalPowerManger.list, list)
+                        {
+                            nIndex += 1;
+                            if (nselect <= nIndex)
+                            break;
+                        }
+                        // GlobalPowerInfo _globalPowerInfo;
+                        // memset(&_globalPowerInfo._power_info, 0, sizeof(PowerInfo));
+                        // memcpy(&_globalPowerInfo._power_info,
+                        //        &_globalDeviceManager->_all_ctrl_board[0]._PowerInfo[0],
+                        //        sizeof(PowerInfo));
+                        _globalDeviceManager->g_shm_Data->fV = _globalPowerMangerTemp->_PowerInfo.voltage;
+                        _globalDeviceManager->g_shm_Data->fA = _globalPowerMangerTemp->_PowerInfo.current;
+                        _globalDeviceManager->g_shm_Data->fW = _globalPowerMangerTemp->_PowerInfo.power;
+                        _globalDeviceManager->g_shm_Data->fF = _globalPowerMangerTemp->_PowerInfo.factor;
+                        _globalDeviceManager->g_shm_Data->fS = _globalPowerMangerTemp->_PowerInfo.consumption;
+                        _globalDeviceManager->g_shm_Data->nStatus = _globalPowerMangerTemp->_PowerInfo.status;
+                        _globalDeviceManager->g_shm_Data->fT = _globalDeviceManager->g_modebus_read.temprature / 1000.0;
+                        _globalDeviceManager->g_shm_Data->fH = _globalDeviceManager->g_modebus_read.humidity / 1000.0;
+                    }
                 }
                 else if (_globalDeviceManager->g_shm_Data->bPDUSet == 0)
                 { // 等于于0则更新pdu数据
-                    // int  nIndex=1;
-                    // pShmData.nMaxCh = 1;
-                    // pShmData.bPDUSet = 1;
-                    // memcpy(_globalDeviceManager->g_shm_Data,&pShmData,sizeof(smartPDU_shm_data));
-                    // memcpy(_globalDeviceManager->g_shm_Data->nMaxCh,&nIndex,sizeof(int));
-                    // memcpy(_globalDeviceManager->g_shm_Data->bPDUSet,&nIndex,sizeof(int));
-                    _globalDeviceManager->g_shm_Data->nMaxCh = 1;
-                    _globalDeviceManager->g_shm_Data->bPDUSet = 1;
+                    int nMaxCh=0;
+                    list_for_each_entry(_globalPowerMangerTemp, &_globalDeviceManager->_globalPowerManger.list, list)
+                    {
+                        nMaxCh+=1;
+                    }
+                     _globalDeviceManager->g_shm_Data->nMaxCh = nMaxCh;
+                     _globalDeviceManager->g_shm_Data->bPDUSet = 1;
                 }
                 else
                 { // 小于0 则主程序已析构退出重新等待加载
@@ -953,8 +885,8 @@ void* shm_thread(void *arg)
                     break;
                 }
             }
+            usleep(200000);
         }
-        sleep(1);
     }
     if (_globalDeviceManager->g_shm_Data)
     {
@@ -1249,156 +1181,47 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
     }
     log_i("get all chn data ok.\n");
 
-#if(OS_HANDWARE==0)
-    INIT_LIST_HEAD(&_globalDeviceManager->_globalPowerManger.list);
-    int i = 1 ;
-    for (size_t j = 0; j < AC_SINGLE_S_CUR_CHN_NUM; j++)
-    {
-        GlobalPowerManger* _globalPowerMangerTemp = (GlobalPowerManger*)malloc(sizeof(GlobalPowerManger));
-        if(_globalPowerMangerTemp==NULL)
-        {
-            //log_e("_globalPowerManger malloc error.\n");
-            return -1 ;       
-        }  
-        memset(_globalPowerMangerTemp, 0, sizeof(GlobalPowerManger));
-        _globalPowerMangerTemp->global_over_manager = (GlobalOverManager*)malloc(sizeof(GlobalOverManager));
-        if(_globalPowerMangerTemp->global_over_manager==NULL)
-        {
-            //log_e("_globalPowerManger->global_over_manager malloc error.\n");
-            return -1 ;       
-        } 
-        memset(_globalPowerMangerTemp->global_over_manager,0,sizeof(GlobalOverManager));
-        //查询是否由通道信息
-        ret = dev_get_power_manage_info(_globalDeviceManager->db,
-                                        _globalDeviceManager->_global_device_info->product_id,
-                                        ((i-1)*AC_SINGLE_S_CUR_CHN_NUM+j+1), //1*8+j
-                                        _globalPowerMangerTemp);
-
-        _globalPowerMangerTemp->product_saddr = i ;
-        //添加到队尾
-        list_add_tail(&_globalPowerMangerTemp->list,&_globalDeviceManager->_globalPowerManger.list);
-    }
-
-    log_d("get power manage info ok.");
-
-    //初始化传感器列表
-    INIT_LIST_HEAD(&_globalDeviceManager->_globalSensorManger.list);
-    //获取传感器管理信息 
-    /////////////////////////////////////////
-    ///todo:此信息需要和数据库更新以后在关联
-    ret = dev_get_sensor_manage_info(_globalDeviceManager->db,
-                                    _globalDeviceManager->_global_device_info->product_id,
-                                    &_globalDeviceManager->_globalSensorManger);
-    if(ret!=0)
-    {
-        log_e("get sensor manage error.");
-    }
-    log_d("get sensor info ok.");
-
-#else(OS_HANDWARE==1)
     INIT_LIST_HEAD(&_globalDeviceManager->_globalPowerManger.list);
-    //初始化modbus,搜寻子设备
+    // 初始化modbus,搜寻子设备
     ret = g_modbus_init(&_globalDeviceManager->_globalRelaySampManger,
                         INTERL_MODBUS_PORT,
                         INTERL_MODBUS_BAUD,
                         MASTER_MODE,
                         0,
-                        "relay",
-                        1);
+                        "relay",1);
 
     if(ret!=0)
     {
         switch (ret)
         {
         case -2:
-            log_w("Modbus: modbus_rtu_set_serial_mode :MODBUS_RTU_RS485(1)");
+            log_w("Relay modbus: modbus_rtu_set_serial_mode :MODBUS_RTU_RS485(1)");
             break;
         case -3:
-            log_w("Modbus: modbus_rtu_set_rts: MODBUS_RTU_RTS_NONE(0)");
+            log_w("Relay modbus: modbus_rtu_set_rts: MODBUS_RTU_RTS_NONE(0)");
             break;
         case -4:
-            log_w("Modbus: pthread_mutex_init");
+            log_w("Relay modbus: pthread_mutex_init");
             break;
         case -5:
-            log_w("Modbus: modbus_connect");
+            log_w("Relay modbus: modbus_connect");
             break;
         default:
             break;
         }
-        log_w("Modbus Error:%s\n",modbus_strerror(errno));
+        log_w("Relay modbus Error:%s\n",modbus_strerror(errno));
         return -1 ;
     }
-    log_i("modbus init ok.\n");
+    log_i("Relay modbus init ok.\n");
     //搜索子地址
     chn = 1 ;
     nTac_chn=3;
 
-    int nGroups=18;
+    int nGroups=8;
 
-    if (_globalDeviceManager->_global_device_info->product_type == 2)
-    { // RS485
-        log_d("485Type init begin!");
-        _globalDeviceManager->_RS485LowConfData = hlw8110_init();
-        _globalDeviceManager->useSlaveCount++;
-        _globalDeviceManager->_all_ctrl_board[0].product_saddr = 1;
-        _globalDeviceManager->_all_ctrl_board[0].product_number = 1;
-        _globalDeviceManager->_all_ctrl_board[0].product_type = RS485_Type;
-        GlobalPowerManger *_globalPowerMangerTemp = (GlobalPowerManger *)malloc(sizeof(GlobalPowerManger));
-        if (_globalPowerMangerTemp == NULL)
-        {
-            // log_e("_globalPowerManger malloc error.\n");
-            return -1;
-        }
-        memset(_globalPowerMangerTemp, 0, sizeof(GlobalPowerManger));
-        _globalPowerMangerTemp->global_over_manager = (GlobalOverManager *)malloc(sizeof(GlobalOverManager));
-        if (_globalPowerMangerTemp->global_over_manager == NULL)
-        {
-            // log_e("_globalPowerManger->global_over_manager malloc error.\n");
-            return -1;
-        }
-        memset(_globalPowerMangerTemp->global_over_manager, 0, sizeof(GlobalOverManager));
-        // 查询是否由通道信息
-        ret = dev_get_power_manage_info(_globalDeviceManager->db,
-                                        _globalDeviceManager->_global_device_info->product_id,
-                                        0,
-                                        1, // 1*8+j
-                                        _globalPowerMangerTemp);
-        // 未查询到信息 则插入
-        if (ret == -1)
-        {
-            _globalPowerMangerTemp->product_id = _globalDeviceManager->_global_device_info->product_id;
-            _globalPowerMangerTemp->product_saddr = 0;
-            _globalPowerMangerTemp->product_ch_id = 1;
-            _globalPowerMangerTemp->product_ch_addr = 1;
-            sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
-            _globalPowerMangerTemp->product_ch_type = RS485_Type;
-            _globalPowerMangerTemp->product_ch_status = 0;
-            _globalPowerMangerTemp->product_ch_start_delay = 1000;
-            _globalPowerMangerTemp->product_ch_stop_delay = 1000;
-            if (dev_insert_power_manage_info(_globalDeviceManager->db,
-                                             _globalDeviceManager->_global_device_info->product_id,
-                                             _globalPowerMangerTemp->product_ch_id,
-                                             _globalPowerMangerTemp) != 0)
-            {
-                log_e("address %d chn %d data inserted error.\n", 0, 1);
-                return 0;
-            }
-            /*
-            else
-            {
-                log_i("chn %d data inserted ok.\n",(i-1)*AC_SINGLE_S_CUR_CHN_NUM+j+1);
-            }
-            */
-        }
-        // 添加到队尾
-        list_add_tail(&_globalPowerMangerTemp->list, &_globalDeviceManager->_globalPowerManger.list);
-        log_d("485Type init success!");
-    }
-    else
-    {
-        log_d("Others init begin!");
-    memset(&_globalDeviceManager->_all_ctrl_board,0,sizeof(_globalDeviceManager->_all_ctrl_board));
-	for (size_t i = 0; i < MAX_CHN_COUNT; i++)
+    log_d("GCPDU init begin!");
+    memset(&_globalDeviceManager->_all_ctrl_board, 0, sizeof(_globalDeviceManager->_all_ctrl_board));
+    for (size_t i = 1; i < MAX_CHN_COUNT; i++)
     {
         type = 0 ;
         int nMaxChn=0;
@@ -1477,68 +1300,6 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
                             }
                             */
                         }   
-                        /*                     
-                        if (type==AC_SINGLE_B_TYPE)
-                        {
-                            // 初始化三相子通道
-                            GlobalTreeACManager *_globalTACManager = NULL;
-                            for (size_t indexT = 0; indexT < 3; indexT++)
-                            {
-                                _globalTACManager = (GlobalTreeACManager *)malloc(sizeof(GlobalTreeACManager));
-                                memset(_globalTACManager, 0, sizeof(GlobalTreeACManager));
-                                if (_globalTACManager == NULL)
-                                {
-                                    log_e("_globalTACManager malloc error.\n");
-                                    return -1;
-                                }
-                                _globalTACManager->global_over_manager = (GlobalOverManager *)malloc(sizeof(GlobalOverManager));
-                                memset(_globalTACManager->global_over_manager, 0, sizeof(GlobalOverManager));
-                                if (_globalTACManager->global_over_manager == NULL)
-                                {
-                                    log_e("_globalTACManager->global_over_manager malloc error.\n");
-                                    return -1;
-                                }
-                                ret = dev_get_t_ac_power_manage_info(_globalDeviceManager->db,
-                                                                     _globalDeviceManager->_global_device_info->product_id, i,
-                                                                     j + 1, // 1*8+j
-                                                                     _globalTACManager);
-                                _globalTACManager->product_ch_addr = j + 1;
-                                // 未查询到信息 则插入
-                                if (ret == -1)
-                                {
-                                    _globalTACManager->product_id = _globalDeviceManager->_global_device_info->product_id;
-                                    _globalTACManager->product_saddr = i;
-                                    _globalTACManager->product_ch_id = _globalPowerMangerTemp->product_ch_id;
-                                    _globalTACManager->product_ch_addr = j + 1;
-                                    _globalTACManager->product_ph_id = nTac_chn;
-                                    _globalTACManager->product_ph_type = indexT;
-                                    _globalTACManager->product_ph_outputType = 2;//1三相2单相
-                                    if (nTac_chn==0)
-                                    {
-                                        _globalTACManager->product_ph_outputStatus = 1;//1输出2不输出
-                                    }else{
-                                        _globalTACManager->product_ph_outputStatus = 2;//1输出2不输出
-                                    }                   
-                                      
-                                    if (dev_insert_t_ac_power_manage_info(_globalDeviceManager->db,
-                                                                          _globalDeviceManager->_global_device_info->product_id,
-                                                                          _globalTACManager->product_ch_id,
-                                                                          _globalTACManager) != 0)
-                                    {
-                                        log_e("address %d ph_chn %d data inserted error.\n", i, nTac_chn);
-                                        return 0;
-                                    }
-                                }
-                                // 绑定到三项通道
-                                _globalTACManager->product_saddr = i;
-                                _globalTACManager->product_ph_type = indexT;
-                                if (_globalPowerMangerTemp)
-                                {
-                                    list_add_tail(&_globalTACManager->list_Tree_AC, &_globalPowerMangerTemp->list_Tree_AC);
-                                }
-                                nTac_chn += 1;
-                            }
-                        }*/
                         _globalPowerMangerTemp->product_saddr = i ;
                         //添加到队尾
                         list_add_tail(&_globalPowerMangerTemp->list,&_globalDeviceManager->_globalPowerManger.list);
@@ -1930,7 +1691,7 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
             }
         }
     }
-    }
+
     //初始化传感器列表
     INIT_LIST_HEAD(&_globalDeviceManager->_globalSensorManger.list);
     //获取传感器管理信息 
@@ -1946,7 +1707,6 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
     else
         log_d("get sensor info ok.");
 
-#endif
     //查询数据库获取传感器信息 
 
     //保存配置
@@ -1961,7 +1721,6 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
    #endif
     //创建传感器采集控制线程
 
-#if 1
     _globalNTPManager.ntpaddress = malloc(128);
     _globalNTPManager.ntpName = malloc(128);
     _globalNTPManager.time = malloc(22);
@@ -1994,7 +1753,6 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
     }
 
     thread_start(THREAD_ID_NTP, ntp_thread, NULL, 4*MB, 0);
-#endif
     thread_start(THREAD_ID_SNMP, snmp_thread, _globalDeviceManager, 4*MB, 0);
     
     //初始化webapp

+ 63 - 70
pro/src/appweb_handle.c

@@ -245,9 +245,23 @@ void* update_thread(void* arg)
                     gdm->_global_device_info->product_pwr_type==SmartPDU_Tree_AC_One)
                 {
                     //三相
-                    _OverAllPwrAckInfo _over_all_pwr_back_info;
-                    dev_search_latest_t_ac_power_statistic_info(0, gdm->nTreeACLshow, &_over_all_pwr_back_info);
-                    ack_str = over_all_pwr_monitor_to_json(&_over_all_pwr_back_info);
+
+                    _OverAllPwrAckInfo _over_all_pwr_back_info_L1;
+                    _OverAllPwrAckInfo _over_all_pwr_back_info_L2;
+                    _OverAllPwrAckInfo _over_all_pwr_back_info_L3;
+                    if (cur_dev_addr == 0)
+                    {
+                        dev_search_latest_t_ac_power_statistic_info(0, 0, &_over_all_pwr_back_info_L1, gdm);
+                        dev_search_latest_t_ac_power_statistic_info(0, 1, &_over_all_pwr_back_info_L2, gdm);
+                        dev_search_latest_t_ac_power_statistic_info(0, 2, &_over_all_pwr_back_info_L3, gdm);
+                    }
+                    else
+                    {
+                        dev_search_latest_t_ac_power_statistic_info(0, 0, &_over_all_pwr_back_info_L1, gdm2);
+                        dev_search_latest_t_ac_power_statistic_info(0, 1, &_over_all_pwr_back_info_L2, gdm2);
+                        dev_search_latest_t_ac_power_statistic_info(0, 2, &_over_all_pwr_back_info_L3, gdm2);
+                    }
+                    ack_str = over_all_pwr_monitor_Tree_AC_to_json(&_over_all_pwr_back_info_L1, &_over_all_pwr_back_info_L2, &_over_all_pwr_back_info_L3);
 
                     websocket_send(ack_str, strlen(ack_str));
                     cJSON_free((void*)ack_str);
@@ -309,6 +323,13 @@ static void systemConfiguration(void* conn)
 {
     char* ack_str = NULL ;
 
+    if (!CheckLoginStatus(NULL))
+    {
+        ack_str = log_AthFailedinfo_to_json();
+        http_reply(conn, 401, ack_str);
+        return ;      
+    }
+
     ack_str = json_to_system_config_info();
     http_reply(conn, 200, ack_str);
     cJSON_free((void*)ack_str);
@@ -499,7 +520,6 @@ static void overallStatusMonitoring(void* conn)
     rx_body_buf = msg->body.buf;
 #endif
 
-    #if(1)
     //转换json参数
     cjson = json_to_overall_status_monitor(rx_body_buf,&_over_all_sts_monitor);
     if(cjson==NULL)
@@ -508,7 +528,14 @@ static void overallStatusMonitoring(void* conn)
         return ;        
     }
 
-    #if(1)
+    if (!CheckLoginStatus( _over_all_sts_monitor.user_token))
+    {
+        ack_str = log_AthFailedinfo_to_json();
+        http_reply(conn, 401, ack_str);
+        return ;       
+    }
+    
+
     //总电压电流信息
     if(strcmp(_over_all_sts_monitor.type,"listQuery")==0)
     {
@@ -538,20 +565,20 @@ static void overallStatusMonitoring(void* conn)
             if (strcmp(_over_all_sts_monitor.product_phOrder, "L1") == 0) // a相
             {
                 __globalDeviceManage.nTreeACLshow = 0;
-                dev_search_latest_t_ac_power_statistic_info(0, 0, &_over_all_pwr_back_info);
-                ack_str = over_all_pwr_monitor_to_json(&_over_all_pwr_back_info);
+                dev_search_latest_t_ac_power_statistic_info(0, 0, &_over_all_pwr_back_info,&__globalDeviceManage);
+                ack_str = over_all_pwr_monitor_to_json(0,&_over_all_pwr_back_info);
             }
             else if (strcmp(_over_all_sts_monitor.product_phOrder, "L2") == 0) // b相
             {
                 __globalDeviceManage.nTreeACLshow = 1;
-                dev_search_latest_t_ac_power_statistic_info(0, 1, &_over_all_pwr_back_info);
-                ack_str = over_all_pwr_monitor_to_json(&_over_all_pwr_back_info);
+                dev_search_latest_t_ac_power_statistic_info(0, 1, &_over_all_pwr_back_info,&__globalDeviceManage);
+                ack_str = over_all_pwr_monitor_to_json(1,&_over_all_pwr_back_info);
             }
             else if (strcmp(_over_all_sts_monitor.product_phOrder, "L3") == 0) // c相
             {
                 __globalDeviceManage.nTreeACLshow = 2;
-                dev_search_latest_t_ac_power_statistic_info(0, 2, &_over_all_pwr_back_info);
-                ack_str = over_all_pwr_monitor_to_json(&_over_all_pwr_back_info);
+                dev_search_latest_t_ac_power_statistic_info(0, 2, &_over_all_pwr_back_info,&__globalDeviceManage);
+                ack_str = over_all_pwr_monitor_to_json(2,&_over_all_pwr_back_info);
             }
         }
         else
@@ -575,7 +602,7 @@ static void overallStatusMonitoring(void* conn)
             _over_all_pwr_back_info.consumption = 36.8;
             _over_all_pwr_back_info.factor = 0.23 ;
         #endif
-        ack_str = over_all_pwr_monitor_to_json(&_over_all_pwr_back_info);
+        ack_str = over_all_pwr_monitor_to_json(0,&_over_all_pwr_back_info);
         }
         //log_i(ack_str);
     }
@@ -903,8 +930,6 @@ static void overallStatusMonitoring(void* conn)
         //返回功率趋势
         ack_str = over_power_trend_to_json(&_over_all_pwr_back_info);
     }
-    #endif
-    #endif
 
 quit:
     cJSON_Delete(cjson);
@@ -941,6 +966,14 @@ static void channelStatusMonitoring(void* conn)
         http_reply(conn, 400, NULL);
         return ;        
     }
+
+    if (!CheckLoginStatus( _over_chn_pwr_request.user_token))
+    {
+        ack_str = log_AthFailedinfo_to_json();
+        http_reply(conn, 401, ack_str);
+        return ;      
+    }
+
     #if(1)
     //查询
     if(strcmp(_over_chn_pwr_request.type,"listQuery")==0||strcmp(_over_chn_pwr_request.type,"resetChannel")==0)
@@ -1545,80 +1578,35 @@ static void sensorStatusMonitoring(void* conn)
             {
                 case 0://温湿度传感器 2个值
                 {
-                   
-                    ret = dev_serach_latest_sensor_info(__globalDeviceManage.db,
-                                                __globalDeviceManage._global_device_info->product_id,
-                                                _overSensorBackInfoTemp->sensorId,
-                                                &_globalSensorInfo);
-                    if(ret!=0)
-                        log_e("get temp sensor info error.");
-                    _overSensorBackInfoTemp->temperatureValue = _globalSensorInfo.val1;
-                    _overSensorBackInfoTemp->humidityValue = _globalSensorInfo.val2;
-                     _overSensorBackInfoTemp->temperatureValue=__globalDeviceManage.g_modebus_read.temprature/1000;
-                     _overSensorBackInfoTemp->humidityValue=__globalDeviceManage.g_modebus_read.humidity/1000;
+                    _overSensorBackInfoTemp->temperatureValue = _globalSensorManagerTemp->Cur_sensor_info.val1;
+                    _overSensorBackInfoTemp->humidityValue =_globalSensorManagerTemp->Cur_sensor_info.val2;
                 }break; 
                 case 1://烟雾传感器 1个值
                 {
-                    ret = dev_serach_latest_sensor_info(__globalDeviceManage.db,
-                                                __globalDeviceManage._global_device_info->product_id,
-                                                _overSensorBackInfoTemp->sensorId,
-                                                &_globalSensorInfo);
-                    if(ret!=0)
-                        log_e("get temp sensor info error.") ;   
-                    _overSensorBackInfoTemp->alarmStatus = !_globalSensorInfo.val1; // 1/0 报警未报警
+                    _overSensorBackInfoTemp->alarmStatus = ! (bool) _globalSensorManagerTemp->Cur_sensor_info.val1; // 1/0 报警未报警
                 }break; 
                 case 2://水浸传感器 1个值  c
                 {
-                    ret = dev_serach_latest_sensor_info(__globalDeviceManage.db,
-                                                __globalDeviceManage._global_device_info->product_id,
-                                                _overSensorBackInfoTemp->sensorId,
-                                                &_globalSensorInfo);
-                    if(ret!=0)
-                        log_e("get temp sensor info error.") ;   
-                    _overSensorBackInfoTemp->waterImmersionState = !_globalSensorInfo.val1; // 1/0 报警未报警
+                    _overSensorBackInfoTemp->waterImmersionState = !(bool)_globalSensorManagerTemp->Cur_sensor_info.val1; // 1/0 报警未报警
                 }break; 
                 case 3://门禁传感器 
                 {
-                    ret = dev_serach_latest_sensor_info(__globalDeviceManage.db,
-                                                __globalDeviceManage._global_device_info->product_id,
-                                                _overSensorBackInfoTemp->sensorId,
-                                                &_globalSensorInfo);
-                    if(ret!=0)
-                        log_e("get temp sensor info error.") ;   
-                    _overSensorBackInfoTemp->accessControlStatus =  !_globalSensorInfo.val1; // 1/0 报警未报警
+                    _overSensorBackInfoTemp->accessControlStatus =  !(bool)_globalSensorManagerTemp->Cur_sensor_info.val1; // 1/0 报警未报警
                 }break; 
                 case 4: //气体传感器 1个值
                 {
-                    ret = dev_serach_latest_sensor_info(__globalDeviceManage.db,
-                                                __globalDeviceManage._global_device_info->product_id,
-                                                _overSensorBackInfoTemp->sensorId,
-                                                &_globalSensorInfo);
-                    if(ret!=0)
-                        log_e("get temp sensor info error.");    
-                    _overSensorBackInfoTemp->gasConcentration =  _globalSensorInfo.val1; // 气体浓度
+                    _overSensorBackInfoTemp->gasConcentration = _globalSensorManagerTemp->Cur_sensor_info.val1; // 气体浓度
                 }break;
                 case 5://气压气流传感器 2个值
                 {
-                    ret = dev_serach_latest_sensor_info(__globalDeviceManage.db,
-                                                __globalDeviceManage._global_device_info->product_id,
-                                                _overSensorBackInfoTemp->sensorId,
-                                                &_globalSensorInfo);
-                    if(ret!=0)
-                        log_e("get temp sensor info error.") ;   
-                    _overSensorBackInfoTemp->airPressureValue =  _globalSensorInfo.val1; // 气压
-                    _overSensorBackInfoTemp->airflowValue =  _globalSensorInfo.val2; // 气流
+                    _overSensorBackInfoTemp->airPressureValue =  _globalSensorManagerTemp->Cur_sensor_info.val1; // 气压
+                    _overSensorBackInfoTemp->airflowValue = _globalSensorManagerTemp->Cur_sensor_info.val2; // 气流
                 };break; 
                 case 6://空调遥控器 没有值
                 {
 
                 }break; 
             }
-            // log_d("sensor_id: %d",_overSensorBackInfoTemp->sensorId);
-            // log_d("sensor_name: %s",_overSensorBackInfoTemp->sensorName);
-            // log_d("sensor_type: %d",_overSensorBackInfoTemp->sensorType);
-            // log_d("sensor_port_name: %s",_overSensorBackInfoTemp->comSlogan);
-            // log_d("sensor_addr: %d",_overSensorBackInfoTemp->sensorAddr);
-            // log_d("sensor_baud: %d",_overSensorBackInfoTemp->sensorBaud);
             //入队
             list_add_tail(&_overSensorBackInfoTemp->list,&_over_all_sensor_back_info.list);
         }    
@@ -3349,6 +3337,14 @@ static void equipmentMintenance(void *conn)
         http_reply(conn, 400, NULL);
         return ;
     }
+
+    if (!CheckLoginStatus( _Over_equipment_mintenance.user_token))
+    {
+        ack_str = log_AthFailedinfo_to_json();
+        http_reply(conn, 401, ack_str);
+        return ;        
+    }
+
     //查询设备列表
     if(strcmp(_Over_equipment_mintenance.type,"listSbRestartQuery")==0)
     {
@@ -3481,7 +3477,6 @@ static void equipmentMintenanceUpload(void *conn)
 static int webSetCallback(void)
 {
 	httpAddCallback("/login", loginFunc);//登录
-#if 1
     httpAddCallback("/logout", loginOutFunc);//登出
     httpAddCallback("/getInfo", getUserInfo);//获取用户信息
 	httpAddCallback("/pdu/changeLanguages", changeLanguages);//切换语言
@@ -3497,8 +3492,6 @@ static int webSetCallback(void)
     httpAddCallback("/pdu/system", systemManagent);//用户管理
     httpAddCallback("/pdu/equipmentMintenance", equipmentMintenance);//设备重启 
     httpAddCallback("/pdu/equipmentMintenanceUpload", equipmentMintenanceUpload); //固件升级
-#endif
-	
     return 0;
 }
 

+ 0 - 1
pro/src/appweb_handle.h

@@ -9,5 +9,4 @@
 int appweb_init(void);
 
 
-
 #endif

+ 30 - 0
pro/src/common.c

@@ -367,6 +367,9 @@ char* getUserNamebyToken(char* Token)
     return userName;
 }
 
+
+
+
 int is_process_running(const char *process_name)
 {  
     DIR *dir;  
@@ -419,4 +422,31 @@ int is_process_running(const char *process_name)
     return 0; // 进程未启动  
 }
 
+bool CheckLoginStatus(char* Token)
+{
+    return true;//先不处理401授权错误,待前端处理后再加 20240625 lyz
+    
+    // 没有用户登录
+    int nLoginNum=0;
+    _User_Log *_UserInfoTemp = NULL;
+    list_for_each_entry(_UserInfoTemp, &_GlobalUserLoginInfo.list, list)
+    {
+        if (_UserInfoTemp == NULL)
+            break;
+        nLoginNum++;
+    }
+
+    if (nLoginNum==0)
+    {
+         return false;
+    }
+    // 根据Token查询不到登录的用户
+    if (Token != NULL && strcmp(Token, "") != 0 && getUserNamebyToken(Token) == NULL)
+    {
+        return false;
+    }
+
+    return true;
+    // return __globalDeviceManage._global_device_info->login_status;
+}
 

+ 18 - 12
pro/src/common.h

@@ -38,23 +38,27 @@
 #define DATABASE_BAK_NAME   "pdu_dat_bak.db"
 #define SNMP_MIB_NAME       "pduMIB"
 
+//高配表头串口定义-----------------------------------------------
+//控制板通信串口
+#define INTERL_MODBUS_PORT "/dev/ttyAS5"
+#define INTERL_MODBUS_BAUD 115200
+//表头级联通讯串口
+#define CASCADE_MODBUS_PORT     "/dev/ttyAS4"
+#define CASCADE_MODBUS_BAUD     115200
+//传感器通信串口
+#define INTERL_SENSOR_MODBUS_PORT "/dev/ttyAS2"
+#define INTERL_SENSOR_MODBUS_BAUD 9600
 
-#define INTERL_MODBUS_PORT  "/dev/ttyAS5"
-#define INTERL_MODBUS_BAUD  115200
-
-
+//IP表头串口定义-----------------------------------------------------
 //485温湿度传感器    选择串口1
 #define INTERL_485_SENSOR_MODBUS_PORT "/dev/ttyS1"
 #define INTERL_485_SENSOR_MODBUS_BAUD 9600
+//485级联选择串口
+#define INTERL_485_CASCADE_PORT "/dev/ttyS5"
+#define INTERL_485_CASCADE_BAUD 115200
 
-//继电器接口级联
-#define INTERL_SENSOR_MODBUS_PORT "/dev/ttyAS2"
-#define INTERL_SENSOR_MODBUS_BAUD 9600
 
 
-//485级联选择串口
-#define INTERL_485_CASCADE_PORT "/dev/ttyAS4"
-#define INTERL_485_CASCADE_BAUD 115200
 
 #define AC_SINGLE_S_CUR_CHN_NUM 8
 #define AC_SINGLE_B_CUR_CHN_NUM 4
@@ -108,7 +112,6 @@ enum MODBUS_BOARD_TYPE
     DC_IN_TYPE,
     DCPDU_TYPE,
     TREE_AC_TYPE,   //三相进三项出
-    RS485_Type,
 };
 
 enum AppProductType
@@ -153,6 +156,8 @@ enum ENABLE_BIT_CTRL
     ENABLE_A_UP     = 32,
     ENABLE_W_UP     = 128,
     ENABLE_P_UP     = 512,
+    ENABLE_ALL_UP   = BIT_11,
+    ENABLE_ALL_DOWN = BIT_12,
 };
 /// @brief 使能位三项
 enum ENABLE_TreeAC_CTRL
@@ -511,6 +516,7 @@ typedef struct
     int                sensor_status                              ;//传感器状态
     char                sensor_val_count                           ;//传感器值个数
     int                 sensor_node_number                         ;//节点号
+    GlobalSensorInfo Cur_sensor_info ;
     GlobalSensorOverManage*  over_manager                          ;//超限管理   
     struct list_head    list;   
 }GlobalSensorManger;
@@ -752,6 +758,6 @@ void get_disk_occupy(char ** reused);
 int set_local_timeandzone(struct tm* t, int zone);
 char* getUserNamebyToken(char* Token);
 int is_process_running(const char *process_name);
-
+bool CheckLoginStatus(char* Token);
 
 #endif

+ 267 - 74
pro/src/json_handle.c

@@ -68,6 +68,25 @@ char* log_LoginFailedinfo_to_json()
     return str;
 }
 
+/// @brief 返回授权错误信息
+/// @param token 
+/// @return 
+char* log_AthFailedinfo_to_json()
+{
+    char* str = NULL;
+    // 创建 JSON 对象
+    cJSON* root = cJSON_CreateObject();   
+    // 添加基本键值对
+    cJSON_AddNumberToObject(root, "code", 401); 
+    //添加结果
+    cJSON_AddStringToObject(root, "msg", "登录超时!");
+    //转换
+    str = cJSON_Print(root); 
+    //释放资源
+    cJSON_Delete(root);   
+    return str;
+}
+
 /// @brief 返回用户信息
 /// @return 
 char* user_info_to_json(void)
@@ -178,65 +197,8 @@ char* user_routers_info_to_json(void)
            MenuCut = true;
         }
     }
-    
-
-    //第一块
-    cJSON* data_filed = cJSON_CreateObject(); 
-    cJSON_AddStringToObject(data_filed,"name","System");
-    cJSON_AddStringToObject(data_filed,"path","/system");
-    cJSON_AddBoolToObject(data_filed,"hidden",false);       
-    cJSON_AddStringToObject(data_filed,"redirect","noRedirect");
-    cJSON_AddStringToObject(data_filed,"component","Layout");
-    cJSON_AddBoolToObject(data_filed,"alwaysShow",true);    
-    //meta
-    cJSON* meta_data_filed = cJSON_CreateObject(); 
-    cJSON_AddStringToObject(meta_data_filed,"title",language_user_manage[__globalDeviceManage._global_device_info->product_language]);   
-    cJSON_AddStringToObject(meta_data_filed,"icon","system");   
-    cJSON_AddBoolToObject(meta_data_filed,"noCache",false); 
-    cJSON_AddStringToObject(meta_data_filed,"link","");     
-    cJSON_AddItemToObject(data_filed, "meta", meta_data_filed);
-    //children
-    cJSON* children_data_array = cJSON_CreateArray();
-    cJSON* children_data_filed = cJSON_CreateObject(); 
-    cJSON_AddStringToObject(children_data_filed,"name","User");    
-    cJSON_AddStringToObject(children_data_filed,"path","user");  
-    cJSON_AddBoolToObject(children_data_filed,"hidden",false); 
-    cJSON_AddStringToObject(children_data_filed,"component","system/user/index");  
-    cJSON* children_meta_data_filed = cJSON_CreateObject(); 
-    cJSON_AddStringToObject(children_meta_data_filed,"title",language_user_manage[__globalDeviceManage._global_device_info->product_language]);   
-    cJSON_AddStringToObject(children_meta_data_filed,"icon","user");   
-    cJSON_AddBoolToObject(children_meta_data_filed,"noCache",false); 
-    cJSON_AddStringToObject(children_meta_data_filed,"link","");    
-    cJSON_AddItemToObject(children_data_filed, "meta", children_meta_data_filed);
-    cJSON_AddItemToObject(children_data_array, "meta", children_data_filed);
-    cJSON* children1_data_filed = cJSON_CreateObject(); 
-    cJSON_AddStringToObject(children1_data_filed,"name","Role");    
-    cJSON_AddStringToObject(children1_data_filed,"path","role");  
-    cJSON_AddBoolToObject(children1_data_filed,"hidden",false); 
-    cJSON_AddStringToObject(children1_data_filed,"component","system/role/index");  
-    cJSON* children_meta1_data_filed = cJSON_CreateObject(); 
-    cJSON_AddStringToObject(children_meta1_data_filed,"title",language_role_manage[__globalDeviceManage._global_device_info->product_language]);   
-    cJSON_AddStringToObject(children_meta1_data_filed,"icon","peoples");   
-    cJSON_AddBoolToObject(children_meta1_data_filed,"noCache",false); 
-    cJSON_AddStringToObject(children_meta1_data_filed,"link","");    
-    cJSON_AddItemToObject(children1_data_filed, "meta", children_meta1_data_filed);
-    if(!MenuCut)cJSON_AddItemToObject(children_data_array, "meta", children1_data_filed);
-    cJSON* children2_data_filed = cJSON_CreateObject(); 
-    cJSON_AddStringToObject(children2_data_filed,"name","Menu");    
-    cJSON_AddStringToObject(children2_data_filed,"path","menu");  
-    cJSON_AddBoolToObject(children2_data_filed,"hidden",false); 
-    cJSON_AddStringToObject(children2_data_filed,"component","system/menu/index");  
-    cJSON* children_meta2_data_filed = cJSON_CreateObject(); 
-    cJSON_AddStringToObject(children_meta2_data_filed,"title",language_menu_manage[__globalDeviceManage._global_device_info->product_language]);   
-    cJSON_AddStringToObject(children_meta2_data_filed,"icon","tree-table");   
-    cJSON_AddBoolToObject(children_meta2_data_filed,"noCache",false); 
-    cJSON_AddStringToObject(children_meta2_data_filed,"link","");    
-    cJSON_AddItemToObject(children2_data_filed, "meta", children_meta2_data_filed);
-    if(!MenuCut)cJSON_AddItemToObject(children_data_array, "meta", children2_data_filed);
-    cJSON_AddItemToObject(data_filed, "children", children_data_array);  
-    cJSON_AddItemToObject(data_array, "data", data_filed);
 
-     //第二块
+     //第一块 电源监控
     cJSON* data1_filed = cJSON_CreateObject(); 
     cJSON_AddStringToObject(data1_filed,"name","Power");
     cJSON_AddStringToObject(data1_filed,"path","/power");
@@ -289,7 +251,7 @@ char* user_routers_info_to_json(void)
     cJSON_AddBoolToObject(children1_meta1_data2_1_filed,"noCache",false); 
     cJSON_AddStringToObject(children1_meta1_data2_1_filed,"link","");    
     cJSON_AddItemToObject(children1_data2_1_filed, "meta", children1_meta1_data2_1_filed);
-    if(!MenuCut)cJSON_AddItemToObject(children1_data_array, "children", children1_data2_1_filed);
+   // if(!MenuCut)cJSON_AddItemToObject(children1_data_array, "children", children1_data2_1_filed);
 
     cJSON* children1_data3_filed = cJSON_CreateObject(); 
     cJSON_AddStringToObject(children1_data3_filed,"name","Monitorhistory");    
@@ -306,7 +268,7 @@ char* user_routers_info_to_json(void)
     cJSON_AddItemToObject(data1_filed, "children", children1_data_array);
     cJSON_AddItemToObject(data_array, "data", data1_filed);
 
-    //第三块
+    //第二块 传感器监控
     cJSON* data2_filed = cJSON_CreateObject(); 
     cJSON_AddStringToObject(data2_filed,"name","Sensor");
     cJSON_AddStringToObject(data2_filed,"path","/sensor");
@@ -349,7 +311,7 @@ char* user_routers_info_to_json(void)
     cJSON_AddItemToObject(data2_filed, "children", children2_data_array);
     cJSON_AddItemToObject(data_array, "data", data2_filed);
 
-    //第四块
+    //第三块 告警保护
     cJSON* data3_filed = cJSON_CreateObject(); 
     cJSON_AddStringToObject(data3_filed,"name","Jgbh");
     cJSON_AddStringToObject(data3_filed,"path","/jgbh");
@@ -393,7 +355,7 @@ char* user_routers_info_to_json(void)
     cJSON_AddItemToObject(data_array, "data", data3_filed);
 
 
-    //第五块
+    //第四块 日志信息
     cJSON* data4_filed = cJSON_CreateObject(); 
     cJSON_AddStringToObject(data4_filed,"name","Rzxx");
     cJSON_AddStringToObject(data4_filed,"path","/rzxx");
@@ -448,7 +410,63 @@ char* user_routers_info_to_json(void)
     cJSON_AddItemToObject(data4_filed, "children", children4_data_array);
     cJSON_AddItemToObject(data_array, "data", data4_filed);
 
-    //第六块
+ //第五块 用户管理
+    cJSON* data_filed = cJSON_CreateObject(); 
+    cJSON_AddStringToObject(data_filed,"name","System");
+    cJSON_AddStringToObject(data_filed,"path","/system");
+    cJSON_AddBoolToObject(data_filed,"hidden",false);       
+    cJSON_AddStringToObject(data_filed,"redirect","noRedirect");
+    cJSON_AddStringToObject(data_filed,"component","Layout");
+    cJSON_AddBoolToObject(data_filed,"alwaysShow",true);    
+    //meta
+    cJSON* meta_data_filed = cJSON_CreateObject(); 
+    cJSON_AddStringToObject(meta_data_filed,"title",language_user_manage[__globalDeviceManage._global_device_info->product_language]);   
+    cJSON_AddStringToObject(meta_data_filed,"icon","system");   
+    cJSON_AddBoolToObject(meta_data_filed,"noCache",false); 
+    cJSON_AddStringToObject(meta_data_filed,"link","");     
+    cJSON_AddItemToObject(data_filed, "meta", meta_data_filed);
+    //children
+    cJSON* children_data_array = cJSON_CreateArray();
+    cJSON* children_data_filed = cJSON_CreateObject(); 
+    cJSON_AddStringToObject(children_data_filed,"name","User");    
+    cJSON_AddStringToObject(children_data_filed,"path","user");  
+    cJSON_AddBoolToObject(children_data_filed,"hidden",false); 
+    cJSON_AddStringToObject(children_data_filed,"component","system/user/index");  
+    cJSON* children_meta_data_filed = cJSON_CreateObject(); 
+    cJSON_AddStringToObject(children_meta_data_filed,"title",language_user_manage[__globalDeviceManage._global_device_info->product_language]);   
+    cJSON_AddStringToObject(children_meta_data_filed,"icon","user");   
+    cJSON_AddBoolToObject(children_meta_data_filed,"noCache",false); 
+    cJSON_AddStringToObject(children_meta_data_filed,"link","");    
+    cJSON_AddItemToObject(children_data_filed, "meta", children_meta_data_filed);
+    cJSON_AddItemToObject(children_data_array, "meta", children_data_filed);
+    cJSON* children1_data_filed = cJSON_CreateObject(); 
+    cJSON_AddStringToObject(children1_data_filed,"name","Role");    
+    cJSON_AddStringToObject(children1_data_filed,"path","role");  
+    cJSON_AddBoolToObject(children1_data_filed,"hidden",false); 
+    cJSON_AddStringToObject(children1_data_filed,"component","system/role/index");  
+    cJSON* children_meta1_data_filed = cJSON_CreateObject(); 
+    cJSON_AddStringToObject(children_meta1_data_filed,"title",language_role_manage[__globalDeviceManage._global_device_info->product_language]);   
+    cJSON_AddStringToObject(children_meta1_data_filed,"icon","peoples");   
+    cJSON_AddBoolToObject(children_meta1_data_filed,"noCache",false); 
+    cJSON_AddStringToObject(children_meta1_data_filed,"link","");    
+    cJSON_AddItemToObject(children1_data_filed, "meta", children_meta1_data_filed);
+    //if(!MenuCut)cJSON_AddItemToObject(children_data_array, "meta", children1_data_filed);
+    cJSON* children2_data_filed = cJSON_CreateObject(); 
+    cJSON_AddStringToObject(children2_data_filed,"name","Menu");    
+    cJSON_AddStringToObject(children2_data_filed,"path","menu");  
+    cJSON_AddBoolToObject(children2_data_filed,"hidden",false); 
+    cJSON_AddStringToObject(children2_data_filed,"component","system/menu/index");  
+    cJSON* children_meta2_data_filed = cJSON_CreateObject(); 
+    cJSON_AddStringToObject(children_meta2_data_filed,"title",language_menu_manage[__globalDeviceManage._global_device_info->product_language]);   
+    cJSON_AddStringToObject(children_meta2_data_filed,"icon","tree-table");   
+    cJSON_AddBoolToObject(children_meta2_data_filed,"noCache",false); 
+    cJSON_AddStringToObject(children_meta2_data_filed,"link","");    
+    cJSON_AddItemToObject(children2_data_filed, "meta", children_meta2_data_filed);
+    //if(!MenuCut)cJSON_AddItemToObject(children_data_array, "meta", children2_data_filed);
+    cJSON_AddItemToObject(data_filed, "children", children_data_array);  
+    cJSON_AddItemToObject(data_array, "data", data_filed);
+
+    //第六块 通信管理
     cJSON* data5_filed = cJSON_CreateObject(); 
     cJSON_AddStringToObject(data5_filed,"name","Txgl");
     cJSON_AddStringToObject(data5_filed,"path","/txgl");
@@ -491,7 +509,7 @@ char* user_routers_info_to_json(void)
     cJSON_AddItemToObject(data5_filed, "children", children5_data_array);
     cJSON_AddItemToObject(data_array, "data", data5_filed);
 
-    //第六块
+    //第七块 服务管理
     cJSON* data6_filed = cJSON_CreateObject(); 
     cJSON_AddStringToObject(data6_filed,"name","Fwgl");
     cJSON_AddStringToObject(data6_filed,"path","/fwgl");
@@ -609,7 +627,7 @@ char* user_routers_info_to_json(void)
     cJSON_AddItemToObject(data_array, "data", data6_filed);
 
 
-    //第七块
+    //第八块 设备维护
     cJSON* data7_filed = cJSON_CreateObject(); 
     cJSON_AddStringToObject(data7_filed,"name","Sbwh");
     cJSON_AddStringToObject(data7_filed,"path","/sbwh");
@@ -918,10 +936,14 @@ int json_to_switch_language(const char* str)
         {
             __globalDeviceManage._global_device_info->product_language = 0 ;
         }
-        if(strcmp(cjson_language->valuestring,"en-US")==0)
+       else  if(strcmp(cjson_language->valuestring,"en-US")==0)
         {
             __globalDeviceManage._global_device_info->product_language = 1 ;
         }
+        else  if(strcmp(cjson_language->valuestring,"ru-RU")==0)
+        {
+            __globalDeviceManage._global_device_info->product_language = 2 ;
+        }
         else
             __globalDeviceManage._global_device_info->product_language = 0 ;
         
@@ -1002,8 +1024,10 @@ char* over_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackStsInfo*
                         }
 
                         cJSON_AddStringToObject(data_filed, "productName", temp);
-                        //cJSON_AddNumberToObject(data_filed, "productId", _over_back_sts_info->product_id);
-                        cJSON_AddNumberToObject(data_filed, "productId", dl.slave[i].addr);
+
+                         sprintf(temp, "%d", dl.slave[i].addr);
+                        cJSON_AddStringToObject(data_filed, "productId", temp);
+                        //cJSON_AddNumberToObject(data_filed, "productId", dl.slave[i].addr);
 
                         cJSON_AddStringToObject(data_filed, "productNumber", _over_back_sts_info->product_number);
                         cJSON_AddStringToObject(data_filed, "productCode", _over_back_sts_info->product_Code);
@@ -1298,12 +1322,162 @@ char* over_channel_power_history_to_json(GlobalPowerInfo* _globalPowerInfo,Globa
     return str;
 }
 
+/// @brief 返回监控总信息
+/// @param _over_back_sts_info 
+/// @return 
+char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info_L1,_OverAllPwrAckInfo* _over_all_pwr_back_info_L2,_OverAllPwrAckInfo* _over_all_pwr_back_info_L3)
+{
+    char* str = NULL;
+    char temp[32] = {0};
+
+    // 创建 JSON 对象  
+    cJSON* root = cJSON_CreateObject();   
+
+    cJSON* sdata_filed = cJSON_CreateObject();
+    // 添加基本键值对
+    cJSON_AddNumberToObject(sdata_filed, "code", 200); 
+    //创建数据
+    cJSON* data_root_array = cJSON_CreateArray();
+    //添加第一条记录
+    cJSON* data_filed = cJSON_CreateObject();
+
+    cJSON_AddStringToObject(data_filed,"productName",_over_all_pwr_back_info_L1->product_name);
+    cJSON_AddStringToObject(data_filed,"productNumber",_over_all_pwr_back_info_L1->product_number);
+    sprintf(temp,"%d",_over_all_pwr_back_info_L1->product_id);
+    cJSON_AddStringToObject(data_filed,"productId",temp);
+     cJSON_AddStringToObject(data_filed,"productPhOrder","L1");
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->voltage);
+    cJSON_AddStringToObject(data_filed,"productVoltage",temp);
+
+    sprintf(temp,"%d",AC_MAX_VOLTAGE_VAL);
+    cJSON_AddStringToObject(data_filed,"productVoltageMaximum",temp);
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->current);
+    cJSON_AddStringToObject(data_filed,"productCurrent",temp);
+
+    sprintf(temp,"%d",AC_MAX_CURRENT_VAL);
+    cJSON_AddStringToObject(data_filed,"productCurrentMaximum",temp);
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->power);
+    cJSON_AddStringToObject(data_filed,"productPower",temp);
+
+    sprintf(temp,"%d",AC_MAX_POWER_VAL);
+    cJSON_AddStringToObject(data_filed,"productPowerMaximum",temp);
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->freq);
+    cJSON_AddStringToObject(data_filed,"productPowerFreq",temp);
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->consumption);  
+    cJSON_AddStringToObject(data_filed,"productConsumption",temp);
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L1->factor);                 
+    cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
+
+    sprintf(temp,"%0.3f",1.0);
+    cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
 
+    cJSON_AddItemToObject(data_root_array, "data", data_filed);
+    //第二条记录
+    cJSON* data_filed1= cJSON_CreateObject();
+      
+    cJSON_AddStringToObject(data_filed1,"productName",_over_all_pwr_back_info_L2->product_name);
+    cJSON_AddStringToObject(data_filed1,"productNumber",_over_all_pwr_back_info_L2->product_number);
+    sprintf(temp,"%d",_over_all_pwr_back_info_L2->product_id);
+    cJSON_AddStringToObject(data_filed1,"productId",temp);
+     cJSON_AddStringToObject(data_filed1,"productPhOrder","L2");
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->voltage);
+    cJSON_AddStringToObject(data_filed1,"productVoltage",temp);
+
+    sprintf(temp,"%d",AC_MAX_VOLTAGE_VAL);
+    cJSON_AddStringToObject(data_filed1,"productVoltageMaximum",temp);
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->current);
+    cJSON_AddStringToObject(data_filed1,"productCurrent",temp);
+
+    sprintf(temp,"%d",AC_MAX_CURRENT_VAL);
+    cJSON_AddStringToObject(data_filed1,"productCurrentMaximum",temp);
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->power);
+    cJSON_AddStringToObject(data_filed1,"productPower",temp);
+
+    sprintf(temp,"%d",AC_MAX_POWER_VAL);
+    cJSON_AddStringToObject(data_filed1,"productPowerMaximum",temp);
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->freq);
+    cJSON_AddStringToObject(data_filed1,"productPowerFreq",temp);
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->consumption);  
+    cJSON_AddStringToObject(data_filed1,"productConsumption",temp);
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L2->factor);                 
+    cJSON_AddStringToObject(data_filed1,"productPowerFactor",temp);
+
+    sprintf(temp,"%0.3f",1.0);
+    cJSON_AddStringToObject(data_filed1,"productPowerFactorMaximum",temp);
+
+    cJSON_AddItemToObject(data_root_array, "data", data_filed1);
+    //第三条记录
+    cJSON* data_filed2= cJSON_CreateObject();
+      
+    cJSON_AddStringToObject(data_filed2,"productName",_over_all_pwr_back_info_L3->product_name);
+    cJSON_AddStringToObject(data_filed2,"productNumber",_over_all_pwr_back_info_L3->product_number);
+    sprintf(temp,"%d",_over_all_pwr_back_info_L3->product_id);
+    cJSON_AddStringToObject(data_filed2,"productId",temp);
+     cJSON_AddStringToObject(data_filed2,"productPhOrder","L3");
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->voltage);
+    cJSON_AddStringToObject(data_filed2,"productVoltage",temp);
+
+    sprintf(temp,"%d",AC_MAX_VOLTAGE_VAL);
+    cJSON_AddStringToObject(data_filed2,"productVoltageMaximum",temp);
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->current);
+    cJSON_AddStringToObject(data_filed2,"productCurrent",temp);
+
+    sprintf(temp,"%d",AC_MAX_CURRENT_VAL);
+    cJSON_AddStringToObject(data_filed2,"productCurrentMaximum",temp);
+
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->power);
+    cJSON_AddStringToObject(data_filed2,"productPower",temp);
+
+    sprintf(temp,"%d",AC_MAX_POWER_VAL);
+    cJSON_AddStringToObject(data_filed2,"productPowerMaximum",temp);
+
+    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);  
+    cJSON_AddStringToObject(data_filed2,"productConsumption",temp);
+    sprintf(temp,"%0.3f",_over_all_pwr_back_info_L3->factor);                 
+    cJSON_AddStringToObject(data_filed2,"productPowerFactor",temp);
+
+    sprintf(temp,"%0.3f",1.0);
+    cJSON_AddStringToObject(data_filed2,"productPowerFactorMaximum",temp);
+
+    cJSON_AddItemToObject(data_root_array, "data", data_filed2);
+
+    //添加汇总
+    cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
+    cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
+
+    //添加汇总
+    cJSON_AddItemToObject(root, "data", sdata_filed);
+    //添加结果
+    cJSON_AddStringToObject(root, "msg", "操作成功");
+
+    //添加内容
+    cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
+    cJSON_AddBoolToObject(root, "success",true);
+    cJSON_AddStringToObject(root, "type", "overallStatusMonitoring");
+
+    //转换
+    str = cJSON_Print(root);    
+    //释放资源
+    cJSON_Delete(root);
+    return str;
+}
 
 /// @brief 返回监控总信息
 /// @param _over_back_sts_info 
 /// @return 
-char* over_all_pwr_monitor_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info)
+char* over_all_pwr_monitor_to_json(int phaseType,_OverAllPwrAckInfo* _over_all_pwr_back_info)
 {
     char* str = NULL;
     char temp[32] = {0};
@@ -1320,7 +1494,26 @@ char* over_all_pwr_monitor_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info)
    
     cJSON_AddStringToObject(data_filed,"productName",_over_all_pwr_back_info->product_name);
     cJSON_AddStringToObject(data_filed,"productNumber",_over_all_pwr_back_info->product_number);
-    cJSON_AddNumberToObject(data_filed,"productId",_over_all_pwr_back_info->product_id);
+    sprintf(temp,"%d",_over_all_pwr_back_info->product_id);
+    cJSON_AddStringToObject(data_filed,"productId",temp);
+
+    if (phaseType==0)
+    {
+        cJSON_AddStringToObject(data_filed,"productPhOrder","L1");
+    }
+    else if (phaseType==1)
+    {
+       cJSON_AddStringToObject(data_filed,"productPhOrder","L2");
+    }
+    else if (phaseType==2)
+    {
+       cJSON_AddStringToObject(data_filed,"productPhOrder","L3");
+    }
+    else    
+    {
+        cJSON_AddStringToObject(data_filed,"productPhOrder","L1");
+    }
+
     sprintf(temp,"%0.3f",_over_all_pwr_back_info->voltage);
     cJSON_AddStringToObject(data_filed,"productVoltage",temp);
 
@@ -1346,7 +1539,7 @@ char* over_all_pwr_monitor_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info)
     sprintf(temp,"%0.3f",_over_all_pwr_back_info->factor);                 
     cJSON_AddStringToObject(data_filed,"productPowerFactor",temp);
 
-    sprintf(temp,"%0.3f",1);
+    sprintf(temp,"%0.3f",1.0);
     cJSON_AddStringToObject(data_filed,"productPowerFactorMaximum",temp);
 
     // cJSON_AddNumberToObject(data_filed,"productVoltage",_over_all_pwr_back_info->voltage);
@@ -2579,11 +2772,11 @@ char* communication_rs_ack_to_json(ModbusInfo_t* _modbusInfo_t)
     cJSON* data_root_array = cJSON_CreateObject();  
     if ( !_modbusInfo_t->product_modbus_type)
     {
-        sprintf(temp,"主机");
+        sprintf(temp,language_alarm_RS485_master[__globalDeviceManage._global_device_info->product_language]);
     }
     else
     {
-        sprintf(temp,"从机");
+        sprintf(temp,language_alarm_RS485_slave[__globalDeviceManage._global_device_info->product_language]);
     }
     cJSON_AddStringToObject(data_root_array, "mode", temp);  
 
@@ -3754,7 +3947,7 @@ char* service_userRole_ack_to_json(char* _userName,UserInfo* __UserInfo_t,RoleIn
 
 void InitHashTable(HashTable *table)
 {
-    int nMaxSize=2;
+    int nMaxSize=4;
     insert_Newhash(table,language_alarm_Ch[0],language_alarm_Ch,nMaxSize);
     insert_Newhash(table,language_alarm_V[0],language_alarm_V,nMaxSize);
     insert_Newhash(table,language_alarm_A[0],language_alarm_A,nMaxSize);

+ 3 - 1
pro/src/json_handle.h

@@ -458,6 +458,7 @@ int json_to_User_login_info(const char* str,_User_Log* _newUserLogin);
 int json_to_User_loginOut_info(const char* str,char** _UserLoginOutToken);
 char* log_info_to_json(const char* token);
 char* log_LoginFailedinfo_to_json();
+char* log_AthFailedinfo_to_json();
 
 char* user_info_to_json(void);
 char* user_routers_info_to_json(void);
@@ -475,7 +476,8 @@ char* over_channel_power_history_to_json(GlobalPowerInfo* _globalPowerInfo,Globa
 cJSON* json_to_overall_pwr_status_monitor(const char* str,_OverAllPwrRequest* _over_all_pwr_request);
 cJSON* json_to_over_equipment_mintenance(const char* str,_Equipment_Mintenance* _over_equipment_mintenance);
 char* over_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackStsInfo* _over_back_sts_info);
-char* over_all_pwr_monitor_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info);
+char* over_all_pwr_monitor_to_json(int phaseType,_OverAllPwrAckInfo* _over_all_pwr_back_info);
+char* over_all_pwr_monitor_Tree_AC_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info_L1,_OverAllPwrAckInfo* _over_all_pwr_back_info_L2,_OverAllPwrAckInfo* _over_all_pwr_back_info_L3);
 char* over_all_total_info_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info, int total_type);
 void over_all_total_info_t_ac_to_json(_OverAllPwrAckInfo* _over_all_pwr_back_info,cJSON* dataJson,cJSON* AxisJson, int total_type);
 int over_init_data_t_ac_to_json(cJSON* pAllJson,cJSON* dataJson[],cJSON* AxisJson,int total_type);

+ 146 - 68
pro/src/language_common.h

@@ -1,423 +1,501 @@
 #ifndef __LANGUAGE_COMMON_H
 #define __LANGUAGE_COMMON_H
 
-const char language_root_name[][32] = 
+const char language_root_name[][64] = 
 {
     "管理员",
     "Administrator",
-    "Администратор",
+    "Администратор ",
+    " "
 };
 
-const char language_nick_name[][32] =
+const char language_nick_name[][64] =
 {
     "张三",
-    "zhang san",
+    "zhang san ",
     " ",
+     " "
 };
 
-const char language_user_manage[][32] =
+const char language_user_manage[][64] =
 {
     "用户管理",
     "User Management",
-    "Управление пользователями",
+    "Управление пользователями ",
+    " "
 };
 
-const char language_role_manage[][32] =
+const char language_role_manage[][64] =
 {
     "角色管理",
     "Role Management",
-    "Управление ролями",
+    "Управление ролями ",
+    " "
 };
 
-const char language_menu_manage[][32] =
+const char language_menu_manage[][64] =
 {
     "菜单管理",
     "Menu Management",
-    "Управление меню",
+    "Управление меню ",
+    " "
 };
 
-const char language_power_monitor[][32] =
+const char language_power_monitor[][64] =
 {
     "电源监控",
     "Power Monitor",
     "Мониторинг питания",
+    " "
 };
 
-const char language_power_sts_monitor[][32] =
+const char language_power_sts_monitor[][64] =
 {
     "总体状态监控",
     "Device Monitor",
     "Мониторинг устройств",
+    " "
 };
 
-const char language_power_channel_sts_monitor[][32] =
+const char language_power_channel_sts_monitor[][64] =
 {
     "通道状态监控",
     "Device Channel Monitor",
     "Мониторинг каналов устройств",
+    " "
 };
 
-const char language_power_switch_sts_monitor[][32] =
+const char language_power_switch_sts_monitor[][64] =
 {
     "开关状态监控",
     "Device Switch Monitor",
     "Монитор коммутатора оборудования",
+    " "
 };
-const char language_power_history_search[][32] =
+const char language_power_history_search[][64] =
 {
     "历史记录查询",
     "Device History",
     "История устройств",
+    " "
 };
 
-const char language_sensor_monitoring[][32] =
+const char language_sensor_monitoring[][64] =
 {
     "传感器监控",
     "Sensor monitoring",
     "Мониторинг датчиков",
+    " "
 };
 
-const char language_sensor_status_monitoring[][32] =
+const char language_sensor_status_monitoring[][64] =
 {
     "传感器状态监控",
     "Sensor status monitoring",
     "Мониторинг состояния датчиков",
+    " "
 };
 
-const char language_sensor_history_search[][32] =
+const char language_sensor_history_search[][64] =
 {
     "历史记录查询",
     "Device History",
     "История устройств",
+    " "
 };
 
-const char language_Alarm_protection[][32] =
+const char language_Alarm_protection[][64] =
 {
     "告警保护",
     "Alarm protection",
     "Защита от аварий",
+    " "
 };
 
-const char language_Alarm_System[][32] =
+const char language_Alarm_System[][64] =
 {
     "系统告警",
     "System alarm",
     "Системная тревога",
+    " "
 };
 
-const char language_Alarm_Threshold_rule[][32] =
+const char language_Alarm_Threshold_rule[][64] =
 {
     "阈值及规则设置",
     "Threshold and rule Settings",
     "Настройка порогов и правил",
+    " "
 };
 
-const char language_log_information[][32] =
+const char language_log_information[][64] =
 {
     "日志信息",
     "log information",
     "Информация о журнале",
+    " "
 };
 
-const char language_log_Alarm[][32] =
+const char language_log_Alarm[][64] =
 {
     "告警日志",
     "Alarm log",
     "Журнал аварий",
+    " "
 };
 
-const char language_log_operation[][32] = 
+const char language_log_operation[][64] = 
 {
     "操作日志",
     "operation log",
     "Журнал операций",
+    " "
 };
 
-const char language_log_running[][32] = 
+const char language_log_running[][64] = 
 {
     "运行日志",
     "running log",
     "Журнал работы",
+    " "
 };
 
-const char language_communication_management[][32] = 
+const char language_communication_management[][64] = 
 {
     "通信管理",
     "communication management",
     "Управление связью",
+    " "
 };
 
 
-const char language_net_install[][32] = 
+const char language_net_install[][64] = 
 {
     "网口设置",
     "net opening install",
     "Установка сетевого порта",
+    " "
 } ;
 
-const char language_RS485_install[][32] = 
+const char language_RS485_install[][64] = 
 {
     "RS485设置",
     "RS485 install",
     "Установка RS485",
+    " "
 } ;
 
-const char language_serve_manage[][32] = 
+const char language_serve_manage[][64] = 
 {
     "服务管理",
     "serve install",
-    "Установка службы",
+    "Установка службы ",
+    " "
 } ;
 
 
-const char language_SMTP_install[][32] = 
+const char language_SMTP_install[][64] = 
 {
     "SMTP设置",
     "SMTP install",
     "Установка SMTP",
+    " "
 } ;
 
-const char language_SNMP_install[][32] = 
+const char language_SNMP_install[][64] = 
 {
     "SNMP设置",
     "SNMP install",
     "Установка SNMP",
+    " "
 } ;
 
-const char language_SNMP_TRAP_install[][32] = 
+const char language_SNMP_TRAP_install[][64] = 
 {
     "SNMP TRAP设置",
     "SNMP TRAP install",
     "Установка SNMP TRAP",
+    " "
 } ;
 
-const char language_MQTT_iot_install[][32] = 
+const char language_MQTT_iot_install[][64] = 
 {
     "MQTT物联设置",
     "MQTT iot install",
     "Установка MQTT для IoT",
+    " "
 } ;
 
-const char language_NTP_install[][32] = 
+const char language_NTP_install[][64] = 
 {
     "NTP设置",
     "NTP install",
     "Установка NTP",
+    " "
 } ;
 
-const char language_Timing_install[][32] = 
+const char language_Timing_install[][64] = 
 {
     "定时设置",
     "Timing install",
     "Установка времени",
+    " "
 } ;
 
-const char language_Sequential_setting[][32] = 
+const char language_Sequential_setting[][64] = 
 {
     "时序设置",
     "Sequential setting",
     "Установка последовательности",
+    " "
 } ;
 
-const char language_Group_setting[][32] = 
+const char language_Group_setting[][64] = 
 {
     "分组设置",
     "Group setting",
     "Установка группы",
+    " "
 } ;
 
-const char language_maintenance_equipment[][32] =
+const char language_maintenance_equipment[][64] =
 {
     "设备维护",
     "maintenance of equipment",
     "Обслуживание оборудования",
+    " "
 } ;
 
-const char language_Device_restart[][32] = 
+const char language_Device_restart[][64] = 
 {
     "设备重启",
     "Device restart",
     "Перезагрузка устройства",
+    " "
 } ;
 
-const char language_firmware_upgrade[][32] = 
+const char language_firmware_upgrade[][64] = 
 {
     "固件升级",
     "firmware upgrade",
     "Обновление прошивки",
+    " "
 } ;
 
-const char language_back_factor_upgrade[][32] = 
+const char language_back_factor_upgrade[][64] = 
 {
     "恢复出厂设置",
     "firmware upgrade",
     "Восстановление заводских настроек",
+    " "
 } ;
 
-const char language_Configure_inport_export[][32] = 
+const char language_Configure_inport_export[][64] = 
 {
     "配置导入/导出",
     "Configure import/export",
     "Импорт/экспорт конфигурации",
+    " "
 } ;
 
-const char language_after_sales_service[][32] = 
+const char language_after_sales_service[][64] = 
 {
     "售后服务",
     "after-sales service",
     "Послепродажное обслуживание",
+    " "
 } ;
 
-const char language_about_Equipment[][32] = 
+const char language_about_Equipment[][64] = 
 {
     "关于设备",
     "About Equipment",
     "О оборудовании",
+    " "
 } ;
 
-const char language_temperature[][32] = 
+const char language_temperature[][64] = 
 {
     "温度",
     "temperature",
     "Температура",
+    " "
 } ;
 
-const char language_humidity[][32] = 
+const char language_humidity[][64] = 
 {
     "湿度",
     "humidity",
     "Влажность",
+    " "
 } ;
 
-const char language_atmosphere_gas[][32] = 
+const char language_atmosphere_gas[][64] = 
 {
     "气体",
     "gas",
     "Газ",
+    " "
 } ;
 
-const char language_atmosphere_airflow[][32] = 
+const char language_atmosphere_airflow[][64] = 
 {
     "气流",
     "airflow",
     "Поток воздуха",
+    " "
 } ;
 
-const char language_atmosphere_pressure[][32] = 
+const char language_atmosphere_pressure[][64] = 
 {
     "气压",
     "atmospheric pressure",
     "Атмосферное давление",
+    " "
 } ;
 
-const char language_log_Power[][32] = 
+const char language_log_Power[][64] = 
 {
     "电源日志",
     "Power log",
     "Лог питания",
+    " "
 } ;
 
-const char language_opera_log_operation[][32] = 
+const char language_opera_log_operation[][64] = 
 {
     "操作日志",
     "operation log",
     "Лог операций",
+    " "
 } ;
 
-const char language_run_log_running[][32] = 
+const char language_run_log_running[][64] = 
 {
     "运行日志",
     "running log",
     "Лог работы",
+    " "
 } ;
 //============================================================================
-const char language_alarm_Ch[][32] = 
+const char language_alarm_Ch[][64] = 
 {
     "通道",
     "channel ",
     "Канал",
+    " "
 } ;
 
-const char language_alarm_V[][32] = 
+const char language_alarm_V[][64] = 
 {
     "电压",
     "voltage ",
     "Напряжение",
+    " "
 } ;
 
-const char language_alarm_A[][32] = 
+const char language_alarm_A[][64] = 
 {
     "电流",
     "current ",
     "Ток",
+    " "
 } ;
 
-const char language_alarm_W[][32] = 
+const char language_alarm_W[][64] = 
 {
     "功率",
     "power ",
-    "Мощность",
+    "Мощность"
 } ;
 
-const char language_alarm_P[][32] = 
+const char language_alarm_P[][64] = 
 {
     "耗电量",
     "power consumption ",
     "Потребление электроэнергии",
+    " "
 } ;
 
-const char language_alarm_Up[][32] = 
+const char language_alarm_Up[][64] = 
 {
     "超过上限",
     "out of up limit ",
     "Превышение верхнего предела",
+    " "
 } ;
-const char language_alarm_Down[][32] = 
+const char language_alarm_Down[][64] = 
 {
     "超过下限",
     "out of down limit ",
     "Превышение нижнего предела",
+    " "
 } ;
 
-const char language_alarm_ctrl_Open[][32] = 
+const char language_alarm_ctrl_Open[][64] = 
 {
     "开启",
     "OPEN ",
     "Открыть",
+    " "
 } ;
 
-const char language_alarm_ctrl_Close[][32] = 
+const char language_alarm_ctrl_Close[][64] = 
 {
     "关闭",
     "CLOSE ",
     "Закрыть",
+    " "
 } ;
 
-const char language_alarm_Ctrl_ALL[][32] = 
+const char language_alarm_Ctrl_ALL[][64] = 
 {
     "所有",
     "all ",
     "Все",
+    " "
 } ;
 
-const char language_alarm_connect_ERROR[][32] = 
+const char language_alarm_connect_ERROR[][64] = 
 {
     "连接错误",
     "connect ERROR ",
     "Ошибка подключения",
+    " "
 } ;
-const char language_alarm_Init_Success[][32] = 
+const char language_alarm_Init_Success[][64] = 
 {
     "初始化成功",
     "INIT SUCCESS ",
     "Инициализация успешна",
+    " "
 } ;
 
-const char language_alarm_NULL_ERROR[][32] = 
+const char language_alarm_NULL_ERROR[][64] = 
 {
     "故障",
     " ERROR! ",
-    " Ошибка "
+    " Ошибка",
+    " "
 } ;
+
+const char language_alarm_RS485_master[][64] = 
+{
+    "主机",
+    " Master",
+    " Главный",
+    " "
+} ;
+
+const char language_alarm_RS485_slave[][64] = 
+{
+    "从机",
+    " Slave",
+    "Вспомогательный",
+    " "
+} ;
+
+
+
 #endif
 

+ 1 - 1
pro/src/language_hashmap.c

@@ -20,7 +20,7 @@ HashTable *create_hash_table(int size)
 }  
   
 // 在哈希表中插入键值对  
-void insert_Newhash(HashTable *table, const char *key, char value[][32],int valuelens) 
+void insert_Newhash(HashTable *table, const char *key, char value[][64],int valuelens) 
 {   
     unsigned int index = _hash(table,key);  
     HashEntry *entry = (HashEntry *)malloc(sizeof(HashEntry));  

+ 1 - 1
pro/src/language_hashmap.h

@@ -25,7 +25,7 @@ unsigned int _hash(HashTable *table,const char *key) ;
 HashTable *create_hash_table(int size);
   
 // 在哈希表中插入键值对  
-void insert_Newhash(HashTable *table, const char *key, char value[][32],int valuelens);
+void insert_Newhash(HashTable *table, const char *key, char value[][64],int valuelens);
   
 // 在哈希表中查找键对应的值  
 const HashEntry*find_hash(HashTable *table, const char *key);

+ 6 - 2
pro/src/sqlite_handle.c

@@ -778,10 +778,10 @@ int dev_search_time_t_ac_power_info(sqlite3 *db,int product_id,int product_ch_id
     return 0;
 }
 
-int dev_search_latest_t_ac_power_statistic_info(int nCh, int nType, _OverAllPwrAckInfo *__overChnPwrAckInfo)
+int dev_search_latest_t_ac_power_statistic_info(int nCh, int nType, _OverAllPwrAckInfo *__overChnPwrAckInfo,GlobalDeviceManager* globalDeviceManger)
 {
     GlobalTreeACManager *_pTreeACPowerMangerTemp = NULL;
-    list_for_each_entry(_pTreeACPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list_Tree_AC, list_Tree_AC)
+    list_for_each_entry(_pTreeACPowerMangerTemp, &globalDeviceManger->_globalPowerManger.list_Tree_AC, list_Tree_AC)
     {
         if (_pTreeACPowerMangerTemp->product_ch_id != nCh ||_pTreeACPowerMangerTemp->product_ph_type!=nType)
         {
@@ -793,6 +793,10 @@ int dev_search_latest_t_ac_power_statistic_info(int nCh, int nType, _OverAllPwrA
         __overChnPwrAckInfo->freq = _pTreeACPowerMangerTemp->_PowerInfo.freq;
         __overChnPwrAckInfo->consumption = _pTreeACPowerMangerTemp->_PowerInfo.consumption;
         __overChnPwrAckInfo->factor = _pTreeACPowerMangerTemp->_PowerInfo.factor;
+
+       __overChnPwrAckInfo->product_name = globalDeviceManger->_global_device_info->product_name;
+        __overChnPwrAckInfo->product_number = globalDeviceManger->_global_device_info->product_number;
+        __overChnPwrAckInfo->product_id = globalDeviceManger->_global_device_info->product_id;
         return 0;
         break;
     }

+ 1 - 1
pro/src/sqlite_handle.h

@@ -24,7 +24,7 @@ int dev_search_latest_power_info(sqlite3 *db,int product_id,int product_ch_id,Gl
 int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_OverChnPwrAckInfo* __overChnPwrAckInfo);
 
 int dev_search_latest_power_statistic_info(GlobalDeviceManager* globalDeviceManger);
-int dev_search_latest_t_ac_power_statistic_info(int nCh,int nType,_OverAllPwrAckInfo* __overChnPwrAckInfo);
+int dev_search_latest_t_ac_power_statistic_info(int nCh,int nType,_OverAllPwrAckInfo* __overChnPwrAckInfo,GlobalDeviceManager* globalDeviceManger);
 
 int dev_search_time_power_info(sqlite3 *db,int product_id,int product_ch_id,int total_type,GlobalPowerInfo* _globalPowerInfo,char* start_time,char* end_time);
 int dev_search_time_t_ac_power_info(sqlite3 *db,int product_id,int product_ch_id,int total_type,GlobalPowerInfo* _globalPowerInfo,char* start_time,char* end_time);

+ 28 - 41
pro/src/switch_ctrl.c

@@ -927,11 +927,20 @@ int g_switch_set_all_ctrl(void* manger,int ntype,int saddr,unsigned short sts)
         list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
         {
             if(_globalPowerMangerTemp->product_saddr != saddr)continue;
-            if(_globalPowerMangerTemp->global_over_manager->product_vol_upper_enable==1)switch_ctrl[_globalPowerMangerTemp->product_ch_addr]|=ENABLE_V_UP;
-            if(_globalPowerMangerTemp->global_over_manager->product_vol_lower_enable==1)switch_ctrl[_globalPowerMangerTemp->product_ch_addr]|=ENABLE_V_DOWN;
-            if(_globalPowerMangerTemp->global_over_manager->product_cur_upper_enable==1)switch_ctrl[_globalPowerMangerTemp->product_ch_addr]|=ENABLE_A_UP;
-            if(_globalPowerMangerTemp->global_over_manager->product_pwr_upper_enable==1)switch_ctrl[_globalPowerMangerTemp->product_ch_addr]|=ENABLE_W_UP;
-            if(_globalPowerMangerTemp->global_over_manager->product_pwrcon_upper_enable==1)switch_ctrl[_globalPowerMangerTemp->product_ch_addr]|=ENABLE_P_UP;
+            int nchAddr=_globalPowerMangerTemp->product_ch_addr-1;
+            if(_globalPowerMangerTemp->global_over_manager->product_vol_upper_enable==1)switch_ctrl[nchAddr]|=ENABLE_V_UP;
+            if(_globalPowerMangerTemp->global_over_manager->product_vol_lower_enable==1)switch_ctrl[nchAddr]|=ENABLE_V_DOWN;
+            if(_globalPowerMangerTemp->global_over_manager->product_cur_upper_enable==1)switch_ctrl[nchAddr]|=ENABLE_A_UP;
+            if(_globalPowerMangerTemp->global_over_manager->product_pwr_upper_enable==1)switch_ctrl[nchAddr]|=ENABLE_W_UP;
+            if(_globalPowerMangerTemp->global_over_manager->product_pwrcon_upper_enable==1)switch_ctrl[nchAddr]|=ENABLE_P_UP;
+            int nStatus=switch_ctrl[nchAddr]&BIT_00;
+            if(nStatus==1)
+            {
+                switch_ctrl[nchAddr]|=ENABLE_ALL_UP;
+            }else{
+                switch_ctrl[nchAddr]|=ENABLE_ALL_DOWN;
+            }
+
             nchNum++;
         }
         return g_switch_set_ac_single_s_ctrl(manger, saddr, &switch_ctrl,nchNum);
@@ -943,11 +952,19 @@ int g_switch_set_all_ctrl(void* manger,int ntype,int saddr,unsigned short sts)
         list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
         {
             if(_globalPowerMangerTemp->product_saddr != saddr)continue;
-            if(_globalPowerMangerTemp->global_over_manager->product_vol_upper_enable==1)switch_ctrl[_globalPowerMangerTemp->product_ch_addr]|=ENABLE_V_UP;
-            if(_globalPowerMangerTemp->global_over_manager->product_vol_lower_enable==1)switch_ctrl[_globalPowerMangerTemp->product_ch_addr]|=ENABLE_V_DOWN;
-            if(_globalPowerMangerTemp->global_over_manager->product_cur_upper_enable==1)switch_ctrl[_globalPowerMangerTemp->product_ch_addr]|=ENABLE_A_UP;
-            if(_globalPowerMangerTemp->global_over_manager->product_pwr_upper_enable==1)switch_ctrl[_globalPowerMangerTemp->product_ch_addr]|=ENABLE_W_UP;
-            if(_globalPowerMangerTemp->global_over_manager->product_pwrcon_upper_enable==1)switch_ctrl[_globalPowerMangerTemp->product_ch_addr]|=ENABLE_P_UP;
+            int nchAddr=_globalPowerMangerTemp->product_ch_addr-1;
+            if(_globalPowerMangerTemp->global_over_manager->product_vol_upper_enable==1)switch_ctrl[nchAddr]|=ENABLE_V_UP;
+            if(_globalPowerMangerTemp->global_over_manager->product_vol_lower_enable==1)switch_ctrl[nchAddr]|=ENABLE_V_DOWN;
+            if(_globalPowerMangerTemp->global_over_manager->product_cur_upper_enable==1)switch_ctrl[nchAddr]|=ENABLE_A_UP;
+            if(_globalPowerMangerTemp->global_over_manager->product_pwr_upper_enable==1)switch_ctrl[nchAddr]|=ENABLE_W_UP;
+            if(_globalPowerMangerTemp->global_over_manager->product_pwrcon_upper_enable==1)switch_ctrl[nchAddr]|=ENABLE_P_UP;
+            int nStatus=switch_ctrl[nchAddr]&BIT_00;
+            if(nStatus==1)
+            {
+                switch_ctrl[nchAddr]|=ENABLE_ALL_UP;
+            }else{
+                switch_ctrl[nchAddr]|=ENABLE_ALL_DOWN;
+            }
             nchNum++;
         }
         return g_switch_set_ac_single_b_ctrl(manger,saddr,&switch_ctrl,nchNum);
@@ -1067,36 +1084,6 @@ int g_switch_get_all_out_info(void* manger,int ntype,int saddr,int nNumb,PowerIn
         return g_switch_get_t_ac_all_out_info(manger, saddr, nNumb, _power, _warning);
     }
     break;
-    case RS485_Type:
-    {
-    
-           _power->current = hlw8110_read_IA(__globalDeviceManage._RS485LowConfData);
-            //log_d("get _power->current sucessful!!!\n");
-           _power->voltage  = hlw8110_read_UV(__globalDeviceManage._RS485LowConfData);
-            //log_d("get _power->voltage sucessful!!!\n");
-           _power->power =  hwl8110_read_PA(__globalDeviceManage._RS485LowConfData);
-           // log_d("get _power->power sucessful!!!\n");
-           _power->factor = hwl8110_read_PF(__globalDeviceManage._RS485LowConfData);
-            // log_d("get _power->factor sucessful!!!\n");
-           _power->freq = hwl8110_read_LineFreq(__globalDeviceManage._RS485LowConfData);
-           //_power->a = hlw8110_read_Angle(__globalDeviceManage._RS485LowConfData);
-            _power->consumption = hwl8110_read_EA(__globalDeviceManage._RS485LowConfData);
-            //log_d("get _power->consumption sucessful!!!\n");            
-            int ret=hlw8110_read_Status(__globalDeviceManage._RS485LowConfData,&_power->status);
-            if (ret==1)
-            {
-                log_d("error gpio ReadError");
-            }
-            
-            /* log_d("V:%0.3f,A:%0.3f,P:%0.3f,PF:%0.3f,F_consumption:%0.3f,F_Factor:%0.3f",_power->voltage,
-                                                                                    _power->current,
-                                                                                    _power->power,
-                                                                                    _power->freq,
-                                                                                    _power->consumption,
-                                                                                    _power->factor); */
-
-    }
-    break;
     case AC_MULTI_S_TYPE:
     case AC_MULTI_B_TYPE:
     case DC_IN_TYPE:
@@ -2034,7 +2021,7 @@ int  ResetChmData()
     int type=0;
     __globalDeviceManage.useSlaveCount=0;
 
-    for (size_t i = 0; i <= MAX_CHN_COUNT; i++)
+    for (size_t i = 0; i < MAX_CHN_COUNT; i++)
     {
         type = 0 ;
         int nMaxChn=0;

+ 1 - 3
pro/src/sys.c

@@ -123,7 +123,7 @@ int sys_set_factory(void)
     sqlite_deinit(&__globalDeviceManage.db);
 
     sys_get_path(dir, "");
-    snprintf(tmp, "cp -f %s/%s %s/%s", dir, DATABASE_BAK_NAME, dir, DATABASE_NAME);
+    snprintf(tmp, sizeof(tmp),"cp -f %s/%s %s/%s", dir, DATABASE_BAK_NAME, dir, DATABASE_NAME);
 
     LOGD("___ %s\n", tmp);
     r = system(tmp);
@@ -910,5 +910,3 @@ int sys_get_net(NetworkInfo_t *para, int ipVersion)
 }
 
 
-
-

+ 2 - 0
pro/src/sys.h

@@ -17,6 +17,7 @@ enum {
 };
 
 
+
 int sys_reboot(void);
 int sys_set_factory(void);
 int sys_get_path(char *path, char *name);
@@ -24,4 +25,5 @@ int sys_get_net(NetworkInfo_t *para, int ipVersion);
 int sys_set_net(NetworkInfo_t *para, int ipVersion);
 
 
+
 #endif