Protortype

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_LED by Praktyki

Revision:
1:a5ae522a022a
Parent:
0:56899988652b
--- 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
     }
 }