<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
<!DOCTYPE DCServerConfig SYSTEM "dcservers.dtd" >

<!-- 
  =======================================================================================
  Project: OpenGTS - Open GPS Tracking System
  URL    : http://www.opengts.org
  File   : dcservers.xml
  =======================================================================================
-->

<!-- 
  =======================================================================================
  DCServerConfig tag attributes:
    "bindAddress" - the IP address (or host) interface to which these servers will "bind"
       Typically only necessary if this computer has more than one network interface.
       If this value is blank, then the server will bind to all network interfaces.
    "backlog" - The maximum queue length for incoming connection indications (a request to 
       connect) is set to this backlog value.  If a connection indication arrives when the 
       queue is full, the connection is refused.  (see "java.net.ServerSocket")
    "portOffset" - An offset value to add to the specified ports before setting up the
       port 'listeners'.  This value should typically remain '0'.
  Notes:
    - The general ports used for OpenGTS device communication server (DCS) modules are
      typically in the range 31000 to 31999.  However these can be changed on the 
      "ListenPorts" tag.
  =======================================================================================
-->

<!-- ================================================================================ -->
<DCServerConfig
    bindAddress=""
    backlog=""
    includeDir="dcservers"
    >
    <!-- ================================================================================
     === Standard properties:
     ===    uniqueIdPrefix          - [String]
     ===    commandProtocol         - [tcp|udp|sms]
     ===    ackResponsePort         - [int]
     ===    clientCommandPort       - [int]
     ===    clientCommandPort.udp   - [int]
     ===    clientCommandPort.tcp   - [int]
     ===    tcpIdleTimeoutMS        - [long]
     ===    tcpPacketTimeoutMS      - [long]
     ===    tcpSessionTimeoutMS     - [long]
     ===    udpIdleTimeoutMS        - [long]
     ===    udpPacketTimeoutMS      - [long]
     ===    udpSessionTimeoutMS     - [long]
     ===    minimumSpeedKPH         - [double]
     ===    estimateOdometer        - [boolean]
     ===    simulateGeozones        - [boolean]
     ===    simulateDigitalInputs   - [boolean]
     ===    minimumMovedMeters      - [double]
     ===    saveRawDataPackets      - [boolean]
     ===    startStopSupported      - [boolean]
     ===    statusLocationInMotion  - [boolean] Translate Location to InMotion
     -->

    <!-- ================================================================================ -->
    <Include file="dcserver_template.xml" optional="true"/>
    <DCServer name="template">
    
        <!--
         === DCS Description
         -->
        <Description><![CDATA[
            Example Template Server
            ]]></Description>
            
        <!-- 
         === Possible Unique-ID prefixes ("*" means that the mobile-id is used as-is)
         === Example: If the mobile-id is "123456789012345", then the "Unique ID" value
         === set in the Device admin page can be one of the following:
         ===   imei_123456789012345
         ===   123456789012345
         ===   <etc.>
         -->
        <UniqueIDPrefix><![CDATA[
            template_
            imei_
            *
            ]]></UniqueIDPrefix>
            
        <!-- 
         === Listen ports
         -->
        <ListenPorts 
            tcpPort="31200" 
            udpPort="31200"
            />
            
        <!--
         === DCS runtime properties
         -->
        <Properties>
            <!-- <Property key="parseFormat">1</Property>               -->
            <!-- <Property key="minimumSpeedKPH">4.0</Property>         -->
            <!-- <Property key="estimateOdometer">true</Property>       -->
            <!-- <Property key="simulateGeozones">true</Property>       -->
            <!-- <Property key="simulateDigitalInputs">0xFF</Property>  -->
            <!-- <Property key="tcpIdleTimeoutMS">5000</Property>       -->
            <!-- <Property key="tcpPacketTimeoutMS">10000</Property>    -->
            <!-- <Property key="tcpSessionTimeoutMS">20000</Property>   -->
            </Properties>
        
    </DCServer>

    <!-- ================================================================================ -->
    <DCServer name="gtsdmtp">
    
        <!--
         === DCS Description
         -->
        <Description><![CDATA[
            OpenDMTP
            ]]></Description>
            
        <!-- 
         === Listen ports
         -->
        <ListenPorts 
            tcpPort="31000" 
            udpPort="31000"
            />
            
        <!--
         === DCS runtime properties
         -->
        <Properties>
            <Property key="firstSessionNegotiation">true</Property>
            <Property key="udpReturnResponse">true</Property>
            <Property key="simulateGeozones">false</Property>
            <!-- <Property key="customEvent.55">1|H|0|2 2|H|0|4 6|H|0|8 8|H|0|2 9|H|0|2 10|H|0|3 11|H|0|3 12|H|0|4 93|H|0|2 88|H|0|2 82|H|0|4 4|H|0|1</Property> -->
            </Properties>
            
    </DCServer>

    <!-- ================================================================================ -->
    <DCServer name="aspicore">
    
        <!--
         === DCS Description
         -->
        <Description><![CDATA[
            Aspicore GSM Tracker
            ]]></Description>
            
        <!-- 
         === Possible Unique-ID prefixes ("*" means that the mobile-id is used as-is)
         === Example: If the mobile-id is "123456789012345", then the "Unique ID" value
         === set in the Device admin page can be one of the following:
         ===   imei_123456789012345
         ===   123456789012345
         ===   <etc.>
         -->
        <UniqueIDPrefix><![CDATA[
            asp_
            s60_
            imei_
            *
            ]]></UniqueIDPrefix>
            
        <!-- 
         === Listen ports
         -->
        <ListenPorts 
            tcpPort="31265" 
            udpPort="31265"
            />
            
        <!--
         === DCS runtime properties
         -->
        <Properties>
        
            <Property key="minimumSpeedKPH">3.0</Property>
            <!--
             === "minimumSpeedKPH" - The minimum speed value, below which the device will
             === be assumed to be stopped, and the 'speed' will be explicitly set to '0.0'.
             -->

            <Property key="statusLocationInMotion">true</Property>
            <!--
             === "statusLocationInMotion" - If true, the DCS will replace an event with a
             === STATUS_LOCATION status code with a STATUS_MOTION_IN_MOTION status code, if
             === the speed of the vehicle is greater than zero.
             -->

            <Property key="minimumMovedMeters">0</Property>
            <!--
             === "minimumMovedMeters" - if > '0', subsequent received events will be omitted if
             === they are within the specified number of meters to the previous event.  Useful
             === for eliminating multiple events at the same location, when the device continues
             === to periodically report a location even if the device is stopped.
             -->
             
            <Property key="estimateOdometer">false</Property>
            <!-- 
             === "estimateOdometer" - If true, the DCS will calculate the current event odometer
             === based on the distance traveled since the last valid GPS location
             -->
             
            <Property key="simulateGeozones">true</Property>
            <!--
             === "simulateGeozones" - If true, the DCS will check for geozone arrivals/departures
             === and insert the appropriate arrive/depart events.
             -->
 
            <Property key="tcpIdleTimeoutMS">0</Property>
            <Property key="tcpPacketTimeoutMS">0</Property>
            <Property key="tcpSessionTimeoutMS">0</Property>
            <!-- 
             === TCP Connection timeouts
             -->

            <Property key="udpIdleTimeoutMS">3000</Property>
            <Property key="udpPacketTimeoutMS">4000</Property>
            <Property key="udpSessionTimeoutMS">10000</Property>
            <!-- 
             === UDP Connection timeouts
             -->

            </Properties>
            
    </DCServer>

    <!-- ================================================================================ -->
    <DCServer name="icare">
    
        <!--
         === DCS Description
         -->
        <Description><![CDATA[
            ICare
            ]]></Description>
            
        <!-- 
         === Possible Unique-ID prefixes ("*" means that the mobile-id is used as-is)
         === Example: If the mobile-id is "123456789012345", then the "Unique ID" value
         === set in the Device admin page can be one of the following:
         ===   imei_123456789012345
         ===   123456789012345
         ===   <etc.>
         -->
        <UniqueIDPrefix><![CDATA[
            icare_
            imei_
            *
            ]]></UniqueIDPrefix>
            
        <!-- 
         === Listen ports
         -->
        <ListenPorts 
            tcpPort="31160" 
            udpPort="31160"
            />
            
        <!--
         === DCS runtime properties
         -->
        <Properties>
            </Properties>
            
    </DCServer>

    <!-- ================================================================================ -->
    <DCServer name="tk10x">
    
        <!--
         === DCS Description
         -->
        <Description><![CDATA[
            Generic TK102/TK103
            ]]></Description>
            
        <!-- 
         === Possible Unique-ID prefixes ("*" means that the mobile-id is used as-is)
         === Example: If the mobile-id is "123456789012345", then the "Unique ID" value
         === set in the Device admin page can be one of the following:
         ===   imei_123456789012345
         ===   123456789012345
         ===   <etc.>
         -->
        <UniqueIDPrefix><![CDATA[
            tk_
            sip_
            imei_
            *
            ]]></UniqueIDPrefix>
            
        <!-- 
         === Listen ports
         -->
        <ListenPorts 
            tcpPort="31272" 
            udpPort="31272"
            />
            
        <!--
         === DCS runtime properties
         -->
        <Properties>
        
            <Property key="minimumSpeedKPH">2.0</Property>
            <!--
             === "minimumSpeedKPH" - The minimum speed value, below which the device will
             === be assumed to be stopped, and the 'speed' will be explicitly set to '0.0'.
             -->

            <Property key="statusLocationInMotion">true</Property>
            <!--
             === "statusLocationInMotion" - If true, the DCS will replace an event with a
             === STATUS_LOCATION status code with a STATUS_MOTION_IN_MOTION status code, if
             === the speed of the vehicle is greater than zero.
             -->

            <Property key="minimumMovedMeters">0</Property>
            <!--
             === "minimumMovedMeters" - if > '0', subsequent received events will be omitted if
             === they are within the specified number of meters to the previous event.  Useful
             === for eliminating multiple events at the same location, when the device continues
             === to periodically report a location even if the device is stopped.
             -->

            <Property key="useLastValidGPSLocation">false</Property>
            <!--
             === "useLastValidGPSLocation" - if the current GPS location is invalid, then use 
             === the last known GPS location from the 'Device' record as the current GPS location.
             -->

            <Property key="estimateOdometer">true</Property>
            <!-- 
             === "estimateOdometer" - If true, the DCS will calculate the current event odometer
             === based on the distance traveled since the last valid GPS location
             -->
             
            <Property key="simulateGeozones">true</Property> <!-- if supported -->
            <!--
             === "simulateGeozones" - If true, the DCS will check for geozone arrivals/departures
             === and insert the appropriate arrive/depart events.
             -->
 
            <Property key="simulateDigitalInputs">0xFF</Property>
            <!--
             === "simulateDigitalInputs" - The digital input mask which will be checked for 
             === changes in state.  Digital inputs not included in the mask will be ignored.
             -->

            <Property key="packetLenEndOfStream">false</Property>
            <!--
             === "packetLenEndOfStream" - If true, the DCS will read until the end of the session
             === input stream before packet contents.  When set to true, only a single packet is
             === processed per TCP/UDP session.  If false, the input stream will be examined for
             === a matching line-terminating character (such as a line-feed).  When false, multiple
             === incoming packets can be handled per TCP/UDP session, as long as each packet has
             === a proper terminating character.
             -->

            <Property key="returnAckOnLogon">LOAD</Property>
            <!-- Property key="returnAckOnLogon">**,imei:%{IMEI},Q;</Property -->
            <!--
             === "returnAckOnLogon" - specifies the ACK to return when "##,imei:123456789012345,A"
             === is received.  The replacement variable "%{IMEI}" may be used to include the IMEI#
             === in the returned ACK.
             -->

            <Property key="returnAckOnHeartbeat">ON</Property>
            <!-- Property key="returnAckOnHeartbeat">**,imei:%{IMEI},B;</Property -->
            <!--
             === "returnAckOnHeartbeat" - specifies the ACK to return when "123456789012345"
             === is received.  The replacement variable "%{IMEI}" may be used to include the IMEI#
             === in the returned ACK.
             -->

            <Property key="returnAckOnKeepAlive">LOAD</Property> <!-- OBSOLETE, use "returnAckOnLogon" above -->
            <!-- Property key="returnAckOnKeepAlive">**,imei:%{IMEI},Q;</Property -->
            <!-- OBSOLETE (use "returnAckOnLogon" instead)
             === "returnAckOnKeepAlive" - specifies the ACK to return when "##,imei:123456789012345,A"
             === is received.  The replacement variable "%{IMEI}" may be used to include the IMEI#
             === in the returned ACK.
             -->

            <Property key="useAlternateMobileID">false</Property>
            <!--
             === "useAlternateMobileID" - Only applicable for TK103-3 devices, and only if the TK103-3
             ===  device does not provide "BP05" (mobile-id) event records.  If true, the DCS will 
             ===  use an alternate location for the Mobile-ID, from an area of the packet typically called 
             ===  the "Running NO./Time" field.  This is only necessary, and should only be used, IF the 
             ===  TK103-3 event packet does NOT emit "BP05" records which usually define the device 
             ===  mobile-id (IMEI#).  This will only work if the specific TK103-3 device type does include 
             ===  a portion of the IMEI#/MobileID in the "Running NO./Time" field (which some devices 
             ===  apparently do).  This "alternate" mobile-id location will only provide a portion of the
             ===  actual IMEI#, so it is possible that 2 different devices could possibly have the same
             ===  mobile-id if the difference in their IMEI#'s is in a part that is not included in this
             ===  abbreviated mobile-id provided in the "Running NO./Time" field.
             -->
            <Property key="alternateMobileIDPrefix">000</Property>
            <!--
             === "alternateMobileIDPrefix" - When "useAlternateMobileID" is set to true, the value set
             ===  on the "alternateMobileIDPrefix" property will be prepended to the alternate mobile-id.
             ===  The alternate mobile-id is 12 characters in length and pre-ending "000" will extend
             ===  the mobile-id to the standard 15-character length.
             -->

            <Property key="speedConversionFactor">1.8520</Property>
            <!--
             === "speedConversionFactor" - specifies the conversion factor used to convert the event
             === provided speed into kilometers-per-hour (km/h).  Most TK102/TK103 devices specify 
             === speed in "Knots" which has a conversion factor of 1.852 to convert to km/h.  If your
             === device already specifies speed in km/h, then the conversion factor should be 1.000
             -->

            <Property key="tcpIdleTimeoutMS">300000</Property>
            <Property key="tcpPacketTimeoutMS">5000</Property>
            <Property key="tcpSessionTimeoutMS">300000</Property>
            <!-- 
             === TCP Connection timeouts
             -->

            <Property key="udpIdleTimeoutMS">3000</Property>
            <Property key="udpPacketTimeoutMS">4000</Property>
            <Property key="udpSessionTimeoutMS">10000</Property>
            <!-- 
             === UDP Connection timeouts
             -->

            </Properties>

        <!--
         === DCS EventCode to StatusCode mapping 
         -->
        <EventCodeMap enabled="false">
            <!-- Event-Code to Status-Code mapping -->
            <Code key="tracker"     >0xF020</Code> <!-- STATUS_LOCATION -->
            <Code key="ac alarm"    >0xF841</Code> <!-- STATUS_PANIC_ON -->
            <Code key="moving"      >0xF11C</Code> <!-- STATUS_MOTION_MOVING -->
            <Code key="move"        >0xF11C</Code> <!-- STATUS_MOTION_MOVING -->
            <Code key="battery"     >0xFD13</Code> <!-- STATUS_POWER_FAILURE -->
            <Code key="low battery" >0xFD10</Code> <!-- STATUS_LOW_BATTERY -->
            <Code key="low batt"    >0xFD10</Code> <!-- STATUS_LOW_BATTERY -->
            <Code key="help me"     >0xF841</Code> <!-- STATUS_PANIC_ON -->
            <Code key="helpme"      >0xF841</Code> <!-- STATUS_PANIC_ON -->
            <Code key="ACC ON"      >0xF401</Code> <!-- STATUS_IGNITION_ON -->
            <Code key="ACC OFF"     >0xF403</Code> <!-- STATUS_IGNITION_OFF -->
            <Code key="CutWatch"    >0xF889</Code> <!-- STATUS_BREACH_ON -->
            <Code key="shake"       >0xF120</Code> <!-- STATUS_MOTION_ACCELEROMETER -->
            <Code key="sensor alarm">0xF120</Code> <!-- STATUS_MOTION_ACCELEROMETER -->
            <Code key="speed"       >0xF11A</Code> <!-- STATUS_MOTION_EXCESS_SPEED -->
            <Code key="stockade"    >0xF250</Code> <!-- STATUS_GEOFENCE_VIOLATION -->
            <Code key="trigger"     >0xF847</Code> <!-- STATUS_ALARM_ON -->
            <!-- Vehicle Status: StatusCode events - "ioCode:BYTE#/BIT#=STATE" -->
            <!-- NOTE: the following may not yet be supported by the DCS -->
            <Code key="ioCode:12=0" >0xFD31</Code> <!-- STATUS_CONNECTION_FAILURE -->
            <Code key="ioCode:14=0" >0xFD13</Code> <!-- STATUS_POWER_FAILURE -->
            <Code key="ioCode:20=0" >0xFD22</Code> <!-- STATUS_GPS_FAILURE -->
            <Code key="ioCode:24=0" >0xFD13</Code> <!-- STATUS_POWER_FAILURE -->
            <Code key="ioCode:25=0" >0xFD23</Code> <!-- STATUS_GPS_ANTENNA_OPEN -->
            <Code key="ioCode:26=0" >0xFD24</Code> <!-- STATUS_GPS_ANTENNA_SHORT -->
            <Code key="ioCode:36=0" >0xF847</Code> <!-- STATUS_ALARM_ON -->
            <Code key="ioCode:37=0" >0xF11A</Code> <!-- STATUS_MOTION_EXCESS_SPEED -->
            <Code key="ioCode:42=0" >0xF11A</Code> <!-- STATUS_MOTION_EXCESS_SPEED -->
            <Code key="ioCode:44=0" >0xF270</Code> <!-- STATUS_GEOFENCE_ACTIVE -->
            <Code key="ioCode:45=0" >0xFD23</Code> <!-- STATUS_GPS_ANTENNA_OPEN -->
            <Code key="ioCode:46=0" >0xFD24</Code> <!-- STATUS_GPS_ANTENNA_SHORT -->
            <Code key="ioCode:47=0" >0xF280</Code> <!-- STATUS_GEOFENCE_INACTIVE -->
            <!-- Vehicle Status: gpioInput state - "ioGPIO:BYTE#/BIT#=STATE" -->
            <!-- NOTE: the following may not yet be supported by the DCS -->
            <Code key="ioGPIO:15=0" >0x0010</Code> <!-- 12v sensor alarm #1 On  (0=true)  -->
            <Code key="ioGPIO:15=1" >0x0000</Code> <!-- 12v sensor alarm #1 Off (1=false) -->
            <Code key="ioGPIO:16=0" >0x0020</Code> <!-- 12v sensor alarm #2 On  (0=true)  -->
            <Code key="ioGPIO:16=1" >0x0000</Code> <!-- 12v sensor alarm #2 Off (1=false) -->
            <Code key="ioGPIO:23=0" >0x0008</Code> <!-- Backup powered On  (0=true)  -->
            <Code key="ioGPIO:23=1" >0x0000</Code> <!-- Backup powered Off (1=false) -->
            <Code key="ioGPIO:32=0" >0x0000</Code> <!-- ACC Off (0=false) -->
            <Code key="ioGPIO:32=1" >0x0001</Code> <!-- ACC On  (1=true)  -->
            <Code key="ioGPIO:35=0" >0x0002</Code> <!-- Engine On  (0=true)  -->
            <Code key="ioGPIO:35=1" >0x0000</Code> <!-- Engine Off (1=false) -->
            </EventCodeMap>

        <Commands dispatchPort="0">
            <!-- Note: To see these commands, property "deviceInfo.showSmsButton" may need 
             === to be set 'true' in "private.xml" (or "private/private_common.xml") -->
             
            <!-- ACL -->
            <AclName>acl.dcs.tk10x</AclName>
            
            <!-- Locate SMS (Ping) -->
            <Command name="LocateSMS" enabled="false">
                <Type>map,admin</Type>
                <Description>SMS Locate</Description>
                <!-- fill in this value with the proper command string -->
                <String protocol="sms"><![CDATA[WhereAreYou?]]></String>
                <StatusCode></StatusCode>
                </Command>
                
            <!-- Send General Command via (should be disabled for production) -->
            <Command name="CommandSMS" enabled="false">
                <Type>map,admin</Type>
                <Description>Send Text (SMS)</Description>
                <String protocol="sms"><![CDATA[${arg}]]></String>
                <StatusCode></StatusCode>
                </Command>
                
        </Commands>
        
    </DCServer>

    <!-- ================================================================================ -->
    <DCServer name="sipgear">
    
        <!--
         === DCS Description
         -->
        <Description><![CDATA[
            ZhongShan SIPGEAR Technology Co, Ltd.
            ]]></Description>
            
        <!-- 
         === Possible Unique-ID prefixes ("*" means that the mobile-id is used as-is)
         === Example: If the mobile-id is "123456789012345", then the "Unique ID" value
         === set in the Device admin page can be one of the following:
         ===   imei_123456789012345
         ===   123456789012345
         ===   <etc.>
         -->
        <UniqueIDPrefix><![CDATA[
            sip_
            imei_
            *
            ]]></UniqueIDPrefix>
            
        <!-- 
         === Listen ports
         -->
        <ListenPorts 
            tcpPort="31170" 
            udpPort="31170"
            />
            
        <!--
         === DCS runtime properties
         -->
        <Properties>
        
            <Property key="minimumSpeedKPH">3.0</Property>
            <!--
             === "minimumSpeedKPH" - The minimum speed value, below which the device will
             === be assumed to be stopped, and the 'speed' will be explicitly set to '0.0'.
             -->

            <Property key="statusLocationInMotion">true</Property>
            <!--
             === "statusLocationInMotion" - If true, the DCS will replace an event with a
             === STATUS_LOCATION status code with a STATUS_MOTION_IN_MOTION status code, if
             === the speed of the vehicle is greater than zero.
             -->

            <Property key="minimumMovedMeters">0</Property>
            <!--
             === "minimumMovedMeters" - if > '0', subsequent received events will be omitted if
             === they are within the specified number of meters to the previous event.  Useful
             === for eliminating multiple events at the same location, when the device continues
             === to periodically report a location even if the device is stopped.
             -->
             
            <Property key="estimateOdometer">true</Property>
            <!-- 
             === "estimateOdometer" - If true, the DCS will calculate the current event odometer
             === based on the distance traveled since the last valid GPS location
             -->
             
            <Property key="simulateGeozones">true</Property> <!-- if supported -->
            <!--
             === "simulateGeozones" - If true, the DCS will check for geozone arrivals/departures
             === and insert the appropriate arrive/depart events.
             -->
 
            <Property key="packetLenEndOfStream">false</Property>
            <!--
             === "packetLenEndOfStream" - If true, the DCS will read until the end of the session
             === input stream before packet contents.  When set to true, only a single packet is
             === processed per TCP/UDP session.  If false, the input stream will be examined for
             === a matching line-terminating character (such as a line-feed).  When false, multiple
             === incoming packets can be handled per TCP/UDP session, as long as each packet has
             === a proper terminating character.
             -->
             
            <Property key="tcpIdleTimeoutMS">60000</Property>
            <Property key="tcpPacketTimeoutMS">5000</Property>
            <Property key="tcpSessionTimeoutMS">60000</Property>
            <!-- 
             === TCP Connection timeouts
             -->

            <Property key="udpIdleTimeoutMS">3000</Property>
            <Property key="udpPacketTimeoutMS">4000</Property>
            <Property key="udpSessionTimeoutMS">10000</Property>
            <!-- 
             === UDP Connection timeouts
             -->

            </Properties>
            
        <!-- 
         === DCS EventCode to StatusCode mapping 
         -->
        <EventCodeMap enabled="false">
            </EventCodeMap>
            
        <Commands dispatchPort="0">
            <!-- Note: To see these commands, property "deviceInfo.showSmsButton" may need 
             === to be set 'true' in "private.xml" (or "private/private_common.xml") -->
             
            <!-- ACL -->
            <AclName>acl.dcs.sipgear</AclName>
            
            <!-- Locate SMS (Ping) -->
            <Command name="LocateSMS" enabled="false">
                <Type>map,admin</Type>
                <Description>SMS Locate</Description>
                <!-- fill in this value with the proper command string -->
                <String protocol="sms"><![CDATA[WhereAreYou?]]></String>
                <StatusCode></StatusCode>
                </Command>
                
            <!-- Send General Command via (should be disabled for production) -->
            <Command name="CommandSMS" enabled="false">
                <Type>map,admin</Type>
                <Description>Send Text (SMS)</Description>
                <String protocol="sms"><![CDATA[${arg}]]></String>
                <StatusCode></StatusCode>
                </Command>
                
        </Commands>
        
    </DCServer>

    <!-- ================================================================================ -->
    
    <DCServer name="taip">
    
        <!--
         === DCS Description
         -->
        <Description><![CDATA[
            TAIP (Trimble ASCII Interface Protocol)
            ]]></Description>
            
        <!-- 
         === Possible Unique-ID prefixes ("*" means that the mobile-id is used as-is)
         === Example: If the mobile-id is "123456789012345", then the "Unique ID" value
         === set in the Device admin page can be one of the following:
         ===   imei_123456789012345
         ===   123456789012345
         ===   <etc.>
         -->
        <UniqueIDPrefix><![CDATA[
            taip_
            ]]></UniqueIDPrefix>
            
        <!-- 
         === Listen ports
         -->
        <ListenPorts 
            tcpPort="31275" 
            udpPort="31275"
            />
            
        <!--
         === DCS runtime properties
         -->
        <Properties>

            <Property key="minimumSpeedKPH">4.0</Property>
            <!--
             === "minimumSpeedKPH" - The minimum speed value, below which the device will
             === be assumed to be stopped, and the 'speed' will be explicitly set to '0.0'.
             -->

            <Property key="estimateOdometer">true</Property>
            <!-- 
             === "estimateOdometer" - If true, the DCS will calculate the current event odometer
             === based on the distance traveled since the last valid GPS location
             -->
             
            <Property key="simulateGeozones">true</Property>
            <!--
             === "simulateGeozones" - If true, the DCS will check for geozone arrivals/departures
             === and insert the appropriate arrive/depart events.
             -->
 
            <Property key="tcpIdleTimeoutMS">10000</Property>
            <Property key="tcpPacketTimeoutMS">10000</Property>
            <Property key="tcpSessionTimeoutMS">300000</Property>
            <Property key="clientCommandPort.tcp">0</Property>
            <!-- 
             === TCP Connection timeouts
             -->

            <Property key="clientCommandPort.udp">0</Property>
            <!-- 
             === UDP Connection timeouts
             -->

            </Properties>
            
        <!-- 
         === DCS EventCode to StatusCode mapping 
         -->
        <EventCodeMap enabled="false">
            </EventCodeMap>
            
    </DCServer>

    <!-- ================================================================================ -->

    <DCServer name="astra">
    
        <!--
         === DCS Description
         -->
        <Description><![CDATA[
            Astra Telematics Tracker
            ]]></Description>

        <!-- 
         === Possible Unique-ID prefixes ("*" means that the mobile-id is used as-is)
         === Example: If the mobile-id is "123456789012345", then the "Unique ID" value
         === set in the Device admin page can be one of the following:
         ===   astra_123456789012345
         ===   imei_123456789012345
         ===   123456789012345
         ===   <etc.>
         -->
        <UniqueIDPrefix><![CDATA[
            as_
            astra_
            imei_
            *
            ]]></UniqueIDPrefix>
            
        <!-- 
         === Listen ports
         -->
        <ListenPorts 
            tcpPort="31090" 
            udpPort="31090"
            />
            
        <!--
         === DCS runtime properties
         -->
        <Properties>

            <Property key="estimateOdometer">false</Property>
            <!-- 
             === "estimateOdometer" - If true, the DCS will calculate the current event odometer
             === based on the distance traveled since the last valid GPS location
             -->
 
            <Property key="tcpIdleTimeoutMS">600000</Property>
            <Property key="tcpPacketTimeoutMS">600000</Property>
            <Property key="tcpSessionTimeoutMS">600000</Property>
            <!-- 
             === TCP Connection timeouts
             -->

            <Property key="udpIdleTimeoutMS">6000</Property>
            <Property key="udpPacketTimeoutMS">8000</Property>
            <Property key="udpSessionTimeoutMS">20000</Property>
            <!-- 
             === UDP Connection timeouts
             -->

            </Properties>
            
    </DCServer>

    <!-- ================================================================================ -->

    <DCServer name="lantrix">

        <!--
         === DCS Description
         -->
        <Description><![CDATA[
            Lantrix T1800/T2000
            ]]></Description>
            
        <!-- 
         === Possible Unique-ID prefixes ("*" means that the mobile-id is used as-is)
         === Example: If the mobile-id is "123456789012345", then the "Unique ID" value
         === set in the Device admin page can be one of the following:
         ===   imei_123456789012345
         ===   123456789012345
         ===   <etc.>
         -->
        <UniqueIDPrefix><![CDATA[
            lt_            
            imei_
            *
            ]]></UniqueIDPrefix>
            
        <!-- 
         === Listen ports
         -->
        <ListenPorts 
            tcpPort="" 
            udpPort="31097"
            /> <!-- "4097" -->
            
        <!--
         === DCS runtime properties
         -->
        <Properties>
        
            <Property key="minimumSpeedKPH">3.0</Property>
            <!--
             === "minimumSpeedKPH" - The minimum speed value, below which the device will
             === be assumed to be stopped, and the 'speed' will be explicitly set to '0.0'.
             -->

            <Property key="statusLocationInMotion">true</Property>
            <!--
             === "statusLocationInMotion" - If true, the DCS will replace an event with a
             === STATUS_LOCATION status code with a STATUS_MOTION_IN_MOTION status code, if
             === the speed of the vehicle is greater than zero.
             -->

            <Property key="minimumMovedMeters">0</Property>
            <!--
             === "minimumMovedMeters" - if > '0', subsequent received events will be omitted if
             === they are within the specified number of meters to the previous event.  Useful
             === for eliminating multiple events at the same location, when the device continues
             === to periodically report a location even if the device is stopped.
             -->
             
            <Property key="estimateOdometer">true</Property>
            <!-- 
             === "estimateOdometer" - If true, the DCS will calculate the current event odometer
             === based on the distance traveled since the last valid GPS location
             -->
             
            <Property key="simulateGeozones">true</Property> <!-- if supported -->
            <!--
             === "simulateGeozones" - If true, the DCS will check for geozone arrivals/departures
             === and insert the appropriate arrive/depart events.
             -->
 
            <Property key="packetLenEndOfStream">false</Property>
            <!--
             === "packetLenEndOfStream" - If true, the DCS will read until the end of the session
             === input stream before packet contents.  When set to true, only a single packet is
             === processed per TCP/UDP session.  If false, the input stream will be examined for
             === a matching line-terminating character (such as a line-feed).  When false, multiple
             === incoming packets can be handled per TCP/UDP session, as long as each packet has
             === a proper terminating character.
             -->
             
            <Property key="tcpIdleTimeoutMS">60000</Property>
            <Property key="tcpPacketTimeoutMS">5000</Property>
            <Property key="tcpSessionTimeoutMS">60000</Property>
            <!-- 
             === TCP Connection timeouts
             -->

            <Property key="udpIdleTimeoutMS">6000</Property>
            <Property key="udpPacketTimeoutMS">8000</Property>
            <Property key="udpSessionTimeoutMS">20000</Property>
            <!-- 
             === UDP Connection timeouts
             -->

            </Properties>
            
        <!-- 
         === DCS EventCode to StatusCode mapping 
         -->
        <EventCodeMap enabled="false">
            </EventCodeMap>
            
        <Commands dispatchPort="0">
            <!-- Note: To see these commands, property "deviceInfo.showSmsButton" may need 
             === to be set 'true' in "private.xml" (or "private/private_common.xml") -->
             
            <!-- ACL -->
            <AclName>acl.dcs.lantrix</AclName>
            
            <!-- Locate SMS (Ping) -->
            <Command name="LocateSMS" enabled="false">
                <Type>map,admin</Type>
                <Description>SMS Locate</Description>
                <!-- fill in this value with the proper command string -->
                <String protocol="sms"><![CDATA[WhereAreYou?]]></String>
                <StatusCode></StatusCode>
                </Command>
                
            <!-- Send General Command via (should be disabled for production) -->
            <Command name="CommandSMS" enabled="false">
                <Type>map,admin</Type>
                <Description>Send Text (SMS)</Description>
                <String protocol="sms"><![CDATA[${arg}]]></String>
                <StatusCode></StatusCode>
                </Command>
                
        </Commands>
        
    </DCServer>

    <!-- ================================================================================ -->

    <DCServer name="w-ctrac">
        <!--
         === This configuration requires that the CelltracGTS/Server plug-in is installed.
         === For more info, go to http://www.geotelematic.com/CelltracGTS/Server.html
         -->
    
        <!--
         === DCS Description
         -->
        <Description><![CDATA[
            CelltracGTS/Server
            ]]></Description>

        <!--
         === Supported Device Models
         -->
        <ModelNames><![CDATA[
            CelltracGTS/Free
            CelltracGTS/Pro
            ]]></ModelNames>

        <!-- 
         === Possible Unique-ID prefixes ("*" means that the mobile-id is used as-is)
         === Example: If the mobile-id is "123456789012345", then the "Unique ID" value
         === set in the Device admin page can be one of the following:
         ===   imei_123456789012345
         ===   123456789012345
         ===   <etc.>
         -->
        <UniqueIDPrefix><![CDATA[
            ct_
            ctrac_
            gprmc_
            uid_
            imei_
            *
            ]]></UniqueIDPrefix>

        <!--
         === DCS runtime properties
         -->
        <Properties>

            <Property key="debugMode">false</Property>
            <!--
             === "debugMode" - Enable only for debug logging purposes.
             -->

            <Property key="showURL">true</Property>
            <!--
             === "showURL" - Enable for debugging incoming request URL.
             -->

            <Property key="maximumHDOP">0.0</Property>
            <!--
             === "maximumHDOP" - The maximum HDOP value allowed.  Events with HDOP values
             === above this limit will be rejected/omitted.  Setting this limit to '0.0'
             === effectively disables HDOP checking.
             -->

            <Property key="minimumSpeedKPH">3.1</Property>
            <!--
             === "minimumSpeedKPH" - The minimum speed value, below which the device will
             === be assumed to be stopped, and the 'speed' will be explicitly set to '0.0'.
             -->
 
            <Property key="estimateOdometer">true</Property>
            <!-- 
             === "estimateOdometer" - If true, the DCS will calculate the current event odometer
             === based on the distance traveled since the last valid GPS location
             -->

            <Property key="simulateGeozones">true</Property>
            <!--
             === "simulateGeozones" - If true, the DCS will check for geozone arrivals/departures
             === and insert the appropriate arrive/depart events.
             -->

            <Property key="minimumMovedMeters">0</Property>
            <!--
             === "minimumMovedMeters" - if > '0', subsequent received events will be omitted if
             === they are within the specified number of meters to the previous event.  Useful
             === for eliminating multiple events at the same location, when the device continues
             === to periodically report a location even if the device is stopped.
             -->

            <Property key="statusLocationInMotion">true</Property>
            <!--
             === "statusLocationInMotion" - If true, the DCS will replace an event with a
             === STATUS_LOCATION status code with a STATUS_MOTION_IN_MOTION status code, if
             === the speed of the vehicle is greater than zero.
             -->

            <Property key="ignoreInvalidGPSFlag">false</Property>
            <!--
             === "ignoreInvalidGPSFlag" - If true, ignore any invalid GPS flag on Location events. 
             -->

            <Property key="enabledGET">true</Property>
            <!--
             === "enabledGET" - GET enabled
             -->

            <Property key="enabledPOST">true</Property>
            <!--
             === "enabledPOST" - POST enabled
             -->

            </Properties>

    </DCServer>

    <!-- ================================================================================ -->

</DCServerConfig>

