Przeglądaj źródła

udp广播,声光报警。

liyi 10 miesięcy temu
rodzic
commit
34da713911

+ 17 - 20
pro/src/appweb_handle.c

@@ -3213,6 +3213,11 @@ char* setThresholdToCh(_AlarmRequestInfo* _alarm_request_info,int nChID)
     return ack_str;
 }
 
+static inline MiscInfo_t* get_misc(void)
+{
+    return &__globalDeviceManage._globalDevInfo.misc;
+}
+
 /// @brief 告警保护
 /// @param stream 
 static void alarmProtect(void *conn)
@@ -3576,17 +3581,18 @@ static void alarmProtect(void *conn)
         ack_str = ctrl_sts_ack_to_json();
     }else if(strcmp(_alarm_request_info.type,"saveSG")==0)         //保存声光配置
     {
+        MiscInfo_t* misc=get_misc();
+
+        
         web_beep_t beep= {0};
         web_led_t led = {0};
         beep.enable = _alarm_request_info.led_beep_info.beep_enable;
-        beep.on = _alarm_request_info.led_beep_info.beep_on;
-        beep.off = _alarm_request_info.led_beep_info.beep_off;
-        beep.time = _alarm_request_info.led_beep_info.beep_count;
+        beep.interval = _alarm_request_info.led_beep_info.interval;
+        beep.duption = _alarm_request_info.led_beep_info.duption;
 
         led.enable = _alarm_request_info.led_beep_info.led_enable;
-        led.on = _alarm_request_info.led_beep_info.led_on;
-        led.off = _alarm_request_info.led_beep_info.led_off;
-        led.time = _alarm_request_info.led_beep_info.led_count;
+        led.interval = _alarm_request_info.led_beep_info.interval;
+        led.duption = _alarm_request_info.led_beep_info.duption;
 
         beep_set_val(&beep);
         led_set_val(&led);
@@ -3608,21 +3614,12 @@ static void alarmProtect(void *conn)
 
     }else if(strcmp(_alarm_request_info.type,"listSGQuery")==0)          //获取声光报警参数
     {
-        web_beep_t beep={0};
-        web_led_t led = {0};
-        beep_get_val(&beep);
-        
-        led_get_val(&led);
-
+        MiscInfo_t* misc=get_misc();
         _BeepLedAckInfo_t info = {0};
-        info.led_enable = led.enable;
-        info.led_on = led.on;
-        info.led_off = led.off;
-        info.led_count = led.time;
-        info.beep_enable = beep.enable;
-        info.beep_on = beep.on;
-        info.beep_off = beep.off;
-        info.beep_count = beep.time;
+        info.led_enable = misc->led;
+        info.beep_enable = misc->beep;
+        info.interval = misc->interval;
+        info.duption = misc->duption;
         ack_str =  alarm_type_sg_to_json(&info);
     }
        

+ 2 - 0
pro/src/common.c

@@ -959,6 +959,7 @@ void SetMenuAuthority(int RoleID)
         _GlobalMenuAuthority.PzdrdcEnabled = true;
         _GlobalMenuAuthority.ShfwEnabled = true;
         _GlobalMenuAuthority.GysbEnabled = true;
+        _GlobalMenuAuthority.BroadcastEnable = true;
     }
     // 管理员
     else if (RoleID == 2)
@@ -1029,6 +1030,7 @@ void SetMenuAuthority(int RoleID)
         _GlobalMenuAuthority.PzdrdcEnabled = true;
         _GlobalMenuAuthority.ShfwEnabled = false;
         _GlobalMenuAuthority.GysbEnabled = true;
+        _GlobalMenuAuthority.BroadcastEnable = true;
     }
     //普通用户
     else

+ 3 - 6
pro/src/common.h

@@ -406,13 +406,9 @@ typedef struct {
     int         watchdog;
     int         flip_time;
     int         led;
-    uint32_t    led_on;
-    uint32_t    led_off;
-    int         led_count;
     int         beep;
-    uint32_t    beep_on;
-    uint32_t    beep_off;
-    int         beep_count;   
+    uint32_t    interval;                   //led beep 时间间隔
+    uint32_t    duption;                    //led beep 持续时间
     int         rotate;
 }MiscInfo_t;
 
