Adding basic support for networks.
2 using System.Collections.Generic;
5 using System.Threading.Tasks;
7 using System.Runtime.InteropServices;
8 //using System.Runtime.Serialization;
10 namespace SharpDisplayManager
15 /// Provide access to our display hardware through MiniDisplay API.
19 public delegate void OnOpenedHandler(Display aDisplay);
20 public event OnOpenedHandler OnOpened;
22 public delegate void OnClosedHandler(Display aDisplay);
23 public event OnClosedHandler OnClosed;
25 //Our display device handle
29 public static int TypeCount()
31 return MiniDisplayTypeCount();
34 public static string TypeName(TMiniDisplayType aType)
36 IntPtr ptr = MiniDisplayTypeName(aType);
37 string str = Marshal.PtrToStringUni(ptr);
44 iDevice = IntPtr.Zero;
48 public bool Open(TMiniDisplayType aType)
52 //Already open return an error
56 iDevice = MiniDisplayOpen(aType);
58 bool success = iDevice != IntPtr.Zero;
61 //Broadcast opened event
76 //Controversially clearing our screen before closing
77 //Consider moving this up into the UI layer
81 MiniDisplayClose(iDevice);
82 iDevice = IntPtr.Zero;
83 //Broadcast closed event
89 return iDevice != IntPtr.Zero;
94 MiniDisplayClear(iDevice);
99 MiniDisplayFill(iDevice);
102 public void SwapBuffers()
104 MiniDisplaySwapBuffers(iDevice);
107 public int MaxBrightness()
109 return MiniDisplayMaxBrightness(iDevice);
112 public int MinBrightness()
114 return MiniDisplayMinBrightness(iDevice);
117 public void SetBrightness(int aBrightness)
119 if (!IsOpen()) return;
121 MiniDisplaySetBrightness(iDevice, aBrightness);
124 public int WidthInPixels()
126 return MiniDisplayWidthInPixels(iDevice);
129 public int HeightInPixels()
131 return MiniDisplayHeightInPixels(iDevice);
134 public void SetPixel(int aX, int aY, uint aValue)
136 MiniDisplaySetPixel(iDevice,aX,aY,aValue);
139 public void RequestPowerSupplyStatus()
141 MiniDisplayRequest(iDevice, TMiniDisplayRequest.EMiniDisplayRequestPowerSupplyStatus);
144 public void RequestDeviceId()
146 MiniDisplayRequest(iDevice, TMiniDisplayRequest.EMiniDisplayRequestDeviceId);
149 public void RequestFirmwareRevision()
151 MiniDisplayRequest(iDevice, TMiniDisplayRequest.EMiniDisplayRequestFirmwareRevision);
154 public void PowerOn()
156 MiniDisplayPowerOn(iDevice);
159 public void PowerOff()
161 MiniDisplayPowerOff(iDevice);
164 public bool SupportPowerOnOff()
166 return MiniDisplaySupportPowerOnOff(iDevice);
169 public void ShowClock()
171 MiniDisplayShowClock(iDevice);
174 public void HideClock()
176 MiniDisplayHideClock(iDevice);
179 public bool SupportClock()
181 return MiniDisplaySupportClock(iDevice);
184 public bool PowerSupplyStatus()
186 bool res = MiniDisplayPowerSupplyStatus(iDevice);
190 public TMiniDisplayRequest AttemptRequestCompletion()
192 return MiniDisplayAttemptRequestCompletion(iDevice);
195 public TMiniDisplayRequest CurrentRequest()
197 return MiniDisplayCurrentRequest(iDevice);
200 public bool IsRequestPending()
202 return CurrentRequest() != TMiniDisplayRequest.EMiniDisplayRequestNone;
206 public int IconCount(TMiniDisplayIconType aIcon)
208 return MiniDisplayIconCount(iDevice,aIcon);
211 public int IconStatusCount(TMiniDisplayIconType aIcon)
213 return MiniDisplayIconStatusCount(iDevice, aIcon);
216 public void SetIconStatus(TMiniDisplayIconType aIcon, int aIndex, int aStatus)
218 MiniDisplaySetIconStatus(iDevice, aIcon, aIndex, aStatus);
221 public void SetAllIconsStatus(int aStatus)
223 foreach (TMiniDisplayIconType icon in Enum.GetValues(typeof(TMiniDisplayIconType)))
225 int count=IconCount(icon);
226 for (int i = 0; i < count; i++)
228 SetIconStatus(icon,i,aStatus);
235 /// Set all elements of an icon to the given status.
237 /// <param name="aIcon"></param>
238 /// <param name="aStatus"></param>
239 public void SetIconStatus(TMiniDisplayIconType aIcon, int aStatus)
241 int iconCount = IconCount(aIcon);
242 for (int i = 0; i < iconCount; i++)
244 SetIconStatus(aIcon, i, aStatus);
249 /// Set all elements of an icon to be either on or off.
251 /// <param name="aIcon"></param>
252 /// <param name="aOn"></param>
253 public void SetIconOnOff(TMiniDisplayIconType aIcon, bool aOn)
266 /// Set all elements of an icon to there maximum status.
268 /// <param name="aIcon"></param>
269 public void SetIconOn(TMiniDisplayIconType aIcon)
271 int iconCount = IconCount(aIcon);
272 for (int i = 0; i < iconCount; i++)
274 SetIconStatus(aIcon, i, IconStatusCount(aIcon) - 1);
279 /// Turn off all elements of an icon.
281 /// <param name="aIcon"></param>
282 public void SetIconOff(TMiniDisplayIconType aIcon)
284 int iconCount = IconCount(aIcon);
285 for (int i = 0; i < iconCount; i++)
287 SetIconStatus(aIcon, i, 0);
293 public string Vendor()
295 IntPtr ptr = MiniDisplayVendor(iDevice);
296 string str = Marshal.PtrToStringUni(ptr);
300 public string Product()
302 IntPtr ptr = MiniDisplayProduct(iDevice);
303 string str = Marshal.PtrToStringUni(ptr);
307 public string SerialNumber()
309 IntPtr ptr = MiniDisplaySerialNumber(iDevice);
310 string str = Marshal.PtrToStringUni(ptr);
314 public string DeviceId()
316 IntPtr ptr = MiniDisplayDeviceId(iDevice);
317 string str = Marshal.PtrToStringAnsi(ptr);
321 public string FirmwareRevision()
323 IntPtr ptr = MiniDisplayFirmwareRevision(iDevice);
324 string str = Marshal.PtrToStringAnsi(ptr);
329 public enum TMiniDisplayType
331 EMiniDisplayAutoDetect, /*Not yet implemented*/
332 //[EnumMember(Value = "EMiniDisplayFutabaGP1212A01")]
333 EMiniDisplayFutabaGP1212A01,
334 //[EnumMember(Value = "EMiniDisplayFutabaGP1212A01")]
335 EMiniDisplayFutabaGP1212A02
341 public enum TMiniDisplayRequest
343 EMiniDisplayRequestNone,
344 EMiniDisplayRequestDeviceId,
345 EMiniDisplayRequestFirmwareRevision,
346 EMiniDisplayRequestPowerSupplyStatus
351 /// Define the various type of icons we support.
352 /// For binary compatibility new entries must be added at the end.
354 public enum TMiniDisplayIconType
356 EMiniDisplayIconNetwork=0,
357 EMiniDisplayIconEmail,
358 EMiniDisplayIconMute,
359 EMiniDisplayIconVolume,
360 EMiniDisplayIconVolumeLabel,
361 EMiniDisplayIconPlay,
362 EMiniDisplayIconPause,
363 EMiniDisplayIconRecording
366 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
367 public static extern IntPtr MiniDisplayOpen(TMiniDisplayType aType);
369 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
370 public static extern void MiniDisplayClose(IntPtr aDevice);
372 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
373 public static extern int MiniDisplayTypeCount();
375 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
376 public static extern IntPtr MiniDisplayTypeName(TMiniDisplayType aType);
378 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
379 public static extern void MiniDisplayClear(IntPtr aDevice);
381 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
382 public static extern void MiniDisplayFill(IntPtr aDevice);
384 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
385 public static extern void MiniDisplaySwapBuffers(IntPtr aDevice);
387 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
388 public static extern void MiniDisplaySetBrightness(IntPtr aDevice, int aBrightness);
390 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
391 public static extern int MiniDisplayMinBrightness(IntPtr aDevice);
393 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
394 public static extern int MiniDisplayMaxBrightness(IntPtr aDevice);
396 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
397 public static extern int MiniDisplayWidthInPixels(IntPtr aDevice);
399 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
400 public static extern int MiniDisplayHeightInPixels(IntPtr aDevice);
402 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
403 public static extern int MiniDisplaySetPixel(IntPtr aDevice, int aX, int aY, uint aValue);
405 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
406 public static extern IntPtr MiniDisplayVendor(IntPtr aDevice);
408 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
409 public static extern IntPtr MiniDisplayProduct(IntPtr aDevice);
411 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
412 public static extern IntPtr MiniDisplaySerialNumber(IntPtr aDevice);
414 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
415 public static extern IntPtr MiniDisplayDeviceId(IntPtr aDevice);
417 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
418 public static extern IntPtr MiniDisplayFirmwareRevision(IntPtr aDevice);
420 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
421 [return: MarshalAs(UnmanagedType.I1)]
422 public static extern bool MiniDisplayPowerSupplyStatus(IntPtr aDevice);
424 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
425 public static extern void MiniDisplayRequest(IntPtr aDevice, TMiniDisplayRequest aRequest);
427 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
428 public static extern TMiniDisplayRequest MiniDisplayAttemptRequestCompletion(IntPtr aDevice);
430 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
431 public static extern TMiniDisplayRequest MiniDisplayCurrentRequest(IntPtr aDevice);
433 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
434 public static extern void MiniDisplayCancelRequest(IntPtr aDevice);
436 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
437 public static extern void MiniDisplayPowerOn(IntPtr aDevice);
439 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
440 public static extern void MiniDisplayPowerOff(IntPtr aDevice);
442 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
443 [return: MarshalAs(UnmanagedType.I1)]
444 public static extern bool MiniDisplaySupportPowerOnOff(IntPtr aDevice);
446 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
447 public static extern void MiniDisplayShowClock(IntPtr aDevice);
449 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
450 public static extern void MiniDisplayHideClock(IntPtr aDevice);
452 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
453 [return: MarshalAs(UnmanagedType.I1)]
454 public static extern bool MiniDisplaySupportClock(IntPtr aDevice);
456 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
457 public static extern int MiniDisplayIconCount(IntPtr aDevice, TMiniDisplayIconType aIcon);
459 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
460 public static extern int MiniDisplayIconStatusCount(IntPtr aDevice, TMiniDisplayIconType aIcon);
462 [DllImport("MiniDisplay.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
463 public static extern void MiniDisplaySetIconStatus(IntPtr aDevice, TMiniDisplayIconType aIcon, int aIndex, int aStatus);