code with new accelerometers

Dependencies:   BLE_API i2c-serial-conflict nRF51822

Fork of accel_to_blenano_i2c by Nicholas Kosarek

Committer:
cpadua
Date:
Wed Apr 26 00:54:35 2017 +0000
Revision:
9:c175975679dc
Parent:
8:6c538756395a
added code for new accelerometers

Who changed what in which revision?

UserRevisionLine numberNew contents of line
znew711 0:6a249a5be3a4 1 /*
znew711 0:6a249a5be3a4 2
znew711 0:6a249a5be3a4 3 Copyright (c) 2012-2014 RedBearLab
znew711 0:6a249a5be3a4 4
znew711 0:6a249a5be3a4 5 Permission is hereby granted, free of charge, to any person obtaining a copy of this software
znew711 0:6a249a5be3a4 6 and associated documentation files (the "Software"), to deal in the Software without restriction,
znew711 0:6a249a5be3a4 7 including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
znew711 0:6a249a5be3a4 8 and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
znew711 0:6a249a5be3a4 9 subject to the following conditions:
znew711 0:6a249a5be3a4 10 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
znew711 0:6a249a5be3a4 11
znew711 0:6a249a5be3a4 12 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
znew711 0:6a249a5be3a4 13 INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
znew711 0:6a249a5be3a4 14 PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
znew711 0:6a249a5be3a4 15 FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
znew711 0:6a249a5be3a4 16 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
znew711 0:6a249a5be3a4 17
znew711 0:6a249a5be3a4 18 */
znew711 0:6a249a5be3a4 19
znew711 0:6a249a5be3a4 20 #include "mbed.h"
znew711 0:6a249a5be3a4 21 #include "wire.h"
znew711 0:6a249a5be3a4 22
znew711 0:6a249a5be3a4 23 #define BLE_Nano
znew711 0:6a249a5be3a4 24 //#define nRF_51822
znew711 0:6a249a5be3a4 25
cpadua 9:c175975679dc 26 #define LIS331HH
cpadua 9:c175975679dc 27 //#define LIS3DH
znew711 0:6a249a5be3a4 28
znew711 0:6a249a5be3a4 29 #ifdef nRF_51822
znew711 0:6a249a5be3a4 30 #define SCL 28
znew711 0:6a249a5be3a4 31 #define SDA 29
znew711 0:6a249a5be3a4 32 #endif
znew711 0:6a249a5be3a4 33
znew711 0:6a249a5be3a4 34 #ifdef BLE_Nano
znew711 6:0a9f1dc921f1 35 #define SCL P0_8
znew711 6:0a9f1dc921f1 36 #define SDA P0_10
znew711 0:6a249a5be3a4 37 #endif
znew711 0:6a249a5be3a4 38
cpadua 9:c175975679dc 39
cpadua 9:c175975679dc 40 #ifdef LIS3DH
cpadua 3:3d08e2045bde 41 #define ADDR_ONE 0x30
cpadua 3:3d08e2045bde 42 #define ADDR_TWO 0x32
znew711 0:6a249a5be3a4 43 #define AXIS_X 0x00
znew711 0:6a249a5be3a4 44 #define AXIS_Y 0x01
znew711 0:6a249a5be3a4 45 #define AXIS_Z 0x02
znew711 0:6a249a5be3a4 46 #define REG_OUT_X_L 0x28
znew711 0:6a249a5be3a4 47 #define REG_CTRL1 0x20
znew711 0:6a249a5be3a4 48 #define REG_CTRL4 0x23
znew711 1:e2ba28405dd5 49 #define REG_WHOAMI 0x0F
znew711 0:6a249a5be3a4 50 #define RANGE_2G 0x00
znew711 1:e2ba28405dd5 51 #define DEVICE_ID 0x33
znew711 0:6a249a5be3a4 52
znew711 0:6a249a5be3a4 53
znew711 0:6a249a5be3a4 54 #define DATARATE_400HZ 0b0111 // 400Hz
znew711 0:6a249a5be3a4 55 #define DATARATE_200HZ 0b0110 // 200Hz
znew711 0:6a249a5be3a4 56 #define DATARATE_100HZ 0b0101 // 100Hz
znew711 0:6a249a5be3a4 57 #define DATARATE_50HZ 0b0100 // 50Hz
znew711 0:6a249a5be3a4 58 #define DATARATE_25HZ 0b0011 // 25Hz
znew711 0:6a249a5be3a4 59 #define DATARATE_10HZ 0b0010 // 10Hz
znew711 0:6a249a5be3a4 60 #define DATARATE_1HZ 0b0001 // 1Hz
znew711 0:6a249a5be3a4 61 #define DATARATE_POWERDOWN 0 // Power down
znew711 0:6a249a5be3a4 62 #define DATARATE_LOWPOWER_1K6HZ 0b1000 // Low power mode (1.6KHz)
znew711 0:6a249a5be3a4 63 #define DATARATE_LOWPOWER_5KHZ 0b1001 // Low power mode (5KHz) / Normal power mode (1.25KHz)
cpadua 9:c175975679dc 64 #endif
cpadua 9:c175975679dc 65
cpadua 9:c175975679dc 66
cpadua 9:c175975679dc 67 #ifdef LIS331HH
cpadua 9:c175975679dc 68 #define ADDR_ONE 0x30
cpadua 9:c175975679dc 69 #define ADDR_TWO 0x32
cpadua 9:c175975679dc 70 #define AXIS_X 0x00
cpadua 9:c175975679dc 71 #define AXIS_Y 0x01
cpadua 9:c175975679dc 72 #define AXIS_Z 0x02
cpadua 9:c175975679dc 73 #define REG_OUT_X_L 0x28
cpadua 9:c175975679dc 74 #define REG_CTRL1 0x20
cpadua 9:c175975679dc 75 #define REG_CTRL4 0x23
cpadua 9:c175975679dc 76 #define REG_WHOAMI 0x0F
cpadua 9:c175975679dc 77 #define RANGE_2G 0x00
cpadua 9:c175975679dc 78 #define DEVICE_ID 0x33
cpadua 9:c175975679dc 79
cpadua 9:c175975679dc 80
cpadua 9:c175975679dc 81 #define DATARATE_1KHZ 0b11 // 1000Hz
cpadua 9:c175975679dc 82 #define DATARATE_400HZ 0b10 // 400Hz
cpadua 9:c175975679dc 83 #define DATARATE_100HZ 0b01 // 100Hz
cpadua 9:c175975679dc 84 #define DATARATE_50HZ 0b00 // 50Hz
cpadua 9:c175975679dc 85 #define DATARATE_POWERDOWN 0 // Power down
cpadua 9:c175975679dc 86 #define DATARATE_NORMALMODE 0b001
cpadua 9:c175975679dc 87 #define DATARATE_LOWPOWER_0.5HZ 0b010
cpadua 9:c175975679dc 88 #define DATARATE_LOWPOWER_1HZ 0b011
cpadua 9:c175975679dc 89 #define DATARATE_LOWPOWER_2HZ 0b100
cpadua 9:c175975679dc 90 #define DATARATE_LOWPOWER_5HZ 0b101
cpadua 9:c175975679dc 91 #define DATARATE_LOWPOWER_10HZ 0b110
cpadua 9:c175975679dc 92 #endif
cpadua 9:c175975679dc 93
cpadua 9:c175975679dc 94
cpadua 9:c175975679dc 95
znew711 0:6a249a5be3a4 96
znew711 0:6a249a5be3a4 97 Serial pc(USBTX, USBRX);
znew711 0:6a249a5be3a4 98 TwoWire Wire = TwoWire(NRF_TWI0);
znew711 0:6a249a5be3a4 99
znew711 0:6a249a5be3a4 100 void AT24C512_WriteBytes(uint16_t addr, uint8_t *pbuf, uint16_t length, uint16_t i2cAddr)
znew711 0:6a249a5be3a4 101 {
znew711 0:6a249a5be3a4 102 Wire.beginTransmission(i2cAddr);
cpadua 3:3d08e2045bde 103 int err = Wire.write( (uint8_t)addr );
znew711 0:6a249a5be3a4 104 Wire.write(pbuf, length);
znew711 1:e2ba28405dd5 105 if (err != 0) {
nkosarek 8:6c538756395a 106 pc.printf("error on write write! %d\r\n", err);
znew711 1:e2ba28405dd5 107 }
znew711 1:e2ba28405dd5 108 uint8_t err8 = Wire.endTransmission();
znew711 1:e2ba28405dd5 109 if (err8 != 0) {
nkosarek 8:6c538756395a 110 pc.printf("error on write end transmission! %d\r\n", err8);
znew711 1:e2ba28405dd5 111 }
znew711 0:6a249a5be3a4 112 }
znew711 0:6a249a5be3a4 113
znew711 0:6a249a5be3a4 114 void AT24C512_ReadBytes(uint16_t addr, uint8_t *pbuf, uint16_t length, uint16_t i2cAddr)
znew711 0:6a249a5be3a4 115 {
znew711 0:6a249a5be3a4 116 Wire.beginTransmission(i2cAddr);
cpadua 3:3d08e2045bde 117 int err= Wire.write( (uint8_t)addr );
znew711 1:e2ba28405dd5 118 if (err != 0) {
nkosarek 8:6c538756395a 119 pc.printf("error on read write! %d\r\n", err);
znew711 1:e2ba28405dd5 120 }
znew711 1:e2ba28405dd5 121 uint8_t err8 = Wire.endTransmission();
znew711 1:e2ba28405dd5 122 if (err8 != 0) {
nkosarek 8:6c538756395a 123 pc.printf("error on read end transmission! %d\r\n", err8);
znew711 1:e2ba28405dd5 124 }
znew711 0:6a249a5be3a4 125
znew711 1:e2ba28405dd5 126 err8 = Wire.requestFrom(i2cAddr+1, length);
znew711 1:e2ba28405dd5 127 if (err != 0) {
nkosarek 8:6c538756395a 128 pc.printf("error on read request from! %d\r\n", err8);
znew711 1:e2ba28405dd5 129 }
znew711 0:6a249a5be3a4 130 while( Wire.available() > 0 )
znew711 0:6a249a5be3a4 131 {
znew711 0:6a249a5be3a4 132 *pbuf = Wire.read();
znew711 0:6a249a5be3a4 133 pbuf++;
znew711 0:6a249a5be3a4 134 }
znew711 0:6a249a5be3a4 135 }
znew711 0:6a249a5be3a4 136
znew711 0:6a249a5be3a4 137 //Set the bit at index 'bit' to 'value' on 'input' and return
znew711 0:6a249a5be3a4 138 uint8_t setBit(uint8_t input, uint8_t bit, uint8_t value) {
znew711 0:6a249a5be3a4 139 uint8_t mask = 1 << bit;
znew711 0:6a249a5be3a4 140 input &= ~mask;
znew711 0:6a249a5be3a4 141 if (value == 1) {
znew711 0:6a249a5be3a4 142 input |= mask;
znew711 0:6a249a5be3a4 143 }
znew711 0:6a249a5be3a4 144 return input;
znew711 0:6a249a5be3a4 145 }
znew711 0:6a249a5be3a4 146
znew711 0:6a249a5be3a4 147 uint16_t getAxis(uint16_t axis, uint16_t i2cAddr)
znew711 0:6a249a5be3a4 148 {
znew711 0:6a249a5be3a4 149 uint8_t base = REG_OUT_X_L + (2 * axis);
znew711 0:6a249a5be3a4 150 uint8_t* low = new uint8_t[1];
znew711 0:6a249a5be3a4 151 uint8_t* high = new uint8_t[1];
znew711 0:6a249a5be3a4 152 AT24C512_ReadBytes(base, low, 1, i2cAddr);
znew711 0:6a249a5be3a4 153 AT24C512_ReadBytes(base + 1, high, 1, i2cAddr);
znew711 0:6a249a5be3a4 154 uint16_t res = low[0] | (high[0] << 8);
znew711 0:6a249a5be3a4 155 return res;
znew711 0:6a249a5be3a4 156 }
znew711 0:6a249a5be3a4 157
znew711 0:6a249a5be3a4 158 void setRange(uint8_t range, uint16_t i2cAddr) {
znew711 0:6a249a5be3a4 159 uint8_t* val = new uint8_t[1];
znew711 0:6a249a5be3a4 160 AT24C512_ReadBytes(REG_CTRL4, val, 1, i2cAddr);//get value from the register
nkosarek 8:6c538756395a 161 val[0] &= ~(0b110000); //zero out lowest 2 bits of top 4 bits
znew711 0:6a249a5be3a4 162 val[0] |= (range << 4); // write in our new range
nkosarek 8:6c538756395a 163 pc.printf("REG_CTRL4 after setRange: 0x%x\r\n", *val);
znew711 0:6a249a5be3a4 164 AT24C512_WriteBytes(REG_CTRL4, val, 1, i2cAddr);
znew711 0:6a249a5be3a4 165 }
znew711 0:6a249a5be3a4 166
znew711 0:6a249a5be3a4 167 //Set whether we want to use high resolution or not
znew711 0:6a249a5be3a4 168 void setHighResolution(bool highRes, uint16_t i2cAddr) {
znew711 0:6a249a5be3a4 169 uint8_t* val = new uint8_t[1];
znew711 0:6a249a5be3a4 170 AT24C512_ReadBytes(REG_CTRL4, val, 1, i2cAddr);//get value from the register
znew711 0:6a249a5be3a4 171 uint8_t final;
znew711 0:6a249a5be3a4 172 if (highRes) {
znew711 0:6a249a5be3a4 173 final = setBit(val[0], 3, 1);
znew711 0:6a249a5be3a4 174 } else {
nkosarek 8:6c538756395a 175 final = setBit(val[0], 3, 0);
znew711 0:6a249a5be3a4 176 }
znew711 0:6a249a5be3a4 177 val[0] = final;
nkosarek 8:6c538756395a 178 pc.printf("REG_CTRL4 after setHiRes: 0x%x\r\n", *val);
znew711 0:6a249a5be3a4 179 AT24C512_WriteBytes(REG_CTRL4, val, 1, i2cAddr);
znew711 0:6a249a5be3a4 180 }
znew711 0:6a249a5be3a4 181
znew711 0:6a249a5be3a4 182 void setAxisStatus(uint8_t axis, bool enable, uint16_t i2cAddr) {
znew711 0:6a249a5be3a4 183 uint8_t* current = new uint8_t[1];
znew711 0:6a249a5be3a4 184 AT24C512_ReadBytes(REG_CTRL1, current, 1, i2cAddr);//get value from the register
znew711 0:6a249a5be3a4 185 uint8_t final;
znew711 0:6a249a5be3a4 186 if (enable == 1) {
znew711 0:6a249a5be3a4 187 final = setBit(current[0], axis, 1);
znew711 0:6a249a5be3a4 188 } else {
znew711 0:6a249a5be3a4 189 final = setBit(current[0], axis, 0);
znew711 0:6a249a5be3a4 190 }
znew711 0:6a249a5be3a4 191 current[0] = final;
nkosarek 8:6c538756395a 192 pc.printf("REG_CTRL1 after setAxisStatus: 0x%x\r\n", *current);
znew711 0:6a249a5be3a4 193 AT24C512_WriteBytes(REG_CTRL1, current, 1, i2cAddr);
znew711 0:6a249a5be3a4 194 }
znew711 0:6a249a5be3a4 195
znew711 0:6a249a5be3a4 196 void setDataRate(uint8_t dataRate, uint16_t i2cAddr) {
znew711 0:6a249a5be3a4 197 uint8_t* val = new uint8_t[1];
znew711 0:6a249a5be3a4 198 AT24C512_ReadBytes(REG_CTRL1, val, 1, i2cAddr);
nkosarek 8:6c538756395a 199 pc.printf("REG_CTRL1: 0x%x\r\n", *val);
cpadua 9:c175975679dc 200 val[0] &= 0b11100111; //d
cpadua 9:c175975679dc 201 val[0] |= (dataRate << 3);
cpadua 9:c175975679dc 202 pc.printf("REG_CTRL1: 0x%x\r\n", *val);
cpadua 9:c175975679dc 203 AT24C512_WriteBytes(REG_CTRL1, val, 1, i2cAddr);
cpadua 9:c175975679dc 204 }
cpadua 9:c175975679dc 205
cpadua 9:c175975679dc 206 void setPowerMode(uint8_t powerMode, uint16_t i2cAddr) {
cpadua 9:c175975679dc 207 uint8_t* val = new uint8_t[1];
cpadua 9:c175975679dc 208 val[0] &= 0b11111;
cpadua 9:c175975679dc 209 val[0] |= powerMode << 5;
nkosarek 8:6c538756395a 210 pc.printf("REG_CTRL1: 0x%x\r\n", *val);
znew711 0:6a249a5be3a4 211 AT24C512_WriteBytes(REG_CTRL1, val, 1, i2cAddr);
znew711 0:6a249a5be3a4 212 }
znew711 0:6a249a5be3a4 213
znew711 0:6a249a5be3a4 214 void setBDU(bool bdu, uint16_t i2cAddr)
znew711 0:6a249a5be3a4 215 {
znew711 0:6a249a5be3a4 216 uint8_t* val = new uint8_t[1];
znew711 0:6a249a5be3a4 217 AT24C512_ReadBytes(REG_CTRL4, val, 1, i2cAddr);//get value from the register
nkosarek 8:6c538756395a 218 pc.printf("REG_CTRL4: 0x%x\r\n", *val);
znew711 0:6a249a5be3a4 219 uint8_t final;
nkosarek 8:6c538756395a 220 if (bdu) {
znew711 0:6a249a5be3a4 221 final = setBit(val[0], 7, 1);
znew711 0:6a249a5be3a4 222 } else {
nkosarek 8:6c538756395a 223 final = setBit(val[0], 7, 0);
znew711 0:6a249a5be3a4 224 }
znew711 0:6a249a5be3a4 225 val[0] = final;
nkosarek 8:6c538756395a 226 pc.printf("REG_CTRL4 after setBDU: 0x%x\r\n", *val);
znew711 0:6a249a5be3a4 227 AT24C512_WriteBytes(REG_CTRL4, val, 1, i2cAddr);
znew711 0:6a249a5be3a4 228 }
znew711 0:6a249a5be3a4 229
znew711 0:6a249a5be3a4 230 uint16_t getX(uint16_t i2cAddr)
znew711 0:6a249a5be3a4 231 {
znew711 0:6a249a5be3a4 232 return getAxis(AXIS_X, i2cAddr);
znew711 0:6a249a5be3a4 233 }
znew711 0:6a249a5be3a4 234
znew711 0:6a249a5be3a4 235 uint16_t getY(uint16_t i2cAddr)
znew711 0:6a249a5be3a4 236 {
znew711 0:6a249a5be3a4 237 return getAxis(AXIS_Y, i2cAddr);
znew711 0:6a249a5be3a4 238 }
znew711 0:6a249a5be3a4 239
znew711 0:6a249a5be3a4 240 uint16_t getZ(uint16_t i2cAddr)
znew711 0:6a249a5be3a4 241 {
znew711 0:6a249a5be3a4 242 return getAxis(AXIS_Z, i2cAddr);
znew711 0:6a249a5be3a4 243 }
znew711 0:6a249a5be3a4 244
znew711 0:6a249a5be3a4 245 int main(void)
znew711 0:6a249a5be3a4 246 {
znew711 0:6a249a5be3a4 247 pc.baud(9600);
znew711 0:6a249a5be3a4 248 wait(5);
znew711 0:6a249a5be3a4 249 //Wire.begin();
znew711 0:6a249a5be3a4 250 Wire.begin(SCL, SDA, TWI_FREQUENCY_100K);
cpadua 5:a52a03b6d13b 251
nkosarek 8:6c538756395a 252 pc.printf("\r\n\r\n\r\nStarting...\r\n");
nkosarek 8:6c538756395a 253
znew711 6:0a9f1dc921f1 254 wait(5);
znew711 1:e2ba28405dd5 255
znew711 0:6a249a5be3a4 256 setAxisStatus(AXIS_X, true, ADDR_ONE);
znew711 0:6a249a5be3a4 257 setAxisStatus(AXIS_Y, true, ADDR_ONE);
znew711 0:6a249a5be3a4 258 setAxisStatus(AXIS_Z, true, ADDR_ONE);
znew711 0:6a249a5be3a4 259 setDataRate(DATARATE_400HZ, ADDR_ONE);
cpadua 9:c175975679dc 260 setPowerMode(DATARATE_NORMAL_MODE, ADDR_ONE);
znew711 0:6a249a5be3a4 261 setHighResolution(true, ADDR_ONE);
znew711 0:6a249a5be3a4 262 setBDU(true, ADDR_ONE);
znew711 0:6a249a5be3a4 263 setRange(RANGE_2G, ADDR_ONE);
znew711 0:6a249a5be3a4 264
znew711 0:6a249a5be3a4 265 setAxisStatus(AXIS_X, true, ADDR_TWO);
znew711 0:6a249a5be3a4 266 setAxisStatus(AXIS_Y, true, ADDR_TWO);
znew711 0:6a249a5be3a4 267 setAxisStatus(AXIS_Z, true, ADDR_TWO);
nkosarek 8:6c538756395a 268 setDataRate(DATARATE_400HZ, ADDR_TWO);
cpadua 9:c175975679dc 269 setPowerMode(DATARATE_NORMAL_MODE, ADDR_TWO);
znew711 0:6a249a5be3a4 270 setHighResolution(true, ADDR_TWO);
znew711 0:6a249a5be3a4 271 setBDU(true, ADDR_TWO);
znew711 0:6a249a5be3a4 272 setRange(RANGE_2G, ADDR_TWO);
nkosarek 8:6c538756395a 273
nkosarek 8:6c538756395a 274 uint8_t* val = new uint8_t[1];
cpadua 9:c175975679dc 275 *val = 0x80;
nkosarek 8:6c538756395a 276 AT24C512_WriteBytes(REG_CTRL4, val, 1, ADDR_ONE);
nkosarek 8:6c538756395a 277 AT24C512_WriteBytes(REG_CTRL4, val, 1, ADDR_TWO);
nkosarek 8:6c538756395a 278 AT24C512_ReadBytes(REG_CTRL4, val, 1, ADDR_ONE);
cpadua 9:c175975679dc 279 pc.printf("REG_CTRL4, should be 0x80: 0x%x\r\n", *val);
nkosarek 8:6c538756395a 280
nkosarek 8:6c538756395a 281 uint8_t* whoami = new uint8_t[1];
nkosarek 8:6c538756395a 282 AT24C512_ReadBytes(REG_WHOAMI, whoami, 1, ADDR_ONE);
nkosarek 8:6c538756395a 283 pc.printf("REG_WHOAMI should be 0x33: 0x%x\r\n", *whoami);
nkosarek 8:6c538756395a 284 AT24C512_ReadBytes(REG_WHOAMI, whoami, 1, ADDR_TWO);
nkosarek 8:6c538756395a 285 pc.printf("REG_WHOAMI should be 0x33: 0x%x\r\n", *whoami);
nkosarek 8:6c538756395a 286 AT24C512_ReadBytes(0x1F, whoami, 1, ADDR_ONE);
nkosarek 8:6c538756395a 287
nkosarek 8:6c538756395a 288 /*
nkosarek 8:6c538756395a 289 ble.init();
nkosarek 8:6c538756395a 290 ble.onDisconnection(disconnectionCallback);
znew711 0:6a249a5be3a4 291
nkosarek 8:6c538756395a 292 //pc.attach( uartCB , pc.RxIrq);
nkosarek 8:6c538756395a 293
nkosarek 8:6c538756395a 294 // setup advertising
nkosarek 8:6c538756395a 295 ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
nkosarek 8:6c538756395a 296 ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
nkosarek 8:6c538756395a 297 ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,
nkosarek 8:6c538756395a 298 (const uint8_t *)"LUMBERJACK", sizeof("LUMBERJACK") - 1);
nkosarek 8:6c538756395a 299 ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS,
nkosarek 8:6c538756395a 300 (const uint8_t *)uart_base_uuid_rev, sizeof(uart_base_uuid));
nkosarek 8:6c538756395a 301 // 100ms; in multiples of 0.625ms.
nkosarek 8:6c538756395a 302 ble.setAdvertisingInterval(160);
nkosarek 8:6c538756395a 303
nkosarek 8:6c538756395a 304 ble.addService(uartService);
nkosarek 8:6c538756395a 305
nkosarek 8:6c538756395a 306 ble.startAdvertising();
nkosarek 8:6c538756395a 307 pc.printf("Advertising Start \r\n");
nkosarek 8:6c538756395a 308
nkosarek 8:6c538756395a 309 uint16_t data = new uint16_t[6];
nkosarek 8:6c538756395a 310 */
znew711 0:6a249a5be3a4 311
znew711 0:6a249a5be3a4 312 while(1)
znew711 0:6a249a5be3a4 313 {
nkosarek 8:6c538756395a 314 pc.printf("Read data from AT24C512\r\n");
znew711 0:6a249a5be3a4 315 uint16_t x1 = getX(ADDR_ONE);
znew711 0:6a249a5be3a4 316 uint16_t y1 = getY(ADDR_ONE);
znew711 0:6a249a5be3a4 317 uint16_t z1 = getZ(ADDR_ONE);
znew711 0:6a249a5be3a4 318
znew711 0:6a249a5be3a4 319 uint16_t x2 = getX(ADDR_TWO);
znew711 0:6a249a5be3a4 320 uint16_t y2 = getY(ADDR_TWO);
znew711 0:6a249a5be3a4 321 uint16_t z2 = getZ(ADDR_TWO);
nkosarek 8:6c538756395a 322 pc.printf("Accel one: x %d y %d z %d\r\n", (int16_t)x1, (int16_t)y1, (int16_t)z1);
nkosarek 8:6c538756395a 323 pc.printf("Accel two: x %d y %d z %d\r\n", (int16_t)x2, (int16_t)y2, (int16_t)z2);
znew711 0:6a249a5be3a4 324 pc.printf("\r\n");
nkosarek 8:6c538756395a 325 /*
nkosarek 8:6c538756395a 326 data[0] = x1;
nkosarek 8:6c538756395a 327 data[1] = y1;
nkosarek 8:6c538756395a 328 data[2] = z1;
nkosarek 8:6c538756395a 329 data[3] = x2;
nkosarek 8:6c538756395a 330 data[4] = y2;
nkosarek 8:6c538756395a 331 data[5] = z2;
nkosarek 8:6c538756395a 332 ble.gattServer().write(0x15, data, sizeof(data));
nkosarek 8:6c538756395a 333 */
nkosarek 8:6c538756395a 334
znew711 0:6a249a5be3a4 335 wait(1);
znew711 0:6a249a5be3a4 336 }
nkosarek 8:6c538756395a 337
znew711 0:6a249a5be3a4 338 }