diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2024-05-01 21:10:17 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2024-05-21 20:16:31 -0400 |
commit | 4a92727eab61349f2e24fd4296c7fb06740dffe9 (patch) | |
tree | 16bfa09665a0ecc00d21937d171985d47ed81433 /src | |
parent | 37482178b5482a013a4a5a62789705ccaf1e03c6 (diff) | |
download | kutter-4a92727eab61349f2e24fd4296c7fb06740dffe9.tar.gz kutter-4a92727eab61349f2e24fd4296c7fb06740dffe9.tar.xz kutter-4a92727eab61349f2e24fd4296c7fb06740dffe9.zip |
sensor_ldc1612: Halt homing if sensor reports a warning
Explicitly check for sensor warnings during homing and report an error
code back to the host.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/sensor_ldc1612.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/sensor_ldc1612.c b/src/sensor_ldc1612.c index f53b4e2f..6e52c177 100644 --- a/src/sensor_ldc1612.c +++ b/src/sensor_ldc1612.c @@ -31,7 +31,7 @@ struct ldc1612 { // homing struct trsync *ts; uint8_t homing_flags; - uint8_t trigger_reason; + uint8_t trigger_reason, error_reason; uint32_t trigger_threshold; uint32_t homing_clock; }; @@ -95,11 +95,12 @@ command_ldc1612_setup_home(uint32_t *args) ld->homing_clock = args[1]; ld->ts = trsync_oid_lookup(args[3]); ld->trigger_reason = args[4]; + ld->error_reason = args[5]; ld->homing_flags = LH_AWAIT_HOMING | LH_CAN_TRIGGER; } DECL_COMMAND(command_ldc1612_setup_home, "ldc1612_setup_home oid=%c clock=%u threshold=%u" - " trsync_oid=%c trigger_reason=%c"); + " trsync_oid=%c trigger_reason=%c error_reason=%c"); void command_query_ldc1612_home_state(uint32_t *args) @@ -118,6 +119,12 @@ check_home(struct ldc1612 *ld, uint32_t data) uint8_t homing_flags = ld->homing_flags; if (!(homing_flags & LH_CAN_TRIGGER)) return; + if (data > 0x0fffffff) { + // Sensor reports an issue - cancel homing + ld->homing_flags = 0; + trsync_do_trigger(ld->ts, ld->error_reason); + return; + } uint32_t time = timer_read_time(); if ((homing_flags & LH_AWAIT_HOMING) && timer_is_before(time, ld->homing_clock)) |