This software example demonstrates the downlink capabilities of the SIGFOX network.
Dependencies: QW_Sensors mbed
Fork of HelloWorld - QW Development kit by
main.cpp
- Committer:
- quicksand
- Date:
- 2015-10-30
- Revision:
- 0:49858c4c3500
- Child:
- 1:897a1b3f0955
File content as of revision 0:49858c4c3500:
#include "mbed.h"
DigitalOut LED_0 (PB_6);
DigitalOut LED_1 (PA_7);
DigitalOut LED_2 (PA_6);
DigitalOut LED_3 (PA_5);
InterruptIn SW1(PB_10);
InterruptIn SW2(PA_8);
Ticker hartbeat;
typedef struct{
bool busy;
char button;
} TX_BUTTON;
TX_BUTTON Button_tx;
void beat() {
LED_0 = !LED_0;
}
//Virtual serial port over USB
Serial pc(USBTX, USBRX);
Serial modem(PA_9, PA_10);
void sw1interrupt(){
pc.printf("Button 1 pressed, sending sigfox message (command is AT$SF=42 55 54 54 4f 4e 20 31 00 00 00 00,2,0)\n");
modem.printf("AT$SF=42 55 54 54 4f 4e 20 31 00 00 00 00,2,0\n");
LED_1 = 0;
wait(0.25);
// Flush the echo of the command:
while(modem.readable()) modem.getc();
Button_tx.busy = true;
Button_tx.button = 1;
}
void sw2interrupt(){
pc.printf("Button 2 pressed, sending sigfox message (command is AT$SF=42 55 54 54 4f 4e 20 32 00 00 00 00,2,0)\n");
modem.printf("AT$SF=42 55 54 54 4f 4e 20 32 00 00 00 00,2,0\n");
LED_2 = 0;
wait(0.25);
// Flush the echo of the command:
while(modem.readable()) modem.getc();
Button_tx.busy = true;
Button_tx.button = 2;
}
int main() {
LED_0 = 1;
LED_1 = 1;
LED_2 = 1;
LED_3 = 1;
hartbeat.attach(&beat, 0.5);
Button_tx.busy = false;
Button_tx.button = 0;
SW2.fall(&sw1interrupt);
SW1.fall(&sw2interrupt);
char responsebuffer[2];
char c;
while(1) {
if(pc.readable()) {
modem.putc(pc.getc());
}
if(modem.readable()) {
c = modem.getc();
responsebuffer[0] = responsebuffer[1];
responsebuffer[1] = c;
if(Button_tx.busy)
{
if(responsebuffer[0] == 'O' && responsebuffer[1] == 'K' )
{
// Everything went fine, turn off the LED
Button_tx.busy = false;
if(Button_tx.button == 1) LED_1 = 1;
if(Button_tx.button == 2) LED_2 = 1;
}
}
pc.putc(c);
}
}
}
