L0_BlueNRG_Test_Client
Dependencies: BLE_API BLE_BlueNRG mbed
Fork of L0_BlueNRG_Test by
main.cpp
- Committer:
- mridup
- Date:
- 2014-07-25
- Revision:
- 1:3b1c20952274
- Parent:
- 0:e0204b0e5541
- Child:
- 2:cf54be3a9e6a
File content as of revision 1:3b1c20952274:
#include "mbed.h" DigitalOut myled(LED1); #include "btle.h" //#include "BlueNRGDevice.h"//User does not use any platform specific header file #include "BLEDevice.h" #include "UUID.h" BLEDevice dev; #define NEED_CONSOLE_OUTPUT 1 /* Set this if you need debug messages on the console; * it will have an impact on code-size and power consumption. */ #if NEED_CONSOLE_OUTPUT Serial pc(USBTX, USBRX); #define DEBUG(...) { pc.printf(__VA_ARGS__); } #else #define DEBUG(...) /* nothing */ #endif /* #if NEED_CONSOLE_OUTPUT */ const static char DEVICE_NAME[] = "STBLUE_NRG"; const uint8_t device_address[6] = { 0x12, 0x34, 0x00, 0xe1, 0x80, 0x02 }; //Peripheral address void Append128bitUUID(uint8_t *uuid128_list, const LongUUID_t HRM_SERVICE_UUID_128); void print_array(uint8_t *array); /*********128 bit UUIDs. Not defined in GattCharacteristic.h and GattService.h*************/ #define MAX_SERVICES_NOS 1 //typedef uint8_t UUID_128_BIT[16]; const LongUUID_t HEART_RATE_CHAR_UUID_128 = {0x42,0x82,0x1a,0x40, 0xe4,0x77, 0x11,0xe2, 0x82,0xd0, 0x00,0x02,0xa5,0xd5,0xc5,0x1a}; const LongUUID_t HRM_SERVICE_UUID_128 = {0x42,0x82,0x1a,0x40, 0xe4,0x77, 0x11,0xe2, 0x82,0xd0, 0x00,0x02,0xa5,0xd5,0xc5,0x1b}; uint8_t UUID_Count=0; void onConnectionCallback(void) { myled = 1; // LED is ON DEBUG("Connected BlueNRG!!"); } void Append128bitUUID(uint8_t *array, const LongUUID_t SERVICE_UUID_128) { for(int x=0;x<16; x++) { array[x+UUID_Count*16]=SERVICE_UUID_128[x]; } UUID_Count++; return; } int main() { Ticker ticker; //For Tick interrupt if used later on (periodic data updates?) //LongUUID_t HEART_RATE_CHAR_UUID_128, HRM_SERVICE_UUID_128; //COPY_HRM_SERVICE_UUID(HRM_SERVICE_UUID_128); //COPY_HRM_CHAR_UUID(HEART_RATE_CHAR_UUID_128); UUID heart_rate_char_UUID = UUID(HEART_RATE_CHAR_UUID_128); UUID hrm_service_UUID = UUID(HRM_SERVICE_UUID_128); myled = 0;//Switch OFF LED1 DEBUG("Initializing BlueNRG..."); dev.init(); dev.onConnection(onConnectionCallback); //TODO. //dev.setAddress(Gap::ADDR_TYPE_PUBLIC, device_address);//Does not work after gap/gatt init. //TODO. static uint8_t hrmCounter = 100; static uint8_t bpm[2] = {0x00, hrmCounter}; GattCharacteristic hrmRate(GattCharacteristic::UUID_HEART_RATE_MEASUREMENT_CHAR, bpm, sizeof(bpm), sizeof(bpm), GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY); GattCharacteristic *hrmChars[] = {&hrmRate }; GattService hrmService(GattService::UUID_HEART_RATE_SERVICE, hrmChars, sizeof(hrmChars) / sizeof(GattCharacteristic *)); uint8_t uuid128_list[16*MAX_SERVICES_NOS];// = {HRM_SERVICE_UUID_128[0], HRM_SERVICE_UUID_128[1]}; static const uint16_t uuid16_list[] = {GattService::UUID_HEART_RATE_SERVICE}; //Append128bitUUID(uuid128_list, HRM_SERVICE_UUID_128); /* setup advertising */ dev.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); //TODO:IMP STUFF: 128bit list is basically a uint8_t list. User should know how many services he supports and define the number in MAX_SERVICES_NOS dev.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t*)uuid16_list, sizeof(uuid16_list)); dev.accumulateAdvertisingPayload(GapAdvertisingData::HEART_RATE_SENSOR_HEART_RATE_BELT); dev.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); dev.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); dev.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */ DEBUG("Starting Advertising..."); dev.startAdvertising(); dev.addService(hrmService); while(1) { //myled = 1; // LED is ON //wait(0.5); // 500 ms //myled = 0; // LED is OFF //wait(0.5); // 500 ms //DEBUG("Testing BlueNRG!!"); dev.waitForEvent(); } }