BLE Accel
Dependencies: BLE_API MMA8452Q mbed nRF51822
Fork of AAAatest_copy by
Revision 3:7dc284221369, committed 2016-04-10
- Comitter:
- Radoj
- Date:
- Sun Apr 10 19:05:36 2016 +0000
- Parent:
- 2:e78a5ce9f1d7
- Commit message:
- BLE Accel
Changed in this revision
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 e78a5ce9f1d7 -r 7dc284221369 Service.h --- a/Service.h Sun Apr 10 17:47:09 2016 +0000 +++ b/Service.h Sun Apr 10 19:05:36 2016 +0000 @@ -1,19 +1,3 @@ -/* 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_SERVICE_H__ #define __BLE_SERVICE_H__ @@ -33,113 +17,79 @@ ble.gattServer().addService(Service); } + /* + * Update wartosci charakterystyk + */ + void updateXState(float newState) { - int length = sizeof(float); - uint8_t bytes[sizeof(float)]; - for(int i = 0; i < length; i++){ + uint8_t bytes[sizeof(float)]; //tablica podzielonego float'a + + for(int i = 0; i < length; i++){ bytes[i] = ((uint8_t*)&newState)[i]; - //printf("%x ",bytes[i]); - // printf("%d;",length); - } - - - - int n = sizeof(bytes) / sizeof(bytes[0]); - //printf("%d",sizeof(bytes[0])); - ble.gattServer().write(xState.getValueHandle(), (uint8_t *)&bytes, n); - - - - //uint8_t *p = (uint8_t*)&newState; - - //for (int i = 0; i < sizeof(newState); i++) printf("wwww 0x%02x ", p[i]); - //ble.gattServer().write(xState.getValueHandle(), (uint8_t *)&newState, sizeof(newState)); + } + + int n = sizeof(bytes) / sizeof(bytes[0]); + ble.gattServer().write(xState.getValueHandle(), (uint8_t *)&bytes, n); //zapisanie danych do charakterystyki } void updateYState(float newState) { - //ble.gattServer().write(yState.getValueHandle(), (uint8_t *)&newState, sizeof(newState)); int length = sizeof(float); - uint8_t bytes[sizeof(float)]; - for(int i = 0; i < length; i++){ + + uint8_t bytes[sizeof(float)];//tablica podzielonego float'a + + for(int i = 0; i < length; i++){ bytes[i] = ((uint8_t*)&newState)[i]; - //printf("%x ",bytes[i]); - } - //printf("%d",sizeof(bytes[0])); + } - int n = sizeof(bytes) / sizeof(bytes[0]); - ble.gattServer().write(yState.getValueHandle(), (uint8_t *)&bytes, n); + int n = sizeof(bytes) / sizeof(bytes[0]); + ble.gattServer().write(yState.getValueHandle(), (uint8_t *)&bytes, n); //zapisanie danych do charakterystyki } void updateZState(float newState) { - //ble.gattServer().write(zState.getValueHandle(), (uint8_t *)&newState, sizeof(newState)); int length = sizeof(float); - uint8_t bytes[sizeof(float)]; - for(int i = 0; i < length; i++){ + + uint8_t bytes[sizeof(float)];//tablica podzielonego float'a + + for(int i = 0; i < length; i++){ bytes[i] = ((uint8_t*)&newState)[i]; - //printf("%x ",bytes[i]); - } - //printf("%d",sizeof(bytes[0])); - int n = sizeof(bytes) / sizeof(bytes[0]); - ble.gattServer().write(zState.getValueHandle(), (uint8_t *)&bytes, n); + } + + int n = sizeof(bytes) / sizeof(bytes[0]); + ble.gattServer().write(zState.getValueHandle(), (uint8_t *)&bytes, n); //zapisanie danych do charakterystyki } void updateALLState(float newState,float newStatey,float newStatez) { int length = 14; - uint8_t bytes[14]; - printf("dane: %f;%f;%f\n",newState, newStatey,newStatez); + uint8_t bytes[14]; //tablica podzielonych float'ow /* - for(int i = 0; i < length; i++){ - if(i<=3){ - bytes[i] = ((uint8_t*)&newState)[i]; - printf("X: %x ",bytes[i]); - } - else if(i==4){ - bytes[i] = 0xff; - printf("P: %x ",bytes[i]); - } - else if(i>4&&i<=8){ - bytes[i] = ((uint8_t*)&newStatey)[i]; - printf("Y: %x ",bytes[i]); - } - else if(i==9){ - bytes[i] = 0xff; - printf("P: %x ",bytes[i]); - } - else if(i>9&&i<14){ - bytes[i] = ((uint8_t*)&newStatez)[i]; - printf("Z: %x ",bytes[i]); - } - } - */ + * dzielenie float'ow x y z do tablicy + * mona bylo zrobic forem ;) + */ + + bytes[0] = ((uint8_t*)&newState)[0]; + bytes[1] = ((uint8_t*)&newState)[1]; + bytes[2] = ((uint8_t*)&newState)[2]; + bytes[3] = ((uint8_t*)&newState)[3]; + bytes[4] = 0xff; + bytes[5] = ((uint8_t*)&newStatey)[0]; + bytes[6] = ((uint8_t*)&newStatey)[1]; + bytes[7] = ((uint8_t*)&newStatey)[2]; + bytes[8] = ((uint8_t*)&newStatey)[3]; + bytes[9] = 0xff; + bytes[10] = ((uint8_t*)&newStatez)[0]; + bytes[11] = ((uint8_t*)&newStatez)[1]; + bytes[12] = ((uint8_t*)&newStatez)[2]; + bytes[13] = ((uint8_t*)&newStatez)[3]; - bytes[0] = ((uint8_t*)&newState)[0]; - bytes[1] = ((uint8_t*)&newState)[1]; - bytes[2] = ((uint8_t*)&newState)[2]; - bytes[3] = ((uint8_t*)&newState)[3]; - bytes[4] = 0xff; - bytes[5] = ((uint8_t*)&newStatey)[0]; - bytes[6] = ((uint8_t*)&newStatey)[1]; - bytes[7] = ((uint8_t*)&newStatey)[2]; - bytes[8] = ((uint8_t*)&newStatey)[3]; - bytes[9] = 0xff; - bytes[10] = ((uint8_t*)&newStatez)[0]; - bytes[11] = ((uint8_t*)&newStatez)[1]; - bytes[12] = ((uint8_t*)&newStatez)[2]; - bytes[13] = ((uint8_t*)&newStatez)[3]; - for(int i=0;i<length;i++){ - printf("%x ",bytes[i]); - } - - uint16_t n = sizeof(bytes) / sizeof(bytes[0]); - printf("%d",n); + uint16_t n = sizeof(bytes) / sizeof(bytes[0]); - ble.gattServer().write(allState.getValueHandle(), (uint8_t *)&bytes, n); + ble.gattServer().write(allState.getValueHandle(), (uint8_t *)&bytes, n); //zapisanie danych do charakterystyki } private: @@ -147,7 +97,7 @@ ReadOnlyGattCharacteristic<float> xState; ReadOnlyGattCharacteristic<float> yState; ReadOnlyGattCharacteristic<float> zState; - ReadOnlyGattCharacteristic<float> allState; + ReadOnlyArrayGattCharacteristic<uint8_t, 14> allState; }; #endif /* #ifndef __BLE_BUTTON_SERVICE_H__ */
diff -r e78a5ce9f1d7 -r 7dc284221369 main.cpp --- a/main.cpp Sun Apr 10 17:47:09 2016 +0000 +++ b/main.cpp Sun Apr 10 19:05:36 2016 +0000 @@ -1,47 +1,34 @@ -/* 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 "MMA8452Q.h" #include "Service.h" -MMA8452Q accel(P0_0, P0_1, 0x1D); +MMA8452Q accel(P0_0, P0_1, 0x1D); //deklaracja obiektu akcelerometru (P0_0 -> SDA, P0_1 -> SCL, 0x1D -> ID urzadzenia) Ticker ticker; -float x,y,z; +float x,y,z; //zmienne do których przypisywane są wartosci odczytu x y z z akcelerometru -const static char DEVICE_NAME[] = "BLE_Accel"; +const static char DEVICE_NAME[] = "BLE_Accel"; static const uint16_t uuid16_list[] = {Service::SERVICE_UUID}; static Service *ServicePtr; -void f(){ - //printf("cykabliat\n"); +void f(){ + /* + * Odczyt x y z + */ + x=accel.readX(); + y=accel.readY(); + z=accel.readZ(); - x=accel.readX(); - y=accel.readY(); - z=accel.readZ(); - - ServicePtr->updateXState(x); - ServicePtr->updateYState(y); - ServicePtr->updateZState(z); - ServicePtr->updateALLState(x,y,z); - printf("%f;%f;%f; \r\n",x,y,z); - } + /* + * Update wartosci w charakterystykach x y z i all + */ + ServicePtr->updateXState(x); + ServicePtr->updateYState(y); + ServicePtr->updateZState(z); + ServicePtr->updateALLState(x,y,z); +} void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)