Beispiel #1
0
        public void Send(ChuniIoMessage message)
        {
            int sz = Marshal.SizeOf(message);

            Marshal.StructureToPtr(message, _sendBufferUnmanaged, false);
            Marshal.Copy(_sendBufferUnmanaged, _sendBuffer, 0, sz);
            _client.BeginSend(_sendBuffer, sz, SendCallback, null);
        }
Beispiel #2
0
        private void DoService(object sender, RoutedEventArgs e)
        {
            ChuniIoMessage msg = new ChuniIoMessage();

            msg.Source = (byte)ChuniMessageSources.Controller;
            msg.Type   = (byte)ChuniMessageTypes.CabinetService;
            cio.Send(msg);
        }
Beispiel #3
0
        private void DoCoin(object sender, RoutedEventArgs e)
        {
            ChuniIoMessage msg = new ChuniIoMessage();

            msg.Source = (byte)ChuniMessageSources.Controller;
            msg.Type   = (byte)ChuniMessageTypes.CoinInsert;
            cio.Send(msg);
        }
Beispiel #4
0
 private void handleRecv(ChuniIoMessage message)
 {
     if (message.Source != (byte)ChuniMessageSources.Game || message.Type != (byte)ChuniMessageTypes.LedSet || message.Target >= 16)
     {
         return;
     }
     touchpads[message.Target].LedStrip.Dispatcher.BeginInvoke(
         (Action)(() => touchpads[15 - message.Target].LedStrip.Fill =
                      new SolidColorBrush(Color.FromRgb(message.LedColorRed, message.LedColorGreen,
                                                        message.LedColorBlue))));
 }
Beispiel #5
0
        private static void RecvThread(object c)
        {
            ChuniIoMessage message  = new ChuniIoMessage();
            int            sz       = Marshal.SizeOf(message);
            IPEndPoint     endpoint = new IPEndPoint(IPAddress.Any, 0);
            IntPtr         recvBufferPtr;

            recvBufferPtr = Marshal.AllocHGlobal(32);

            RecvContext context = (RecvContext)c;

            try
            {
                while (true)
                {
                    byte[] recvBuffer = context.client.Receive(ref endpoint);
                    if (recvBuffer.Length == 0)
                    {
                        break;
                    }
                    if (recvBuffer.Length != sz)
                    {
                        continue;
                    }
                    Marshal.Copy(recvBuffer, 0, recvBufferPtr, sz);
                    message = (ChuniIoMessage)Marshal.PtrToStructure(recvBufferPtr, message.GetType());
                    context.callback(message);
                }
            }
            catch
            {
                // noting, just exit.
            }


            Marshal.FreeHGlobal(recvBufferPtr);
        }
 public TouchPad()
 {
     InitializeComponent();
     message        = new ChuniIoMessage();
     message.Source = (byte)ChuniMessageSources.Controller;
 }