<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE infoman-config SYSTEM "syntax.dtd"> -->

<!--
    Document   : config.xml
    Created on : 26. Mai 2010, 14:43
    Author     : jbader
    Description:
        Purpose of the document follows.
-->

<infoman-config>
	<group name="EFM Unit and Server" navigationType="tree">
		<group name="EFM Unit" navigationType="register">
			<property key="wwt.unitIds">
				<defaultValue>default</defaultValue>
				<type>UnitIdAliasList</type>
			</property>

			<property key="wwt.unitId.*" hidden="true" multipleAlias="true">
				<type>Long</type>
				<validation>
					<min>1</min>
				</validation>
				<isNecessary class="de.proveo.infoman.config.impl.UnitIdAliasIsNecessary"/>
			</property>

			<group name="Description">
				<property key="wwt.unitName"/>
				<property key="wwt.customerUnitName"/>
				<property key="wwt.unitData.unitUser"/>
				<property key="wwt.unitData.unitKind"/>
				<property key="wwt.unitData.unitType"/>
				<property key="wwt.unitData.unitManufacturer"/>
				<property key="wwt.unitData.unitDescription"/>
				<property key="wwt.unitData.infomanDescription"/>
				<property key="wwt.unitData.infomanSN"/>
			</group>

			<group name="Expert" navigationType="expert">
				<property key="wwt.unitId.default" hidden="true">
					<defaultValue>0</defaultValue>
					<type>Long</type>
					<validation>
						<min>0</min>
					</validation>
				</property>

				<property key="infoman.boot.analyzeMessage">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
					<description>
                                        Analyze the infoman application start and report the boot/reboot reason as a
                                        scanman message to the server
					</description>
					<roles>
						<role>expert</role>
					</roles>
				</property>
			</group>
		</group>

		<group name="EFM Server" navigationType="register">
			<property key="network.rts.server">
				<type>HttpURLwithoutURI</type>
			</property>

			<group name="Deprecated Server URL">
				<property key="wwt.url.compressed">
					<type>URL</type>
				</property>
				<property key="wwt.url.uncompressed">
					<type>URL</type>
				</property>
			</group>

		</group>

	</group>


	<group name="Infoman" navigationType="tree">
		<roles>
			<role>expert</role>
		</roles>

		<group name="Common" navigationType="register">
			<property key="infoman.timezone">
				<defaultValue>Europe/Berlin</defaultValue>
				<type>TimeZone</type>
			</property>
			<property key="infoman.locale">
				<defaultValue>en_US</defaultValue>
				<type>Locale</type>
			</property>
			<property key="infoman.keepalive.interval">
				<defaultValue>3600000</defaultValue>
				<type>Period</type>
				<description>keep alive event interval in milliseconds</description>
			</property>

			<property key="infoman.statemodel.persistent.filename">
				<defaultValue>persistentStateModels</defaultValue>
				<description>
					Filename for persistent statemodels
				</description>
			</property>

			<group name="Syslog">
				<property key="infoman.service.syslog.name">
					<defaultValue>services/syslogd</defaultValue>
				</property>
				<property key="infoman.service.syslog.depends">
					<defaultValue>init/varfs</defaultValue>
				</property>
				<property key="infoman.service.syslog.run">
					<defaultValue>/sbin/syslogd</defaultValue>
				</property>
			</group>
		</group>

		<group name="Update" navigationType="register">
			<property key="infoman.update.acceptUpdates">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
			</property>
			<property key="infoman.update.config.hashCodeType">
				<defaultValue>sha1</defaultValue>
				<validation>
					<require key="infoman.update.acceptUpdates">true</require>
				</validation>
			</property>
			<property key="infoman.update.acceptCompression">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
				<validation>
					<require key="infoman.update.acceptUpdates">true</require>
				</validation>
			</property>
			<property key="infoman.update.removeOldVersions">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
			</property>

			<property key="infoman.update.backup">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
			</property>

			<property key="infoman.update.connectionTimeout">
				<defaultValue>60000</defaultValue>
				<type>Period</type>
				<description>
					socket conection timeout for starting infoman remote update connections
				</description>
				<validation>
					<require key="infoman.update.acceptUpdates">true</require>
				</validation>
			</property>

			<property key="infoman.update.socketTimeout">
				<defaultValue>300000</defaultValue>
				<type>Period</type>
				<description>
					socket data transfer timeout for remote updates
				</description>
				<validation>
					<require key="infoman.update.acceptUpdates">true</require>
				</validation>
			</property>

			<property key="infoman.update.retryCount">
				<defaultValue>3</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
				</validation>
				<description>
					retry counter for a remote update connection
				</description>
				<validation>
					<require key="infoman.update.acceptUpdates">true</require>
				</validation>
			</property>
		</group>
                
                <group name="Datasync" navigationType="register">
			<property key="infoman.datasync">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
			</property>
                        <property key="infoman.datasync.storageDir">
				<defaultValue>/var/datasync</defaultValue>
                                <description>
					infoman datasync storage directory
				</description>
				<validation>
					<require key="infoman.datasync">true</require>
				</validation>
			</property>                       
                        
                        <property key="infoman.datasync.REMOTE_UPDATE">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
                                <description>
					infoman configuration software update datasync handler
				</description>
                                <validation>
					<require key="infoman.datasync">true</require>
				</validation>
			</property> 
                        
                        <property key="infoman.datasync.DIAG">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
                                <description>
					infoman diagnose file transfer datasync handler
				</description>
                                <validation>
					<require key="infoman.datasync">true</require>
				</validation>
			</property> 
                        
                        <property key="infoman.datasync.FILE">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
                                <description>
					infoman file transfer datasync handler
				</description>
                                <validation>
					<require key="infoman.datasync">true</require>
				</validation>
			</property>
                        
                        <property key="infoman.datasync.TELIT_MODEM_UPDATE">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
                                <description>
					infoman file transfer datasync handler
				</description>
                                <validation>
					<require key="infoman.datasync">true</require>
				</validation>
			</property>                        
                        
                        <property key="infoman.datasync.EXEC">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
                                <description>
					infoman execution datasync handler
				</description>
                                <validation>
					<require key="infoman.datasync">true</require>
				</validation>
			</property> 
                        
                        
                        <property key="infoman.datasync.connectionTimeout">
				<defaultValue>60000</defaultValue>
				<type>Period</type>
				<description>
					socket conection timeout for infoman datasync
				</description>
				<validation>
					<require key="infoman.datasync">true</require>
				</validation>
			</property>

			<property key="infoman.datasync.socketTimeout">
				<defaultValue>300000</defaultValue>
				<type>Period</type>
				<description>
					socket data transfer timeout for datasync
				</description>
				<validation>
					<require key="infoman.datasync">true</require>
				</validation>
			</property>

			<property key="infoman.datasync.retryCount">
				<defaultValue>3</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
				</validation>
				<description>
					retry counter for a datasync connection
				</description>
				<validation>
					<require key="infoman.datasync">true</require>
				</validation>
			</property>
                        
                        <property key="infoman.datasync.resumeCount">
				<defaultValue>20</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
				</validation>
				<description>
					resume count for a datasync resource download
				</description>
				<validation>
					<require key="infoman.datasync">true</require>
				</validation>
			</property>
                        
                </group>

		<group name="Time" navigationType="register">
			<property key="io.rtc.timeService">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
				<description>
							Synchronization with infoman platform dependend time service implementation (for example GPSTimeService)
							after interval sytem clock an hardware clock are synced with the time source
				</description>
			</property>

			<property key="io.rtc.batteryLowCheck">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
			</property>

			<property key="io.rtc.batteryLowCheck.timestamp">
				<defaultValue>1145101818538</defaultValue>
				<validation>
					<require key="io.rtc.batteryLowCheck">true</require>
				</validation>
			</property>

			<property key="infoman.timesync">
				<defaultValue>gps</defaultValue>
				<enum>
					<value>gps</value>
					<value>ntp</value>
				</enum>
				<validation>
					<require key="io.rtc.timeService">true</require>
				</validation>
			</property>

			<property key="infoman.timesync.type">
				<defaultValue>interval</defaultValue>
				<enum>
					<value>interval</value>
					<value>openntp</value>
				</enum>
				<description>
							only used if infoman.timesync is gps
							interval|openntp
				</description>
			</property>

			<group name="openntp">
				<property key="infoman.timesync.service.openntpd.name">
					<defaultValue>services/openntpd</defaultValue>
					<description>OpenNTPD Service</description>
					<validation>
						<require key="infoman.timesync.type">openntp</require>
					</validation>
				</property>

				<property key="infoman.timesync.service.openntpd.runExecutable">
					<defaultValue>resource:/minit/openntpd/setNtpd.sh</defaultValue>
					<validation>
						<require key="infoman.timesync.type">openntp</require>
					</validation>
				</property>
				<property key="infoman.timesync.service.openntpd.params">
					<defaultValue>-d -s</defaultValue>
					<validation>
						<require key="infoman.timesync.type">openntp</require>
					</validation>
				</property>
				<property key="infoman.timesync.service.openntpd.depends">
					<defaultValue>init/openntpd</defaultValue>
					<validation>
						<require key="infoman.timesync.type">openntp</require>
					</validation>
				</property>
				<property key="infoman.timesync.service.openntpd.respawn">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
					<validation>
						<require key="infoman.timesync.type">openntp</require>
					</validation>
				</property>

				<group name="openntp logging">
					<property key="infoman.timesync.service.openntpd.log.name">
						<defaultValue>services/openntpd/log</defaultValue>
						<description>OpenNTPD Logger Service</description>
						<validation>
							<require key="infoman.timesync.type">openntp</require>
						</validation>
					</property>
					<property key="infoman.timesync.service.openntpd.log.run">
						<defaultValue>/bin/logger</defaultValue>
						<validation>
							<require key="infoman.timesync.type">openntp</require>
						</validation>
					</property>
					<property key="infoman.timesync.service.openntpd.log.depends">
						<defaultValue>services/syslogd</defaultValue>
						<validation>
							<require key="infoman.timesync.type">openntp</require>
						</validation>
					</property>
					<property key="infoman.timesync.service.openntpd.log.respawn">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
						<validation>
							<require key="infoman.timesync.type">openntp</require>
						</validation>
					</property>
				</group>
			</group>

			<property key="infoman.timesync.interval">
				<defaultValue>3600000</defaultValue>
				<type>Period</type>
				<description>
							Timesync interval
							60 min = 1000 ms * 60 s * 60 min = 3600000 ms
				</description>
				<validation>
					<require key="infoman.timesync.type">interval</require>
				</validation>
			</property>

			<property key="infoman.timesync.ntp.server">
				<defaultValue>pool.ntp.org</defaultValue>
				<type>List[InetAddress]</type>
				<description>
							the list of configured ntp servers
							Due to a bug (INF-1236) servers with a figure at the first character are not possible!
				</description>
			</property>

			<property key="infoman.timesync.maxAdjustOffset">
				<defaultValue>1000</defaultValue>
				<type>Period</type>
				<description>
							Maximum amount of milliseconds which are adjusted in a single adjustment step.
				</description>
			</property>

			<property key="infoman.timesync.adjustInterval">
				<defaultValue>1000</defaultValue>
				<type>Period</type>
				<description>
							Amount of milliseconds between two adjustment steps
				</description>
			</property>

			<property key="infoman.timesync.maxSlowAdjustOffset">
				<defaultValue>60000</defaultValue>
				<type>Period</type>
				<description>
							Maximum amount of milliseconds which are adjusted in small steps.
				</description>
			</property>

			<property key="infoman.timesync.gpsParserTimeOffset">
				<defaultValue>571</defaultValue>
				<type>Period</type>
				<validation>
					<require key="infoman.timesync">gps</require>
				</validation>
			</property>
			<property key="infoman.timesync.gpsParserTimeOffset.sirf">
				<defaultValue>571</defaultValue>
				<type>Period</type>
				<validation>
					<require key="infoman.timesync">gps</require>
				</validation>
			</property>
			<property key="infoman.timesync.gpsParserTimeOffset.sirfJP13">
				<defaultValue>371</defaultValue>
				<type>Period</type>
				<validation>
					<require key="infoman.timesync">gps</require>
				</validation>
			</property>
			<property key="infoman.timesync.gpsParserTimeOffset.ubx">
				<defaultValue>214</defaultValue>
				<type>Period</type>
				<validation>
					<require key="infoman.timesync">gps</require>
				</validation>
			</property>
		</group>

		<group name="Watchdog" navigationType="register">
			<group name="Hardware Watchdog">
				<property key="io.watchdog">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>

				<property key="io.watchdog.interval">
					<defaultValue>30000</defaultValue>
					<type>Period</type>
					<validation>
						<require key="io.watchdog">true</require>
					</validation>
				</property>
			</group>

			<group name="Software Watchdog">
				<property key="swwd.shutdownAfterRetryTimeout">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>
				<property key="swwd.shutdownAfterRetryTimeout.offset">
					<defaultValue>60000</defaultValue>
					<type>Period</type>
					<validation>
						<require key="swwd.shutdownAfterRetryTimeout">true</require>
					</validation>
				</property>

				<property key="swwd.shutdownAfterNotSuccessfulSendTimeout">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>
				<property key="swwd.shutdownAfterNotSuccessfulSendTimeout.offset">
					<defaultValue>10800000</defaultValue>
					<type>Period</type>
					<validation>
						<require key="swwd.shutdownAfterNotSuccessfulSendTimeout">true</require>
					</validation>
				</property>

				<property key="swwd.reportPowermanagementProblems">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
					<description>
							report first powermagement problem during software watchdog tests
							consecutive problems are reported only once
					</description>
				</property>
			</group>
		</group>

		<group name="Powermanagement" navigationType="tree">
			<group name="Ethernet" navigationType="register">
				<property key="powermanagement.ethernet">
					<type>Rule</type>
				</property>
			</group>

			<group name="Standby" navigationType="register">
				<group name="Common">
					<property key="powermanagement.standby">
						<type>List[Rule]</type>
					</property>

					<property key="powermanagement.standby.wakeupSignals">
						<type>List[String]</type>
					</property>

					<property key="powermanagement.standby.blackboardItem">
						<defaultValue>powermanagementStandby</defaultValue>
						<type>BlackboardItem</type>
						<description>
							written by the standby handler
							true: the infoman is sleeping (or going to sleep)
							false: the infoman is not sleeping
						</description>
					</property>
				</group>

				<group name="RTC Wakeup">
					<property key="powermanagement.standby.wakeupRTC.mode">
						<defaultValue>none</defaultValue>
						<enum>
							<value>none</value>
							<value>time</value>
							<value>interval</value>
						</enum>
						<description>
							none = deactivate (default) / time = wakeup to the time / interval = timespan when the Infoman wakeup
						</description>
					</property>
					<property key="powermanagement.standby.wakeupRTC.time">
						<defaultValue>00:00</defaultValue>
						<validation>
								<!-- todo: require not none
								<require key="powermanagement.standby.wakeupRTC.mode">none</require>
								-->
						</validation>
					</property>
				</group>

				<group name="Expert" navigationType="expert">
					<property key="powermanagement.standby.5V">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
					</property>
					<property key="powermanagement.standby.gsm">
						<defaultValue>false</defaultValue>
						<type>Boolean</type>
					</property>
					<property key="powermanagement.standby.switchOffgsmModule">
						<defaultValue>false</defaultValue>
						<type>Boolean</type>
						<validation>
							<require key="powermanagement.standby.gsm">false</require>
						</validation>	
					</property>					
					<property key="powermanagement.standby.gsmPowerSaving">
						<defaultValue>false</defaultValue>
						<type>Boolean</type>
						<validation>
							<require key="powermanagement.standby.gsm">false</require>
							<require key="powermanagement.standby.switchOffgsmModule">false</require>
						</validation>	
					</property>										
					<property key="powermanagement.standby.io">
						<defaultValue>false</defaultValue>
						<type>Boolean</type>
					</property>

					<group name="Infoman Online Event">
						<property key="powermanagement.standby.unitId">
							<type>UnitIdAlias</type>
						</property>

						<property key="powermanagement.standby.stateModel">
							<defaultValue>2110</defaultValue>
						</property>
						<property key="powermanagement.standby.sleepingStateId">
							<defaultValue>2111</defaultValue>
						</property>
                                                
						<property key="powermanagement.standby.addPositionEnabled">
							<defaultValue>false</defaultValue>
							<type>Boolean</type>
						</property>                                               

						<property key="powermanagement.standby.eventTransmissionWaitTime">
							<defaultValue>300000</defaultValue>
							<type>Period</type>
						</property>
					</group>

					<group name="Time based wakeup">
						<property key="powermanagement.standby.wakeupRTC.communicationcheck.isEnabled">
							<defaultValue>false</defaultValue>
							<type>Boolean</type>
						</property>
						<property key="powermanagement.standby.wakeupRTC.communicationcheck.wakeupInterval">
							<defaultValue>00:10</defaultValue>
							<validation>
								<require key="powermanagement.standby.wakeupRTC.communicationcheck.isEnabled">true</require>
							</validation>
						</property>
						<property key="powermanagement.standby.wakeupRTC.communicationcheck.eventSendDuration">
							<defaultValue>300000</defaultValue>
							<type>Period</type>
							<validation>
								<require key="powermanagement.standby.wakeupRTC.communicationcheck.isEnabled">true</require>
							</validation>
						</property>
					</group>
				</group>
			</group>

			<group name="Shutdown" navigationType="register">
				<group name="Common">
					<property key="powermanagement.shutdown">
						<type>Rule</type>
					</property>
				</group>

				<group name="Expert" navigationType="expert">
					<property key="powermanagement.shutdown.unitId">
						<type>UnitIdAlias</type>
					</property>

					<property key="powermanagement.shutdown.stateModel">
						<defaultValue>2110</defaultValue>
					</property>
					<property key="powermanagement.shutdown.sleepingStateId">
						<defaultValue>2111</defaultValue>
					</property>

					<property key="powermanagement.shutdown.5V">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
					</property>
					<property key="powermanagement.shutdown.gsm">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
					</property>
					<property key="powermanagement.shutdown.vcc">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
					</property>
				</group>
			</group>

			<group name="PowerSupply" navigationType="register">
				<property key="powersupply.batteryVoltageItem">
					<type>BlackboardItem</type>
				</property>
				<property key="powersupply.voltageItem">
					<type>BlackboardItem</type>
				</property>

				<property key="powersupply.batteryVoltageItemRaw">
					<type>BlackboardItem</type>
				</property>
				<property key="powersupply.voltageItemRaw">
					<type>BlackboardItem</type>
				</property>
				
				<property key="powersupply.supplyModeItem">
					<type>BlackboardItem</type>
				</property>
				<property key="powersupply.mode.batteryItem">
					<type>BlackboardItem</type>
				</property>
				<property key="powersupply.mode.normalItem">
					<type>BlackboardItem</type>
				</property>

				<group name="Battery Charching">
					<property key="powersupply.batteryChargingItem">
						<type>BlackboardItem</type>
					</property>
					<property key="powersupply.batteryFaultItem">
						<type>BlackboardItem</type>
					</property>
					<property key="powersupply.batteryReadytoChargeItem">
						<type>BlackboardItem</type>
					</property>
					<property key="powersupply.batteryTopOfChargeItem">
						<type>BlackboardItem</type>
					</property>
				</group>

			</group>
		</group>

		<group name="Diagnostics" navigationType="tree">
			<roles>
				<role>expert</role>
			</roles>

			<group name="Common" navigationType="register">
				<group name="Process Watchdog">
					<property key="processwatchdog">
						<defaultValue>false</defaultValue>
						<type>Boolean</type>
						<description>
										enables the process watchdog. Kill all unkown or not allowed processes if processwatchdog is enabled.
										Send warnings if unkown processes are dected
						</description>
					</property>
					<property key="processwatchdog.interval">
						<defaultValue>60000</defaultValue>
						<type>Period</type>
						<validation>
							<require key="processwatchdog">true</require>
						</validation>
					</property>
				</group>

				<group name="Status Server">
					<property key="statusserver">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
					</property>
					<property key="statusserver.charsetname">
						<defaultValue>UTF-8</defaultValue>
						<type>Charset</type>
						<validation>
							<require key="statusserver">true</require>
						</validation>
					</property>
					<property key="statusserver.local">
						<defaultValue>en</defaultValue>
						<type>Language</type>
						<validation>
							<require key="statusserver">true</require>
						</validation>
					</property>
				</group>

				<group name="Notify">
					<property key="notifysocket">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
					</property>
					<property key="notifysocket.port">
						<defaultValue>8078</defaultValue>
						<type>Integer</type>
						<validation>
							<min>1</min>
							<max>65535</max>
							<require key="notifysocket">true</require>
						</validation>
					</property>
				</group>

				<group name="CPU Load Average">
					<property key="infoman.load.cpu">
						<type>BlackboardItem</type>
					</property>
					<property key="infoman.load.cpu.interval">
						<defaultValue>1000</defaultValue>
						<type>Period</type>
					</property>

					<property key="infoman.load.loadAverage.lastMinute">
						<type>BlackboardItem</type>
					</property>
					<property key="infoman.load.loadAverage.lastFiveMinutes">
						<type>BlackboardItem</type>
					</property>
					<property key="infoman.load.loadAverage.lastFifteenMinutes">
						<type>BlackboardItem</type>
					</property>
					<property key="infoman.load.loadAverage.interval">
						<type>Period</type>
					</property>
				</group>
			</group>

			<group name="Debug Events" navigationType="register">
				<property key="blackboard.debug.event">
					<type>List[DebugEvent]</type>
