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

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

        //
        // Common Properties
        //

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        //
        // Specific Properties
        //

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/GetCapStorage", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/GetCapStorageResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/UposException", Name = "UposException")]
        CapStorage GetCapStorage(string ConsumerID);

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

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

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/SetBrightness", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/SetBrightnessResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/UposException", Name = "UposException")]
        void SetBrightness(string ConsumerID, int Brightness);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/GetDisplayMode", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/GetDisplayModeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/UposException", Name = "UposException")]
        DisplayMode GetDisplayMode(string ConsumerID);

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/GetImageTypeList", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/GetImageTypeListResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/UposException", Name = "UposException")]
        ImageTypeList GetImageTypeList(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/GetLoadStatus", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/GetLoadStatusResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/UposException", Name = "UposException")]
        LoadStatus GetLoadStatus(string ConsumerID);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/GetStorage", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/GetStorageResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/UposException", Name = "UposException")]
        Storage GetStorage(string ConsumerID);

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

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/GetVideoTypeList", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/GetVideoTypeListResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/UposException", Name = "UposException")]
        VideoTypeList GetVideoTypeList(string ConsumerID);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/SetVolume", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/SetVolumeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/UposException", Name = "UposException")]
        void SetVolume(string ConsumerID, int Volume);

        //
        // Common Methods
        //

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

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

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

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

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

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

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/CompareFirmwareVersion", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/CompareFirmwareVersionResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/UposException", Name = "UposException")]
        CompareFirmwareResult CompareFirmwareVersion(string ConsumerID, string FirmwareFileName);

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

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

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

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

        //
        // Specific Methods
        //

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

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

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/PlayVideo", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/PlayVideoResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/UposException", Name = "UposException")]
        void PlayVideo(string ConsumerID, string FileName, bool Loop);

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

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

        //
        // Session Management
        //

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

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

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

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

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

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

        //
        // Device Control
        //

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

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

        //
        // Event Polling
        //

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

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

        #endregion Version 1.4

        #region Version 1.3

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

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

        #endregion Version 1.3
    }

    #region Version 1.4

    //
    // Common Data Types
    //

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

        [DataMember]
        public object Obj { get; set; }
    }

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

        [DataMember]
        public int ErrorCodeExtended { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    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/GraphicDisplay/")]
    public class Statistic
    {
        [DataMember]
        public string Name { get; set; }

        [DataMember]
        public string Value { get; set; }
    }

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

    //
    // Common Enumerations
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    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/GraphicDisplay/")]
    public enum ControlState
    {
        [EnumMember]
        S_CLOSED,

        [EnumMember]
        S_IDLE,

        [EnumMember]
        S_BUSY,

        [EnumMember]
        S_ERROR,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    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/GraphicDisplay/")]
    public enum HealthCheckLevel
    {
        [EnumMember]
        CH_INTERNAL,

        [EnumMember]
        CH_EXTERNAL,

        [EnumMember]
        CH_INTERACTIVE,
    }

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

        [EnumMember]
        PN_ENABLED,
    }

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

        [EnumMember]
        PR_STANDARD,

        [EnumMember]
        PR_ADVANCED,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    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/GraphicDisplay/")]
    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/GraphicDisplay/")]
    public enum CapStorage
    {
        [EnumMember]
        GDSP_CST_HOST_ONLY,

        [EnumMember]
        GDSP_CST_HARDTOTALS_ONLY,

        [EnumMember]
        GDSP_CST_ALL,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    public enum Storage
    {
        [EnumMember]
        GDSP_ST_HOST,

        [EnumMember]
        GDSP_ST_HARDTOTALS,

        [EnumMember]
        GDSP_ST_HOST_HARDTOTALS,
    }

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

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

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    public enum DisplayMode
    {
        [EnumMember]
        GDSP_DMODE_HIDDEN,

        [EnumMember]
        GDSP_DMODE_IMAGE_FIT,

        [EnumMember]
        GDSP_DMODE_IMAGE_FILL,

        [EnumMember]
        GDSP_DMODE_IMAGE_CENTER,

        [EnumMember]
        GDSP_DMODE_VIDEO_NORMAL,

        [EnumMember]
        GDSP_DMODE_VIDEO_FULL,

        [EnumMember]
        GDSP_DMODE_WEB,
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    public enum LoadStatus
    {
        [EnumMember]
        GDSP_LSTATUS_START,

        [EnumMember]
        GDSP_LSTATUS_FINISH,

        [EnumMember]
        GDSP_LSTATUS_CANCEL,
    }

    //
    // Constants
    //

    public class ExtendedError
    {
        public const int EGDSP_NOROOM = 201;

        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;
    }

    //
    // Event Polling
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    public class GraphicDisplayEvent
    {
        //[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/GraphicDisplay/")]
    public class GraphicDisplayEventResponse
    {
        //[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/GraphicDisplay/")]
    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/GraphicDisplay/")]
    public class DataEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }
    */

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    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/GraphicDisplay/")]
    public class DirectIOEventResponse
    {
        [DataMember]
        public int EventID { get; set; }

        [DataMember]
        public DirectIOData DirectIOData { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    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/GraphicDisplay/")]
    public class ErrorEventResponse
    {
        [DataMember]
        public int EventID { get; set; }

        [DataMember]
        public ErrorResponse ErrorResponse { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    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/GraphicDisplay/")]
    public class OutputCompleteEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    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/GraphicDisplay/")]
    public class StatusUpdateEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }

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

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

        [EnumMember]
        ER_RETRY,
    }

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

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

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/GraphicDisplay/")]
    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/GraphicDisplay/")]
    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/GraphicDisplay/")]
    public class DataContainedEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
        [DataMember]
        public bool SetDataEventEnabled { get; set; }
        [DataMember]
        public bool CallClearInputProperties { get; set; }
    }
    */

    #endregion Version 1.4
}