windows-nt/Source/XPSP1/NT/ds/netapi/svcdlls/upssvc/apcsmart/ups2slep.cxx

59 lines
1.3 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*
*
* NOTES:
*
* REVISIONS:
* pcy13Jan92: Implement
* pcy16Feb93: Use %d for sleep time in sprintf to solve bug
* ajr09May95: Need to fix for keeping internal time in seconds.
* srt04Jun97: Added support for 15 day sleep.
*/
#define INCL_BASE
#define INCL_DOS
#define INCL_NOPM
#include "cdefine.h"
extern "C" {
#if (C_OS & C_OS2)
#include <os2.h>
#endif
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
}
#include "ups2slep.h"
#include "comctrl.h"
#include "dispatch.h"
#include "errlogr.h"
#include "utils.h"
//Constructor
PutUpsToSleepSensor :: PutUpsToSleepSensor(PDevice aParent, PCommController aCommController)
: Sensor(aParent,aCommController, PUT_UPS_TO_SLEEP, AREAD_WRITE)
{
}
INT PutUpsToSleepSensor::Set(const PCHAR aValue)
{
INT err = ErrNO_ERROR;
CHAR sleep_time[32];
long iValue;
CHAR sHuns[4];
// only ups-compatible values should get to this point, having been validated in the FE &
if ((iValue=atol(aValue)/360) <= 3599) { // convert msecs to tenths of an hour (TOHs).
sprintf(sleep_time,"%s%02d",_ltoa(iValue/100L,sHuns,36),iValue%100); // format the sleep command
err = theCommController->Set(PUT_UPS_TO_SLEEP, sleep_time);
}
else {
err= ErrINVALID_VALUE;
}
return err;
}