Advertisement
Guest User

imu_aspirin.h

a guest
Jun 29th, 2012
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.06 KB | None | 0 0
  1. inline void imu_aspirin_event(void (* _gyro_handler)(void), void (* _accel_handler)(void), void (* _mag_handler)(void))
  2. {
  3.     switch(imu_aspirin.status) {
  4.         case AspirinStatusUninit :
  5.             return;
  6.         case AspirinStatusIdle :
  7.             break;
  8.         case AspirinStatusReadingGyro :
  9.             if (imu_aspirin.i2c_trans_gyro.status == I2CTransSuccess) {
  10.                 imu_aspirin.status = AspirinStatusIdle;
  11.                 imu_aspirin.time_since_last_gyro_reading = 0;
  12.                 gyro_copy_i2c();
  13.                 _gyro_handler();
  14.             }
  15.             break;
  16.         case AspirinStatusReadingMag :
  17.             if (imu_aspirin.i2c_trans_mag.status == I2CTransSuccess) {
  18.                 imu_aspirin.status = AspirinStatusIdle;
  19.                 imu_aspirin.time_since_last_mag_reading = 0;
  20.                 mag_copy_i2c();
  21.                 _mag_handler();
  22.             }
  23.             break;
  24.         case AspirinStatusReadingAccel :
  25.             imu_aspirin_arch_int_disable();
  26.             imu_aspirin.time_since_last_accel_reading = 0;
  27.             accel_copy_spi();
  28.             _accel_handler();
  29.             imu_aspirin_arch_int_enable();
  30.             imu_aspirin.status = AspirinStatusIdle;
  31.             break;
  32.         default:
  33.             imu_aspirin.status = AspirinStatusUninit;
  34.             return;
  35.             break;
  36.     }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement