Browse Source

PMW3901: use quality metric

sbg
Nico van Duijn 6 years ago committed by Daniel Agar
parent
commit
b4709d229a
  1. 14
      src/drivers/optical_flow/pmw3901/PMW3901.cpp
  2. 2
      src/drivers/optical_flow/pmw3901/PMW3901.hpp

14
src/drivers/optical_flow/pmw3901/PMW3901.cpp

@ -302,6 +302,7 @@ PMW3901::Run() @@ -302,6 +302,7 @@ PMW3901::Run()
int16_t delta_x_raw = 0;
int16_t delta_y_raw = 0;
uint8_t qual = 0;
float delta_x = 0.0f;
float delta_y = 0.0f;
@ -311,7 +312,7 @@ PMW3901::Run() @@ -311,7 +312,7 @@ PMW3901::Run()
_flow_dt_sum_usec += dt_flow;
readMotionCount(delta_x_raw, delta_y_raw);
readMotionCount(delta_x_raw, delta_y_raw, qual);
_flow_sum_x += delta_x_raw;
_flow_sum_y += delta_y_raw;
@ -346,7 +347,7 @@ PMW3901::Run() @@ -346,7 +347,7 @@ PMW3901::Run()
report.quality = 0;
} else {
report.quality = 255;
report.quality = qual;
}
/* No gyro on this board */
@ -369,13 +370,13 @@ PMW3901::Run() @@ -369,13 +370,13 @@ PMW3901::Run()
}
int
PMW3901::readMotionCount(int16_t &deltaX, int16_t &deltaY)
PMW3901::readMotionCount(int16_t &deltaX, int16_t &deltaY, uint8_t &qual)
{
uint8_t data[10] = { DIR_READ(0x02), 0, DIR_READ(0x03), 0, DIR_READ(0x04), 0,
DIR_READ(0x05), 0, DIR_READ(0x06), 0
uint8_t data[12] = { DIR_READ(0x02), 0, DIR_READ(0x03), 0, DIR_READ(0x04), 0,
DIR_READ(0x05), 0, DIR_READ(0x06), 0, DIR_READ(0x07), 0
};
int ret = transfer(&data[0], &data[0], 10);
int ret = transfer(&data[0], &data[0], 12);
if (OK != ret) {
perf_count(_comms_errors);
@ -385,6 +386,7 @@ PMW3901::readMotionCount(int16_t &deltaX, int16_t &deltaY) @@ -385,6 +386,7 @@ PMW3901::readMotionCount(int16_t &deltaX, int16_t &deltaY)
deltaX = ((int16_t)data[5] << 8) | data[3];
deltaY = ((int16_t)data[9] << 8) | data[7];
qual = data[11];
ret = OK;

2
src/drivers/optical_flow/pmw3901/PMW3901.hpp

@ -141,5 +141,5 @@ private: @@ -141,5 +141,5 @@ private:
int writeRegister(unsigned reg, uint8_t data);
int sensorInit();
int readMotionCount(int16_t &deltaX, int16_t &deltaY);
int readMotionCount(int16_t &deltaX, int16_t &deltaY, uint8_t &qual);
};

Loading…
Cancel
Save