Protortype

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_LED by Praktyki

Committer:
Radoj
Date:
Wed Mar 09 17:54:24 2016 +0000
Revision:
1:a5ae522a022a
Parent:
0:56899988652b
Prototype

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Gulio 0:56899988652b 1 #include "mbed.h"
Gulio 0:56899988652b 2 #include "ble/BLE.h"
Radoj 1:a5ae522a022a 3 #include "Service.h"
Gulio 0:56899988652b 4
Radoj 1:a5ae522a022a 5 //TUTAJ SA ZMIENNE WYJSCIA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Radoj 1:a5ae522a022a 6
Radoj 1:a5ae522a022a 7 //deklaracja wyjsc
Gulio 0:56899988652b 8 DigitalOut led1(LED1, 0);
Gulio 0:56899988652b 9 DigitalOut led2(LED2, 0);
Gulio 0:56899988652b 10 DigitalOut pin1(P0_1, 0);
Gulio 0:56899988652b 11 DigitalOut pin2(P0_2, 0);
Radoj 1:a5ae522a022a 12 DigitalOut pin3(P0_3, 0);
Radoj 1:a5ae522a022a 13 DigitalOut pin4(P0_4, 0);
Gulio 0:56899988652b 14
Radoj 1:a5ae522a022a 15 //TUTAJ JEST ZMIENNA NAZWA URZADZENIA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Radoj 1:a5ae522a022a 16 const static char DEVICE_NAME[] = "PROTOTYPE"; //nazwa urzadzenia ble
Radoj 1:a5ae522a022a 17 static const uint16_t uuid16_list[] = {Service::SERVICE_UUID}; //stworzenie tablicy z uuid serwisu, ktora potem bedziemy rozglaszac
Gulio 0:56899988652b 18
Radoj 1:a5ae522a022a 19 Service *ServicePtr; //wskaznik wskazujacy na obiekt klasy Service
Gulio 0:56899988652b 20
Radoj 1:a5ae522a022a 21 //gdy urzadzenie rozlaczy sie, od nowa zacznie rozglaszanie
Gulio 0:56899988652b 22 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
Gulio 0:56899988652b 23 {
Gulio 0:56899988652b 24 BLE::Instance().gap().startAdvertising();
Gulio 0:56899988652b 25 }
Gulio 0:56899988652b 26
Radoj 1:a5ae522a022a 27 //gdy zostanie zmieniona wartosc charakterystyki wykona sie ta funkcja
Radoj 1:a5ae522a022a 28 void onDataWrittenCallback(const GattWriteCallbackParams *params)
Gulio 0:56899988652b 29 {
Radoj 1:a5ae522a022a 30
Radoj 1:a5ae522a022a 31 //TUTAJ SA ZMINNE FUNKCJE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Radoj 1:a5ae522a022a 32 if (params->handle == ServicePtr->getValueHandle()) { //gdy zostaje zmieniona charakterystyka 1
Gulio 0:56899988652b 33 pin1 = *(params->data);
Gulio 0:56899988652b 34 led1=pin1;
Gulio 0:56899988652b 35 }
Radoj 1:a5ae522a022a 36 if (params->handle == ServicePtr->getValueHandle2()) { //gdy zostaje zmieniona charakterystyka 2
Gulio 0:56899988652b 37 pin2 = *(params->data);
Radoj 1:a5ae522a022a 38 led2=pin2;
Radoj 1:a5ae522a022a 39 }
Radoj 1:a5ae522a022a 40
Radoj 1:a5ae522a022a 41 if (params->handle == ServicePtr->getValueHandle3()) { //gdy zostaje zmieniona charakterystyka 3
Radoj 1:a5ae522a022a 42 pin3 = *(params->data);
Radoj 1:a5ae522a022a 43 }
Radoj 1:a5ae522a022a 44
Radoj 1:a5ae522a022a 45 if (params->handle == ServicePtr->getValueHandle4()) { //gdy zostaje zmieniona charakterystyka 4
Radoj 1:a5ae522a022a 46 pin4 = *(params->data);
Gulio 0:56899988652b 47 }
Gulio 0:56899988652b 48 }
Gulio 0:56899988652b 49
Gulio 0:56899988652b 50 void onBleInitError(BLE &ble, ble_error_t error)
Gulio 0:56899988652b 51 {
Radoj 1:a5ae522a022a 52 //gdy nie uda sie zainicjowac ble
Radoj 1:a5ae522a022a 53
Gulio 0:56899988652b 54 }
Gulio 0:56899988652b 55
Radoj 1:a5ae522a022a 56
Radoj 1:a5ae522a022a 57 void bleInitComplete(BLE::InitializationCompleteCallbackContext *params) //funkcja po probie zainicjowania ble
Gulio 0:56899988652b 58 {
Gulio 0:56899988652b 59 BLE& ble = params->ble;
Gulio 0:56899988652b 60 ble_error_t error = params->error;
Gulio 0:56899988652b 61
Radoj 1:a5ae522a022a 62 if (error != BLE_ERROR_NONE) { //jezeli byl blad to odwoluje do funkcji onBleInitError
Gulio 0:56899988652b 63 onBleInitError(ble, error);
Gulio 0:56899988652b 64 return;
Gulio 0:56899988652b 65 }
Gulio 0:56899988652b 66
Radoj 1:a5ae522a022a 67 ble.gap().onDisconnection(disconnectionCallback); //przy rozlaczeniu urzadzenia odwoluje sie do funkcji disconnectionCallback
Radoj 1:a5ae522a022a 68 ble.gattServer().onDataWritten(onDataWrittenCallback); //przy zmianie charakterystyk przez ble odwoluje sie do funkcji onDataWrittenCallback
Radoj 1:a5ae522a022a 69
Radoj 1:a5ae522a022a 70 //TUTAJ JEST ZMIENNA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Radoj 1:a5ae522a022a 71 bool initialValueForCharacteristic = false; //domyslna wartosc charaterystyk
Radoj 1:a5ae522a022a 72 ServicePtr = new Service(ble, initialValueForCharacteristic); //stworzenie obiektu klasy Service
Gulio 0:56899988652b 73
Radoj 1:a5ae522a022a 74 /* ustawienie rozgloszenia ble */
Gulio 0:56899988652b 75 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
Radoj 1:a5ae522a022a 76 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list)); //rozglaszanie tablicy uuid16_list z uuid serwisu
Radoj 1:a5ae522a022a 77 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); //rozglaszanie nazwy uzadzenia
Radoj 1:a5ae522a022a 78 ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); //bedzie mozliwosc polaczenia sie z urzadzeniem
Radoj 1:a5ae522a022a 79 ble.gap().setAdvertisingInterval(100); //interwal miedzy rozgloszeniami
Gulio 0:56899988652b 80 ble.gap().startAdvertising();
Gulio 0:56899988652b 81 }
Gulio 0:56899988652b 82
Gulio 0:56899988652b 83 int main(void)
Gulio 0:56899988652b 84 {
Radoj 1:a5ae522a022a 85
Radoj 1:a5ae522a022a 86 BLE &ble = BLE::Instance(); //przypisanie instancji BLE do wskaznika ble
Radoj 1:a5ae522a022a 87 ble.init(bleInitComplete); //po probie inicjalizacji ble
Gulio 0:56899988652b 88
Radoj 1:a5ae522a022a 89 while (ble.hasInitialized() == false) {
Radoj 1:a5ae522a022a 90 /* dopoki ble nie zainicjalizowalo sie czekamy w nieskonczonej petli */
Radoj 1:a5ae522a022a 91 }
Gulio 0:56899988652b 92
Gulio 0:56899988652b 93 while (true) {
Radoj 1:a5ae522a022a 94 ble.waitForEvent(); //czekamy na jakiekolwiek wydarzenie zwiazane z ble
Gulio 0:56899988652b 95 }
Gulio 0:56899988652b 96 }