/// <summary> /// Update the raw payload when properties have changed. /// </summary> private void UpdatePayload() { if (NamespaceId == null || NamespaceId.Length != 10 || InstanceId == null || InstanceId.Length != 6) { _payload = null; return; } var header = BeaconFrameHelper.CreateEddystoneHeader(BeaconFrameHelper.EddystoneFrameType.UidFrameType); using (var ms = new MemoryStream()) { // Frame header ms.Write(header, 0, header.Length); // Ranging data ms.WriteByte((byte)RangingData); // Namespace ID ms.Write(NamespaceId, 0, NamespaceId.Length); // Instance ID ms.Write(InstanceId, 0, InstanceId.Length); // RFU (2 bytes, must be 0x00) ms.WriteByte(0x00); ms.WriteByte(0x00); // Save to payload (to direct array to prevent re-parsing and a potential endless loop of updating and parsing) _payload = ms.ToArray(); } }
/// <summary> /// Update the raw payload when properties have changed. /// </summary> private void UpdatePayload() { if (string.IsNullOrEmpty(CompleteUrl)) { _payload = null; return; } var urlSchemeByte = EncodeUrlScheme(CompleteUrl); // Check if the URL starts with a valid header (only the defined ones are allowed) if (urlSchemeByte == null) { _payload = null; return; } var header = BeaconFrameHelper.CreateEddystoneHeader(BeaconFrameHelper.EddystoneFrameType.UrlFrameType); using (var ms = new MemoryStream()) { // Frame header ms.Write(header, 0, header.Length); // Ranging data ms.WriteByte((byte)RangingData); // URL scheme byte ms.WriteByte((byte)urlSchemeByte); // Encoded URL EncodeUrlToStream(CompleteUrl, UrlSchemeDictionary[(byte)urlSchemeByte].Length, ms); // Save to payload (to direct array to prevent re-parsing and a potential endless loop of updating and parsing) _payload = ms.ToArray(); } }
/// <summary> /// Update the raw payload when properties have changed. /// </summary> private void UpdatePayload() { var header = BeaconFrameHelper.CreateEddystoneHeader(BeaconFrameHelper.EddystoneFrameType.TelemetryFrameType); using (var ms = new MemoryStream()) { // Frame header ms.Write(header, 0, header.Length); // Version ms.WriteByte(Version); // Battery var batBytes = BitConverter.GetBytes(BatteryInMilliV); if (BitConverter.IsLittleEndian) { Array.Reverse(batBytes); } ms.Write(batBytes, 0, batBytes.Length); // Temperature // #define float2fix(a) ((int)((a)*256.0)) //Convert float to fix. a is a float var temp = ((int)((TemperatureInC) * 256.0)); var tempBytes = BitConverter.GetBytes(temp); if (BitConverter.IsLittleEndian) { Array.Reverse(tempBytes); } ms.Write(tempBytes, 2, 2); // ADV_CNT var advCntBytes = BitConverter.GetBytes(AdvertisementFrameCount); if (BitConverter.IsLittleEndian) { Array.Reverse(advCntBytes); } ms.Write(advCntBytes, 0, 4); // SEC_CNT var secCntBytes = BitConverter.GetBytes(TimeSincePowerUp); if (BitConverter.IsLittleEndian) { Array.Reverse(secCntBytes); } ms.Write(secCntBytes, 0, 4); // Save to payload (to direct array to prevent re-parsing and a potential endless loop of updating and parsing) _payload = ms.ToArray(); } }