mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-06-01 02:55:07 +08:00
Merge pull request #2236 from TSC21/drivers_cleanup
drivers: added validity check
This commit is contained in:
@@ -329,6 +329,8 @@ test(const bool use_i2c, const int bus)
|
||||
}
|
||||
|
||||
warnx("periodic read %u", i);
|
||||
warnx("valid %u", (float)report.current_distance > report.min_distance
|
||||
&& (float)report.current_distance < report.max_distance ? 1 : 0);
|
||||
warnx("measurement: %0.3f m", (double)report.current_distance);
|
||||
warnx("time: %lld", report.timestamp);
|
||||
}
|
||||
|
||||
@@ -832,6 +832,7 @@ test()
|
||||
}
|
||||
|
||||
warnx("single read");
|
||||
warnx("measurement: %0.2f m", (double)report.current_distance);
|
||||
warnx("time: %llu", report.timestamp);
|
||||
|
||||
/* start the sensor polling at 2Hz */
|
||||
@@ -860,6 +861,9 @@ test()
|
||||
}
|
||||
|
||||
warnx("periodic read %u", i);
|
||||
warnx("valid %u", (float)report.current_distance > report.min_distance
|
||||
&& (float)report.current_distance < report.max_distance ? 1 : 0);
|
||||
warnx("measurement: %0.3f", (double)report.current_distance);
|
||||
warnx("time: %llu", report.timestamp);
|
||||
}
|
||||
|
||||
|
||||
@@ -854,7 +854,7 @@ test()
|
||||
}
|
||||
|
||||
warnx("single read");
|
||||
warnx("val: %0.2f m", (double)report.current_distance);
|
||||
warnx("measurement: %0.2f m", (double)report.current_distance);
|
||||
warnx("time: %llu", report.timestamp);
|
||||
|
||||
/* start the sensor polling at 2 Hz rate */
|
||||
@@ -885,7 +885,9 @@ test()
|
||||
}
|
||||
|
||||
warnx("read #%u", i);
|
||||
warnx("val: %0.3f m", (double)report.current_distance);
|
||||
warnx("valid %u", (float)report.current_distance > report.min_distance
|
||||
&& (float)report.current_distance < report.max_distance ? 1 : 0);
|
||||
warnx("measurement: %0.3f m", (double)report.current_distance);
|
||||
warnx("time: %llu", report.timestamp);
|
||||
}
|
||||
|
||||
|
||||
@@ -125,6 +125,7 @@ private:
|
||||
work_s _work;
|
||||
ringbuffer::RingBuffer *_reports;
|
||||
bool _sensor_ok;
|
||||
uint8_t _valid;
|
||||
int _measure_ticks;
|
||||
bool _collect_phase;
|
||||
int _class_instance;
|
||||
@@ -211,7 +212,7 @@ static const uint8_t crc_table[] = {
|
||||
0xfa, 0xfd, 0xf4, 0xf3
|
||||
};
|
||||
|
||||
/* static uint8_t crc8(uint8_t *p, uint8_t len) {
|
||||
static uint8_t crc8(uint8_t *p, uint8_t len) {
|
||||
uint16_t i;
|
||||
uint16_t crc = 0x0;
|
||||
|
||||
@@ -221,7 +222,7 @@ static const uint8_t crc_table[] = {
|
||||
}
|
||||
|
||||
return crc & 0xFF;
|
||||
}*/
|
||||
}
|
||||
|
||||
/*
|
||||
* Driver 'main' command.
|
||||
@@ -234,6 +235,7 @@ TRONE::TRONE(int bus, int address) :
|
||||
_max_distance(TRONE_MAX_DISTANCE),
|
||||
_reports(nullptr),
|
||||
_sensor_ok(false),
|
||||
_valid(0),
|
||||
_measure_ticks(0),
|
||||
_collect_phase(false),
|
||||
_class_instance(-1),
|
||||
@@ -592,6 +594,10 @@ TRONE::collect()
|
||||
/* TODO: set proper ID */
|
||||
report.id = 0;
|
||||
|
||||
// This validation check can be used later
|
||||
_valid = crc8(val, 2) == val[2] && (float)report.current_distance > report.min_distance
|
||||
&& (float)report.current_distance < report.max_distance ? 1 : 0;
|
||||
|
||||
/* publish it, if we are the primary */
|
||||
if (_distance_sensor_topic != nullptr) {
|
||||
orb_publish(ORB_ID(distance_sensor), _distance_sensor_topic, &report);
|
||||
|
||||
Reference in New Issue
Block a user