Kaynağa Gözat

声光报警代码

liyi 11 ay önce
ebeveyn
işleme
1a6949606d
6 değiştirilmiş dosya ile 299 ekleme ve 3 silme
  1. 54 1
      pro/src/appweb_handle.c
  2. 6 0
      pro/src/common.h
  3. 6 1
      pro/src/dflt.c
  4. 76 0
      pro/src/json_handle.c
  5. 40 0
      pro/src/json_handle.h
  6. 117 1
      pro/src/paras.c

+ 54 - 1
pro/src/appweb_handle.c

@@ -18,6 +18,8 @@
 #include "breaker_detection.h"
 #include "Cellular.h"
 #include "wifi.h"
+#include "beep.h"
+#include "led.h"
 
 #define TOTAL_COUNT 60
 #define FN_MAX  30
@@ -3571,7 +3573,58 @@ static void alarmProtect(void *conn)
         dev_insert_alarm_ctrl(__globalDeviceManage.db, __globalDeviceManage._globalDevInfo.product.id, ALARM_TYPE_OPRATION, log_buff,user);
         //拿到参数保存
         ack_str = ctrl_sts_ack_to_json();
-    }    
+    }else if(strcmp(_alarm_request_info.type,"saveSG")==0)         //保存声光配置
+    {
+        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;
+
+        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;
+
+        beep_set_val(&beep);
+        led_set_val(&led);
+        char log_buff[256];
+        sprintf(log_buff, "save beep and led value!!!!");
+        char *user = getUserNamebyToken(_alarm_request_info.user_token);
+        dev_insert_alarm_ctrl(__globalDeviceManage.db, __globalDeviceManage._globalDevInfo.product.id, ALARM_TYPE_OPRATION, log_buff,user);
+        ack_str = ctrl_sts_ack_to_json();
+
+    }else if(strcmp(_alarm_request_info.type,"cleanSG")==0)        //清除声光报警
+    {
+        led_reset(); 
+        beep_reset();
+        char log_buff[256];
+        sprintf(log_buff, "clean beep and led arlarm!!!!");
+        char *user = getUserNamebyToken(_alarm_request_info.user_token);
+        dev_insert_alarm_ctrl(__globalDeviceManage.db, __globalDeviceManage._globalDevInfo.product.id, ALARM_TYPE_OPRATION, log_buff,user);
+        ack_str = ctrl_sts_ack_to_json();
+
+    }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);
+
+        _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;
+        ack_str =  alarm_type_sg_to_json(&info);
+    }
+       
 
     cJSON_Delete(cjson);
     http_reply(conn, 200, ack_str);

+ 6 - 0
pro/src/common.h

@@ -406,7 +406,13 @@ 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;   
     int         rotate;
 }MiscInfo_t;
 

+ 6 - 1
pro/src/dflt.c

@@ -104,12 +104,17 @@ 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,
 
         #ifdef ROTATE
             .rotate = ROTATE,

+ 76 - 0
pro/src/json_handle.c

@@ -3822,6 +3822,35 @@ char* alarm_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAllNumber)
     return str;
 }
 
+
+
+char * alarm_type_sg_to_json(_BeepLedAckInfo_t *info)
+{
+    char* str = NULL;
+    // 创建 JSON 对象
+    cJSON* root = cJSON_CreateObject();   
+    // 添加基本键值对
+    cJSON_AddNumberToObject(root, "code", 200); 
+    //创建数据
+    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);
+    cJSON_AddStringToObject(root, "msg", language_Operation_Success[__globalDeviceManage._globalDevInfo.product.language]);
+    str = cJSON_Print(root); 
+    cJSON_Delete(root);
+    return str;
+}
+
 /// @brief 返回告警日志
 /// @param _alarm_ack_info 
 /// @return 
@@ -5470,6 +5499,53 @@ cJSON* json_to_alarm_manage(const char* str,_AlarmRequestInfo* _alarm_request_in
     if (cjson_productChIds != NULL)
         _alarm_request_info->strProductChIds = cjson_productChIds->valuestring;
 
+
+    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;
+    }
+
+
+    cJSON *beep_enbale = cJSON_GetObjectItem(cjson, "beepEnable");
+    if (beep_enbale != NULL)
+    {
+        _alarm_request_info->led_beep_info.beep_enable = beep_enbale->valueint;
+    }
+
+    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)
+    {
+        _alarm_request_info->led_beep_info.beep_off = beep_off->valueint;
+    }
+    cJSON *beep_count = cJSON_GetObjectItem(cjson, "beepCount");
+    if (beep_count != NULL)
+    {
+        _alarm_request_info->led_beep_info.beep_count = beep_count->valueint;
+    }
+
+
     return cjson;
 }
 

+ 40 - 0
pro/src/json_handle.h

@@ -336,6 +336,19 @@ typedef struct
     char *thresholdDownChanel;
 }_Sensor_AlarmRequestInfo;
 
+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;   
+}Led_Beep_Info_t;
+
+
 
 /// @brief 告警信息查询
 typedef struct
@@ -348,9 +361,18 @@ typedef struct
     char *endTime;
     _Power_AlarmRequestInfo _pwr_info;
     _Sensor_AlarmRequestInfo _sensor_info;
+    Led_Beep_Info_t          led_beep_info;
     char* strProductChIds;
 }_AlarmRequestInfo;
 
+
+
+
+
+
+
+
+
 /// @brief 告警响应信息
 typedef struct
 {
@@ -365,6 +387,19 @@ typedef struct
 }_AlarmAckInfo;
 
 
+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;
+}_BeepLedAckInfo_t;
+
+
+
 /// @brief SMPT服务信息
 typedef struct 
 {
@@ -636,6 +671,11 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
 
 char* alarm_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAllNumber);
 
+char * alarm_type_sg_to_json(_BeepLedAckInfo_t *info);
+
+
+
+
 char* alarm_type_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAllNumber);
 char* alarm_ctrl_type_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAlarmNum);
 

+ 117 - 1
pro/src/paras.c

@@ -943,6 +943,62 @@ 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);
@@ -961,7 +1017,60 @@ 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";
+    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;
+        }
+    }
+    else {
+        sprintf(temp, "%d", misc->beep_off);
+        r = iniparser_set(dic, token, temp);
+        if(r) {
+            LOGE("___ iniparser_set %s failed\n", token);
+            return -1;
+        }
+    }
+    token = "misc:beepCount";
+    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;
+        }
+    }
+    else {
+        sprintf(temp, "%d", misc->beep_count);
+        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);
@@ -3871,7 +3980,14 @@ 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, "rotate      = \"%d\"\n", info->misc.rotate);
     fprintf(fp, "\n");