Example test suite for my ADIS16467 driver.
ADIS16467 Driver Example Tests
These examples show how to use some of the functionality in my ADIS16467 driver. To get started with MBed CLI:
Build Instructions
$ hg clone https://yhnrita@os.mbed.com/users/yhnrita/code/ADIS16467-Tests/ $ cd ADIS16467-Tests $ mbed deploy $ mbed compile
ADIS16467TestSuite.cpp@3:488b7ef208be, 2020-02-21 (annotated)
- Committer:
- Rita Yang
- Date:
- Fri Feb 21 18:27:48 2020 -0800
- Revision:
- 3:488b7ef208be
- Parent:
- 2:ca014ee9f00a
Adding library dependencies.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Rita Yang |
2:ca014ee9f00a | 1 | /* |
Rita Yang |
2:ca014ee9f00a | 2 | USC RPL ADIS16467 Test Suite |
Rita Yang |
2:ca014ee9f00a | 3 | Contributors: Rita Yang |
Rita Yang |
2:ca014ee9f00a | 4 | */ |
Rita Yang |
2:ca014ee9f00a | 5 | |
Rita Yang |
2:ca014ee9f00a | 6 | #include "ADIS16467TestSuite.h" |
Rita Yang |
2:ca014ee9f00a | 7 | |
Rita Yang |
2:ca014ee9f00a | 8 | #include <cinttypes> |
Rita Yang |
2:ca014ee9f00a | 9 | |
Rita Yang |
2:ca014ee9f00a | 10 | // These pin assignments are arbitrary, you will need to change them accordingly |
Rita Yang |
2:ca014ee9f00a | 11 | #define PIN_SPI_MOSI p20 |
Rita Yang |
2:ca014ee9f00a | 12 | #define PIN_SPI_MISO p21 |
Rita Yang |
2:ca014ee9f00a | 13 | #define PIN_SPI_SCK p22 |
Rita Yang |
2:ca014ee9f00a | 14 | #define PIN_ADIS_CS p23 |
Rita Yang |
2:ca014ee9f00a | 15 | #define PIN_ADIS_RST p24 |
Rita Yang |
2:ca014ee9f00a | 16 | |
Rita Yang |
2:ca014ee9f00a | 17 | Serial pc(USBTX, USBRX); |
Rita Yang |
2:ca014ee9f00a | 18 | |
Rita Yang |
2:ca014ee9f00a | 19 | const char* statusToString(bool status) |
Rita Yang |
2:ca014ee9f00a | 20 | { |
Rita Yang |
2:ca014ee9f00a | 21 | if(status) |
Rita Yang |
2:ca014ee9f00a | 22 | { |
Rita Yang |
2:ca014ee9f00a | 23 | return "Yes"; |
Rita Yang |
2:ca014ee9f00a | 24 | } |
Rita Yang |
2:ca014ee9f00a | 25 | else |
Rita Yang |
2:ca014ee9f00a | 26 | { |
Rita Yang |
2:ca014ee9f00a | 27 | return "No"; |
Rita Yang |
2:ca014ee9f00a | 28 | } |
Rita Yang |
2:ca014ee9f00a | 29 | } |
Rita Yang |
2:ca014ee9f00a | 30 | |
Rita Yang |
2:ca014ee9f00a | 31 | void ADIS16467TestSuite::test_readData() { |
Rita Yang |
2:ca014ee9f00a | 32 | while(1) { |
Rita Yang |
2:ca014ee9f00a | 33 | wait_ms(600); |
Rita Yang |
2:ca014ee9f00a | 34 | |
Rita Yang |
2:ca014ee9f00a | 35 | float gyroX = (float)(imu->readGyroX()) * imu->GYRO_CONV; |
Rita Yang |
2:ca014ee9f00a | 36 | float gyroY = (float)(imu->readGyroY()) * imu->GYRO_CONV; |
Rita Yang |
2:ca014ee9f00a | 37 | float gyroZ = (float)(imu->readGyroZ()) * imu->GYRO_CONV; |
Rita Yang |
2:ca014ee9f00a | 38 | float accelX = (float)(imu->readAccelX()) * imu->ACCEL_CONV; |
Rita Yang |
2:ca014ee9f00a | 39 | float accelY = (float)(imu->readAccelY()) * imu->ACCEL_CONV; |
Rita Yang |
2:ca014ee9f00a | 40 | float accelZ = (float)(imu->readAccelZ()) * imu->ACCEL_CONV; |
Rita Yang |
2:ca014ee9f00a | 41 | float intTemp = (float)(imu->readInternalTemp()) * imu->TEMP_CONV; |
Rita Yang |
2:ca014ee9f00a | 42 | uint16_t dataCount = imu->readDataCounter(); |
Rita Yang |
2:ca014ee9f00a | 43 | |
Rita Yang |
2:ca014ee9f00a | 44 | pc.printf("Gyro X : %.2f degree/sec\r\n", gyroX); |
Rita Yang |
2:ca014ee9f00a | 45 | pc.printf("Gyro Y : %.2f degree/sec\r\n", gyroY); |
Rita Yang |
2:ca014ee9f00a | 46 | pc.printf("Gyro Z : %.2f degree/sec\r\n", gyroZ); |
Rita Yang |
2:ca014ee9f00a | 47 | pc.printf("Accel X : %.2f mg\r\n", accelX); |
Rita Yang |
2:ca014ee9f00a | 48 | pc.printf("Accel Y : %.2f mg\r\n", accelY); |
Rita Yang |
2:ca014ee9f00a | 49 | pc.printf("Accel Z : %.2f mg\r\n", accelZ); |
Rita Yang |
2:ca014ee9f00a | 50 | pc.printf("Internal Temperature : %.2f C\r\n", intTemp); |
Rita Yang |
2:ca014ee9f00a | 51 | pc.printf("Data Counter : %5d\r\n", dataCount); |
Rita Yang |
2:ca014ee9f00a | 52 | pc.printf("\r\n"); |
Rita Yang |
2:ca014ee9f00a | 53 | } |
Rita Yang |
2:ca014ee9f00a | 54 | } |
Rita Yang |
2:ca014ee9f00a | 55 | |
Rita Yang |
2:ca014ee9f00a | 56 | void ADIS16467TestSuite::test_printFlags() { |
Rita Yang |
2:ca014ee9f00a | 57 | pc.printf("-----Error Flags-----\r\n"); |
Rita Yang |
2:ca014ee9f00a | 58 | pc.printf("Clock Error : %s\r\n", statusToString(imu->getClockError())); |
Rita Yang |
2:ca014ee9f00a | 59 | pc.printf("Memory Failure : %s\r\n", statusToString(imu->getMemFailure())); |
Rita Yang |
2:ca014ee9f00a | 60 | pc.printf("Sensor Failure : %s\r\n", statusToString(imu->getSensorFailure())); |
Rita Yang |
2:ca014ee9f00a | 61 | pc.printf("Standby Mode : %s\r\n", statusToString(imu->getStandbyMode())); |
Rita Yang |
2:ca014ee9f00a | 62 | pc.printf("SPI Communication Error : %s\r\n", statusToString(imu->getSPIError())); |
Rita Yang |
2:ca014ee9f00a | 63 | pc.printf("Flash Memory Update Failure : %s\r\n", statusToString(imu->getFlashUpFail())); |
Rita Yang |
2:ca014ee9f00a | 64 | pc.printf("Datapath Overrun : %s\r\n", statusToString(imu->getDatapathOverrun())); |
Rita Yang |
2:ca014ee9f00a | 65 | } |
Rita Yang |
2:ca014ee9f00a | 66 | |
Rita Yang |
2:ca014ee9f00a | 67 | void ADIS16467TestSuite::test_burstRead() { |
Rita Yang |
2:ca014ee9f00a | 68 | struct ADIS16467::BurstReadResult result; |
Rita Yang |
2:ca014ee9f00a | 69 | imu->burstRead(result); |
Rita Yang |
2:ca014ee9f00a | 70 | |
Rita Yang |
2:ca014ee9f00a | 71 | pc.printf("Gyro X : %.2f degree/sec\r\n", ((float)result.gyroX * imu->GYRO_CONV)); |
Rita Yang |
2:ca014ee9f00a | 72 | pc.printf("Gyro Y : %.2f degree/sec\r\n", ((float)result.gyroY * imu->GYRO_CONV)); |
Rita Yang |
2:ca014ee9f00a | 73 | pc.printf("Gyro Z : %.2f degree/sec\r\n", ((float)result.gyroZ * imu->GYRO_CONV)); |
Rita Yang |
2:ca014ee9f00a | 74 | pc.printf("Accel X : %.2f mg\r\n", ((float)result.accelX * imu->ACCEL_CONV)); |
Rita Yang |
2:ca014ee9f00a | 75 | pc.printf("Accel Y : %.2f mg\r\n", ((float)result.accelY * imu->ACCEL_CONV)); |
Rita Yang |
2:ca014ee9f00a | 76 | pc.printf("Accel Z : %.2f mg\r\n", ((float)result.accelZ * imu->ACCEL_CONV)); |
Rita Yang |
2:ca014ee9f00a | 77 | pc.printf("Internal Temperature : %.2f C\r\n", ((float)result.internalTemp * imu->TEMP_CONV)); |
Rita Yang |
2:ca014ee9f00a | 78 | pc.printf("Data Counter : %5d\r\n", result.dataCounter); |
Rita Yang |
2:ca014ee9f00a | 79 | pc.printf("Checksum Value : %5d\r\n", result.checkSum); |
Rita Yang |
2:ca014ee9f00a | 80 | |
Rita Yang |
2:ca014ee9f00a | 81 | imu->setErrorFlags(result.statusDiag); |
Rita Yang |
2:ca014ee9f00a | 82 | test_printFlags(); |
Rita Yang |
2:ca014ee9f00a | 83 | imu->resetAllFlags(); |
Rita Yang |
2:ca014ee9f00a | 84 | } |
Rita Yang |
2:ca014ee9f00a | 85 | |
Rita Yang |
2:ca014ee9f00a | 86 | void ADIS16467TestSuite::test_readFlags() { |
Rita Yang |
2:ca014ee9f00a | 87 | imu->setErrorFlags(imu->readStatDiag()); |
Rita Yang |
2:ca014ee9f00a | 88 | test_printFlags(); |
Rita Yang |
2:ca014ee9f00a | 89 | imu->resetAllFlags(); |
Rita Yang |
2:ca014ee9f00a | 90 | } |
Rita Yang |
2:ca014ee9f00a | 91 | |
Rita Yang |
2:ca014ee9f00a | 92 | void ADIS16467TestSuite::test_sensorSelfTest() { |
Rita Yang |
2:ca014ee9f00a | 93 | imu->sensorSelfTest(); |
Rita Yang |
2:ca014ee9f00a | 94 | test_printFlags(); |
Rita Yang |
2:ca014ee9f00a | 95 | imu->resetAllFlags(); |
Rita Yang |
2:ca014ee9f00a | 96 | } |
Rita Yang |
2:ca014ee9f00a | 97 | |
Rita Yang |
2:ca014ee9f00a | 98 | void ADIS16467TestSuite::test_setPoll(uint16_t pollRate) |
Rita Yang |
2:ca014ee9f00a | 99 | { |
Rita Yang |
2:ca014ee9f00a | 100 | const float print_time = 1.0f; |
Rita Yang |
2:ca014ee9f00a | 101 | |
Rita Yang |
2:ca014ee9f00a | 102 | imu->setPollRate(pollRate); |
Rita Yang |
2:ca014ee9f00a | 103 | imu->resetDeltaAngle(); |
Rita Yang |
2:ca014ee9f00a | 104 | |
Rita Yang |
2:ca014ee9f00a | 105 | Timer printTimer; |
Rita Yang |
2:ca014ee9f00a | 106 | printTimer.start(); |
Rita Yang |
2:ca014ee9f00a | 107 | |
Rita Yang |
2:ca014ee9f00a | 108 | while(1) |
Rita Yang |
2:ca014ee9f00a | 109 | { |
Rita Yang |
2:ca014ee9f00a | 110 | |
Rita Yang |
2:ca014ee9f00a | 111 | wait(1/ static_cast<float>(pollRate * 2)); |
Rita Yang |
2:ca014ee9f00a | 112 | |
Rita Yang |
2:ca014ee9f00a | 113 | imu->updateDeltaAngles(); |
Rita Yang |
2:ca014ee9f00a | 114 | |
Rita Yang |
2:ca014ee9f00a | 115 | if(printTimer.read() > print_time) |
Rita Yang |
2:ca014ee9f00a | 116 | { |
Rita Yang |
2:ca014ee9f00a | 117 | printTimer.reset(); |
Rita Yang |
2:ca014ee9f00a | 118 | |
Rita Yang |
2:ca014ee9f00a | 119 | float gyroX = (float)(imu->readGyroX()) * imu->GYRO_CONV; |
Rita Yang |
2:ca014ee9f00a | 120 | float gyroY = (float)(imu->readGyroY()) * imu->GYRO_CONV; |
Rita Yang |
2:ca014ee9f00a | 121 | float gyroZ = (float)(imu->readGyroZ()) * imu->GYRO_CONV; |
Rita Yang |
2:ca014ee9f00a | 122 | float accelX = (float)(imu->readAccelX()) * imu->ACCEL_CONV; |
Rita Yang |
2:ca014ee9f00a | 123 | float accelY = (float)(imu->readAccelY()) * imu->ACCEL_CONV; |
Rita Yang |
2:ca014ee9f00a | 124 | float accelZ = (float)(imu->readAccelZ()) * imu->ACCEL_CONV; |
Rita Yang |
2:ca014ee9f00a | 125 | float intTemp = (float)(imu->readInternalTemp()) * imu->TEMP_CONV; |
Rita Yang |
2:ca014ee9f00a | 126 | float timeStamp = (float)(imu->readTimeStamp()) * imu->TIME_CONV; |
Rita Yang |
2:ca014ee9f00a | 127 | uint16_t dataCount = imu->readDataCounter(); |
Rita Yang |
2:ca014ee9f00a | 128 | float deltaAngXSum = (float)(imu->getDeltaAngleXSum()) * imu->DELTA_ANGLE_CONV; |
Rita Yang |
2:ca014ee9f00a | 129 | float deltaAngYSum = (float)(imu->getDeltaAngleYSum()) * imu->DELTA_ANGLE_CONV; |
Rita Yang |
2:ca014ee9f00a | 130 | float deltaAngZSum = (float)(imu->getDeltaAngleZSum()) * imu->DELTA_ANGLE_CONV; |
Rita Yang |
2:ca014ee9f00a | 131 | |
Rita Yang |
2:ca014ee9f00a | 132 | pc.printf("Gyro X : %.2f degree/sec\r\n", gyroX); |
Rita Yang |
2:ca014ee9f00a | 133 | pc.printf("Gyro Y : %.2f degree/sec\r\n", gyroY); |
Rita Yang |
2:ca014ee9f00a | 134 | pc.printf("Gyro Z : %.2f degree/sec\r\n", gyroZ); |
Rita Yang |
2:ca014ee9f00a | 135 | pc.printf("Accel X : %.2f mg\r\n", accelX); |
Rita Yang |
2:ca014ee9f00a | 136 | pc.printf("Accel Y : %.2f mg\r\n", accelY); |
Rita Yang |
2:ca014ee9f00a | 137 | pc.printf("Accel Z : %.2f mg\r\n", accelZ); |
Rita Yang |
2:ca014ee9f00a | 138 | pc.printf("Delta Angle X Sum: %.2f degree\r\n", deltaAngXSum); |
Rita Yang |
2:ca014ee9f00a | 139 | pc.printf("Delta Angle Y Sum: %.2f degree\r\n", deltaAngYSum); |
Rita Yang |
2:ca014ee9f00a | 140 | pc.printf("Delta Angle Z Sum: %.2f degree\r\n", deltaAngZSum); |
Rita Yang |
2:ca014ee9f00a | 141 | pc.printf("Internal Temperature : %.2f C\r\n", intTemp); |
Rita Yang |
2:ca014ee9f00a | 142 | pc.printf("Time Stamp : %.2f us\r\n", timeStamp); |
Rita Yang |
2:ca014ee9f00a | 143 | pc.printf("Data Counter : %5d\r\n", dataCount); |
Rita Yang |
2:ca014ee9f00a | 144 | pc.printf("\r\n"); |
Rita Yang |
2:ca014ee9f00a | 145 | } |
Rita Yang |
2:ca014ee9f00a | 146 | |
Rita Yang |
2:ca014ee9f00a | 147 | } |
Rita Yang |
2:ca014ee9f00a | 148 | } |
Rita Yang |
2:ca014ee9f00a | 149 | |
Rita Yang |
2:ca014ee9f00a | 150 | void ADIS16467TestSuite::test_calibrateBias() |
Rita Yang |
2:ca014ee9f00a | 151 | { |
Rita Yang |
2:ca014ee9f00a | 152 | const uint16_t pollRate = 10; // Hz |
Rita Yang |
2:ca014ee9f00a | 153 | const float testDuration = 60; // s |
Rita Yang |
2:ca014ee9f00a | 154 | |
Rita Yang |
2:ca014ee9f00a | 155 | imu->setPollRate(pollRate); |
Rita Yang |
2:ca014ee9f00a | 156 | imu->resetDeltaAngle(); |
Rita Yang |
2:ca014ee9f00a | 157 | |
Rita Yang |
2:ca014ee9f00a | 158 | pc.printf("Place the IMU on a flat surface and keep it still. Orientation is not important.\r\n"); |
Rita Yang |
2:ca014ee9f00a | 159 | |
Rita Yang |
2:ca014ee9f00a | 160 | wait(5); |
Rita Yang |
2:ca014ee9f00a | 161 | |
Rita Yang |
2:ca014ee9f00a | 162 | |
Rita Yang |
2:ca014ee9f00a | 163 | Timer testTimer; |
Rita Yang |
2:ca014ee9f00a | 164 | testTimer.start(); |
Rita Yang |
2:ca014ee9f00a | 165 | |
Rita Yang |
2:ca014ee9f00a | 166 | while(testTimer.read() < testDuration) |
Rita Yang |
2:ca014ee9f00a | 167 | { |
Rita Yang |
2:ca014ee9f00a | 168 | |
Rita Yang |
2:ca014ee9f00a | 169 | wait(1/ static_cast<float>(pollRate * 2)); |
Rita Yang |
2:ca014ee9f00a | 170 | imu->updateDeltaAngles(); |
Rita Yang |
2:ca014ee9f00a | 171 | |
Rita Yang |
2:ca014ee9f00a | 172 | float deltaAngXSum = (float)(imu->getDeltaAngleXSum()) * imu->DELTA_ANGLE_CONV; |
Rita Yang |
2:ca014ee9f00a | 173 | float deltaAngYSum = (float)(imu->getDeltaAngleYSum()) * imu->DELTA_ANGLE_CONV; |
Rita Yang |
2:ca014ee9f00a | 174 | float deltaAngZSum = (float)(imu->getDeltaAngleZSum()) * imu->DELTA_ANGLE_CONV; |
Rita Yang |
2:ca014ee9f00a | 175 | |
Rita Yang |
2:ca014ee9f00a | 176 | pc.printf("X Drift: %.2f degree\r\n", deltaAngXSum); |
Rita Yang |
2:ca014ee9f00a | 177 | pc.printf("Y Drift: %.2f degree\r\n", deltaAngYSum); |
Rita Yang |
2:ca014ee9f00a | 178 | pc.printf("Z Drift: %.2f degree\r\n", deltaAngZSum); |
Rita Yang |
2:ca014ee9f00a | 179 | } |
Rita Yang |
2:ca014ee9f00a | 180 | |
Rita Yang |
2:ca014ee9f00a | 181 | float timeElapsed = testTimer.read(); |
Rita Yang |
2:ca014ee9f00a | 182 | |
Rita Yang |
2:ca014ee9f00a | 183 | float driftRateX = (float)(imu->getDeltaAngleXSum()) * imu->DELTA_ANGLE_CONV / timeElapsed; |
Rita Yang |
2:ca014ee9f00a | 184 | float driftRateY = (float)(imu->getDeltaAngleYSum()) * imu->DELTA_ANGLE_CONV / timeElapsed; |
Rita Yang |
2:ca014ee9f00a | 185 | float driftRateZ = (float)(imu->getDeltaAngleZSum()) * imu->DELTA_ANGLE_CONV / timeElapsed; |
Rita Yang |
2:ca014ee9f00a | 186 | |
Rita Yang |
2:ca014ee9f00a | 187 | pc.printf("To zero X gyro, set bias to: %f degrees/sec\r\n", -1 * driftRateX); |
Rita Yang |
2:ca014ee9f00a | 188 | pc.printf("To zero Y gyro, set bias to: %f degrees/sec\r\n", -1 * driftRateY); |
Rita Yang |
2:ca014ee9f00a | 189 | pc.printf("To zero Z gyro, set bias to: %f degrees/sec\r\n", -1 * driftRateZ); |
Rita Yang |
2:ca014ee9f00a | 190 | |
Rita Yang |
2:ca014ee9f00a | 191 | } |
Rita Yang |
2:ca014ee9f00a | 192 | |
Rita Yang |
2:ca014ee9f00a | 193 | void ADIS16467TestSuite::test_existence() |
Rita Yang |
2:ca014ee9f00a | 194 | { |
Rita Yang |
2:ca014ee9f00a | 195 | pc.printf("The IMU is connected and working: %s\r\n", imu->checkExistence() ? "True" : "False"); |
Rita Yang |
2:ca014ee9f00a | 196 | } |
Rita Yang |
2:ca014ee9f00a | 197 | |
Rita Yang |
2:ca014ee9f00a | 198 | void ADIS16467TestSuite::test_firmInfo() { |
Rita Yang |
2:ca014ee9f00a | 199 | struct ADIS16467::FirmwareInfo data; |
Rita Yang |
2:ca014ee9f00a | 200 | imu->getFirmwareInformation(data); |
Rita Yang |
2:ca014ee9f00a | 201 | |
Rita Yang |
2:ca014ee9f00a | 202 | pc.printf("Firmware Revision: %" PRIu8 ".%" PRIu8"\r\n", data.firmRevMajor, data.firmRevMinor); |
Rita Yang |
2:ca014ee9f00a | 203 | pc.printf("Firmware Revision Date: %" PRIu8 "/%" PRIu8 "/%" PRIu16 "\r\n", data.firmwareMonth, data.firmwareDay, data.firmwareYear); |
Rita Yang |
2:ca014ee9f00a | 204 | pc.printf("Serial Number: 0x%" PRIx16 "\r\n", data.serialNum); |
Rita Yang |
2:ca014ee9f00a | 205 | } |
Rita Yang |
2:ca014ee9f00a | 206 | |
Rita Yang |
2:ca014ee9f00a | 207 | |
Rita Yang |
2:ca014ee9f00a | 208 | int main() { |
Rita Yang |
2:ca014ee9f00a | 209 | while(true) |
Rita Yang |
2:ca014ee9f00a | 210 | { |
Rita Yang |
2:ca014ee9f00a | 211 | pc.printf("\r\nADIS16467 IMU Test Suite:\r\n"); |
Rita Yang |
2:ca014ee9f00a | 212 | |
Rita Yang |
2:ca014ee9f00a | 213 | ADIS16467::ADIS16467 imuModule = ADIS16467::ADIS16467(&pc, PIN_SPI_MOSI, PIN_SPI_MISO, PIN_SPI_SCK, |
Rita Yang |
2:ca014ee9f00a | 214 | PIN_ADIS_CS, PIN_ADIS_RST); |
Rita Yang |
2:ca014ee9f00a | 215 | |
Rita Yang |
2:ca014ee9f00a | 216 | ADIS16467TestSuite harness; |
Rita Yang |
2:ca014ee9f00a | 217 | harness.imu = &imuModule; |
Rita Yang |
2:ca014ee9f00a | 218 | |
Rita Yang |
2:ca014ee9f00a | 219 | harness.imu->initADIS(); |
Rita Yang |
2:ca014ee9f00a | 220 | |
Rita Yang |
2:ca014ee9f00a | 221 | int test = -1; |
Rita Yang |
2:ca014ee9f00a | 222 | |
Rita Yang |
2:ca014ee9f00a | 223 | //Menu |
Rita Yang |
2:ca014ee9f00a | 224 | pc.printf("Select a test: \n\r"); |
Rita Yang |
2:ca014ee9f00a | 225 | pc.printf("1. Read Data\r\n"); |
Rita Yang |
2:ca014ee9f00a | 226 | pc.printf("2. Read Error Flags\r\n"); |
Rita Yang |
2:ca014ee9f00a | 227 | pc.printf("3. Burst Read\r\n"); |
Rita Yang |
2:ca014ee9f00a | 228 | pc.printf("4. Sensor Self Test\r\n"); |
Rita Yang |
2:ca014ee9f00a | 229 | pc.printf("5. Set Poll Rate\r\n"); |
Rita Yang |
2:ca014ee9f00a | 230 | pc.printf("6. Calibrate Bias\r\n"); |
Rita Yang |
2:ca014ee9f00a | 231 | pc.printf("7. Existence Test\r\n"); |
Rita Yang |
2:ca014ee9f00a | 232 | pc.printf("8. Get Firmware Information\r\n"); |
Rita Yang |
2:ca014ee9f00a | 233 | pc.printf("9. Exit Test Suite\r\n"); |
Rita Yang |
2:ca014ee9f00a | 234 | |
Rita Yang |
2:ca014ee9f00a | 235 | pc.scanf("%d", &test); |
Rita Yang |
2:ca014ee9f00a | 236 | pc.printf("Running test %d:\r\n\n", test); |
Rita Yang |
2:ca014ee9f00a | 237 | |
Rita Yang |
2:ca014ee9f00a | 238 | harness.imu->setGyroBiases(-0.11594f, 0.258192f, 0.272063f); |
Rita Yang |
2:ca014ee9f00a | 239 | |
Rita Yang |
2:ca014ee9f00a | 240 | //Run Tests |
Rita Yang |
2:ca014ee9f00a | 241 | switch(test) { |
Rita Yang |
2:ca014ee9f00a | 242 | case 1 : harness.test_readData(); break; |
Rita Yang |
2:ca014ee9f00a | 243 | case 2 : harness.test_readFlags(); break; |
Rita Yang |
2:ca014ee9f00a | 244 | case 3 : harness.test_burstRead(); break; |
Rita Yang |
2:ca014ee9f00a | 245 | case 4 : harness.test_sensorSelfTest(); break; |
Rita Yang |
2:ca014ee9f00a | 246 | case 5 : |
Rita Yang |
2:ca014ee9f00a | 247 | { |
Rita Yang |
2:ca014ee9f00a | 248 | int rate = -1; |
Rita Yang |
2:ca014ee9f00a | 249 | pc.printf("Input poll rate: "); |
Rita Yang |
2:ca014ee9f00a | 250 | pc.scanf("%d", &rate); |
Rita Yang |
2:ca014ee9f00a | 251 | harness.test_setPoll(rate); |
Rita Yang |
2:ca014ee9f00a | 252 | } |
Rita Yang |
2:ca014ee9f00a | 253 | case 6 : harness.test_calibrateBias(); break; |
Rita Yang |
2:ca014ee9f00a | 254 | case 7 : harness.test_existence(); break; |
Rita Yang |
2:ca014ee9f00a | 255 | case 8 : harness.test_firmInfo(); break; |
Rita Yang |
2:ca014ee9f00a | 256 | case 9 : printf("Exiting Test Suite.\r\n"); return 0; |
Rita Yang |
2:ca014ee9f00a | 257 | default : printf("Invalid Test Number Selection. Please Run Again.\r\n"); return 1; |
Rita Yang |
2:ca014ee9f00a | 258 | } |
Rita Yang |
2:ca014ee9f00a | 259 | |
Rita Yang |
2:ca014ee9f00a | 260 | pc.printf("Done.\r\n"); |
Rita Yang |
2:ca014ee9f00a | 261 | |
Rita Yang |
2:ca014ee9f00a | 262 | } |
Rita Yang |
2:ca014ee9f00a | 263 | |
Rita Yang |
2:ca014ee9f00a | 264 | } |
Rita Yang |
2:ca014ee9f00a | 265 | |
Rita Yang |
2:ca014ee9f00a | 266 | |
Rita Yang |
2:ca014ee9f00a | 267 | |
Rita Yang |
2:ca014ee9f00a | 268 |