Adjust upsdrv_shutdown() to use upsdrv_shutdown_advanced()
and upsdrv_shutdown_simple() functions.

Signed-off-by: Michal Soltys <[email protected]>
---
 drivers/apcsmart.c |   86 +++++++--------------------------------------------
 1 files changed, 12 insertions(+), 74 deletions(-)

diff --git a/drivers/apcsmart.c b/drivers/apcsmart.c
index 3ebbc50..e8ae00a 100644
--- a/drivers/apcsmart.c
+++ b/drivers/apcsmart.c
@@ -1062,97 +1062,35 @@ static void upsdrv_shutdown_advanced(int status)
 void upsdrv_shutdown(void)
 {
        char    temp[32];
-       int     ret, tval, sdtype = 0;
+       int     ret, status;
 
        if (!smartmode())
-               printf("Detection failed.  Trying a shutdown command 
anyway.\n");
+               upsdebugx(1, "SM detection failed. Trying a shutdown command 
anyway");
 
        /* check the line status */
 
        ret = ser_send_char(upsfd, APC_STATUS);
 
        if (ret == 1) {
-               ret = ser_get_line(upsfd, temp, sizeof(temp), ENDCHAR, 
+               ret = ser_get_line(upsfd, temp, sizeof(temp), ENDCHAR,
                        IGNCHARS, SER_WAIT_SEC, SER_WAIT_USEC);
 
                if (ret < 1) {
-                       printf("Status read failed!  Assuming on battery 
state\n");
-                       tval = APC_STAT_LB | APC_STAT_OB;
+                       upsdebugx(1, "Status read failed ! Assuming on battery 
state");
+                       status = APC_STAT_LB | APC_STAT_OB;
                } else {
-                       tval = strtol(temp, 0, 16);
+                       status = strtol(temp, 0, 16);
                }
 
        } else {
-               printf("Status request failed; assuming on battery state\n");
-               tval = APC_STAT_LB | APC_STAT_OB;
+               upsdebugx(1, "Status request failed; assuming on battery 
state");
+               status = APC_STAT_LB | APC_STAT_OB;
        }
 
-       if (testvar("sdtype"))
-               sdtype = atoi(getval("sdtype"));
-
-       switch (sdtype) {
-
-       case 4:         /* special hack for CS 350 and similar models */
-               printf("Using CS 350 'force OB' shutdown method\n");
-
-               if (tval & APC_STAT_OL) {
-                       printf("On line - forcing OB temporarily\n");
-                       ser_send_char(upsfd, 'U');
-               }
-
-               ser_send_char(upsfd, 'S');
-               break;
-
-       case 3:         /* shutdown with grace period */
-               printf("Sending delayed power off command to UPS\n");
-
-               ser_send_char(upsfd, APC_CMD_SHUTDOWN);
-               usleep(CMDLONGDELAY);
-               ser_send_char(upsfd, APC_CMD_SHUTDOWN);
-
-               break;
-
-       case 2:         /* instant shutdown */
-               printf("Sending power off command to UPS\n");
-
-               ser_send_char(upsfd, APC_CMD_OFF);
-               usleep(CMDLONGDELAY);
-               ser_send_char(upsfd, APC_CMD_OFF);
-
-               break;
-
-       case 1:
-
-               /* Send a combined set of shutdown commands which can work 
better */
-               /* if the UPS gets power during shutdown process */
-               /* Specifically it sends both the soft shutdown 'S' */
-               /* and the powerdown after grace period - '@000' commands */
-               printf("UPS - currently %s - sending shutdown/powerdown\n",
-                       (tval & APC_STAT_OL) ? "on-line" : "on battery");
-
-               ser_flush_in(upsfd, IGNCHARS, nut_debug_level);
-               ser_send_pace(upsfd, UPSDELAY, "S@000");
-               break;
-
-       default:
-
-               /* @000 - shutdown after 'p' grace period             */
-               /*      - returns after 000 minutes (i.e. right away) */
-
-               /* S    - shutdown after 'p' grace period, only on battery */
-               /*        returns after 'e' charge % plus 'r' seconds      */
-
-               ser_flush_in(upsfd, IGNCHARS, nut_debug_level);
-
-               if (tval & APC_STAT_OL) {               /* on line */
-                       printf("On line, sending shutdown+return command...\n");
-                       ser_send_pace(upsfd, UPSDELAY, "@000");
-               }
-               else {
-                       printf("On battery, sending normal shutdown 
command...\n");
-                       ser_send_char(upsfd, APC_CMD_SOFTDOWN);
-               }
-       }
+       if (testvar("advorder") && strcasecmp(getval("advorder"), "no"))
+               upsdrv_shutdown_advanced(status);
+       else
+               upsdrv_shutdown_simple(status);
 }
 
 /* 940-0095B support: set DTR, lower RTS */
-- 
1.7.2.1


_______________________________________________
Nut-upsdev mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/nut-upsdev

Reply via email to