[Nut-upsdev] [PATCH] fentonups patch to make it work with some powercom ups's

Vladislav Bogdanov slava at nsys.by
Fri Jan 27 12:45:11 UTC 2006


Hi list

here is the patch to make fentonups recognize some PowerCOM's UPS's, and 
to setup terminal lines for them (at least for SMK-1500a) as powercom's 
original upsmon do. fentonups -x powercom works correctly with SMK-1500a 
(it screamed ''Communications with UPS lost - check cabling' or 'Short 
read during UPS id sequence' without this patch).

Sorry for sending as attachement, I'm not sure about right patch 
formatting in the inline post.

I'm not in list, so please send me copy if/when replying.

--
Vladislav Bogdanov
-------------- next part --------------
--- nut-2.0.2/drivers/fentonups.c.orig	2005-05-26 15:22:27.000000000 +0300
+++ nut-2.0.2/drivers/fentonups.c	2006-01-27 14:20:07.000000000 +0200
@@ -18,6 +18,9 @@
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */
 
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/termios.h>
 #include "main.h"
 #include "serial.h"
 
@@ -176,11 +179,27 @@ static char *get_id(void)
 	return NULL;
 }
 
+static void set_powercom_lines (void)
+{
+// straced from powercom's upsmon
+//ioctl(4, TIOCMSET, [TIOCM_DTR|0x4000])  = 0
+
+	int dtr_bit = TIOCM_DTR|0x4000;
+	ioctl(upsfd, TIOCMSET, &dtr_bit);
+}
+
 void upsdrv_initinfo(void)
 {
 	int	modelnum, i, ret;
 	char	temp[256], model[32], *raw;
 
+	if (testvar("powercom")) {
+	    set_powercom_lines();
+// straced from powercom's upsmon (reset?)
+	    ret = ser_send(upsfd, "%c%c%c%c%c\r", 1, 2, 2, 3, 5);
+	    ret = ser_get_line(upsfd, temp, sizeof(temp), ENDCHAR, "", 
+		SER_WAIT_SEC, SER_WAIT_USEC);
+	}
 	raw = get_id();
 
 	if (!raw)
@@ -426,6 +445,7 @@ void upsdrv_help(void)
 void upsdrv_makevartable(void)
 {
 	addvar(VAR_VALUE, "lowbattvolt", "Set low battery level, in volts");
+	addvar(VAR_FLAG, "powercom", "Set signal lines for PowerCOM UPS (method straced from PowerCOM's upsmon)");
 }
 
 void upsdrv_banner(void)
--- nut-2.0.2/drivers/fentonups.h.orig	2005-05-04 12:36:36.000000000 +0300
+++ nut-2.0.2/drivers/fentonups.h	2006-01-27 14:13:09.000000000 +0200
@@ -63,6 +63,10 @@ struct {
 
 	{ "ULT-1000", "PowerCom ULT-1000", 1.91, 0.42, 1.91, 0.42, 165, 200, 240, 275, 1 },
 
+	{ "SXL-1500A", "PowerCom SXL-1500A", 1.91, 0.42, 1.91, 0.42, 165, 200, 240, 275, 1 },
+	{ "SMK-1500A", "PowerCom SMK-1500A", 1.91, 0.42, 1.91, 0.42, 165, 200, 240, 275, 1 },
+	{ "SMK-800A", "PowerCom SMK-800A", 1.91, 0.42, 1.91, 0.42, 165, 200, 240, 275, 1 },
+
 	{ "Alpha500iC", "Alpha 500 iC", 10.7, 1.4, 13.0, 0.8, 172, 196, 252, 288, 0 },
 
 	{ NULL,    NULL,		  0, 0, 0, 0,   0,   0,   0,   0, 0 }


More information about the Nut-upsdev mailing list