JLC test

Dependencies:   PinDetect libmDot mbed-rtos mbed

Committer:
tmulrooney
Date:
Fri Jan 22 00:33:38 2016 +0000
Revision:
0:6aa743a332ae
Child:
1:96c429800568
test for JLC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tmulrooney 0:6aa743a332ae 1 /**********************************************************************************
tmulrooney 0:6aa743a332ae 2 * This program monitors the power on state, kill state and battery voltage on
tmulrooney 0:6aa743a332ae 3 * Woodstream mouse trap using the Multitech mDot and UDK2 development system.
tmulrooney 0:6aa743a332ae 4 * The power on state is monitored on the PA_4(UDK2 Pin D10)and the kill state is
tmulrooney 0:6aa743a332ae 5 * monitored on the PA_5 (UDK2 Pin D13) Digital Input Pins. The battery voltage
tmulrooney 0:6aa743a332ae 6 * is monitored on the PB_1 (UDK2 Pin A0) Analog Input. The status of these pins
tmulrooney 0:6aa743a332ae 7 * are transferred from the mDot LoRa to the Conduit LoRa gateway. The status is
tmulrooney 0:6aa743a332ae 8 * also shown on the USB Debug Terminal Window.
tmulrooney 0:6aa743a332ae 9 *********************************************************************************/
tmulrooney 0:6aa743a332ae 10
tmulrooney 0:6aa743a332ae 11 #include "mbed.h"
tmulrooney 0:6aa743a332ae 12 #include "mDot.h"
tmulrooney 0:6aa743a332ae 13 #include "MTSLog.h"
tmulrooney 0:6aa743a332ae 14 #include <string>
tmulrooney 0:6aa743a332ae 15 #include <vector>
tmulrooney 0:6aa743a332ae 16 #include <algorithm>
tmulrooney 0:6aa743a332ae 17 #include "PinDetect.h"
tmulrooney 0:6aa743a332ae 18
tmulrooney 0:6aa743a332ae 19 #define I2C_TIME 5
tmulrooney 0:6aa743a332ae 20 #define LED_TIME 1
tmulrooney 0:6aa743a332ae 21 #define BATTERY_TIME 2.0
tmulrooney 0:6aa743a332ae 22 #define KILL_STATUS_TIME 3.0
tmulrooney 0:6aa743a332ae 23 #define POWER_ON_TIME 4.0
tmulrooney 0:6aa743a332ae 24
tmulrooney 0:6aa743a332ae 25 //mDot* dot;
tmulrooney 0:6aa743a332ae 26 Ticker ledTimer;
tmulrooney 0:6aa743a332ae 27 Ticker batteryTimer;
tmulrooney 0:6aa743a332ae 28 Ticker killStatusTimer;
tmulrooney 0:6aa743a332ae 29 Ticker powerOnTimer;
tmulrooney 0:6aa743a332ae 30
tmulrooney 0:6aa743a332ae 31 AnalogIn batteryVoltage(PTB0);
tmulrooney 0:6aa743a332ae 32 DigitalIn powerOn(PTC1); /* SW2 */
tmulrooney 0:6aa743a332ae 33 DigitalIn killStatus(PTB17); /* SW3 */
tmulrooney 0:6aa743a332ae 34 DigitalOut led_red(PTA1);
tmulrooney 0:6aa743a332ae 35 DigitalOut led_green(PTA2);
tmulrooney 0:6aa743a332ae 36 //DigitalOut led_blue(PTD5);
tmulrooney 0:6aa743a332ae 37 DigitalOut spi_cs(PTD4);
tmulrooney 0:6aa743a332ae 38
tmulrooney 0:6aa743a332ae 39 Serial pc(PTE0, PTE1);
tmulrooney 0:6aa743a332ae 40
tmulrooney 0:6aa743a332ae 41 // Configuration variables
tmulrooney 0:6aa743a332ae 42 static std::string config_network_name = "LORA_NET";
tmulrooney 0:6aa743a332ae 43 static std::string config_network_pass = "BLUE_HEN1";
tmulrooney 0:6aa743a332ae 44 static uint8_t config_frequency_sub_band = 7;
tmulrooney 0:6aa743a332ae 45
tmulrooney 0:6aa743a332ae 46 //Global Variables
tmulrooney 0:6aa743a332ae 47 bool readyToSendI2C;
tmulrooney 0:6aa743a332ae 48 bool readyToSendBatteryVoltage;
tmulrooney 0:6aa743a332ae 49 bool readyToSendKillStatus;
tmulrooney 0:6aa743a332ae 50 bool readyToSendPowerOn;
tmulrooney 0:6aa743a332ae 51 float lastBatteryVoltage;
tmulrooney 0:6aa743a332ae 52 uint8_t lastKillStatus;
tmulrooney 0:6aa743a332ae 53 uint8_t lastPowerOn;
tmulrooney 0:6aa743a332ae 54
tmulrooney 0:6aa743a332ae 55 //Function prototypes
tmulrooney 0:6aa743a332ae 56 void ledWrite();
tmulrooney 0:6aa743a332ae 57 void periodicSendTock();
tmulrooney 0:6aa743a332ae 58 void batteryRead();
tmulrooney 0:6aa743a332ae 59 void killStatusRead();
tmulrooney 0:6aa743a332ae 60 void powerOnRead();
tmulrooney 0:6aa743a332ae 61 void printError(mDot* dot, int32_t returnCode);
tmulrooney 0:6aa743a332ae 62 void printVersion();
tmulrooney 0:6aa743a332ae 63 bool setFrequencySubBand(uint8_t subBand);
tmulrooney 0:6aa743a332ae 64 bool setNetworkName(const std::string name);
tmulrooney 0:6aa743a332ae 65 bool setNetworkPassphrase(const std::string passphrase);
tmulrooney 0:6aa743a332ae 66 bool setTxDataRate(const int dataRate);
tmulrooney 0:6aa743a332ae 67 bool setPower(uint8_t power);
tmulrooney 0:6aa743a332ae 68 bool setAck(uint8_t retries);
tmulrooney 0:6aa743a332ae 69 bool joinNetwork();
tmulrooney 0:6aa743a332ae 70 bool send(const std::string text);
tmulrooney 0:6aa743a332ae 71 char latestData[100];
tmulrooney 0:6aa743a332ae 72 I2C i2c_mem(PTB3,PTB2);
tmulrooney 0:6aa743a332ae 73 //SPI spi_rf(PTD6, PTD7, PTD5, PTD4);
tmulrooney 0:6aa743a332ae 74 SPI spi_rf(PTD6, PTD7, PTD5);
tmulrooney 0:6aa743a332ae 75 int myI2CWrite(int addr, char *data, int length);
tmulrooney 0:6aa743a332ae 76 int myI2CRead(int addr, char *data, int length);
tmulrooney 0:6aa743a332ae 77 int mySPIWrite(int addr, char *data, int length);
tmulrooney 0:6aa743a332ae 78 int mySPIRead(int addr, char *data, int length);
tmulrooney 0:6aa743a332ae 79
tmulrooney 0:6aa743a332ae 80 int i2cAddr = 0xAA;
tmulrooney 0:6aa743a332ae 81 char data[0x10];
tmulrooney 0:6aa743a332ae 82 char data1[0x10];
tmulrooney 0:6aa743a332ae 83
tmulrooney 0:6aa743a332ae 84 int main()
tmulrooney 0:6aa743a332ae 85 {
tmulrooney 0:6aa743a332ae 86 bool configFail = false;
tmulrooney 0:6aa743a332ae 87 int ack;
tmulrooney 0:6aa743a332ae 88
tmulrooney 0:6aa743a332ae 89 readyToSendI2C = false;
tmulrooney 0:6aa743a332ae 90 readyToSendBatteryVoltage = false;
tmulrooney 0:6aa743a332ae 91 readyToSendKillStatus = false;
tmulrooney 0:6aa743a332ae 92 readyToSendPowerOn = false;
tmulrooney 0:6aa743a332ae 93 lastBatteryVoltage = 0.0;
tmulrooney 0:6aa743a332ae 94 lastKillStatus = killStatus;
tmulrooney 0:6aa743a332ae 95 lastPowerOn = powerOn;
tmulrooney 0:6aa743a332ae 96
tmulrooney 0:6aa743a332ae 97 i2c_mem.frequency(100000);
tmulrooney 0:6aa743a332ae 98
tmulrooney 0:6aa743a332ae 99 // Setup the spi for 8 bit data, high steady state clock,
tmulrooney 0:6aa743a332ae 100 // second edge capture, with a 1MHz clock rate
tmulrooney 0:6aa743a332ae 101 // spi_rf.format(16,3);
tmulrooney 0:6aa743a332ae 102 spi_rf.format(16,0);
tmulrooney 0:6aa743a332ae 103 spi_rf.frequency(1000000);
tmulrooney 0:6aa743a332ae 104 spi_cs = 1;
tmulrooney 0:6aa743a332ae 105
tmulrooney 0:6aa743a332ae 106 //Start LED startup sequence
tmulrooney 0:6aa743a332ae 107 ledTimer.attach(&ledWrite, LED_TIME);
tmulrooney 0:6aa743a332ae 108
tmulrooney 0:6aa743a332ae 109 pc.baud(115200);
tmulrooney 0:6aa743a332ae 110 pc.printf("\r\n\r\n");
tmulrooney 0:6aa743a332ae 111 pc.printf("=====================================\r\n");
tmulrooney 0:6aa743a332ae 112 pc.printf("I2C Demo \r\n");
tmulrooney 0:6aa743a332ae 113 pc.printf("=====================================\r\n");
tmulrooney 0:6aa743a332ae 114
tmulrooney 0:6aa743a332ae 115 // get the mDot handle
tmulrooney 0:6aa743a332ae 116 // dot = mDot::getInstance();
tmulrooney 0:6aa743a332ae 117 printVersion();
tmulrooney 0:6aa743a332ae 118 /* dot->setLogLevel(mts::MTSLog::INFO_LEVEL);
tmulrooney 0:6aa743a332ae 119
tmulrooney 0:6aa743a332ae 120 //*******************************************
tmulrooney 0:6aa743a332ae 121 // configuration
tmulrooney 0:6aa743a332ae 122 //*******************************************
tmulrooney 0:6aa743a332ae 123 // reset to default config so we know what state we're in
tmulrooney 0:6aa743a332ae 124 dot->resetNetworkSession();
tmulrooney 0:6aa743a332ae 125 dot->resetConfig();
tmulrooney 0:6aa743a332ae 126
tmulrooney 0:6aa743a332ae 127 // set up the mDot with our network information: frequency sub band, network name, and network password
tmulrooney 0:6aa743a332ae 128 // these can all be saved in NVM so they don't need to be set every time - see mDot::saveConfig()
tmulrooney 0:6aa743a332ae 129 configFail = !setFrequencySubBand(config_frequency_sub_band);
tmulrooney 0:6aa743a332ae 130 configFail |= !setNetworkName(config_network_name);
tmulrooney 0:6aa743a332ae 131 configFail |= !setNetworkPassphrase(config_network_pass);
tmulrooney 0:6aa743a332ae 132 configFail |= !setTxDataRate(mDot::SF_8);
tmulrooney 0:6aa743a332ae 133 configFail |= !setPower(20); // Reduce latency for 868 units
tmulrooney 0:6aa743a332ae 134 configFail |= !setAck(0); // Disable ack for less latency
tmulrooney 0:6aa743a332ae 135
tmulrooney 0:6aa743a332ae 136 printf("Configration %s\r\n",configFail?"Failed":"Passed");
tmulrooney 0:6aa743a332ae 137
tmulrooney 0:6aa743a332ae 138 // save this configuration to the mDot's NVM
tmulrooney 0:6aa743a332ae 139 printf("saving config\r\n");
tmulrooney 0:6aa743a332ae 140 if (! dot->saveConfig())
tmulrooney 0:6aa743a332ae 141 {
tmulrooney 0:6aa743a332ae 142 logError("failed to save configuration");
tmulrooney 0:6aa743a332ae 143 }
tmulrooney 0:6aa743a332ae 144 //*******************************************
tmulrooney 0:6aa743a332ae 145 // end of configuration
tmulrooney 0:6aa743a332ae 146 //*******************************************
tmulrooney 0:6aa743a332ae 147
tmulrooney 0:6aa743a332ae 148 // keep trying to join the network
tmulrooney 0:6aa743a332ae 149 while (!joinNetwork())
tmulrooney 0:6aa743a332ae 150 {
tmulrooney 0:6aa743a332ae 151 wait(200);
tmulrooney 0:6aa743a332ae 152 dot->resetNetworkSession();
tmulrooney 0:6aa743a332ae 153 }
tmulrooney 0:6aa743a332ae 154 */
tmulrooney 0:6aa743a332ae 155 // Stop LED startup sequence & configure them for operation
tmulrooney 0:6aa743a332ae 156 led_red = 1;
tmulrooney 0:6aa743a332ae 157 led_green = 1;
tmulrooney 0:6aa743a332ae 158 // led_blue = 1;
tmulrooney 0:6aa743a332ae 159 // start all paramter timers to sample analog and digital inputs
tmulrooney 0:6aa743a332ae 160 // batteryTimer.attach(batteryRead, BATTERY_TIME);
tmulrooney 0:6aa743a332ae 161 // killStatusTimer.attach(killStatusRead, KILL_STATUS_TIME);
tmulrooney 0:6aa743a332ae 162 // powerOnTimer.attach(powerOnRead, POWER_ON_TIME);
tmulrooney 0:6aa743a332ae 163
tmulrooney 0:6aa743a332ae 164 while (1)
tmulrooney 0:6aa743a332ae 165 {
tmulrooney 0:6aa743a332ae 166 // is there anything to send
tmulrooney 0:6aa743a332ae 167 if(readyToSendI2C)
tmulrooney 0:6aa743a332ae 168 {
tmulrooney 0:6aa743a332ae 169 #if 0
tmulrooney 0:6aa743a332ae 170 data[0] = 0x12;
tmulrooney 0:6aa743a332ae 171 data[1] = 0x34;
tmulrooney 0:6aa743a332ae 172 data[2] = 0x56;
tmulrooney 0:6aa743a332ae 173 myI2CWrite(0,data,3);
tmulrooney 0:6aa743a332ae 174 myI2CRead(0,data1,3);
tmulrooney 0:6aa743a332ae 175 sprintf(latestData,"I2c %02X %02X %02X",data1[0], data1[1], data1[2]);
tmulrooney 0:6aa743a332ae 176 pc.printf("%s\r\n",latestData);
tmulrooney 0:6aa743a332ae 177 #endif
tmulrooney 0:6aa743a332ae 178
tmulrooney 0:6aa743a332ae 179 #if 1
tmulrooney 0:6aa743a332ae 180 // Send 0x8f, the command to read the WHOAMI register
tmulrooney 0:6aa743a332ae 181 data[0] = 0x12;
tmulrooney 0:6aa743a332ae 182 // mySPIWrite(0x0A,data,1);
tmulrooney 0:6aa743a332ae 183 // mySPIRead(0x0A,data1,1);
tmulrooney 0:6aa743a332ae 184 mySPIRead(0x42,data1,1);
tmulrooney 0:6aa743a332ae 185 // int spiData = spi_rf.write(0x0600 | 0x0000);
tmulrooney 0:6aa743a332ae 186 sprintf(latestData,"SPI %02X %02X",data1[0], data1[1]);
tmulrooney 0:6aa743a332ae 187 pc.printf("%s\r\n",latestData);
tmulrooney 0:6aa743a332ae 188
tmulrooney 0:6aa743a332ae 189 #endif
tmulrooney 0:6aa743a332ae 190 send(latestData);
tmulrooney 0:6aa743a332ae 191 readyToSendI2C = false;
tmulrooney 0:6aa743a332ae 192 }
tmulrooney 0:6aa743a332ae 193 if(readyToSendBatteryVoltage)
tmulrooney 0:6aa743a332ae 194 {
tmulrooney 0:6aa743a332ae 195 sprintf(latestData,"Voltage %2.2f",(double)lastBatteryVoltage);
tmulrooney 0:6aa743a332ae 196 pc.printf("%s\r\n",latestData);
tmulrooney 0:6aa743a332ae 197 send(latestData);
tmulrooney 0:6aa743a332ae 198 readyToSendBatteryVoltage = false;
tmulrooney 0:6aa743a332ae 199 }
tmulrooney 0:6aa743a332ae 200 if(readyToSendKillStatus)
tmulrooney 0:6aa743a332ae 201 {
tmulrooney 0:6aa743a332ae 202 sprintf(latestData,"KillStatus %d",lastKillStatus);
tmulrooney 0:6aa743a332ae 203 pc.printf("%s\r\n",latestData);
tmulrooney 0:6aa743a332ae 204 send(latestData);
tmulrooney 0:6aa743a332ae 205 readyToSendKillStatus = false;
tmulrooney 0:6aa743a332ae 206 }
tmulrooney 0:6aa743a332ae 207 if(readyToSendPowerOn)
tmulrooney 0:6aa743a332ae 208 {
tmulrooney 0:6aa743a332ae 209 sprintf(latestData,"PowerOn %d",lastPowerOn);
tmulrooney 0:6aa743a332ae 210 pc.printf("%s\r\n",latestData);
tmulrooney 0:6aa743a332ae 211 send(latestData);
tmulrooney 0:6aa743a332ae 212 readyToSendPowerOn = false;
tmulrooney 0:6aa743a332ae 213 }
tmulrooney 0:6aa743a332ae 214 }
tmulrooney 0:6aa743a332ae 215 }
tmulrooney 0:6aa743a332ae 216
tmulrooney 0:6aa743a332ae 217 int myI2CWrite(int addr, char *data, int length)
tmulrooney 0:6aa743a332ae 218 {
tmulrooney 0:6aa743a332ae 219 int i;
tmulrooney 0:6aa743a332ae 220 char bytes[3];
tmulrooney 0:6aa743a332ae 221
tmulrooney 0:6aa743a332ae 222 for(i=0; i< length; i++,addr++)
tmulrooney 0:6aa743a332ae 223 {
tmulrooney 0:6aa743a332ae 224 bytes[0] = addr << 8;
tmulrooney 0:6aa743a332ae 225 bytes[1] = addr & 0xFF;
tmulrooney 0:6aa743a332ae 226 bytes[2] = data[i];
tmulrooney 0:6aa743a332ae 227 i2c_mem.write(i2cAddr, bytes, 3); /* write address and one byte */
tmulrooney 0:6aa743a332ae 228 while(i2c_mem.write(i2cAddr, bytes, 0) != 0); /* wait till write complete */
tmulrooney 0:6aa743a332ae 229 }
tmulrooney 0:6aa743a332ae 230 return 0;
tmulrooney 0:6aa743a332ae 231 }
tmulrooney 0:6aa743a332ae 232
tmulrooney 0:6aa743a332ae 233 int myI2CRead(int addr, char *data, int length)
tmulrooney 0:6aa743a332ae 234 {
tmulrooney 0:6aa743a332ae 235 char bytes[2];
tmulrooney 0:6aa743a332ae 236
tmulrooney 0:6aa743a332ae 237 bytes[0] = addr << 8;
tmulrooney 0:6aa743a332ae 238 bytes[1] = addr & 0xFF;
tmulrooney 0:6aa743a332ae 239 i2c_mem.write(i2cAddr, bytes, 2,true); /* write address with repeated start */
tmulrooney 0:6aa743a332ae 240 i2c_mem.read(i2cAddr, data, length); /* read all bytes */
tmulrooney 0:6aa743a332ae 241 return 0;
tmulrooney 0:6aa743a332ae 242 }
tmulrooney 0:6aa743a332ae 243
tmulrooney 0:6aa743a332ae 244
tmulrooney 0:6aa743a332ae 245 int mySPIWrite(int addr, char *data, int length)
tmulrooney 0:6aa743a332ae 246 {
tmulrooney 0:6aa743a332ae 247 int i;
tmulrooney 0:6aa743a332ae 248
tmulrooney 0:6aa743a332ae 249 for(i=0;i<length;i++,addr++)
tmulrooney 0:6aa743a332ae 250 {
tmulrooney 0:6aa743a332ae 251 spi_cs = 0;
tmulrooney 0:6aa743a332ae 252 data[i] = spi_rf.write( (addr << 8) | data[i] | 0x8000);
tmulrooney 0:6aa743a332ae 253 spi_cs = 1;
tmulrooney 0:6aa743a332ae 254 }
tmulrooney 0:6aa743a332ae 255 return 0;
tmulrooney 0:6aa743a332ae 256 }
tmulrooney 0:6aa743a332ae 257
tmulrooney 0:6aa743a332ae 258 int mySPIRead(int addr, char *data, int length)
tmulrooney 0:6aa743a332ae 259 {
tmulrooney 0:6aa743a332ae 260 int i;
tmulrooney 0:6aa743a332ae 261
tmulrooney 0:6aa743a332ae 262 for(i=0;i<length;i++,addr++)
tmulrooney 0:6aa743a332ae 263 {
tmulrooney 0:6aa743a332ae 264 spi_cs = 0;
tmulrooney 0:6aa743a332ae 265 data[i] = spi_rf.write( (addr << 8) | data[i] | 0x0000);
tmulrooney 0:6aa743a332ae 266 spi_cs = 1;
tmulrooney 0:6aa743a332ae 267 }
tmulrooney 0:6aa743a332ae 268 return 0;
tmulrooney 0:6aa743a332ae 269 }
tmulrooney 0:6aa743a332ae 270
tmulrooney 0:6aa743a332ae 271 void ledWrite()
tmulrooney 0:6aa743a332ae 272 {
tmulrooney 0:6aa743a332ae 273 led_red = !led_red;
tmulrooney 0:6aa743a332ae 274 // led_green = !led_green;
tmulrooney 0:6aa743a332ae 275 // led_blue = !led_blue;
tmulrooney 0:6aa743a332ae 276 readyToSendI2C = true;
tmulrooney 0:6aa743a332ae 277 }
tmulrooney 0:6aa743a332ae 278
tmulrooney 0:6aa743a332ae 279 void batteryRead()
tmulrooney 0:6aa743a332ae 280 {
tmulrooney 0:6aa743a332ae 281 lastBatteryVoltage = batteryVoltage * (float)3.3;
tmulrooney 0:6aa743a332ae 282 readyToSendBatteryVoltage = true;
tmulrooney 0:6aa743a332ae 283 }
tmulrooney 0:6aa743a332ae 284
tmulrooney 0:6aa743a332ae 285 void killStatusRead()
tmulrooney 0:6aa743a332ae 286 {
tmulrooney 0:6aa743a332ae 287 lastKillStatus = killStatus;
tmulrooney 0:6aa743a332ae 288 readyToSendKillStatus = true;
tmulrooney 0:6aa743a332ae 289 }
tmulrooney 0:6aa743a332ae 290
tmulrooney 0:6aa743a332ae 291 void powerOnRead()
tmulrooney 0:6aa743a332ae 292 {
tmulrooney 0:6aa743a332ae 293 lastPowerOn = powerOn;
tmulrooney 0:6aa743a332ae 294 readyToSendPowerOn = true;
tmulrooney 0:6aa743a332ae 295 }
tmulrooney 0:6aa743a332ae 296
tmulrooney 0:6aa743a332ae 297 void printVersion()
tmulrooney 0:6aa743a332ae 298 {
tmulrooney 0:6aa743a332ae 299 // pc.printf("%s Built on: %s %s\r\n\r\n", dot->getId().c_str(),__DATE__,__TIME__);
tmulrooney 0:6aa743a332ae 300 pc.printf("Built on: %s %s\r\n\r\n", __DATE__,__TIME__);
tmulrooney 0:6aa743a332ae 301 }
tmulrooney 0:6aa743a332ae 302
tmulrooney 0:6aa743a332ae 303 bool setFrequencySubBand(uint8_t subBand)
tmulrooney 0:6aa743a332ae 304 {
tmulrooney 0:6aa743a332ae 305 /* int32_t returnCode;
tmulrooney 0:6aa743a332ae 306
tmulrooney 0:6aa743a332ae 307 printf("Setting frequency sub band to '%d'...\r\n", subBand);
tmulrooney 0:6aa743a332ae 308 if ((returnCode = dot->setFrequencySubBand(subBand)) != mDot::MDOT_OK) {
tmulrooney 0:6aa743a332ae 309 printError(dot, returnCode);
tmulrooney 0:6aa743a332ae 310 return false;
tmulrooney 0:6aa743a332ae 311 }
tmulrooney 0:6aa743a332ae 312 return true;
tmulrooney 0:6aa743a332ae 313 */
tmulrooney 0:6aa743a332ae 314 }
tmulrooney 0:6aa743a332ae 315
tmulrooney 0:6aa743a332ae 316 bool setNetworkName(const std::string name)
tmulrooney 0:6aa743a332ae 317 {
tmulrooney 0:6aa743a332ae 318 /* int32_t returnCode;
tmulrooney 0:6aa743a332ae 319
tmulrooney 0:6aa743a332ae 320 printf("Setting network name to '%s'...\r\n", name.c_str());
tmulrooney 0:6aa743a332ae 321 if ((returnCode = dot->setNetworkName(name)) != mDot::MDOT_OK)
tmulrooney 0:6aa743a332ae 322 {
tmulrooney 0:6aa743a332ae 323 printError(dot, returnCode);
tmulrooney 0:6aa743a332ae 324 return false;
tmulrooney 0:6aa743a332ae 325 }
tmulrooney 0:6aa743a332ae 326 return true;
tmulrooney 0:6aa743a332ae 327 */}
tmulrooney 0:6aa743a332ae 328
tmulrooney 0:6aa743a332ae 329 bool setNetworkPassphrase(const std::string passphrase)
tmulrooney 0:6aa743a332ae 330 {
tmulrooney 0:6aa743a332ae 331 /* int32_t returnCode;
tmulrooney 0:6aa743a332ae 332
tmulrooney 0:6aa743a332ae 333 printf("Setting passphrase to '%s'...\r\n", passphrase.c_str());
tmulrooney 0:6aa743a332ae 334 if ((returnCode = dot->setNetworkPassphrase(passphrase)) != mDot::MDOT_OK)
tmulrooney 0:6aa743a332ae 335 {
tmulrooney 0:6aa743a332ae 336 printError(dot, returnCode);
tmulrooney 0:6aa743a332ae 337 return false;
tmulrooney 0:6aa743a332ae 338 }
tmulrooney 0:6aa743a332ae 339 return true;
tmulrooney 0:6aa743a332ae 340 */}
tmulrooney 0:6aa743a332ae 341
tmulrooney 0:6aa743a332ae 342 bool setTxDataRate(const int dataRate)
tmulrooney 0:6aa743a332ae 343 {
tmulrooney 0:6aa743a332ae 344 /* int32_t returnCode;
tmulrooney 0:6aa743a332ae 345
tmulrooney 0:6aa743a332ae 346 printf("Setting TX Spreading factor to %d...\r\n",dataRate);
tmulrooney 0:6aa743a332ae 347 if ((returnCode = dot->setTxDataRate(dataRate)) != mDot::MDOT_OK)
tmulrooney 0:6aa743a332ae 348 {
tmulrooney 0:6aa743a332ae 349 logError("Failed To Set Tx Datarate %d:%s", returnCode, mDot::getReturnCodeString(returnCode).c_str());
tmulrooney 0:6aa743a332ae 350 printError(dot, returnCode);
tmulrooney 0:6aa743a332ae 351 return false;
tmulrooney 0:6aa743a332ae 352 }
tmulrooney 0:6aa743a332ae 353 return true;
tmulrooney 0:6aa743a332ae 354 */}
tmulrooney 0:6aa743a332ae 355
tmulrooney 0:6aa743a332ae 356 bool setPower(uint8_t power)
tmulrooney 0:6aa743a332ae 357 {
tmulrooney 0:6aa743a332ae 358 /* int32_t returnCode;
tmulrooney 0:6aa743a332ae 359 printf("Setting tx power to '%d'...\r\n", power);
tmulrooney 0:6aa743a332ae 360 if ((returnCode = dot->setTxPower(power)) != mDot::MDOT_OK)
tmulrooney 0:6aa743a332ae 361 {
tmulrooney 0:6aa743a332ae 362 printError(dot, returnCode);
tmulrooney 0:6aa743a332ae 363 return false;
tmulrooney 0:6aa743a332ae 364 }
tmulrooney 0:6aa743a332ae 365 return true;
tmulrooney 0:6aa743a332ae 366 */}
tmulrooney 0:6aa743a332ae 367
tmulrooney 0:6aa743a332ae 368 bool joinNetwork()
tmulrooney 0:6aa743a332ae 369 {
tmulrooney 0:6aa743a332ae 370 /* int32_t returnCode;
tmulrooney 0:6aa743a332ae 371 printf("\r\nJoining network...\r\n");
tmulrooney 0:6aa743a332ae 372 if ((returnCode = dot->joinNetworkOnce()) != mDot::MDOT_OK)
tmulrooney 0:6aa743a332ae 373 {
tmulrooney 0:6aa743a332ae 374 printError(dot, returnCode);
tmulrooney 0:6aa743a332ae 375 return false;
tmulrooney 0:6aa743a332ae 376 }
tmulrooney 0:6aa743a332ae 377 printf("Network Joined!\r\n");
tmulrooney 0:6aa743a332ae 378 return true;
tmulrooney 0:6aa743a332ae 379 */}
tmulrooney 0:6aa743a332ae 380
tmulrooney 0:6aa743a332ae 381 bool setAck(uint8_t retries)
tmulrooney 0:6aa743a332ae 382 {
tmulrooney 0:6aa743a332ae 383 /* int32_t returnCode;
tmulrooney 0:6aa743a332ae 384 printf("Setting ack to '%d'...\r\n", retries);
tmulrooney 0:6aa743a332ae 385 if ((returnCode = dot->setAck(retries)) != mDot::MDOT_OK)
tmulrooney 0:6aa743a332ae 386 {
tmulrooney 0:6aa743a332ae 387 printError(dot, returnCode);
tmulrooney 0:6aa743a332ae 388 return false;
tmulrooney 0:6aa743a332ae 389 }
tmulrooney 0:6aa743a332ae 390 return true;
tmulrooney 0:6aa743a332ae 391 */}
tmulrooney 0:6aa743a332ae 392
tmulrooney 0:6aa743a332ae 393 bool send(const std::string text)
tmulrooney 0:6aa743a332ae 394 {
tmulrooney 0:6aa743a332ae 395 /* int32_t returnCode;
tmulrooney 0:6aa743a332ae 396 uint32_t timeTillSend = dot->getNextTxMs();
tmulrooney 0:6aa743a332ae 397 if (timeTillSend != 0) {
tmulrooney 0:6aa743a332ae 398 printf("waiting %lu ms to send\r\n", timeTillSend);
tmulrooney 0:6aa743a332ae 399 return false;
tmulrooney 0:6aa743a332ae 400 }
tmulrooney 0:6aa743a332ae 401
tmulrooney 0:6aa743a332ae 402 printf("Sending data... ");
tmulrooney 0:6aa743a332ae 403 std::vector<uint8_t> data(text.begin(), text.end());
tmulrooney 0:6aa743a332ae 404 if ((returnCode = dot->send(data, 1)) != mDot::MDOT_OK)
tmulrooney 0:6aa743a332ae 405 {
tmulrooney 0:6aa743a332ae 406 printError(dot, returnCode);
tmulrooney 0:6aa743a332ae 407 return false;
tmulrooney 0:6aa743a332ae 408 }
tmulrooney 0:6aa743a332ae 409 printf("Data sent!\r\n");
tmulrooney 0:6aa743a332ae 410 return true;
tmulrooney 0:6aa743a332ae 411 */}
tmulrooney 0:6aa743a332ae 412
tmulrooney 0:6aa743a332ae 413 void printError(mDot* dot, int32_t returnCode)
tmulrooney 0:6aa743a332ae 414 {
tmulrooney 0:6aa743a332ae 415 // std::string error = mDot::getReturnCodeString(returnCode) + " - " + dot->getLastError();
tmulrooney 0:6aa743a332ae 416 // printf("%s\r\n", error.c_str());
tmulrooney 0:6aa743a332ae 417 }
tmulrooney 0:6aa743a332ae 418