softemp
Dependencies: mbed DHT22 ATParser SerialGPS
Diff: Sigfox.cpp
- Revision:
- 3:06b0680034a7
diff -r f760e8507750 -r 06b0680034a7 Sigfox.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Sigfox.cpp Wed Nov 21 17:33:07 2018 +0000 @@ -0,0 +1,105 @@ + +#include "Sigfox.h" + +bool Sigfox::ready() { + _at->send("AT"); + return _at->recv("OK"); +} + +bool Sigfox::send(const char *data, char* response) { + // If require a response add plus in message + if(response != NULL) { + // Add request response data + _at->send("AT$SF=%s,1", data); + // Wait response from sigfox after send + if(_at->recv("OK")) { + // Wait return + return _at->recv("RX=%[^\r]", response); + } + return false; + } else { + _at->send("AT$SF=%s", data); + return _at->recv("OK"); + } +} + +/* +bool Sigfox::send(const char *data) { + // If require a response add plus in message + // Add request response data + _at->send("AT$SF=%s,1", data); + // Wait response from sigfox after send + + + + +}*/ + +bool Sigfox::setKey(bool type) { + _at->send("ATS410=%d", type); + return _at->recv("OK"); +} + +bool Sigfox::setPower(uint8_t power) { + _at->send("ATS302=%d", power); + return _at->recv("OK"); +} + +bool Sigfox::setPowerMode(uint8_t power) { + _at->send("AT$P=%d", power); + return _at->recv("OK"); +} + +bool Sigfox::saveConfig() { + _at->send("AT$WR"); + return _at->recv("OK"); +} + +void Sigfox::wakeup(DigitalInOut sig_rst, float time) { + // Wake up sigfox + sig_rst.output(); + sig_rst = 0; + wait(time); + // Set high impendance the sigfox reset pin + sig_rst.input(); + wait(time); +} + +char *Sigfox::getID() { + char buff[8+2]; + _at->send("AT$I=10"); + _at->read(buff, 8+2); + memcpy(&ID[0],&buff[0],8); + return &ID[0]; +} + +char *Sigfox::getPAC() { + char buff[16+2]; + _at->send("AT$I=11"); + _at->read(buff, 16+2); + memcpy(&PAC[0],&buff[0],16); + return &PAC[0]; +} + +float Sigfox::getTemperature() { + char buff[6]; + _at->send("AT$T?"); + _at->read(buff, 6); + buff[5] = 0; + return ((double)atoi(buff))/10; +} + +sigfoxvoltage_t Sigfox::getVoltages() { + sigfoxvoltage_t volt; + char buff[12]; + _at->send("AT$V?"); + _at->read(buff, 12); + char buff2[5]; + memset(buff2,0,5); + memcpy(buff2, &buff[0], 4); + volt.current = ((double)atoi(buff2))/1000; + memset(buff2,0,5); + memcpy(buff2, &buff[6], 4); + volt.last = ((double)atoi(buff2))/1000; + return volt; +} \ No newline at end of file