12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- using System.Linq;
- namespace InABox.DigitalMatter
- {
- public class DMIBeaconBluetoothTag : DMBluetoothTag
- {
- public byte[] UUID { get; set; }
- public ushort MajorID { get; set; }
- public ushort MinorID { get; set; }
- public sbyte TxPower { get; set; }
- public byte[] MacAddress { get; set; }
- public override string ID()
- {
- return MacAddress != null
- ? string.Join(":", MacAddress.Reverse().Select(x => x.ToString("X2")))
- : string.Format("{0}.{1}", MajorID, MinorID);
- }
- protected override void DoDecode(IDMReadBuffer buffer)
- {
- UUID = buffer.TakeBytes(16);
- MajorID = buffer.TakeUInt16();
- MinorID = buffer.TakeUInt16();
- TxPower = buffer.TakeInt8();
- if (DataLength == 27)
- MacAddress = buffer.TakeBytes(6);
- }
- protected override void BeforeEncode(IDMWriteBuffer buffer)
- {
- base.BeforeEncode(buffer);
- DataLength = (byte)(MacAddress == null ? 21 : 27);
- }
- protected override void DoEncode(IDMWriteBuffer buffer)
- {
- buffer.AddBytes(UUID);
- buffer.AddUInt16(MajorID);
- buffer.AddUInt16(MinorID);
- buffer.AddInt8(TxPower);
- if (MacAddress != null)
- buffer.AddBytes(MacAddress);
- }
- public override string Type()
- {
- return "iBeacon";
- }
- }
- }
|