Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*
* * REVISIONS: * ker25NOV92 Initial OS/2 Revision * pcy11Dec92: New defines for lite sensor stuff used * cad23Jun93: Fixed on/off events * cad07Oct93: Plugging Memory Leaks * cad11Nov93: Making sure all timers are cancelled on destruction * pcy08Apr94: Trim size, use static iterators, dead code removal * pcy13Apr94: Use automatic variables decrease dynamic mem allocation */
#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 "litesnsr.h"
#include "comctrl.h"
#include "dispatch.h"
#include "timerman.h"
//Constructor
LightsTestSensor :: LightsTestSensor(PDevice aParent, PCommController aCommController) : StateSensor(aParent,aCommController,LIGHTS_TEST,AREAD_WRITE), theTimerId(0) { storeState(NO_LIGHTS_TEST_IN_PROGRESS); }
LightsTestSensor::~LightsTestSensor() { if (theTimerId) { _theTimerManager->CancelTimer(theTimerId); theTimerId = 0; } }
INT LightsTestSensor::Set(const PCHAR aValue) { if( atoi(aValue) == LIGHTS_TEST ) { CHAR buffer[16] = {NULL}; _itoa(LIGHTS_TEST_IN_PROGRESS, buffer, 10); INT the_return=Sensor::Set(buffer);
//Tell the CommController that we're doing a lights test
theCommController->Set(theSensorCode, aValue); Event the_event(LIGHTS_TEST, LIGHTS_TEST_IN_PROGRESS); Update(&the_event); if (theTimerId) { _theTimerManager->CancelTimer(theTimerId); theTimerId = 0; } Event done_event(LIGHTS_TEST, NO_LIGHTS_TEST_IN_PROGRESS); theTimerId = _theTimerManager->SetTheTimer((ULONG)LIGHTS_TEST_SECONDS, &done_event, this); return the_return; } else return ErrINVALID_VALUE; }
INT LightsTestSensor::Update(PEvent anEvent) { INT the_temp_code; PCHAR the_temp_value; INT the_int_value; the_temp_code=anEvent->GetCode(); the_temp_value=anEvent->GetValue(); the_int_value=atoi(the_temp_value); if( (the_temp_code == LIGHTS_TEST) && (the_int_value == NO_LIGHTS_TEST_IN_PROGRESS)) { Set(the_temp_value); theTimerId = 0; } return UpdateObj::Update(anEvent); }
#if 0
*** Removed for size concerns. This is really a redundant feature since *** protocol generates these events
INT LightsTestSensor::Validate(INT aCode, const PCHAR aValue) { INT the_temp_value=atoi(aValue); if( (aCode == LIGHTS_TEST) && ( (the_temp_value == LIGHTS_TEST_IN_PROGRESS)||(the_temp_value == NO_LIGHTS_TEST_IN_PROGRESS))) return ErrNO_ERROR; else return ErrINVALID_VALUE; }
#endif
|