Home | History | Annotate | Download | only in libsensors_iio
      1 /*
      2 * Copyright (C) 2014 Invensense, Inc.
      3 *
      4 * Licensed under the Apache License, Version 2.0 (the "License");
      5 * you may not use this file except in compliance with the License.
      6 * You may obtain a copy of the License at
      7 *
      8 *      http://www.apache.org/licenses/LICENSE-2.0
      9 *
     10 * Unless required by applicable law or agreed to in writing, software
     11 * distributed under the License is distributed on an "AS IS" BASIS,
     12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 * See the License for the specific language governing permissions and
     14 * limitations under the License.
     15 */
     16 
     17 #ifndef ANDROID_SENSORS_H
     18 #define ANDROID_SENSORS_H
     19 
     20 #include <stdint.h>
     21 #include <errno.h>
     22 #include <sys/cdefs.h>
     23 #include <sys/types.h>
     24 
     25 #include <linux/input.h>
     26 
     27 #include <hardware/hardware.h>
     28 #include <hardware/sensors.h>
     29 
     30 __BEGIN_DECLS
     31 
     32 /*****************************************************************************/
     33 
     34 #ifndef ARRAY_SIZE
     35 #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
     36 #endif
     37 
     38 #undef ENABLE_PRESSURE
     39 
     40 enum {
     41     ID_GY = 0,
     42     ID_RG,
     43     ID_A,
     44     ID_M,
     45     ID_RM,
     46 #ifdef ENABLE_PRESSURE
     47     ID_PS,
     48 #endif
     49     ID_O,
     50     ID_RV,
     51     ID_GRV,
     52     ID_LA,
     53     ID_GR,
     54     ID_SM,
     55     ID_P,
     56     ID_SC,
     57     ID_GMRV,
     58     ID_SO
     59 };
     60 
     61 enum {
     62     Gyro = 0,
     63     RawGyro,
     64     Accelerometer,
     65     MagneticField,
     66     RawMagneticField,
     67 #ifdef ENABLE_PRESSURE
     68     Pressure,
     69 #endif
     70     Orientation,
     71     RotationVector,
     72     GameRotationVector,
     73     LinearAccel,
     74     Gravity,
     75     SignificantMotion,
     76     StepDetector,
     77     StepCounter,
     78     GeomagneticRotationVector,
     79     NumSensors
     80 };
     81 
     82 #ifdef ENABLE_PRESSURE
     83 #define LAST_HW_SENSOR	Pressure
     84 #else
     85 #define LAST_HW_SENSOR	RawMagneticField
     86 #endif
     87 
     88 /* Physical parameters of the sensors supported by Invensense MPL */
     89 #define SENSORS_GYROSCOPE_HANDLE                   (ID_GY)
     90 #define SENSORS_RAW_GYROSCOPE_HANDLE               (ID_RG)
     91 #define SENSORS_ACCELERATION_HANDLE                (ID_A)
     92 #define SENSORS_MAGNETIC_FIELD_HANDLE              (ID_M)
     93 #define SENSORS_RAW_MAGNETIC_FIELD_HANDLE          (ID_RM)
     94 #define SENSORS_PRESSURE_HANDLE                    (ID_PS)
     95 #define SENSORS_ORIENTATION_HANDLE                 (ID_O)
     96 #define SENSORS_ROTATION_VECTOR_HANDLE             (ID_RV)
     97 #define SENSORS_GAME_ROTATION_VECTOR_HANDLE        (ID_GRV)
     98 #define SENSORS_LINEAR_ACCEL_HANDLE                (ID_LA)
     99 #define SENSORS_GRAVITY_HANDLE                     (ID_GR)
    100 #define SENSORS_SIGNIFICANT_MOTION_HANDLE          (ID_SM)
    101 #define SENSORS_PEDOMETER_HANDLE                   (ID_P)
    102 #define SENSORS_STEP_COUNTER_HANDLE                (ID_SC)
    103 #define SENSORS_GEOMAGNETIC_ROTATION_VECTOR_HANDLE (ID_GMRV)
    104 #define SENSORS_SCREEN_ORIENTATION_HANDLE          (ID_SO)
    105 
    106 /*****************************************************************************/
    107 
    108 /*
    109    Android Lollipop
    110    Populate sensor_t structure according to hardware sensors.h
    111    {name, vendor, version, handle,
    112     type, maxRange, resolution, power, minDelay, fifoReservedEventCount, fifoMaxEventCount,
    113     stringType, requiredPermission, maxDelay, flags, reserved[]}
    114 */
    115 #if defined ANDROID_LOLLIPOP
    116 
    117 static struct sensor_t sBaseSensorList[] =
    118 {
    119     {"MPL Gyroscope", "Invensense", 1, SENSORS_GYROSCOPE_HANDLE,
    120      SENSOR_TYPE_GYROSCOPE, 2000.0f, 1.0f, 0.5f, 10000, 0, 124,
    121      SENSOR_STRING_TYPE_GYROSCOPE, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    122     {"MPL Raw Gyroscope", "Invensense", 1, SENSORS_RAW_GYROSCOPE_HANDLE,
    123      SENSOR_TYPE_GYROSCOPE_UNCALIBRATED, 2000.0f, 1.0f, 0.5f, 10000, 0, 124,
    124      SENSOR_STRING_TYPE_GYROSCOPE_UNCALIBRATED, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    125     {"MPL Accelerometer", "Invensense", 1, SENSORS_ACCELERATION_HANDLE,
    126      SENSOR_TYPE_ACCELEROMETER, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
    127      SENSOR_STRING_TYPE_ACCELEROMETER, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    128     {"MPL Magnetic Field", "Invensense", 1, SENSORS_MAGNETIC_FIELD_HANDLE,
    129      SENSOR_TYPE_MAGNETIC_FIELD, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
    130      SENSOR_STRING_TYPE_MAGNETIC_FIELD, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    131     {"MPL Raw Magnetic Field", "Invensense", 1, SENSORS_RAW_MAGNETIC_FIELD_HANDLE,
    132      SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
    133      SENSOR_STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    134 #ifdef ENABLE_PRESSURE
    135     {"MPL Pressure", "Invensense", 1, SENSORS_PRESSURE_HANDLE,
    136      SENSOR_TYPE_PRESSURE, 10240.0f, 1.0f, 0.5f, 10000, 0, 165,
    137      SENSOR_STRING_TYPE_PRESSURE, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    138 #endif
    139     {"MPL Orientation", "Invensense", 1, SENSORS_ORIENTATION_HANDLE,
    140      SENSOR_TYPE_ORIENTATION, 360.0f, 1.0f, 9.7f, 10000, 0, 0,
    141      SENSOR_STRING_TYPE_ORIENTATION, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    142     {"MPL Rotation Vector", "Invensense", 1, SENSORS_ROTATION_VECTOR_HANDLE,
    143      SENSOR_TYPE_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
    144      SENSOR_STRING_TYPE_ROTATION_VECTOR, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    145     {"MPL Game Rotation Vector", "Invensense", 1, SENSORS_GAME_ROTATION_VECTOR_HANDLE,
    146      SENSOR_TYPE_GAME_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, 0, 62,
    147      SENSOR_STRING_TYPE_GAME_ROTATION_VECTOR, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    148     {"MPL Linear Acceleration", "Invensense", 1, SENSORS_LINEAR_ACCEL_HANDLE,
    149      SENSOR_TYPE_LINEAR_ACCELERATION, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
    150      SENSOR_STRING_TYPE_LINEAR_ACCELERATION, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    151     {"MPL Gravity", "Invensense", 1, SENSORS_GRAVITY_HANDLE,
    152      SENSOR_TYPE_GRAVITY, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
    153      SENSOR_STRING_TYPE_GRAVITY, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    154     {"MPL Significant Motion", "Invensense", 1, SENSORS_SIGNIFICANT_MOTION_HANDLE,
    155      SENSOR_TYPE_SIGNIFICANT_MOTION, 100.0f, 1.0f, 1.1f, 0, 0, 0,
    156      SENSOR_STRING_TYPE_SIGNIFICANT_MOTION, "", 0,
    157      SENSOR_FLAG_ONE_SHOT_MODE | SENSOR_FLAG_WAKE_UP, {}},
    158     {"MPL Step Detector", "Invensense", 1, SENSORS_PEDOMETER_HANDLE,
    159      SENSOR_TYPE_STEP_DETECTOR, 100.0f, 1.0f, 1.1f, 0, 0, 124,
    160      SENSOR_STRING_TYPE_STEP_DETECTOR, "", 0, SENSOR_FLAG_SPECIAL_REPORTING_MODE, {}},
    161     {"MPL Step Counter", "Invensense", 1, SENSORS_STEP_COUNTER_HANDLE,
    162      SENSOR_TYPE_STEP_COUNTER, 100.0f, 1.0f, 1.1f, 0, 0, 0,
    163      SENSOR_STRING_TYPE_STEP_COUNTER, "", 0, SENSOR_FLAG_ON_CHANGE_MODE, {}},
    164     {"MPL Geomagnetic Rotation Vector", "Invensense", 1,
    165      SENSORS_GEOMAGNETIC_ROTATION_VECTOR_HANDLE,
    166      SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 5000, 0, 0,
    167      SENSOR_STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    168 #ifdef ENABLE_DMP_SCREEN_AUTO_ROTATION
    169     {"MPL Screen Orientation", "Invensense ", 1, SENSORS_SCREEN_ORIENTATION_HANDLE,
    170      SENSOR_TYPE_SCREEN_ORIENTATION, 100.0f, 1.0f, 1.1f, 0, 0, 0,
    171      SENSOR_STRING_TYPE_SCREEN_ORIENTATION, "", 0, SENSOR_FLAG_ON_CHANGE_MODE, {}},
    172 #endif
    173 };
    174 /*
    175    Android KitKat
    176    Populate sensor_t structure according to hardware sensors.h
    177    {name, vendor, version,
    178     handle,
    179     type, maxRange, resolution, power, minDelay, fifoReservedEventCount, fifoMaxEventCount, reserved[]}
    180 */
    181 #elif defined ANDROID_KITKAT
    182 static struct sensor_t sBaseSensorList[] =
    183 {
    184     {"MPL Gyroscope", "Invensense", 1, SENSORS_GYROSCOPE_HANDLE,
    185      SENSOR_TYPE_GYROSCOPE, 2000.0f, 1.0f, 0.5f, 10000, 0, 124,
    186      SENSOR_STRING_TYPE_GYROSCOPE, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    187     {"MPL Raw Gyroscope", "Invensense", 1, SENSORS_RAW_GYROSCOPE_HANDLE,
    188      SENSOR_TYPE_GYROSCOPE_UNCALIBRATED, 2000.0f, 1.0f, 0.5f, 10000, 0, 124,
    189      SENSOR_STRING_TYPE_GYROSCOPE_UNCALIBRATED, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    190     {"MPL Accelerometer", "Invensense", 1, SENSORS_ACCELERATION_HANDLE,
    191      SENSOR_TYPE_ACCELEROMETER, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
    192      SENSOR_STRING_TYPE_ACCELEROMETER, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    193     {"MPL Magnetic Field", "Invensense", 1, SENSORS_MAGNETIC_FIELD_HANDLE,
    194      SENSOR_TYPE_MAGNETIC_FIELD, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
    195      SENSOR_STRING_TYPE_MAGNETIC_FIELD, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    196     {"MPL Raw Magnetic Field", "Invensense", 1, SENSORS_RAW_MAGNETIC_FIELD_HANDLE,
    197      SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
    198      SENSOR_STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    199 #ifdef ENABLE_PRESSURE
    200     {"MPL Pressure", "Invensense", 1, SENSORS_PRESSURE_HANDLE,
    201      SENSOR_TYPE_PRESSURE, 10240.0f, 1.0f, 0.5f, 10000, 0, 165,
    202      SENSOR_STRING_TYPE_PRESSURE, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    203 #endif
    204     {"MPL Orientation", "Invensense", 1, SENSORS_ORIENTATION_HANDLE,
    205      SENSOR_TYPE_ORIENTATION, 360.0f, 1.0f, 9.7f, 10000, 0, 0,
    206      SENSOR_STRING_TYPE_ORIENTATION, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    207     {"MPL Rotation Vector", "Invensense", 1, SENSORS_ROTATION_VECTOR_HANDLE,
    208      SENSOR_TYPE_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
    209      SENSOR_STRING_TYPE_ROTATION_VECTOR, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    210     {"MPL Game Rotation Vector", "Invensense", 1, SENSORS_GAME_ROTATION_VECTOR_HANDLE,
    211      SENSOR_TYPE_GAME_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, 0, 62,
    212      SENSOR_STRING_TYPE_GAME_ROTATION_VECTOR, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    213     {"MPL Linear Acceleration", "Invensense", 1, SENSORS_LINEAR_ACCEL_HANDLE,
    214      SENSOR_TYPE_LINEAR_ACCELERATION, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
    215      SENSOR_STRING_TYPE_LINEAR_ACCELERATION, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    216     {"MPL Gravity", "Invensense", 1, SENSORS_GRAVITY_HANDLE,
    217      SENSOR_TYPE_GRAVITY, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
    218      SENSOR_STRING_TYPE_GRAVITY, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    219     {"MPL Significant Motion", "Invensense", 1, SENSORS_SIGNIFICANT_MOTION_HANDLE,
    220      SENSOR_TYPE_SIGNIFICANT_MOTION, 100.0f, 1.0f, 1.1f, 0, 0, 0,
    221      SENSOR_STRING_TYPE_SIGNIFICANT_MOTION, 0, 0,
    222      SENSOR_FLAG_ONE_SHOT_MODE | SENSOR_FLAG_WAKE_UP, {}},
    223     {"MPL Step Detector", "Invensense", 1, SENSORS_PEDOMETER_HANDLE,
    224      SENSOR_TYPE_STEP_DETECTOR, 100.0f, 1.0f, 1.1f, 0, 0, 124,
    225      SENSOR_STRING_TYPE_STEP_DETECTOR, 0, 0, SENSOR_FLAG_SPECIAL_REPORTING_MODE, {}},
    226     {"MPL Step Counter", "Invensense", 1, SENSORS_STEP_COUNTER_HANDLE,
    227      SENSOR_TYPE_STEP_COUNTER, 100.0f, 1.0f, 1.1f, 0, 0, 0,
    228      SENSOR_STRING_TYPE_STEP_COUNTER, 0, 0, SENSOR_FLAG_ON_CHANGE_MODE, {}},
    229     {"MPL Geomagnetic Rotation Vector", "Invensense", 1,
    230      SENSORS_GEOMAGNETIC_ROTATION_VECTOR_HANDLE,
    231      SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 5000, 0, 0,
    232      SENSOR_STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
    233 #ifdef ENABLE_DMP_SCREEN_AUTO_ROTATION
    234     {"MPL Screen Orientation", "Invensense ", 1, SENSORS_SCREEN_ORIENTATION_HANDLE,
    235      SENSOR_TYPE_SCREEN_ORIENTATION, 100.0f, 1.0f, 1.1f, 0, 0, 0,
    236      SENSOR_STRING_TYPE_SCREEN_ORIENTATION, 0, 0, SENSOR_FLAG_ON_CHANGE_MODE, {}},
    237 #endif
    238 };
    239 #else  //ANDROID_KITKAT END
    240 static struct sensor_t sBaseSensorList[] =
    241 {
    242     {"MPL Gyroscope", "Invensense", 1,
    243      SENSORS_GYROSCOPE_HANDLE,
    244      SENSOR_TYPE_GYROSCOPE, 2000.0f, 1.0f, 0.5f, 10000, {}},
    245     {"MPL Raw Gyroscope", "Invensense", 1,
    246      SENSORS_RAW_GYROSCOPE_HANDLE,
    247      SENSOR_TYPE_GYROSCOPE_UNCALIBRATED, 2000.0f, 1.0f, 0.5f, 10000, {}},
    248     {"MPL Accelerometer", "Invensense", 1,
    249      SENSORS_ACCELERATION_HANDLE,
    250      SENSOR_TYPE_ACCELEROMETER, 10240.0f, 1.0f, 0.5f, 10000, {}},
    251     {"MPL Magnetic Field", "Invensense", 1,
    252      SENSORS_MAGNETIC_FIELD_HANDLE,
    253      SENSOR_TYPE_MAGNETIC_FIELD, 10240.0f, 1.0f, 0.5f, 10000, {}},
    254     {"MPL Raw Magnetic Field", "Invensense", 1,
    255      SENSORS_RAW_MAGNETIC_FIELD_HANDLE,
    256      SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED, 10240.0f, 1.0f, 0.5f, 10000, {}},
    257 #ifdef ENABLE_PRESSURE
    258     {"MPL Pressure", "Invensense", 1,
    259      SENSORS_PRESSURE_HANDLE,
    260      SENSOR_TYPE_PRESSURE, 10240.0f, 1.0f, 0.5f, 10000, {}},
    261 #endif
    262     {"MPL Orientation", "Invensense", 1,
    263      SENSORS_ORIENTATION_HANDLE,
    264      SENSOR_TYPE_ORIENTATION, 360.0f, 1.0f, 9.7f, 10000, {}},
    265     {"MPL Rotation Vector", "Invensense", 1,
    266      SENSORS_ROTATION_VECTOR_HANDLE,
    267      SENSOR_TYPE_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, {}},
    268     {"MPL Game Rotation Vector", "Invensense", 1,
    269      SENSORS_GAME_ROTATION_VECTOR_HANDLE,
    270      SENSOR_TYPE_GAME_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, {}},
    271     {"MPL Linear Acceleration", "Invensense", 1,
    272      SENSORS_LINEAR_ACCEL_HANDLE,
    273      SENSOR_TYPE_LINEAR_ACCELERATION, 10240.0f, 1.0f, 0.5f, 10000, {}},
    274     {"MPL Gravity", "Invensense", 1,
    275      SENSORS_GRAVITY_HANDLE,
    276      SENSOR_TYPE_GRAVITY, 10240.0f, 1.0f, 0.5f, 10000, {}},
    277     {"MPL Significant Motion", "Invensense", 1,
    278      SENSORS_SIGNIFICANT_MOTION_HANDLE,
    279      SENSOR_TYPE_SIGNIFICANT_MOTION, 100.0f, 1.0f, 1.1f, 0, {}},
    280     {"MPL Step Detector", "Invensense", 1,
    281      SENSORS_PEDOMETER_HANDLE,
    282      SENSOR_TYPE_STEP_DETECTOR, 100.0f, 1.0f, 1.1f, 0, {}},
    283     {"MPL Step Counter", "Invensense", 1,
    284      SENSORS_STEP_COUNTER_HANDLE,
    285      SENSOR_TYPE_STEP_COUNTER, 100.0f, 1.0f, 1.1f, 0, {}},
    286     {"MPL Geomagnetic Rotation Vector", "Invensense", 1,
    287      SENSORS_GEOMAGNETIC_ROTATION_VECTOR_HANDLE,
    288      SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, {}},
    289 #ifdef ENABLE_DMP_SCREEN_AUTO_ROTATION
    290     {"MPL Screen Orientation", "Invensense ", 1,
    291      SENSORS_SCREEN_ORIENTATION_HANDLE,
    292      SENSOR_TYPE_SCREEN_ORIENTATION, 100.0f, 1.0f, 1.1f, 0, {}},
    293 #endif
    294 };
    295 #endif //ANDROID_JELLYBEAN END
    296 
    297 /*****************************************************************************/
    298 
    299 /*
    300  * The SENSORS Module
    301  */
    302 
    303 /* ITG3500 */
    304 #define EVENT_TYPE_GYRO_X          REL_X
    305 #define EVENT_TYPE_GYRO_Y          REL_Y
    306 #define EVENT_TYPE_GYRO_Z          REL_Z
    307 /* MPU6050 MPU9150 */
    308 #define EVENT_TYPE_IACCEL_X        REL_RX
    309 #define EVENT_TYPE_IACCEL_Y        REL_RY
    310 #define EVENT_TYPE_IACCEL_Z        REL_RZ
    311 /* MPU6050 MPU9150 */
    312 #define EVENT_TYPE_ICOMPASS_X      REL_X
    313 #define EVENT_TYPE_ICOMPASS_Y      REL_Y
    314 #define EVENT_TYPE_ICOMPASS_Z      REL_Z
    315 /* MPUxxxx */
    316 #define EVENT_TYPE_TIMESTAMP_HI    REL_MISC
    317 #define EVENT_TYPE_TIMESTAMP_LO    REL_WHEEL
    318 
    319 /* Accel BMA250 */
    320 #define EVENT_TYPE_ACCEL_X          ABS_X
    321 #define EVENT_TYPE_ACCEL_Y          ABS_Y
    322 #define EVENT_TYPE_ACCEL_Z          ABS_Z
    323 #define LSG                         (1000.0f)
    324 
    325 // conversion of acceleration data to SI units (m/s^2)
    326 #define RANGE_A                     (4*GRAVITY_EARTH)
    327 #define RESOLUTION_A                (GRAVITY_EARTH / LSG)
    328 #define CONVERT_A                   (GRAVITY_EARTH / LSG)
    329 #define CONVERT_A_X                 (CONVERT_A)
    330 #define CONVERT_A_Y                 (CONVERT_A)
    331 #define CONVERT_A_Z                 (CONVERT_A)
    332 
    333 /* AKM  compasses */
    334 #define EVENT_TYPE_MAGV_X           ABS_RX
    335 #define EVENT_TYPE_MAGV_Y           ABS_RY
    336 #define EVENT_TYPE_MAGV_Z           ABS_RZ
    337 #define EVENT_TYPE_MAGV_STATUS      ABS_RUDDER
    338 
    339 /* conversion of magnetic data to uT units */
    340 #define CONVERT_M                   (0.06f)
    341 
    342 /* conversion of sensor rates */
    343 #define hertz_request = 200;
    344 #define DEFAULT_MPL_GYRO_RATE           (20000L)     //us
    345 #define DEFAULT_MPL_COMPASS_RATE        (20000L)     //us
    346 
    347 #define DEFAULT_HW_GYRO_RATE            (100)        //Hz
    348 #define DEFAULT_HW_ACCEL_RATE           (20)         //ms
    349 #define DEFAULT_HW_COMPASS_RATE         (20000000L)  //ns
    350 #define DEFAULT_HW_AKMD_COMPASS_RATE    (200000000L) //ns
    351 
    352 /* convert ns to hardware units */
    353 #define HW_GYRO_RATE_NS                 (1000000000LL / rate_request) // to Hz
    354 #define HW_ACCEL_RATE_NS                (rate_request / (1000000L))   // to ms
    355 #define HW_COMPASS_RATE_NS              (rate_request)                // to ns
    356 
    357 /* convert Hz to hardware units */
    358 #define HW_GYRO_RATE_HZ                 (hertz_request)
    359 #define HW_ACCEL_RATE_HZ                (1000 / hertz_request)
    360 #define HW_COMPASS_RATE_HZ              (1000000000LL / hertz_request)
    361 
    362 #define RATE_200HZ                      5000000LL
    363 #define RATE_15HZ                       66667000LL
    364 #define RATE_5HZ                        200000000LL
    365 __END_DECLS
    366 
    367 #endif  // ANDROID_SENSORS_H
    368