Server/Display.cs
author sl
Tue, 26 Aug 2014 19:24:04 +0200
changeset 45 b5a0fa4770d3
parent 39 083f4935aae4
child 46 0c0ee86760ea
permissions -rw-r--r--
Now requesting extra info on auto start-up too.
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 //
     7 using System.Runtime.InteropServices;
     8 
     9 namespace SharpDisplayManager
    10 {
    11     /// <summary>
    12     /// Provide access to our display hardware through MiniDisplay API.
    13     /// </summary>
    14     class Display
    15     {
    16 
    17         //Constructor
    18         public Display()
    19         {
    20             iDevice = IntPtr.Zero;
    21         }
    22 
    23         //
    24         public bool Open(TMiniDisplayType aType)
    25         {
    26             if (iDevice == IntPtr.Zero)
    27             {
    28                 iDevice = MiniDisplayOpen(aType);
    29             }
    30             return iDevice != IntPtr.Zero;
    31         }
    32 
    33         public void Close()
    34         {
    35             MiniDisplayClose(iDevice);
    36             iDevice = IntPtr.Zero;
    37         }
    38 
    39         public bool IsOpen()
    40         {
    41             return iDevice != IntPtr.Zero;
    42         }
    43 
    44         public void Clear()
    45         {
    46             MiniDisplayClear(iDevice);
    47         }
    48 
    49         public void Fill()
    50         {
    51             MiniDisplayFill(iDevice);
    52         }
    53 
    54         public void SwapBuffers()
    55         {
    56             MiniDisplaySwapBuffers(iDevice);
    57         }
    58 
    59         public int MaxBrightness()
    60         {
    61             return MiniDisplayMaxBrightness(iDevice);
    62         }
    63 
    64         public int MinBrightness()
    65         {
    66             return MiniDisplayMinBrightness(iDevice);
    67         }
    68 
    69         public void SetBrightness(int aBrightness)
    70         {
    71             if (!IsOpen()) return;
    72 
    73             MiniDisplaySetBrightness(iDevice, aBrightness);
    74         }
    75 
    76         public int WidthInPixels()
    77         {
    78             return MiniDisplayWidthInPixels(iDevice);
    79         }
    80 
    81         public int HeightInPixels()
    82         {
    83             return MiniDisplayHeightInPixels(iDevice);
    84         }
    85 
    86         public void SetPixel(int aX, int aY, int aValue)
    87         {
    88             MiniDisplaySetPixel(iDevice,aX,aY,aValue);
    89         }
    90 
    91         public void RequestPowerSupplyStatus()
    92         {
    93             MiniDisplayRequest(iDevice, TMiniDisplayRequest.EMiniDisplayRequestPowerSupplyStatus);
    94         }
    95 
    96         public void RequestDeviceId()
    97         {
    98             MiniDisplayRequest(iDevice, TMiniDisplayRequest.EMiniDisplayRequestDeviceId);
    99         }
   100 
   101         public void RequestFirmwareRevision()
   102         {
   103             MiniDisplayRequest(iDevice, TMiniDisplayRequest.EMiniDisplayRequestFirmwareRevision);
   104         }
   105 
   106         public bool PowerSupplyStatus()
   107         {
   108             bool res = MiniDisplayPowerSupplyStatus(iDevice);
   109             return res;
   110         }
   111 
   112         public TMiniDisplayRequest AttemptRequestCompletion()
   113         {
   114             return MiniDisplayAttemptRequestCompletion(iDevice);
   115         }
   116 
   117         public TMiniDisplayRequest CurrentRequest()
   118         {
   119             return MiniDisplayCurrentRequest(iDevice);
   120         }
   121 
   122         public bool IsRequestPending()
   123         {
   124             return CurrentRequest() != TMiniDisplayRequest.EMiniDisplayRequestNone;
   125         }
   126 
   127 
   128         public string Vendor()
   129         {
   130             IntPtr ptr = MiniDisplayVendor(iDevice);
   131             string str = Marshal.PtrToStringUni(ptr);
   132             return str;
   133         }
   134 
   135         public string Product()
   136         {
   137             IntPtr ptr = MiniDisplayProduct(iDevice);
   138             string str = Marshal.PtrToStringUni(ptr);
   139             return str;
   140         }
   141 
   142         public string SerialNumber()
   143         {
   144             IntPtr ptr = MiniDisplaySerialNumber(iDevice);
   145             string str = Marshal.PtrToStringUni(ptr);
   146             return str;
   147         }
   148 
   149         public string DeviceId()
   150         {
   151             IntPtr ptr = MiniDisplayDeviceId(iDevice);
   152             string str = Marshal.PtrToStringAnsi(ptr);
   153             return str;
   154         }
   155 
   156         public string FirmwareRevision()
   157         {
   158             IntPtr ptr = MiniDisplayFirmwareRevision(iDevice);
   159             string str = Marshal.PtrToStringAnsi(ptr);
   160             return str;
   161         }
   162 
   163         //Our display device handle
   164         IntPtr iDevice;
   165 
   166         public enum TMiniDisplayType
   167         {
   168             EMiniDisplayAutoDetect, /*Not yet implemented*/
   169             EMiniDisplayFutabaGP1212A01,
   170             EMiniDisplayFutabaGP1212A02
   171         };
   172 
   173 
   174         public enum TMiniDisplayRequest
   175         {
   176             EMiniDisplayRequestNone,
   177             EMiniDisplayRequestDeviceId,
   178             EMiniDisplayRequestFirmwareRevision,
   179             EMiniDisplayRequestPowerSupplyStatus
   180         };
   181 
   182         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   183         public static extern IntPtr MiniDisplayOpen(TMiniDisplayType aType);
   184 
   185         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   186         public static extern void MiniDisplayClose(IntPtr aDevice);
   187 
   188         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   189         public static extern void MiniDisplayClear(IntPtr aDevice);
   190 
   191         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   192         public static extern void MiniDisplayFill(IntPtr aDevice);
   193 
   194         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   195         public static extern void MiniDisplaySwapBuffers(IntPtr aDevice);
   196 
   197         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   198         public static extern void MiniDisplaySetBrightness(IntPtr aDevice, int aBrightness);
   199 
   200         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   201         public static extern int MiniDisplayMinBrightness(IntPtr aDevice);
   202 
   203         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   204         public static extern int MiniDisplayMaxBrightness(IntPtr aDevice);
   205 
   206         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   207         public static extern int MiniDisplayWidthInPixels(IntPtr aDevice);
   208 
   209         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   210         public static extern int MiniDisplayHeightInPixels(IntPtr aDevice);
   211 
   212         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   213         public static extern int MiniDisplaySetPixel(IntPtr aDevice, int aX, int aY, int aValue);
   214 
   215         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   216         public static extern IntPtr MiniDisplayVendor(IntPtr aDevice);
   217 
   218         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   219         public static extern IntPtr MiniDisplayProduct(IntPtr aDevice);
   220 
   221         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   222         public static extern IntPtr MiniDisplaySerialNumber(IntPtr aDevice);
   223 
   224         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   225         public static extern IntPtr MiniDisplayDeviceId(IntPtr aDevice);
   226 
   227         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   228         public static extern IntPtr MiniDisplayFirmwareRevision(IntPtr aDevice);
   229 
   230         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   231         [return: MarshalAs(UnmanagedType.I1)]
   232         public static extern bool MiniDisplayPowerSupplyStatus(IntPtr aDevice);
   233 
   234         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   235         public static extern void MiniDisplayRequest(IntPtr aDevice, TMiniDisplayRequest aRequest);
   236 
   237         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   238         public static extern TMiniDisplayRequest MiniDisplayAttemptRequestCompletion(IntPtr aDevice);
   239 
   240         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   241         public static extern TMiniDisplayRequest MiniDisplayCurrentRequest(IntPtr aDevice);
   242 
   243         [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
   244         public static extern void MiniDisplayCancelRequest(IntPtr aDevice);
   245 
   246 
   247     }
   248 }