this is a new program based on BLE_Uart_Peripheral. Change program name due to relation Client&Peripheral to Client&Server
Dependencies: RingBuffer nRF51_Vdd nRF51_WakeUp
This is a BLE Server (Device) program for nRF51.
You can communicate with mbed BLE using "BLE_Uart_Client" program as follows.
/users/kenjiArai/code/BLE_Uart_Client/
Please refer following my notebook.
/users/kenjiArai/notebook/ble-client-and-peripheral-using-switch-sience-ty51/#
Revision 8:dd23c6d67b58, committed 2018-02-11
- Comitter:
- kenjiArai
- Date:
- Sun Feb 11 02:04:59 2018 +0000
- Parent:
- 7:0d94f4cf2a69
- Commit message:
- use Mbed-os5 dedicated class "CircularBuffer"
Changed in this revision
RingBuffer.lib | Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 0d94f4cf2a69 -r dd23c6d67b58 RingBuffer.lib --- a/RingBuffer.lib Fri Feb 09 22:31:30 2018 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://os.mbed.com/users/ykuroda/code/RingBuffer/#ea6d02ba96ae
diff -r 0d94f4cf2a69 -r dd23c6d67b58 main.cpp --- a/main.cpp Fri Feb 09 22:31:30 2018 +0000 +++ b/main.cpp Sun Feb 11 02:04:59 2018 +0000 @@ -24,8 +24,8 @@ * * Started: March 7th, 2016 * Revised: June 13th, 2016 - * Revised: October 22nd, 2017 Run on mbed-OS-5.6.2 * Revised: Feburary 10th, 2018 Not set mac addr but use device name + * Revised: Feburary 11th, 2018 use mbed-os5.7.4 with CircularBuffer * * Original program: * BLE_LoopbackUART @@ -45,7 +45,7 @@ #include "UARTService.h" #include "nRF51_Vdd.h" #include "nRF51_WakeUp.h" -#include "RingBuffer.h" +#include "CircularBuffer.h" // Definition ----------------------------------------------------------------- //#define USE_MAC // if you use mac address, please define it @@ -53,9 +53,11 @@ #define NUM_ONCE 20 #define BFSIZE (NUM_ONCE+4) -// If you set 1, you need to connected LED1 and P_0 // Please refer nRF51_WakeUP library #define GOTO_SLEEP_MODE 0 +#if GOTO_SLEEP_MODE +#warning "Make sure!! -> You need to connected P0_21(LED1) and P0_0" +#endif //#define USE_DEBUG_MODE #ifdef USE_DEBUG_MODE @@ -68,13 +70,13 @@ BLE& ble_uart = BLE::Instance(); DigitalOut connectedLED(LED2); InterruptIn wake_up_sw(P0_1); -nRF51_WakeUp wakeup(LED1, P0_0); +nRF51_WakeUp wakeup(P0_21, P0_0); nRF51_Vdd vdd(3.0f, 2.2f); Serial pc(USBTX, USBRX, 115200); //Serial pc(P0_3, P0_1, 115200); // for another board UARTService *uartServicePtr; Ticker ticker; -RingBuffer ser_bf(1024); +CircularBuffer<char, 1536> ser_bf; Thread tsk; Mutex bletx_mutex; @@ -278,7 +280,7 @@ void serialRxCallback() { - ser_bf.save(pc.getc()); + ser_bf.push(pc.getc()); rx_isr_busy = true; tsk.signal_set(0x01); } @@ -290,7 +292,7 @@ while(true) { Thread::signal_wait(0x01); - if (ser_bf.check() == 0) { + if (ser_bf.empty()) { if (linebf_irq_len != 0) { linebf_irq[linebf_irq_len] = 0; adjust_line(linebf_irq); @@ -304,8 +306,9 @@ bletx_mutex.unlock(); } } - while(ser_bf.check() != 0) { - char c = ser_bf.read(); + while(!ser_bf.empty()) { + char c; + ser_bf.pop(c); if (c == '\b') { linebf_irq_len--; pc.putc(c); @@ -381,27 +384,27 @@ sprintf((char *)tx_buf," ~?:help\r\n"); tx_len = strlen((const char *)tx_buf); Update_Values(); - wait(0.2); + Thread::wait(200); // 12345678901234567890 sprintf((char *)tx_buf," ~v:vdd\r\n"); tx_len = strlen((const char *)tx_buf); Update_Values(); - wait(0.2); + Thread::wait(200); // 12345678901234567890 sprintf((char *)tx_buf," ~t:temperature\r\n"); tx_len = strlen((const char *)tx_buf); Update_Values(); - wait(0.2); + Thread::wait(200); // 12345678901234567890 sprintf((char *)tx_buf," ~w:wait, w 120\r\n"); tx_len = strlen((const char *)tx_buf); Update_Values(); - wait(0.2); + Thread::wait(200); // 12345678901234567890 sprintf((char *)tx_buf," ~q:quit/sleep\r\n"); tx_len = strlen((const char *)tx_buf); Update_Values(); - wait(0.2); + Thread::wait(200); } void action_tx_vdd() @@ -458,7 +461,7 @@ sprintf((char *)tx_buf,"Terminated the BLE"); tx_len = strlen((const char *)tx_buf); Update_Values(); - wait(1.0); + Thread::wait(1000); wakeup.set_and_wait(sleep_time); while(true) { // never come here but just in case deepsleep();