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