<!--
# [unitId Alias] [blackboard item] [edge] [description]
# edge = raise, fall or both
blackboard.debug.event.0=wwt.unitId.gpu powerSupplybattery raise
-->
				</property>
			</group>

			<group name="Control Socket" navigationType="register">
				<roles>
					<role>expert</role>
				</roles>

				<property key="controlsocket">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>
				<property key="controlsocket.port">
					<defaultValue>8079</defaultValue>
					<type>Integer</type>
					<validation>
						<min>1</min>
						<max>65535</max>
						<require key="controlsocket">true</require>
					</validation>
				</property>
				<property key="controlsocket.cmd">
					<defaultList>
						<value>DummyEvent de.proveo.infoman.impl.status.control.DummyEvent</value>
						<value>TimedDummyEvent de.proveo.infoman.impl.status.control.TimedDummyEvent</value>
						<value>ExitInfoman de.proveo.infoman.impl.status.control.ExitCommand</value>
						<value>ForceInputEvent de.proveo.infoman.impl.status.control.FireDigitalEvent</value>
						<value>SaveAndReboot de.proveo.infoman.impl.status.control.SaveEventAndReboot</value>
						<value>Module de.proveo.infoman.impl.status.control.ModuleState</value>
						<value>Blackboard de.proveo.infoman.impl.status.control.BlackboardCommand</value>
						<value>GPS de.proveo.infoman.impl.status.control.GPSRecordCommand</value>
						<value>PMMode de.proveo.infoman.impl.status.control.PMModeControlCommand</value>
						<value>Impact de.proveo.infoman.impl.status.control.ImpactSensorCommand</value>
						<value>Mifare de.proveo.infoman.impl.status.control.MifareCommand</value>
						<value>IO de.proveo.infoman.impl.status.control.IOCommand</value>
						<value>Auth de.proveo.infoman.impl.status.control.AuthenticationHandlerCommand</value>
						<value>PM de.proveo.infoman.impl.status.control.PhytecPowerManagementCommand</value>
						<value>Test de.proveo.infoman.impl.status.control.TestCommand</value>
						<value>Communication de.proveo.infoman.impl.status.control.CommunicationCommand</value>
						<value>CAN de.proveo.infoman.impl.status.control.CanCommand</value>
						<value>WPA de.proveo.infoman.impl.status.control.WpaSupplicantCommand</value>
						<value>TimeSync de.proveo.infoman.impl.status.control.TimeSync</value>
						<value>NetDatavolume de.proveo.infoman.impl.status.control.NetDatavolumeCommand</value>
						<value>EventQueue de.proveo.infoman.impl.status.control.EventQueueCommand</value>
						<value>Thread de.proveo.infoman.impl.status.control.ThreadCommand</value>
						<value>CanSendTest de.proveo.infoman.impl.status.control.CanSendTestCommand</value>
						<value>ModemTest de.proveo.infoman.impl.status.control.ModemTestCommand</value>
						<value>USBMemoryStick de.proveo.infoman.impl.io.USBMemoryStickHandler</value>
						<value>FRAMEBUFFER de.proveo.infoman.impl.status.control.FrameBufferCommand</value>
						<value>datasync de.proveo.infoman.impl.status.control.DataSyncTest</value>
						<value>SerialPortLink de.proveo.infoman.impl.status.control.SerialLinkCommand</value>
						<value>CMUX de.proveo.infoman.impl.status.control.CMUXCommand</value>						
						<value>Watchdog de.proveo.infoman.impl.status.control.WatchdogTimerTask</value>
					</defaultList>
					<type>List[String,Class:size=fill]</type>
					<validation>
						<require key="controlsocket">true</require>
					</validation>
				</property>
			</group>
		</group>
	</group>

	<group name="Network" navigationType="tree">

		<group name="Common" navigationType="register">
			<property key="network.dev">
				<defaultValue>none</defaultValue>
				<enum>
					<value>none</value>
					<value>gprs</value>
					<value>wifi</value>
					<value>wlan</value>
					<value>eth</value>
					<value>store</value>
				</enum>
			</property>

			<group name="DNS (Domain Name Service)">
				<property key="network.dns.type">
					<defaultValue>comm</defaultValue>
					<enum>
						<value>none</value>
						<value>static</value>
						<value>comm</value>
					</enum>
					<description>DNS configuration type</description>
				</property>

				<property key="network.dns">
					<type>List[IPAddress]</type>
					<description>list of DNS servers, only used if type is static</description>
					<validation>
						<require key="network.dns.type">static</require>
					</validation>
				</property>

				<property key="network.dns.hosts">
					<defaultList>
						<value>127.0.0.1 localhost</value>
						<value>10.0.0.33 IDM</value>
					</defaultList>
					<type>List[IPAddress,String]</type>
				</property>

				<group name="DNS Forwarder">
					<property key="network.dns.forwarder">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
					</property>
					<group name="DNS Forwarder" navigationType="expert">
						<property key="network.dns.forwarder.name">
							<defaultValue>net/dnsmasq</defaultValue>
						</property>
						<property key="network.dns.forwarder.run">
							<defaultValue>/sbin/pidfilehack</defaultValue>
						</property>
						<property key="network.dns.forwarder.params">
							<defaultValue>net/dnsmasq /var/run/dnsmasq.pid /sbin/dnsmasq</defaultValue>
						</property>
					</group>
				</group>

				<group name="Minit" navigationType="expert">
					<property key="network.service.name">
						<defaultValue>net</defaultValue>
					</property>

					<property key="network.lo.service.name">
						<defaultValue>net/lo</defaultValue>
					</property>
				</group>
			</group>
		</group>

		<group name="WiFi" navigationType="register">
			<group name="General Settings">
				<property key="network.wifi.addr">
					<defaultValue>dhcp</defaultValue>
					<enum>
						<value>static</value>
						<value>dhcp</value>
					</enum>
				</property>
				<property key="network.wifi.addr.ip">
					<type>IPAddress</type>
					<validation>
						<require key="network.wifi.addr">static</require>
						<value>IPAddress</value>
					</validation>
				</property>
				<property key="network.wifi.addr.netmask">
					<type>Netmask</type>
					<validation>
						<require key="network.wifi.addr">static</require>
						<value>Netmask</value>
					</validation>
				</property>
				<property key="network.wifi.addr.gw">
					<type>IPAddress</type>
					<validation>
						<require key="network.wifi.addr">static</require>
						<value>IPAddress</value>
					</validation>
				</property>
				<property key="network.wifi.addr.dns">
					<type>IPAddress</type>
					<validation>
						<require key="network.wifi.addr">static</require>
						<value>IPAddress</value>
					</validation>
				</property>

				<property key="network.wifi">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<description>additional wifi network enabled (even if network.dev=gprs)</description>
				</property>
			</group>

			<group name="WiFi Security Settings" multipleIndex="true" index="0" count="network.wifi.{0}.*">
				<property key="network.wifi.{0}.ssid" profileName="true"/>
				<property key="network.wifi.{0}.scan_ssid">
					<type>Integer</type>
					<validation>
						<min>0</min>
						<max>1</max>
					</validation>
				</property>

				<property key="network.wifi.{0}.key_mgmt">
					<enum multi="true" order="true">
						<value>NONE</value>
						<value>WPA-PSK</value>
						<value>WPA-EAP</value>
						<value>IEEE8021X</value>
						<value>WPA-PSK-SHA256</value>
						<value>WPA-EAP-SHA256</value>
					</enum>
				</property>

				<property key="network.wifi.{0}.group">
					<enum multi="true" order="true">
						<value>CCMP</value>
						<value>TKIP</value>
						<value>WEP104</value>
						<value>WEP40</value>
					</enum>
				</property>

				<property key="network.wifi.{0}.auth_alg">
					<enum multi="true" order="true">
						<value>OPEN</value>
						<value>SHARED</value>
						<value>LEAP</value>
					</enum>
				</property>

				<group name="WEP" navigationType="expert">
					<property key="network.wifi.{0}.wep_key.{1}" multipleIndex="true" index="1" count="network.wifi.{0}.wep_key.{1}">
						<type>String</type>
					</property>

					<property key="network.wifi.{0}.wep_tx_keyidx">
						<type>Integer</type>
						<validation>
							<min>0</min>
						</validation>
					</property>
				</group>

				<group name="WPA" navigationType="expert">
					<property key="network.wifi.{0}.psk">
						<type>String</type>
					</property>
				</group>

				<property key="network.wifi.{0}.proto">
					<enum multi="true" order="true">
						<value>WPA2</value>
						<value>WPA</value>
					</enum>
				</property>
				<property key="network.wifi.{0}.pairwise">
					<enum multi="true" order="true">
						<value>CCMP</value>
						<value>TKIP</value>
						<value>NONE</value>
					</enum>
				</property>
				<property key="network.wifi.{0}.eap"/>
				<property key="network.wifi.{0}.identity"/>
				<property key="network.wifi.{0}.password"/>
			</group>


			<group name="Expert" navigationType="expert">
				<property key="network.wifi.wpasupplicant.config.controlInterface">
					<defaultValue>/var/run/wpa_supplicant</defaultValue>
				</property>
				<property key="network.wifi.wpasupplicant.config.eapolVersion">
					<defaultValue>1</defaultValue>
					<type>Integer</type>
				</property>
				<property key="network.wifi.wpasupplicant.config.apScan">
					<defaultValue>2</defaultValue>
					<type>Integer</type>
				</property>
				<property key="network.wifi.wpasupplicant.config.fastReauth">
					<defaultValue>1</defaultValue>
					<type>Integer</type>
				</property>


				<property key="network.wifi.deviceName">
					<defaultValue>eth1</defaultValue>
				</property>

				<property key="network.wifi.service.name">
					<defaultValue>net/eth1</defaultValue>
				</property>

				<property key="network.wifi.service.link.name">
					<defaultValue>net/eth1/link</defaultValue>
				</property>
				<property key="network.wifi.service.link.run">
					<defaultValue>/sbin/pidfilehack</defaultValue>
				</property>
				<property key="network.wifi.service.link.params">
					<defaultValue>net/eth1/link /var/run/wpa_supplicant.pid /sbin/wpa_supplicant -B -dddd -t -Dwext -ieth1 -P/var/run/wpa_supplicant.pid -c/etc/wpa_supplicant.conf</defaultValue>
				</property>
				<property key="network.wifi.service.link.respawn">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>


				<property key="network.wifi.service.wait.name">
					<defaultValue>net/eth1/wait</defaultValue>
					<description>wait service to delay the start of the wpasupplicant</description>
				</property>
				<property key="network.wifi.service.wait.runExecutable">
					<defaultValue>resource:/minit/eth1/delay.sh</defaultValue>
				</property>
				<property key="network.wifi.service.wait.sync">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>

				<property key="network.wifi.service.dhcp.name">
					<defaultValue>net/eth1/dhcp</defaultValue>
				</property>
				<property key="network.wifi.service.dhcp.run">
					<defaultValue>/sbin/udhcpc</defaultValue>
				</property>
				<property key="network.wifi.service.dhcp.params">
					<defaultValue>-f -i {0} -s {1}</defaultValue>
					<description>
                                        {0}  = network.wifi.deviceName
                                        {1}  = network.wifi.service.dhcp.script
					</description>
				</property>
				<property key="network.wifi.service.dhcp.script">
					<defaultValue>/share/udhcpc/default.script</defaultValue>
				</property>
				<property key="network.wifi.service.dhcp.depends">
					<defaultValue>net/eth1/link</defaultValue>
				</property>
				<property key="network.wifi.service.dhcp.respawn">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>

				<property key="network.wifi.service.addr.name">
					<defaultValue>net/eth1/addr</defaultValue>
				</property>
				<property key="network.wifi.service.addr.runExecutable">
					<defaultValue>resource:/minit/eth1/setStaticIPaddress.sh</defaultValue>
				</property>
				<property key="network.wifi.service.addr.params">
					<defaultValue>{0} {1} {2} {3}</defaultValue>
					<description>
                                         {0}  = network.wifi.deviceName
                                         {1}  = network.wifi.addr.ip
                                         {2}  = network.wifi.addr.netmask
                                         {3}  = network.wifi.addr.gw (optional)
					</description>
				</property>
				<property key="network.wifi.service.addr.depends">
					<defaultValue>net/eth1/link</defaultValue>
				</property>

				<property key="network.wifi.establishTimeout">
					<defaultValue>30000</defaultValue>
					<type>Period</type>
					<description>throw a TimeoutException if a connect is not successful within the configured milliseconds</description>
				</property>

				<property key="network.wifi.ctrlRequestTimeout">
					<defaultValue>30000</defaultValue>
					<type>Period</type>
					<description>timeout for control socket requests. values less then 1 disables this feature</description>
				</property>
                                
                                <property key="network.wifi.notAssociatingTimeout">
					<defaultValue>1200000</defaultValue>
					<type>Period</type>
					<description>timeout before controllinterface is reinitalized when no wifi associating state is detected</description>
				</property>

				<property key="network.wifi.networkInRangeMonitor.interval">
					<defaultValue>-1</defaultValue>
					<type>Integer</type>
					<description>
                                        wifi inRange Monitor 2.6.24Kernel
                                        WifiInRangeMonitor Checks if Wlan Network is in Range, by given SignalLevel Threshholds
                                        MeasurmentInterval in ms, -1 = inactive
					</description>
				</property>
				<property key="network.wifi.networkInRangeMonitor.minimumSignalLevelTreshold">
					<defaultValue>0</defaultValue>
					<type>Integer</type>
				</property>
				<property key="network.wifi.networkInRangeMonitor.minimumLinkQualityTreshold">
					<defaultValue>0</defaultValue>
					<type>Integer</type>
				</property>
				<property key="network.wifi.error.authBugSleepTime">
					<defaultValue>15000</defaultValue>
					<type>Period</type>
					<description>WifiCommunicationService for 2.6.24Kernel Error Handling</description>
				</property>
				<property key="network.wifi.error.wifiMonitorInterval">
					<defaultValue>30000</defaultValue>
					<type>Period</type>
				</property>

				<property key="network.wifi.error.maxCommunicationErrorsBeforeDisconnect">
					<defaultValue>10</defaultValue>
					<type>Integer</type>
				</property>
				<property key="network.wifi.error.maxCommunicationErrorsBeforeCardEjectInsert">
					<defaultValue>60</defaultValue>
					<type>Integer</type>
				</property>
				<property key="network.wifi.error.maxCommunicationErrorsBeforeReassociate">
					<defaultValue>5</defaultValue>
					<type>Integer</type>
				</property>

				<property key="network.wifi.error.minimumSignalLevel">
					<defaultValue>0</defaultValue>
					<type>Integer</type>
					<description>
							forced reconnectes due to not sufficient signal level
							0=feature is disabled
					</description>
				</property>

				<property key="network.wifi.error.minimumLinkQuality">
					<defaultValue>0</defaultValue>
					<type>Integer</type>
					<validation>
						<min>0</min>
					</validation>
					<description>
							forced reconnectes due to not sufficient link quality
							0=feature is disabled
					</description>
				</property>

				<property key="infoman.network.gprsFallback">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
				</property>
				
				<property key="infoman.network.hotspot">
					<type>Rule</type>
				</property>

				<property key="infoman.network.gprsFallback.keepWlanConnectionActive">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<description>reconnect old wlan connection after CommunicationSwitch to GPRS, to keep SignalMonitoring possibility</description>
				</property>

				<property key="network.wifi.error.minimumNotSufficientSignalLevelMeasurements">
					<defaultValue>2</defaultValue>
					<type>Integer</type>
					<description>amount of measurement intervals before force roaming</description>
				</property>

				<property key="network.wifi.error.minimumMeasurementsBetweenForcedReassociates">
					<defaultValue>3</defaultValue>
					<type>Integer</type>
					<description>amount of measurement intervals between two forced roamings</description>
				</property>

				<property key="network.wifi.error.waitForSignalLevelTimeAfterForcedReassociate">
					<defaultValue>10000</defaultValue>
					<type>Period</type>
					<description>time to wait for Signal Level to be sufficiant again after a forced Reassociate
                                        iwconfig/ifconfig are polled (pollingdivisor 100) during that time
					</description>
				</property>

				<property key="network.wifi.error.authenticationBugWorkaround">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
					<description>enables disables auth bug workaround</description>
				</property>

				<property key="wlan.monitoring">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
				</property>
				<property key="wlan.monitoring.interval">
					<defaultValue>60000</defaultValue>
					<type>Period</type>
				</property>

				<property key="wlan.report">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<description>report wifi actions</description>
				</property>

				<property key="wlan.report.locationService">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<description>locationService, transmits AP mac adress changes, if enabled</description>
					<validation>
						<require key="wlan.report">true</require>
					</validation>
				</property>

				<property key="wlan.report.forcedReassociates">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<description>report forced reassoicates as scanman message to the server</description>
					<validation>
						<require key="wlan.report">true</require>
					</validation>
				</property>
				<property key="wlan.report.roaming">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<description>report each roaming as a scanman message to the server</description>
					<validation>
						<require key="wlan.report">true</require>
					</validation>
				</property>

				<property key="wlan.report.roaming.minimumEventsInQueue">
					<defaultValue>0</defaultValue>
					<type>Integer</type>
					<description>minimum events inside event queue during roaming report (if less events in queue, no report is generated)</description>
					<validation>
						<require key="wlan.report">true</require>
					</validation>
				</property>

				<property key="wlan.report.accesspointLookupTable">
					<validation>
						<require key="wlan.report">true</require>
					</validation>					
				</property>

				<property key="wlan.report.wifiNetworkInRangeAlias">
					<defaultValue>wifiNetworkInRange</defaultValue>
					<type>BlackboardItem</type>
					<validation>
						<require key="wlan.report">true</require>
					</validation>					
				</property>
				
				<property key="wlan.report.wifiConnectedAlias">
					<defaultValue>wifiConnected</defaultValue>
					<type>BlackboardItem</type>					
					<validation>
						<require key="wlan.report">true</require>
					</validation>					
				</property>
				
				<property key="wlan.report.driverBlocking">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
					<validation>
						<require key="wlan.report">true</require>
					</validation>
				</property>	
                          	                                
                                <property key="wlan.report.channelSwitch">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<validation>
						<require key="wlan.report">true</require>
					</validation>
				</property>
                                                                                                                               			

				<property key="wlan.communicateOnlyIfWlanIsAvailable">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<description>wlan.report has to be set to true, if set to true: only if Wifi communication is connected the EventQueue will try to send Events</description>
				</property>
                            
			</group>
		</group>
		<group name="GSM" navigationType="register">
			<group name="Common">
				<property key="network.gsm.pin">
					<type>String</type>
					<default></default>
					<validation>
						<!-- todo: only numeric, maybe via regexp -->
					</validation>
				</property>

				<property key="network.gsm.band">
					<enum>
						<value></value>
						<value>0</value>
						<value>1</value>
						<value>2</value>
						<value>3</value>
						<value>auto</value>
					</enum>
				</property>

				<property key="network.gsm.roamingAllowed">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>

				<group name="GPRS Settings">
					<editor class="de.proveo.idm.icc.editor.gprs.Editor"/>
					<validation class="de.proveo.idm.icc.editor.gprs.Validator"/>

					<!--
