User Manual

GAMMA instabus
Release: 12/2015
Application Program Bus Interface Modules M130, M131, M132 and M135
Runtime Environment for KNX-Processors 184/11 and 184/21
Siemens AG pages 17 Technical Manual
Building Technologies
Control Products and Systems
P. O. Box 10 09 53, © Siemens AG 2015 page 9
D-93009 Regensburg Subject to change without further notice.
Each user application program must have a user application information block. This block
has always to be at 0x8000. In this block the user gives some information to the operating
system which is described in the following:
typedef struct
{
USHORT AIBVersion;
BYTE ApplFirmwareVersion;
BYTE ApplFirmwareSubVersion;
void (*AppMain) (void);
void (*AppSave) (void);
void (*AppUnload) (void);
const CObjPtr* pCObjects;
BYTE* pRAMFlags;
TIMER_TAB* pUserTimerTab;
const INTERFACE_ROOT* pUsrIntObjRoot;
ParamMgmt* pUsrParamMgmt;
USHORT WatchDogTime;
} AppInfoBlock;
The ‘AIBVersion’ is the version of the application info block. At the moment 0x0001 has to be
specified. ‘ApplFirmwareVersion’ and ‘ApplFirmwareSubVersion’ could be read from bus via
property 3/204 and 3/205. The count scheme is completely free to the user application
programmer. ‘AppMain’ is the entry point of the user application program, ‘AppSave’ the
pointer to the save routine and ‘AppUnload’ the pointer to the unload routine. ‘AppSave’ is
called on loss of power and ‘AppUnload’ is called if an unload event occurs, for example if a
download is done by ETS software. ‘CObjPtr’ is the pointer to the communication object
pointer table. ‘pRAMFlags’ is a pointer to the ram flags. ‘pUserTimerTab’ is a pointer to the
user timer table. If no user timer table is used set this value to ‘NULL’. ‘pUsrIntObjRoot’ is a
pointer to the root table of the user interface objects (properties). If no user properties are
used set this value to ‘NULL’. ‘pUsrParamMgmt’ is a pointer to the parameter management
for the user application program. If this feature is not used the value has to be ‘NULL’. The
user application program can specify a ‘WatchDogTime’. If this value is not 0x0000
‘U._TriggerWatchDog()’ must be called within the specified time. If this is not done the
operating system resets the device.