サイコン用プログラム BLE通信送信確認

Dependencies:   mbed BLE_API nRF51822

Committer:
mbed_tw_hoehoe
Date:
Mon Jan 05 09:58:42 2015 +0000
Revision:
0:2fa085b36ad8
Child:
2:bbf9db7db756
commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_tw_hoehoe 0:2fa085b36ad8 1 #include "mbed.h"
mbed_tw_hoehoe 0:2fa085b36ad8 2 #include "BLEDevice.h"
mbed_tw_hoehoe 0:2fa085b36ad8 3 #include "MPU6050.h"
mbed_tw_hoehoe 0:2fa085b36ad8 4
mbed_tw_hoehoe 0:2fa085b36ad8 5 /*
mbed_tw_hoehoe 0:2fa085b36ad8 6 #define DBG 1
mbed_tw_hoehoe 0:2fa085b36ad8 7 #define NEED_CONSOLE_OUTPUT 1 // Set this if you need debug messages on the console;
mbed_tw_hoehoe 0:2fa085b36ad8 8 // it will have an impact on code-size and power consumption.
mbed_tw_hoehoe 0:2fa085b36ad8 9
mbed_tw_hoehoe 0:2fa085b36ad8 10 #if NEED_CONSOLE_OUTPUT
mbed_tw_hoehoe 0:2fa085b36ad8 11 Serial pc(USBTX, USBRX);
mbed_tw_hoehoe 0:2fa085b36ad8 12 #define DEBUG(...) { pc.printf(__VA_ARGS__); }
mbed_tw_hoehoe 0:2fa085b36ad8 13 #else
mbed_tw_hoehoe 0:2fa085b36ad8 14 #define DEBUG(...) // nothing //
mbed_tw_hoehoe 0:2fa085b36ad8 15 #endif // #if NEED_CONSOLE_OUTPUT //
mbed_tw_hoehoe 0:2fa085b36ad8 16 */
mbed_tw_hoehoe 0:2fa085b36ad8 17
mbed_tw_hoehoe 0:2fa085b36ad8 18 BLEDevice ble;
mbed_tw_hoehoe 0:2fa085b36ad8 19
mbed_tw_hoehoe 0:2fa085b36ad8 20 MPU6050 mpu(I2C_SDA0, I2C_SCL0);
mbed_tw_hoehoe 0:2fa085b36ad8 21
mbed_tw_hoehoe 0:2fa085b36ad8 22 static const char DEVICENAME[] = "BLE-Nano";
mbed_tw_hoehoe 0:2fa085b36ad8 23 static volatile bool triggerSensorPolling = false;
mbed_tw_hoehoe 0:2fa085b36ad8 24
mbed_tw_hoehoe 0:2fa085b36ad8 25 //9FDF3283-9049-CF8D-5C4D-98E7E2002731
mbed_tw_hoehoe 0:2fa085b36ad8 26 const uint8_t MPU6050_adv_service_uuid[] = {
mbed_tw_hoehoe 0:2fa085b36ad8 27 0x9F,0xDF,0x32,0x83,
mbed_tw_hoehoe 0:2fa085b36ad8 28 0x90,0x49,
mbed_tw_hoehoe 0:2fa085b36ad8 29 0xCF,0x8D,
mbed_tw_hoehoe 0:2fa085b36ad8 30 0x5C,0x4D,
mbed_tw_hoehoe 0:2fa085b36ad8 31 0x98,0xE7,0xE2,0x00,0x27,0x31
mbed_tw_hoehoe 0:2fa085b36ad8 32 };
mbed_tw_hoehoe 0:2fa085b36ad8 33
mbed_tw_hoehoe 0:2fa085b36ad8 34 const uint8_t MPU6050_service_uuid[] = {
mbed_tw_hoehoe 0:2fa085b36ad8 35 0x31,0x27,0x00,0xE2,0xE7,0x98,0x4D,0x5C,0x8D,0xCF,0x49,0x90,0x83,0x32,0xDF,0x9F
mbed_tw_hoehoe 0:2fa085b36ad8 36 };
mbed_tw_hoehoe 0:2fa085b36ad8 37
mbed_tw_hoehoe 0:2fa085b36ad8 38 const uint8_t MPU6050_Accel_Characteristic_uuid[] = {
mbed_tw_hoehoe 0:2fa085b36ad8 39 0xFF,0xA2,0x8C,0xDE,0x65,0x25,
mbed_tw_hoehoe 0:2fa085b36ad8 40 0x44,0x89,
mbed_tw_hoehoe 0:2fa085b36ad8 41 0x80,0x1C,
mbed_tw_hoehoe 0:2fa085b36ad8 42 0x1C,0x06,0x0C,0xAC,0x97,0x67
mbed_tw_hoehoe 0:2fa085b36ad8 43 };
mbed_tw_hoehoe 0:2fa085b36ad8 44
mbed_tw_hoehoe 0:2fa085b36ad8 45 const uint8_t MPU6050_Gyro_Characteristic_uuid[] = {
mbed_tw_hoehoe 0:2fa085b36ad8 46 0x65, 0x60, 0xBE, 0x95,0xD9, 0x31,
mbed_tw_hoehoe 0:2fa085b36ad8 47 0x4F, 0x64,
mbed_tw_hoehoe 0:2fa085b36ad8 48 0x95, 0x75,
mbed_tw_hoehoe 0:2fa085b36ad8 49 0xC6, 0xDD, 0xB5, 0xAE, 0x7F, 0xA5
mbed_tw_hoehoe 0:2fa085b36ad8 50 };
mbed_tw_hoehoe 0:2fa085b36ad8 51
mbed_tw_hoehoe 0:2fa085b36ad8 52 uint8_t accelPayload[sizeof(float)*3] = {0,0,0};
mbed_tw_hoehoe 0:2fa085b36ad8 53 uint8_t gyroPayload[sizeof(float)*3] = {0,0,0};
mbed_tw_hoehoe 0:2fa085b36ad8 54 uint8_t tempPayload[sizeof(float)*1] = {0};
mbed_tw_hoehoe 0:2fa085b36ad8 55 uint8_t batt = 100; /* Battery level */
mbed_tw_hoehoe 0:2fa085b36ad8 56 uint8_t read_batt = 0; /* Variable to hold battery level reads */
mbed_tw_hoehoe 0:2fa085b36ad8 57
mbed_tw_hoehoe 0:2fa085b36ad8 58 GattCharacteristic accelChar (MPU6050_Accel_Characteristic_uuid,
mbed_tw_hoehoe 0:2fa085b36ad8 59 accelPayload, (sizeof(float) * 3), (sizeof(float) * 3),
mbed_tw_hoehoe 0:2fa085b36ad8 60 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ);
mbed_tw_hoehoe 0:2fa085b36ad8 61
mbed_tw_hoehoe 0:2fa085b36ad8 62 GattCharacteristic gyroChar (MPU6050_Gyro_Characteristic_uuid,
mbed_tw_hoehoe 0:2fa085b36ad8 63 gyroPayload, (sizeof(float) * 3), (sizeof(float) * 3),
mbed_tw_hoehoe 0:2fa085b36ad8 64 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ);
mbed_tw_hoehoe 0:2fa085b36ad8 65
mbed_tw_hoehoe 0:2fa085b36ad8 66 GattCharacteristic *ControllerChars[] = { &accelChar, &gyroChar, };
mbed_tw_hoehoe 0:2fa085b36ad8 67 GattService MPU6050Service(MPU6050_service_uuid, ControllerChars, sizeof(ControllerChars) / sizeof(GattCharacteristic *));
mbed_tw_hoehoe 0:2fa085b36ad8 68
mbed_tw_hoehoe 0:2fa085b36ad8 69
mbed_tw_hoehoe 0:2fa085b36ad8 70 GattCharacteristic tempChar (GattCharacteristic::UUID_TEMPERATURE_MEASUREMENT_CHAR,
mbed_tw_hoehoe 0:2fa085b36ad8 71 tempPayload, (sizeof(float) * 1), (sizeof(float) * 1),
mbed_tw_hoehoe 0:2fa085b36ad8 72 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ);
mbed_tw_hoehoe 0:2fa085b36ad8 73
mbed_tw_hoehoe 0:2fa085b36ad8 74 GattCharacteristic *htmChars[] = { &tempChar, };
mbed_tw_hoehoe 0:2fa085b36ad8 75 GattService htmService(GattService::UUID_HEALTH_THERMOMETER_SERVICE, htmChars,
mbed_tw_hoehoe 0:2fa085b36ad8 76 sizeof(htmChars) / sizeof(GattCharacteristic *));
mbed_tw_hoehoe 0:2fa085b36ad8 77
mbed_tw_hoehoe 0:2fa085b36ad8 78 /* Battery Level Service */
mbed_tw_hoehoe 0:2fa085b36ad8 79
mbed_tw_hoehoe 0:2fa085b36ad8 80 GattCharacteristic battLevel ( GattCharacteristic::UUID_BATTERY_LEVEL_CHAR,
mbed_tw_hoehoe 0:2fa085b36ad8 81 (uint8_t *)batt, 1, 1,
mbed_tw_hoehoe 0:2fa085b36ad8 82 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ);
mbed_tw_hoehoe 0:2fa085b36ad8 83
mbed_tw_hoehoe 0:2fa085b36ad8 84 GattCharacteristic *battChars[] = {&battLevel, };
mbed_tw_hoehoe 0:2fa085b36ad8 85 GattService battService(GattService::UUID_BATTERY_SERVICE, battChars,
mbed_tw_hoehoe 0:2fa085b36ad8 86 sizeof(battChars) / sizeof(GattCharacteristic *));
mbed_tw_hoehoe 0:2fa085b36ad8 87
mbed_tw_hoehoe 0:2fa085b36ad8 88 uint16_t uuid16_list[] = {GattService::UUID_HEALTH_THERMOMETER_SERVICE,
mbed_tw_hoehoe 0:2fa085b36ad8 89 GattService::UUID_BATTERY_SERVICE};
mbed_tw_hoehoe 0:2fa085b36ad8 90
mbed_tw_hoehoe 0:2fa085b36ad8 91
mbed_tw_hoehoe 0:2fa085b36ad8 92 void updateValue();
mbed_tw_hoehoe 0:2fa085b36ad8 93
mbed_tw_hoehoe 0:2fa085b36ad8 94 void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason) // Mod
mbed_tw_hoehoe 0:2fa085b36ad8 95 {
mbed_tw_hoehoe 0:2fa085b36ad8 96
mbed_tw_hoehoe 0:2fa085b36ad8 97 //DEBUG("Disconnected handle %u, reason %u\n", handle, reason);
mbed_tw_hoehoe 0:2fa085b36ad8 98 //DEBUG("Restarting the advertising process\n\r");
mbed_tw_hoehoe 0:2fa085b36ad8 99
mbed_tw_hoehoe 0:2fa085b36ad8 100 ble.startAdvertising();
mbed_tw_hoehoe 0:2fa085b36ad8 101 }
mbed_tw_hoehoe 0:2fa085b36ad8 102
mbed_tw_hoehoe 0:2fa085b36ad8 103 void onConnectionCallback(Gap::Handle_t handle, Gap::addr_type_t peerAddrType, const Gap::address_t peerAddr, const Gap::ConnectionParams_t *params) //Mod
mbed_tw_hoehoe 0:2fa085b36ad8 104 {
mbed_tw_hoehoe 0:2fa085b36ad8 105
mbed_tw_hoehoe 0:2fa085b36ad8 106 //DEBUG("connected. Got handle %u\r\n", handle);
mbed_tw_hoehoe 0:2fa085b36ad8 107
mbed_tw_hoehoe 0:2fa085b36ad8 108 /*******************************************************************************/
mbed_tw_hoehoe 0:2fa085b36ad8 109 /* CentralがMacOS X の時 connection intervalを設定する場合は */
mbed_tw_hoehoe 0:2fa085b36ad8 110 /* nRF51822 -> projectconfig.h -> GAP -> */
mbed_tw_hoehoe 0:2fa085b36ad8 111 /* CFG_GAP_CONNECTION_MIN_INTERVAL_MS / CFG_GAP_CONNECTION_MAX_INTERVAL_MSを */
mbed_tw_hoehoe 0:2fa085b36ad8 112 /* 直接編集すること */
mbed_tw_hoehoe 0:2fa085b36ad8 113 /******************************************************************************/
mbed_tw_hoehoe 0:2fa085b36ad8 114
mbed_tw_hoehoe 0:2fa085b36ad8 115 #define MIN_CONN_INTERVAL 1000 /**< Minimum connection interval (250 ms) */
mbed_tw_hoehoe 0:2fa085b36ad8 116 #define MAX_CONN_INTERVAL 1000 /**< Maximum connection interval (350 ms). */
mbed_tw_hoehoe 0:2fa085b36ad8 117 #define CONN_SUP_TIMEOUT 6000 /**< Connection supervisory timeout (6 seconds). */
mbed_tw_hoehoe 0:2fa085b36ad8 118 #define SLAVE_LATENCY 4
mbed_tw_hoehoe 0:2fa085b36ad8 119
mbed_tw_hoehoe 0:2fa085b36ad8 120 Gap::ConnectionParams_t gap_conn_params;
mbed_tw_hoehoe 0:2fa085b36ad8 121 gap_conn_params.minConnectionInterval = Gap::MSEC_TO_GAP_DURATION_UNITS(MIN_CONN_INTERVAL);
mbed_tw_hoehoe 0:2fa085b36ad8 122 gap_conn_params.maxConnectionInterval = Gap::MSEC_TO_GAP_DURATION_UNITS(MAX_CONN_INTERVAL);
mbed_tw_hoehoe 0:2fa085b36ad8 123 gap_conn_params.connectionSupervisionTimeout = Gap::MSEC_TO_GAP_DURATION_UNITS(CONN_SUP_TIMEOUT);
mbed_tw_hoehoe 0:2fa085b36ad8 124 gap_conn_params.slaveLatency = SLAVE_LATENCY;
mbed_tw_hoehoe 0:2fa085b36ad8 125 ble.updateConnectionParams(handle, &gap_conn_params);
mbed_tw_hoehoe 0:2fa085b36ad8 126 //if (ble.updateConnectionParams(handle, &gap_conn_params) != BLE_ERROR_NONE) {
mbed_tw_hoehoe 0:2fa085b36ad8 127 // DEBUG("failed to update connection paramter\r\n");
mbed_tw_hoehoe 0:2fa085b36ad8 128 //}
mbed_tw_hoehoe 0:2fa085b36ad8 129
mbed_tw_hoehoe 0:2fa085b36ad8 130 updateValue();
mbed_tw_hoehoe 0:2fa085b36ad8 131 }
mbed_tw_hoehoe 0:2fa085b36ad8 132
mbed_tw_hoehoe 0:2fa085b36ad8 133 void timeoutCallback(void)
mbed_tw_hoehoe 0:2fa085b36ad8 134 {
mbed_tw_hoehoe 0:2fa085b36ad8 135 //DEBUG("TimeOut\n\r");
mbed_tw_hoehoe 0:2fa085b36ad8 136 //DEBUG("Restarting the advertising process\n\r");
mbed_tw_hoehoe 0:2fa085b36ad8 137
mbed_tw_hoehoe 0:2fa085b36ad8 138 ble.startAdvertising();
mbed_tw_hoehoe 0:2fa085b36ad8 139 }
mbed_tw_hoehoe 0:2fa085b36ad8 140
mbed_tw_hoehoe 0:2fa085b36ad8 141 void periodicCallback(void)
mbed_tw_hoehoe 0:2fa085b36ad8 142 {
mbed_tw_hoehoe 0:2fa085b36ad8 143 //oneSecondLed = !oneSecondLed; /* Do blinky on LED1 while we're waiting for BLE events */
mbed_tw_hoehoe 0:2fa085b36ad8 144
mbed_tw_hoehoe 0:2fa085b36ad8 145 /* Note that the periodicCallback() executes in interrupt context, so it is safer to do
mbed_tw_hoehoe 0:2fa085b36ad8 146 * heavy-weight sensor polling from the main thread. */
mbed_tw_hoehoe 0:2fa085b36ad8 147 triggerSensorPolling = true;
mbed_tw_hoehoe 0:2fa085b36ad8 148 }
mbed_tw_hoehoe 0:2fa085b36ad8 149
mbed_tw_hoehoe 0:2fa085b36ad8 150 /**************************************************************************/
mbed_tw_hoehoe 0:2fa085b36ad8 151 /*!
mbed_tw_hoehoe 0:2fa085b36ad8 152 @brief Program entry point
mbed_tw_hoehoe 0:2fa085b36ad8 153 */
mbed_tw_hoehoe 0:2fa085b36ad8 154 /**************************************************************************/
mbed_tw_hoehoe 0:2fa085b36ad8 155 int main(void)
mbed_tw_hoehoe 0:2fa085b36ad8 156 {
mbed_tw_hoehoe 0:2fa085b36ad8 157
mbed_tw_hoehoe 0:2fa085b36ad8 158 //#if DBG
mbed_tw_hoehoe 0:2fa085b36ad8 159 // pc.printf("Start\n\r");
mbed_tw_hoehoe 0:2fa085b36ad8 160 //#endif
mbed_tw_hoehoe 0:2fa085b36ad8 161
mbed_tw_hoehoe 0:2fa085b36ad8 162 if( mpu.testConnection() ){
mbed_tw_hoehoe 0:2fa085b36ad8 163 //pc.printf("mpu test:OK\n\r");
mbed_tw_hoehoe 0:2fa085b36ad8 164 }else{
mbed_tw_hoehoe 0:2fa085b36ad8 165 //pc.printf("mpu test:NG\n\r");
mbed_tw_hoehoe 0:2fa085b36ad8 166 }
mbed_tw_hoehoe 0:2fa085b36ad8 167
mbed_tw_hoehoe 0:2fa085b36ad8 168 Ticker ticker;
mbed_tw_hoehoe 0:2fa085b36ad8 169 ticker.attach(periodicCallback, 1); //1sec
mbed_tw_hoehoe 0:2fa085b36ad8 170
mbed_tw_hoehoe 0:2fa085b36ad8 171 ble.init();
mbed_tw_hoehoe 0:2fa085b36ad8 172 ble.onDisconnection(disconnectionCallback);
mbed_tw_hoehoe 0:2fa085b36ad8 173 ble.onConnection(onConnectionCallback);
mbed_tw_hoehoe 0:2fa085b36ad8 174 ble.onTimeout(timeoutCallback);
mbed_tw_hoehoe 0:2fa085b36ad8 175
mbed_tw_hoehoe 0:2fa085b36ad8 176 /* setup device name */
mbed_tw_hoehoe 0:2fa085b36ad8 177 ble.setDeviceName((const uint8_t *)DEVICENAME);
mbed_tw_hoehoe 0:2fa085b36ad8 178
mbed_tw_hoehoe 0:2fa085b36ad8 179 /* setup advertising */
mbed_tw_hoehoe 0:2fa085b36ad8 180 ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
mbed_tw_hoehoe 0:2fa085b36ad8 181 ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
mbed_tw_hoehoe 0:2fa085b36ad8 182 ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t*)uuid16_list, sizeof(uuid16_list));
mbed_tw_hoehoe 0:2fa085b36ad8 183 ble.accumulateAdvertisingPayload(GapAdvertisingData::GENERIC_THERMOMETER);
mbed_tw_hoehoe 0:2fa085b36ad8 184 ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (const uint8_t *)DEVICENAME, sizeof(DEVICENAME));
mbed_tw_hoehoe 0:2fa085b36ad8 185 ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS,
mbed_tw_hoehoe 0:2fa085b36ad8 186 (const uint8_t *)MPU6050_adv_service_uuid, sizeof(MPU6050_adv_service_uuid));
mbed_tw_hoehoe 0:2fa085b36ad8 187
mbed_tw_hoehoe 0:2fa085b36ad8 188 ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */
mbed_tw_hoehoe 0:2fa085b36ad8 189 ble.startAdvertising();
mbed_tw_hoehoe 0:2fa085b36ad8 190
mbed_tw_hoehoe 0:2fa085b36ad8 191 ble.addService(MPU6050Service);
mbed_tw_hoehoe 0:2fa085b36ad8 192 ble.addService(htmService);
mbed_tw_hoehoe 0:2fa085b36ad8 193 ble.addService(battService);
mbed_tw_hoehoe 0:2fa085b36ad8 194
mbed_tw_hoehoe 0:2fa085b36ad8 195 while(true) {
mbed_tw_hoehoe 0:2fa085b36ad8 196 if (triggerSensorPolling && ble.getGapState().connected) {
mbed_tw_hoehoe 0:2fa085b36ad8 197 triggerSensorPolling = false;
mbed_tw_hoehoe 0:2fa085b36ad8 198 updateValue();
mbed_tw_hoehoe 0:2fa085b36ad8 199 } else {
mbed_tw_hoehoe 0:2fa085b36ad8 200 ble.waitForEvent();
mbed_tw_hoehoe 0:2fa085b36ad8 201 }
mbed_tw_hoehoe 0:2fa085b36ad8 202 }
mbed_tw_hoehoe 0:2fa085b36ad8 203 }
mbed_tw_hoehoe 0:2fa085b36ad8 204
mbed_tw_hoehoe 0:2fa085b36ad8 205 void updateValue(void){
mbed_tw_hoehoe 0:2fa085b36ad8 206
mbed_tw_hoehoe 0:2fa085b36ad8 207 float acData[3];
mbed_tw_hoehoe 0:2fa085b36ad8 208 float gyData[3];
mbed_tw_hoehoe 0:2fa085b36ad8 209 float tempData = 0.0;
mbed_tw_hoehoe 0:2fa085b36ad8 210
mbed_tw_hoehoe 0:2fa085b36ad8 211 //加速度を取得。なんか、関数が逆みたいなので、getGyroが加速度だそうです。
mbed_tw_hoehoe 0:2fa085b36ad8 212 //mpu.getAccelero(acData);
mbed_tw_hoehoe 0:2fa085b36ad8 213 mpu.getGyro(acData);
mbed_tw_hoehoe 0:2fa085b36ad8 214
mbed_tw_hoehoe 0:2fa085b36ad8 215 memcpy(accelPayload+sizeof(float)*0, &acData[0], sizeof(acData[0]));
mbed_tw_hoehoe 0:2fa085b36ad8 216 memcpy(accelPayload+sizeof(float)*1, &acData[1], sizeof(acData[1]));
mbed_tw_hoehoe 0:2fa085b36ad8 217 memcpy(accelPayload+sizeof(float)*2, &acData[2], sizeof(acData[2]));
mbed_tw_hoehoe 0:2fa085b36ad8 218
mbed_tw_hoehoe 0:2fa085b36ad8 219 //ジャイロを取得。なんか、関数が逆みたいなので、getAcceleroがジャイロだそうです。
mbed_tw_hoehoe 0:2fa085b36ad8 220 //mpu.getGyro(gyData);
mbed_tw_hoehoe 0:2fa085b36ad8 221 mpu.getAccelero(gyData);
mbed_tw_hoehoe 0:2fa085b36ad8 222
mbed_tw_hoehoe 0:2fa085b36ad8 223 memcpy(gyroPayload+sizeof(float)*0, &gyData[0], sizeof(gyData[0]));
mbed_tw_hoehoe 0:2fa085b36ad8 224 memcpy(gyroPayload+sizeof(float)*1, &gyData[1], sizeof(gyData[1]));
mbed_tw_hoehoe 0:2fa085b36ad8 225 memcpy(gyroPayload+sizeof(float)*2, &gyData[2], sizeof(gyData[2]));
mbed_tw_hoehoe 0:2fa085b36ad8 226
mbed_tw_hoehoe 0:2fa085b36ad8 227 //温度を取得
mbed_tw_hoehoe 0:2fa085b36ad8 228 tempData = mpu.getTemp();
mbed_tw_hoehoe 0:2fa085b36ad8 229
mbed_tw_hoehoe 0:2fa085b36ad8 230 memcpy(tempPayload+sizeof(float)*0, &tempData, sizeof(tempData));
mbed_tw_hoehoe 0:2fa085b36ad8 231 /*
mbed_tw_hoehoe 0:2fa085b36ad8 232 pc.printf("Accel: %.3lf,%.3lf,%.3lf\r\n",
mbed_tw_hoehoe 0:2fa085b36ad8 233 *(float*)&accelPayload[sizeof(float)*0],
mbed_tw_hoehoe 0:2fa085b36ad8 234 *(float*)&accelPayload[sizeof(float)*1],
mbed_tw_hoehoe 0:2fa085b36ad8 235 *(float*)&accelPayload[sizeof(float)*2]);
mbed_tw_hoehoe 0:2fa085b36ad8 236
mbed_tw_hoehoe 0:2fa085b36ad8 237 pc.printf("Gyro: %.3lf,%.3lf,%.3lf\r\n",
mbed_tw_hoehoe 0:2fa085b36ad8 238 *(float*)&gyroPayload[sizeof(float)*0],
mbed_tw_hoehoe 0:2fa085b36ad8 239 *(float*)&gyroPayload[sizeof(float)*1],
mbed_tw_hoehoe 0:2fa085b36ad8 240 *(float*)&gyroPayload[sizeof(float)*2]);
mbed_tw_hoehoe 0:2fa085b36ad8 241
mbed_tw_hoehoe 0:2fa085b36ad8 242 pc.printf("Temp: %.3lf\r\n", *(float*)&tempPayload[sizeof(float)*0]);
mbed_tw_hoehoe 0:2fa085b36ad8 243 pc.printf("Battery: %d\r\n", batt);
mbed_tw_hoehoe 0:2fa085b36ad8 244 */
mbed_tw_hoehoe 0:2fa085b36ad8 245
mbed_tw_hoehoe 0:2fa085b36ad8 246 ble.updateCharacteristicValue(accelChar.getValueAttribute().getHandle(), accelPayload, sizeof(accelPayload)); //Mod
mbed_tw_hoehoe 0:2fa085b36ad8 247 ble.updateCharacteristicValue(gyroChar.getValueAttribute().getHandle(), gyroPayload, sizeof(gyroPayload)); //Mod
mbed_tw_hoehoe 0:2fa085b36ad8 248 ble.updateCharacteristicValue(tempChar.getValueAttribute().getHandle(), tempPayload, sizeof(tempPayload)); //Mod
mbed_tw_hoehoe 0:2fa085b36ad8 249 ble.updateCharacteristicValue(battLevel.getValueAttribute().getHandle(), &batt, sizeof(batt)); //Mod
mbed_tw_hoehoe 0:2fa085b36ad8 250 }