@@ -1031,6 +1027,7 @@ typedef struct MenuAuthority{
     bool RsszEnabled;
     bool CellularEnabled;
     bool WifiEnabled;
+    bool BroadcastEnable;
     //7、服务管理菜单
     bool SmtpszEnabled;
     bool SnmpszEnabled;

+ 3 - 7
pro/src/dflt.c

@@ -104,18 +104,14 @@ GlobalDeviceInfo DFLT_PARAS={
         #else
             .led = 0,
         #endif
-            .led_on = 0,
-            .led_off = 1000,
-            .led_count = -1,
+
         #ifdef USE_BEEP
             .beep = 1,
         #else
             .beep = 0,
         #endif
-            .beep_on = 500,
-            .beep_off = 500,
-            .beep_count = 300,
-
+            .interval = 500,
+            .duption =600,
         #ifdef ROTATE
             .rotate = ROTATE,
         #else

+ 56 - 46
pro/src/json_handle.c

@@ -641,10 +641,30 @@ char* user_routers_info_to_json(void)
     cJSON_AddBoolToObject(children5_meta4_data1_filed,"noCache",false); 
     cJSON_AddStringToObject(children5_meta4_data1_filed,"link","");    
     cJSON_AddItemToObject(children5_data4_filed, "meta", children5_meta4_data1_filed);
+
     if(_GlobalMenuAuthority.WifiEnabled)cJSON_AddItemToObject(children5_data_array, "children", children5_data4_filed);
+
+    cJSON* children_broadcast_data4_filed = cJSON_CreateObject(); 
+    cJSON_AddStringToObject(children_broadcast_data4_filed,"name","Broadcastsz");    
+    cJSON_AddStringToObject(children_broadcast_data4_filed,"path","Broadcastsz");  
+    cJSON_AddBoolToObject(children_broadcast_data4_filed,"hidden",false); 
+    cJSON_AddStringToObject(children_broadcast_data4_filed,"component","txgl/gbsz/index");  
+    cJSON* children_broadcast_meta4_data1_filed = cJSON_CreateObject(); 
+    cJSON_AddStringToObject(children_broadcast_meta4_data1_filed,"title",language_Broadcast_install[dm->_globalDevInfo.product.language]);   
+    cJSON_AddStringToObject(children_broadcast_meta4_data1_filed,"icon","size");   
+    cJSON_AddBoolToObject(children_broadcast_meta4_data1_filed,"noCache",false); 
+    cJSON_AddStringToObject(children_broadcast_meta4_data1_filed,"link","");    
+    cJSON_AddItemToObject(children_broadcast_data4_filed, "meta", children_broadcast_meta4_data1_filed);
+    if(_GlobalMenuAuthority.BroadcastEnable) cJSON_AddItemToObject(children5_data_array, "children", children_broadcast_data4_filed);
+
+
+
+
     cJSON_AddItemToObject(data5_filed, "children", children5_data_array);
     if(_GlobalMenuAuthority.CommEnabled)cJSON_AddItemToObject(data_array, "data", data5_filed);
 
+
+
     //第七块 服务管理
     cJSON* data6_filed = cJSON_CreateObject(); 
     cJSON_AddStringToObject(data6_filed,"name","Fwgl");
@@ -3831,20 +3851,32 @@ char * alarm_type_sg_to_json(_BeepLedAckInfo_t *info)
     cJSON* root = cJSON_CreateObject();   
     // 添加基本键值对
     cJSON_AddNumberToObject(root, "code", 200); 
+    char temp[32] = {0};
+    memset(temp,0,32);
+
+
     //创建数据
-    cJSON* data_root_array = cJSON_CreateArray();
+
     cJSON* data_filed = cJSON_CreateObject();
-    cJSON_AddNumberToObject(data_filed,"ledEnable",info->led_enable);
-    cJSON_AddNumberToObject(data_filed,"ledOn",info->led_on);
-    cJSON_AddNumberToObject(data_filed,"ledOff",info->led_off);
-    cJSON_AddNumberToObject(data_filed,"ledCount",info->led_count);
-
-    cJSON_AddNumberToObject(data_filed,"beepEnable",info->beep_enable);
-    cJSON_AddNumberToObject(data_filed,"beepOn",info->beep_on);
-    cJSON_AddNumberToObject(data_filed,"beepOff",info->beep_off);
-    cJSON_AddNumberToObject(data_filed,"beepCount",info->beep_count);
-    cJSON_AddItemToObject(data_root_array, "data", data_filed);
-    cJSON_AddItemToObject(root, "data", data_root_array);
+    sprintf(temp,"%d",info->led_enable);
+    cJSON_AddStringToObject(data_filed,"ledEnable",temp);
+
+
+    memset(temp,0,32);
+    sprintf(temp,"%d",info->beep_enable);
+    cJSON_AddStringToObject(data_filed,"beepEnable",temp);
+
+
+    memset(temp,0,32);
+    sprintf(temp,"%d",info->interval);
+    cJSON_AddStringToObject(data_filed,"timeInterval",temp);
+    memset(temp,0,32);
+    sprintf(temp,"%d",info->duption);
+    cJSON_AddStringToObject(data_filed,"timeDuration",temp);
+
+
+    //cJSON_AddItemToObject(data_root_array, "data", data_filed);
+    cJSON_AddItemToObject(root, "data", data_filed);
     cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
     str = cJSON_Print(root); 
     cJSON_Delete(root);
@@ -4955,7 +4987,8 @@ char *communication_broadcast_ack_to_json(mulcast_t* broad)
     memset(temp, 0, sizeof(temp));
     cJSON* data_root_array = cJSON_CreateObject();  
 
-    cJSON_AddNumberToObject(data_root_array, "broadcastEn", broad->broad_enable);  
+     sprintf(temp,"%d",broad->broad_enable);
+     cJSON_AddStringToObject(data_root_array, "broadcastEn", temp);  
 
     // memset(temp, 0, sizeof(temp));
     // sprintf(temp,"%d",_modbusInfo_t->addr);
@@ -5548,49 +5581,26 @@ cJSON* json_to_alarm_manage(const char* str,_AlarmRequestInfo* _alarm_request_in
     cJSON *led_enbale = cJSON_GetObjectItem(cjson, "ledEnable");
     if (led_enbale != NULL)
     {
-        _alarm_request_info->led_beep_info.led_enable = led_enbale->valueint;
-    }
-
-    cJSON *led_on = cJSON_GetObjectItem(cjson, "ledOn");
-    if (led_on != NULL)
-    {
-        _alarm_request_info->led_beep_info.led_on = led_on->valueint;
-    }
-    cJSON *led_off = cJSON_GetObjectItem(cjson, "ledOff");
-    if (led_off != NULL)
-    {
-        _alarm_request_info->led_beep_info.led_off = led_off->valueint;
-    }
-    cJSON *led_count = cJSON_GetObjectItem(cjson, "ledCount");
-    if (led_count != NULL)
-    {
-        _alarm_request_info->led_beep_info.led_count = led_count->valueint;
+        _alarm_request_info->led_beep_info.led_enable = atoi(led_enbale->valuestring);
     }
 
-
     cJSON *beep_enbale = cJSON_GetObjectItem(cjson, "beepEnable");
     if (beep_enbale != NULL)
     {
-        _alarm_request_info->led_beep_info.beep_enable = beep_enbale->valueint;
+        _alarm_request_info->led_beep_info.beep_enable = atoi(beep_enbale->valuestring);
     }
 
-    cJSON *beep_on = cJSON_GetObjectItem(cjson, "beepOn");
-    if (beep_on != NULL)
-    {
-        _alarm_request_info->led_beep_info.beep_on = beep_on->valueint;
-    }
-    cJSON *beep_off = cJSON_GetObjectItem(cjson, "beepOff");
-    if (beep_off != NULL)
+    cJSON *interval = cJSON_GetObjectItem(cjson, "timeInterval");
+    if (interval != NULL)
     {
-        _alarm_request_info->led_beep_info.beep_off = beep_off->valueint;
+        _alarm_request_info->led_beep_info.interval = atoi(interval->valuestring);
     }
-    cJSON *beep_count = cJSON_GetObjectItem(cjson, "beepCount");
-    if (beep_count != NULL)
+    cJSON *duption = cJSON_GetObjectItem(cjson, "timeDuration");
+    if (duption != NULL)
     {
-        _alarm_request_info->led_beep_info.beep_count = beep_count->valueint;
+        _alarm_request_info->led_beep_info.duption = atoi(duption->valuestring);
     }
 
-
     return cjson;
 }
 
@@ -5745,13 +5755,13 @@ cJSON* json_to_communication_manage(const char* str,_CommunicationManageRequestI
             sprintf(_communicationRequestInfo->_4g_wifi_info.WIFI_code, "%s", cjson_wifi_password->valuestring);
     }
 
-    if(strcmp(_communicationRequestInfo->type,"broadcastPz")==0)
+    if(strcmp(_communicationRequestInfo->type,"broadcastSave")==0)
     {
         cJSON *_cjson = NULL;
         _cjson = cJSON_GetObjectItem(cjson, "broadcastEn");
         if (_cjson != NULL)
         {
-            _communicationRequestInfo->broadcast.broad_enable = _cjson->valueint;
+            _communicationRequestInfo->broadcast.broad_enable = atoi(_cjson->valuestring);
         }
         _cjson = cJSON_GetObjectItem(cjson, "broadcastPort");
         if (_cjson != NULL)

+ 4 - 12
pro/src/json_handle.h

@@ -339,13 +339,9 @@ typedef struct
 typedef struct
 {
     uint8_t led_enable;
-    uint32_t led_on;
-    uint32_t led_off;
-    int32_t  led_count;
     uint8_t beep_enable;
-    uint32_t beep_on;
-    uint32_t beep_off; 
-    int32_t  beep_count;   
+    uint32_t interval;
+    uint32_t duption;  
 }Led_Beep_Info_t;
 
 
@@ -389,13 +385,9 @@ typedef struct
 
 typedef struct{
     uint8_t led_enable;
-    uint32_t led_on;
-    uint32_t led_off;
-    int led_count;
     uint8_t beep_enable;
-    uint32_t beep_on;
-    uint32_t beep_off;
-    int beep_count;
+    uint32_t interval;
+    uint32_t duption;
 }_BeepLedAckInfo_t;
 
 

+ 14 - 0
pro/src/language_common.c

@@ -327,6 +327,20 @@ const char* language_WIFI_install[LANG_MAX] =
     "Wifi設定",
 } ;
 
+const char* language_Broadcast_install[LANG_MAX] = 
+{
+    "广播设置",
+    "Broadcast settings",
+    "Настройки вещания",
+    "Configuración de transmisión",
+    "Configurações de transmissão",
+    "Broadcast-Einstellungen",
+    "Configuration Broadcast",
+    "Impostazione Broadcast",
+    "放送設定",
+};
+
+
 
 
 const char* language_serve_manage[LANG_MAX] = 

+ 3 - 0
pro/src/language_common.h

@@ -102,4 +102,7 @@ extern const char* language_upgrade_error[LANG_MAX] ;
 extern const char* language_login_wrong_param[LANG_MAX];
 extern const char* language_login_query_failed[LANG_MAX];
 
+extern const char* language_Broadcast_install[LANG_MAX];
+
+
 #endif

+ 12 - 86
pro/src/paras.c

@@ -943,62 +943,6 @@ static int proc_misc(dictionary *dic, int op, MiscInfo_t *misc)
         }
     }
 
