Isistartdeviceacquisition() – Echelon ISI User Manual
Page 141

139
ISI Programmer’s Guide
When selecting one of the specialized versions IsiStartS(), IsiStartDA(), or
IsiStartDAS(), you must make sure to use the same type of specialized message
processor function (IsiProcessMsgS(), etc) and tick function (IsiTickS(), etc).
No forwarders are provided with the IsiStart() functions.
E
XAMPLE
The following example starts the ISI engine after confirming the device is in
self-installation mode:
network input SCPTnwrkCnfg cp cp_info(reset_required) cpNetConfig
= CFG_EXTERNAL;
eeprom SCPTnwrkCnfg oldNetConfig = CFG_NUL;
when (reset) {
SCPTnwrkCnfg
netConfig;
netConfig = oldNetConfig;
if (netConfig == CFG_NUL) {
// First application start, enable self-installation
cpNetConfig
=
CFG_LOCAL;
}
oldNetConfig = cpNetConfig;
if (cpNetConfig == CFG_LOCAL) {
if (netConfig == CFG_EXTERNAL) {
// Managed application has returned to self-installation
IsiReturnToFactoryDefaults(); // Call NEVER returns!
}
// Self-installed network--start the ISI engine:
scaled_delay(31745UL);
// 800ms delay
IsiStartS(isiFlagExtended+isiFlagHeartbeat);
}
}
IsiStartDeviceAcquisition()
void IsiStartDeviceAcquisition(void);
Starts or retriggers device acquisition mode on a domain address server. The
domain address server will respond to domain ID requests from ISI-DA devices
as long as it is in device acquisition mode. When the domain address server is in
device acquisition mode and has responded to a domain request (DIDRQ) with a
domain response (DIDRM), calling the IsiStartDeviceAcquisition() function also
confirms that the correct device has been allocated, and triggers the release of a
domain confirmation message (DIDCF).
This function has no effect on a device that is not a domain address server, or if
the ISI engine is stopped. No forwarder is provided for this function.
E
XAMPLE
The following example starts domain acquisition mode on a domain address
server when the user presses a Connect button on the server:
when (connect_button_pressed) {
IsiStartDeviceAcquisition();
}