https://github.com/igrr/atproto
AT protocol library
https://github.com/igrr/atproto
Last synced: 3 months ago
JSON representation
AT protocol library
- Host: GitHub
- URL: https://github.com/igrr/atproto
- Owner: igrr
- License: other
- Created: 2014-10-01T14:08:38.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2014-11-24T21:31:04.000Z (over 11 years ago)
- Last Synced: 2025-11-29T23:57:39.401Z (6 months ago)
- Language: C++
- Size: 2.29 MB
- Stars: 64
- Watchers: 21
- Forks: 15
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://travis-ci.org/igrr/atproto)
AT protocol library and firmware
================================
This is an attempt to implement DCE and DTE sides of an AT protocol, mostly based on [Recommendation V.250].
The code has two parts: a platform-independent code for basic DCE/DTE functions, and target-specific commands that control WiFi, TCP/IP, etc. The main target for DCE is an ESP8266 chip, but it is easy to add other targets as well, or pull the platform-independent code into another project.
The AT commands supported by the ESP8266 target are described [here](./commands.md).
What works so far:
- DCE (i.e modem side) only. Haven't started working on DTE (host) side.
- Parsing and handling of basic and extended syntax commands and S-parameters
- Response formatting option (ATV)
- Echo (ATE)
- Result code suppression (ATQ)
- Baud rate setting (AT+IPR) saved to flash
- Reset (ATZ)
- Chip id (AT+GSN) and version (AT+GMR) queries
- Wifi commands (CWLAP, CWJAP, CWSAP, CWSTAT, CWLIF)
- Wifi connection status reports (+CWSTAT:)
- Commands to get IP and MAC address for AP and STA (CIPAP?, CIPSTA?, CIPAPMAC?, CIPSTAMAC?)
- Domain names resolution (CIPRESOLVE)
- TCP/UDP socket context create/release (CIPCREATE, CIPCLOSE)
- TCP/UDP client connect/disconnect (CIPCONNECT, CIPDISCONNECT)
- Send/receive data (CIPSENDI, CIPRD)
Next up:
- TCP/UDP server
- MQTT
- Pass-through mode for TCP/UDP connections
- More unit tests
- Handling of malformed input (besides returning ERROR)
- DTE part of the business
Many commands that return ERROR print error reason when debug output is enabled.
To enable debug output, issue AT+IDBG=1 command.
Prebuilt firmware for ESP8266
-----------------------------
If you don't want to go through the build process described below (though I advise you do), get the [prebuilt binaries] on my website.
Make
----
#### ESP8266
- Install/compile the toolchain. Check the ESP8266 community wiki for [instructions](https://github.com/esp8266/esp8266-wiki/wiki/Toolchain).
- Get the [ESP8266 SDK] version 0.9.3.
- Adjust `XTENSA_TOOCHAIN`, `XTENSA_LIBS`, `SDK_BASE`, `ESPTOOL` directories in target/esp8266/target.mk
- Apply the diff in target/esp8266/c_types.h.diff to include/c_types.h in the SDK so that it doesn't redefine types from stdint.h.
- Run ```make clean all TARGET=esp8266```
- The firmware will be generated in bin/0x00000.bin and bin/0x40000.bin
#### Host
There are some unit tests for target-independent code that run on PC. Doing ```make test``` will build the tests and run them. Don't forget to ```make clean``` before you ```make test``` if you have built for ESP8266 before that, or the linker will complain about unsupported object file format.
License
-------
BSD. See the LICENSE file.
I use [Catch] for unit tests (it's in include/catch.hpp), see header for it's own license.
[Recommendation V.250]:https://www.itu.int/rec/T-REC-V.250-200307-I/en
[Catch]:https://github.com/philsquared/Catch
[prebuilt binaries]:http://th.igrr.me
[LwIP]:http://savannah.nongnu.org/projects/lwip/
[ESP8266 SDK]:http://bbs.espressif.com/viewtopic.php?f=5&t=53