#ifndef DRIVERS_ADC_H_
#define DRIVERS_ADC_H_
#include <stdint.h>
//*****************************************************************************
//
// The following are indexes for values returned from the ADC's. These index's
// map directly to g_pui32ADCSeq[], and inside this array there is a directly
// ADC copied data
//*****************************************************************************
#define MAX_ADC_DEVICES 20
#define MAX_DISPENSERS
//#define MAX_ADC_DEVICES NUM_ADC_CHANNELS
#define MAX_DIGITAL_POTENTIOMETER_READ 0x660D
extern int DispenserIdToPressureSenusing System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using Tango.Core.Commands;
using Tango.SharedUI;
using Tango.Touch.Controls;
namespace Tango.PPC.Common.Notifications
{
/// <summary>
/// Represents the PPC user notification provider responsible for displaying information, alerts and dialogs to the user.
/// </summary>
public interface INotificationProvider
{
/// <summary>
/// Gets the collection of notification items.
/// </summary>
ObservableCollection<NotificationItem> NotificationItems { get; }
/// <summary>
/// Gets the collection of taskbar items.
/// </summary>
ObservableCollection<TaskBarItem> TaskBarItems { get; }
/// <summary>
/// Gets the current application bar item.
/// </summary>
AppBarItem CurrentAppBarItem { get; }
/// <summary>
/// Gets a value indicating whether this instance has application bar item.
/// </summary>
bool HasAppBarItem { get; }
/// <summary>
/// Gets a value indicating whether this instance has notification items.
/// </summary>
bool HasNotificationItems { get; }
/// <summary>
/// Gets the current message box.
/// </summary>
MessageBoxVM CurrentMessageBox { get; }
/// <summary>
/// Gets a value indicating whether this instance has message box.
/// </summary>
bool HasMessageBox { get; }
/// <summary>
/// Gets the current dialog.
/// </summary>
FrameworkElement CurrentDialog { get; }
/// <summary>
/// Gets the current app button.
/// </summary>
AppButton CurrentAppButton { get; }
/// <summary>
/// Gets a value indicating whether this instance has a dialog.
/// </summary>
bool HasDialog { get; }
/// <summary>
/// Shows an information message box.
/// </summary>
/// <param name="message">The message.</param>
Task ShowInfo(String message);
/// <summary>
/// Shows warning message box.
/// </summary>
/// <param name="message">The message.</param>
Task ShowWarning(String message);
/// <summary>
/// Shows an error message box.
/// </summary>
/// <param name="message">The message.</param>
Task ShowError(String message);
/// <summary>
/// Shows a success message box.
/// </summary>
/// <param name="message">The message.</param>
Task ShowSuccess(String message);
/// <summary>
/// Shows a question message box.
/// </summary>
/// <param name="message">The message.</param>
Task<bool> ShowQuestion(String message);
/// <summary>
/// Inserts the notification item to the bottom of the notifications collection.
/// </summary>
/// <param name="item">The item.</param>
NotificationItem PushNotification(NotificationItem item);
/// <summary>
/// Pushes the notification.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
NotificationItem PushNotification<T>() where T : NotificationItem;
/// <summary>
/// Displays the specified dialog in a modal design.
/// </summary>
/// <typeparam name="VM"></typeparam>
/// <param name="datacontext">The data context.</param>
/// <param name="view">The view.</param>
/// <returns></returns>
Task<VM> ShowDialog<VM>(VM datacontext, FrameworkElement view) where VM : DialogViewVM;
/// <summary>
/// Displays the specified dialog in a modal design.
/// The notification provider will try to locate the view automatically using conventions.
/// </summary>
/// <typeparam name="VM"></typeparam>
/// <param name="datacontext">The data context.</param>
/// <returns></returns>
Task<VM> ShowDialog<VM>(VM datacontext) where VM : DialogViewVM;
/// <summary>
/// Displays the specified dialog in a modal design.
/// The data context instance will be automatically created.
/// The notification provider will try to locate the view automatically using conventions.
/// </summary>
/// <typeparam name="VM"></typeparam>
/// <returns></returns>
Task<VM> ShowDialog<VM>() where VM : DialogViewVM;
/// <summary>
/// Removed the specified notification item.
/// </summary>
/// <param name="item">The item.</param>
void PopNotification(NotificationItem item);
/// <summary>
/// Gets a value indicating whether this instance is in global busy state.
/// </summary>
bool IsInGlobalBusyState { get; }
/// <summary>
/// Sets the global busy message.
/// </summary>
/// <param name="message">The message.</param>
void SetGlobalBusyMessage(String message);
/// <summary>
/// Releases the global busy message.
/// </summary>
void ReleaseGlobalBusyMessage();
/// <summary>
/// Gets the current global busy message.
/// </summary>
String GlobalBusyMessage { get; }
/// <summary>
/// Pushes the application bar item.
/// </summary>
/// <param name="appBarItem">The application bar item.</param>
/// <returns></returns>
AppBarItem PushAppBarItem(AppBarItem appBarItem);
/// <summary>
/// Pushes the application bar item.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
AppBarItem PushAppBarItem<T>() where T : AppBarItem;
/// <summary>
/// Pops the application bar item.
/// </summary>
/// <param name="appBarItem">The application bar item.</param>
void PopAppBarItem(AppBarItem appBarItem);
/// <summary>
/// Pushes the task bar item.
/// </summary>
/// <param name="taskBarItem">The task bar item.</param>
/// <returns></returns>
TaskBarItem PushTaskBarItem(TaskBarItem taskBarItem);
/// <summary>
/// Handles the Push Task Bar Item event.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
TaskBarItem PushTaskBarItem<T>() where T : TaskBarItem;
/// <summary>
/// Pops the task bar item.
/// </summary>
/// <param name="TaskBarItem">The task bar item.</param>
void PopTaskBarItem(TaskBarItem taskBarItem);
/// <summary>
/// Gets or sets a value indicating whether to allow notifications visibility.
/// </summary>
bool NotificationsVisible { get; set; }
/// <summary>
/// Pushes the app button.
/// </summary>
/// <param name="appButton">The app button.</param>
void PushAppButton(AppButton appButton);
/// <summary>
/// Pops the app button.
/// </summary>
/// <param name="appButton">The app button.</param>
void PopAppButton(AppButton appButton);
}
}