Protortype
Dependencies: BLE_API mbed nRF51822
Fork of BLE_LED by
main.cpp
- Committer:
- Radoj
- Date:
- 2016-03-09
- Revision:
- 1:a5ae522a022a
- Parent:
- 0:56899988652b
File content as of revision 1:a5ae522a022a:
#include "mbed.h" #include "ble/BLE.h" #include "Service.h" //TUTAJ SA ZMIENNE WYJSCIA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //deklaracja wyjsc DigitalOut led1(LED1, 0); DigitalOut led2(LED2, 0); DigitalOut pin1(P0_1, 0); DigitalOut pin2(P0_2, 0); DigitalOut pin3(P0_3, 0); DigitalOut pin4(P0_4, 0); //TUTAJ JEST ZMIENNA NAZWA URZADZENIA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! const static char DEVICE_NAME[] = "PROTOTYPE"; //nazwa urzadzenia ble static const uint16_t uuid16_list[] = {Service::SERVICE_UUID}; //stworzenie tablicy z uuid serwisu, ktora potem bedziemy rozglaszac Service *ServicePtr; //wskaznik wskazujacy na obiekt klasy Service //gdy urzadzenie rozlaczy sie, od nowa zacznie rozglaszanie void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params) { BLE::Instance().gap().startAdvertising(); } //gdy zostanie zmieniona wartosc charakterystyki wykona sie ta funkcja void onDataWrittenCallback(const GattWriteCallbackParams *params) { //TUTAJ SA ZMINNE FUNKCJE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! if (params->handle == ServicePtr->getValueHandle()) { //gdy zostaje zmieniona charakterystyka 1 pin1 = *(params->data); led1=pin1; } if (params->handle == ServicePtr->getValueHandle2()) { //gdy zostaje zmieniona charakterystyka 2 pin2 = *(params->data); led2=pin2; } if (params->handle == ServicePtr->getValueHandle3()) { //gdy zostaje zmieniona charakterystyka 3 pin3 = *(params->data); } if (params->handle == ServicePtr->getValueHandle4()) { //gdy zostaje zmieniona charakterystyka 4 pin4 = *(params->data); } } void onBleInitError(BLE &ble, ble_error_t error) { //gdy nie uda sie zainicjowac ble } void bleInitComplete(BLE::InitializationCompleteCallbackContext *params) //funkcja po probie zainicjowania ble { BLE& ble = params->ble; ble_error_t error = params->error; if (error != BLE_ERROR_NONE) { //jezeli byl blad to odwoluje do funkcji onBleInitError onBleInitError(ble, error); return; } ble.gap().onDisconnection(disconnectionCallback); //przy rozlaczeniu urzadzenia odwoluje sie do funkcji disconnectionCallback ble.gattServer().onDataWritten(onDataWrittenCallback); //przy zmianie charakterystyk przez ble odwoluje sie do funkcji onDataWrittenCallback //TUTAJ JEST ZMIENNA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! bool initialValueForCharacteristic = false; //domyslna wartosc charaterystyk ServicePtr = new Service(ble, initialValueForCharacteristic); //stworzenie obiektu klasy Service /* ustawienie rozgloszenia ble */ ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list)); //rozglaszanie tablicy uuid16_list z uuid serwisu ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); //rozglaszanie nazwy uzadzenia ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); //bedzie mozliwosc polaczenia sie z urzadzeniem ble.gap().setAdvertisingInterval(100); //interwal miedzy rozgloszeniami ble.gap().startAdvertising(); } int main(void) { BLE &ble = BLE::Instance(); //przypisanie instancji BLE do wskaznika ble ble.init(bleInitComplete); //po probie inicjalizacji ble while (ble.hasInitialized() == false) { /* dopoki ble nie zainicjalizowalo sie czekamy w nieskonczonej petli */ } while (true) { ble.waitForEvent(); //czekamy na jakiekolwiek wydarzenie zwiazane z ble } }