You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.1 KiB
43 lines
1.1 KiB
4 years ago
|
#ifndef __AIRMAR_P66__
|
||
|
#define __AIRMAR_P66__
|
||
|
|
||
|
#include <AP_HAL/AP_HAL.h>
|
||
|
#include <AP_SerialManager/AP_SerialManager.h>
|
||
|
#include <GCS_MAVLink/GCS.h>
|
||
|
#include <GCS_MAVLink/GCS_MAVLink.h>
|
||
|
|
||
|
|
||
|
class Underwater_Sonar
|
||
|
{
|
||
|
public:
|
||
|
Underwater_Sonar();
|
||
|
|
||
|
// get singleton instance
|
||
|
static Underwater_Sonar *get_singleton() { return _singleton; }
|
||
|
|
||
|
bool init(const AP_SerialManager& serial_manager);
|
||
|
|
||
|
bool read(void);
|
||
|
void update(const AP_SerialManager& serial_manager, const struct Location &_loc);
|
||
|
void write(const uint8_t *data, uint16_t len);
|
||
|
bool _decode(char c);
|
||
|
|
||
|
float radar_data[8];
|
||
|
private:
|
||
|
static Underwater_Sonar *_singleton;
|
||
|
AP_HAL::UARTDriver *_uart;
|
||
|
|
||
|
uint8_t ucCRCHi;
|
||
|
uint8_t ucCRCLo;
|
||
|
int iIndex;
|
||
|
uint8_t sonar_data[25];
|
||
|
char _term[8][6]; ///< buffer for the current term within the current sentence
|
||
|
uint8_t _term_offset; ///< character offset with the term being received
|
||
|
uint8_t _term_num;
|
||
|
uint32_t data_index;
|
||
|
};
|
||
|
namespace AP {
|
||
|
Underwater_Sonar &underwater_sonar();
|
||
|
};
|
||
|
#endif
|