Masterman / Mbed 2 deprecated mbed_3pi_bluefruit

Dependencies:   m3piExpandedCommandSet mbed

Committer:
kkillebrew
Date:
Sun May 27 20:33:47 2018 +0000
Revision:
0:25cb75cafbb8
Child:
1:5fc064b4c942
Listen for ASCII characters over Bluetooth and print them to m3pi screen.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kkillebrew 0:25cb75cafbb8 1 #include "mbed.h"
kkillebrew 0:25cb75cafbb8 2 #include "m3pi.h"
kkillebrew 0:25cb75cafbb8 3
kkillebrew 0:25cb75cafbb8 4 m3pi m3pi;
kkillebrew 0:25cb75cafbb8 5
kkillebrew 0:25cb75cafbb8 6 Serial dev(p28,p27);
kkillebrew 0:25cb75cafbb8 7 DigitalOut led1(LED1);
kkillebrew 0:25cb75cafbb8 8
kkillebrew 0:25cb75cafbb8 9 const int BUFF_LENGTH = 8;
kkillebrew 0:25cb75cafbb8 10
kkillebrew 0:25cb75cafbb8 11 uint8_t rx_buf[BUFF_LENGTH];
kkillebrew 0:25cb75cafbb8 12 char str_buf[BUFF_LENGTH];
kkillebrew 0:25cb75cafbb8 13
kkillebrew 0:25cb75cafbb8 14 void dev_recv() {
kkillebrew 0:25cb75cafbb8 15
kkillebrew 0:25cb75cafbb8 16 // toggle the LED whenever a data transmission is received
kkillebrew 0:25cb75cafbb8 17 led1 = !led1;
kkillebrew 0:25cb75cafbb8 18
kkillebrew 0:25cb75cafbb8 19 int i = 0;
kkillebrew 0:25cb75cafbb8 20 for (i=0; i < BUFF_LENGTH; i++) {
kkillebrew 0:25cb75cafbb8 21 // let buffer empty if it's not ready to be read yet
kkillebrew 0:25cb75cafbb8 22 if (!dev.readable()) {
kkillebrew 0:25cb75cafbb8 23 wait(0.1f);
kkillebrew 0:25cb75cafbb8 24 }
kkillebrew 0:25cb75cafbb8 25
kkillebrew 0:25cb75cafbb8 26 // if still nothing to read after waiting, must have received
kkillebrew 0:25cb75cafbb8 27 // less than BUFF_LENGTH bytes
kkillebrew 0:25cb75cafbb8 28 if (!dev.readable()) {
kkillebrew 0:25cb75cafbb8 29 break;
kkillebrew 0:25cb75cafbb8 30 }
kkillebrew 0:25cb75cafbb8 31
kkillebrew 0:25cb75cafbb8 32 uint8_t b = dev.getc();
kkillebrew 0:25cb75cafbb8 33 rx_buf[i] = b;
kkillebrew 0:25cb75cafbb8 34 str_buf[i] = (char)b;
kkillebrew 0:25cb75cafbb8 35 }
kkillebrew 0:25cb75cafbb8 36
kkillebrew 0:25cb75cafbb8 37 m3pi.cls();
kkillebrew 0:25cb75cafbb8 38 m3pi.locate(0,0);
kkillebrew 0:25cb75cafbb8 39
kkillebrew 0:25cb75cafbb8 40 // print the buffer contents as ASCII on the first line
kkillebrew 0:25cb75cafbb8 41 m3pi.print(str_buf, i);
kkillebrew 0:25cb75cafbb8 42
kkillebrew 0:25cb75cafbb8 43 // print the buffer length on the second line
kkillebrew 0:25cb75cafbb8 44 m3pi.locate(0, 1);
kkillebrew 0:25cb75cafbb8 45 char str[BUFF_LENGTH] = "";
kkillebrew 0:25cb75cafbb8 46 sprintf(str, "%d", i);
kkillebrew 0:25cb75cafbb8 47 m3pi.printf(str);
kkillebrew 0:25cb75cafbb8 48
kkillebrew 0:25cb75cafbb8 49 }
kkillebrew 0:25cb75cafbb8 50
kkillebrew 0:25cb75cafbb8 51 int main() {
kkillebrew 0:25cb75cafbb8 52 dev.baud(9600);
kkillebrew 0:25cb75cafbb8 53 dev.attach(&dev_recv, Serial::RxIrq);
kkillebrew 0:25cb75cafbb8 54 m3pi.locate(0, 1);
kkillebrew 0:25cb75cafbb8 55 m3pi.printf("BT LE");
kkillebrew 0:25cb75cafbb8 56
kkillebrew 0:25cb75cafbb8 57 while(1) {
kkillebrew 0:25cb75cafbb8 58 sleep();
kkillebrew 0:25cb75cafbb8 59 }
kkillebrew 0:25cb75cafbb8 60 }