29 uint8_t serial_instance) :
33 if (
uart !=
nullptr) {
51 uint8_t number_detections;
54 if (
uart ==
nullptr) {
63 while (nbytes-- > 0) {
144 uint16_t crc = 0xFFFF;
146 for (uint32_t i=0; i<aLength; i++) {
148 for (uint32_t j=0; j<8; j++) {
150 crc = (crc >> 1) ^ 0xA001;
161 return (aBuffer[aLength] == lCRCLo) && (aBuffer[aLength+1] == lCRCHi);
163 aBuffer[aLength] = lCRCLo;
164 aBuffer[aLength+1] = lCRCHi;
234 for (index=0; index<number_detections; index++) {
bool get_reading(uint16_t &reading_cm)
static AP_SerialManager serial_manager
#define LEDDARONE_READ_BUFFER_SIZE
#define LEDDARONE_DETECTION_DATA_INDEX_OFFSET
virtual void begin(uint32_t baud)=0
AP_RangeFinder_LeddarOne(RangeFinder::RangeFinder_State &_state, AP_SerialManager &serial_manager, uint8_t serial_instance)
uint32_t last_available_ms
#define LEDDARONE_DETECTION_DATA_OFFSET
uint16_t detections[LEDDARONE_DETECTIONS_MAX]
const AP_HAL::HAL & hal
-*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-
uint32_t find_baudrate(enum SerialProtocol protocol, uint8_t instance) const
#define LEDDARONE_DETECTIONS_MAX
LeddarOne_ModbusStatus modbus_status
virtual size_t write(uint8_t)=0
AP_HAL::UARTDriver * uart
LeddarOne_Status parse_response(uint8_t &number_detections)
#define LEDDARONE_SERIAL_PORT_MAX
const uint8_t send_request_buffer[8]
virtual uint32_t available()=0
#define LEDDARONE_MODOBUS_FUNCTION_CODE
#define LEDDARONE_DETECTION_DATA_NUMBER_INDEX
void set_status(RangeFinder::RangeFinder_Status status)
uint8_t read_buffer[LEDDARONE_READ_BUFFER_SIZE]
RangeFinder::RangeFinder_State & state
uint32_t last_sending_request_ms
bool CRC16(uint8_t *aBuffer, uint8_t aLength, bool aCheck)
static bool detect(AP_SerialManager &serial_manager, uint8_t serial_instance)
AP_HAL::UARTDriver * find_serial(enum SerialProtocol protocol, uint8_t instance) const