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

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

        //
        // Common Properties
        //

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        //
        // Specific Properties
        //

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/SetBatteryCriticallyLowThreshold", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/POSPower/SetBatteryCriticallyLowThresholdResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/UposException", Name = "UposException")]
        void SetBatteryCriticallyLowThreshold(string ConsumerID, int BatteryCriticallyLowThreshold);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/SetBatteryLowThreshold", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/POSPower/SetBatteryLowThresholdResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/UposException", Name = "UposException")]
        void SetBatteryLowThreshold(string ConsumerID, int BatteryLowThreshold);

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

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

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

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/GetPowerSource", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/POSPower/GetPowerSourceResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/UposException", Name = "UposException")]
        PowerSource GetPowerSource(string ConsumerID);

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

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

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

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

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/SetEnforcedShutdownDelayTime", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/POSPower/SetEnforcedShutdownDelayTimeResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/UposException", Name = "UposException")]
        void SetEnforcedShutdownDelayTime(string ConsumerID, int EnforcedShutdownDelayTime);

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

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

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

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

        //
        // Common Methods
        //

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        //
        // Specific Methods
        //

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/StandbyPOS", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/POSPower/StandbyPOSResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/UposException", Name = "UposException")]
        void StandbyPOS(string ConsumerID, SystemStateChangeReason Reason);

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/SuspendPOS", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/POSPower/SuspendPOSResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/UposException", Name = "UposException")]
        void SuspendPOS(string ConsumerID, SystemStateChangeReason Reason);

        #endregion

        #region Version 1.2

        //
        // Session Management
        //

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

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

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

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

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

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

        //
        // Device Control
        // 

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

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

        //
        // Event Polling
        //

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

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

        #endregion

        #region Version 1.3

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

        #endregion

        #region Version 1.4

        //
        // Specific Properties
        //

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

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/SetBatteryCriticallyLowThreshold", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/POSPower/SetBatteryCriticallyLowThresholdResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/UposException", Name = "UposException")]
        void SetBatteryCriticallyLowThresholdInSeconds(string ConsumerID, int BatteryCriticallyLowThresholdInSeconds);

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

        [OperationContract(Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/SetBatteryLowThreshold", ReplyAction = "http://www.nrf-arts.org/UnifiedPOS/POSPower/SetBatteryLowThresholdResponse")]
        [FaultContract(typeof(UposException), Action = "http://www.nrf-arts.org/UnifiedPOS/POSPower/UposException", Name = "UposException")]
        void SetBatteryLowThresholdInSeconds(string ConsumerID, int BatteryLowThresholdInSeconds);

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

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

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

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

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

        #endregion
    }

    #region Version 1.1

    //
    // Common Data Types
    //

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

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

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

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

    //
    // Common Enumerations
    //

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

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

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

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

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/POSPower/")]
    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/POSPower/")]
    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/POSPower/")]
    public enum PowerSource
    {
        [EnumMember]
        PWR_SOURCE_NA,
        [EnumMember]
        PWR_SOURCE_AC,
        [EnumMember]
        PWR_SOURCE_BATTERY,
        [EnumMember]
        PWR_SOURCE_BACKUP,
    }

    /*
    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/POSPower/")]
    public enum UPSChargeStates
    {
        [EnumMember]
        Critical,
        [EnumMember]
        Full,
        [EnumMember]
        Low,
        [EnumMember]
        Warning,
    }
    */

    public class UPSChargeStates
    {
        public const int PWR_UPS_FULL = 1;
        public const int PWR_UPS_WARNING = 2;
        public const int PWR_UPS_LOW = 4;
        public const int PWR_UPS_CRITICAL = 8;
    }

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/POSPower/")]
    public enum SystemStateChangeReason
    {
        [EnumMember]
        PWR_REASON_REQUEST,
        [EnumMember]
        PWR_REASON_ALLOW,
        [EnumMember]
        PWR_REASON_DENY,
    }

    //
    // Constants
    //

    public class ExtendedError
    {
        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;
    }

    #endregion

    #region Version 1.2

    //
    // Event Polling
    //

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/POSPower/")]
    public class POSPowerEvent
    {
        //[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; }
    }

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

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

    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/POSPower/")]
    public class OutputCompleteEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }
    */
    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/POSPower/")]
    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/POSPower/")]
    public class StatusUpdateEventResponse
    {
        [DataMember]
        public int EventID { get; set; }
    }
    /*
    [DataContract(Namespace = "http://www.nrf-arts.org/UnifiedPOS/POSPower/")]
    public enum ErrorLocus
    {
        [EnumMember]
        EL_INPUT,
        [EnumMember]
        EL_INPUT_DATA,
        [EnumMember]
        EL_OUTPUT,
    }

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