network.gsm.gprs.<mcc>.<mnc>.alias=[mcc] [mnc]     // alias or

network.gsm.gprs.<mcc>.<mnc>.apn=[apn]            // mandatory
network.gsm.gprs.<mcc>.<mnc>.user=[username]      // optional
network.gsm.gprs.<mcc>.<mnc>.pass=[password]      // optional
network.gsm.gprs.<mcc>.<mnc>.dns.1=[IP Address]   // optional
network.gsm.gprs.<mcc>.<mnc>.dns.2=[IP Address]   // optional
network.gsm.gprs.<mcc>.<mnc>.dns.3=[IP Address]   // optional
-->

					<property key="regexp:network\p{Punct}gsm\p{Punct}gprs\p{Punct}\d+\p{Punct}\d+\p{Punct}.*" hidden="true"/>
				</group>

				<group name="Fixed GPRS Settings">
					<property key="network.gsm.gprs.apn">
						<type>String</type>
					</property>
					<property key="network.gsm.gprs.username">
						<type>String</type>
					</property>
					<property key="network.gsm.gprs.password">
						<type>String</type>
					</property>
					<property key="network.gsm.gprs.dns.0">
						<type>IPAddress</type>
					</property>					
					<property key="network.gsm.gprs.dns.1">
						<type>IPAddress</type>
					</property>
					<property key="network.gsm.gprs.dns.2">
						<type>IPAddress</type>
					</property>
					<property key="network.gsm.gprs.dns.3">
						<type>IPAddress</type>
					</property>
				</group>
			</group>

			<group name="Expert" navigationType="expert">
				<property key="network.gsm.portName">
					<defaultValue>/dev/ttySA0</defaultValue>
					<enum>
						<value>/dev/ttySA0</value>
						<value>/dev/ttySA1</value>
						<value>/dev/ttyS1</value>
						<value>/dev/ttyS2</value>
						<value>/dev/ttyS3</value>
					</enum>
				</property>
				<property key="networkutil.simpin.set.sleeptime">
					<defaultValue>30000</defaultValue>
					<type>Period</type>
				</property>

				<property key="network.gsm.maxModemOnOffSequences">
					<defaultValue>20</defaultValue>
					<type>Integer</type>
					<description>amount of try to enable secquences before fail</description>
				</property>

				<property key="network.gsm.gprs.pap">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>
				<property key="network.gsm.gprs.chap">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>
				<property key="network.gsm.gprs.resolv">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>

				<property key="network.gsm.gprs.peer">
					<defaultValue>proveo</defaultValue>
				</property>
				<property key="network.gsm.gprs.optionsTmpl">
					<defaultValue>/ppp/options.template</defaultValue>
				</property>
				<property key="network.gsm.gprs.options">
					<defaultValue>/etc/ppp/peers/proveo</defaultValue>
				</property>

				<property key="network.gsm.gprs.chatTmpl">
					<defaultValue>/ppp/chat.template</defaultValue>
				</property>
				<property key="network.gsm.gprs.chat">
					<defaultValue>/etc/ppp/chat.gprs</defaultValue>
				</property>

				<property key="network.gsm.gprs.checkCSQTmpl">
					<defaultValue>/ppp/checkCSQ.chat</defaultValue>
				</property>
				
				<property key="network.gsm.gprs.setPINTmpl">
					<defaultValue>/ppp/setPIN.template</defaultValue>
				</property>
				
				<property key="linuxIO.chat.switchToCommandModeTemplate">
					<defaultValue>/chat/switchToCommandMode.chat</defaultValue>
				</property>
				
				<property key="network.gsm.gprs.snTmpl">
					<defaultValue>/chat/sn.chat</defaultValue>
				</property>
				
				<property key="network.gsm.getImsi">
					<defaultValue>/chat/getIMSI.chat</defaultValue>
				</property>
				
				<property key="linuxIO.chat.detachGPRSTemplate">
					<defaultValue>/chat/gprsDisconnect.chat</defaultValue>
				</property>
				
				<property key="linuxIO.gsm.configOperation">
					<defaultValue>/chat/config.operation.chat</defaultValue>
				</property>
				
				<property key="linuxIO.gsm.configPowerSavingBeforeSleep">
					<defaultValue>/chat/config.powerSaving.BeforeSleep.chat</defaultValue>
				</property>

				<property key="network.gsm.gprs.maxConnectionDuration">
					<defaultValue>82800000</defaultValue>
					<type>Period</type>
				</property>

				<property key="network.gsm.deviceName">
					<defaultValue>ppp0</defaultValue>
					<description>the GSM device name</description>
				</property>

				<property key="gprs.errorConnectionHandler.maxCommunicationErrorsBeforeDisconnect">
					<defaultValue>10</defaultValue>
					<description>disconnect the GPRS connection after given amount of communication problems</description>
				</property>
				<property key="gprs.errorConnectionHandler.maxCommunicationErrorsBeforeReset">
					<defaultValue>30</defaultValue>
					<description>disable/enable the GPRS hardware after given amount of communication problems</description>
				</property>
				<property key="gprs.errorConnectionHandler.maxConnectionErrorsBeforeShutdown">
					<defaultValue>60</defaultValue>
					<description>reboot the Infoman after given amount of communication problems</description>
				</property>

				<property key="network.gsm.gprs.debug">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
				</property>
				
				<property key="network.gsm.gprs.record">
				</property>
				
				<property key="network.gsm.gprs.log">
				</property>
				
				<property key="network.gsm.gprs.mtu">
					<type>Integer</type>
					<validation>
						<min>0</min>
						<max>1500</max>
					</validation>
				</property>

				<property key="network.gsm.gprs.mru">
					<type>Integer</type>
					<validation>
						<min>0</min>
						<max>1500</max>
					</validation>					
				</property>				
				
				<group name="CMUX">
					<property key="network.gsm.cmux">						
						<defaultValue>false</defaultValue>
						<type>Boolean</type>
					</property>
					
					<property key="network.gsm.cmux.portName">						
						<defaultValue>/dev/ttyMUX0</defaultValue>
						<enum>
							<value>/dev/ttyMUX0</value>
							<value>/dev/ttyMUX1</value>
							<value>/dev/ttyMUX2</value>
							<value>/dev/ttyMUX3</value>
						</enum>
						<validation>
							<require key="network.gsm.cmux">true</require>
						</validation>						
					</property>					
					
					<property key="network.gsm.cmux.service.name">
						<defaultValue>services/cmux</defaultValue>
					</property>
					<property key="network.gsm.cmux.service.run">
						<defaultValue>/sbin/telit-cmux</defaultValue>
					</property>
					<property key="network.gsm.cmux.service.params">
						<defaultValue>--user=nobody</defaultValue>
					</property>
					<property key="network.gsm.cmux.service.respawn">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
					</property>
				</group>	
				
				<property key="network.gsm.debug">						
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<validation>
						<require key="network.gsm.cmux">true</require>
					</validation>											
				</property>
				
				<property key="network.gsm.debug.sleepTime">						
					<defaultValue>30000</defaultValue>
					<type>Period</type>
					<validation>
						<require key="network.gsm.cmux">true</require>
					</validation>											
				</property>				
				
				<property key="network.gsm.debug.type">						
					<defaultValue>serial</defaultValue>
					<enum>
						<value>serial</value>
						<value>tcp</value>
					</enum>					
					<validation>
						<require key="network.gsm.debug">true</require>
					</validation>											
				</property>
				
				<property key="network.gsm.debug.tcp.host">						
					<defaultValue>10.0.0.33</defaultValue>					
					<validation>
						<require key="network.gsm.debug.type">tcp</require>
					</validation>											
				</property>
				
				<property key="network.gsm.debug.tcp.port">						
					<defaultValue>1004</defaultValue>					
					<validation>
						<require key="network.gsm.debug.type">tcp</require>
					</validation>											
				</property>
				
				<property key="network.gsm.monitoring">						
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<validation>
						<require key="network.gsm.cmux">true</require>
					</validation>											
				</property>

				<property key="network.gsm.debug.report">						
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>
			</group>
		</group>
		<group name="Ethernet" navigationType="register">
			<property key="network.eth.addr">
				<defaultValue>static</defaultValue>
				<enum>
					<value>static</value>
					<value>dhcp</value>
				</enum>
			</property>
			<property key="network.eth.addr.ip">
				<defaultValue>10.0.0.30</defaultValue>
				<type>IPAddress</type>
				<validation>
					<require key="network.eth.addr">static</require>
				</validation>
			</property>
			<property key="network.eth.addr.netmask">
				<defaultValue>255.255.255.0</defaultValue>
				<type>Netmask</type>
				<validation>
					<require key="network.eth.addr">static</require>
				</validation>
			</property>
			<property key="network.eth.addr.gw">
				<defaultValue>10.0.0.1</defaultValue>
				<type>IPAddress</type>
				<validation>
					<require key="network.eth.addr">static</require>
				</validation>
			</property>
			<property key="network.eth.addr.dns">
				<type>List[IPAddress]</type>
				<validation>
					<require key="network.eth.addr">static</require>
				</validation>
			</property>

			<group name="Expert" navigationType="expert">
				<property key="network.eth.deviceName">
					<defaultValue>eth0</defaultValue>
				</property>
				<property key="network.eth.service.name">
					<defaultValue>net/eth0</defaultValue>
				</property>
				<property key="network.eth.service.link.name">
					<defaultValue>net/eth0/link</defaultValue>
				</property>

				<property key="network.eth.service.link.run">
					<defaultValue>/sbin/ip</defaultValue>
				</property>
				<property key="network.eth.service.link.params">
					<defaultValue>link set eth0 up</defaultValue>
				</property>
				<property key="network.eth.service.link.sync">
					<defaultValue>true</defaultValue>
				</property>

				<property key="network.eth.service.dhcp.name">
					<defaultValue>net/eth0/dhcp</defaultValue>
				</property>
				<property key="network.eth.service.dhcp.run">
					<defaultValue>/sbin/udhcpc</defaultValue>
				</property>
				<property key="network.eth.service.dhcp.params">
					<defaultValue>-f -i {0} -s {1}</defaultValue>
					<description>
                                # {0}  = network.eth.deviceName
                                # {1}  = network.eth.service.dhcp.script
					</description>
				</property>
				<property key="network.eth.service.dhcp.script">
					<defaultValue>/share/udhcpc/default.script</defaultValue>
				</property>
				<property key="network.eth.service.dhcp.depends">
					<defaultValue>net/eth0/link</defaultValue>
				</property>
				<property key="network.eth.service.dhcp.respawn">
					<defaultValue>true</defaultValue>
				</property>

				<property key="network.eth.service.addr.name">
					<defaultValue>net/eth0/addr</defaultValue>
				</property>
				<property key="network.eth.service.addr.runExecutable">
					<defaultValue>resource:/minit/eth0/setStaticIPaddress.sh</defaultValue>
				</property>
				<property key="network.eth.service.addr.params">
					<defaultValue>{0} add {1} netmask {2} {3}</defaultValue>
					<description>
                                # {0}  = network.eth.deviceName
                                # {1}  = network.eth.addr.ip
                                # {2}  = network.eth.addr.netmask
                                # {3}  = network.eth.addr.gw
					</description>
				</property>
				<property key="network.eth.service.addr.depends">
					<defaultValue>net/eth0/link</defaultValue>
				</property>
				<property key="network.eth.service.addr.sync">
					<defaultValue>true</defaultValue>
				</property>
			</group>
		</group>

		<group name="Routing" navigationType="register">
			<group name="Routing">
				<property key="network.routing">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>

				<group name="Routing Expert" navigationType="expert">
					<property key="network.routing.service.name">
						<defaultValue>net/routing</defaultValue>
						<validation>
							<require key="network.routing">true</require>
						</validation>
					</property>

					<property key="network.routing.template">
						<defaultValue>/de/proveo/infoman/io/linux/comm/route/masquerading.template</defaultValue>
						<description>
                                    {0} outgoing device
                                    {1} masqed network
						</description>
						<validation>
							<require key="network.routing">true</require>
						</validation>
					</property>

					<property key="network.routing.flush">
						<defaultValue>iptables -t nat -F</defaultValue>
						<description>remove all enable masquerading rules</description>
						<validation>
							<require key="network.routing">true</require>
						</validation>
					</property>

					<property key="network.routing.outgoingDevices.default.0">
						<defaultValue>ppp0</defaultValue>
						<description>can be overwritten by network.routing.outgoingDevices</description>
						<validation>
							<require key="network.routing">true</require>
						</validation>
					</property>
					<property key="network.routing.outgoingDevices.default.1">
						<defaultValue>eth1</defaultValue>
						<validation>
							<require key="network.routing">true</require>
						</validation>
					</property>
					<property key="network.routing.masqNetworks.default.0">
						<defaultValue>eth0</defaultValue>
						<description>can be overwritten by network.routing.masqNetworks</description>
						<validation>
							<require key="network.routing">true</require>
						</validation>
					</property>

				</group>
			</group>

			<group name="DHCP Server">
				<property key="network.dhcp-server">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
				</property>

				<property key="network.dhcp-server.conf.start">
					<defaultValue>10.0.0.40</defaultValue>
					<type>IPAddress</type>
					<validation>
						<require key="network.dhcp-server">true</require>
					</validation>
				</property>
				<property key="network.dhcp-server.conf.end">
					<defaultValue>10.0.0.254</defaultValue>
					<type>IPAddress</type>
					<validation>
						<require key="network.dhcp-server">true</require>
					</validation>
				</property>
				<property key="network.dhcp-server.conf.option.subnet">
					<defaultValue>255.255.255.0</defaultValue>
					<type>Netmask</type>
					<validation>
						<require key="network.dhcp-server">true</require>
					</validation>
				</property>
				<property key="network.dhcp-server.conf.option.router">
					<defaultValue>10.0.0.30</defaultValue>
					<type>IPAddress</type>
					<validation>
						<require key="network.dhcp-server">true</require>
					</validation>
				</property>
				<property key="network.dhcp-server.conf.option.dns">
					<defaultValue>10.0.0.30</defaultValue>
					<type>IPAddress</type>
					<validation>
						<require key="network.dhcp-server">true</require>
					</validation>
				</property>


				<group name="DHCP Server Expert" navigationType="expert">
					<property key="network.dhcp-server.conf.interface">
						<defaultValue>eth0</defaultValue>
						<validation>
							<require key="network.dhcp-server">true</require>
						</validation>
					</property>

					<property key="network.dhcp-server.service.name">
						<defaultValue>services/udhcpd</defaultValue>
						<validation>
							<require key="network.dhcp-server">true</require>
						</validation>
					</property>
					<property key="network.dhcp-server.service.run">
						<defaultValue>/sbin/udhcpd</defaultValue>
						<validation>
							<require key="network.dhcp-server">true</require>
						</validation>
					</property>
					<property key="network.dhcp-server.service.params">
						<defaultValue>-f -S /etc/udhcpd.conf</defaultValue>
						<validation>
							<require key="network.dhcp-server">true</require>
						</validation>
					</property>
					<property key="network.dhcp-server.service.respawn">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
						<validation>
							<require key="network.dhcp-server">true</require>
						</validation>
					</property>
					<property key="network.dhcp-server.service.depends">
						<defaultValue>init/varfs</defaultValue>
						<validation>
							<require key="network.dhcp-server">true</require>
						</validation>																	
					</property>
				</group>
			</group>
		</group>

		<group name="VPN" navigationType="register">
			<property key="io.vpn.disconnectAfter">
				<defaultValue>10800000</defaultValue>
				<type>Period</type>
			</property>

			<property key="io.vpn.cmd">
				<defaultValue>msvc</defaultValue>
			</property>
			<property key="io.vpn.cmd.start.param0">
				<defaultValue>-o</defaultValue>
			</property>
			<property key="io.vpn.cmd.start.param1">
				<defaultValue>services/pluto</defaultValue>
			</property>
			<property key="io.vpn.cmd.stop.param0">
				<defaultValue>-d</defaultValue>
			</property>
			<property key="io.vpn.cmd.stop.param1">
				<defaultValue>services/pluto</defaultValue>
			</property>


			<property key="network.ipsec.ping.connect">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
				<description>Ping during establishing an IPsec connection is enabled</description>
			</property>

			<property key="network.ipsec.ping.connect.host">
				<defaultValue>213.239.214.1</defaultValue>
				<type>IPAddress</type>
				<description>The "rightnexthop" of vpn.proveo.de to ping</description>
				<validation>
					<require key="network.ipsec.ping.connect">true</require>
				</validation>
			</property>

			<property key="network.ipsec.ping.connect.count">
				<defaultValue>1</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
					<require key="network.ipsec.ping.connect">true</require>
				</validation>
				<description>count of pings to send</description>
			</property>

			<property key="network.ipsec.ping.connect.interval">
				<defaultValue>5000</defaultValue>
				<type>Period</type>
				<description>interval in milliseconds between each ping cycle</description>
				<validation>
					<require key="network.ipsec.ping.connect">true</require>
				</validation>
			</property>

			<property key="network.ipsec.ping.connect.cycle">
				<defaultValue>16</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
					<require key="network.ipsec.ping.connect">true</require>
				</validation>
				<description>Repeat the ping, given in count, cycle times. Wait interval between each cycle</description>
			</property>

			<property key="network.ipsec.ping.continuous">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
				<description>Ping during an established IPsec connection to keep the connection up</description>
			</property>

			<property key="network.ipsec.ping.continuous.host">
				<defaultValue>213.239.214.1</defaultValue>
				<type>IPAddress</type>
				<description>The "rightnexthop" of vpn.proveo.de to ping</description>
				<validation>
					<require key="network.ipsec.ping.continuous">true</require>
				</validation>
			</property>

			<property key="network.ipsec.ping.continuous.count">
				<defaultValue>3</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
				</validation>
				<description>count of pings to send</description>
				<validation>
					<require key="network.ipsec.ping.continuous">true</require>
				</validation>
			</property>

			<property key="network.ipsec.ping.continuous.interval">
				<defaultValue>600000</defaultValue>
				<type>Period</type>
				<description>interval in milliseconds between each ping cycle</description>
				<validation>
					<require key="network.ipsec.ping.continuous">true</require>
				</validation>																									
			</property>
		</group>

		<group name="Firewall" navigationType="register">
			<group name="Custom Rules">
				<property key="firewall.input">
					<type>List[String]</type>
				</property>
				<property key="firewall.forward">
					<type>List[String]</type>
				</property>
				<property key="firewall.output">
					<type>List[String]</type>
				</property>
			</group>

			<group name="Default" navigationType="expert">
				<property key="firewall.default.input.defaultPolicy">
					<defaultValue>DROP</defaultValue>
					<enum>
						<value>DROP</value>
						<value>ACCEPT</value>
						<value>REJECT</value>
					</enum>
				</property>
				<property key="firewall.default.forward.defaultPolicy">
					<defaultValue>ACCEPT</defaultValue>
					<enum>
						<value>DROP</value>
						<value>ACCEPT</value>
						<value>REJECT</value>
					</enum>
				</property>
				<property key="firewall.default.output.defaultPolicy">
					<defaultValue>ACCEPT</defaultValue>
					<enum>
						<value>DROP</value>
						<value>ACCEPT</value>
						<value>REJECT</value>
					</enum>
				</property>

				<property key="firewall.default.input">
					<defaultList>
                                        <!-- allow all tcp answers -->
						<value>tcp-anwsers</value>
                                        <!-- no traffic blocking over ethernet -->
						<value>interface=eth0</value>
                                        <!-- ssh reachable over each interface -->
						<value>protocol=tcp destPort=22</value>
                                        <!-- DNS Server: reachable over also over wifi interface -->
						<value>protocol=udp destPort=53 interface=eth1</value>
                                        <!-- DNS answers (over all interfaces) -->
						<value>sourcePort=53 protocol=udp</value>
                                        <!-- DHCP also open on wifi interface -->
						<value>protocol=udp destPort=67 interface=eth1</value>
                                        <!-- status page available over wifi -->
						<value>protocol=tcp destPort=80 interface=eth1</value>
						<value>protocol=tcp destPort=80 interface=wifi0</value>
                                        <!-- allow icmp over each interface -->
						<value>protocol=icmp</value>
                                        <!-- allow local traffic (necessary for dropbear) -->
						<value>sourceIp=127.0.0.1 destIp=127.0.0.1</value>
                                        <!-- RTS UDP -->
						<value>sourcePort=6789 protocol=udp</value>
                                        <!-- NTP -->
						<value>sourcePort=123 protocol=udp</value>
                                        <!-- IPsec -->
						<value>protocol=esp</value>
						<value>sourcePort=4500 protocol=udp</value>
						<value>sourcePort=500 protocol=udp</value>
                                        <!-- OpenVPN -->
						<value>sourcePort=3049 protocol=udp</value>
                                        <!-- not used rule -->
					<!-- <value>log addLast</value> -->
					</defaultList>
					<type>List[String:size=medium]</type>
				</property>

				<property key="firewall.alias.tcp-anwsers">
					<defaultValue>-A INPUT -p tcp ! --syn -j ACCEPT</defaultValue>
				</property>

				<property key="firewall.iptables.prefix-commands">
					<defaultList>
						<value>#!/bin/sh</value>
						<value>iptables -F</value>
					</defaultList>
					<type>List[String]</type>
					<description>a list of command that are added at the beginning of the firewall script</description>
				</property>

				<property key="firewall.iptables.suffix-commands">
					<type>List[String]</type>
					<description>a list of command that are added at the beginning of the firewall script</description>
				</property>

				<property key="firewall.iptables.defaultCommand">
					<defaultValue>iptables</defaultValue>
				</property>
				<property key="firewall.iptables.defaultRule">
					<defaultValue>iptables -P {0} {1}</defaultValue>
				</property>
				<property key="firewall.iptables.parameters.rule">
					<defaultValue>iptables -A {0} {1}</defaultValue>
				</property>
				<property key="firewall.iptables.parameters.sourceIp">
					<defaultValue>-s {0}</defaultValue>
				</property>
				<property key="firewall.iptables.parameters.destIp">
					<defaultValue>-d {0}</defaultValue>
				</property>
				<property key="firewall.iptables.parameters.sourcePort">
					<defaultValue>--sport {0,number,00}</defaultValue>
				</property>
				<property key="firewall.iptables.parameters.destPort">
					<defaultValue>--dport {0,number,00}</defaultValue>
				</property>
				<property key="firewall.iptables.parameters.protocol">
					<defaultValue>-p {0}</defaultValue>
				</property>
				<property key="firewall.iptables.parameters.interface">
					<defaultValue>-i {0}</defaultValue>
				</property>
				<property key="firewall.iptables.parameters.policy">
					<defaultValue>-j {0}</defaultValue>
				</property>
			</group>
		</group>


		<group name="Quota" navigationType="register">
			<property key="trafficquota">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
			</property>
			<property key="trafficquota.device">
				<defautlValue>eth0</defautlValue>
				<enum>
					<value>eth0</value>
					<value>gprs</value>
					<value>wlan</value>
				</enum>
				<validation>
					<require key="trafficquota">true</require>
				</validation>
			</property>

			<group name="Ethernet">
				<property key="trafficQuota.device.eth0.quota">
					<type>Integer</type>
					<validation>
						<min>0</min>
						<require key="trafficquota">true</require>
					</validation>
				</property>
				<property key="trafficQuota.device.eth0.quotaPeriod">
					<enum>
						<value>daily</value>
						<value>weekly</value>
						<value>monthly</value>
					</enum>
					<validation>
						<require key="trafficquota">true</require>
					</validation>
				</property>
				<property key="trafficQuota.device.eth0.action">
					<type>List[String]</type>
					<description>
						EventQueueStop, notification, scanmanmesage
					</description>
					<validation>
						<require key="trafficquota">true</require>
					</validation>
				</property>
			</group>	
			<group name="Wifi">
				<property key="trafficQuota.device.wlan.quota">
					<type>Integer</type>
					<validation>
						<min>0</min>
						<require key="trafficquota">true</require>
					</validation>
				</property>
				<property key="trafficQuota.device.wlan.quotaPeriod">
					<enum>
						<value>daily</value>
						<value>weekly</value>
						<value>monthly</value>
					</enum>
					<validation>
						<require key="trafficquota">true</require>
					</validation>
				</property>
				<property key="trafficQuota.device.wlan.action">
					<type>List[String]</type>
					<description>
						EventQueueStop, notification, scanmanmesage
					</description>
					<validation>
						<require key="trafficquota">true</require>
					</validation>
				</property>
			</group>	
			<group name="GPRS">
				<property key="trafficQuota.device.gprs.quota">
					<type>Integer</type>
					<validation>
						<min>0</min>
						<require key="trafficquota">true</require>
					</validation>
				</property>
				<property key="trafficQuota.device.gprs.quotaPeriod">
					<enum>
						<value>daily</value>
						<value>weekly</value>
						<value>monthly</value>
					</enum>
					<validation>
						<require key="trafficquota">true</require>
					</validation>
				</property>
				<property key="trafficQuota.device.gprs.action">
					<type>List[String]</type>
					<description>
						EventQueueStop, notification, scanmanmesage
					</description>
					<validation>
						<require key="trafficquota">true</require>
					</validation>
				</property>
			</group>	
			

			<group name="Expert" navigationType="expert">
				<property key="network.healthreport.measurerate">
					<defaultValue>3600000</defaultValue>
					<type>Period</type>
					<validation>
						<require key="trafficquota">true</require>
					</validation>
				</property>
				<property key="network.healthreport.prefix">
					<defaultValue>healthreport</defaultValue>
					<validation>
						<require key="trafficquota">true</require>
					</validation>
				</property>
			</group>
		</group>
	</group>

	<group name="Events" navigationType="tree">
		<group name="Common" navigationType="register">

			<property key="network.event">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
				<description>
							enable the EFM event communication, if false, the Infoman doesn't send
							any EFM event.
				</description>
			</property>

			<property key="network.event.retryInterval">
				<defaultValue>0</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
				</validation>
				<description>
                           Retry interval for event transmission after unsuccessful transmissions
				</description>
			</property>
			<property key="network.event.retryInterval">
				<defaultList>
					<value>2 0</value>
					<value>3 30000</value>
				</defaultList>
				<type>List[Integer, Period]</type>
			</property>
			
			<property key="network.event.useDNSCache">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
			</property>
			
			<property key="network.event.dnsCache.ttl">
				<defaultValue>86400000</defaultValue>
				<type>Period</type>
			</property>

			<property key="network.event.maxEventsPerTransmission">
				<defaultValue>1</defaultValue>
				<type>Integer</type>
				<validation>
					<min>1</min>
				</validation>
				<description>
                        maximum Events per Event transmission
				</description>
			</property>

			<property key="network.event.maxStoredEvents">
				<defaultValue>5000</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
				</validation>
				<description>
                           Maximum amaount of sotred event
				</description>
			</property>


			<property key="network.event.reportError">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
			</property>

			<property key="network.event.reportEachError">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<validation>
					<require key="network.event.reportError">true</require>
				</validation>
			</property>

			<property key="network.event.reportErrorThreshold">
				<defaultValue>0</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
					<require key="network.event.reportError">true</require>
				</validation>
			</property>
			
			<property key="network.event.reportSuccesfulRetries">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<description>Report successful event retries as a infoman message</description>
			</property>
			<property key="network.event.reportSuccesfulRetries.threshold">
				<defaultValue>2</defaultValue>
				<type>Integer</type>
				<validation>
					<require key="network.event.reportSuccesfulRetries">true</require>
					<min>0</min>
				</validation>				
			</property>						

			<property key="network.event.reportError.includedDebugInfo">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
				<description>
                         Scanmanmessage of type 8 (end of communication problem) with included informationen about duration, eventQueueSize and retryCounter
				</description>
			</property>

			<property key="network.event.reportError.separatedDebugInfo">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<description>
                        Scanmanmessage of type 5 (debug) at the end of a communication problem with informationen about duration, eventQueueSize and retryCounter
				</description>
			</property>

			<property key="network.event.transmissionDuration">
				<defaultValue>healthreport.eventTransmissionDuration</defaultValue>
				<type>BlackboardItem</type>				
			</property>

			<property key="network.comm.waitForCommunication">
				<defaultValue>60000</defaultValue>
				<type>Period</type>
				<description>
                       timeout for waiting for an working communication link
				</description>
			</property>

			<property key="network.comm.retryTimeoutIfOk">
				<defaultValue>300000</defaultValue>
				<type>Period</type>
				<description>
                       retry timeout for channel checking if communication is ok (check the channels without any motiviation every 5 minutes)
				</description>
			</property>

			<property key="network.comm.retryTimeoutIfProblem">
				<defaultValue>30000</defaultValue>
				<type>Period</type>
				<description>
                        retry timeout for channel checking if communication is broken
				</description>
			</property>


		</group>
		<group name="TCP" navigationType="register">
			<property key="network.event.protocol.tcp">
				<enum>
					<value>http</value>
					<value>https</value>
				</enum>
				<defaultValue>http</defaultValue>
				<description>
							the TCP event protocol
				</description>
			</property>

			<property key="network.event.protocol.http.destinationPort">
				<defaultValue>8080</defaultValue>
				<type>Integer</type>
				<validation>
					<min>1</min>
					<min>65535</min>
				</validation>
				<description>
						the default port to use for http communications
				</description>
			</property>

			<property key="network.event.protocol.https.destinationPort">
				<defaultValue>-1</defaultValue>
				<type>Integer</type>
				<validation>
					<min>-1</min>
					<min>65535</min>
				</validation>
				<description>
						the default port to use for https communications (-1 use VM default)
				</description>
			</property>

			<property key="network.event.connectionTimeout">
				<defaultValue>11000</defaultValue>
				<type>Period</type>
				<description>
                           Timeout für Verbindungsaufbau zum Server
				</description>
			</property>

			<property key="network.event.connectionTimeout">
				<type>List[Integer:unique,Period]</type>
				<description>
					Timeout für Verbindungsaufbau zum Server pro Verbindungsversuch
				</description>
			</property>

			<property key="network.event.socketTimeout">
				<defaultValue>10000</defaultValue>
				<type>Period</type>
				<description>
                            Timeout für Datenübertragung
				</description>
			</property>

			<property key="network.event.socketTimeout">
				<type>List[Integer:unique,Period]</type>
				<description>
					Timeout für Datenübertragung pro Verbindungsversuch
				</description>
			</property>

			<property key="network.event.protocol.ssl.pureTLS">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
				<description>
                           PureTLS https protocol implementation enabled per default
				</description>
			</property>

			<property key="network.event.http.keepAlive">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<description>
                           reuse of TCP connection for more then one HTTP Request
				</description>
			</property>

			<property key="network.event.http.staleChecking">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<description>
                        stale connection checking
				</description>
			</property>

			<group name="Expert" navigationType="expert">
				<property key="network.event.protocol.http.uri.compressed">
					<defaultValue>/datain/c</defaultValue>
					<type>URI</type>
				</property>
				<property key="network.event.protocol.http.uri.uncompressed">
					<defaultValue>/datain/e</defaultValue>
					<type>URI</type>
				</property>
				<property key="network.event.protocol.http.uri.multi">
					<defaultValue>/datain/m</defaultValue>
					<type>URI</type>
				</property>
				<property key="network.event.protocol.http.uri.acl">
					<defaultValue>/datain/acl</defaultValue>
					<type>URI</type>
				</property>
				<property key="network.event.protocol.http.uri.update">
					<defaultValue>/datain/u</defaultValue>
					<type>URI</type>
				</property>
				<property key="network.event.protocol.http.uri.geofencing">
					<defaultValue>/datain/geof</defaultValue>
					<type>URI</type>
				</property>
				<property key="network.event.protocol.http.uri.datasync">
					<defaultValue>/datasync/info/task</defaultValue>
					<type>URI</type>
				</property>                
			</group>
		</group>
		<group name="UDP" navigationType="register">

			<property key="network.event.protocol.udp">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<description>
                            udp protcol is disabled by default
				</description>
			</property>

			<property key="network.event.protocol.udp.fallbackTCP">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
				<description>
                           fallback to HTTP(TCP) events
				</description>
				<validation>
					<require key="network.event.protocol.udp">true</require>
				</validation>
			</property>

			<property key="network.event.protocol.udp.fallbackTCP.retry">
				<defaultValue>3</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
					<require key="network.event.protocol.udp">true</require>
				</validation>
				<description>
                         fallback if 3 UDP retries reached (amount of already transmited UDP Packets = this * ..udp.retry)
				</description>
			</property>

			<property key="network.event.protocol.udp.destinationPort">
				<defaultValue>6789</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
					<max>65535</max>
					<require key="network.event.protocol.udp">true</require>
				</validation>
				<description>
                         destination (Server) UDP port
				</description>
			</property>

			<property key="network.event.protocol.udp.sourcePort">
				<defaultValue>-1</defaultValue>
				<type>Integer</type>
				<validation>
					<min>-1</min>
					<max>65535</max>
					<require key="network.event.protocol.udp">true</require>
				</validation>
				<description>
                        source (Infoman) UDP port
				</description>
			</property>

			<property key="network.event.protocol.udp.vj.min">
				<defaultValue>2000</defaultValue>
				<type>Period</type>
				<description>
                        minmum UDP ACK timeout
				</description>
				<validation>
					<require key="network.event.protocol.udp">true</require>
				</validation>
			</property>

			<property key="network.event.protocol.udp.vj.max">
				<defaultValue>16000</defaultValue>
				<type>Period</type>
				<description>
                        maximum UDP ACK timeout
				</description>
				<validation>
					<require key="network.event.protocol.udp">true</require>
				</validation>
			</property>

			<property key="network.event.protocol.udp.retry">
				<defaultValue>3</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
					<require key="network.event.protocol.udp">true</require>
				</validation>
				<description>
                        UDP packet resend before go back Event Controller
				</description>
			</property>

			<property key="network.event.protocol.udp.mtu">
				<defaultValue>900</defaultValue>
				<type>Integer</type>
				<validation>
					<min>500</min>
					<max>1500</max>
					<require key="network.event.protocol.udp">true</require>
				</validation>
				<description>
                         maximum UDP packet size, if packet is more then configured size, event will fail, -1 means no limit
				</description>
			</property>

			<property key="network.event.protocol.udp.receiveBufferLength">
				<defaultValue>1500</defaultValue>
				<type>Integer</type>
				<validation>
					<min>500</min>
					<max>4096</max>
					<require key="network.event.protocol.udp">true</require>
				</validation>
				<description>
                          receive UDP buffer size
				</description>
			</property>
		</group>

	</group>



	<group name="Moving" navigationType="tree">
		<roles>
			<role>expert</role>
		</roles>

		<property key="infoman.geo.ismoving">
			<type>BlackboardItem</type>
		</property>

		<property key="infoman.geo.stopRuleDelay">
			<defaultValue>10000</defaultValue>
			<type>Period</type>
		</property>

		<property key="infoman.geo.stopRuleSpeedTriggerIndex">
			<defaultValue>0</defaultValue>
			<type>Integer</type>
		</property>
                
		<group name="Speed Trigger Mapping to Blackboarditems">
			<property key="infoman.geo.speedTrigger">
				<type>List[Integer:size=large,BlackboardItem]</type>
			</property>
		</group>
                
		<group name="GPS Moving Algorithm"  navigationType="tree">
			<property key="gps.distanceTrigger">
				<defaultList>
					<value>5.4 50.0</value>
					<value>21.6 100.0</value>
					<value>43.2 1000.0</value>
					<value>43.3 10000.0</value>
				</defaultList>
				<type>List[Float:size=medium;unique,Float]</type>
			</property>
                    
			<property key="gps.timeTrigger">			
				<type>Integer</type>
			</property>
                                        
		</group>               
                
                
		<group name="GPS Speed Trigger"  navigationType="tree">
			<property key="gps.speedTrigger">
				<defaultList>
					<value>2.7</value>                         
				</defaultList>
				<type>List[Float]</type>                        
			</property>
		</group>
                
		<group name="GPS Distance Tracker"  navigationType="tree">
			<property key="gps.distanceTracker">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
			</property>
			<property key="gps.distanceTracker.speedTreshold">
				<defaultValue>1.0</defaultValue>
				<type>Float</type>						
			</property>
		</group>
                
                <group name="GPS Geofencing"  navigationType="tree">
			<property key="gps.geofencing.isEnabled">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
			</property>
			<property key="gps.geofencing.speedTreshold=">
				<defaultValue>2.0</defaultValue>
				<type>Float</type>
                                <require key="gps.geofencing.isEnabled">true</require>
			</property>
                        <property key="gps.geofencing.filename=">
				<defaultValue>geofencing.csv</defaultValue>
				<type>String</type>						
                                <require key="gps.geofencing.isEnabled">true</require>
			</property>
		</group>
                
	</group>

	<group name="Blackboard" navigationType="tree">
		<group name="Blackboard"  navigationType="register">
			<property key="blackboard.links">
				<type>List[BlackboardItem:size=fill,Rule]</type>
			</property>

			<group name="Expert" navigationType="expert">
				<property key="infoman.blackboard.logging">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>
			</group>
		</group>

		<group name="Persistent" navigationType="register">
			<property key="infoman.blackboard.persistent">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
			</property>
			<property key="infoman.blackboard.persistent.filename">
				<defaultValue>persistentBlackboard</defaultValue>
				<type>File</type>
				<validation>
					<require key="infoman.blackboard.persistent">true</require>
				</validation>
			</property>
			<property key="infoman.blackboard.persistent.key">
				<defaultList>
					<value>currentUser</value>
					<value>trafficQuota.wlan.currentUsedQuota</value>
					<value>trafficQuota.wlan.startDate</value>
					<value>trafficQuota.wlan.expireDate</value>
					<value>trafficQuota.gprs.currentUsedQuota</value>
					<value>trafficQuota.gprs.startDate</value>
					<value>trafficQuota.gprs.expireDate</value>
					<value>trafficQuota.eth0.currentUsedQuota</value>
					<value>trafficQuota.eth0.startDate</value>
					<value>trafficQuota.eth0.expireDate</value>
					<value>gsm.IMEI</value>
					<value>gsm.IMSI</value>
					<value>gsm.CCID</value>
					<value>gsm.SWVersion</value>
					<value>gsm.ModelID</value>
					<value>gsm.Manufactor</value>
					<value>gps.Baudrate</value>
					<value>gps.Milage</value>
					<value>gps.softwareVersion</value>
					<value>gps.antenna.type</value>
					<value>gps.Manufactor</value>
					<value>gps.ModelID</value>
					<value>healthreport.eventTransmissionCounter</value>
					<value>healthreport.commProblemCounter</value>
					<value>healthreport.eventRejectedCounter</value>
					<value>healthreport.lastReport</value>
					<value>healthreport.connectionErrorCounter.wifi</value>
					<value>healthreport.disconnectCounter.wifi</value>
					<value>healthreport.connectionErrorCounter.gprs</value>
					<value>healthreport.disconnectCounter.gprs</value>
					<value>healthreport.connectionErrorCounter.eth</value>
					<value>healthreport.disconnectCounter.eth</value>
					<value>healthreport.socketTimeout</value>
					<value>healthreport.connectTimeout</value>
					<value>healthreport.unkownHostCounter</value>
					<value>healthreport.connectCounter</value>
					<value>healthreport.connectionErrorCounter</value>
					<value>healthreport.disconnectCounter</value>
					<value>healthreport.noHttpResponseCounter</value>
					<value>healthreport.eventTransmission.min</value>
					<value>healthreport.eventTransmission.max</value>
					<value>healthreport.eventTransmission.sum</value>
					<value>healthreport.eventTransmission.avg</value>
					<value>healthreport.eventTransmission.1</value>
					<value>healthreport.eventTransmission.2</value>
					<value>healthreport.eventTransmission.4</value>
					<value>healthreport.eventTransmission.10</value>
					<value>healthreport.gprs.ipcp.timeout</value>
					<value>healthreport.gprs.ifconfig.maxRetry</value>
					<value>healthreport.wifi.executeWorkaround.reassCommErr</value>
					<value>healthreport.gprs.executeWorkaround.emergSHDN</value>
					<value>healthreport.gprs.pppd.timeout</value>
                                        <value>update.telit.mode</value>
                                        <value>update.telit.taskId</value>
                                        <value>update.telit.taskHandler</value>
                                        <value>update.telit.rebootRetry</value>
                                        <value>update.telit.file</value>
                                        <value>update.telit.fileChecksum</value>                                       
				</defaultList>
				<type>List[BlackboardItem:size=fill]</type>
				<validation>
					<require key="infoman.blackboard.persistent">true</require>
				</validation>
			</property>
		</group>
	</group>


	<group name="IO"  navigationType="tree">
		<group name="Digital Inputs"  navigationType="tree">
			<group name="Connector 1" navigationType="register">
				<group name="Input 0">
					<property key="io.in0">
						<type>DigitalInput</type>
						<description>connector1 pin1</description>
					</property>
					<property key="io.in0.description">
						<type>String</type>
						<description>connector1 pin1</description>
					</property>
				</group>
				<group name="Input 1">
					<property key="io.in1">
						<type>DigitalInput</type>
						<description>connector1 pin2</description>
					</property>
					<property key="io.in1.description">
						<type>String</type>
						<description>connector1 pin2</description>
					</property>
				</group>
				<group name="Input 2">
					<property key="io.in2">
						<type>DigitalInput</type>
						<description>connector1 pin3</description>
					</property>
					<property key="io.in2.description">
						<type>String</type>
						<description>connector1 pin3</description>
					</property>
				</group>
				<group name="Input 3">
					<property key="io.in3">
						<type>DigitalInput</type>
						<description>connector1 pin4</description>
					</property>
					<property key="io.in3.description">
						<type>String</type>
						<description>connector1 pin4</description>
					</property>
				</group>
				<group name="Input 4">
					<property key="io.in4">
						<type>DigitalInput</type>
						<description>connector1 pin6</description>
					</property>
					<property key="io.in4.description">
						<type>String</type>
						<description>connector1 pin6</description>
					</property>
				</group>
				<group name="Input 5">
					<property key="io.in5">
						<type>DigitalInput</type>
						<description>connector1 pin7</description>
					</property>
					<property key="io.in5.description">
						<type>String</type>
						<description>connector1 pin7</description>
					</property>
				</group>
				<group name="Input 6">
					<property key="io.in6">
						<type>DigitalInput</type>
						<description>connector1 pin9/10</description>
					</property>
					<property key="io.in6.description">
						<type>String</type>
						<description>connector1 pin9/10</description>
					</property>
				</group>
				<group name="Input 7">
					<property key="io.in7">
						<type>DigitalInput</type>
						<description>connector1 pin11/12</description>
					</property>
					<property key="io.in7.description">
						<type>String</type>
						<description>connector1 pin11/12</description>
					</property>
				</group>
			</group>
			<group name="Connector 2" navigationType="register">
				<group name="Input 8">
					<property key="io.in8">
						<type>DigitalInput</type>
						<description>connector2 pin1</description>
					</property>
					<property key="io.in8.description">
						<type>String</type>
						<description>connector2 pin1</description>
					</property>
				</group>
				<group name="Input 9">
					<property key="io.in9">
						<type>DigitalInput</type>
						<description>connector2 pin2</description>
					</property>
					<property key="io.in9.description">
						<type>String</type>
						<description>connector2 pin2</description>
					</property>
				</group>
				<group name="Input 10">
					<property key="io.in10">
						<type>DigitalInput</type>
						<description>connector2 pin3</description>
					</property>
					<property key="io.in10.description">
						<type>String</type>
						<description>connector2 pin3</description>
					</property>
				</group>
				<group name="Input 11">
					<property key="io.in11">
						<type>DigitalInput</type>
						<description>connector2 pin4</description>
					</property>
					<property key="io.in11.description">
						<type>String</type>
						<description>connector2 pin4</description>
					</property>
				</group>
				<group name="Input 12">
					<property key="io.in12">
						<type>DigitalInput</type>
						<description>connector2 pin6</description>
					</property>
					<property key="io.in12.description">
						<type>String</type>
						<description>connector2 pin6</description>
					</property>
				</group>
				<group name="Input 13">
					<property key="io.in13">
						<type>DigitalInput</type>
						<description>connector2 pin7</description>
					</property>
					<property key="io.in13.description">
						<type>String</type>
						<description>connector2 pin7</description>
					</property>
				</group>
				<group name="Input 14">
					<property key="io.in14">
						<type>DigitalInput</type>
						<description>connector2 pin9/10</description>
					</property>
					<property key="io.in14.description">
						<type>String</type>
						<description>connector2 pin9/10</description>
					</property>
				</group>
				<group name="Input 15">
					<property key="io.in15">
						<type>DigitalInput</type>
						<description>connector2 pin11/12</description>
					</property>
					<property key="io.in15.description">
						<type>String</type>
						<description>connector2 pin11/12</description>
					</property>
				</group>
			</group>
		</group>
		<group name="Digital Outputs"  navigationType="tree">
			<group name="Connector 3" navigationType="register">
				<group name="Out 0">
					<property key="io.out0">
						<type>DigitalOutput</type>
						<description>connector3 pin1</description>
					</property>
					<property key="io.out0.description">>
						<type>String</type>
						<description>connector3 pin1</description>
					</property>
				</group>
				<group name="Out 1">
					<property key="io.out1">
						<type>DigitalOutput</type>
						<description>connector3 pin2</description>
					</property>
					<property key="io.out1.description">>
						<type>String</type>
						<description>connector3 pin2</description>
					</property>
				</group>
				<group name="Out 2">
					<property key="io.out2">
						<type>DigitalOutput</type>
						<description>connector3 pin3</description>
					</property>
					<property key="io.out2.description">>
						<type>String</type>
						<description>connector3 pin3</description>
					</property>
				</group>
				<group name="Out 3">
					<property key="io.out3">
						<type>DigitalOutput</type>
						<description>connector3 pin4</description>
					</property>
					<property key="io.out3.description">>
						<type>String</type>
						<description>connector3 pin4</description>
					</property>
				</group>
				
				<group name="connected detection">
					<property key="io.connector3.detection">
						<type>Boolean</type>
						<defaultValue>true</defaultValue>
					</property>
					<property key="io.connector3.mode">
						<enum>							
							<value>analogInput</value>
							<value>digitalInput</value>
						</enum>
						<defaultValue>analogInput</defaultValue>
						<validation>
							<require key="io.connector3.detection">true</require>
						</validation>
					</property>
										
					<property key="io.connector3.detection.analog.interval">
						<type>Period</type>
						<defaultValue>5000</defaultValue>
						<validation>
							<require key="io.connector3.detection">true</require>
							<require key="io.connector3.mode">analogInput</require>
						</validation>						
					</property>
										
					<property key="io.connector3.detection.digital.inputAddress">
						<type>Integer</type>
						<validation>
							<require key="io.connector3.detection">true</require>
							<require key="io.connector3.mode">digitalInput</require>
							<min>0</min>
							<max>15</max>
						</validation>						
					</property>										
					
					<property key="io.connector3.detection.analog.inputAddress">
						<type>Integer</type>
						<defaultValue>0</defaultValue>
						<validation>
							<require key="io.connector3.detection">true</require>
							<require key="io.connector3.mode">analogInput</require>
							<min>0</min>
							<max>1</max>							
						</validation>						
					</property>															
					
					<property key="io.connector3.detection.item">
						<type>BlackboardItem</type>
						<defaultValue>io.connector3.notConnected</defaultValue>
						<validation>
							<require key="io.connector3.detection">true</require>
						</validation>						
					</property>					
				</group>
			</group>
		</group>
		<group name="Analog and Counter Inputs"  navigationType="tree">
			<group name="Connector 4" navigationType="register">
				<group name="Input 0">
					<property key="io.ina.0">
						<type>BlackboardItem</type>
						<description>
											the alias for the analog value on the blackboard
						</description>
					</property>
					<property key="io.ina.0.description">										
						<description>
											a text description for the Infoman's status page
						</description>										
						<validation>
							<require key="io.ina.0"/>
						</validation>										
					</property>									
					<property key="io.ina.0.pollingInterval">
						<type>Period</type>
						<description>
											the polling interval in ms
						</description>										
						<validation>
							<require key="io.ina.0"/>
						</validation>																				
					</property>	
					<property key="io.ina.0.condition">
						<type>Rule</type>
						<description>
											the condition when the analog input should be evaluated, if not set, it's evaluated to true
						</description>										
						<validation>
							<require key="io.ina.0"/>
						</validation>																				
					</property>									
					<property key="io.ina.0.fireDeltaUp">
						<type>Integer</type>
						<validation>
							<min>0</min>
							<require key="io.ina.0"/>
						</validation>
						<description>
											fire delta: change must be more then the given delta to fire an event to the blackboard
						</description>										
					</property>
					<property key="io.ina.0.fireDeltaDown">
						<type>Integer</type>
						<validation>
							<min>0</min>
							<require key="io.ina.0"/>
						</validation>										
						<description>
											fire delta: change must be more then the given delta to fire an event to the blackboard
						</description>
					</property>
					<property key="io.ina.0.mode">
						<defaultValue>interval</defaultValue>
						<enum>
							<value>interval</value>
							<value>avgOverCondition</value>
							<value>avgTimeInterval</value>
							<value>deltaEndMinusBegin</value>
							<value>deltaBeginMinusEnd</value>
							<value>measureWhenConditionChange</value>
							<value>measureOnConditionRaisingEdge</value>
							<value>measureOnConditionFallingEdge</value>
						</enum>
						<description>
							Measurement Mode
						</description>
						<validation>
							<require key="io.ina.0"/>
						</validation>																				
					</property>
					<property key="io.ina.0.mode.avgTimeInterval.measurementCount">
						<type>Integer</type>
						<validation>
							<min>0</min>
							<require key="io.ina.0.mode">avgTimeInterval</require>
						</validation>
					</property>
					<property key="io.ina.0.mode.avgTimeInterval.measurementInterval">
						<type>Period</type>
						<validation>
							<require key="io.ina.0.mode">avgTimeInterval</require>
						</validation>
					</property>                                    
					<property key="io.ina.0.mode.avgTimeInterval.expectedMin">
						<type>Integer</type>
						<validation>
							<require key="io.ina.0.mode">avgTimeInterval</require>
						</validation>
					</property>
					<property key="io.ina.0.mode.avgTimeInterval.expectedMax">
						<type>Integer</type>
						<validation>
							<require key="io.ina.0.mode">avgTimeInterval</require>
						</validation>
					</property>
				</group>

				<group name="Input 1">
					<property key="io.ina.1">
						<type>BlackboardItem</type>
						<description>
											the alias for the analog value on the blackboard
						</description>
					</property>
					<property key="io.ina.1.description">
						<description>
											a text description for the Infoman's status page
						</description>
						<validation>
							<require key="io.ina.1"/>
						</validation>																				
					</property>
					<property key="io.ina.1.pollingInterval">
						<type>Period</type>
						<description>
											the polling interval in ms
						</description>
						<validation>
							<require key="io.ina.1"/>
						</validation>																														
					</property>
					<property key="io.ina.1.condition">
						<type>Rule</type>
						<description>
											the condition when the analog input should be evaluated, if not set, it's evaluated to true
						</description>
						<validation>
							<require key="io.ina.1"/>
						</validation>																				
										
					</property>
					<property key="io.ina.1.fireDeltaUp">
						<type>Integer</type>
						<validation>
							<min>0</min>
							<require key="io.ina.1"/>
						</validation>																				
						<description>
											fire delta: change must be more then the given delta to fire an event to the blackboard
						</description>
					</property>
					<property key="io.ina.1.fireDeltaDown">
						<type>Integer</type>
						<validation>
							<min>0</min>
							<require key="io.ina.1"/>
						</validation>																				
						<description>
											fire delta: change must be more then the given delta to fire an event to the blackboard
						</description>
					</property>
					<property key="io.ina.1.mode">
						<defaultValue>interval</defaultValue>
						<enum>
							<value>interval</value>
							<value>avgOverCondition</value>
							<value>avgTimeInterval</value>
							<value>deltaEndMinusBegin</value>
							<value>deltaBeginMinusEnd</value>
							<value>measureWhenConditionChange</value>
							<value>measureOnConditionRaisingEdge</value>
							<value>measureOnConditionFallingEdge</value>
						</enum>
						<description>
											Measurement Mode
						</description>
						<validation>
							<require key="io.ina.1"/>
						</validation>																														
					</property>
					<property key="io.ina.1.mode.avgTimeInterval.measurementCount">
						<type>Integer</type>
						<validation>
							<min>0</min>
							<require key="io.ina.1.mode">avgTimeInterval</require>
						</validation>
					</property>
					<property key="io.ina.1.mode.avgTimeInterval.measurementInterval">
						<type>Period</type>
						<validation>
							<require key="io.ina.1.mode">avgTimeInterval</require>
						</validation>
					</property>          
					<property key="io.ina.1.mode.avgTimeInterval.expectedMin">
						<type>Integer</type>
						<validation>
							<require key="io.ina.1.mode">avgTimeInterval</require>
						</validation>
					</property>
					<property key="io.ina.1.mode.avgTimeInterval.expectedMax">
						<type>Integer</type>
						<validation>
							<require key="io.ina.1.mode">avgTimeInterval</require>
						</validation>
					</property>					
				</group>

				<group name="Deprecated">
					<group name="Input 0">
						<property key="io.ina0">
							<type>AnalogInput</type>
							<description>connector4 pin10</description>
						</property>
						<property key="io.ina0.description">
							<type>String</type>
							<description>connector4 pin10</description>
							<validation>
								<require key="io.ina0"/>
							</validation>																																	
						</property>
					</group>

					<group name="Input 1">
						<property key="io.ina1">
							<type>AnalogInput</type>
							<description>connector4 pin11</description>
						</property>
						<property key="io.ina1.description">
							<type>String</type>
							<description>connector4 pin11</description>
							<validation>
								<require key="io.ina1"/>
							</validation>																																														
						</property>
					</group>
				</group>
			</group>

			<group name="Temperature" navigationType="register">
				<property key="io.temp0">
					<type>AnalogInput</type>
				</property>
				<property key="io.temp0.description">
					<type>String</type>
				</property>
			</group>

			<group name="Counter/Frequency" navigationType="register">
				<group name="Counter 0">
					<property key="io.counter0">
						<type>CounterInput</type>
						<description>connector4 5/6</description>
					</property>
					<property key="io.counter0.frequencyPrecisionDivisor">
						<type>Integer</type>
					</property>
					<property key="io.counter0.description">
						<description>connector4 5/6</description>
					</property>
				</group>
				<group name="Counter 1">
					<property key="io.counter1">
						<type>CounterInput</type>
						<description>connector4 7/8</description>
					</property>
					<property key="io.counter1.frequencyPrecisionDivisor">
						<type>Integer</type>
					</property>
					<property key="io.counter1.description">
						<description>connector4 7/8</description>
					</property>
				</group>

			</group>
		</group>

		<group name="GPS"  navigationType="tree">
			<property key="infoman.geo">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
				<description>enable/disable position services</description>
			</property>

			<property key="infoman.geo.sendEvent">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
				<validation>
					<require key="infoman.geo">true</require>
				</validation>
			</property>

			<property key="gps.device.typ">
				<defaultValue>sirf</defaultValue>
				<enum>
					<value>sirf</value>
					<value>sirfJP13</value>
					<value>ubx</value>

                        <!-- autodetection (not implemented yet!) -->
					<value>auto</value>
				</enum>
				<validation>
					<require key="infoman.geo">true</require>
				</validation>
			</property>

			<group name="Expert" navigationType="expert">
				<property key="infoman.geo.maxGPSTimeOutErrorsBeforeGpsWlanWorkAround">
					<defaultValue>2</defaultValue>
					<type>Integer</type>
					<description>number of GPSTimeoutExceptions before GSM, GPS Modem is restarted</description>
				</property>

				<property key="infoman.geo.gps.reset.afterInvalid">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
				</property>
				<property key="infoman.geo.gps.reset.afterNoRecords">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>
				<property key="infoman.geo.trustedItem">
					<defaultValue>geoTrusted</defaultValue>
					<type>BlackboardItem</type>
				</property>
				
				<group name="Antenna">
					<property key="infoman.geo.gps.antennaMinCurrent">
						<defaultValue>10</defaultValue>
						<type>Integer</type>
					</property>				
					<property key="infoman.geo.gps.antennaMaxCurrent">
						<defaultValue>28</defaultValue>
						<type>Integer</type>
					</property>				
					<property key="infoman.geo.gps.antennaMinPower">
						<defaultValue>20</defaultValue>
						<type>Integer</type>
					</property>				
					<property key="infoman.geo.gps.antennaMaxPower">
						<defaultValue>80</defaultValue>
						<type>Integer</type>
					</property>				
					<property key="infoman.geo.gps.antennaProblemBlackboardItem">
						<defaultValue>gps.antenna.problem</defaultValue>
						<type>BlackboardItem</type>
					</property>
				</group>	

				<property key="infoman.geo.gps.autobauding">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
					<validation>
						<require key="infoman.geo.gps.autobauding">true</require>
					</validation>
				</property>
				<property key="infoman.geo.gps.autobauding.baudrates">
					<defaultList>
						<value>4800</value>
						<value>9600</value>
						<value>38400</value>
						<value>14400</value>
						<value>19200</value>
						<value>28800</value>
						<value>56000</value>
						<value>57600</value>
					</defaultList>
					<type>List[Integer]</type>
					<validation>
						<require key="infoman.geo.gps.autobauding">true</require>
					</validation>
				</property>

				<group name="Device Autodetaction Baudrates">
					<property key="gps.device.typ.sirf">
						<defaultValue>4800</defaultValue>
						<type>Integer</type>
						<validation>
							<require key="infoman.geo.gps.autobauding">true</require>
						</validation>
					</property>
					<property key="gps.device.typ.ubx">
						<defaultValue>9600</defaultValue>
						<type>Integer</type>
						<validation>
							<require key="infoman.geo.gps.autobauding">true</require>
						</validation>
					</property>
					<property key="gps.device.typ.sirfJP13">
						<defaultValue>38400</defaultValue>
						<type>Integer</type>
						<validation>
							<require key="infoman.geo.gps.autobauding">true</require>
						</validation>
					</property>
				</group>
                                
                                
                                                
				<group name="NMEA Record Config">
					<property key="gps.recordConfig">
						<defaultList>
							<value>RMC 1</value>
							<value>GGA 1</value>
							<value>GLL 0</value>
							<value>GSA 0</value>
							<value>GSV 0</value>
							<value>VTG 0</value>                                        
						</defaultList>
						<type>List[String:unique,Integer]</type>
					</property>
				</group>
                                
				<group name="GPS Filter">
                                    
					<property key="gps.rmcValidThreshold">
						<defaultValue>5</defaultValue>
						<type>Integer</type>						
					</property>
                                    
					<property key="gps.quality.numberOfSatellitesThreshold">
						<defaultValue>4</defaultValue>
						<type>Integer</type>						
					</property>
					<property key="gps.quality.satellitCounterThreshold">
						<defaultValue>30</defaultValue>
						<type>Integer</type>						
					</property>
					<property key="gps.quality.hdopThreshold">
						<defaultValue>6.0</defaultValue>
						<type>Float</type>						
					</property>
					<property key="gps.quality.hdopCounterThreshold">
						<defaultValue>30</defaultValue>
						<type>Integer</type>						
					</property>
                                    
					<property key="gps.quality.speedJumpThreshold">
						<defaultValue>50</defaultValue>
						<type>Integer</type>						
					</property>
                                    
                                    
					<property key="gps.quality.speedJumpCounterThreshold">
						<defaultValue>35</defaultValue>
						<type>Integer</type>						
					</property>
                                    
                                              
					<property key="gps.quality.heightJumpThreshold">
						<defaultValue>60</defaultValue>
						<type>Integer</type>						
					</property>
                                    
                                    
					<property key="gps.quality.heightJumpCounterThreshold">
						<defaultValue>35</defaultValue>
						<type>Integer</type>						
					</property>
				</group>
                                
                                
			</group>

		</group>

		<group name="CAN"  navigationType="tree">
			<group name="Device" navigationType="register">
				<property key="can">
					<defaultValue>false</defaultValue>					
					<type>Boolean</type>
				</property>					
				
				<property key="can.device">
					<defaultValue>/dev/can0</defaultValue>					
					<validation>
						<require key="can">true</require>
					</validation>					
				</property>
				<property key="can.baud">
					<defaultValue>125</defaultValue>
					<validation>
						<require key="can">true</require>
					</validation>										
				</property>

				<group name="Expert" navigationType="expert">
					<property key="can.blocking">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
						<validation>
							<require key="can">true</require>
						</validation>											
					</property>
					<property key="can.readEnabled">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
						<validation>
							<require key="can">true</require>
						</validation>																	
					</property>
					<property key="can.readEnabled.timeout">
						<defaultValue>1000</defaultValue>
						<type>Period</type>
						<validation>
							<require key="can.readEnabled">true</require>
							<require key="can">true</require>
						</validation>
					</property>
					<property key="can.readOnly">
						<defaultValue>false</defaultValue>
						<type>Boolean</type>
						<validation>
							<require key="can">true</require>
						</validation>																							
					</property>
					<property key="can.sleeptime">
						<defaultValue>0</defaultValue>
						<type>Integer</type>
						<validation>
							<min>0</min>
							<require key="can">true</require>
						</validation>																							
					</property>
				</group>

				<group name="Error Handling" navigationType="expert">
					<property key="can.error.item">
						<type>BlackboardItem</type>
						<validation>
							<require key="can">true</require>
						</validation>																							
					</property>
					<property key="can.error.entry.event">
						<defaultValue>false</defaultValue>
						<type>Boolean</type>
						<validation>
							<require key="can">true</require>
						</validation>																							
					</property>
					<property key="can.error.exit.event">
						<defaultValue>false</defaultValue>
						<type>Boolean</type>
						<validation>
							<require key="can">true</require>
						</validation>																							
					</property>
				</group>
			</group>

			<group name="Message Filter" navigationType="register">
				<property key="can.filter">
					<type>List[CANFilter]</type>
