Self test boot program for testing icarus sensors

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_UARTConsole by Bluetooth Low Energy

Committer:
smigielski
Date:
Tue Jan 27 13:25:37 2015 +0000
Revision:
10:3a24c970db40
Child:
11:70359785c2a7
Change namespace;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
smigielski 10:3a24c970db40 1 #include "MPU9250Sensor.h"
smigielski 10:3a24c970db40 2 #include "mbed.h"
smigielski 10:3a24c970db40 3
smigielski 10:3a24c970db40 4 #ifndef LOG
smigielski 10:3a24c970db40 5 #define LOG(...) do printf(__VA_ARGS__); while (0)
smigielski 10:3a24c970db40 6 #endif
smigielski 10:3a24c970db40 7
smigielski 10:3a24c970db40 8 MPU9250Sensor::MPU9250Sensor(SPI* spi_,DigitalOut* cs_) : BaseSensor() {
smigielski 10:3a24c970db40 9 this->spi=spi_;
smigielski 10:3a24c970db40 10 this->cs=cs_;
smigielski 10:3a24c970db40 11 *cs = UP;
smigielski 10:3a24c970db40 12 //To prevent switching into I2C mode when using SPI, the I2C interface should be disabled by setting the I2C_IF_DIS
smigielski 10:3a24c970db40 13 //configuration bit. Setting this bit should be performed immediately after waiting for the time specified by the
smigielski 10:3a24c970db40 14 //“Start-Up Time for Register Read/Write” in Section 6.3.
smigielski 10:3a24c970db40 15
smigielski 10:3a24c970db40 16
smigielski 10:3a24c970db40 17 }
smigielski 10:3a24c970db40 18
smigielski 10:3a24c970db40 19 char* MPU9250Sensor::getSimpleName() {
smigielski 10:3a24c970db40 20 return "MPU9250";
smigielski 10:3a24c970db40 21 }
smigielski 10:3a24c970db40 22
smigielski 10:3a24c970db40 23
smigielski 10:3a24c970db40 24 uint32_t MPU9250Sensor::verifyIntegrity(uint32_t* errorResult) {
smigielski 10:3a24c970db40 25 LOG("Start verfication of MPU9250 Sensor");
smigielski 10:3a24c970db40 26 uint32_t errors = 0;
smigielski 10:3a24c970db40 27 //Device id is 0xAD
smigielski 10:3a24c970db40 28 //Device mems id is 0x1D
smigielski 10:3a24c970db40 29 //Part id is 0xF2
smigielski 10:3a24c970db40 30 // uint32_t sensorId = readRegister32(DEVID_AD);
smigielski 10:3a24c970db40 31
smigielski 10:3a24c970db40 32 // if (sensorId >> 8 !=0xAD1DF2){
smigielski 10:3a24c970db40 33 // errorResult[errors++] = ERROR_WRONG_DEVICE_ID;
smigielski 10:3a24c970db40 34 // LOG("Wrong sensorId: %X",sensorId);
smigielski 10:3a24c970db40 35 // }
smigielski 10:3a24c970db40 36
smigielski 10:3a24c970db40 37 //check status registry
smigielski 10:3a24c970db40 38 // uint8_t status = readRegister(STATUS);
smigielski 10:3a24c970db40 39
smigielski 10:3a24c970db40 40 //indicate that SEU error was detetcted
smigielski 10:3a24c970db40 41 // if (status & (1 << 7)){
smigielski 10:3a24c970db40 42 // errorResult[errors++] = ERROR_SEU_ERROR_DETECT;
smigielski 10:3a24c970db40 43 // LOG("SEU error detected: %X",status);
smigielski 10:3a24c970db40 44 // }
smigielski 10:3a24c970db40 45 //check that chip is in awaken state
smigielski 10:3a24c970db40 46 //if (!(status & (1 << 6))){
smigielski 10:3a24c970db40 47 // errorResult[errors++] = ERROR_DEVICE_SLEEPING;
smigielski 10:3a24c970db40 48 // LOG("Chip not awaken: %X",status);
smigielski 10:3a24c970db40 49 // }
smigielski 10:3a24c970db40 50
smigielski 10:3a24c970db40 51 //perform self test
smigielski 10:3a24c970db40 52 // errors+=selfTest(&errorResult[errors]);
smigielski 10:3a24c970db40 53
smigielski 10:3a24c970db40 54 return errors;
smigielski 10:3a24c970db40 55 }
smigielski 10:3a24c970db40 56
smigielski 10:3a24c970db40 57 void MPU9250Sensor::getSensorDetails(sensor_t* sensorDetails) {
smigielski 10:3a24c970db40 58
smigielski 10:3a24c970db40 59 }