windows-nt/Source/XPSP1/NT/ds/netapi/svcdlls/upssvc/apcsmart/upsmodl.cxx
2020-09-26 16:20:57 +08:00

53 lines
1.4 KiB
C++

/*
* poc25Jun96: Needed stdlib.h for AIX 4.x
* djs05Nov96: Added check for 2G units to stop excessive waiting
* mholly24Sep98 : increased the buffer size for UPS_NAME to 64 from 32
* the ^A command can return values up to 32 characters long
* +1 for the NULL character - set it to 64 to allow room
*/
#include "cdefine.h"
extern "C" {
#if ((C_OS & C_AIX) && (C_AIX_VERSION & C_AIX4))
#include <stdlib.h>
#endif
}
#include <malloc.h>
#include "cfgmgr.h"
#include "upsmodl.h"
#include "firmrevs.h"
UpsModelSensor :: UpsModelSensor(PDevice aParent, PCommController
aCommController, PFirmwareRevSensor aFirmwareRev)
: Sensor(aParent, aCommController, UPS_MODEL_NAME)
{
// Try to get UPS name from the UPS itself. If not supported, get UPS
// name from firmware revision
// This is not the cleanest solution around but.....
// If a 2G unit is asked to supply the ups model name, the delay
// can be as long as 10 seconds.
CHAR firmware_rev[32];
aFirmwareRev->Get(IS_THIRD_GEN, firmware_rev);
if (_strcmpi(firmware_rev, "yes")==0){
DeepGet();
}
if (!theValue || strlen(theValue) == 0) {
// Allocate enough memory for the UPS name
// This memory is released by the sensor destructor
theValue = (char*) malloc(64);
aFirmwareRev->Get(UPS_NAME,theValue);
}
}