softemp

Dependencies:   mbed DHT22 ATParser SerialGPS

Committer:
svupper
Date:
Wed Nov 21 17:33:07 2018 +0000
Revision:
3:06b0680034a7
sofmbedtemp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
svupper 3:06b0680034a7 1
svupper 3:06b0680034a7 2 #include "Sigfox.h"
svupper 3:06b0680034a7 3
svupper 3:06b0680034a7 4 bool Sigfox::ready() {
svupper 3:06b0680034a7 5 _at->send("AT");
svupper 3:06b0680034a7 6 return _at->recv("OK");
svupper 3:06b0680034a7 7 }
svupper 3:06b0680034a7 8
svupper 3:06b0680034a7 9 bool Sigfox::send(const char *data, char* response) {
svupper 3:06b0680034a7 10 // If require a response add plus in message
svupper 3:06b0680034a7 11 if(response != NULL) {
svupper 3:06b0680034a7 12 // Add request response data
svupper 3:06b0680034a7 13 _at->send("AT$SF=%s,1", data);
svupper 3:06b0680034a7 14 // Wait response from sigfox after send
svupper 3:06b0680034a7 15 if(_at->recv("OK")) {
svupper 3:06b0680034a7 16 // Wait return
svupper 3:06b0680034a7 17 return _at->recv("RX=%[^\r]", response);
svupper 3:06b0680034a7 18 }
svupper 3:06b0680034a7 19 return false;
svupper 3:06b0680034a7 20 } else {
svupper 3:06b0680034a7 21 _at->send("AT$SF=%s", data);
svupper 3:06b0680034a7 22 return _at->recv("OK");
svupper 3:06b0680034a7 23 }
svupper 3:06b0680034a7 24 }
svupper 3:06b0680034a7 25
svupper 3:06b0680034a7 26 /*
svupper 3:06b0680034a7 27 bool Sigfox::send(const char *data) {
svupper 3:06b0680034a7 28 // If require a response add plus in message
svupper 3:06b0680034a7 29 // Add request response data
svupper 3:06b0680034a7 30 _at->send("AT$SF=%s,1", data);
svupper 3:06b0680034a7 31 // Wait response from sigfox after send
svupper 3:06b0680034a7 32
svupper 3:06b0680034a7 33
svupper 3:06b0680034a7 34
svupper 3:06b0680034a7 35
svupper 3:06b0680034a7 36 }*/
svupper 3:06b0680034a7 37
svupper 3:06b0680034a7 38 bool Sigfox::setKey(bool type) {
svupper 3:06b0680034a7 39 _at->send("ATS410=%d", type);
svupper 3:06b0680034a7 40 return _at->recv("OK");
svupper 3:06b0680034a7 41 }
svupper 3:06b0680034a7 42
svupper 3:06b0680034a7 43 bool Sigfox::setPower(uint8_t power) {
svupper 3:06b0680034a7 44 _at->send("ATS302=%d", power);
svupper 3:06b0680034a7 45 return _at->recv("OK");
svupper 3:06b0680034a7 46 }
svupper 3:06b0680034a7 47
svupper 3:06b0680034a7 48 bool Sigfox::setPowerMode(uint8_t power) {
svupper 3:06b0680034a7 49 _at->send("AT$P=%d", power);
svupper 3:06b0680034a7 50 return _at->recv("OK");
svupper 3:06b0680034a7 51 }
svupper 3:06b0680034a7 52
svupper 3:06b0680034a7 53 bool Sigfox::saveConfig() {
svupper 3:06b0680034a7 54 _at->send("AT$WR");
svupper 3:06b0680034a7 55 return _at->recv("OK");
svupper 3:06b0680034a7 56 }
svupper 3:06b0680034a7 57
svupper 3:06b0680034a7 58 void Sigfox::wakeup(DigitalInOut sig_rst, float time) {
svupper 3:06b0680034a7 59 // Wake up sigfox
svupper 3:06b0680034a7 60 sig_rst.output();
svupper 3:06b0680034a7 61 sig_rst = 0;
svupper 3:06b0680034a7 62 wait(time);
svupper 3:06b0680034a7 63 // Set high impendance the sigfox reset pin
svupper 3:06b0680034a7 64 sig_rst.input();
svupper 3:06b0680034a7 65 wait(time);
svupper 3:06b0680034a7 66 }
svupper 3:06b0680034a7 67
svupper 3:06b0680034a7 68 char *Sigfox::getID() {
svupper 3:06b0680034a7 69 char buff[8+2];
svupper 3:06b0680034a7 70 _at->send("AT$I=10");
svupper 3:06b0680034a7 71 _at->read(buff, 8+2);
svupper 3:06b0680034a7 72 memcpy(&ID[0],&buff[0],8);
svupper 3:06b0680034a7 73 return &ID[0];
svupper 3:06b0680034a7 74 }
svupper 3:06b0680034a7 75
svupper 3:06b0680034a7 76 char *Sigfox::getPAC() {
svupper 3:06b0680034a7 77 char buff[16+2];
svupper 3:06b0680034a7 78 _at->send("AT$I=11");
svupper 3:06b0680034a7 79 _at->read(buff, 16+2);
svupper 3:06b0680034a7 80 memcpy(&PAC[0],&buff[0],16);
svupper 3:06b0680034a7 81 return &PAC[0];
svupper 3:06b0680034a7 82 }
svupper 3:06b0680034a7 83
svupper 3:06b0680034a7 84 float Sigfox::getTemperature() {
svupper 3:06b0680034a7 85 char buff[6];
svupper 3:06b0680034a7 86 _at->send("AT$T?");
svupper 3:06b0680034a7 87 _at->read(buff, 6);
svupper 3:06b0680034a7 88 buff[5] = 0;
svupper 3:06b0680034a7 89 return ((double)atoi(buff))/10;
svupper 3:06b0680034a7 90 }
svupper 3:06b0680034a7 91
svupper 3:06b0680034a7 92 sigfoxvoltage_t Sigfox::getVoltages() {
svupper 3:06b0680034a7 93 sigfoxvoltage_t volt;
svupper 3:06b0680034a7 94 char buff[12];
svupper 3:06b0680034a7 95 _at->send("AT$V?");
svupper 3:06b0680034a7 96 _at->read(buff, 12);
svupper 3:06b0680034a7 97 char buff2[5];
svupper 3:06b0680034a7 98 memset(buff2,0,5);
svupper 3:06b0680034a7 99 memcpy(buff2, &buff[0], 4);
svupper 3:06b0680034a7 100 volt.current = ((double)atoi(buff2))/1000;
svupper 3:06b0680034a7 101 memset(buff2,0,5);
svupper 3:06b0680034a7 102 memcpy(buff2, &buff[6], 4);
svupper 3:06b0680034a7 103 volt.last = ((double)atoi(buff2))/1000;
svupper 3:06b0680034a7 104 return volt;
svupper 3:06b0680034a7 105 }