Isiprocessmsg() – Echelon ISI User Manual
Page 138

ISI Programmer’s Guide
136
IsiReturnToFactoryDefaults(); // Call NEVER returns!
}
// Self-installed network--start the ISI engine
scaled_delay(31745UL);
// 800ms delay
IsiStartS(isiFlagExtended+isiFlagHeartbeat);
}
}
IsiProcessMsg()
boolean IsiProcessMsg(IsiType
Type
);
boolean IsiProcessMsgDa(void);
boolean IsiProcessMsgDas(void);
boolean IsiProcessMsgS(void);
Processes an ISI message that has been verified as an ISI message by the
IsiApproveMsg() function. The function returns FALSE if the message received
has been recognized and processed, and returns TRUE if the message is
unrecognized and not processed.
Typically, the IsiApproveMsg() and IsiProcessMsg() functions are used in a single
Boolean expression, as shown:
E
XAMPLE
when (msg_arrives) {
if (IsiApproveMsg() && IsiProcessMsgS()) {
// TODO: Process unrecognized ISI messages here
}
}
You can use the IsiProcessMsg() function to process an ISI message on a device
that supports multiple ISI types. You can use specialized versions of the
IsiProcessMsg() function to minimize the memory footprint of your application.
Devices that only support a single ISI type may use one of the following
functions:
• IsiProcessMsgS()—processes an ISI message for a device that does not
support domain acquisition.
• IsiProcessMsgDA()—processes an ISI message for a device that supports
domain acquisition, but is not a domain address server.
• IsiProcessMsgDAS()—processes an ISI message for an ISI-DAS
application that supports domain acquisition and is a domain address
server.
When selecting one of the specialized versions IsiProcessMsgS(),
IsiProcessMsgDA(), or IsiProcessMsgDAS(), you must make sure to use the same
type of specialized start function (IsiStartS(), etc) and tick function (IsiTickS(),
etc).
No forwarders are provided for these functions. All functions operate in any
state of the ISI engine, but must not be called unless IsiApproveMsg() returned
TRUE within the same critical section (when task).