first cut at turnon scripts for EasyTimer v2
[fw/altos] / src / drivers / ao_bmx160.c
index c3922b60651130a6dcccaef19bf302b0a755c787..0df30f9428da8c24c53ef982c2b17e8324c67997 100644 (file)
@@ -24,7 +24,9 @@ static uint8_t        ao_bmx160_configured;
 
 static struct ao_bmm150_trim ao_bmm150_trim;
 
-#define ao_bmx160_spi_get()    ao_spi_get(AO_BMX160_SPI_BUS, AO_SPI_SPEED_8MHz)
+#define AO_BMX160_SPI_SPEED    ao_spi_speed(AO_BMX160_SPI_BUS, 10000000)
+
+#define ao_bmx160_spi_get()    ao_spi_get(AO_BMX160_SPI_BUS, AO_BMX160_SPI_SPEED)
 #define ao_bmx160_spi_put()    ao_spi_put(AO_BMX160_SPI_BUS)
 
 #define ao_bmx160_spi_start()  ao_spi_set_cs(AO_BMX160_SPI_CS_PORT,    \
@@ -107,7 +109,7 @@ _ao_bmm150_reg_read2(uint8_t lo_addr, uint8_t hi_addr)
        uint8_t lo = _ao_bmm150_reg_read(lo_addr);
        uint8_t hi = _ao_bmm150_reg_read(hi_addr);
 
-       return ((uint16_t) hi << 8) | lo;
+       return (uint16_t) (((uint16_t) hi << 8) | (uint16_t) lo);
 }
 
 /*
@@ -215,7 +217,7 @@ static int16_t compensate_x(int16_t mag_data_x, uint16_t data_rhall)
            //printf("comp_x10 %d\n", process_comp_x10);
             retval = ((int16_t)(process_comp_x10 / 8192));
            //printf("ret 1 %d\n", retval);
-            retval = (retval + (((int16_t)ao_bmm150_trim.dig_x1) * 8)) / 16;
+            retval = (int16_t) ((retval + (((int16_t)ao_bmm150_trim.dig_x1) * 8)) / 16);
            //printf("final %d\n", retval);
         }
         else
@@ -280,7 +282,7 @@ static int16_t compensate_y(int16_t mag_data_y, uint16_t data_rhall)
             process_comp_y8 = (((process_comp_y6 + ((int32_t)0x100000)) * process_comp_y7) / 4096);
             process_comp_y9 = (((int32_t)mag_data_y) * process_comp_y8);
             retval = (int16_t)(process_comp_y9 / 8192);
-            retval = (retval + (((int16_t)ao_bmm150_trim.dig_y1) * 8)) / 16;
+            retval = (int16_t) ((retval + (((int16_t)ao_bmm150_trim.dig_y1) * 8)) / 16);
         }
         else
         {
@@ -502,7 +504,7 @@ _ao_bmx160_setup(void)
                             BMX160_ACC_RANGE_16G);
 
        for (r = 0x3; r <= 0x1b; r++)
-               (void) _ao_bmx160_reg_read(r);
+               (void) _ao_bmx160_reg_read((uint8_t) r);
 
        /* Configure gyro:
         *
@@ -558,16 +560,16 @@ _ao_bmx160_setup(void)
        _ao_bmm150_reg_write(BMM150_REPZ, BMM150_REPZ_VALUE(15));
 
        /* Read Trim values */
-       ao_bmm150_trim.dig_x1   = _ao_bmm150_reg_read(BMM150_DIG_X1);
-       ao_bmm150_trim.dig_y1   = _ao_bmm150_reg_read(BMM150_DIG_Y1);
-       ao_bmm150_trim.dig_z4   = _ao_bmm150_reg_read2(BMM150_DIG_Z4_LSB, BMM150_DIG_Z4_MSB);
-       ao_bmm150_trim.dig_x2   = _ao_bmm150_reg_read(BMM150_DIG_X2);
-       ao_bmm150_trim.dig_y2   = _ao_bmm150_reg_read(BMM150_DIG_Y2);
-       ao_bmm150_trim.dig_z2   = _ao_bmm150_reg_read2(BMM150_DIG_Z2_LSB, BMM150_DIG_Z2_MSB);
+       ao_bmm150_trim.dig_x1   = (int8_t) _ao_bmm150_reg_read(BMM150_DIG_X1);
+       ao_bmm150_trim.dig_y1   = (int8_t) _ao_bmm150_reg_read(BMM150_DIG_Y1);
+       ao_bmm150_trim.dig_z4   = (int8_t) _ao_bmm150_reg_read2(BMM150_DIG_Z4_LSB, BMM150_DIG_Z4_MSB);
+       ao_bmm150_trim.dig_x2   = (int8_t) _ao_bmm150_reg_read(BMM150_DIG_X2);
+       ao_bmm150_trim.dig_y2   = (int8_t) _ao_bmm150_reg_read(BMM150_DIG_Y2);
+       ao_bmm150_trim.dig_z2   = (int8_t) _ao_bmm150_reg_read2(BMM150_DIG_Z2_LSB, BMM150_DIG_Z2_MSB);
        ao_bmm150_trim.dig_z1   = _ao_bmm150_reg_read2(BMM150_DIG_Z1_LSB, BMM150_DIG_Z1_MSB);
        ao_bmm150_trim.dig_xyz1 = _ao_bmm150_reg_read2(BMM150_DIG_XYZ1_LSB, BMM150_DIG_XYZ1_MSB);
-       ao_bmm150_trim.dig_z3   = _ao_bmm150_reg_read2(BMM150_DIG_Z3_LSB, BMM150_DIG_Z3_MSB);
-       ao_bmm150_trim.dig_xy2  = _ao_bmm150_reg_read(BMM150_DIG_XY2);
+       ao_bmm150_trim.dig_z3   = (int8_t) _ao_bmm150_reg_read2(BMM150_DIG_Z3_LSB, BMM150_DIG_Z3_MSB);
+       ao_bmm150_trim.dig_xy2  = (int8_t) _ao_bmm150_reg_read(BMM150_DIG_XY2);
        ao_bmm150_trim.dig_xy1  = _ao_bmm150_reg_read(BMM150_DIG_XY1);
 
        /* To get data out of the magnetometer, set the control op mode to 'forced', then read