|
@@ -93,10 +93,12 @@ const char *MegaTecCMD[] = {
|
|
|
"QMOD\r",
|
|
|
"SON\r",
|
|
|
"QWS\r",
|
|
|
+ "QBYV\r",
|
|
|
+ "PHV264\r",//264
|
|
|
};
|
|
|
|
|
|
extern bool flUpdateLog;
|
|
|
-
|
|
|
+static bool flag_WPHVR2K0L = false;
|
|
|
|
|
|
void init_UPS_value(void)
|
|
|
{
|
|
@@ -604,7 +606,22 @@ void ups_model_response(char *data)
|
|
|
}
|
|
|
}
|
|
|
if(strncmp(value, "WPHV", 4) == 0 || strncmp(value, "G2", 2) == 0 || value[0] == 0) {
|
|
|
- strcpy(UPS.model, "RTMP-II");
|
|
|
+#if HARDWARE_BT6711_V1
|
|
|
+ if(UPS.serial[0] == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(strncmp(value, "WPHVR2K0L", 9) == 0) {
|
|
|
+ strcpy(UPS.model, "RTMP-II v1rih");
|
|
|
+ flag_WPHVR2K0L = true;
|
|
|
+ } else if(strncmp(UPS.serial, "83122103100051", 14) == 0) {
|
|
|
+ strcpy(UPS.model, "RTMP-II v0hi v1");
|
|
|
+ //flag_WPHVR2K0L = true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+#endif
|
|
|
+ {
|
|
|
+ strcpy(UPS.model, "RTMP-II");
|
|
|
+ }
|
|
|
} else {
|
|
|
#ifdef HARDWARE_BT6709
|
|
|
if(UPS.serial[0] == 0) {
|
|
@@ -627,6 +644,23 @@ void ups_model_response(char *data)
|
|
|
strncpy(UPS.model, value, len);
|
|
|
}
|
|
|
}
|
|
|
+ #if HARDWARE_BT6711_V1
|
|
|
+ if(UPS.serial[0] == 0) {
|
|
|
+ memset(UPS.model, 0, sizeof(UPS.model));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(strncmp(UPS.serial, "83122103100051", 14) == 0) {
|
|
|
+ strcpy(UPS.model, "RTMP-II v0hi v1");
|
|
|
+ //flag_WPHVR2K0L = true;
|
|
|
+ } else if (strncmp(UPS.serial, "83122204100", 11) == 0) {
|
|
|
+ char str[15];
|
|
|
+ strncpy(str, &UPS.serial[11], 3);
|
|
|
+ int32_t tmp = atoi(str);
|
|
|
+ if (tmp >= 139 && tmp <= 938) {
|
|
|
+ strcpy(UPS.model, "RTMP-II v0hi v1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+#endif
|
|
|
SNMP_SetObjDescr();
|
|
|
data += (VOLTRONIC_MODEL_LENGTH + 1);
|
|
|
memset(value, 0, sizeof(value));
|
|
@@ -797,21 +831,23 @@ void ups_mode_response(char *data)
|
|
|
data++;
|
|
|
|
|
|
DBG printf("UPS ups_mode_parser_start: %s\r\n", data);
|
|
|
-#ifdef UPS_MODE_MONITOR
|
|
|
+
|
|
|
if (UPS.Mode != data[0]) {
|
|
|
UPS.Mode = data[0];
|
|
|
+#ifdef UPS_MODE_MONITOR
|
|
|
memset(value, 0, sizeof(value));
|
|
|
GetModeStr(value, &len);
|
|
|
SNMP_SendUserTrap(UPS_MODE);
|
|
|
syslog(SYSLOG_INFORMATIONAL, "Режим ИБП: %s", value);
|
|
|
log_event_data(LOG_UPS_MODE, value);
|
|
|
+#endif
|
|
|
}
|
|
|
-#endif
|
|
|
+
|
|
|
}
|
|
|
|
|
|
#define BIT_OFFSET(c, offset) ((c - 0x30) << offset)
|
|
|
|
|
|
-char ups_warn_status_response(char *data)
|
|
|
+void ups_warn_status_response(char *data)
|
|
|
{
|
|
|
if (data[0] != '(') {
|
|
|
return;
|
|
@@ -826,6 +862,21 @@ char ups_warn_status_response(char *data)
|
|
|
+ BIT_OFFSET(data[7], 4) + BIT_OFFSET(data[8], 5) + BIT_OFFSET(data[12], 6) + BIT_OFFSET(data[13], 7);
|
|
|
}
|
|
|
|
|
|
+void ups_bypass_hvolt_set(char *data)
|
|
|
+{
|
|
|
+ UPS.Present = UPS_CONNECTED;
|
|
|
+ UPS.Flag_Present = true;
|
|
|
+ UPS.cnt_err_ups = 0;
|
|
|
+
|
|
|
+ if (strlen(data) != 0) {
|
|
|
+ if (strncmp(data, "(ACK", 4) == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ DBG printf("UPS ups_buzzer_cntrl_parser_start: %s\r\n", data);
|
|
|
+}
|
|
|
+
|
|
|
void ups_megatec_process_pdu(cmdMegaTecEnums_t command)
|
|
|
{
|
|
|
switch (command) {
|
|
@@ -871,6 +922,9 @@ void ups_megatec_process_pdu(cmdMegaTecEnums_t command)
|
|
|
case ups_warning_status:
|
|
|
ups_warn_status_response(ups_pdu.data);
|
|
|
break;
|
|
|
+ case ups_bypass_hvolt_264_set:
|
|
|
+ ups_bypass_hvolt_set(ups_pdu.data);
|
|
|
+ break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
@@ -1054,6 +1108,16 @@ void request_task(void *params)
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
|
+ if (megatec_send) {
|
|
|
+ memset(ups_pdu.data, 0, UPS_PDU_MAX_LEN);
|
|
|
+ megatec_send = false;
|
|
|
+ UPS.Flag_Present = false;
|
|
|
+ send_MegaTec_cmd(ups_bypass_hvolt_264_set);
|
|
|
+ if (ups_megatec_rx_pdu()) {
|
|
|
+ ups_megatec_process_pdu(ups_bypass_hvolt_264_set);
|
|
|
+ }
|
|
|
+ megatec_send = true;
|
|
|
+ }
|
|
|
break;
|
|
|
default:
|
|
|
num_req = sizeof(kestar_req);
|
|
@@ -1089,6 +1153,7 @@ bool get_sync_data(void)
|
|
|
void akb_time_work_task(void *params)
|
|
|
{
|
|
|
static uint32_t tick_prev = 0;
|
|
|
+ static uint32_t cnt_sec = 0;
|
|
|
for (;;) {
|
|
|
if (UPS.Present == UPS_CONNECTED && ((UPS.Status >> 7) & 0x01)) {
|
|
|
if (tick_prev == 0) {
|
|
@@ -1101,6 +1166,13 @@ void akb_time_work_task(void *params)
|
|
|
tick_prev = 0;
|
|
|
UPS.akb_work_time = 0;
|
|
|
}
|
|
|
+ if(flag_WPHVR2K0L) {
|
|
|
+ cnt_sec ++;
|
|
|
+ if (cnt_sec == 3600) {
|
|
|
+ cnt_sec = 0;
|
|
|
+ int res = ups_metac_service_pdu(ups_test_10sec);
|
|
|
+ }
|
|
|
+ }
|
|
|
vTaskDelay(1000);
|
|
|
}
|
|
|
}
|