using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HidLibrary
{
    public class HidDeviceCapabilities
    {
        public short Usage
        {
            get;
            private set;
        }

        public short UsagePage
        {
            get;
            private set;
        }

        public short InputReportByteLength
        {
            get;
            private set;
        }

        public short OutputReportByteLength
        {
            get;
            private set;
        }

        public short FeatureReportByteLength
        {
            get;
            private set;
        }

        public short[] Reserved
        {
            get;
            private set;
        }

        public short NumberLinkCollectionNodes
        {
            get;
            private set;
        }

        public short NumberInputButtonCaps
        {
            get;
            private set;
        }

        public short NumberInputValueCaps
        {
            get;
            private set;
        }

        public short NumberInputDataIndices
        {
            get;
            private set;
        }

        public short NumberOutputButtonCaps
        {
            get;
            private set;
        }

        public short NumberOutputValueCaps
        {
            get;
            private set;
        }

        public short NumberOutputDataIndices
        {
            get;
            private set;
        }

        public short NumberFeatureButtonCaps
        {
            get;
            private set;
        }

        public short NumberFeatureValueCaps
        {
            get;
            private set;
        }

        public short NumberFeatureDataIndices
        {
            get;
            private set;
        }

        internal HidDeviceCapabilities(NativeMethods.HIDP_CAPS capabilities)
        {
            Usage = capabilities.Usage;
            UsagePage = capabilities.UsagePage;
            InputReportByteLength = capabilities.InputReportByteLength;
            OutputReportByteLength = capabilities.OutputReportByteLength;
            FeatureReportByteLength = capabilities.FeatureReportByteLength;
            Reserved = capabilities.Reserved;
            NumberLinkCollectionNodes = capabilities.NumberLinkCollectionNodes;
            NumberInputButtonCaps = capabilities.NumberInputButtonCaps;
            NumberInputValueCaps = capabilities.NumberInputValueCaps;
            NumberInputDataIndices = capabilities.NumberInputDataIndices;
            NumberOutputButtonCaps = capabilities.NumberOutputButtonCaps;
            NumberOutputValueCaps = capabilities.NumberOutputValueCaps;
            NumberOutputDataIndices = capabilities.NumberOutputDataIndices;
            NumberFeatureButtonCaps = capabilities.NumberFeatureButtonCaps;
            NumberFeatureValueCaps = capabilities.NumberFeatureValueCaps;
            NumberFeatureDataIndices = capabilities.NumberFeatureDataIndices;
        }
    }
}
