Bloxy.Utilities.GetLEULong C# (CSharp) Метод

GetLEULong() публичный статический Метод

public static GetLEULong ( byte buffer, int offset, int length ) : ulong
buffer byte
offset int
length int
Результат ulong
        public static ulong GetLEULong(byte[] buffer, int offset, int length)
        {
            ulong ret = (ulong)(buffer[offset + 0] & 0xFF);
              int shifter = 8;

              for (int i = 1; i < length; i++)
              {
            ret |= (ulong)((ulong)(((ulong)(buffer[offset + i])) << shifter));
            shifter += 8;
              }

              return ret;
        }

Usage Example

Пример #1
0
        private void hci_DataReceived(object sender, EndpointDataEventArgs e)
        {
            switch ((HCIEvent)e.Buffer[0])
            {
            case HCIEvent.InquiryComplete:
            {
                lock (_completedCommands)
                {
                    _completedCommands.Add(new Opcode(OpcodeGroupField.LinkControl, OpcodeCommandField.Inquiry));
                }

                break;
            }

            case HCIEvent.InquiryResult:
            {
                var opcode = new Opcode(OpcodeGroupField.LinkControl, OpcodeCommandField.Inquiry);
                if (!_commandData.ContainsKey(opcode))
                {
                    _commandData.Add(opcode, new List <InquiryResult>());
                }
                var list = _commandData[opcode] as List <InquiryResult>;

                int responses = Convert.ToInt32(e.Buffer[2]);
                int offset    = 3;
                for (int i = 0; i < responses; i++)
                {
                    list.Add(new InquiryResult(Utilities.GetLEULong(e.Buffer, offset + 0, 6), e.Buffer[offset + 6],
                                               e.Buffer[offset + 7], e.Buffer[offset + 8], (uint)Utilities.GetLEULong(e.Buffer, offset + 9, 3),
                                               (ushort)Utilities.GetLEULong(e.Buffer, offset + 12, 2)));
                    offset += 14;
                }

                break;
            }

            case HCIEvent.ConnectionComplete:
            {
                Logger.WriteLine("Connection Complete, Status: " + e.Buffer[2].ToString("X2"));
                ushort connectionHandle = (ushort)(e.Buffer[3] | (e.Buffer[4] << 8));
                ulong  bdAddr           = Utilities.GetLEULong(e.Buffer, 5, 6);

                //Raise event out
                if (ConnectionComplete != null)
                {
                    ConnectionComplete(this, new HCIEventEventArgs(e.Buffer, e.Count));
                }

                break;
            }

            case HCIEvent.DisconnectionComplete:
            {
                Logger.WriteLine("Disconnection Complete, Status: " + e.Buffer[2].ToString("X2"));

                break;
            }

            case HCIEvent.ConnectionRequest:
            {
                var  bdAddr      = Utilities.GetLEULong(e.Buffer, 2, 6);
                var  deviceClass = Utilities.GetLEULong(e.Buffer, 8, 3);
                byte linkType    = e.Buffer[11];
                Logger.WriteLine(String.Format("Connection Request Received, BD_ADDR {0}, class {1}, link type {2}",
                                               bdAddr.ToString("X12"), deviceClass.ToString("X6"), linkType.ToString("X2")));

                //Accept this request (or do whatever with it)
                if (ConnectionRequestReceived != null)
                {
                    ConnectionRequestReceived(this, new HCIEventEventArgs(e.Buffer, e.Count));
                }

                break;
            }

            case HCIEvent.RemoteNameRequestComplete:
            {
                var opcode = new Opcode(OpcodeGroupField.LinkControl, OpcodeCommandField.RemoteNameRequest);
                if (!_commandData.ContainsKey(opcode))
                {
                    _commandData.Add(opcode, ASCIIEncoding.ASCII.GetString(e.Buffer, 9, 248).Trim(new char[] { '\0' }));
                }

                lock (_completedCommands)
                {
                    _completedCommands.Add(opcode);
                }

                break;
            }

            case HCIEvent.QoSSetupComplete:
            {
                Logger.WriteLine("QoS Setup Complete");

                break;
            }

            case HCIEvent.Complete:
            {
                var command = new Opcode(e.Buffer, 3);

                lock (_completedCommands)
                {
                    _completedCommands.Add(command);
                }

                break;
            }

            case HCIEvent.Status:
            {
                var command = new Opcode(e.Buffer, 4);

                break;
            }

            case HCIEvent.PINCodeRequestEvent:
            {
                var bdAddr = Utilities.GetLEULong(e.Buffer, 2, 6);

                //Send the reply
                SendPINCodeReply(bdAddr, String.Empty);

                break;
            }

            default:
            {
                //Uh?
                Logger.WriteLine("Unknown HCI event: " + e.Buffer[0].ToString("X2"));

                break;
            }
            }
        }
All Usage Examples Of Bloxy.Utilities::GetLEULong
Utilities