LCOV - code coverage report
Current view: top level - AP_GPS - AP_GPS_GSOF.h (source / functions) Hit Total Coverage
Test: lcov.info Lines: 1 3 33.3 %
Date: 2026-09-09 11:02:08 Functions: 1 2 50.0 %

          Line data    Source code
       1             : /*
       2             :    This program is free software: you can redistribute it and/or modify
       3             :    it under the terms of the GNU General Public License as published by
       4             :    the Free Software Foundation, either version 3 of the License, or
       5             :    (at your option) any later version.
       6             : 
       7             :    This program is distributed in the hope that it will be useful,
       8             :    but WITHOUT ANY WARRANTY; without even the implied warranty of
       9             :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      10             :    GNU General Public License for more details.
      11             : 
      12             :    You should have received a copy of the GNU General Public License
      13             :    along with this program.  If not, see <http://www.gnu.org/licenses/>.
      14             :  */
      15             : 
      16             : //
      17             : //  Trimble GPS driver for ArduPilot.
      18             : //      Code by Michael Oborne
      19             : //  https://receiverhelp.trimble.com/oem-gnss/index.html#Welcome.html?TocPath=_____1
      20             : 
      21             : #pragma once
      22             : 
      23             : #include "AP_GPS.h"
      24             : #include "GPS_Backend.h"
      25             : #include <AP_GSOF/AP_GSOF.h>
      26             : 
      27             : #if AP_GPS_GSOF_ENABLED
      28             : class AP_GPS_GSOF : public AP_GPS_Backend, public AP_GSOF
      29             : {
      30             : public:
      31             :     AP_GPS_GSOF(AP_GPS &_gps, AP_GPS::Params &_params, AP_GPS::GPS_State &_state, AP_HAL::UARTDriver *_port);
      32             : 
      33           0 :     AP_GPS_FixType highest_supported_status(void) override WARN_IF_UNUSED {
      34           0 :         return AP_GPS_FixType::RTK_FIXED;
      35             :     }
      36             : 
      37             :     // Methods
      38             :     bool read() override WARN_IF_UNUSED;
      39             : 
      40           2 :     const char *name() const override { return "GSOF"; }
      41             : 
      42             : private:
      43             : 
      44             :     // Configure the GPS device
      45             :     bool configure();
      46             : 
      47             :     // A subset of the port identifiers in the GSOF protocol that are used for serial.
      48             :     // Ethernet, USB, etc are not supported by the GPS driver at this time so they are omitted.
      49             :     // These values are not documented in the API.
      50             :     enum class HW_Port {
      51             :         COM1 = 0, // RS232 serial
      52             :         COM2 = 1, // TTL serial
      53             :     };
      54             : 
      55             :     // A subset of the data frequencies in the GSOF protocol that are used for serial.
      56             :     // These values are not documented in the API.
      57             :     enum class Output_Rate {
      58             :         FREQ_10_HZ = 1,
      59             :         FREQ_50_HZ = 15,
      60             :         FREQ_100_HZ = 16,
      61             :     };
      62             : 
      63             :     // Send a request to the GPS to set the baud rate on the specified port.
      64             :     // Note - these request functions currently ignore the ACK from the device.
      65             :     // If the device is already sending serial traffic, there is no mechanism to prevent conflict.
      66             :     // According to the manufacturer, the best approach is to switch to ethernet.
      67             :     void requestBaud(const HW_Port portIndex);
      68             :     // Send a request to the GPS to enable a message type on the port at the specified rate.
      69             :     void requestGSOF(const uint8_t messageType, const HW_Port portIndex, const Output_Rate rateHz);
      70             : 
      71             :     bool validate_baud(const uint8_t baud) const WARN_IF_UNUSED;
      72             :     bool validate_com_port(const uint8_t com_port) const WARN_IF_UNUSED;
      73             : 
      74             :     void pack_state_data();
      75             : 
      76             :     uint8_t packetcount;
      77             :     uint32_t gsofmsg_time;
      78             :     uint8_t gsofmsgreq_index;
      79             :     uint16_t next_req_gsof;
      80             :     AP_GSOF::MsgTypes requested_msgs;
      81             : };
      82             : #endif

Generated by: LCOV version 1.14