|
Lines 117-122
Link Here
|
| 117 |
{ 5.0000, 0.3268, -825.00, 0.46511, 0 }, |
117 |
{ 5.0000, 0.3268, -825.00, 0.46511, 0 }, |
| 118 |
{ 1.9216, -0.0977, 0.82857, 0.0000 }, |
118 |
{ 1.9216, -0.0977, 0.82857, 0.0000 }, |
| 119 |
}, |
119 |
}, |
|
|
120 |
{ |
| 121 |
"BNT1200AP", |
| 122 |
16, |
| 123 |
{ "no_flow_control", no_flow_control }, |
| 124 |
{ { 7U, 0U }, { 8U, 0U }, { 8U, 0U } }, |
| 125 |
{ { 2U, 0U }, 'y' }, |
| 126 |
{ 0.00020997, 0.0 }, |
| 127 |
{ 6.1343, -0.3808, 1.075, 0.1811 }, |
| 128 |
{ 5.0000, 0.3268, -825.00, 0.46511, 0 }, |
| 129 |
{ 1.9216, -0.0977, 0.82857, 0.0000 }, |
| 130 |
}, |
| 120 |
}; |
131 |
}; |
| 121 |
|
132 |
|
| 122 |
|
133 |
|
|
Lines 124-141
Link Here
|
| 124 |
* local used functions |
135 |
* local used functions |
| 125 |
*/ |
136 |
*/ |
| 126 |
|
137 |
|
| 127 |
static void nut_shutdown(void) |
138 |
static void shutdown(void) |
|
|
139 |
{ |
| 140 |
//printf ("Initiating UPS shutdown!\n"); |
| 141 |
ser_send_char (upsfd, SHUTDOWN); |
| 142 |
if (types[type].shutdown_arguments.minutesShouldBeUsed != 'n') |
| 143 |
ser_send_char (upsfd, '\x00'); |
| 144 |
ser_send_char (upsfd, '\x10'); |
| 145 |
upslogx(LOG_INFO, "Shutdown (stayoff) initiated."); |
| 146 |
exit (0); |
| 147 |
} |
| 148 |
static void shutdown_ret(void) |
| 128 |
{ |
149 |
{ |
| 129 |
printf ("Initiating UPS shutdown!\n"); |
150 |
// printf ("Initiating UPS shutdown!\n"); |
| 130 |
|
151 |
ser_send_char (upsfd, SHUTDOWN0); |
| 131 |
ser_send_char (upsfd, SHUTDOWN); |
152 |
ser_send_char (upsfd, SHUTDOWN); |
| 132 |
if (types[type].shutdown_arguments.minutesShouldBeUsed != 'n') |
153 |
if (types[type].shutdown_arguments.minutesShouldBeUsed != 'n') |
| 133 |
ser_send_char (upsfd, types[type].shutdown_arguments.delay[0]); |
154 |
ser_send_char (upsfd, '\x00'); |
| 134 |
ser_send_char (upsfd, types[type].shutdown_arguments.delay[1]); |
155 |
ser_send_char (upsfd, '\x10'); |
| 135 |
|
156 |
upslogx(LOG_INFO, "Shutdown (return) initiated."); |
| 136 |
exit (0); |
157 |
exit (0); |
| 137 |
} |
158 |
} |
| 138 |
|
159 |
|
|
|
160 |
|
| 139 |
/* registered instant commands */ |
161 |
/* registered instant commands */ |
| 140 |
static int instcmd (const char *cmdname, const char *extra) |
162 |
static int instcmd (const char *cmdname, const char *extra) |
| 141 |
{ |
163 |
{ |
|
Lines 143-148
Link Here
|
| 143 |
ser_send_char (upsfd, BATTERY_TEST); |
165 |
ser_send_char (upsfd, BATTERY_TEST); |
| 144 |
return STAT_INSTCMD_HANDLED; |
166 |
return STAT_INSTCMD_HANDLED; |
| 145 |
} |
167 |
} |
|
|
168 |
// if (types[type].name=="BNT1200AP"){ |
| 169 |
if (!strcasecmp(cmdname, "shutdown.return")) { |
| 170 |
shutdown_ret(); |
| 171 |
return STAT_INSTCMD_HANDLED; |
| 172 |
} |
| 173 |
if (!strcasecmp(cmdname, "shutdown.stayoff")) { |
| 174 |
shutdown(); |
| 175 |
return STAT_INSTCMD_HANDLED; |
| 176 |
} |
| 177 |
// } |
| 146 |
|
178 |
|
| 147 |
upslogx(LOG_NOTICE, "instcmd: unknown command [%s]", cmdname); |
179 |
upslogx(LOG_NOTICE, "instcmd: unknown command [%s]", cmdname); |
| 148 |
return STAT_INSTCMD_UNKNOWN; |
180 |
return STAT_INSTCMD_UNKNOWN; |
|
Lines 353-360
Link Here
|
| 353 |
void upsdrv_shutdown(void) |
385 |
void upsdrv_shutdown(void) |
| 354 |
{ |
386 |
{ |
| 355 |
/* power down the attached load immediately */ |
387 |
/* power down the attached load immediately */ |
| 356 |
printf("Forced UPS shutdown triggered, do it...\n"); |
388 |
// printf("Forced UPS shutdown (and wait for power)...\n"); |
| 357 |
nut_shutdown(); |
389 |
shutdown_ret(); |
| 358 |
} |
390 |
} |
| 359 |
|
391 |
|
| 360 |
/* initialize UPS */ |
392 |
/* initialize UPS */ |
|
Lines 533-538
Link Here
|
| 533 |
|
565 |
|
| 534 |
/* setup flow control */ |
566 |
/* setup flow control */ |
| 535 |
types[type].flowControl.setup_flow_control(); |
567 |
types[type].flowControl.setup_flow_control(); |
|
|
568 |
|
| 569 |
/* tested only for BNT1200AP! */ |
| 570 |
if (types[type].name=="BNT1200AP"){ |
| 571 |
if (ser_send_char(upsfd,BATTERY_TEST)!=1){ |
| 572 |
upslogx(LOG_NOTICE, "writing error"); |
| 573 |
dstate_datastale(); |
| 574 |
return; |
| 575 |
} |
| 576 |
}; |
| 536 |
} |
577 |
} |
| 537 |
|
578 |
|
| 538 |
/* display help */ |
579 |
/* display help */ |
|
Lines 562-567
Link Here
|
| 562 |
|
603 |
|
| 563 |
/* now add the instant commands */ |
604 |
/* now add the instant commands */ |
| 564 |
dstate_addcmd ("test.battery.start"); |
605 |
dstate_addcmd ("test.battery.start"); |
|
|
606 |
dstate_addcmd ("shutdown.return"); |
| 607 |
dstate_addcmd ("shutdown.stayoff"); |
| 565 |
upsh.instcmd = instcmd; |
608 |
upsh.instcmd = instcmd; |
| 566 |
} |
609 |
} |
| 567 |
|
610 |
|
|
Lines 572-578
Link Here
|
| 572 |
addvar(VAR_VALUE, "linevoltage", "Specify line voltage (110-120 or 220-240 V), because it cannot detect automagically (default: 230 V)"); |
615 |
addvar(VAR_VALUE, "linevoltage", "Specify line voltage (110-120 or 220-240 V), because it cannot detect automagically (default: 230 V)"); |
| 573 |
addvar(VAR_VALUE, "modelname", "Specify model name, because it cannot detect automagically (default: Unknown)"); |
616 |
addvar(VAR_VALUE, "modelname", "Specify model name, because it cannot detect automagically (default: Unknown)"); |
| 574 |
addvar(VAR_VALUE, "serialnumber", "Specify serial number, because it cannot detect automagically (default: Unknown)"); |
617 |
addvar(VAR_VALUE, "serialnumber", "Specify serial number, because it cannot detect automagically (default: Unknown)"); |
| 575 |
addvar(VAR_VALUE, "type", "Type of UPS like 'Trust', 'KP625AP', 'KIN2200AP', 'Egys', 'KIN525AP' or 'KIN1500AP' (default: 'Trust')"); |
618 |
addvar(VAR_VALUE, "type", "Type of UPS like 'Trust', 'KP625AP', 'KIN2200AP', 'Egys', 'KIN525AP' or 'KIN1500AP' or 'BNT1200AP' (default: 'Trust')"); |
| 576 |
addvar(VAR_VALUE, "numOfBytesFromUPS", "The number of bytes in a UPS frame"); |
619 |
addvar(VAR_VALUE, "numOfBytesFromUPS", "The number of bytes in a UPS frame"); |
| 577 |
addvar(VAR_VALUE, "voltage", "A quad to convert the raw data to human readable voltage"); |
620 |
addvar(VAR_VALUE, "voltage", "A quad to convert the raw data to human readable voltage"); |
| 578 |
addvar(VAR_VALUE, "methodOfFlowControl", "The flow control method engaged by the UPS"); |
621 |
addvar(VAR_VALUE, "methodOfFlowControl", "The flow control method engaged by the UPS"); |