<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE JposEntries PUBLIC "-//JavaPOS//DTD//EN" "http://jposloader.cvs.sourceforge.net/*checkout*/jposloader/jcl/src/jpos/res/jcl.dtd?revision=1.2">
<!-- original DOCTYPE: <!DOCTYPE JposEntries PUBLIC "-//JavaPOS//DTD//EN" "jpos/res/jcl.dtd"> -->
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<JposEntries>
    <!-- Generic POSKeyboard Device Implementation (included w/ OFBiz) -->
    <JposEntry logicalName="GenericKeyboard">
        <creation factoryClass="org.ofbiz.pos.jpos.factory.OfbizJposServiceFactory" serviceClass="org.ofbiz.pos.jpos.service.KeyboardService"/>
        <vendor name="The Open For Business Project" url="http://ofbiz.apache.org"/>
        <jpos category="POSKeyboard" version="1.7"/>
        <product description="Generic Keyboard Device" name="Keyboard" url="ofbiz.apache.org"/>

        <!--Other non JavaPOS required property (mostly vendor properties and bus specific properties i.e. RS232 )-->
        <prop name="key.VK_ESCAPE" type="String" value="501"/>
        <prop name="key.VK_ENTER" type="String" value="500"/>
        <prop name="key.VK_F1" type="String" value="201"/>
        <prop name="key.VK_F2" type="String" value="202"/>
        <prop name="key.VK_F2+CTRL" type="String" value="203"/>
        <prop name="key.VK_F3" type="String" value="204"/>
        <prop name="key.VK_F3+CTRL" type="String" value="205"/>
        <prop name="key.VK_F3+SHIFT" type="String" value="210"/>
        <prop name="key.VK_F4" type="String" value="401"/>
        <prop name="key.VK_F5" type="String" value="402"/>
        <prop name="key.VK_F6" type="String" value="206"/>
        <prop name="key.VK_F6+CTRL" type="String" value="207"/>
        <prop name="key.VK_F7" type="String" value="604"/>
        <prop name="key.VK_F7+CTRL" type="String" value="605"/>
        <prop name="key.VK_F7+CTRL+SHIFT" type="String" value="220"/>
        <prop name="key.VK_F8" type="String" value="208"/>
        <prop name="key.VK_F9" type="String" value="209"/>
        <prop name="key.VK_F10" type="String" value="223"/>
        <prop name="key.VK_F10+SHIFT" type="String" value="222"/>
        <prop name="key.VK_F10+CTRL" type="String" value="224"/>
        <prop name="key.VK_F11" type="String" value="211"/>
        <prop name="key.VK_F12" type="String" value="212"/>
        <prop name="key.VK_F12+CTRL" type="String" value="221"/>
    </JposEntry>

    <!-- Generic Keyboard Wedge Scanner Device (included w/ OFBiz)
         * Configure your scanner:
         * 1) Send STX Preamble
         * 2) Send barcode id as prefix
         * 3) Termination char CR
         * 4) Do NOT send ETX Postamble -->

    <JposEntry logicalName="GenericScanner">
        <creation factoryClass="org.ofbiz.pos.jpos.factory.OfbizJposServiceFactory" serviceClass="org.ofbiz.pos.jpos.service.ScannerKybService"/>
        <vendor name="The Open For Business Project" url="http://ofbiz.apache.org"/>
        <jpos category="Scanner" version="1.7"/>
        <product description="Generic Keyboard Wedge Scanner" name="KybScanner" url="ofbiz.apache.org"/>

        <!--Other non JavaPOS required property (mostly vendor properties and bus specific properties i.e. RS232 )-->
        <prop name="BarcodeTypePosition" type="String" value="Prefix"/>
        <prop name="CodeType:CODE11" type="String" value="M"/>
        <prop name="CodeType:CODE39" type="String" value="A"/>
        <prop name="CodeType:CODE93" type="String" value="H"/>
        <prop name="CodeType:CODE128" type="String" value="G"/>
        <prop name="CodeType:CODABAR" type="String" value="K"/>
        <prop name="CodeType:I2OF5" type="String" value="I"/>
        <prop name="CodeType:ID2OF5" type="String" value="J"/>
        <prop name="CodeType:MSI" type="String" value="F"/>
        <prop name="CodeType:UPCA" type="String" value="B"/>
        <prop name="CodeType:UPCE" type="String" value="C"/>
        <prop name="CodeType:EAN13" type="String" value="E"/>
        <prop name="CodeType:EAN8" type="String" value="D"/>

        <!--Zebex predefined barcode identifiers (not implemented, should no be needed else see readCodeMap>
        <prop name="BarcodeTypePosition" type="String" value="Prefix"/>
        <prop name="CodeType:CODE39" type="String" value="M"/>
        <prop name="CodeType:ITF2OF5" type="String" value="I"/>
        <prop name="CodeType:CHINESEPOSTCODE" type="String" value="H"/>
        <prop name="CodeType:UPCE" type="String" value="E"/>
        <prop name="CodeType:UPCA" type="String" value="A"/>
        <prop name="CodeType:EAN13" type="String" value="F"/>
        <prop name="CodeType:EAN8" type="String" value="FF"/>
        <prop name="CodeType:CODABAR" type="String" value="N"/>
        <prop name="CodeType:CODE128" type="String" value="K"/>
        <prop name="CodeType:CODE93" type="String" value="L"/>
        <prop name="CodeType:MSI" type="String" value="P"/>
        <prop name="CodeType:MATRIX25" type="String" value="G"/-->
    </JposEntry>

    <!-- Generic Keyboard Wedge MSR Device (included w/ OFBiz) -->
    <JposEntry logicalName="GenericMsr">
        <creation factoryClass="org.ofbiz.pos.jpos.factory.OfbizJposServiceFactory" serviceClass="org.ofbiz.pos.jpos.service.MsrKybService"/>
        <vendor name="The Open For Business Project" url="http://ofbiz.apache.org"/>
        <jpos category="MSR" version="1.7"/>
        <product description="Generic Keyboard Wedge Msr" name="KybMsr" url="ofbiz.apache.org"/>

        <!--Other non JavaPOS required property (mostly vendor properties and bus specific properties i.e. RS232 )-->
    </JposEntry>

    <!-- Button Triggered Test MSR Device (included w/ OFBiz) -->
    <JposEntry logicalName="TestMsr">
        <creation factoryClass="org.ofbiz.pos.jpos.factory.OfbizJposServiceFactory" serviceClass="org.ofbiz.pos.jpos.service.MsrTestService"/>
        <vendor name="The Open For Business Project" url="http://ofbiz.apache.org"/>
        <jpos category="MSR" version="1.7"/>
        <product description="Button Triggered Test Msr" name="TestMsr" url="ofbiz.apache.org"/>

        <!--Other non JavaPOS required property (mostly vendor properties and bus specific properties i.e. RS232 )-->
    </JposEntry>

    <!-- Null POSPrinter (included w/ OFBiz) -->
    <JposEntry logicalName="NullReceipt">
        <creation factoryClass="org.ofbiz.pos.jpos.factory.OfbizJposServiceFactory" serviceClass="org.ofbiz.pos.jpos.service.NullPosPrinter"/>
        <vendor name="The Open For Business Project" url="http://ofbiz.apache.org"/>
        <jpos category="Scanner" version="1.2"/>
        <product description="Null POSPrinter " name="NullPOSPrinter" url="ofbiz.apache.org"/>

        <!--Other non JavaPOS required property (mostly vendor properties and bus specific properties i.e. RS232 )-->
    </JposEntry>

    <!-- Null CashDrawer (included w/ OFBiz) -->
    <JposEntry logicalName="NullCashDrawer">
        <creation factoryClass="org.ofbiz.pos.jpos.factory.OfbizJposServiceFactory" serviceClass="org.ofbiz.pos.jpos.service.NullCashDrawer"/>
        <vendor name="The Open For Business Project" url="http://ofbiz.apache.org"/>
        <jpos category="Scanner" version="1.2"/>
        <product description="Null CashDrawer " name="NullPOSPrinter" url="ofbiz.apache.org"/>

        <!--Other non JavaPOS required property (mostly vendor properties and bus specific properties i.e. RS232 )-->
    </JposEntry>

    <!-- Star TSP600 POSPrinter (requires starjavapos.jar) -->
    <JposEntry logicalName="StarTSP600">
        <creation factoryClass="com.starmicronics.javapos.StarJposServiceInstanceFactory" serviceClass="com.starmicronics.javapos.StarJPOSPOSPrinter"/>
        <vendor name="Star Micronics Co., Ltd." url="http://www.star-micronics.co.jp"/>
        <jpos category="POSPrinter" version="1.4a"/>
        <product description="Thermal receipt printer" name="TSP600" url="http://www.star-micronics.co.jp"/>

        <!--Other non JavaPOS required property (mostly vendor properties and bus specific properties i.e. RS232 )-->
        <prop name="portName" type="String" value="COM2"/>
        <prop name="errorResponseTimeout" type="Long" value="5000"/>
        <prop name="capLogoStore" type="Boolean" value="false"/>
        <prop name="statusTimeout" type="Long" value="500"/>
        <prop name="timeout" type="Long" value="10000"/>
        <prop name="starModel" type="String" value="TSP600"/>
        <prop name="capRecRaster" type="Boolean" value="true"/>
        <prop name="deviceClassName" type="String" value="com.starmicronics.javapos.DeviceTSP613"/>
        <prop name="portSettings" type="String" value="9600,none,8,1,hdwr"/>
        <prop name="statusTimeDelay" type="Long" value="500"/>
    </JposEntry>
    <JposEntry logicalName="StarTSP600Cutter">
        <creation factoryClass="com.starmicronics.javapos.StarJposServiceInstanceFactory" serviceClass="com.starmicronics.javapos.StarJPOSPOSPrinter"/>
        <vendor name="Star Micronics Co., Ltd." url="http://www.star-micronics.co.jp"/>
        <jpos category="POSPrinter" version="1.4a"/>
        <product description="Thermal receipt printer" name="TSP600" url="http://www.star-micronics.co.jp"/>

        <!--Other non JavaPOS required property (mostly vendor properties and bus specific properties i.e. RS232 )-->
        <prop name="portName" type="String" value="/dev/ttyS0"/>
        <prop name="errorResponseTimeout" type="Long" value="5000"/>
        <prop name="capLogoStore" type="Boolean" value="false"/>
        <prop name="statusTimeout" type="Long" value="500"/>
        <prop name="timeout" type="Long" value="10000"/>
        <prop name="starModel" type="String" value="TSP600"/>
        <prop name="capRecRaster" type="Boolean" value="true"/>
        <prop name="deviceClassName" type="String" value="com.starmicronics.javapos.DeviceTSP643"/>
        <prop name="portSettings" type="String" value="9600,none,8,1,hdwr"/>
        <prop name="statusTimeDelay" type="Long" value="500"/>
    </JposEntry>

    <!-- Star TSP600 Connected CashDrawer (requires startjavapos.jar) -->
    <JposEntry logicalName="StarTSP600CashDrawer">
        <creation factoryClass="com.starmicronics.javapos.StarJposServiceInstanceFactory" serviceClass="com.starmicronics.javapos.StarJPOSCashDrawer"/>
        <vendor name="Star Micronics Co., Ltd." url="http://www.star-micronics.co.jp"/>
        <jpos category="CashDrawer" version="1.4a"/>
        <product description="Printer controlled Cash Drawer" name="TSP600" url="http://www.star-micronics.co.jp"/>

        <!--Other non JavaPOS required property (mostly vendor properties and bus specific properties i.e. RS232 )-->
        <prop name="portName" type="String" value="COM2"/>
        <prop name="errorResponseTimeout" type="Long" value="5000"/>
        <prop name="statusTimeout" type="Long" value="500"/>
        <prop name="timeout" type="Long" value="10000"/>
        <prop name="starModel" type="String" value="TSP600"/>
        <prop name="deviceClassName" type="String" value="com.starmicronics.javapos.DeviceTSP613"/>
        <prop name="portSettings" type="String" value="9600,none,8,1,hdwr"/>
        <prop name="statusTimeDelay" type="Long" value="500"/>
        <prop name="cashDrawer1" type="Boolean" value="true"/>
        <prop name="drawerClosedOnSignalLow" type="Boolean" value="false"/>
    </JposEntry>

    <!-- Epson TM-T88III POSPrinter (requires epsonJposService180.jar, epsonJposServiceCommon.jar
        in component://pos/lib (classpath references not needed)
         and JavaComm installed (javax.comm package). See http://www.javapos.com/devint.html about this point...
         pos-containers.xml must contains a reference to the logicalName : <property name="Receipt" value="TM-T88III"/>
         -->
    <JposEntry logicalName="TM-T88III">
        <creation factoryClass="jp.co.epson.jpos180.util.EpsonJposServiceInstanceFactory" serviceClass="jp.co.epson.jpos180.ptr.T88III"/>
        <vendor name="SEIKO EPSON" url="http://www.epson.co.jp"/>
        <jpos category="POSPrinter" version="1.8"/>
        <product description="EPSON TM-T88III Printer Device Service" name="EPSON Services for JavaPOS(TM) Standard" url="http://www.epson.co.jp"/>

        <!--Other non JavaPOS required property (mostly vendor properties and bus specific properties i.e. RS232 )-->
        <prop name="dataBits" type="String" value="8"/>
        <prop name="Parity" type="String" value="0"/>
        <prop name="portName" type="String" value="COM1"/>
        <prop name="U375Compatible" type="String" value="0"/>
        <prop name="deviceBus" type="String" value="RS232"/>
        <prop name="DataLen" type="String" value="1"/>
        <prop name="UsedJAI" type="String" value="0"/>
        <prop name="TimeoutTime" type="String" value="5000"/>
        <prop name="baudRate" type="String" value="9600"/>
        <prop name="TwoColor" type="String" value="0"/>
        <prop name="PortType" type="String" value="0"/>
        <prop name="UsedNVRAM" type="String" value="0"/>
        <prop name="StopBit" type="String" value="1"/>
        <prop name="RetryTime" type="String" value="100"/>
        <prop name="ErrorOption" type="String" value="1"/>
        <prop name="ReverseEject" type="String" value="0"/>
        <prop name="SerialPowerWaitTime" type="String" value="500"/>
        <prop name="InputWait" type="String" value="1"/>
        <prop name="AnalysisLevel" type="String" value="1"/>
        <prop name="BufferSize" type="String" value="2"/>
        <prop name="DeviceDesc" type="String" value="EPSON TM-T88III Printer"/>
        <prop name="OutputLength" type="String" value="10"/>
        <prop name="parity" type="String" value="None"/>
        <prop name="stopBits" type="String" value="1"/>
        <prop name="PortName" type="String" value="COM1"/>  <!-- Windows -->
        <!--prop name="PortName" type="String" value="/dev/ttyS0"/--> <!-- RS232 Linux -->
        <!--prop name="PortName" type="String" value="/dev/usbtm0"/--> <!-- USB Linux, set before something like "sudo chmod 666 /dev/usbtm0" -->
        <prop name="ReceiveTimeout" type="String" value="10"/>
        <prop name="TwoByteCharacter" type="String" value="0"/>
        <prop name="Page254UseCode" type="String" value="0"/>
        <prop name="PhysicalDevice" type="String" value="TM-T88III"/>
        <prop name="PaperSize" type="String" value="80"/>
        <prop name="BaudRate" type="String" value="6"/>
        <prop name="Page255UseCode" type="String" value="0"/>
        <prop name="ServiceVersion" type="String" value="1.80"/>
        <prop name="flowControl" type="String" value="None"/>
        <prop name="FlowControl" type="String" value="1"/>
    </JposEntry>
</JposEntries>
