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