Bluetooth Connected TOF Sensor

Dependencies:   BLE_API X_NUCLEO_6180XA1 X_NUCLEO_IDB0XA1 mbed

Fork of BLE_HeartRate_IDB0XA1 by ST

Committer:
hux
Date:
Wed Feb 01 22:08:56 2017 +0000
Revision:
28:def5e0f0fb06
First S16_Blue_ToF application which runs nicely!; Digital display can be switched on/off with red slider

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hux 28:def5e0f0fb06 1 // blinker.cpp - send a morse pattern to LED1
hux 28:def5e0f0fb06 2 //
hux 28:def5e0f0fb06 3 // Function morse() is one way for running LED1 with a blinking sequence using
hux 28:def5e0f0fb06 4 // a busy wait, until the sequence is completed.
hux 28:def5e0f0fb06 5 //
hux 28:def5e0f0fb06 6 // Blinker b;
hux 28:def5e0f0fb06 7 // b.morse(" x xxx x "); send one time morse sequence, interval = 0.2
hux 28:def5e0f0fb06 8 // b.morse(" x xxx x ",0.5); send one time morse sequence, interval = 0.5
hux 28:def5e0f0fb06 9 //
hux 28:def5e0f0fb06 10 // Function morse(o) got the additional feature to stop an ongoing timer based
hux 28:def5e0f0fb06 11 // blinking sequence.
hux 28:def5e0f0fb06 12 //
hux 28:def5e0f0fb06 13 // The alternative is to setup an ever repeating blink sequence via LED1 using
hux 28:def5e0f0fb06 14 // function blink(), which is non waiting.
hux 28:def5e0f0fb06 15 //
hux 28:def5e0f0fb06 16 // Blinker b;
hux 28:def5e0f0fb06 17 // b.blink(" x xxx x "); repeating blink sequence, interval = 0.2
hux 28:def5e0f0fb06 18 // b.blink(" x xxx x ",0.5); repeating blink sequence, interval = 0.5
hux 28:def5e0f0fb06 19 // b.blink(); stops blinking sequence
hux 28:def5e0f0fb06 20 //
hux 28:def5e0f0fb06 21
hux 28:def5e0f0fb06 22 #include "bricks/target.h"
hux 28:def5e0f0fb06 23 #include "bricks/blinker.h"
hux 28:def5e0f0fb06 24
hux 28:def5e0f0fb06 25 #ifndef LED_INVERTED
hux 28:def5e0f0fb06 26 # define LED_ON 1
hux 28:def5e0f0fb06 27 # define LED_OFF 0
hux 28:def5e0f0fb06 28 #else
hux 28:def5e0f0fb06 29 # define LED_ON 0
hux 28:def5e0f0fb06 30 # define LED_OFF 1
hux 28:def5e0f0fb06 31 #endif
hux 28:def5e0f0fb06 32
hux 28:def5e0f0fb06 33 #ifndef BLINK_LED
hux 28:def5e0f0fb06 34 # define BLINK_LED LED1
hux 28:def5e0f0fb06 35 #endif
hux 28:def5e0f0fb06 36
hux 28:def5e0f0fb06 37 static DigitalOut led(BLINK_LED); // being used for morse sequence
hux 28:def5e0f0fb06 38 static Ticker ticker; // triggers periodic callbacks
hux 28:def5e0f0fb06 39 static const char *pointer = 0; // 0 means morse activity disabled
hux 28:def5e0f0fb06 40 static const char *sequence = 0; // next morse sequence for repeats
hux 28:def5e0f0fb06 41
hux 28:def5e0f0fb06 42 void Blinker::stop()
hux 28:def5e0f0fb06 43 {
hux 28:def5e0f0fb06 44 pointer = 0;
hux 28:def5e0f0fb06 45 sequence = 0;
hux 28:def5e0f0fb06 46 }
hux 28:def5e0f0fb06 47
hux 28:def5e0f0fb06 48 void Blinker::setled(bool state)
hux 28:def5e0f0fb06 49 {
hux 28:def5e0f0fb06 50 led = (state ? LED_ON : LED_OFF);
hux 28:def5e0f0fb06 51 }
hux 28:def5e0f0fb06 52
hux 28:def5e0f0fb06 53 void Blinker::morse(const char *pattern, double interval)
hux 28:def5e0f0fb06 54 {
hux 28:def5e0f0fb06 55 stop(); // stop current sequence
hux 28:def5e0f0fb06 56
hux 28:def5e0f0fb06 57 for (; *pattern; pattern++)
hux 28:def5e0f0fb06 58 {
hux 28:def5e0f0fb06 59 setled(*pattern != ' ');
hux 28:def5e0f0fb06 60 wait(interval); // busy waiting for interval time
hux 28:def5e0f0fb06 61 }
hux 28:def5e0f0fb06 62 }
hux 28:def5e0f0fb06 63
hux 28:def5e0f0fb06 64 // callback for LED1 ticker controlled blinking
hux 28:def5e0f0fb06 65
hux 28:def5e0f0fb06 66 static void cbBlinker(void) // blinker callback
hux 28:def5e0f0fb06 67 {
hux 28:def5e0f0fb06 68 if (pointer != 0)
hux 28:def5e0f0fb06 69 {
hux 28:def5e0f0fb06 70 if (*pointer == 0)
hux 28:def5e0f0fb06 71 {
hux 28:def5e0f0fb06 72 pointer = sequence; // reset pointer to followup sequence
hux 28:def5e0f0fb06 73 }
hux 28:def5e0f0fb06 74
hux 28:def5e0f0fb06 75 if (*pointer)
hux 28:def5e0f0fb06 76 {
hux 28:def5e0f0fb06 77 led = (*pointer++ == ' ') ? LED_OFF : LED_ON;
hux 28:def5e0f0fb06 78 }
hux 28:def5e0f0fb06 79 }
hux 28:def5e0f0fb06 80 }
hux 28:def5e0f0fb06 81
hux 28:def5e0f0fb06 82 void Blinker::blink(const char *pattern, const char* next, double interval)
hux 28:def5e0f0fb06 83 {
hux 28:def5e0f0fb06 84 pointer = 0; // stop current activities
hux 28:def5e0f0fb06 85 led = LED_OFF; // reset led with LED_OFF
hux 28:def5e0f0fb06 86
hux 28:def5e0f0fb06 87 sequence = next; // init morse sequence
hux 28:def5e0f0fb06 88
hux 28:def5e0f0fb06 89 ticker.attach(cbBlinker,interval);// next LED state after every interval
hux 28:def5e0f0fb06 90 pointer = pattern; // enable callback activty
hux 28:def5e0f0fb06 91 }
hux 28:def5e0f0fb06 92
hux 28:def5e0f0fb06 93 void Blinker::blink(const char *pattern, double interval)
hux 28:def5e0f0fb06 94 {
hux 28:def5e0f0fb06 95 blink(pattern,pattern,interval);
hux 28:def5e0f0fb06 96 }
hux 28:def5e0f0fb06 97
hux 28:def5e0f0fb06 98