Protortype

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_LED by Praktyki

Files at this revision

API Documentation at this revision

Comitter:
Radoj
Date:
Wed Mar 09 17:54:24 2016 +0000
Parent:
0:56899988652b
Commit message:
Prototype

Changed in this revision

LEDService.h Show diff for this revision Revisions of this file
Service.h Show annotated file 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 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
     }
 }