Protortype
Dependencies: BLE_API mbed nRF51822
Fork of BLE_LED by
Revision 1:a5ae522a022a, committed 2016-03-09
- Comitter:
- Radoj
- Date:
- Wed Mar 09 17:54:24 2016 +0000
- Parent:
- 0:56899988652b
- Commit message:
- Prototype
Changed in this revision
diff -r 56899988652b -r a5ae522a022a LEDService.h --- a/LEDService.h Mon Mar 07 11:23:36 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __BLE_LED_SERVICE_H__ -#define __BLE_LED_SERVICE_H__ - -class LEDService { -public: - const static uint16_t LED_SERVICE_UUID = 0xA000; - const static uint16_t LED_STATE_CHARACTERISTIC_UUID = 0xA001; - const static uint16_t LED2_SERVICE_UUID = 0xA002; - const static uint16_t LED2_STATE_CHARACTERISTIC_UUID= 0xA003; - - LEDService(BLEDevice &_ble, bool initialValueForLEDCharacteristic) : - ble(_ble), ledState(LED_STATE_CHARACTERISTIC_UUID, &initialValueForLEDCharacteristic), led2State(LED2_STATE_CHARACTERISTIC_UUID, &initialValueForLEDCharacteristic) - { - GattCharacteristic *charTable[] = {&ledState}; - GattService ledService(LED_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); - ble.addService(ledService); - GattCharacteristic *charTable2[] = {&led2State}; - GattService ledService2(LED2_SERVICE_UUID, charTable2, sizeof(charTable2) / sizeof(GattCharacteristic *)); - ble.addService(ledService2); - } - - GattAttribute::Handle_t getValueHandle() const { - return ledState.getValueHandle(); - } - - GattAttribute::Handle_t getValueHandle2() const { - return led2State.getValueHandle(); - } - -private: - BLEDevice &ble; - ReadWriteGattCharacteristic<bool> ledState; - ReadWriteGattCharacteristic<bool> led2State; -}; - -#endif /* #ifndef __BLE_LED_SERVICE_H__ */
diff -r 56899988652b -r a5ae522a022a Service.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Service.h Wed Mar 09 17:54:24 2016 +0000 @@ -0,0 +1,61 @@ +#ifndef __BLE_SERVICE_H__ +#define __BLE_SERVICE_H__ + +class Service +{ +public: + + //zmienne uuid do serwisu i charakterystyk + +//TUTAJ SA ZMIENNE UUID!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + const static uint16_t SERVICE_UUID = 0xA000; + const static uint16_t UUID = 0xA001; + const static uint16_t UUID2 = 0xA002; + const static uint16_t UUID3 = 0xA003; + const static uint16_t UUID4 = 0xA004; + + +//TUTAJ JEST ZMIENNY KONSTRUKTOR TWORZACY SERWIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + //konstruktor obiektu Service ze domyslna wartoscia dla charakterystyk + Service(BLEDevice &_ble, bool initialValueForCharacteristic) : + ble(_ble), State(UUID, &initialValueForCharacteristic), State2(UUID2, &initialValueForCharacteristic), State3(UUID3, &initialValueForCharacteristic), State4(UUID4, &initialValueForCharacteristic) { + GattCharacteristic *charTable[] = {&State,&State2,&State3,&State4}; //tablica z charakterystyk + GattService Service(SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); //tworzenie serwisu z uuid serwisu i tablica charakterystyk + ble.addService(Service); //dodawanie serwisu do ble + } + +//TUTAJ SA ZMIENNE FUNKCJE ZWRACAJACE HANDLE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + //funkcja zwracajaca Handle pierwszej charakterystyki + GattAttribute::Handle_t getValueHandle() const { + return State.getValueHandle(); + } + + //funkcja zwracajaca Handle drugiej charakterystki + GattAttribute::Handle_t getValueHandle2() const { + return State2.getValueHandle(); + } + + //funkcja zwracajaca Handle trzeciej charakterystyki + GattAttribute::Handle_t getValueHandle3() const { + return State3.getValueHandle(); + } + + //funkcja zwracajaca Handle czwartej charakterystyki + GattAttribute::Handle_t getValueHandle4() const { + return State4.getValueHandle(); + } + +private: + BLEDevice &ble; //potrzebna zmienna ble +//TUTAJ SA ZMIENNE CHARAKTERYSTYKI + ReadWriteGattCharacteristic<bool> State; //zmienna 1 charakterystyki ReadWrite + ReadWriteGattCharacteristic<bool> State2; //zmienna 2 charakterystyki ReadWrite + ReadWriteGattCharacteristic<bool> State3; //zmienna 3 charakterystyki ReadWrite + ReadWriteGattCharacteristic<bool> State4; //zmienna 4 charakterystyki ReadWrite +}; + +#endif /* #ifndef __BLE_SERVICE_H__ */ + +/* + INSTRUKCJE +*/
diff -r 56899988652b -r a5ae522a022a main.cpp --- a/main.cpp Mon Mar 07 11:23:36 2016 +0000 +++ b/main.cpp Wed Mar 09 17:54:24 2016 +0000 @@ -1,123 +1,96 @@ -/* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - #include "mbed.h" #include "ble/BLE.h" -#include "LEDService.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); - -const static char DEVICE_NAME[] = "LED"; -static const uint16_t uuid16_list[] = {LEDService::LED_SERVICE_UUID}; +DigitalOut pin3(P0_3, 0); +DigitalOut pin4(P0_4, 0); -LEDService *ledServicePtr; +//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 -Ticker ticker; +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(); } -void periodicCallback(void) +//gdy zostanie zmieniona wartosc charakterystyki wykona sie ta funkcja +void onDataWrittenCallback(const GattWriteCallbackParams *params) { - //led1 = !led1; /* Do blinky on LED1 to indicate system aliveness. */ -} - -/** - * This callback allows the LEDService to receive updates to the ledState Characteristic. - * - * @param[in] params - * Information about the characterisitc being updated. - */ -void onDataWrittenCallback(const GattWriteCallbackParams *params) { - if ((params->handle == ledServicePtr->getValueHandle()) && (params->len == 1)) { - //printf("led1"); + +//TUTAJ SA ZMINNE FUNKCJE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + if (params->handle == ServicePtr->getValueHandle()) { //gdy zostaje zmieniona charakterystyka 1 pin1 = *(params->data); led1=pin1; } - if ((params->handle == ledServicePtr->getValueHandle2()) && (params->len == 1)) { - //printf("led2"); + if (params->handle == ServicePtr->getValueHandle2()) { //gdy zostaje zmieniona charakterystyka 2 pin2 = *(params->data); - if(pin2==1){ - led2=1; - } - else{ - led2=0; - } + 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); } } -/** - * This function is called when the ble initialization process has failed - */ void onBleInitError(BLE &ble, ble_error_t error) { - /* Initialization error handling should go here */ + //gdy nie uda sie zainicjowac ble + } -/** - * Callback triggered when the ble initialization process has finished - */ -void bleInitComplete(BLE::InitializationCompleteCallbackContext *params) + +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) { - /* In case of error, forward the error handling to onBleInitError */ + if (error != BLE_ERROR_NONE) { //jezeli byl blad to odwoluje do funkcji onBleInitError onBleInitError(ble, error); return; } - /* Ensure that it is the default instance of BLE */ - if(ble.getInstanceID() != BLE::DEFAULT_INSTANCE) { - return; - } - - ble.gap().onDisconnection(disconnectionCallback); - ble.gattServer().onDataWritten(onDataWrittenCallback); + 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 - bool initialValueForLEDCharacteristic = false; - ledServicePtr = new LEDService(ble, initialValueForLEDCharacteristic); - - /* setup advertising */ + /* 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)); - ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); - ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); - ble.gap().setAdvertisingInterval(1000); /* 1000ms. */ + 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) { - //ticker.attach(periodicCallback, 1); /* Blink LED every second */ + + BLE &ble = BLE::Instance(); //przypisanie instancji BLE do wskaznika ble + ble.init(bleInitComplete); //po probie inicjalizacji ble - BLE &ble = BLE::Instance(); - ble.init(bleInitComplete); - - /* SpinWait for initialization to complete. This is necessary because the - * BLE object is used in the main loop below. */ - while (ble.hasInitialized() == false) { /* spin loop */ } + while (ble.hasInitialized() == false) { + /* dopoki ble nie zainicjalizowalo sie czekamy w nieskonczonej petli */ + } while (true) { - ble.waitForEvent(); + ble.waitForEvent(); //czekamy na jakiekolwiek wydarzenie zwiazane z ble } }