Implementing periodic services – Echelon ISI User Manual
Page 21

19
ISI Programmer’s Guide
applies to your application’s Node Object functional block, if available, or applies
to the entire device if there is no Node Object functional block. The configuration
property has two values—CFG_LOCAL and CFG_EXTERNAL. When set to
CFG_LOCAL, your application can enable self installation. When set to
CFG_EXTERNAL, your application must disable self installation. Network
management tools automatically set this value to CFG_EXTERNAL to prevent
conflicts between self-installation functions and the network management tool.
See
Implementing a SCPTnwrkCnfg CP
for more details.
To maximize compatibility with network management tools used for managed
networks, insert an 800 millisecond to one-and-a-half second delay before calling
any of the IsiStart() functions. This delay can be implemented with a call to the
delay() or scaled_delay() function, other application processing, or a combination
of application processing plus a call to the delay() or scaled_delay() function.
Without this delay, a network tool may fail to confirm a state change when
commissioning the device for the first time, or for the first time after a change to
the device’s application.
E
XAMPLE
1
The following example declares a SCPTnwrkCnfg configuration property that
applies to the device, tests its value on startup, waits for 800ms, and starts
the ISI engine without support for domain acquisition.
network input SCPTnwrkCnfg cp cp_info(reset_required,
device_specific) cpNetConfig;
device_properties {
cpNetConfig = CFG_EXTERNAL
};
when (reset) {
if (cpNetConfig == CFG_LOCAL) {
scaled_delay(31745UL);
//
800ms
delay
IsiStartS(isiFlagNone);
}
}
See Implementing a SCPTnwrkCnfg CP for more important
considerations.
Implementing Periodic Services
void IsiTick(IsiType
Type
);
void IsiTickS(void);
void IsiTickDa(void);
void IsiTickDas(void);
You must periodically call the IsiTick() function after you have started the ISI
engine as described in the previous section. You should call this function
approximately every 250ms. You can use a timer task to implement the periodic
service.