Protortype
Dependencies: BLE_API mbed nRF51822
Fork of BLE_LED by
main.cpp@1:a5ae522a022a, 2016-03-09 (annotated)
- Committer:
- Radoj
- Date:
- Wed Mar 09 17:54:24 2016 +0000
- Revision:
- 1:a5ae522a022a
- Parent:
- 0:56899988652b
Prototype
Who changed what in which revision?
User | Revision | Line number | New 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 | } |