-    token = "misc:ledOn";
-    if(op==PARAS_READ) {
-        r = iniparser_getint(dic, token, -1);
-        if(r==-1) {
-            LOGE("___ iniparser_getint %s failed\n", token);
-            return -1;
-        } else {
-            misc->led_on = r;
-        }
-    }
-    else {
-        sprintf(temp, "%d", misc->led_on);
-        r = iniparser_set(dic, token, temp);
-        if(r) {
-            LOGE("___ iniparser_set %s failed\n", token);
-            return -1;
-        }
-    }
-
-    token = "misc:ledOff";
-    if(op==PARAS_READ) {
-        r = iniparser_getint(dic, token, -1);
-        if(r==-1) {
-            LOGE("___ iniparser_getint %s failed\n", token);
-            return -1;
-        } else {
-            misc->led_off = r;
-        }
-    }
-    else {
-        sprintf(temp, "%d", misc->led_off);
-        r = iniparser_set(dic, token, temp);
-        if(r) {
-            LOGE("___ iniparser_set %s failed\n", token);
-            return -1;
-        }
-    }
-    token = "misc:ledCount";
-    if(op==PARAS_READ) {
-        r = iniparser_getint(dic, token, -1);
-        if(r==-1) {
-            LOGE("___ iniparser_getint %s failed\n", token);
-            return -1;
-        } else {
-            misc->led_count = r;
-        }
-    }
-    else {
-        sprintf(temp, "%d", misc->led_count);
-        r = iniparser_set(dic, token, temp);
-        if(r) {
-            LOGE("___ iniparser_set %s failed\n", token);
-            return -1;
-        }
-    }
-
     token = "misc:beep";
     if(op==PARAS_READ) {
         r = iniparser_getint(dic, token, -1);
@@ -1017,60 +961,46 @@ static int proc_misc(dictionary *dic, int op, MiscInfo_t *misc)
             return -1;
         }
     }
