handle changed format of event report

r1289 | dcl | 2006-11-15 08:08:28 +1100 (Wed, 15 Nov 2006) | 2 lines
This commit is contained in:
Douglas Clowes
2006-11-15 08:08:28 +11:00
parent 15a9bf4838
commit 2590869f4d

View File

@@ -259,30 +259,41 @@ static void HandleReport(CounterDriver *cntrData, BUFFER* bp)
* \param bp pointer to buffer containing the line of input
*
* This function sets the state of the counter based on events reported by
* the monitor.
* the monitor. The event format is "EVENT <timestamp> <event type>"
*/
static void MonHandleInput(CounterDriver *cntrData, BUFFER* bp) {
BeamMon* self = NULL;
const char et[] = "EVENT TERMINAL";
const char eri[] = "EVENT RANGE IN";
const char ero[] = "EVENT RANGE OUT";
const char et[] = " TERMINAL";
const char eri[] = "RANGE IN";
const char ero[] = "RANGE OUT";
const char rpt[] = "READ";
self = (BeamMon *) cntrData->pData;
/* TODO handle the line */
flog('=', bp->body);
if (strncasecmp(bp->body, et, sizeof(et) - 1) == 0) {
if (self->state == HWBusy)
self->state = HWIdle;
if (strncasecmp(bp->body, "EVENT", 5) == 0) {
char* cp = bp->body + 5;
while (*cp && isspace(*cp)) // skip space
++cp;
while (*cp && !isspace(*cp)) // skip timestamp
++cp;
while (*cp && isspace(*cp)) // skip space
++cp;
if (strncasecmp(cp, et, sizeof(et) - 1) == 0) {
if (self->state == HWBusy)
self->state = HWIdle;
}
else if (strncasecmp(cp, eri, sizeof(eri) - 1) == 0) {
if (self->state == HWPause)
self->state = HWBusy;
}
else if (strncasecmp(cp, ero, sizeof(ero) - 1) == 0) {
if (self->state == HWBusy)
self->state = HWPause;
}
}
if (strncasecmp(bp->body, eri, sizeof(eri) - 1) == 0)
if (self->state == HWPause)
self->state = HWBusy;
if (strncasecmp(bp->body, ero, sizeof(ero) - 1) == 0)
if (self->state == HWBusy)
self->state = HWPause;
if (strncasecmp(bp->body, rpt, sizeof(rpt) - 1) == 0) {
HandleReport(cntrData, &self->buffer);
else if (strncasecmp(bp->body, rpt, sizeof(rpt) - 1) == 0) {
HandleReport(cntrData, &self->buffer);
}
bp->length = 0;
}