using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace UnifiedPOS.RemoteOrderDisplay.V1_4
{
    [ServiceContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public interface RemoteOrderDisplay
    {
        #region Version 1.1

        //
        // Common Properties
        //

        //[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetAutoDisable", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetAutoDisableResponse")]
        //[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        //bool GetAutoDisable(string ConsumerID);

        //[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetAutoDisable", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetAutoDisableResponse")]
        //[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        //void SetAutoDisable(string ConsumerID, bool AutoDisable);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapCompareFirmwareVersion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapCompareFirmwareVersionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetCapCompareFirmwareVersion(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapPowerReporting", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapPowerReportingResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        PowerReporting GetCapPowerReporting(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapStatisticsReporting", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapStatisticsReportingResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetCapStatisticsReporting(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapUpdateFirmware", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapUpdateFirmwareResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetCapUpdateFirmware(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapUpdateStatistics", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapUpdateStatisticsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetCapUpdateStatistics(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCheckHealthText", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCheckHealthTextResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        string GetCheckHealthText(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetClaimed", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetClaimedResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetClaimed(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDataCount", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDataCountResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetDataCount(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDataEventEnabled", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDataEventEnabledResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetDataEventEnabled(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetDataEventEnabled", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetDataEventEnabledResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetDataEventEnabled(string ConsumerID, bool DataEventEnabled);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDeviceEnabled", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDeviceEnabledResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetDeviceEnabled(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetDeviceEnabled", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetDeviceEnabledResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetDeviceEnabled(string ConsumerID, bool DeviceEnabled);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetFreezeEvents", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetFreezeEventsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetFreezeEvents(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetFreezeEvents", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetFreezeEventsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetFreezeEvents(string ConsumerID, bool FreezeEvents);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetOutputID", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetOutputIDResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetOutputID(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetPowerNotify", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetPowerNotifyResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        PowerNotification GetPowerNotify(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetPowerNotify", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetPowerNotifyResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetPowerNotify(string ConsumerID, PowerNotification PowerNotify);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetPowerState", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetPowerStateResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        PowerState GetPowerState(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetState", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetStateResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        ControlState GetState(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDeviceControlDescription", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDeviceControlDescriptionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        string GetDeviceControlDescription(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDeviceControlVersion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDeviceControlVersionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        UposVersion GetDeviceControlVersion(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDeviceServiceDescription", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDeviceServiceDescriptionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        string GetDeviceServiceDescription(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDeviceServiceVersion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetDeviceServiceVersionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        UposVersion GetDeviceServiceVersion(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetPhysicalDeviceDescription", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetPhysicalDeviceDescriptionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        string GetPhysicalDeviceDescription(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetPhysicalDeviceName", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetPhysicalDeviceNameResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        string GetPhysicalDeviceName(string ConsumerID);

        //
        // Specific Properties
        //

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapMapCharacterSet", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapMapCharacterSetResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetCapMapCharacterSet(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapSelectCharacterSet", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapSelectCharacterSetResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetCapSelectCharacterSet(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapTone", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapToneResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetCapTone(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapTouch", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapTouchResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetCapTouch(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapTransaction", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCapTransactionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetCapTransaction(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetAsyncMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetAsyncModeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetAsyncMode(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetAsyncMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetAsyncModeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetAsyncMode(string ConsumerID, bool AsyncMode);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetAutoToneDuration", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetAutoToneDurationResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetAutoToneDuration(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetAutoToneDuration", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetAutoToneDurationResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetAutoToneDuration(string ConsumerID, int AutoToneDuration);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetAutoToneFrequency", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetAutoToneFrequencyResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetAutoToneFrequency(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetAutoToneFrequency", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetAutoToneFrequencyResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetAutoToneFrequency(string ConsumerID, int AutoToneFrequency);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCharacterSet", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCharacterSetResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetCharacterSet(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCharacterSetList", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCharacterSetListResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        //int[] GetCharacterSetList();
        CharacterSetList GetCharacterSetList(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetClocks", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetClocksResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetClocks(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCurrentUnitID", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetCurrentUnitIDResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetCurrentUnitID(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetCurrentUnitID", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetCurrentUnitIDResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetCurrentUnitID(string ConsumerID, int CurrentUnitID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetErrorString", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetErrorStringResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        string GetErrorString(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetErrorUnits", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetErrorUnitsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetErrorUnits(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetEventString", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetEventStringResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        string GetEventString(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetEventType", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetEventTypeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetEventType(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetEventType", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetEventTypeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetEventType(string ConsumerID, int EventType);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetEventUnitID", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetEventUnitIDResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetEventUnitID(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetEventUnits", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetEventUnitsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetEventUnits(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetMapCharacterSet", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetMapCharacterSetResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        bool GetMapCharacterSet(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetMapCharacterSet", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetMapCharacterSetResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetMapCharacterSet(string ConsumerID, bool MapCharacterSet);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetSystemClocks", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetSystemClocksResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetSystemClocks(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetSystemVideoSaveBuffers", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetSystemVideoSaveBuffersResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetSystemVideoSaveBuffers(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetTimeout", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetTimeoutResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetTimeout(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetTimeout", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetTimeoutResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetTimeout(string ConsumerID, int Timeout);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetUnitsOnline", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetUnitsOnlineResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetUnitsOnline(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetVideoDataCount", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetVideoDataCountResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetVideoDataCount(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetVideoMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetVideoModeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetVideoMode(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetVideoMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetVideoModeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetVideoMode(string ConsumerID, int VideoMode);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetVideoModesList", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetVideoModesListResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        //VideoMode[] GetVideoModesList();
        VideoModesList GetVideoModesList(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetVideoSaveBuffers", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetVideoSaveBuffersResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetVideoSaveBuffers(string ConsumerID);

        //
        // Common Methods
        //

        //[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/Open", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/OpenResponse")]
        //[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        //void Open(string ConsumerID, string EndpointAddress);

        //[OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/Close", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/CloseResponse")]
        //[FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        //void Close(string ConsumerID, string EndpointAddress);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/Claim", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ClaimResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void Claim(string ConsumerID, int Timeout);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/Release", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ReleaseResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void Release(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/CheckHealth", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/CheckHealthResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void CheckHealth(string ConsumerID, HealthCheckLevel Level);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ClearInput", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ClearInputResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void ClearInput(string ConsumerID);

       // [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ClearInputProperties", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ClearInputPropertiesResponse")]
       // [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
       // void ClearInputProperties(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ClearOutput", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ClearOutputResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void ClearOutput(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/DirectIO", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/DirectIOResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        DirectIOData DirectIO(string ConsumerID, int Command, int Data, object Obj);
        
        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/CompareFirmwareVersion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/CompareFirmwareVersionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        CompareFirmwareResult CompareFirmwareVersion(string ConsumerID, string FirmwareFileName);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ResetStatistics", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ResetStatisticsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void ResetStatistics(string ConsumerID, StatisticList StatisticsBuffer);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/RetrieveStatistics", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/RetrieveStatisticsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        string RetrieveStatistics(string ConsumerID, StatisticList StatisticsBuffer);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UpdateFirmware", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UpdateFirmwareResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void UpdateFirmware(string ConsumerID, string FirmwareFileName);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UpdateStatistics", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UpdateStatisticsResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void UpdateStatistics(string ConsumerID, StatisticList StatisticsBuffer);

        //
        // Specific Methods
        //

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ClearVideo", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ClearVideoResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void ClearVideo(string ConsumerID, int Units, int Attribute);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ClearVideoRegion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ClearVideoRegionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void ClearVideoRegion(string ConsumerID, int Units, int Row, int Column, int Height, int Width, int Attribute);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ControlClock", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ControlClockResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void ControlClock(string ConsumerID, int Units, ClockFunction ClockFunction, int ClockId, int Hours, int Minutes, int Seconds, int Row, int Column, int Attribute, ClockMode Mode);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ControlCursor", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ControlCursorResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void ControlCursor(string ConsumerID, int Units, VideoCursorType CursorType);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/CopyVideoRegion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/CopyVideoRegionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void CopyVideoRegion(string ConsumerID, int Units, int Row, int Column, int Height, int Width, int TargetRow, int TargetColumn);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/DisplayData", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/DisplayDataResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void DisplayData(string ConsumerID, int Units, int Row, int Column, int Attribute, string Data);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/DrawBox", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/DrawBoxResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void DrawBox(string ConsumerID, int Units, int Row, int Column, int Height, int Width, int Attribute, BorderType BorderType);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/FreeVideoRegion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/FreeVideoRegionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void FreeVideoRegion(string ConsumerID, int Units, int BufferId);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ResetVideo", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/ResetVideoResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void ResetVideo(string ConsumerID, int Units);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/RestoreVideoRegion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/RestoreVideoRegionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void RestoreVideoRegion(string ConsumerID, int Units, int TargetRow, int TargetColumn, int BufferId);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SaveVideoRegion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SaveVideoRegionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SaveVideoRegion(string ConsumerID, int Units, int Row, int Column, int Height, int Width, int BufferId);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SelectCharacterSet", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SelectCharacterSetResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SelectCharacterSet(string ConsumerID, int Units, int CharacterSet);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetCursor", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetCursorResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetCursor(string ConsumerID, int Units, int Row, int Column);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/TransactionDisplay", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/TransactionDisplayResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void TransactionDisplay(string ConsumerID, int Units, RemoteOrderDisplayTransaction TransactionFunction);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UpdateVideoRegionAttribute", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UpdateVideoRegionAttributeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void UpdateVideoRegionAttribute(string ConsumerID, int Units, VideoAttributeCommand AttributeFunction, int Row, int Column, int Height, int Width, int Attribute);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/VideoSound", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/VideoSoundResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void VideoSound(string ConsumerID, int Units, int Frequency, int Duration, int NumberOfCycles, int InterSoundWait);

        #endregion

        #region Version 1.2

        //
        // Session Management
        //

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetWSPOSVersion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetWSPOSVersionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        UposVersion GetWSPOSVersion();

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GenerateConsumerID", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GenerateConsumerIDResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        string GenerateConsumerID();

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/OpenSession", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/OpenSessionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void OpenSession(string ConsumerID, string EndpointAddress);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/CloseSession", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/CloseSessionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void CloseSession(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetProviderSessionTimeout", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetProviderSessionTimeoutResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        int GetProviderSessionTimeout(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/KeepAlive", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/KeepAliveResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void KeepAlive(string ConsumerID);

        //
        // Device Control
        // 

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/OpenDevice", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/OpenDeviceResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void OpenDevice(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/CloseDevice", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/CloseDeviceResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void CloseDevice(string ConsumerID);

        //
        // Event Polling
        //

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/PollForUPOSEvent", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/PollForUPOSEventResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        RemoteOrderDisplayEvent PollForUPOSEvent(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetEventResponse", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetEventResponseResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetEventResponse(string ConsumerID, RemoteOrderDisplayEventResponse EventResponse);

        #endregion

        #region Version 1.3

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetEncryptedClaimedConsumerID", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/GetEncryptedClaimedConsumerIDResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        string GetEncryptedClaimedConsumerID();

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetEventRequestProperties", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/SetEventRequestPropertiesResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/UposException", Name = "UposException")]
        void SetEventRequestProperties(string ConsumerID, PropertyNameList list);

        #endregion
    }

    #region Version 1.1

    //
    // Common Data Types
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class DirectIOData
    {
        [DataMember]
        public int Data { get; set; }
        [DataMember]
        public object Obj { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class UposException
    {
        [DataMember]
        public ErrorCode ErrorCode { get; set; }
        [DataMember]
        public int ErrorCodeExtended { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class UposVersion
    {
        [DataMember]
        public int Major { get; set; }
        [DataMember]
        public int Minor { get; set; }
        [DataMember]
        public int Build { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class Statistic
    {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Value { get; set; }
    }

    [CollectionDataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/", ItemName = "Statistic")]
    public class StatisticList : List<Statistic>
    {

    }

   
    [CollectionDataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/", ItemName = "CharacterSet")]
    public class CharacterSetList : List<int>
    {

    }


    [CollectionDataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/", ItemName = "VideoModes")]
    public class VideoModesList : List<VideoMode>
    {

    }

    //
    // Common Enumerations
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum CompareFirmwareResult
    {
        [EnumMember]
        CFV_FIRMWARE_OLDER,
        [EnumMember]
        CFV_FIRMWARE_SAME,
        [EnumMember]
        CFV_FIRMWARE_NEWER,
        [EnumMember]
        CFV_FIRMWARE_DIFFERENT,
        [EnumMember]
        CFV_FIRMWARE_UNKNOWN,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum ControlState
    {
        [EnumMember]
        S_CLOSED,
        [EnumMember]
        S_IDLE,
        [EnumMember]
        S_BUSY,
        [EnumMember]
        S_ERROR,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum ErrorCode
    {
        [EnumMember]
        E_CLOSED,
        [EnumMember]
        E_CLAIMED,
        [EnumMember]
        E_NOTCLAIMED,
        [EnumMember]
        E_NOSERVICE,
        [EnumMember]
        E_DISABLED,
        [EnumMember]
        E_ILLEGAL,
        [EnumMember]
        E_NOHARDWARE,
        [EnumMember]
        E_OFFLINE,
        [EnumMember]
        E_NOEXIST,
        [EnumMember]
        E_EXISTS,
        [EnumMember]
        E_FAILURE,
        [EnumMember]
        E_TIMEOUT,
        [EnumMember]
        E_BUSY,
        [EnumMember]
        E_EXTENDED,
        [EnumMember]
        E_DEPRECATED,
    }


    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum HealthCheckLevel
    {
        [EnumMember]
        CH_INTERNAL,
        [EnumMember]
        CH_EXTERNAL,
        [EnumMember]
        CH_INTERACTIVE,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum PowerNotification
    {
        [EnumMember]
        PN_DISABLED,
        [EnumMember]
        PN_ENABLED,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum PowerReporting
    {
        [EnumMember]
        PR_NONE,
        [EnumMember]
        PR_STANDARD,
        [EnumMember]
        PR_ADVANCED,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum PowerState
    {
        [EnumMember]
        PS_UNKNOWN,
        [EnumMember]
        PS_ONLINE,
        [EnumMember]
        PS_OFF,
        [EnumMember]
        PS_OFFLINE,
        [EnumMember]
        PS_OFF_OFFLINE,
    }

    /*
    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum StatisticCategories
    {
        [EnumMember]
        All,
        [EnumMember]
        Manufacturer,
        [EnumMember]
        Upos,
    }
    */
    public class StatisticCategories
    {
        public const string All = "";
        public const string Manufacturer = "M_";
        public const string Upos = "U_";
    }

    //
    // Specific Data Types
    //

    //
    // Specific Enumerations
    //

    
    //[DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    //public enum DeviceUnits
    //{       
    //    [EnumMember]
    //    Unit1,
    //    [EnumMember]
    //    Unit10,
    //    [EnumMember]
    //    Unit11,
    //    [EnumMember]
    //    Unit12,
    //    [EnumMember]
    //    Unit13,
    //    [EnumMember]
    //    Unit14,
    //    [EnumMember]
    //    Unit15,
    //    [EnumMember]
    //    Unit16,
    //    [EnumMember]
    //    Unit17,
    //    [EnumMember]
    //    Unit18,
    //    [EnumMember]
    //    Unit19,
    //    [EnumMember]
    //    Unit2,
    //    [EnumMember]
    //    Unit20,
    //    [EnumMember]
    //    Unit21,
    //    [EnumMember]
    //    Unit22,
    //    [EnumMember]
    //    Unit23,
    //    [EnumMember]
    //    Unit24,
    //    [EnumMember]
    //    Unit25,
    //    [EnumMember]
    //    Unit26,
    //    [EnumMember]
    //    Unit27,
    //    [EnumMember]
    //    Unit28,
    //    [EnumMember]
    //    Unit29,
    //    [EnumMember]
    //    Unit3,
    //    [EnumMember]
    //    Unit31,
    //    [EnumMember]
    //    Unit32,
    //    [EnumMember]
    //    Unit4,
    //    [EnumMember]
    //    Unit5,
    //    [EnumMember]
    //    Unit6,
    //    [EnumMember]
    //    Unit7,
    //    [EnumMember]
    //    Unit8,
    //    [EnumMember]
    //    Unit9,
    //}

    //[DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class DeviceUnits
    {
        public const int ROD_UID_1 = 1;
        public const int ROD_UID_2 = 2;
        public const int ROD_UID_3 = 4;
        public const int ROD_UID_4 = 8;
        public const int ROD_UID_5 = 16;
        public const int ROD_UID_6 = 32;
        public const int ROD_UID_7 = 64;
        public const int ROD_UID_8 = 128;
        public const int ROD_UID_9 = 256;
        public const int ROD_UID_10 = 512;
        public const int ROD_UID_11 = 1024;
        public const int ROD_UID_12 = 2048;
        public const int ROD_UID_13 = 4096;
        public const int ROD_UID_14 = 8192;
        public const int ROD_UID_15 = 16384;
        public const int ROD_UID_16 = 32768;
        public const int ROD_UID_17 = 65536;
        public const int ROD_UID_18 = 131072;
        public const int ROD_UID_19 = 262144;
        public const int ROD_UID_20 = 524288;
        public const int ROD_UID_21 = 1048576;
        public const int ROD_UID_22 = 2097152;
        public const int ROD_UID_23 = 4194304;
        public const int ROD_UID_24 = 8388608;
        public const int ROD_UID_25 = 16777216;
        public const int ROD_UID_26 = 33554432;
        public const int ROD_UID_27 = 67108864;
        public const int ROD_UID_28 = 134217728;
        public const int ROD_UID_29 = 268435456;
        public const int ROD_UID_30 = 536870912;
        public const int ROD_UID_31 = 1073741824;
        public const int ROD_UID_32 = -2147483648;
    }

    //[DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    //public enum VideoAttributes
    //{        
    //    [EnumMember]
    //    BackgroundBlack,
    //    [EnumMember]
    //    BackgroundBlue,
    //    [EnumMember]
    //    BackgroundBrown,
    //    [EnumMember]
    //    BackgroundCyan,
    //    [EnumMember]
    //    BackgroundGray,
    //    [EnumMember]
    //    BackgroundGreen,
    //    [EnumMember]
    //    BackgroundMagenta,
    //    [EnumMember]
    //    BackgroundRed,
    //    [EnumMember]
    //    ForegroundBlack,
    //    [EnumMember]
    //    ForegroundBlue,
    //    [EnumMember]
    //    ForegroundBrown,
    //    [EnumMember]
    //    ForegroundCyan,
    //    [EnumMember]
    //    ForegroundGray,
    //    [EnumMember]
    //    ForegroundGreen,
    //    [EnumMember]
    //    ForegroundMagenta,
    //    [EnumMember]
    //    ForegroundRed,
    //    [EnumMember]
    //    Intensity,
    //  }

    //[DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class VideoAttributes
    {
        public const int ROD_ATTR_FG_BLACK = 0;
        public const int ROD_ATTR_FG_BLUE = 1;
        public const int ROD_ATTR_FG_GREEN = 2;
        public const int ROD_ATTR_FG_CYAN = 3;
        public const int ROD_ATTR_FG_RED = 4;
        public const int ROD_ATTR_FG_MAGENTA = 5;
        public const int ROD_ATTR_FG_BROWN = 6;
        public const int ROD_ATTR_FG_GRAY = 7;

        public const int ROD_ATTR_INTENSITY = 8;

        public const int ROD_ATTR_BG_BLACK = 0;
        public const int ROD_ATTR_BG_BLUE = 16;
        public const int ROD_ATTR_BG_GREEN = 32;
        public const int ROD_ATTR_BG_CYAN = 48;
        public const int ROD_ATTR_BG_RED = 64;
        public const int ROD_ATTR_BG_MAGENTA = 80;
        public const int ROD_ATTR_BG_BROWN = 96;
        public const int ROD_ATTR_BG_GRAY = 112;

        public const int ROD_ATTR_BLINK = 128;
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum ClockFunction
    {
        [EnumMember]
        ROD_CLK_START,
        [EnumMember]
        ROD_CLK_PAUSE,
        [EnumMember]
        ROD_CLK_RESUME,
        [EnumMember]
        ROD_CLK_STOP,
        [EnumMember]
        ROD_CLK_MOVE,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum ClockMode
    {
        [EnumMember]
        ROD_CLK_SHORT,
        [EnumMember]
        ROD_CLK_NORMAL,
        [EnumMember]
        ROD_CLK_12_int,
        [EnumMember]
        ROD_CLK_24_int,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum VideoCursorType
    {
        [EnumMember]
        ROD_CRS_LINE,
        [EnumMember]
        ROD_CRS_LINE_BLINK,
        [EnumMember]
        ROD_CRS_BLOCK,
        [EnumMember]
        ROD_CRS_BLOCK_BLINK,
        [EnumMember]
        ROD_CRS_OFF,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum BorderType
    {
       [EnumMember]
        ROD_BDR_SINGLE,
        [EnumMember]
        ROD_BDR_DOUBLE,
        [EnumMember]
        ROD_BDR_SOLID,    
    }

    //[DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    //public enum RemoteOrderDisplayEventTypes
    //{
    //    [EnumMember]
    //    TouchDown,
    //    [EnumMember]
    //    TouchMove,
    //    [EnumMember]
    //    TouchUp,
    //}

    //[DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class RemoteOrderDisplayEventTypes
    {
        public const int ROD_DE_TOUCH_UP = 1;
        public const int ROD_DE_TOUCH_DOWN = 2;
        public const int ROD_DE_TOUCH_MOVE = 4;
    }


    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum RemoteOrderDisplayTransaction
    {
        [EnumMember]
        ROD_TD_TRANSACTION,
        [EnumMember]
        ROD_TD_NORMAL,
   }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum VideoAttributeCommand
    {
        [EnumMember]
        ROD_UA_SET,
        [EnumMember]
        ROD_UA_INTENSITY_ON,
        [EnumMember]
        ROD_UA_INTENSITY_OFF,
        [EnumMember]
        ROD_UA_REVERSE_ON,
        [EnumMember]
        ROD_UA_REVERSE_OFF,
        [EnumMember]
        ROD_UA_BLINK_ON,
        [EnumMember]
        ROD_UA_BLINK_OFF,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class VideoMode
    {
        [DataMember]
        public int Colors { get; set; }
        [DataMember]
        public int Columns { get; set; }
        [DataMember]
        public bool IsColor { get; set; }
        [DataMember]
        public int ModeId { get; set; }
        [DataMember]
        public int Rows { get; set; }
    }
    


    //
    // Constants
    //

    public class ExtendedError
    {
        public const int EROD_BADCLK = 201;
        public const int EROD_NOCLOCKS = 202;
        public const int EROD_NOREGION = 203;
        public const int EROD_NOBUFFERS = 204;
        public const int EROD_NOROOM = 205;

        public const int EFIRMWARE_BAD_FILE = 281;
        public const int ESTATS_ERROR = 280;
        public const int ESTATS_DEPENDENCY = 282;
    }
    
    public class StatisticProperties
    {
        public const string CommunicationErrorCount = "CommunicationErrorCount";
        public const string DeviceCategory = "DeviceCategory";
        public const string FirmwareRevision = "FirmwareRevision";
        public const string HoursPoweredCount = "HoursPoweredCount";
        public const string InstallationDate = "InstallationDate";
        public const string Interface = "Interface";
        public const string ManufactureDate = "ManufactureDate";
        public const string ManufacturerName = "ManufacturerName";
        public const string MechanicalRevision = "MechanicalRevision";
        public const string ModelName = "ModelName";
        public const string SerialNumber = "SerialNumber";
        public const string UnifiedPOSVersion = "UnifiedPOSVersion";
    }

    public class Wait
    {
        public const int FOREVER = -1;
    }

    public class CharacterSet
    {
        public const int ROD_CS_UNICODE = 997;
        public const int ROD_CS_ASCII = 998;
        public const int ROD_CS_ANSI = 999;
    }

    public class ClockId
    {
        public const int All = 0;
    }

    #endregion

    #region Version 1.2

    //
    // Event Polling
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class RemoteOrderDisplayEvent
    {
        [DataMember]
        public DataEvent DataEvent { get; set; }
        [DataMember]
        public DirectIOEvent DirectIOEvent { get; set; }
        [DataMember]
        public ErrorEvent ErrorEvent { get; set; }
        [DataMember]
        public OutputCompleteEvent OutputCompleteEvent { get; set; }
        [DataMember]
        public StatusUpdateEvent StatusUpdateEvent { get; set; }
        [DataMember]
        public DataContainedEvent DataContainedEvent { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class RemoteOrderDisplayEventResponse
    {
        [DataMember]
        public DataEventResponse DataEventResponse { get; set; }
        [DataMember]
        public DataContainedEventResponse DataContainedEventResponse { get; set; }
        [DataMember]
        public DirectIOEventResponse DirectIOEventResponse { get; set; }
        [DataMember]
        public ErrorEventResponse ErrorEventResponse { get; set; }
        [DataMember]
        public OutputCompleteEventResponse OutputCompleteEventResponse { get; set; }
        [DataMember]
        public StatusUpdateEventResponse StatusUpdateEventResponse { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class DataEvent
    {
        [DataMember]
        public string Source { get; set; }
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DateTime TimeStamp { get; set; }
        [DataMember]
        public int Status { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class DataEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class DirectIOEvent
    {
        [DataMember]
        public string Source { get; set; }
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DateTime TimeStamp { get; set; }
        [DataMember]
        public int EventNumber { get; set; }
        [DataMember]
        public int Data { get; set; }
        [DataMember]
        public object Obj { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class DirectIOEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DirectIOData DirectIOData { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class ErrorEvent
    {
        [DataMember]
        public string Source { get; set; }
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DateTime TimeStamp { get; set; }
        [DataMember]
        public ErrorCode ErrorCode { get; set; }
        [DataMember]
        public int ErrorCodeExtended { get; set; }
        [DataMember]
        public ErrorLocus ErrorLocus { get; set; }
        [DataMember]
        public ErrorResponse ErrorResponse { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class ErrorEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public ErrorResponse ErrorResponse { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class OutputCompleteEvent
    {
        [DataMember]
        public string Source { get; set; }
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DateTime TimeStamp { get; set; }
        [DataMember]
        public int OutputID { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class OutputCompleteEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class StatusUpdateEvent
    {
        [DataMember]
        public string Source { get; set; }
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DateTime TimeStamp { get; set; }
        [DataMember]
        public int Status { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class StatusUpdateEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum ErrorLocus
    {
        [EnumMember]
        EL_INPUT,
        [EnumMember]
        EL_INPUT_DATA,
        [EnumMember]
        EL_OUTPUT,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public enum ErrorResponse
    {
        [EnumMember]
        ER_CLEAR,
        [EnumMember]
        ER_CONTINUEINPUT,
        [EnumMember]
        ER_RETRY,
    }

    #endregion

    #region Version 1.3

    [CollectionDataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/", ItemName = "PropertyName")]
    public class PropertyNameList : List<string>
    {
    }



    [CollectionDataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/", ItemName = "Parameter")]
    public class ParameterList : Dictionary<string, object>
    {
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class DataContainedEvent
    {
        [DataMember]
        public string Source { get; set; }
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public DateTime TimeStamp { get; set; }
        [DataMember]
        public int Status { get; set; }
        [DataMember]
        public ParameterList Parameters { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class DataContainedEventData
    {
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public bool SetDataEventEnabled { get; set; }
        [DataMember]
        public bool CallClearInputProperties { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/RemoteOrderDisplay/")]
    public class DataContainedEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public bool SetDataEventEnabled { get; set; }
        [DataMember]
        public bool CallClearInputProperties { get; set; }
    }

    #endregion
}
