public BeaconInfo(BeaconId beaconId, int txPower, int RSSI, NSData telemetry) { this.BeaconId = beaconId; this.TxPower = txPower; this.RSSI = RSSI; this.Telemetry = telemetry; }
public static BeaconInfo BeaconInfoForEIDFrameData(NSData frameData, NSData telemetry, int RSSI) { var count = frameData.Length; if (count > 1) { var frameBytes = Enumerable.Repeat((byte)0, (int)count).ToArray(); Marshal.Copy(frameData.Bytes, frameBytes, 0, (int)count); if (frameBytes[0] != BeaconInfo.EddystoneEIDFrameTypeID) { Debug.WriteLine("Unexpected non EID Frame passed to BeaconInfoForEIDFrameData."); return(null); } else if (frameBytes.Length < 10) { Debug.WriteLine("Frame Data for EID Frame unexpectedly truncated in BeaconInfoForEIDFrameData."); } var txPower = Convert.ToInt32(frameBytes[1]); var beaconId = frameBytes.Skip(2).Take(10).ToArray(); var bid = new BeaconId(BeaconType.EddystoneEID, beaconId); return(new BeaconInfo(bid, txPower, RSSI, telemetry)); } return(null); }
/// <summary> /// Connects to the WebSocket server /// </summary> /// <returns>If connection was successful</returns> public bool Connect() { // TODO: A more elaborate connect and configuration procedure UrlPath = _uri.AbsolutePath; var connectReq = new HttpRequestMessage(HttpMethod.Options, UrlPath); var connectResp = _client.SendAsync(connectReq).Result; // Example of configuring the client var idHeader = connectResp.Headers.GetValues("X-Id-Header").FirstOrDefault(); var beaconId = connectResp.Headers.GetValues("X-Identifier").FirstOrDefault(); if (beaconId != null) { BeaconId = Guid.Parse(beaconId); _client.DefaultRequestHeaders.Add(idHeader, BeaconId.ToString()); Connected = true; } else { Connected = false; } return(Connected); }
public virtual string GetProperty(string strPropertyName, string strFormat, System.Globalization.CultureInfo formatProvider, DotNetNuke.Entities.Users.UserInfo accessingUser, DotNetNuke.Services.Tokens.Scope accessLevel, ref bool propertyNotFound) { switch (strPropertyName.ToLower()) { case "flightid": // Int return(FlightId.ToString(strFormat, formatProvider)); case "beaconid": // Int return(BeaconId.ToString(strFormat, formatProvider)); case "passeddistance": // Int if (PassedDistance == null) { return(""); } ; return(((int)PassedDistance).ToString(strFormat, formatProvider)); case "passorder": // Int return(PassOrder.ToString(strFormat, formatProvider)); default: propertyNotFound = true; break; } return(Null.NullString); }
public override int GetHashCode() { unchecked { var hashCode = BeaconId?.GetHashCode() ?? 0; hashCode = (hashCode * 397) ^ (EventTime?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ Trigger; hashCode = (hashCode * 397) ^ (Location?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ Delivered.GetHashCode(); return(hashCode); } }
public virtual string GetProperty(string strPropertyName, string strFormat, System.Globalization.CultureInfo formatProvider, DotNetNuke.Entities.Users.UserInfo accessingUser, DotNetNuke.Services.Tokens.Scope accessLevel, ref bool propertyNotFound) { switch (strPropertyName.ToLower()) { case "beaconid": // Int return(BeaconId.ToString(strFormat, formatProvider)); case "portalid": // Int return(PortalId.ToString(strFormat, formatProvider)); case "code": // NVarChar return(PropertyAccess.FormatString(Code, strFormat)); case "name": // NVarChar return(PropertyAccess.FormatString(Name, strFormat)); case "description": // NVarChar if (Description == null) { return(""); } ; return(PropertyAccess.FormatString(Description, strFormat)); case "coords": // VarChar return(PropertyAccess.FormatString(Coords, strFormat)); case "latitude": // Float return(Latitude.ToString(strFormat, formatProvider)); case "longitude": // Float return(Longitude.ToString(strFormat, formatProvider)); case "altitude": // Int return(Altitude.ToString(strFormat, formatProvider)); case "region": // Int return(Region.ToString(strFormat, formatProvider)); case "points": // Int return(Points.ToString(strFormat, formatProvider)); default: propertyNotFound = true; break; } return(Null.NullString); }
public void Options() { var socket = new SocketChannel(_settings.IpAddress, _settings.Port); socket.Connect(); var beaconId = new BeaconId { InternalId = Guid.NewGuid() }; _manager.AddChannel(beaconId, socket); // TODO: Implement more robust request/response configuration HttpContext.Response.Headers.Add("X-Id-Header", IdHeader); HttpContext.Response.Headers.Add("X-Identifier", beaconId.InternalId.ToString()); }
public override string ToString() { return($"[sn={BeaconId.ToInvariantString()}, seq={BeaconSeqNo.ToInvariantString()}]"); }
/// <summary> /// Removes the channel. /// </summary> /// <param name="id">The identifier.</param> public void RemoveChannel(BeaconId id) { _channels.TryRemove(id, out var socket); socket.Dispose(); }
/// <summary> /// Adds the channel. /// </summary> /// <param name="id">Identifier</param> /// <param name="channel">The channel</param> /// <returns></returns> public BeaconId AddChannel(BeaconId id, T channel) { _channels.TryAdd(id, channel); return(GetId(channel)); }
/// <summary> /// Gets the channel by Beacon identifier /// </summary> /// <param name="id">The Beacon identifier.</param> /// <returns></returns> public T GetChannelById(BeaconId id) { return(_channels.FirstOrDefault(p => p.Key.ToString() == id.ToString()).Value); }
/// <summary> /// Gets the stager. /// </summary> /// <param name="beaconId">The beacon identifier.</param> /// <param name="is64Bit">if set to <c>true</c> [is64 bit].</param> /// <returns></returns> public byte[] GetStager(BeaconId beaconId, bool is64Bit) { return(_socketManager.GetChannelById(beaconId).GetStager(beaconId.ToString(), is64Bit)); }
/// <summary> /// Sends the frame. /// </summary> /// <param name="beaconId">The beacon identifier.</param> /// <param name="buffer">The buffer.</param> public void SendFrame(BeaconId beaconId, byte[] buffer) { _socketManager.GetChannelById(beaconId).SendFrame(buffer); }
/// <summary> /// Reads the frame. /// </summary> /// <param name="beaconId">The beacon identifier.</param> /// <returns></returns> public byte[] ReadFrame(BeaconId beaconId) { return(_socketManager.GetChannelById(beaconId).ReadFrame()); }
/// <summary> /// Requests a stager using the BeaconId of the channel /// </summary> /// <param name="is64Bit"></param> /// <param name="taskWaitTime"></param> /// <returns>The stager bytes</returns> public byte[] GetStager(bool is64Bit, int taskWaitTime = 100) { return(GetStager(BeaconId.ToString(), is64Bit, taskWaitTime)); }
/// <summary> /// Sends the message. /// </summary> /// <param name="socketId">The socket identifier.</param> /// <param name="message">The message.</param> /// <returns></returns> public async Task SendMessageAsync(BeaconId socketId, string message) { await SendMessageAsync(WebSocketManager.GetChannelById(socketId), message); }