Now requesting extra info on auto start-up too.
2 using System.Collections.Generic;
5 using System.Threading.Tasks;
7 using System.Runtime.InteropServices;
9 namespace SharpDisplayManager
12 /// Provide access to our display hardware through MiniDisplay API.
20 iDevice = IntPtr.Zero;
24 public bool Open(TMiniDisplayType aType)
26 if (iDevice == IntPtr.Zero)
28 iDevice = MiniDisplayOpen(aType);
30 return iDevice != IntPtr.Zero;
35 MiniDisplayClose(iDevice);
36 iDevice = IntPtr.Zero;
41 return iDevice != IntPtr.Zero;
46 MiniDisplayClear(iDevice);
51 MiniDisplayFill(iDevice);
54 public void SwapBuffers()
56 MiniDisplaySwapBuffers(iDevice);
59 public int MaxBrightness()
61 return MiniDisplayMaxBrightness(iDevice);
64 public int MinBrightness()
66 return MiniDisplayMinBrightness(iDevice);
69 public void SetBrightness(int aBrightness)
71 if (!IsOpen()) return;
73 MiniDisplaySetBrightness(iDevice, aBrightness);
76 public int WidthInPixels()
78 return MiniDisplayWidthInPixels(iDevice);
81 public int HeightInPixels()
83 return MiniDisplayHeightInPixels(iDevice);
86 public void SetPixel(int aX, int aY, int aValue)
88 MiniDisplaySetPixel(iDevice,aX,aY,aValue);
91 public void RequestPowerSupplyStatus()
93 MiniDisplayRequest(iDevice, TMiniDisplayRequest.EMiniDisplayRequestPowerSupplyStatus);
96 public void RequestDeviceId()
98 MiniDisplayRequest(iDevice, TMiniDisplayRequest.EMiniDisplayRequestDeviceId);
101 public void RequestFirmwareRevision()
103 MiniDisplayRequest(iDevice, TMiniDisplayRequest.EMiniDisplayRequestFirmwareRevision);
106 public bool PowerSupplyStatus()
108 bool res = MiniDisplayPowerSupplyStatus(iDevice);
112 public TMiniDisplayRequest AttemptRequestCompletion()
114 return MiniDisplayAttemptRequestCompletion(iDevice);
117 public TMiniDisplayRequest CurrentRequest()
119 return MiniDisplayCurrentRequest(iDevice);
122 public bool IsRequestPending()
124 return CurrentRequest() != TMiniDisplayRequest.EMiniDisplayRequestNone;
128 public string Vendor()
130 IntPtr ptr = MiniDisplayVendor(iDevice);
131 string str = Marshal.PtrToStringUni(ptr);
135 public string Product()
137 IntPtr ptr = MiniDisplayProduct(iDevice);
138 string str = Marshal.PtrToStringUni(ptr);
142 public string SerialNumber()
144 IntPtr ptr = MiniDisplaySerialNumber(iDevice);
145 string str = Marshal.PtrToStringUni(ptr);
149 public string DeviceId()
151 IntPtr ptr = MiniDisplayDeviceId(iDevice);
152 string str = Marshal.PtrToStringAnsi(ptr);
156 public string FirmwareRevision()
158 IntPtr ptr = MiniDisplayFirmwareRevision(iDevice);
159 string str = Marshal.PtrToStringAnsi(ptr);
163 //Our display device handle
166 public enum TMiniDisplayType
168 EMiniDisplayAutoDetect, /*Not yet implemented*/
169 EMiniDisplayFutabaGP1212A01,
170 EMiniDisplayFutabaGP1212A02
174 public enum TMiniDisplayRequest
176 EMiniDisplayRequestNone,
177 EMiniDisplayRequestDeviceId,
178 EMiniDisplayRequestFirmwareRevision,
179 EMiniDisplayRequestPowerSupplyStatus
182 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
183 public static extern IntPtr MiniDisplayOpen(TMiniDisplayType aType);
185 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
186 public static extern void MiniDisplayClose(IntPtr aDevice);
188 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
189 public static extern void MiniDisplayClear(IntPtr aDevice);
191 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
192 public static extern void MiniDisplayFill(IntPtr aDevice);
194 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
195 public static extern void MiniDisplaySwapBuffers(IntPtr aDevice);
197 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
198 public static extern void MiniDisplaySetBrightness(IntPtr aDevice, int aBrightness);
200 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
201 public static extern int MiniDisplayMinBrightness(IntPtr aDevice);
203 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
204 public static extern int MiniDisplayMaxBrightness(IntPtr aDevice);
206 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
207 public static extern int MiniDisplayWidthInPixels(IntPtr aDevice);
209 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
210 public static extern int MiniDisplayHeightInPixels(IntPtr aDevice);
212 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
213 public static extern int MiniDisplaySetPixel(IntPtr aDevice, int aX, int aY, int aValue);
215 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
216 public static extern IntPtr MiniDisplayVendor(IntPtr aDevice);
218 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
219 public static extern IntPtr MiniDisplayProduct(IntPtr aDevice);
221 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
222 public static extern IntPtr MiniDisplaySerialNumber(IntPtr aDevice);
224 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
225 public static extern IntPtr MiniDisplayDeviceId(IntPtr aDevice);
227 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
228 public static extern IntPtr MiniDisplayFirmwareRevision(IntPtr aDevice);
230 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
231 [return: MarshalAs(UnmanagedType.I1)]
232 public static extern bool MiniDisplayPowerSupplyStatus(IntPtr aDevice);
234 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
235 public static extern void MiniDisplayRequest(IntPtr aDevice, TMiniDisplayRequest aRequest);
237 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
238 public static extern TMiniDisplayRequest MiniDisplayAttemptRequestCompletion(IntPtr aDevice);
240 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
241 public static extern TMiniDisplayRequest MiniDisplayCurrentRequest(IntPtr aDevice);
243 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
244 public static extern void MiniDisplayCancelRequest(IntPtr aDevice);