![](/media/cache/profiles/944dfbba4ac84a1f27331875a01963fd.jpg.50x50_q85.jpg)
This is the firmware for the 'Connecting devices to Pelion Device Management using Mbed Edge' tutorial
source/main.cpp@2:f76a61a91e47, 2018-08-14 (annotated)
- Committer:
- Jan Jongboom
- Date:
- Tue Aug 14 12:27:31 2018 +0200
- Revision:
- 2:f76a61a91e47
- Parent:
- 0:2f1d715b6434
Report stdin status back
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jan Jongboom |
0:2f1d715b6434 | 1 | #include "mbed.h" |
Jan Jongboom |
0:2f1d715b6434 | 2 | |
Jan Jongboom |
0:2f1d715b6434 | 3 | Serial pc(USBTX, USBRX); |
Jan Jongboom |
0:2f1d715b6434 | 4 | |
Jan Jongboom |
0:2f1d715b6434 | 5 | static char serial_buffer[1024] = { 0 }; |
Jan Jongboom |
0:2f1d715b6434 | 6 | static uint32_t serial_ix = 0; |
Jan Jongboom |
0:2f1d715b6434 | 7 | static bool serial_line_ready = false; |
Jan Jongboom |
0:2f1d715b6434 | 8 | static bool button_pressed = false; |
Jan Jongboom |
0:2f1d715b6434 | 9 | static uint32_t button_count = 0; |
Jan Jongboom |
0:2f1d715b6434 | 10 | |
Jan Jongboom |
0:2f1d715b6434 | 11 | static DigitalOut led(LED1); |
Jan Jongboom |
0:2f1d715b6434 | 12 | static InterruptIn btn(BUTTON1); |
Jan Jongboom |
0:2f1d715b6434 | 13 | |
Jan Jongboom |
0:2f1d715b6434 | 14 | void rx_irq() { |
Jan Jongboom |
0:2f1d715b6434 | 15 | char c = pc.getc(); |
Jan Jongboom |
0:2f1d715b6434 | 16 | |
Jan Jongboom |
0:2f1d715b6434 | 17 | if (c == '\r') { |
Jan Jongboom |
0:2f1d715b6434 | 18 | serial_line_ready = true; |
Jan Jongboom |
0:2f1d715b6434 | 19 | } |
Jan Jongboom |
0:2f1d715b6434 | 20 | else if (c == '\n') { |
Jan Jongboom |
0:2f1d715b6434 | 21 | return; |
Jan Jongboom |
0:2f1d715b6434 | 22 | } |
Jan Jongboom |
0:2f1d715b6434 | 23 | else { |
Jan Jongboom |
0:2f1d715b6434 | 24 | serial_buffer[serial_ix] = c; |
Jan Jongboom |
0:2f1d715b6434 | 25 | |
Jan Jongboom |
0:2f1d715b6434 | 26 | serial_ix++; |
Jan Jongboom |
0:2f1d715b6434 | 27 | } |
Jan Jongboom |
0:2f1d715b6434 | 28 | |
Jan Jongboom |
0:2f1d715b6434 | 29 | if (serial_ix >= 1023) { |
Jan Jongboom |
0:2f1d715b6434 | 30 | memset(serial_buffer, 0, 1024); |
Jan Jongboom |
0:2f1d715b6434 | 31 | serial_ix = 0; |
Jan Jongboom |
0:2f1d715b6434 | 32 | } |
Jan Jongboom |
0:2f1d715b6434 | 33 | } |
Jan Jongboom |
0:2f1d715b6434 | 34 | |
Jan Jongboom |
0:2f1d715b6434 | 35 | void btn_irq() { |
Jan Jongboom |
0:2f1d715b6434 | 36 | button_pressed = true; |
Jan Jongboom |
0:2f1d715b6434 | 37 | button_count++; |
Jan Jongboom |
0:2f1d715b6434 | 38 | } |
Jan Jongboom |
0:2f1d715b6434 | 39 | |
Jan Jongboom |
0:2f1d715b6434 | 40 | int main() { |
Jan Jongboom |
0:2f1d715b6434 | 41 | pc.baud(115200); |
Jan Jongboom |
2:f76a61a91e47 | 42 | pc.printf("!Hello from proprietary serial device #1\r\n"); |
Jan Jongboom |
0:2f1d715b6434 | 43 | |
Jan Jongboom |
0:2f1d715b6434 | 44 | pc.attach(callback(&rx_irq)); |
Jan Jongboom |
0:2f1d715b6434 | 45 | btn.fall(callback(&btn_irq)); |
Jan Jongboom |
0:2f1d715b6434 | 46 | |
Jan Jongboom |
0:2f1d715b6434 | 47 | while (1) { |
Jan Jongboom |
0:2f1d715b6434 | 48 | if (serial_line_ready) { |
Jan Jongboom |
0:2f1d715b6434 | 49 | if (strcmp(serial_buffer, "+LED1") == 0) { |
Jan Jongboom |
0:2f1d715b6434 | 50 | led = 1; |
Jan Jongboom |
2:f76a61a91e47 | 51 | printf(">%s\r\n!LED1 is now on\r\n", serial_buffer); |
Jan Jongboom |
0:2f1d715b6434 | 52 | } |
Jan Jongboom |
0:2f1d715b6434 | 53 | else if (strcmp(serial_buffer, "-LED1") == 0) { |
Jan Jongboom |
0:2f1d715b6434 | 54 | led = 0; |
Jan Jongboom |
2:f76a61a91e47 | 55 | printf(">%s\r\n!LED1 is now off\r\n", serial_buffer); |
Jan Jongboom |
0:2f1d715b6434 | 56 | } |
Jan Jongboom |
0:2f1d715b6434 | 57 | else { |
Jan Jongboom |
2:f76a61a91e47 | 58 | printf(">%s\r\n!Unknown command\r\n", serial_buffer); |
Jan Jongboom |
0:2f1d715b6434 | 59 | } |
Jan Jongboom |
0:2f1d715b6434 | 60 | |
Jan Jongboom |
0:2f1d715b6434 | 61 | serial_line_ready = false; |
Jan Jongboom |
0:2f1d715b6434 | 62 | memset(serial_buffer, 0, 1024); |
Jan Jongboom |
0:2f1d715b6434 | 63 | serial_ix = 0; |
Jan Jongboom |
0:2f1d715b6434 | 64 | } |
Jan Jongboom |
0:2f1d715b6434 | 65 | |
Jan Jongboom |
0:2f1d715b6434 | 66 | if (button_pressed) { |
Jan Jongboom |
0:2f1d715b6434 | 67 | printf("<BTN=%lu\r\n", button_count); |
Jan Jongboom |
0:2f1d715b6434 | 68 | button_pressed = false; |
Jan Jongboom |
0:2f1d715b6434 | 69 | } |
Jan Jongboom |
0:2f1d715b6434 | 70 | |
Jan Jongboom |
0:2f1d715b6434 | 71 | wait_ms(1); |
Jan Jongboom |
0:2f1d715b6434 | 72 | } |
Jan Jongboom |
0:2f1d715b6434 | 73 | } |