예제 #1
0
        public async Task <AcarsMessage[]> GetPendingMessages(string callsign)
        {
            List <AcarsMessage> messages = new List <AcarsMessage>();

            try
            {
                string response = await sendMessageToHoppie(
                    logonSecret,
                    callsign,
                    "SERVER",
                    MessageType.Poll,
                    ""
                    ).ConfigureAwait(false);

                MatchCollection matches = messageRegex.Matches(response);
                foreach (Match match in matches)
                {
                    MessageType messageType = messageTypeStrings.FirstOrDefault(x => x.Value == match.Groups[2].Value).Key;
                    string      data        = match.Groups[3].Value;
                    if (messageType == MessageType.CPDLC && match.Groups.Count > 3)
                    {
                        data += match.Groups[4].Value;
                    }
                    if (messageType == MessageType.Telex && match.Groups.Count > 3)
                    {
                        data = match.Groups[4].Value;
                    }

                    if (messageType == MessageType.CPDLC)
                    {
                        CpdlcAcarsMessage acarsMessage = new CpdlcAcarsMessage(DateTime.Now, match.Groups[1].Value, callsign, data);
                        messages.Add(acarsMessage);
                    }
                    else
                    {
                        AcarsMessage acarsMessage = new AcarsMessage(DateTime.Now, match.Groups[1].Value, callsign, messageType, data);
                        messages.Add(acarsMessage);
                    }
                }
                MessageHistory.AddRange(messages);
                return(messages.ToArray());
            }
            catch (Exception e)
            {
                throw e;
            }
        }
예제 #2
0
 public async Task <string> SendCPDLC(
     CpdlcAcarsMessage message)
 {
     return(await SendCPDLC(message.From, message.To, message.RawDataMessage).ConfigureAwait(false));
 }