-    token = "misc:beepOn";
-    if(op==PARAS_READ) {
-        r = iniparser_getint(dic, token, -1);
-        if(r==-1) {
-            LOGE("___ iniparser_getint %s failed\n", token);
-            return -1;
-        } else {
-            misc->beep_on = r;
-        }
-    }
-    else {
-        sprintf(temp, "%d", misc->beep_on);
-        r = iniparser_set(dic, token, temp);
-        if(r) {
-            LOGE("___ iniparser_set %s failed\n", token);
-            return -1;
-        }
-    }
-    token = "misc:beepOff";
+
+    token = "misc:interval";
     if(op==PARAS_READ) {
         r = iniparser_getint(dic, token, -1);
         if(r==-1) {
             LOGE("___ iniparser_getint %s failed\n", token);
             return -1;
         } else {
-            misc->beep_off = r;
+            misc->interval = r;
         }
     }
     else {
-        sprintf(temp, "%d", misc->beep_off);
+        sprintf(temp, "%d", misc->interval);
         r = iniparser_set(dic, token, temp);
         if(r) {
             LOGE("___ iniparser_set %s failed\n", token);
             return -1;
         }
     }
-    token = "misc:beepCount";
+
+
+    token = "misc:duption";
     if(op==PARAS_READ) {
         r = iniparser_getint(dic, token, -1);
         if(r==-1) {
             LOGE("___ iniparser_getint %s failed\n", token);
             return -1;
         } else {
-            misc->beep_count = r;
+            misc->duption = r;
         }
     }
     else {
-        sprintf(temp, "%d", misc->beep_count);
+        sprintf(temp, "%d", misc->duption);
         r = iniparser_set(dic, token, temp);
         if(r) {
             LOGE("___ iniparser_set %s failed\n", token);
             return -1;
         }
     }
