578 lines
23 KiB
C++
578 lines
23 KiB
C++
/*
|
|
* OPOSCTRL.H
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* Generic OPOS control class.
|
|
* Implements common methods for all OPOS controls.
|
|
* Control classes for specific OPOS controls inherit from this.
|
|
*/
|
|
class COPOSControl : public IOPOSControl
|
|
{
|
|
protected:
|
|
DWORD m_refCount;
|
|
DWORD m_serverLockCount;
|
|
|
|
/*
|
|
* Control properties
|
|
* (from Chapter 1 of OPOS APG spec)
|
|
*
|
|
* BUGBUG - are these to be kept in the registry ?
|
|
*
|
|
*/
|
|
BOOL AutoDisable;
|
|
LONG BinaryConversion;
|
|
LONG CapPowerReporting;
|
|
PCHAR CheckHealthText;
|
|
BOOL Claimed;
|
|
LONG DataCount;
|
|
BOOL DataEventEnabled;
|
|
BOOL DeviceEnabled;
|
|
BOOL FreezeEvents;
|
|
LONG OutputID;
|
|
LONG PowerNotify;
|
|
LONG PowerState;
|
|
LONG ResultCode;
|
|
LONG ResultCodeExtended;
|
|
LONG State;
|
|
PCHAR ControlObjectDescription;
|
|
LONG ControlObjectVersion;
|
|
PCHAR ServiceObjectDescription;
|
|
LONG ServiceObjectVersion;
|
|
PCHAR DeviceDescription;
|
|
PCHAR DeviceName;
|
|
|
|
|
|
public:
|
|
COPOSControl();
|
|
~COPOSControl();
|
|
|
|
/*
|
|
* IUnknown methods
|
|
*/
|
|
STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR* ppvObj);
|
|
STDMETHODIMP_(ULONG) AddRef(void);
|
|
STDMETHODIMP_(ULONG) Release(void);
|
|
|
|
/*
|
|
* IClassFactory methods
|
|
*/
|
|
STDMETHODIMP CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR* ppvObj);
|
|
STDMETHODIMP LockServer(int lock);
|
|
|
|
/*
|
|
* IOPOSControl methods
|
|
*/
|
|
STDMETHODIMP_(LONG) Open(BSTR DeviceName);
|
|
STDMETHODIMP_(LONG) Close();
|
|
|
|
STDMETHODIMP_(LONG) CheckHealth(LONG Level);
|
|
STDMETHODIMP_(LONG) Claim(LONG Timeout);
|
|
STDMETHODIMP_(LONG) ClearInput();
|
|
STDMETHODIMP_(LONG) ClearOutput();
|
|
STDMETHODIMP_(LONG) DirectIO(LONG Command, LONG* pData, BSTR* pString);
|
|
// STDMETHODIMP_(LONG) Release(); // BUGBUG overrides IUnknown ?
|
|
|
|
STDMETHODIMP_(void) SOData(LONG Status);
|
|
STDMETHODIMP_(void) SODirectIO(LONG EventNumber, LONG* pData, BSTR* pString);
|
|
STDMETHODIMP_(void) DirectIOEvent(LONG EventNumber, LONG* pData, BSTR* pString);
|
|
STDMETHODIMP_(void) SOError(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse);
|
|
// BUGBUG - moved to sub-ifaces STDMETHODIMP_(void) ErrorEvent(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse);
|
|
STDMETHODIMP_(void) SOOutputComplete(LONG OutputID);
|
|
STDMETHODIMP_(void) OutputCompleteEvent(LONG OutputID);
|
|
STDMETHODIMP_(void) SOStatusUpdate(LONG Data);
|
|
// BUGBUG - moved to sub-ifaces STDMETHODIMP_(void) StatusUpdateEvent(LONG Data);
|
|
STDMETHODIMP_(LONG) SOProcessID();
|
|
};
|
|
|
|
/*
|
|
* This macro will define a set of interfaces for each
|
|
* specific control type to define function headers
|
|
* for the generic control's methods.
|
|
*/
|
|
#define DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES() \
|
|
STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR* ppvObj); \
|
|
STDMETHODIMP_(ULONG) AddRef(void); \
|
|
STDMETHODIMP_(ULONG) Release(void); \
|
|
\
|
|
STDMETHODIMP CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR* ppvObj); \
|
|
STDMETHODIMP LockServer(int lock); \
|
|
\
|
|
STDMETHODIMP_(LONG) Open(BSTR DeviceName); \
|
|
STDMETHODIMP_(LONG) Close(); \
|
|
STDMETHODIMP_(LONG) CheckHealth(LONG Level); \
|
|
STDMETHODIMP_(LONG) Claim(LONG Timeout); \
|
|
STDMETHODIMP_(LONG) ClearInput(); \
|
|
STDMETHODIMP_(LONG) ClearOutput(); \
|
|
STDMETHODIMP_(LONG) DirectIO(LONG Command, LONG* pData, BSTR* pString); \
|
|
STDMETHODIMP_(void) SOData(LONG Status); \
|
|
STDMETHODIMP_(void) SODirectIO(LONG EventNumber, LONG* pData, BSTR* pString); \
|
|
STDMETHODIMP_(void) DirectIOEvent(LONG EventNumber, LONG* pData, BSTR* pString); \
|
|
STDMETHODIMP_(void) SOError(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse); \
|
|
STDMETHODIMP_(void) SOOutputComplete(LONG OutputID); \
|
|
STDMETHODIMP_(void) OutputCompleteEvent(LONG OutputID); \
|
|
STDMETHODIMP_(void) SOStatusUpdate(LONG Data); \
|
|
STDMETHODIMP_(LONG) SOProcessID();
|
|
|
|
|
|
/*
|
|
* This macro will define a set of wrapper functions for each
|
|
* control type which relay generic control method calls
|
|
* to the generic control object contained in each specific
|
|
* control instance.
|
|
*
|
|
* For example, when a bumpBar instance gets called with
|
|
* ClearInput(), we relay this to m_genericControl->ClearInput().
|
|
*
|
|
*/
|
|
#define DEFINE_GENERIC_CONTROL_FUNCTIONS(specificControl) \
|
|
STDMETHODIMP specificControl::QueryInterface(REFIID riid, LPVOID FAR* ppvObj){ return m_genericControl->QueryInterface(riid, ppvObj); } \
|
|
STDMETHODIMP_(ULONG) specificControl::AddRef(void){ return m_genericControl->AddRef(); } \
|
|
STDMETHODIMP_(ULONG) specificControl::Release(void){ return m_genericControl->Release(); } \
|
|
\
|
|
STDMETHODIMP specificControl::CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR* ppvObj){ return m_genericControl->CreateInstance(pUnkOuter, riid, ppvObj); } \
|
|
STDMETHODIMP specificControl::LockServer(int lock){ return m_genericControl->LockServer(lock); } \
|
|
\
|
|
STDMETHODIMP_(LONG) specificControl::Open(BSTR DeviceName){ return m_genericControl->Open(DeviceName); } \
|
|
STDMETHODIMP_(LONG) specificControl::Close(){ return m_genericControl->Close(); } \
|
|
STDMETHODIMP_(LONG) specificControl::CheckHealth(LONG Level){ return m_genericControl->CheckHealth(Level); } \
|
|
STDMETHODIMP_(LONG) specificControl::Claim(LONG Timeout){ return m_genericControl->Claim(Timeout); } \
|
|
STDMETHODIMP_(LONG) specificControl::ClearInput(){ return m_genericControl->ClearInput(); } \
|
|
STDMETHODIMP_(LONG) specificControl::ClearOutput(){ return m_genericControl->ClearOutput(); } \
|
|
STDMETHODIMP_(LONG) specificControl::DirectIO(LONG Command, LONG* pData, BSTR* pString){ return m_genericControl->DirectIO(Command, pData, pString); } \
|
|
STDMETHODIMP_(void) specificControl::SOData(LONG Status){ m_genericControl->SOData(Status); } \
|
|
STDMETHODIMP_(void) specificControl::SODirectIO(LONG EventNumber, LONG* pData, BSTR* pString){ m_genericControl->SODirectIO(EventNumber, pData, pString); } \
|
|
STDMETHODIMP_(void) specificControl::DirectIOEvent(LONG EventNumber, LONG* pData, BSTR* pString){ m_genericControl->DirectIOEvent(EventNumber, pData, pString); } \
|
|
STDMETHODIMP_(void) specificControl::SOError(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse){ m_genericControl->SOError(ResultCode, ResultCodeExtended, ErrorLocus, pErrorResponse); } \
|
|
STDMETHODIMP_(void) specificControl::SOOutputComplete(LONG OutputID){ m_genericControl->SOOutputComplete(OutputID); } \
|
|
STDMETHODIMP_(void) specificControl::OutputCompleteEvent(LONG OutputID){ m_genericControl->OutputCompleteEvent(OutputID); } \
|
|
STDMETHODIMP_(void) specificControl::SOStatusUpdate(LONG Data){ m_genericControl->SOStatusUpdate(Data); } \
|
|
STDMETHODIMP_(LONG) specificControl::SOProcessID(){ return m_genericControl->SOProcessID(); }
|
|
|
|
/*
|
|
* This macro will define default constructor and deconstructor
|
|
* for each specific control class which just allocates
|
|
* and frees the m_genericControl member.
|
|
*/
|
|
#define DEFINE_DEFAULT_CONTROL_CONSTRUCTOR(specificControl) \
|
|
specificControl::specificControl(){ \
|
|
m_genericControl = new COPOSControl; \
|
|
if (m_genericControl) m_genericControl->AddRef(); \
|
|
} \
|
|
specificControl::~specificControl(){ \
|
|
m_genericControl->Release(); \
|
|
m_genericControl = NULL; \
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
* Implementing class for specific control classes.
|
|
* Each inherits from it's specific interface.
|
|
*/
|
|
class COPOSBumpBar : public IOPOSBumpBar
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) BumpBarSound(LONG Units, LONG Frequency, LONG Duration, LONG NumberOfCycles, LONG InterSoundWait);
|
|
STDMETHODIMP_(LONG) SetKeyTranslation(LONG Units, LONG ScanCode, LONG LogicalKey);
|
|
};
|
|
class COPOSCashChanger : public IOPOSCashChanger
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) DispenseCash(BSTR CashCounts);
|
|
STDMETHODIMP_(LONG) DispenseChange(LONG Amount);
|
|
STDMETHODIMP_(LONG) ReadCashCounts(BSTR* pCashCounts, BOOL* pDiscrepancy);
|
|
|
|
// events
|
|
STDMETHODIMP_(void) StatusUpdateEvent(LONG Status);
|
|
};
|
|
class COPOSCashDrawer : public IOPOSCashDrawer
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) OpenDrawer();
|
|
STDMETHODIMP_(LONG) WaitForDrawerClose(LONG BeepTimeout, LONG BeepFrequency, LONG BeepDuration, LONG BeepDelay);
|
|
|
|
// events
|
|
STDMETHODIMP_(void) StatusUpdateEvent(LONG Status);
|
|
};
|
|
class COPOSCoinDispenser : public IOPOSCoinDispenser
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) DispenseChange(LONG Amount);
|
|
|
|
// events
|
|
STDMETHODIMP_(void) StatusUpdateEvent(LONG Status);
|
|
};
|
|
class COPOSFiscalPrinter : public IOPOSFiscalPrinter
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) BeginFiscalDocument(LONG DocumentAmount);
|
|
STDMETHODIMP_(LONG) BeginFiscalReceipt(BOOL PrintHeader);
|
|
STDMETHODIMP_(LONG) BeginFixedOutput(LONG Station, LONG DocumentType);
|
|
STDMETHODIMP_(LONG) BeginInsertion(LONG Timeout);
|
|
STDMETHODIMP_(LONG) BeginItemList(LONG VatID);
|
|
STDMETHODIMP_(LONG) BeginNonFiscal();
|
|
STDMETHODIMP_(LONG) BeginRemoval(LONG Timeout);
|
|
STDMETHODIMP_(LONG) BeginTraining();
|
|
STDMETHODIMP_(LONG) ClearError();
|
|
STDMETHODIMP_(LONG) EndFiscalDocument();
|
|
STDMETHODIMP_(LONG) EndFiscalReceipt(BOOL PrintHeader);
|
|
STDMETHODIMP_(LONG) EndFixedOutput();
|
|
STDMETHODIMP_(LONG) EndInsertion();
|
|
STDMETHODIMP_(LONG) EndItemList();
|
|
STDMETHODIMP_(LONG) EndNonFiscal();
|
|
STDMETHODIMP_(LONG) EndRemoval();
|
|
STDMETHODIMP_(LONG) EndTraining();
|
|
STDMETHODIMP_(LONG) GetData(LONG DataItem, LONG* OptArgs, BSTR* Data);
|
|
STDMETHODIMP_(LONG) GetDate(BSTR* Date);
|
|
STDMETHODIMP_(LONG) GetTotalizer(LONG VatID, LONG OptArgs, BSTR* Data);
|
|
STDMETHODIMP_(LONG) GetVatEntry(LONG VatID, LONG OptArgs, LONG* VatRate);
|
|
STDMETHODIMP_(LONG) PrintDuplicateReceipt();
|
|
STDMETHODIMP_(LONG) PrintFiscalDocumentLine(BSTR DocumentLine);
|
|
STDMETHODIMP_(LONG) PrintFixedOutput(LONG DocumentType, LONG LineNumber, BSTR Data);
|
|
STDMETHODIMP_(LONG) PrintNormal(LONG Station, BSTR Data);
|
|
STDMETHODIMP_(LONG) PrintPeriodicTotalsReport(BSTR Date1, BSTR Date2);
|
|
STDMETHODIMP_(LONG) PrintPowerLossReport();
|
|
STDMETHODIMP_(LONG) PrintRecItem(BSTR Description, CURRENCY Price, LONG Quantity, LONG VatInfo, CURRENCY OptUnitPrice, BSTR UnitName);
|
|
STDMETHODIMP_(LONG) PrintRecItemAdjustment(LONG AdjustmentType, BSTR Description, CURRENCY Amount, LONG VatInfo);
|
|
STDMETHODIMP_(LONG) PrintRecMessage(BSTR Message);
|
|
STDMETHODIMP_(LONG) PrintRecNotPaid(BSTR Description, CURRENCY Amount);
|
|
STDMETHODIMP_(LONG) PrintRecRefund(BSTR Description, CURRENCY Amount, LONG VatInfo);
|
|
STDMETHODIMP_(LONG) PrintRecSubtotal(CURRENCY Amount);
|
|
STDMETHODIMP_(LONG) PrintRecSubtotalAdjustment(LONG AdjustmentType, BSTR Description, CURRENCY Amount);
|
|
STDMETHODIMP_(LONG) PrintRecTotal(CURRENCY Total, CURRENCY Payment, BSTR Description);
|
|
STDMETHODIMP_(LONG) PrintRecVoid(BSTR Description);
|
|
STDMETHODIMP_(LONG) PrintRecVoidItem(BSTR Description, CURRENCY Amount, LONG Quantity, LONG AdjustmentType, CURRENCY Adjustment, LONG VatInfo);
|
|
STDMETHODIMP_(LONG) PrintReport(LONG ReportType, BSTR StartNum, BSTR EndNum);
|
|
STDMETHODIMP_(LONG) PrintXReport();
|
|
STDMETHODIMP_(LONG) PrintZReport();
|
|
STDMETHODIMP_(LONG) ResetPrinter();
|
|
STDMETHODIMP_(LONG) SetDate(BSTR Date);
|
|
STDMETHODIMP_(LONG) SetHeaderLine(LONG LineNumber, BSTR Text, BOOL DoubleWidth);
|
|
STDMETHODIMP_(LONG) SetPOSID(BSTR POSID, BSTR CashierID);
|
|
STDMETHODIMP_(LONG) SetStoreFiscalID(BSTR ID);
|
|
STDMETHODIMP_(LONG) SetTrailerLine(LONG LineNumber, BSTR Text, BOOL DoubleWidth);
|
|
STDMETHODIMP_(LONG) SetVatTable();
|
|
STDMETHODIMP_(LONG) SetVatValue(LONG VatID, BSTR VatValue);
|
|
STDMETHODIMP_(LONG) VerifyItem(BSTR ItemName, LONG VatID);
|
|
|
|
// events
|
|
STDMETHODIMP_(void) ErrorEvent(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse);
|
|
STDMETHODIMP_(void) StatusUpdateEvent(LONG Data);
|
|
};
|
|
class COPOSHardTotals : public IOPOSHardTotals
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) BeginTrans();
|
|
STDMETHODIMP_(LONG) ClaimFile(LONG HTotalsFile, LONG Timeout);
|
|
STDMETHODIMP_(LONG) CommitTrans();
|
|
STDMETHODIMP_(LONG) Create(BSTR FileName, LONG* pHTotalsFile, LONG Size, BOOL ErrorDetection);
|
|
STDMETHODIMP_(LONG) Delete(BSTR FileName);
|
|
STDMETHODIMP_(LONG) Find(BSTR FileName, LONG* pHTotalsFile, LONG* pSize);
|
|
STDMETHODIMP_(LONG) FindByIndex(LONG Index, BSTR* pFileName);
|
|
STDMETHODIMP_(LONG) Read(LONG HTotalsFile, BSTR* pData, LONG Offset, LONG Count);
|
|
STDMETHODIMP_(LONG) RecalculateValidationData(LONG HTotalsFile);
|
|
STDMETHODIMP_(LONG) ReleaseFile(LONG HTotalsFile);
|
|
STDMETHODIMP_(LONG) Rename(LONG HTotalsFile, BSTR FileName);
|
|
STDMETHODIMP_(LONG) Rollback();
|
|
STDMETHODIMP_(LONG) SetAll(LONG HTotalsFile, LONG Value);
|
|
STDMETHODIMP_(LONG) ValidateData(LONG HTotalsFile);
|
|
STDMETHODIMP_(LONG) Write(LONG HTotalsFile, BSTR Data, LONG Offset, LONG Count);
|
|
};
|
|
class COPOSKeyLock : public IOPOSKeyLock
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) WaitForKeylockChange(LONG KeyPosition, LONG Timeout);
|
|
|
|
// events
|
|
STDMETHODIMP_(void) StatusUpdateEvent(LONG Status);
|
|
};
|
|
class COPOSLineDisplay : public IOPOSLineDisplay
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) ClearDescriptors();
|
|
STDMETHODIMP_(LONG) ClearText();
|
|
// BUGBUG conflict ??? STDMETHODIMP_(LONG) CreateWindow(LONG ViewportRow, LONG ViewportColumn, LONG ViewportHeight, LONG ViewportWidth, LONG WindowHeight, LONG WindowWidth);
|
|
STDMETHODIMP_(LONG) DestroyWindow();
|
|
STDMETHODIMP_(LONG) DisplayText(BSTR Data, LONG Attribute);
|
|
STDMETHODIMP_(LONG) DisplayTextAt(LONG Row, LONG Column, BSTR Data, LONG Attribute);
|
|
STDMETHODIMP_(LONG) RefreshWindow(LONG Window);
|
|
STDMETHODIMP_(LONG) ScrollText(LONG Direction, LONG Units);
|
|
STDMETHODIMP_(LONG) SetDescriptor(LONG Descriptor, LONG Attribute);
|
|
};
|
|
class COPOSMICR : public IOPOSMICR
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) BeginInsertion(LONG Timeout);
|
|
STDMETHODIMP_(LONG) BeginRemoval(LONG Timeout);
|
|
STDMETHODIMP_(LONG) EndInsertion();
|
|
STDMETHODIMP_(LONG) EndRemoval();
|
|
|
|
// events
|
|
STDMETHODIMP_(void) DataEvent(LONG Status);
|
|
STDMETHODIMP_(void) ErrorEvent(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse);
|
|
};
|
|
class COPOSMSR : public IOPOSMSR
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
|
|
// events
|
|
STDMETHODIMP_(void) DataEvent(LONG Status);
|
|
STDMETHODIMP_(void) ErrorEvent(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse);
|
|
};
|
|
class COPOSPinPad : public IOPOSPinPad
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) BeginEFTTransaction(BSTR PINPadSystem, LONG TransactionHost);
|
|
STDMETHODIMP_(LONG) ComputeMAC(BSTR InMsg, BSTR* pOutMsg);
|
|
STDMETHODIMP_(LONG) EnablePINEntry();
|
|
STDMETHODIMP_(LONG) EndEFTTransaction(LONG CompletionCode);
|
|
STDMETHODIMP_(LONG) UpdateKey(LONG KeyNum, BSTR Key);
|
|
STDMETHODIMP_(BOOL) VerifyMAC(BSTR Message);
|
|
|
|
// events
|
|
STDMETHODIMP_(void) DataEvent(LONG Status);
|
|
STDMETHODIMP_(void) ErrorEvent(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse);
|
|
};
|
|
class COPOSKeyboard : public IOPOSKeyboard
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
|
|
// events
|
|
STDMETHODIMP_(void) DataEvent(LONG Status);
|
|
STDMETHODIMP_(void) ErrorEvent(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse);
|
|
};
|
|
class COPOSPrinter : public IOPOSPrinter
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) BeginInsertion(LONG Timeout);
|
|
STDMETHODIMP_(LONG) BeginRemoval(LONG Timeout);
|
|
STDMETHODIMP_(LONG) CutPaper(LONG Percentage);
|
|
STDMETHODIMP_(LONG) EndInsertion();
|
|
STDMETHODIMP_(LONG) EndRemoval();
|
|
STDMETHODIMP_(LONG) PrintBarCode(LONG Station, BSTR Data, LONG Symbology, LONG Height, LONG Width, LONG Alignment, LONG TextPosition);
|
|
STDMETHODIMP_(LONG) PrintBitmap(LONG Station, BSTR FileName, LONG Width, LONG Alignment);
|
|
STDMETHODIMP_(LONG) PrintImmediate(LONG Station, BSTR Data);
|
|
STDMETHODIMP_(LONG) PrintNormal(LONG Station, BSTR Data);
|
|
STDMETHODIMP_(LONG) PrintTwoNormal(LONG Stations, BSTR Data1, BSTR Data2);
|
|
STDMETHODIMP_(LONG) RotatePrint(LONG Station, LONG Rotation);
|
|
STDMETHODIMP_(LONG) SetBitmap(LONG BitmapNumber, LONG Station, BSTR FileName, LONG Width, LONG Alignment);
|
|
STDMETHODIMP_(LONG) SetLogo(LONG Location, BSTR Data);
|
|
STDMETHODIMP_(LONG) TransactionPrint(LONG Station, LONG Control);
|
|
STDMETHODIMP_(LONG) ValidateData(LONG Station, BSTR Data);
|
|
|
|
// events
|
|
STDMETHODIMP_(void) ErrorEvent(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse);
|
|
STDMETHODIMP_(void) StatusUpdateEvent(LONG Status);
|
|
};
|
|
class COPOSRemoteOrderDisplay : public IOPOSRemoteOrderDisplay
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) ClearVideo(LONG Units, LONG Attribute);
|
|
STDMETHODIMP_(LONG) ClearVideoRegion(LONG Units, LONG Row, LONG Column, LONG Height, LONG Width, LONG Attribute);
|
|
STDMETHODIMP_(LONG) ControlClock(LONG Units, LONG Function, LONG ClockId, LONG Hour, LONG Min, LONG Sec, LONG Row, LONG Column, LONG Attribute, LONG Mode);
|
|
STDMETHODIMP_(LONG) ControlCursor(LONG Units, LONG Function);
|
|
STDMETHODIMP_(LONG) CopyVideoRegion(LONG Units, LONG Row, LONG Column, LONG Height, LONG Width, LONG TargetRow, LONG TargetColumn);
|
|
STDMETHODIMP_(LONG) DisplayData(LONG Units, LONG Row, LONG Column, LONG Attribute, BSTR Data);
|
|
STDMETHODIMP_(LONG) DrawBox(LONG Units, LONG Row, LONG Column, LONG Height, LONG Width, LONG Attribute, LONG BorderType);
|
|
STDMETHODIMP_(LONG) FreeVideoRegion(LONG Units, LONG BufferId);
|
|
STDMETHODIMP_(LONG) ResetVideo(LONG Units);
|
|
STDMETHODIMP_(LONG) RestoreVideoRegion(LONG Units, LONG TargetRow, LONG TargetColumn, LONG BufferId);
|
|
STDMETHODIMP_(LONG) SaveVideoRegion(LONG Units, LONG Row, LONG Column, LONG Height, LONG Width, LONG BufferId);
|
|
STDMETHODIMP_(LONG) SelectChararacterSet(LONG Units, LONG CharacterSet);
|
|
STDMETHODIMP_(LONG) SetCursor(LONG Units, LONG Row, LONG Column);
|
|
STDMETHODIMP_(LONG) TransactionDisplay(LONG Units, LONG Function);
|
|
STDMETHODIMP_(LONG) UpdateVideoRegionAttribute(LONG Units, LONG Function, LONG Row, LONG Column, LONG Height, LONG Width, LONG Attribute);
|
|
STDMETHODIMP_(LONG) VideoSound(LONG Units, LONG Frequency, LONG Duration, LONG NumberOfCycles, LONG InterSoundWait);
|
|
|
|
// events
|
|
STDMETHODIMP_(void) DataEvent(LONG Status);
|
|
// BUGBUG - override ? STDMETHODIMP_(void) OutputCompleteEvent(LONG OutputID);
|
|
STDMETHODIMP_(void) StatusUpdateEvent(LONG Status);
|
|
STDMETHODIMP_(void) ErrorEvent(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse);
|
|
};
|
|
class COPOSScale : public IOPOSScale
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) DisplayText(BSTR Data);
|
|
STDMETHODIMP_(LONG) ReadWeight(LONG* pWeightData, LONG Timeout);
|
|
STDMETHODIMP_(LONG) ZeroScale();
|
|
|
|
// events
|
|
STDMETHODIMP_(void) DataEvent(LONG Status);
|
|
STDMETHODIMP_(void) ErrorEvent(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse);
|
|
|
|
};
|
|
class COPOSScanner : public IOPOSScanner
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
|
|
// events
|
|
STDMETHODIMP_(void) DataEvent(LONG Status);
|
|
STDMETHODIMP_(void) ErrorEvent(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse);
|
|
};
|
|
class COPOSSignatureCapture : public IOPOSSignatureCapture
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) BeginCapture(BSTR FormName);
|
|
STDMETHODIMP_(LONG) EndCapture();
|
|
|
|
// events
|
|
STDMETHODIMP_(void) DataEvent(LONG Status);
|
|
STDMETHODIMP_(void) ErrorEvent(LONG ResultCode, LONG ResultCodeExtended, LONG ErrorLocus, LONG* pErrorResponse);
|
|
};
|
|
class COPOSToneIndicator : public IOPOSToneIndicator
|
|
{
|
|
protected:
|
|
COPOSControl *m_genericControl;
|
|
|
|
public:
|
|
// methods
|
|
DEFINE_GENERIC_CONTROL_FUNCTION_PROTOTYPES()
|
|
STDMETHODIMP_(LONG) Sound(LONG NumberOfCycles, LONG InterSoundWait);
|
|
STDMETHODIMP_(LONG) SoundImmediate();
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define ASSERT(fact) if (!(fact)){ \
|
|
Report("Assertion '" #fact "' failed in file " __FILE__ " line ", __LINE__); \
|
|
}
|
|
|
|
|
|
|
|
enum controlClass {
|
|
CONTROL_BUMP_BAR,
|
|
CONTROL_CASH_CHANGER,
|
|
CONTROL_CASH_DRAWER,
|
|
CONTROL_COIN_DISPENSER,
|
|
CONTROL_FISCAL_PRINTER,
|
|
CONTROL_HARD_TOTALS,
|
|
CONTROL_KEYLOCK,
|
|
CONTROL_LINE_DISPLAY,
|
|
CONTROL_MICR, // MAGNETIC INK CHARACTER RECOGNITION READER
|
|
CONTROL_MSR, // MAGNETIC STRIPE READER
|
|
CONTROL_PIN_PAD,
|
|
CONTROL_POS_KEYBOARD,
|
|
CONTROL_POS_PRINTER,
|
|
CONTROL_REMOTE_ORDER_DISPLAY,
|
|
CONTROL_SCALE,
|
|
CONTROL_SCANNER, // (BAR CODE READER)
|
|
CONTROL_SIGNATURE_CAPTURE,
|
|
CONTROL_TONE_INDICATOR,
|
|
|
|
CONTROL_LAST // marker, must be last
|
|
};
|
|
|
|
struct controlType {
|
|
enum controlClass type;
|
|
PCHAR deviceName; // BUGBUG ? BSTR deviceName;
|
|
};
|
|
|
|
/*
|
|
* Function prototypes
|
|
*/
|
|
void OpenServer();
|
|
|
|
VOID Report(LPSTR szMsg, DWORD num);
|
|
LPSTR DbgHresultStr(DWORD hres);
|
|
VOID ReportHresultErr(LPSTR szMsg, DWORD hres);
|
|
void Test(); // BUGBUG REMOVE
|
|
|
|
|