Adding support for power on/off.
2 using System.Collections.Generic;
5 using System.Threading.Tasks;
7 using System.Runtime.InteropServices;
8 //using System.Runtime.Serialization;
10 namespace SharpDisplayManager
14 /// Provide access to our display hardware through MiniDisplay API.
22 iDevice = IntPtr.Zero;
26 public bool Open(TMiniDisplayType aType)
28 if (iDevice == IntPtr.Zero)
30 iDevice = MiniDisplayOpen(aType);
32 return iDevice != IntPtr.Zero;
37 MiniDisplayClose(iDevice);
38 iDevice = IntPtr.Zero;
43 return iDevice != IntPtr.Zero;
48 MiniDisplayClear(iDevice);
53 MiniDisplayFill(iDevice);
56 public void SwapBuffers()
58 MiniDisplaySwapBuffers(iDevice);
61 public int MaxBrightness()
63 return MiniDisplayMaxBrightness(iDevice);
66 public int MinBrightness()
68 return MiniDisplayMinBrightness(iDevice);
71 public void SetBrightness(int aBrightness)
73 if (!IsOpen()) return;
75 MiniDisplaySetBrightness(iDevice, aBrightness);
78 public int WidthInPixels()
80 return MiniDisplayWidthInPixels(iDevice);
83 public int HeightInPixels()
85 return MiniDisplayHeightInPixels(iDevice);
88 public void SetPixel(int aX, int aY, int aValue)
90 MiniDisplaySetPixel(iDevice,aX,aY,aValue);
93 public void RequestPowerSupplyStatus()
95 MiniDisplayRequest(iDevice, TMiniDisplayRequest.EMiniDisplayRequestPowerSupplyStatus);
98 public void RequestDeviceId()
100 MiniDisplayRequest(iDevice, TMiniDisplayRequest.EMiniDisplayRequestDeviceId);
103 public void RequestFirmwareRevision()
105 MiniDisplayRequest(iDevice, TMiniDisplayRequest.EMiniDisplayRequestFirmwareRevision);
108 public void PowerOn()
110 MiniDisplayPowerOn(iDevice);
113 public void PowerOff()
115 MiniDisplayPowerOff(iDevice);
118 public bool SupportPowerOnOff()
120 return MiniDisplaySupportPowerOnOff(iDevice);
123 public bool PowerSupplyStatus()
125 bool res = MiniDisplayPowerSupplyStatus(iDevice);
129 public TMiniDisplayRequest AttemptRequestCompletion()
131 return MiniDisplayAttemptRequestCompletion(iDevice);
134 public TMiniDisplayRequest CurrentRequest()
136 return MiniDisplayCurrentRequest(iDevice);
139 public bool IsRequestPending()
141 return CurrentRequest() != TMiniDisplayRequest.EMiniDisplayRequestNone;
145 public string Vendor()
147 IntPtr ptr = MiniDisplayVendor(iDevice);
148 string str = Marshal.PtrToStringUni(ptr);
152 public string Product()
154 IntPtr ptr = MiniDisplayProduct(iDevice);
155 string str = Marshal.PtrToStringUni(ptr);
159 public string SerialNumber()
161 IntPtr ptr = MiniDisplaySerialNumber(iDevice);
162 string str = Marshal.PtrToStringUni(ptr);
166 public string DeviceId()
168 IntPtr ptr = MiniDisplayDeviceId(iDevice);
169 string str = Marshal.PtrToStringAnsi(ptr);
173 public string FirmwareRevision()
175 IntPtr ptr = MiniDisplayFirmwareRevision(iDevice);
176 string str = Marshal.PtrToStringAnsi(ptr);
180 //Our display device handle
185 public enum TMiniDisplayType
187 EMiniDisplayAutoDetect, /*Not yet implemented*/
188 //[EnumMember(Value = "EMiniDisplayFutabaGP1212A01")]
189 EMiniDisplayFutabaGP1212A01,
190 //[EnumMember(Value = "EMiniDisplayFutabaGP1212A01")]
191 EMiniDisplayFutabaGP1212A02
195 public enum TMiniDisplayRequest
197 EMiniDisplayRequestNone,
198 EMiniDisplayRequestDeviceId,
199 EMiniDisplayRequestFirmwareRevision,
200 EMiniDisplayRequestPowerSupplyStatus
203 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
204 public static extern IntPtr MiniDisplayOpen(TMiniDisplayType aType);
206 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
207 public static extern void MiniDisplayClose(IntPtr aDevice);
209 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
210 public static extern void MiniDisplayClear(IntPtr aDevice);
212 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
213 public static extern void MiniDisplayFill(IntPtr aDevice);
215 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
216 public static extern void MiniDisplaySwapBuffers(IntPtr aDevice);
218 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
219 public static extern void MiniDisplaySetBrightness(IntPtr aDevice, int aBrightness);
221 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
222 public static extern int MiniDisplayMinBrightness(IntPtr aDevice);
224 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
225 public static extern int MiniDisplayMaxBrightness(IntPtr aDevice);
227 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
228 public static extern int MiniDisplayWidthInPixels(IntPtr aDevice);
230 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
231 public static extern int MiniDisplayHeightInPixels(IntPtr aDevice);
233 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
234 public static extern int MiniDisplaySetPixel(IntPtr aDevice, int aX, int aY, int aValue);
236 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
237 public static extern IntPtr MiniDisplayVendor(IntPtr aDevice);
239 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
240 public static extern IntPtr MiniDisplayProduct(IntPtr aDevice);
242 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
243 public static extern IntPtr MiniDisplaySerialNumber(IntPtr aDevice);
245 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
246 public static extern IntPtr MiniDisplayDeviceId(IntPtr aDevice);
248 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
249 public static extern IntPtr MiniDisplayFirmwareRevision(IntPtr aDevice);
251 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
252 [return: MarshalAs(UnmanagedType.I1)]
253 public static extern bool MiniDisplayPowerSupplyStatus(IntPtr aDevice);
255 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
256 public static extern void MiniDisplayRequest(IntPtr aDevice, TMiniDisplayRequest aRequest);
258 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
259 public static extern TMiniDisplayRequest MiniDisplayAttemptRequestCompletion(IntPtr aDevice);
261 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
262 public static extern TMiniDisplayRequest MiniDisplayCurrentRequest(IntPtr aDevice);
264 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
265 public static extern void MiniDisplayCancelRequest(IntPtr aDevice);
267 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
268 public static extern void MiniDisplayPowerOn(IntPtr aDevice);
270 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
271 public static extern void MiniDisplayPowerOff(IntPtr aDevice);
273 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
274 [return: MarshalAs(UnmanagedType.I1)]
275 public static extern bool MiniDisplaySupportPowerOnOff(IntPtr aDevice);