+
     token = "misc:rotate";
     if(op==PARAS_READ) {
         r = iniparser_getint(dic, token, -1);
@@ -3980,14 +3910,10 @@ static int ini_reset(paras_handle_t *h)
     fprintf(fp, "watchdog    = \"%d\"\n", info->misc.watchdog);
     fprintf(fp, "fliptime    = \"%d\"\n", info->misc.flip_time);
     fprintf(fp, "led         = \"%d\"\n", info->misc.led);
-    fprintf(fp, "ledOn       = \"%d\"\n", info->misc.led_on);
-    fprintf(fp, "ledOff      = \"%d\"\n", info->misc.led_off);
-    fprintf(fp, "ledCount    = \"%d\"\n", info->misc.led_count);
 
     fprintf(fp, "beep        = \"%d\"\n", info->misc.beep);
-    fprintf(fp, "beepOn      = \"%d\"\n", info->misc.beep_on);
-    fprintf(fp, "beepOff     = \"%d\"\n", info->misc.beep_off);
-    fprintf(fp, "beepCount   = \"%d\"\n", info->misc.beep_count);
+    fprintf(fp, "interval      = \"%d\"\n", info->misc.interval);
+    fprintf(fp, "duption     = \"%d\"\n", info->misc.duption);
     fprintf(fp, "rotate      = \"%d\"\n", info->misc.rotate);
     fprintf(fp, "\n");
 

+ 28 - 21
pro/ui/beep.c

@@ -121,8 +121,8 @@ int beep_set_ex(beep_para_t *para)
 {
     int r = 0;
     beep_handle_t *h=&bpHandle;
+    
     MiscInfo_t* misc=get_misc();
-
     if(!misc->beep || !para || (para->on_ms<=0 && para->off_ms<=0) || para->times==0) {
         return -1;
     }
@@ -167,6 +167,14 @@ int beep_reset(void)
     return 0;
 }
 
+
+
+// int beep_set_val()
+// {
+
+// }
+
+
 int beep_set_val(web_beep_t *para)
 {
     MiscInfo_t* misc=get_misc();
@@ -177,31 +185,30 @@ int beep_set_val(web_beep_t *para)
     {
         misc->beep = 0;
     }
-    misc->beep_on = para->on;
-    misc->beep_off = para->off;
-    misc->beep_count = para->time;
+    misc->interval = para->interval;
+    misc->duption = para->duption;
 
-    beep_para[BEEP_MODE_WARN1].off_ms = misc->beep_off;
-    beep_para[BEEP_MODE_WARN1].on_ms =  misc->beep_on;
-    beep_para[BEEP_MODE_WARN1].times = misc->beep_count;
+    beep_para[BEEP_MODE_WARN1].off_ms = misc->interval;
+    beep_para[BEEP_MODE_WARN1].on_ms =  misc->interval;
+    beep_para[BEEP_MODE_WARN1].times =  misc->interval > 0 ? (misc->duption * 1000) / (misc->interval * 2) : 0;
 
-    beep_para[BEEP_MODE_WARN2].off_ms = misc->beep_off;
-    beep_para[BEEP_MODE_WARN2].on_ms =  misc->beep_on;
-    beep_para[BEEP_MODE_WARN2].times = misc->beep_count;
+    beep_para[BEEP_MODE_WARN2].off_ms = misc->interval;
+    beep_para[BEEP_MODE_WARN2].on_ms =  misc->interval;
+    beep_para[BEEP_MODE_WARN2].times =  misc->interval > 0 ? (misc->duption * 1000) / (misc->interval * 2) : 0;
     
     paras_save();
     return 0;
 }
 
 
-int beep_get_val(web_beep_t *para)
-{
-    if(!para)
-        return -1;
-    MiscInfo_t* misc=get_misc();
-    para->enable = misc->beep;
-    para->on = misc->beep_on;
-    para->off =  misc->beep_off;
-    para->time = misc->beep_count;
-    return 0;
-}
+// int beep_get_val(web_beep_t *para)
+// {
+//     if(!para)
+//         return -1;
+//     MiscInfo_t* misc=get_misc();
+//     para->enable = misc->beep;
+//     para->on = misc->beep_on;
+//     para->off =  misc->beep_off;
+//     para->time = misc->beep_count;
+//     return 0;
+// }

+ 11 - 4
pro/ui/beep.h

@@ -19,14 +19,21 @@ typedef struct {
 }beep_para_t;
 
 
+// typedef struct{
+//     uint8_t enable;
+//     uint32_t on;
+//     uint32_t off;
+//     int time;
+// }web_beep_t;
+
 typedef struct{
-    uint8_t enable;
-    uint32_t on;
-    uint32_t off;
-    int time;
+    uint32_t enable;
+    uint32_t interval;
+    uint32_t duption;
 }web_beep_t;
 
 
+
 int beep_init(void);
 int beep_deinit(void);
 int beep_set(int mode);

+ 29 - 28
pro/ui/led.c

@@ -107,13 +107,13 @@ int led_init(void)
     led_handle_t *h=&ledHandle;
     MiscInfo_t* misc=get_misc();
 
-    led_para[LED_MODE_WARN1].off_ms = misc->led_off;
-    led_para[LED_MODE_WARN1].on_ms =  misc->led_on;
-    led_para[LED_MODE_WARN1].times = misc->led_count;
+    led_para[LED_MODE_WARN1].off_ms =  misc->interval;
+    led_para[LED_MODE_WARN1].on_ms =   misc->interval;
+    led_para[LED_MODE_WARN1].times = misc->interval > 0 ? (misc->duption * 1000) / (misc->interval * 2) : 0;
 
-    led_para[LED_MODE_WARN2].off_ms = misc->led_off;
-    led_para[LED_MODE_WARN2].on_ms =  misc->led_on;
-    led_para[LED_MODE_WARN2].times = misc->led_count;
+    led_para[LED_MODE_WARN2].off_ms =  misc->interval;
+    led_para[LED_MODE_WARN2].on_ms =  misc->interval;
+    led_para[LED_MODE_WARN2].times = misc->interval > 0 ? (misc->duption * 1000) / (misc->interval * 2) : 0;
 
     h->tmr = timer_init();
     for(i=0; i<LED_ID_MAX; i++) {
@@ -216,31 +216,32 @@ int led_set_val(web_led_t *para)
     {
         misc->led = 0;
     }
-    misc->led_on = para->on;
-    misc->led_off = para->off;
-    misc->led_count = para->time;
-
-    led_para[LED_MODE_WARN1].off_ms = misc->led_off;
-    led_para[LED_MODE_WARN1].on_ms =  misc->led_on;
-    led_para[LED_MODE_WARN1].times = misc->led_count;
-
-    led_para[LED_MODE_WARN2].off_ms = misc->led_off;
-    led_para[LED_MODE_WARN2].on_ms =  misc->led_on;
-    led_para[LED_MODE_WARN2].times = misc->led_count;
+    // misc->led_on = para->on;
+    // misc->led_off = para->off;
+    // misc->led_count = para->time;
+    misc->interval = para->interval;
+    misc->duption = para->duption;
+    led_para[LED_MODE_WARN1].off_ms = misc->interval;
+    led_para[LED_MODE_WARN1].on_ms =  misc->interval;
+    led_para[LED_MODE_WARN1].times = misc->interval > 0 ? (misc->duption * 1000) / (misc->interval * 2) : 0;
+
+    led_para[LED_MODE_WARN2].off_ms = misc->interval;
+    led_para[LED_MODE_WARN2].on_ms =  misc->interval;
+    led_para[LED_MODE_WARN2].times = misc->interval > 0 ? (misc->duption * 1000) / (misc->interval * 2) : 0;
     
     paras_save();
     return 0;
 }
 
 
-int led_get_val(web_led_t *para)
-{
-    if(!para)
-        return -1;
-    MiscInfo_t* misc=get_misc();
-    para->enable = misc->led;
-    para->on = misc->led_on;
-    para->off =  misc->led_off;
-    para->time = misc->led_count;
-    return 0;
-}
+// int led_get_val(web_led_t *para)
+// {
+//     if(!para)
+//         return -1;
+//     MiscInfo_t* misc=get_misc();
+//     para->enable = misc->led;
+//     para->on = misc->led_on;
+//     para->off =  misc->led_off;
+//     para->time = misc->led_count;
+//     return 0;
+// }

+ 2 - 3
pro/ui/led.h

@@ -33,9 +33,8 @@ typedef struct {
 
 typedef struct{
     uint8_t enable;
-    uint32_t on;
-    uint32_t off;
-    int time;
+    uint32_t interval;
+    uint32_t duption;
 }web_led_t;