[Nut-upsdev] [RFC apcsmart V3 05/18] drivers/apcsmart: adjust ignored chars and handle over/~over

Michal Soltys soltys at ziu.info
Sat Mar 5 10:38:22 UTC 2011


'*' is no longer ignored - this is old APC models' "OK" reply to some of
the shutdown commands.

'?' and '=' are responsible for alerting about overload (among
supposedly other things), so we handle them now.

Signed-off-by: Michal Soltys <soltys at ziu.info>
---
 drivers/apcsmart.c |   10 ++++++++++
 drivers/apcsmart.h |   12 +++++++-----
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/drivers/apcsmart.c b/drivers/apcsmart.c
index 929372f..f0f1878 100644
--- a/drivers/apcsmart.c
+++ b/drivers/apcsmart.c
@@ -178,6 +178,16 @@ static void alert_handler(char ch)
 			ups_status |= APC_STAT_RB;
 			break;
 
+		case '?':		/* set OVER */
+			upsdebugx(4, "alert_handler: OVER");
+			ups_status |= APC_STAT_OVER;
+			break;
+
+		case '=':		/* clear OVER */
+			upsdebugx(4, "alert_handler: not OVER");
+			ups_status &= ~APC_STAT_OVER;
+			break;
+
 		default:
 			upsdebugx(4, "alert_handler got 0x%02x (unhandled)", ch);
 			break;
diff --git a/drivers/apcsmart.h b/drivers/apcsmart.h
index 95e8c14..939b6cb 100644
--- a/drivers/apcsmart.h
+++ b/drivers/apcsmart.h
@@ -28,15 +28,17 @@
 /* Basic UPS reply line structure */
 #define ENDCHAR 10		/* APC ends responses with LF */
 
-/* these two are only used during startup */
-#define IGNCHARS "\015+$|!~%?=*#&"	/* special characters to ignore */
+/* characters ignored by default */
+#define IGNCHARS "\015+$|!~%?=#&"	/* special characters to ignore */
+
+/* these one is used only during startup, due to ^Z sending certain characters such as # */
 #define MINIGNCHARS "\015+$|!"	/* minimum set of special characters to ignore */
 
 /* normal polls: characters we don't want to parse (including a few alerts) */
-#define POLL_IGNORE "\015?=*&|"
+#define POLL_IGNORE "\015&|"
 
-/* alert characters we care about - OL, OB, LB, not LB, RB */
-#define POLL_ALERT "$!%+#"
+/* alert characters we care about - OL, OB, LB, not LB, RB, OVER, not OVER */
+#define POLL_ALERT "$!%+#?="
 
 #define UPSDELAY	  50000	/* slow down multicharacter commands        */
 #define CMDLONGDELAY	1500000	/* some commands need a 1.5s gap for safety */
-- 
1.7.2.1




More information about the Nut-upsdev mailing list