/// <summary> /// Receive a Balloon Message, need to transmit the data in a new TrackerMessage /// </summary> /// <param name="message"></param> /// <returns></returns> public async Task <bool> Receive(BalloonMessage balloonMessage, IModuleClient moduleClient) { Logger.LogInfo($"Received Balloon Message."); UpdatePacketReceiveHistory(true); packetReceiptTimer.Change(packetReceiptInterval, packetReceiptInterval); this.FlightId = balloonMessage.FlightId; var trackerMessage = new TrackerMessage() { Location = this.Location, DeviceName = this.DeviceName, FlightId = balloonMessage.FlightId, PacketReceivedPercentage = CalculatePacketReceivedPercentage() }; try { Message balloonMessageRaw = new Message(balloonMessage.ToRawBytes()); await moduleClient.SendEventAsync(TrackerOutputName, balloonMessageRaw); Message trackerMessageRaw = new Message(trackerMessage.ToRawBytes()); await moduleClient.SendEventAsync(TrackerOutputName, trackerMessageRaw); Logger.LogInfo($"transmitted message: {JsonConvert.SerializeObject(trackerMessage)}."); } catch (Exception ex) { // Todo - wire in with application insights Logger.LogWarning($"Error Transmitter tracker message: {ex.Message}"); return(false); } return(true); }
private async Task <bool> SendBalloonMessage(BalloonMessage balloonMessage) { Message message = new Message(balloonMessage.ToRawBytes()); try { await moduleClient.SendEventAsync(SerialOutputName, message); Logger.LogInfo($"transmitted message: {JsonConvert.SerializeObject(balloonMessage)}."); } catch (Exception ex) { Logger.LogError($"Failed to transmit iot balloon message."); Logger.LogException(ex); return(false); } return(true); }