Exemplo n.º 1
0
        /// <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();
            }
        }
Exemplo n.º 3
0
        /// <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();
            }
        }