Hello,

below is a patch which makes blazer_ser to speak a special flavor of the 
protocol which
in the driver code is called 'Best'. I tested this patch thoroughly on my 
device (N-Power
MEV-3000LT).

Regards,
Alexander.

>cat /usr/local/portage/sys-power/nut/files/nut-2.6.5-ACK.patch

--- a/drivers/blazer.c  2013-08-13 06:46:18.227007117 +0400
+++ b/drivers/blazer.c  2013-08-13 06:49:36.315620485 +0400
@@ -405,7 +405,7 @@
        };
 
        char    buf[SMALLBUF] = "";
-       int     i;
+       int     i,ret;
 
        for (i = 0; instcmd[i].cmd; i++) {
 
@@ -417,8 +417,11 @@
 
                /*
                 * If a command is invalid, it will be echoed back
+                * As an exception, Best UPS units will report "ACK" in case of 
success!
+                * Also this command may fail with "NAK" in case shutdown is 
not is progress
                 */
-               if (blazer_command(buf, buf, sizeof(buf)) > 0) {
+               if ((ret=blazer_command(buf, buf, sizeof(buf)))<0
+                || ret>0 && strncmp(buf,"ACK",sizeof "ACK"-1) && 
strncmp(buf,"NAK",sizeof "NAK"-1)) {
                        upslogx(LOG_ERR, "instcmd: command [%s] failed", 
cmdname);
                        return STAT_INSTCMD_FAILED;
                }
@@ -463,11 +466,9 @@
         * If a command is invalid, it will be echoed back.
         * As an exception, Best UPS units will report "ACK" in case of success!
         */
-       if (blazer_command(buf, buf, sizeof(buf)) > 0) {
-               if (strncmp(buf, "ACK", 3)) {
-                       upslogx(LOG_ERR, "instcmd: command [%s] failed", 
cmdname);
-                       return STAT_INSTCMD_FAILED;
-               }
+       if ((ret=blazer_command(buf, buf, sizeof(buf)))<0 || ret>0 && 
strncmp(buf, "ACK", sizeof "ACK"-1)) {
+               upslogx(LOG_ERR, "instcmd: command [%s] failed", cmdname);
+               return STAT_INSTCMD_FAILED;
        }
 
        upslogx(LOG_INFO, "instcmd: command [%s] handled", cmdname);
_______________________________________________
Nut-upsuser mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/nut-upsuser

Reply via email to