Uart serie example, loopback
Dependencies: mbed BLE_API nRF51822
Revision 0:5b60e4b36aea, committed 2020-06-09
- Comitter:
- CamiloRuiz
- Date:
- Tue Jun 09 13:10:59 2020 +0000
- Commit message:
- Uart ble serial example
Changed in this revision
diff -r 000000000000 -r 5b60e4b36aea BLE_API.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BLE_API.lib Tue Jun 09 13:10:59 2020 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#65474dc93927
diff -r 000000000000 -r 5b60e4b36aea main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Jun 09 13:10:59 2020 +0000 @@ -0,0 +1,148 @@ + +#include "mbed.h" +#include "nrf51.h" +#include "nrf51_bitfields.h" + +#include "BLE.h" +#include "UARTService.h" + + +#define LOG(...) { pc.printf(__VA_ARGS__); } + +#define LED_GREEN p21 +#define LED_RED p22 +#define LED_BLUE p23 +#define BUTTON_PIN p17 +#define BATTERY_PIN p1 + +#define MPU6050_SDA p12 +#define MPU6050_SCL p13 + +#define UART_TX p9 +#define UART_RX p11 +#define UART_CTS p8 +#define UART_RTS p10 + + + +DigitalOut blue(LED_BLUE); +DigitalOut green(LED_GREEN); +DigitalOut red(LED_RED); + +InterruptIn button(BUTTON_PIN); +AnalogIn battery(BATTERY_PIN); +Serial pc(UART_TX, UART_RX); + +InterruptIn motion_probe(p14); + +int read_none_count = 0; + +BLEDevice ble; +UARTService *uartServicePtr; + +volatile bool bleIsConnected = false; +volatile uint8_t tick_event = 0; + + + +void check_i2c_bus(void); +unsigned short inv_orientation_matrix_to_scalar( const signed char *mtx); + + +void connectionCallback(const Gap::ConnectionCallbackParams_t *params) +{ + LOG("Connected!\n"); + bleIsConnected = true; +} + +void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *cbParams) +{ + LOG("Disconnected!\n"); + LOG("Restarting the advertising process\n"); + ble.startAdvertising(); + bleIsConnected = false; +} + +void tick(void) +{ + static uint32_t count = 0; + + LOG("%d\r\n", count++); + green = !green; +} +void detect(void) +{ + static uint32_t count = 0; + + LOG("%d\r\n", count++); + blue = !blue; +} +void flush_uart_ble(){ + //envia un \n para forzar el envio del buffer y vaciarlo, en hex 0x0a + char end='\n'; + uartServicePtr->write(&end,1); + } + +void onDataWrittenCallback(const GattWriteCallbackParams *params) {//ocurre cuando llega un dato por bluetooth + if (params->handle == uartServicePtr->getTXCharacteristicHandle()) { + + for (int16_t x=0;x<params->len;x++) + pc.printf("%02X ", params->data[x]); + uartServicePtr->write(params->data,params->len); + flush_uart_ble(); + //uartServicePtr->flush(); + + } +} + + +int main(void) +{ + blue = 1; + green = 1; + red = 1; + + pc.baud(115200); + + wait(1); + + LOG("---- Seeed Tiny BLE ----\n"); + + + Ticker ticker; + ticker.attach(tick, 3); + + button.fall(detect); + + LOG("Initialising the nRF51822\n"); + ble.init(); + ble.gap().onDisconnection(disconnectionCallback); + ble.gap().onConnection(connectionCallback); + ble.onDataWritten(onDataWrittenCallback); + + + /* setup advertising */ + ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED); + ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); + ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME, + (const uint8_t *)"smurfs", sizeof("smurfs")); + ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS, + (const uint8_t *)UARTServiceUUID_reversed, sizeof(UARTServiceUUID_reversed)); + + UARTService uartService(ble); + uartServicePtr = &uartService; + //uartService.retargetStdout(); + + ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */ + ble.gap().startAdvertising(); + + while (true) { + //hacer algo + ble.waitForEvent(); + } +} + + + + +
diff -r 000000000000 -r 5b60e4b36aea mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Jun 09 13:10:59 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file
diff -r 000000000000 -r 5b60e4b36aea nRF51822.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nRF51822.lib Tue Jun 09 13:10:59 2020 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#c90ae1400bf2
diff -r 000000000000 -r 5b60e4b36aea tiny_ble.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tiny_ble.h Tue Jun 09 13:10:59 2020 +0000 @@ -0,0 +1,19 @@ + +#ifndef __TINY_BLE_H__ +#define __TINY_BLE_H__ + +#define LED_GREEN p21 +#define LED_RED p22 +#define LED_BLUE p23 +#define BUTTON_PIN p17 +#define BATTERY_PIN p1 + +#define MPU6050_SDA p12 +#define MPU6050_SCL p13 + +#define UART_TX p9 +#define UART_RX p11 +#define UART_CTS p8 +#define UART_RTS p10 + +#endif // __TINY_BLE_H__