protected IEnumerable <string> ReadResponse(ATChat chat) { string responsePrefix = Command + ": "; var lines = new List <string>(); foreach (var line in chat.ReadLines()) { lines.Add(line); if (line.StartsWith(responsePrefix)) { yield return(line.Substring(responsePrefix.Length)); continue; } if (line == AT_OK) { yield break; } if (line.Contains(AT_ERROR)) { throw new ATCommandException(lines); } } throw new ATCommandException(lines); }
protected virtual async IAsyncEnumerable <string> ExecuteCore(ATChat chat) { await WriteCommand(chat); await foreach (var line in ReadResponse(chat)) { yield return(line); } }
protected void WriteCommand(ATChat chat) { chat.WriteLine("AT" + Command + "=" + string.Join(",", Arguments)); }
protected virtual IEnumerable <string> ExecuteCore(ATChat chat) { WriteCommand(chat); return(ReadResponse(chat)); }
public string[] Execute(Stream stream) { var chat = new ATChat(stream); return(ExecuteCore(chat).ToArray()); }
protected async Task WriteCommand(ATChat chat) { await chat.WriteLine("AT" + Command + "=" + string.Join(",", Arguments)); }
public IAsyncEnumerable <string> Execute(Stream stream) { var chat = new ATChat(stream); return(ExecuteCore(chat)); }