Sigfox library with integration of ATParser
Sigfox.cpp
- Committer:
- Raffaello
- Date:
- 2017-05-29
- Revision:
- 6:799a482a7024
- Parent:
- 5:66e05787ad5c
- Child:
- 8:b10abac6a42e
File content as of revision 6:799a482a7024:
#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")) { char message[20]; // Wait return // TODO add loop to load data if(_at->recv("+RX%s", &message)) { // Check if message received is equal to " OK" if(strcmp(message, " OK") == 0) { return true; } } } return false; } else { _at->send("AT$SF=%s", data); return _at->recv("OK"); } } 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[2],8-2); return &ID[0]; } char *Sigfox::getPAC() { char buff[16+2]; _at->send("AT$I=11"); _at->read(buff, 16+2); memcpy(&PAC[0],&buff[2],16-2); return &PAC[0]; } 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; }