From fd39d5b9a12c5cc69eb679ec39ca701bd1989352 Mon Sep 17 00:00:00 2001 From: Jacob Dahl <37091262+dakejahl@users.noreply.github.com> Date: Fri, 8 Oct 2021 13:30:41 -0800 Subject: [PATCH] drivers/distance_sensor/lightware_laser_serial: add LW20/C support --- .../lightware_laser_serial.cpp | 13 +++++++++++++ .../lightware_laser_serial/parameters.c | 3 +++ 2 files changed, 16 insertions(+) diff --git a/src/drivers/distance_sensor/lightware_laser_serial/lightware_laser_serial.cpp b/src/drivers/distance_sensor/lightware_laser_serial/lightware_laser_serial.cpp index c6e7571492..359a62f575 100644 --- a/src/drivers/distance_sensor/lightware_laser_serial/lightware_laser_serial.cpp +++ b/src/drivers/distance_sensor/lightware_laser_serial/lightware_laser_serial.cpp @@ -127,6 +127,13 @@ LightwareLaserSerial::init() _simple_serial = true; break; + case 8: + /* LW20/c (100M 20Hz) */ + _px4_rangefinder.set_min_distance(0.2f); + _px4_rangefinder.set_max_distance(100.0f); + _interval = 50000; + break; + default: PX4_ERR("invalid HW model %" PRIi32 ".", hw_model); return -1; @@ -297,6 +304,12 @@ void LightwareLaserSerial::Run() if ((termios_state = tcsetattr(_fd, TCSANOW, &uart_config)) < 0) { PX4_ERR("baud %d ATTR", termios_state); } + + // LW20: Enable serial mode by sending some characters + if (hw_model == 8) { + const char *data = "www\r\n"; + (void)!::write(_fd, &data, strlen(data)); + } } /* collection phase? */ diff --git a/src/drivers/distance_sensor/lightware_laser_serial/parameters.c b/src/drivers/distance_sensor/lightware_laser_serial/parameters.c index a59d80600c..f8b2c01a8e 100644 --- a/src/drivers/distance_sensor/lightware_laser_serial/parameters.c +++ b/src/drivers/distance_sensor/lightware_laser_serial/parameters.c @@ -41,5 +41,8 @@ * @value 3 SF10/b * @value 4 SF10/c * @value 5 SF11/c + * @value 6 SF30/b + * @value 7 SF30/c + * @value 8 LW20/c */ PARAM_DEFINE_INT32(SENS_EN_SF0X, 1);