MiCO MXCHIP
/
MXCHIP_WIFI_Demo
It's MXCHIP WIFI demo.
Diff: MXCHIP_WIFI_Driver/MXCHIP/MXCHIP.cpp
- Revision:
- 0:cd7c54f07d25
diff -r 000000000000 -r cd7c54f07d25 MXCHIP_WIFI_Driver/MXCHIP/MXCHIP.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MXCHIP_WIFI_Driver/MXCHIP/MXCHIP.cpp Tue Mar 21 03:56:12 2017 +0000 @@ -0,0 +1,110 @@ + +#include "MXCHIP.h" + + +MXCHIP::MXCHIP(PinName tx, PinName rx, bool debug): _serial(tx, rx, 1024), _parser(_serial), _packets(0), _packets_end(&_packets) +{ + _serial.baud(115200); + _parser.debugOn(debug); +} + +bool MXCHIP::startup(int mode) +{ + //only 3 valid modes + if(mode < 1 || mode > 3) + { + return false; + } + + bool success = reset() + && _parser.send("AT+CWMODE=%d", mode) + && _parser.recv("OK") + && _parser.send("AT+CIPMUX=1") + && _parser.recv("OK"); + + _parser.oob("+IPD", this, &MXCHIP::_packet_handler); + + return success; +} + +bool MXCHIP::reset(void) +{ + for (int i = 0; i < 2; i++) + { + if (_parser.send("AT+RST") + && _parser.recv("OK\r\nready")) + { + return true; + } + } + + return false; +} + +bool MXCHIP::dhcp(bool enabled, int mode) +{ + //only 3 valid modes + if(mode < 0 || mode > 2) + { + return false; + } + + return _parser.send("AT+CWDHCP=%d,%d", enabled?1:0, mode) + && _parser.recv("OK"); +} + +bool MXCHIP::connect(const char *ap, const char *passPhrase) +{ + return _parser.send("AT+CWJAP=\"%s\",\"%s\"", ap, passPhrase) + && _parser.recv("OK"); +} + +bool MXCHIP::disconnect(void) +{ + return _parser.send("AT+CWQAP") && _parser.recv("OK"); +} + +const char *MXCHIP::getIPAddress(void) +{ + if (!(_parser.send("AT+CIFSR") + && _parser.recv("+CIFSR:STAIP,\"%15[^\"]\"", _ip_buffer) + && _parser.recv("OK"))) { + return 0; + } + + return _ip_buffer; +} + +const char *MXCHIP::getMACAddress(void) +{ + if (!(_parser.send("AT+CIFSR") + && _parser.recv("+CIFSR:STAMAC,\"%17[^\"]\"", _mac_buffer) + && _parser.recv("OK"))) { + return 0; + } + + return _mac_buffer; +} + +const char *MXCHIP::getGateway() +{ + if (!(_parser.send("AT+CIPSTA?") + && _parser.recv("+CIPSTA:gateway:\"%15[^\"]\"", _gateway_buffer) + && _parser.recv("OK"))) { + return 0; + } + + return _gateway_buffer; +} + +const char *MXCHIP::getNetmask() +{ + if (!(_parser.send("AT+CIPSTA?") + && _parser.recv("+CIPSTA:netmask:\"%15[^\"]\"", _netmask_buffer) + && _parser.recv("OK"))) + { + return 0; + } + + return _netmask_buffer; +}