Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BLE_API X_NUCLEO_IDB0XA1 mbed
Fork of BLE_HeartRate_IDB0XA1 by
Revision 29:8eb46b976f0f, committed 2018-05-19
- Comitter:
 - hux
 - Date:
 - Sat May 19 15:53:19 2018 +0000
 - Parent:
 - 28:114eaad388c1
 - Commit message:
 - Published
 
Changed in this revision
--- a/BLE_API.lib Sun Jan 08 23:13:25 2017 +0000 +++ b/BLE_API.lib Sat May 19 15:53:19 2018 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#bfc5b9b6ecf5 +http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#65474dc93927
--- a/Readme.md	Sun Jan 08 23:13:25 2017 +0000
+++ b/Readme.md	Sat May 19 15:53:19 2018 +0000
@@ -1,5 +1,5 @@
-N05_Advertising
+S05_Advertising
 
 Tested Platforms:
-   Nordic nRF51822-DK
+   NUCLEO L476RG
    
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/X_NUCLEO_IDB0XA1.lib Sat May 19 15:53:19 2018 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/ST/code/X_NUCLEO_IDB0XA1/#fa98703ece8e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bricks/blink.cpp	Sat May 19 15:53:19 2018 +0000
@@ -0,0 +1,82 @@
+// blink.cpp - send a morse pattern to LED1
+//
+// Function morse() is one way for running LED1 with a blinking sequence using
+// a busy wait, until the sequence is completed.
+//
+//    morse(" x xxx x    ");        send one time morse sequence, interval = 0.2
+//    morse(" x xxx x    ",0.5);    send one time morse sequence, interval = 0.5
+//
+// Function morse() got the additional feature to stop an ongoing timer based
+// blinking sequence.
+//    
+// The alternative is to setup an ever repeating blink sequence via LED1 using
+// function blink(), which is non waiting.
+//
+//    blink(" x xxx x    ");        repeating blink sequence, interval = 0.2
+//    blink(" x xxx x    ",0.5);    repeating blink sequence, interval = 0.5
+//    blink(0);                     stops blinking sequence
+//
+
+#include "bricks/target.h"
+#include "bricks/blink.h"
+
+#ifndef LED_INVERTED
+#   define LED_ON  1
+#   define LED_OFF 0
+#else
+#   define LED_ON  0
+#   define LED_OFF 1
+#endif
+
+   static DigitalOut led(LED1);         // LED1, being used for morse sequence
+   static Ticker ticker;                // triggers periodic callbacks
+   static const char *pointer = 0;      // 0 means morse activity disabled
+   static const char *sequence = 0;     // next morse sequence for repeats
+       
+
+   void morse(const char *pattern, double interval)
+   {
+       pointer = 0;                     // disable ticker based blinking
+       sequence = 0;                    // set also empty sequence
+       
+       for (; *pattern; pattern++)
+       {
+          led = (*pattern == ' ') ? LED_OFF : LED_ON;
+          wait(interval);               // busy waiting for interval time
+       }
+   }
+          
+// callback for LED1 ticker controlled blinking   
+           
+   static void callback(void)
+   {
+       if (pointer != 0)
+      {
+         if (*pointer == 0)
+         {
+            pointer = sequence;         // reset pointer to followup sequence
+         }
+        
+         if (*pointer)
+         {
+            led = (*pointer++ == ' ') ? LED_OFF : LED_ON;
+         }
+      }
+   }
+   
+   void blink(const char *pattern, const char* next, double interval)
+   {
+      pointer = 0;                      // stop current activities
+      led = LED_OFF;                    // reset led with LED_OFF
+      
+      sequence = next;                  // init morse sequence   
+         
+      ticker.attach(callback,interval); // next LED state after every interval
+      pointer = pattern;                // enable callback activty
+   }  
+
+   void blink(const char *pattern, double interval)
+   {
+       blink(pattern,pattern,interval);
+   }
+   
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bricks/blink.h	Sat May 19 15:53:19 2018 +0000
@@ -0,0 +1,44 @@
+// blink.h - blinking sequences for LED1
+#ifndef _BLINK_H_
+#define _BLINK_H_
+
+#include <mbed.h>
+#include "bricks/o.h"
+
+#  define BLINK_SEQUENCE_IDLE         "x       "
+#  define BLINK_SEQUENCE_ADVERTISE    "x xxx       "
+#  define BLINK_SEQUENCE_CONNECTED    "  xxx       "
+#  define BLINK_SEQUENCE_ACTION       "x x x x x       "
+#  define BLINK_SEQUENCE_ERROR        "x x x x xxx "
+#  define BLINK_SEQUENCE_TRANSITION   "x x x   "
+
+   void morse(const char *pattern, double periode = 0.2);
+   void blink(const char *pattern, const char* next, double interval = 0.2);
+   void blink(const char *pattern, double periode = 0.2);
+
+   inline void blinkIdle(O&o)          // 'idle' blink sequence
+   {
+      blink(BLINK_SEQUENCE_IDLE);
+   }
+
+   inline void blinkAdvertise(O&o)     // 'advertise' blink sequence
+   {
+      blink(BLINK_SEQUENCE_ADVERTISE);
+   }
+   
+   inline void blinkConnected(O&o)     // 'connected' blink sequence
+   {
+      blink(BLINK_SEQUENCE_TRANSITION, BLINK_SEQUENCE_CONNECTED);
+   }
+
+   inline void blinkAction(O&o)        // 'action' blink sequence
+   {
+      blink(BLINK_SEQUENCE_ACTION, BLINK_SEQUENCE_IDLE);
+   }
+
+   inline void blinkError(O&o)         // 'error' blink sequence
+   {
+      blink(BLINK_SEQUENCE_ERROR);
+   }
+
+#endif // _BLINK_H_
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bricks/blob.h	Sat May 19 15:53:19 2018 +0000
@@ -0,0 +1,59 @@
+// blob.h - 'BLOBs' are BLuetooth OBjects
+#ifndef _BLOB_H_
+#define _BLOB_H_
+
+#include "ble/BLE.h"
+#include "ble/Gap.h"
+
+#define _ICCC BLE::InitializationCompleteCallbackContext   // pure short hand
+#define _GDCP Gap::DisconnectionCallbackParams_t           // pure short hand
+#define _GCCP Gap::ConnectionCallbackParams_t              // pure short hand
+#define _GWCP GattWriteCallbackParams                      // pure short hand
+
+   class Blob : public BLE
+   {
+      public:
+         const _ICCC *pComplete;              // params to _ICCC context
+         const _GCCP *pConnect;               // params to _GCCP context
+         const _GDCP *pDisconnect;            // params to _GDPC context
+         const _GWCP *pWritten;               // params to _GWCP context
+         
+      public: // construction
+         Blob() : BLE() // standard constructor
+         {
+            pComplete = 0;  pDisconnect = 0;
+         }
+   };
+
+
+// Setup Advertising Name (syntactic sugar)
+
+   inline void name(Blob &o, const char *str)
+   {
+      o.gap().accumulateAdvertisingPayload(
+        GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)str, strlen(str)+1);
+   }
+
+
+// Setup Device Name (syntactic sugar)
+
+   inline void device(Blob &o, const char *text)
+   {
+      o.gap().setDeviceName((const uint8_t *)text);
+   }
+
+
+// Setup Advertising Data (syntactic sugar)
+
+   inline void data(Blob &o, const uint8_t *buf, size_t buflen)
+   {
+      o.gap().accumulateAdvertisingPayload(GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA, buf, buflen);
+   }
+
+   inline void data(Blob &o, const char *text)
+   {
+      size_t len = strlen(text);
+      data(o,(const uint8_t*)text,len);
+   }
+   
+#endif // _BLOB_H_
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bricks/target.h Sat May 19 15:53:19 2018 +0000 @@ -0,0 +1,19 @@ +// bricks/target.h - define target specifics + +#ifndef _BRICKS_TARGET_H_ +#define _BRICKS_TARGET_H_ + +// platform specific defines - comment out platforms which are not used +// We work only with two kinds of platform: +// +// a) a NUCLEO platform from STMicroelectronics +// b) a nRF51 platform from Nordic Semiconductor +// +// If we have not a nRF51 target then we coclude it is a NUCLEO target. This is +// not really clean, but under above assumptions it works so far! + +#ifdef TARGET_NRF51822 +# define LED_INVERTED // inverted LED for nRF51 targets +#endif + +#endif // _BRICKS_TARGET_H_
--- a/main.cpp	Sun Jan 08 23:13:25 2017 +0000
+++ b/main.cpp	Sat May 19 15:53:19 2018 +0000
@@ -1,5 +1,5 @@
-// N05_Advertising: Tutorial for demonstration of simple advertising
-// Program has been tested on nRF51822-DK
+// S05_Advertising: Tutorial for demonstration of simple advertising
+// Program has been tested on NUCLEO-L476RG
  
 #include "bricks/bricks.h"
 
@@ -33,7 +33,7 @@
    void cbSetup(O&o)                   // setup calback (after BLE init)
    {
       device(o,DEVICE_NAME);           // setup device name
-      name(o,"N05#1.0 Advertise");     // add name to device
+      name(o,"S05#1.0 Advertise");     // add name to device
       data(o,AdvData,sizeof(AdvData)); // advertising user data
 
       onDisconnect(o,cbDisconnect);    // setup disconnection callback
--- a/mbed.bld Sun Jan 08 23:13:25 2017 +0000 +++ b/mbed.bld Sat May 19 15:53:19 2018 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/4336505e4b1c \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/2e9cc70d1897 \ No newline at end of file
--- a/nRF51822.lib Sun Jan 08 23:13:25 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#3cc0718d98d0