<!--
http://duplo.proveo.int/releases/developer/infoman/infoman-can/properties.html
http://duplo.proveo.int/releases/developer/infoman/infoman-can/linde-mapping-configuration.properties
-->
					<validation>
						<require key="can">true</require>
					</validation>																	
				</property>
			</group>
			
			<group name="Mapping" navigationType="register">
				<property key="can.mapping">
					<type>List[CANMapping]</type>
<!--
http://duplo.proveo.int/releases/developer/infoman/infoman-can/properties.html
http://duplo.proveo.int/releases/developer/infoman/infoman-can/linde-mapping-configuration.properties
-->
					<validation>
						<require key="can">true</require>
					</validation>																	
				</property>
			</group>
		</group>

		<group name="Others"  navigationType="tree">
			<group name="Display" navigationType="register">
				<group name="VGA">
					<property key="infoman.io.lcd.vga">
						<defaultValue>false</defaultValue>
						<type>Boolean</type>
					</property>
				</group>

				<group name="LCD M100">
					<property key="io.lcd.m100.commandRetryInterval">
						<defaultValue>300</defaultValue>
						<type>Period</type>
						<description>
                                retry interval in milliseconds for NAK display commands
						</description>
					</property>

					<property key="io.lcd.m100.responseTimeout">
						<defaultValue>2000</defaultValue>
						<type>Period</type>
						<description>
                                display command response timeout
						</description>
					</property>

					<property key="io.lcd.m100.maxTimeoutRetry">
						<defaultValue>2</defaultValue>
						<type>Integer</type>
						<validation>
							<min>0</min>
						</validation>
						<description>
                                retry for display commands if response timeout occur
						</description>
					</property>

					<property key="io.lcd.m100.keypadClick">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
						<description>
                                the click on each pushing of any button may be disabled
						</description>
					</property>

					<property key="io.lcd.m100.nakRetry">
						<defaultValue>5</defaultValue>
						<type>Integer</type>
						<validation>
							<min>0</min>
						</validation>
						<description>
                                Send retry loops
						</description>
					</property>
				</group>
			</group>

			<group name="OneWire IButton" navigationType="register">
				<property key="io.ibutton">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
				</property>

				<group name="Expert" navigationType="expert">
					<property key="io.ibutton.device">
						<defaultValue>sio2</defaultValue>
						<validation>
							<require key="io.ibutton">true</require>
						</validation>
					</property>
					<property key="io.ibutton.adapter">
						<defaultValue>DS9097U</defaultValue>
						<validation>
							<require key="io.ibutton">true</require>
						</validation>
					</property>

					<property key="io.ibutton.arrivalEvt">
						<defaultValue>ibuttonArrival</defaultValue>
						<type>BlackboardItem</type>
						<validation>
							<require key="io.ibutton">true</require>
						</validation>
					</property>
					<property key="io.ibutton.departureEvt">
						<defaultValue>ibuttonDeparture</defaultValue>
						<type>BlackboardItem</type>
						<validation>
							<require key="io.ibutton">true</require>
						</validation>
					</property>
					<property key="io.ibutton.errorEvt">
						<defaultValue>ibuttonError</defaultValue>
						<type>BlackboardItem</type>
						<validation>
							<require key="io.ibutton">true</require>
						</validation>
					</property>
					<property key="io.ibutton.initRetry">
						<defaultValue>60000</defaultValue>
						<type>Period</type>
						<validation>
							<require key="io.ibutton">true</require>
						</validation>
					</property>
				</group>
			</group>

			<group name="Cardreader" navigationType="register">
				<property key="mifare">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
				</property>

				<property key="io.mifare.tagInFieldEvt">
					<defaultValue>mifareTagInField</defaultValue>
					<type>BlackboardItem</type>
					<validation>
						<require key="mifare">true</require>
					</validation>
				</property>
				
				<property key="io.mifare.inputAdapterReady">
					<type>BlackboardItem</type>
					<validation>
						<require key="mifare">true</require>
					</validation>
				</property>	
				
				<property key="mifare.type">
					<defaultValue>usb</defaultValue>
					<enum>
						<value>usb</value>
						<value>can</value>						
					</enum>
				</property>

				<group name="USB Settings" navigationType="expert">
					<property key="mifare.device">
						<defaultValue>sio4</defaultValue>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">usb</require>
						</validation>
					</property>
					<property key="mifare.device.baudrate">
						<defaultValue>38400</defaultValue>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">usb</require>
						</validation>
					</property>
					<property key="mifare.device.databits">
						<defaultValue>8</defaultValue>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">usb</require>
						</validation>
					</property>
					<property key="mifare.device.stopbits">
						<defaultValue>1</defaultValue>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">usb</require>
						</validation>
					</property>
					<property key="mifare.device.parity">
						<defaultValue>none</defaultValue>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">usb</require>
						</validation>
					</property>
					<property key="mifare.device.flow">
						<defaultValue>none</defaultValue>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">usb</require>
						</validation>
					</property>
					<property key="mifare.device.flow.direction">
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">usb</require>
						</validation>
					</property>
					<property key="mifare.antenna.settings">
						<defaultValue>15</defaultValue>
						<enum>
							<value>auto</value>
							<value>0</value>
							<value>1</value>
							<value>2</value>
							<value>3</value>
							<value>4</value>
							<value>5</value>
							<value>6</value>
							<value>7</value>
							<value>8</value>
							<value>9</value>
							<value>10</value>
							<value>11</value>
							<value>12</value>
							<value>13</value>
							<value>14</value>
							<value>15</value>
						</enum>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">usb</require>
						</validation>
					</property>

					<property key="mifare.longReinitSleepTime">
						<defaultValue>20000</defaultValue>
						<type>Period</type>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">usb</require>
						</validation>
					</property>
					<property key="mifare.reinitAmountForLongSleep">
						<defaultValue>10</defaultValue>
						<type>Period</type>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">usb</require>
						</validation>
					</property>
					<property key="mifare.shortReinitSleepTime">
						<defaultValue>0</defaultValue>
						<type>Period</type>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">usb</require>
						</validation>
					</property>
				</group>

				<group name="CAN Settings" navigationType="expert">
					<property key="mifare.can.baseId">
						<defaultValue>0x800</defaultValue>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">can</require>
						</validation>
					</property>
					<property key="mifare.can.fixAlternativeBaseId">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">can</require>
						</validation>
					</property>					
					<property key="mifare.led.green">
						<type>BlackboardItem</type>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">can</require>
						</validation>
					</property>	
					<property key="mifare.led.red">
						<type>BlackboardItem</type>
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">can</require>
						</validation>
					</property>						
				</group>

				<group name="Conversion">
					<property key="mifare.convert.case">
						<defaultValue>none</defaultValue>
						<enum>
							<value>none</value>
							<value>lower</value>
							<value>upper</value>
						</enum>
						<validation>
							<require key="mifare">true</require>
						</validation>
					</property>
					<property key="mifare.convert.ascii">
						<defaultValue>false</defaultValue>
						<type>Boolean</type>						
						<validation>
							<require key="mifare">true</require>
							<require key="mifare.type">can</require>
						</validation>						
					</property>					
					<property key="mifare.convert.asciiFormatedHex">
						<defaultValue>true</defaultValue>
						<type>Boolean</type>
						<validation>
							<require key="mifare">true</require>
						</validation>
					</property>
					<property key="mifare.convert.offset">
						<defaultValue>0</defaultValue>
						<type>Integer</type>
						<validation>
							<min>0</min>
							<require key="mifare">true</require>
						</validation>
					</property>
					<property key="mifare.convert.endIndex">
						<defaultValue>14</defaultValue>
						<type>Integer</type>
						<validation>
							<min>0</min>
							<require key="mifare">true</require>
						</validation>
					</property>
					<property key="mifare.expectedLength">
						<defaultValue>18</defaultValue>
						<type>Integer</type>
						<validation>
							<min>0</min>
							<require key="mifare">true</require>
						</validation>
					</property>
				</group>

			</group>

			<group name="Impact Sensor" navigationType="register">
				<property key="crashsensor">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
				</property>
				<property key="crashsensor.type">
					<defaultValue>usb</defaultValue>
					<enum>
						<value>usb</value>
						<value>can</value>
					</enum>
					<validation>
						<require key="crashsensor">true</require>
					</validation>
				</property>

				<property key="crashsensor.threshold.x.plus">
					<type>Integer</type>
					<validation>
						<min>0</min>
						<require key="crashsensor">true</require>
					</validation>
				</property>
				<property key="crashsensor.threshold.x.minus">
					<type>Integer</type>
					<validation>
						<min>0</min>
						<require key="crashsensor">true</require>
					</validation>
				</property>
				<property key="crashsensor.threshold.y.plus">
					<type>Integer</type>
					<validation>
						<min>0</min>
						<require key="crashsensor">true</require>
					</validation>
				</property>
				<property key="crashsensor.threshold.y.minus">
					<type>Integer</type>
					<validation>
						<min>0</min>
						<require key="crashsensor">true</require>
					</validation>
				</property>

				<property key="crashsensor.crashEvent.blackboardItem">
					<type>BlackboardItem</type>
					<validation>
						<require key="crashsensor">true</require>
					</validation>
				</property>
				<property key="crashsensor.crashTrigger.blackboardItem">
					<type>BlackboardItem</type>
					<validation>
						<require key="crashsensor">true</require>
					</validation>
				</property>
				<property key="crashsensor.crashTrigger.time">
					<type>Period</type>
					<validation>
						<require key="crashsensor">true</require>
						<require key="crashsensor.crashTrigger.blackboardItem"/>
					</validation>
				</property>

				<group name="Motion">
					<property key="crashsensor.motion">
						<defaultValue>false</defaultValue>
						<type>Boolean</type>
					</property>
					<property key="crashsensor.motion.blackboarditem">
						<type>BlackboardItem</type>
						<validation>
							<require key="crashsensor.motion">true</require>
						</validation>
					</property>
					<property key="crashsensor.motion.threshold">
						<type>Integer</type>
						<description>
							Schwellert der Überschritten werden muss um eine Bewegung zu erkennen.
						</description>
						<validation>
							<require key="crashsensor.motion">true</require>
						</validation>
					</property>
					<property key="crashsensor.motion.timercount">
						<type>Integer</type>
						<description>
							Gibt an wie oft ein Wert auf dem ImpactSensor genommen werden soll. 1 entspreicht ca. 260uS
						</description>
						<validation>
							<require key="crashsensor.motion">true</require>
						</validation>
					</property>

					<property key="crashsensor.motion.acclivtyfactor">
						<type>Integer</type>
						<validation>
							<require key="crashsensor.motion">true</require>
						</validation>
					</property>
				</group>

				<group name="USB" navigationType="expert">
					<property key="crashsensor.device">
						<defaultValue>sio3</defaultValue>
						<validation>
							<require key="crashsensor">true</require>
						</validation>
					</property>
					<property key="crashsensor.device.baudrate">
						<defaultValue>115200</defaultValue>
						<validation>
							<require key="crashsensor">true</require>
						</validation>
					</property>
					<property key="crashsensor.device.databits">
						<defaultValue>8</defaultValue>
						<validation>
							<require key="crashsensor">true</require>
						</validation>
					</property>
					<property key="crashsensor.device.stopbits">
						<defaultValue>1</defaultValue>
						<validation>
							<require key="crashsensor">true</require>
						</validation>
					</property>
					<property key="crashsensor.device.parity">
						<defaultValue>none</defaultValue>
						<validation>
							<require key="crashsensor">true</require>
						</validation>
					</property>
					<property key="crashsensor.device.flow">
						<defaultValue>none</defaultValue>
						<validation>
							<require key="crashsensor">true</require>
						</validation>
					</property>
				</group>

				<group name="CAN" navigationType="expert">
					<property key="crashsensor.can.baseId">
						<defaultValue>0x180</defaultValue>
						<validation>
							<require key="crashsensor">true</require>
						</validation>
					</property>
				</group>
			</group>

			<group name="24730" navigationType="register">
				<property key="io.24730">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
				</property>


				<group name="Expert" navigationType="expert">
					<property key="io.24730.device">
						<defaultValue>sio1</defaultValue>
						<validation>
							<require key="io.24730">true</require>
						</validation>
					</property>
					<property key="io.24730.device.baudrate">
						<defaultValue>19200</defaultValue>
						<validation>
							<require key="io.24730">true</require>
						</validation>
					</property>
					<property key="io.24730.device.databits">
						<defaultValue>8</defaultValue>
						<validation>
							<require key="io.24730">true</require>
						</validation>
					</property>
					<property key="io.24730.device.stopbits">
						<defaultValue>1</defaultValue>
						<validation>
							<require key="io.24730">true</require>
						</validation>
					</property>
					<property key="io.24730.device.parity">
						<defaultValue>none</defaultValue>
						<validation>
							<require key="io.24730">true</require>
						</validation>
					</property>
					<property key="io.24730.device.flow">
						<defaultValue>none</defaultValue>
						<validation>
							<require key="io.24730">true</require>
						</validation>
					</property>
				</group>

				<property key="io.24730.geo.formatType">
					<defaultValue>4</defaultValue>
					<enum>
						<value>0</value>
						<value>1</value>
						<value>2</value>
						<value>3</value>
						<value>4</value>
					</enum>
					<validation>
						<require key="io.24730">true</require>
					</validation>
				</property>
				<property key="io.24730.geo.opcode">
					<defaultValue>96</defaultValue>
					<type>Integer</type>
					<validation>
						<require key="io.24730">true</require>
					</validation>
				</property>

				<property key="io.24730.geo.subblinks">
					<defaultValue>2</defaultValue>
					<type>Integer</type>
					<validation>
						<require key="io.24730">true</require>
					</validation>
				</property>
				<property key="io.24730.geo.power">
					<defaultValue>3</defaultValue>
					<type>Integer</type>
					<validation>
						<require key="io.24730">true</require>
					</validation>
				</property>

				<property key="io.24730.geo.blinkintervall">
					<defaultValue>10</defaultValue>
					<type>Integer</type>
					<description>
                                blink interval (4 min)
					</description>
					<validation>
						<require key="io.24730">true</require>
					</validation>
				</property>

				<property key="io.24730.minBlinkInterval">
					<defaultValue>5000</defaultValue>
					<type>Period</type>
					<description>
                                minimum blink interval in milliseconds
					</description>
					<validation>
						<require key="io.24730">true</require>
					</validation>
				</property>

				<property key="io.24730.errorIndication.count">
					<defaultValue>5</defaultValue>
					<type>Integer</type>
					<description>
                                maximum of errors
					</description>
					<validation>
						<require key="io.24730">true</require>
					</validation>
				</property>

				<property key="io.24730.errorIndication.resetTime">
					<defaultValue>2000</defaultValue>
					<type>Period</type>
					<description>
                                reset time after error indication
					</description>
					<validation>
						<require key="io.24730">true</require>
					</validation>
				</property>
			</group>

			<group name="Powermanagement" navigationType="register">
				<roles>
					<role>expert</role>
				</roles>

				<property key="phytecIO.power.wd.pm">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>
				<property key="phytecIO.power.wd.pxa">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
				</property>

				<property key="phytecIO.power.responseTimeout">
					<defaultValue>10000</defaultValue>
					<type>Period</type>
				</property>
				<property key="phytecIO.power.device">
					<defaultValue>sio3</defaultValue>
				</property>
				<property key="phytecIO.power.device.baudrate">
					<defaultValue>9600</defaultValue>
				</property>
				<property key="phytecIO.power.device.databits">
					<defaultValue>8</defaultValue>
				</property>
				<property key="phytecIO.power.device.stopbits">
					<defaultValue>1</defaultValue>
				</property>
				<property key="phytecIO.power.device.parity">
					<defaultValue>none</defaultValue>
				</property>
				<property key="phytecIO.power.device.flow">
					<defaultValue>none</defaultValue>
				</property>

				<property key="phytecIO.power.wd.pm.pccardCtlExecTimeout">
					<defaultValue>30000</defaultValue>
					<description>
                                timeout for pccardctl execute. values less then 1 disables this feature
					</description>
				</property>
			</group>
		</group>


	</group>

	<group name="Authentication" navigationType="tree">

		<group name="Authentication" navigationType="register">
			<property key="auth">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
			</property>

			<property key="auth.unitId">
				<type>UnitIdAlias</type>
				<validation>
					<require key="auth">true</require>
				</validation>
			</property>

			<group name="Events">
				<property key="auth.event.init">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
					<validation>
						<require key="auth">true</require>
					</validation>
				</property>
				<property key="auth.event.login">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
					<validation>
						<require key="auth">true</require>
					</validation>
				</property>
				<property key="auth.event.login.afterUse">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<validation>
						<require key="auth">true</require>
					</validation>
				</property>
				<property key="auth.event.logout">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
					<validation>
						<require key="auth">true</require>
					</validation>
				</property>
				<property key="auth.event.logout.afterUse">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
					<validation>
						<require key="auth">true</require>
					</validation>
				</property>
				<property key="auth.addPositionEnabled">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<validation>
						<require key="auth">true</require>
					</validation>
				</property>
			</group>

			<group name="Conditions">
				<property key="auth.src.login.flag">
					<type>Rule</type>
					<description>
						das Fahrzeug ist bereit z.B. Zündung an
					</description>
					<validation>
						<require key="auth">true</require>
					</validation>
				</property>
				<property key="auth.src.login.inputFlag">
					<type>Rule</type>
					<description>
						das Anmeldemodul ist bereit z.B. Cardreader ist betriebsbereit
					</description>
					<validation>
						<require key="auth">true</require>
					</validation>
				</property>
				
				<property key="auth.event.used">
					<type>BlackboardItem</type>
					<validation>
						<require key="auth">true</require>
					</validation>					
				</property>
				<property key="auth.src.runningBeforeInit">
					<type>BlackboardItem</type>
					<validation>
						<require key="auth">true</require>
					</validation>					
				</property>
			</group>

			<property key="auth.src.login">
				<defaultValue>ibuttonArrival</defaultValue>
				<type>BlackboardItem</type>
				<validation>
					<require key="auth">true</require>
				</validation>
			</property>
			<property key="auth.src.logout">
				<defaultValue>!motorInput</defaultValue>
				<type>List[Rule]</type>
				<validation>
					<require key="auth">true</require>
				</validation>
			</property>

			<property key="auth.logout.logoutWaitingTime">
				<defaultValue>0</defaultValue>
				<type>Period</type>
				<validation>
					<require key="auth">true</require>
				</validation>
				<description>
					Waiting timeout after logout: during this time engine ussages
					are recognized as valid usages for the last loged in user
				</description>
			</property>

			<property key="auth.out.authenticated">
				<defaultValue>userAuthenticated</defaultValue>
				<type>BlackboardItem</type>
				<validation>
					<require key="auth">true</require>
				</validation>
			</property>
			<property key="auth.out.currentUser">
				<defaultValue>currentUser</defaultValue>
				<type>BlackboardItem</type>
				<validation>
					<require key="auth">true</require>
				</validation>
			</property>
			<property key="auth.out.accessDenied">
				<defaultValue>accessDenied</defaultValue>
				<type>BlackboardItem</type>
				<validation>
					<require key="auth">true</require>
				</validation>
			</property>

			<property key="auth.led.grant">
				<defaultValue>ledAccessGrant</defaultValue>
				<type>BlackboardItem</type>
				<validation>
					<require key="auth">true</require>
				</validation>
			</property>
			<property key="auth.led.denied">
				<defaultValue>ledAccessDenied</defaultValue>
				<type>BlackboardItem</type>
				<validation>
					<require key="auth">true</require>
				</validation>
			</property>
			<property key="auth.led.denied.onIfReady">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<validation>
					<require key="auth">true</require>
				</validation>
			</property>		
						
			<property key="auth.out.notAuthenticatedUse">
				<type>BlackboardItem</type>
				<validation>
					<require key="auth">true</require>
				</validation>
			</property>
		</group>

		<group name="Authorization" navigationType="register">
			<property key="auth.authorization">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
			</property>

			<property key="auth.authorization.notify.accessDenied">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<validation>
					<require key="auth.authorization">true</require>
				</validation>				
			</property>
			
			<property key="auth.authorization.notify.accessDenied.notifyId">
				<type>Integer</type>
				<validation>
					<require key="auth.authorization">true</require>
					<require key="auth.authorization.notify.accessDenied">true</require>
				</validation>				
			</property>

			<property key="auth.acl.acceptUpdates">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
				<description>
						Auth ACL accept updates
				</description>
				<validation>
					<require key="auth.authorization">true</require>
				</validation>
			</property>

			<property key="auth.acl.sendChecksumInBootMessage">
				<defaultValue>true</defaultValue>
				<type>Boolean</type>
				<description>
						Send ACL content Checksum in BootEvent
				</description>
				<validation>
					<require key="auth.authorization">true</require>
				</validation>
			</property>
 
			<property key="auth.acl.connectionTimeout">
				<defaultValue>10000</defaultValue>
				<type>Period</type>
				<description>
						Auth ACL Update connectionTimeout
				</description>
				<validation>
					<require key="auth.authorization">true</require>
					<require key="auth.acl.acceptUpdates">true</require>
				</validation>
			</property>
 
			<property key="auth.acl.socketTimeout">
				<defaultValue>30000</defaultValue>
				<type>Period</type>
				<description>
						Auth ACL Update socketTimeout
				</description>
				<validation>
					<require key="auth.authorization">true</require>
					<require key="auth.acl.acceptUpdates">true</require>
				</validation>
			</property>
 
			<property key="auth.acl.retryCount">
				<defaultValue>3</defaultValue>
				<type>Integer</type>
				<validation>
					<min>0</min>
					<require key="auth.authorization">true</require>
					<require key="auth.acl.acceptUpdates">true</require>
				</validation>
				<description>
						Auth ACL Update retry Count
				</description>
			</property>
 
			<property key="auth.acl.acceptCompression">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<description>
						Auth ACL Update gzip compression
				</description>
				<validation>
					<require key="auth.authorization">true</require>
					<require key="auth.acl.acceptUpdates">true</require>
				</validation>
			</property>
 
			<property key="auth.acl.caseInsensitiv">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<description>
						Auth ACL checks are case sensitiv (default)
				</description>
				<validation>
					<require key="auth.authorization">true</require>
				</validation>
			</property>

			<property key="auth.acl.contentChecksumType">
				<defaultValue>SHA1</defaultValue>
				<enum>
					<value>NONE</value>
					<value>MD5</value>
					<value>SHA1</value>
				</enum>
				<description>
						Auth ACL contentChecksumType for auth ACL Content Transmission, and ChecksumType in Bootmessage
				</description>
				<validation>
					<require key="auth.authorization">true</require>
				</validation>
			</property>
			
			<property key="auth.acl.denied">
				<type>String</type>
			</property>
			<property key="auth.acl.allowed">
				<type>String</type>
			</property>
		</group>
	</group>

	<group name="Analog Values"  navigationType="tree">
		<group name="Threshold Switches" navigationType="register">
			<property key="blackboard.schmittTriger">
				<type>List[SchmittTrigger]</type>
			</property>
		</group>

		<group name="Anlog Value Monitor" navigationType="register">
			<group name="Anlog Value Monitor" multipleIndex="true" index="0" count="analogValueMonitor.{0}.*">
				<property key="analogValueMonitor.{0}.description" profileName="true"></property>
				<property key="analogValueMonitor.{0}.value">
					<type>BlackboardItem</type>
					<description>
						The analog blackboard item to monitor
					</description>
				</property>

				<property key="analogValueMonitor.{0}.result">
					<type>BlackboardItem</type>
					<description>
						The blackboard item (boolean) which is updated by this
						value monitor.
					</description>
				</property>

				<property key="analogValueMonitor.{0}.threshold.value">
					<type>Float</type>
					<description>
						threshold, if value change is below this threshold, the
						result is false otherwise it's true
					</description>
				</property>

				<property key="analogValueMonitor.{0}.threshold.absolute">
					<type>Boolean</type>
					<description>
						Use the configured threshold without a sign (in both directions)
					</description>
				</property>

				<property key="analogValueMonitor.{0}.threshold.freeze">
					<type>Boolean</type>
					<description>
						Freeze the last measured analog value if the condition 
						goes true. Further updates of the analog value a not accepted.
					</description>
				</property>
				
				<property key="analogValueMonitor.{0}.threshold.freeze.keep">
					<enum>
						<value>none</value>
						<value>min</value>
						<value>max</value>
					</enum>
					<description>
						Keep a new minimum und maximum during a freeze.
					</description>
				</property>				

				<property key="analogValueMonitor.{0}.condition">
					<type>Rule</type>
					<description>
						Condition when this value Monitor is active
					</description>
				</property>
			</group>
		</group>
	</group>

	<group name="Delayer" navigationType="tree">
		<property key="blackboard.delay">
			<type>List[DelayerConfig]</type>
		</property>
	</group>

	<group name="Measurements" navigationType="tree">
		<group name="Measurement Event" multipleIndex="true" index="0" count="measurementEvents.{0}.*">
			<property key="measurementEvents.{0}.description" profileName="true">
			</property>
			<property key="measurementEvents.{0}.value">
				<type>BlackboardItem</type>
			</property>
			<property key="measurementEvents.{0}.id">
				<type>List[Integer,Rule]</type>
			</property>

			<property key="measurementEvents.{0}.timeStampFromCondition">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<description>
					reuse the timestamp of the condition change for this event (optional)
				</description>	
			</property>

			<property key="measurementEvents.{0}.condition">
				<type>Rule</type>
				<description>
					condition when the event should be fired (optional)
				</description>
			</property>
			<property key="measurementEvents.{0}.onEntry">
				<description>
					value to transmit if condition goes to true (optional)
					the same exists for onExit. The measured value is overwritten
				</description>
			</property>

			<property key="measurementEvents.{0}.triggeredByCondition">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<description>
					trigger event transmission by condition change (optional)
				</description>
			</property>
 
			<property key="measurementEvents.{0}.triggeredByValueChange">
				<defaultValue>false</defaultValue>
				<type>Boolean</type>
				<description>
					trigger event transmission by value change (optional)
				</description>
			</property>
 
			<property key="measurementEvents.{0}.format">
				<defaultValue>#0.00</defaultValue>
				<description>
					format the value (optional)
				</description>
			</property>
 
			<property key="measurementEvents.{0}.transform.min">				
				<description>
					transform the value into another range
				</description>
			</property>
			<property key="measurementEvents.{0}.transform.max">				
				<description>
					transform the value into another range
				</description>
			</property>
			<property key="measurementEvents.{0}.triggeredInterval">
				<defaultValue>-1</defaultValue>
				<type>Integer</type>
				<description>
					sends measurement event in defined interval
				</description>
			</property>

		</group>
	</group>

	<group name="Notifications"  navigationType="tree">
		<property key="blackboard.notify">
			<type>List[BlackboardItem:size=fill,UnitIdAlias,NotifyId,Rule,NotifyOptions:keySuffix=.options]</type>
		</property>
		<property key="blackboard.notify.options">
			<type>NotifyOptions</type>
		</property>
	</group>

	<group name="StateModels" navigationType="tree">
		<editor class="de.proveo.idm.icc.editor.statemodel.Editor"/>
		<validation class="de.proveo.idm.icc.editor.statemodel.Validator"/>

		<property key="statemodels" hidden="true"/>
		<property key="regexp:statemodel\p{Punct}.*" hidden="true"/>
	</group>


	<group name="Plugins" navigationType="tree">		
		<group name="Taskmanagement" navigationType="tree">
			<property key="taskmanagementACT">
				<deafaultValue>false</deafaultValue>
				<type>Boolean</type>
			</property>			
		</group>

		<group name="SCL - Safety Checklist" navigationType="tree">
			<group name="Common" navigationType="register">
				<property key="scl">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
				</property>

				<group name="Serial Display" navigationType="expert">
					<property key="scl.lcd.device">
						<defaultValue>sio1</defaultValue>
					</property>
					<property key="scl.lcd.device.baudrate">
						<defaultValue>115200</defaultValue>
					</property>
					<property key="scl.lcd.device.databits">
						<defaultValue>8</defaultValue>
					</property>
					<property key="scl.lcd.device.flow">
						<defaultValue>none</defaultValue>
					</property>
					<property key="scl.lcd.device.parity">
						<defaultValue>none</defaultValue>
					</property>
					<property key="scl.lcd.device.stopbits">
						<defaultValue>1</defaultValue>
					</property>
				</group>

				<group name="Server Endpoint" navigationType="expert">
					<property key="network.event.protocol.http.uri.sclEvent">
						<defaultValue>/scl/event</defaultValue>
						<type>URI</type>
					</property>
					<property key="network.event.protocol.http.uri.scl">
						<defaultValue>/scl/scl</defaultValue>
						<type>URI</type>
					</property>
				</group>

				<property key="scl.lcd.defaultBacklight">
					<defaultValue>100</defaultValue>
					<description>
				    default backlight value if display is used
					</description>
				</property>

				<property key="scl.priviligedPermission">
					<defaultValue>mechanic</defaultValue>
					<description>
				    permission for priviliged users
					</description>
				</property>

				<property key="scl.lightStack.outAliasGreen">
					<type>BlackboardItem</type>
					<description>
				    SCL Ligth Stack - output alias for green light
					</description>
				</property>

				<property key="scl.lightStack.outAliasRed">
					<type>BlackboardItem</type>
					<description>
				    SCL Ligth Stack - output alias for red light
					</description>
				</property>

				<property key="scl.lightStack.outAliasYellow">
					<type>BlackboardItem</type>
					<description>
				    SCL Ligth Stack - output alias for yellow light
					</description>
				</property>

				<property key="scl.lightStack.completedStateName">
					<defaultValue>completed</defaultValue>
					<description>
				    SCL state name which stand for "SCL is completed"
					</description>
				</property>

				<property key="scl.lightStack.idleStateName">
					<defaultValue>idle</defaultValue>
					<description>
				    SCL state name which stand for "SCL is idle"
					</description>
				</property>

				<property key="scl.lightStack.blinkInterval">
					<defaultValue>500</defaultValue>
					<description>
				    SCL Light Stack blink interval
					</description>
				</property>

				<property key="scl.checklist.dateFormat">
					<defaultValue>EEE MMM dd HH:mm:ss z yyyy</defaultValue>
					<description>
				    date format for current time
					</description>
				</property>

				<property key="scl.checklist.timeUpdateInterval">
					<defaultValue>300</defaultValue>
					<type>Period</type>
					<description>
				    time update interval (ms)
					</description>
				</property>

				<property key="scl.checklist.acceptUpdate">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
					<description>
				    accept Safety Checklist updates or Concern clearances from server
					</description>
				</property>

				<property key="scl.checklist.update.connectionTimeout">
					<defaultValue>10000</defaultValue>
					<type>Period</type>
					<description>
				    Safety Checklist updates connectionTimeout
					</description>
				</property>

				<property key="scl.checklist.update.socketTimeout">
					<defaultValue>30000</defaultValue>
					<type>Period</type>
					<description>
				    Safety Checklist updates socketTimeout
					</description>
				</property>

				<property key="scl.checklist.update.retryCount">
					<defaultValue>3</defaultValue>
					<type>Integer</type>
					<validation>
						<min>0</min>
					</validation>
					<description>
				    Safety Checklist updates retry count
					</description>
				</property>

				<property key="scl.checklist.update.acceptCompression">
					<defaultValue>false</defaultValue>
					<type>Boolean</type>
					<description>
				    Safety Checklist updates accept compression
					</description>
				</property>

				<property key="scl.checklist.update.contentChecksumType">
					<defaultValue>SHA1</defaultValue>
					<enum>
						<value>NONE</value>
						<value>MD5</value>
						<value>SHA1</value>
					</enum>
					<description>
				    Safety Checklist updates contentChecksumType
					</description>
				</property>

				<property key="scl.checklist.beginSCLKeys">
					<defaultValue>VK_F1</defaultValue>
					<description>
				    list of display keys to begin the fill SCL process
					</description>
				</property>

				<property key="scl.event.clearBySCLUpdateRemark">
					<defaultValue>clearedBySCLUpdate</defaultValue>
					<description>
				    Remark String which is added to an implicite SCL clear during a SCL update
					</description>
				</property>

				<property key="scl.activation">
					<type>Rule</type>
					<description>
				    Start the user interaction process due to a recognized user, maybe due to
				    switch on the ignition. (optional)
					</description>
				</property>

				<property key="scl.noLongerUsable">
					<type>BlackboardItem</type>
					<description>
				    output blackboard item to signalize that the vehicle is not longer usable (optional)
					</description>
				</property>
			</group>

			<group name="Text" navigationType="register">
				<property key="scl.checklist.txt.beginSCL">
					<defaultValue>start SCL fill (press F1)</defaultValue>
					<description>
				    text: begin SCL
					</description>
				</property>

				<property key="scl.checklist.txt.noUser">
					<defaultValue>no user, please authenticate</defaultValue>
					<description>
				    text: no user authenticated
					</description>
				</property>

				<property key="scl.checklist.txt.parkInSafePlace">
					<defaultValue>Park in safe place!</defaultValue>
					<description>
				    text: vehicle no longer usable
					</description>
				</property>

				<property key="scl.checklist.txt.error">
					<defaultValue>Something went wrong with the SCL!</defaultValue>
					<description>
				    text: SCL runtime problem
					</description>
				</property>

				<property key="scl.checklist.txt.welcome">
					<defaultValue>Welcome, please authenticate</defaultValue>
					<description>
				    text: start screen
					</description>
				</property>

				<property key="scl.checklist.txt.noSCLnecessary">
					<defaultValue>Welcome, no SCL necessary.</defaultValue>
					<description>
				    text: SCL disabled or not necessary at the moment
					</description>
				</property>

				<property key="scl.checklist.txt.wait">
					<defaultValue>please wait......</defaultValue>
					<description>
				    text: SCL wait Message
					</description>
				</property>

				<property key="scl.checklist.txt.noActiveConcerns">
					<defaultValue>no active concerns</defaultValue>
					<description>
				    text: SCL no active concerns message
					</description>
				</property>

				<property key="scl.checklist.txt.realyClear">
					<defaultValue>Do you realy won't to clear?</defaultValue>
					<description>
				    text: SCL do you realy won't to clear?
					</description>
				</property>

				<property key="scl.checklist.txt.checklistTxtUsage">
					<defaultValue>Drive carefully!\nHave fun this day!</defaultValue>
					<description>
				    text: SCL Text which is shown after an inspection and the vehicle is still usable
					</description>
				</property>
			</group>

			<group name="SCL StateModel" navigationType="register">
				<property key="scl.statemodelName" hidden="false">
					<defaultValue>scl</defaultValue>
				</property>

				<property key="scl.statemodel.persistent" hidden="false">
					<defaultValue>true</defaultValue>
					<type>Boolean</type>
				</property>
				<property key="scl.statemodel.stateModelId" hidden="false">
					<defaultValue>3000</defaultValue>
				</property>
				<property key="scl.statemodel.states" hidden="false">
					<defaultValue>idle completed notCompletedWithinGracePeriod inProgress delinquent</defaultValue>
				</property>
				<property key="scl.statemodel.state.idle" hidden="false">
					<defaultValue>3001</defaultValue>
				</property>
				<property key="scl.statemodel.state.completed" hidden="false">
					<defaultValue>3002</defaultValue>
				</property>
				<property key="scl.statemodel.state.notCompletedWithinGracePeriod" hidden="false">
					<defaultValue>3003</defaultValue>
				</property>
				<property key="scl.statemodel.state.inProgress" hidden="false">
					<defaultValue>3004</defaultValue>
				</property>
				<property key="scl.statemodel.state.delinquent" hidden="false">
					<defaultValue>3005</defaultValue>
				</property>
			</group>
		</group>
	</group>

</infoman-config>
