

using Lavspent.DaisyChain.Gpio;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;

namespace Lavspent.DaisyChain.Adc
{
    /// <summary>
    /// 
    /// </summary>
    public interface IAdcController
    {
        /// <summary>
        /// 
        /// </summary>
        int ChannelCount { get; }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="channelNumber"></param>
        /// <param name="sharingMode"></param>
        /// <returns></returns>
        Task<IAdcChannel> OpenAdcChannelAsync(int channelNumber);

        /// <summary>
        /// 
        /// </summary>
        AdcChannelMode ChannelMode { get; set; }

        /// <summary>
        /// 
        /// </summary>
        int MaxValue { get; }

        /// <summary>
        /// 
        /// </summary>
        int MinValue { get; }

        /// <summary>
        /// 
        /// </summary>
        int ResolutionInBits { get; }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="channelMode"></param>
        /// <returns></returns>
        bool IsChannelModeSupported(AdcChannelMode channelMode);
    }
}
