2024-05-14 02:14:13 +02:00

63 lines
2.1 KiB
C++

#ifndef _VNSENSORS_SEARCHER_H_
#define _VNSENSORS_SEARCHER_H_
#include <string>
#include <vector>
#include "int.h"
#include "export.h"
namespace vn {
namespace sensors {
/// \brief Helpful class for finding VectorNav sensors.
class vn_proglib_DLLEXPORT Searcher
{
public:
/// \brief Searches the serial port at all valid baudrates for a VectorNav
/// sensor.
///
/// \param[in] portName The serial port to search.
/// \param[out] foundBuadrate If a sensor is found, this will be set to the
/// baudrate the sensor is communicating at.
/// \returns <c>true</c> if a sensor if found; otherwise <c>false</c>.
static void findPorts(std::vector<std::string>& portlist);
/// \brief Searches the serial port at all valid baudrates for a VectorNav
/// sensor.
///
/// \param[in] portName The serial port to search.
/// \param[out] foundBuadrate If a sensor is found, this will be set to the
/// baudrate the sensor is communicating at.
/// \returns <c>true</c> if a sensor if found; otherwise <c>false</c>.
static bool search(const std::string &portName, int32_t *foundBaudrate);
/// \brief Checks all available serial ports on the system for any
/// VectorNav sensors.
///
/// \return Collection of serial ports and baudrates for all found sensors.
static std::vector<std::pair<std::string, uint32_t> > search(void);
/// \brief Checks the provided list of serial ports for any connected
/// VectorNav sensors.
///
/// \param[in] portsToCheck List of serial ports to check for sensors.
/// \return Collection of serial ports and baudrates for all found sensors.
static std::vector<std::pair<std::string, uint32_t> > search(std::vector<std::string>& portsToCheck);
/// \brief Tests if a sensor is connected to the serial port at the
/// specified baudrate.
///
/// \param[in] portName The serial port to test.
/// \param[in] baudrate The baudrate to test at.
/// \returns <c>true</c> if a sensor if found; otherwise <c>false</c>.
static bool test(std::string portName, uint32_t baudrate);
};
}
}
#endif