Эх сурвалжийг харах

[megatec]1. add func ups buzzer off
2. fix read sw version

balbekova 4 жил өмнө
parent
commit
12678f93e4

+ 41 - 1
modules/MegaTec/megatec.c

@@ -37,6 +37,8 @@ uint16_t TimeParam2 = 0;
 bool megatec_send = true;
 bool megatec_send = true;
 UPS_value_t UPS;
 UPS_value_t UPS;
 
 
+static bool flag_buzzer_on = false;
+
 enum {
 enum {
     NORMAL = 0x00,
     NORMAL = 0x00,
     VER_ERROR = 0x01,
     VER_ERROR = 0x01,
@@ -75,6 +77,7 @@ const char *MegaTecCMD[] = {
     "QPI\r",
     "QPI\r",
     "QS\r",
     "QS\r",
     "M\r",
     "M\r",
+    "PDA\r",
 };
 };
 
 
 extern bool flUpdateLog;
 extern bool flUpdateLog;
@@ -577,9 +580,13 @@ void ups_version_response(char *data)
     data++;
     data++;
 
 
     if (UPS.vertion[0] != 0) {
     if (UPS.vertion[0] != 0) {
-        return;
+        if(strncmp(data, UPS.vertion, strlen(UPS.vertion)) == 0){
+            return;
+        }
     }
     }
 
 
+    memset(UPS.vertion, 0, sizeof(UPS.vertion));
+
     len = get_ups_param(data, ":", value);
     len = get_ups_param(data, ":", value);
     data += (len + 1);
     data += (len + 1);
 
 
@@ -675,6 +682,22 @@ void ups_protocol_id_response(char *data)
 
 
 }
 }
 
 
+void ups_buzzer_cntrl_response(char *data)
+{
+    UPS.Present = true;
+    UPS.Flag_Present = true;
+    UPS.cnt_err_ups = 0;
+
+    if (strlen(data) != 0) {
+        if (strncmp(data, "(ACK", 4) == 0) {
+            flag_buzzer_on = true;
+        }
+    }
+
+    DBG printf("UPS ups_buzzer_cntrl_parser_start: %s\r\n", data);
+
+}
+
 void ups_megatec_process_pdu(cmdMegaTecEnums_t command)
 void ups_megatec_process_pdu(cmdMegaTecEnums_t command)
 {
 {
     switch (command) {
     switch (command) {
@@ -711,6 +734,9 @@ void ups_megatec_process_pdu(cmdMegaTecEnums_t command)
         case ups_protocol_id_req:
         case ups_protocol_id_req:
             ups_protocol_id_response(ups_pdu.data);
             ups_protocol_id_response(ups_pdu.data);
             break;
             break;
+        case ups_buzzer_cntrl:
+            ups_buzzer_cntrl_response(ups_pdu.data);
+            break;
         default:
         default:
             break;
             break;
     }
     }
@@ -798,6 +824,20 @@ void request_task(void *params)
             case ups_voltronic:
             case ups_voltronic:
                 num_req = sizeof(voltronic_req);
                 num_req = sizeof(voltronic_req);
                 req = voltronic_req;
                 req = voltronic_req;
+#ifdef UPS_BUZZER_OFF
+                if (!flag_buzzer_on) {
+                    if (megatec_send) {
+                        memset(ups_pdu.data, 0, UPS_PDU_MAX_LEN);
+                        megatec_send = false;
+                        UPS.Flag_Present = false;
+                        send_MegaTec_cmd(ups_buzzer_cntrl);
+                        if (ups_megatec_rx_pdu()) {
+                            ups_megatec_process_pdu(ups_buzzer_cntrl);
+                        }
+                        megatec_send = true;
+                    }
+                }
+#endif
                 break;
                 break;
             default:
             default:
                 num_req = sizeof(kestar_req);
                 num_req = sizeof(kestar_req);

+ 5 - 0
modules/MegaTec/megatec.h

@@ -12,6 +12,10 @@
 #include <stdint.h>
 #include <stdint.h>
 #include <stdlib.h>
 #include <stdlib.h>
 
 
+
+//#define UPS_BUZZER_OFF
+
+
 #define K_EFFICIENCY		0.9
 #define K_EFFICIENCY		0.9
 #define AKB_VOLTAGE			12
 #define AKB_VOLTAGE			12
 #define AKB_NUM_CELL		6
 #define AKB_NUM_CELL		6
@@ -43,6 +47,7 @@ typedef enum{
 	ups_protocol_id_req,
 	ups_protocol_id_req,
 	ups_offline_status_req,
 	ups_offline_status_req,
 	ups_passw_req,
 	ups_passw_req,
+	ups_buzzer_cntrl,
 
 
 	MegaTec_cmd_max
 	MegaTec_cmd_max
 } cmdMegaTecEnums_t;
 } cmdMegaTecEnums_t;