我们先来谈一谈设计AT Lib的一些考虑。
- Sync和Async
毕竟和串口通讯这样的硬件打交道,我们需要支持异步调用吗?
我觉得一般在软件的高层会去实现异步调用(一般通过开启一个单独线程),所以AT Lib在设计的时候只支持同步调用。
- Response Timeout
发送AT Command后,等待Modem的Response肯定需要超时管理。例如Modem死掉了,这样AT Lib在同步调用的时候不至于一直卡死在哪里。
- AT Command
我们会设计一个AT Command类。为什么不直接用字符串而用一个专门的类呢?
- 有些Response有Result Code,有些没有
- 我们需要期望什么样的Response呢,需要把这样的期望加入到AT Command类中
- AT Response
我们会设计一个AT Response类。
- 包含当时发送的AT Command字符串是什么
- 发送的AT Command字符串有没有Echo(如果Modem开启Echo,Modem会把AT Command放到Response中)
- Result Code是什么