imu_advanced_navigation_anpp
Classes | Enumerations | Functions | Variables
imu_advanced_navigation_anpp::protocol Namespace Reference

Classes

struct  Acceleration
 
struct  Acknowledge
 
struct  Alignment
 
struct  AngularAcceleration
 
struct  AngularVelocity
 
struct  BaudRates
 
struct  BodyAcceleration
 
struct  BodyVelocity
 
struct  BootMode
 
struct  ColdStartReset
 
struct  DetailedSatellites
 
struct  DeviceInformation
 
struct  EulerOrientationStandardDeviation
 
struct  FilterOptions
 
struct  GeodeticPosition
 
struct  GeodeticPositionStandardDeviation
 
struct  Header
 
struct  HotStartReset
 
struct  LocalMagneticField
 
struct  MagneticCalibrationConfiguration
 
struct  MagneticCalibrationStatus
 
struct  MagneticCalibrationValues
 
struct  NEDVelocity
 
struct  NEDVelocityStandardDeviation
 
struct  NorthSeekingInitializationStatus
 
struct  PacketPeriods
 
struct  PacketTimerPeriod
 
struct  QuaternionOrientation
 
struct  RawGNSS
 
struct  RawSensors
 
struct  Request
 
struct  RestoreFactorySettings
 
struct  SatelliteInfo
 
struct  Satellites
 
struct  Status
 
struct  SystemState
 
struct  UnixTime
 

Enumerations

enum  BOOT_MODES { BOOT_TO_BOOTLOADER, BOOT_TO_PROGRAM }
 
enum  RAW_GNSS_STATUS {
  RAW_GNSS_FIX_STATUS_MASK = 0x07, RAW_GNSS_NO_FIX = 0x00, RAW_GNSS_2D = 0x01, RAW_GNSS_3D = 0x02,
  RAW_GNSS_SBAS = 0x03, RAW_GNSS_DGPS = 0x04, RAW_GNSS_OMNISTAR = 0x05, RAW_GNSS_RTK_FLOAT = 0x06,
  RAW_GNSS_RTK_FIXED = 0x07, RAW_GNSS_HAS_DOPPLER_VELOCITY = 0x08, RAW_GNSS_HAS_TIME = 0x10, RAW_GNSS_EXTERNAL = 0x20,
  RAW_GNSS_HAS_TILT = 0x40, RAW_GNSS_HAS_HEADING = 0x80, RAW_GNSS_HAS_FLOATING_AMBIGUITY_HEADING = 0x100
}
 
enum  SATELLITE_SYSTEM {
  SATELLITE_SYSTEM_UNKNOWN, SATELLITE_SYSTEM_GPS, SATELLITE_SYSTEM_GLONASS, SATELLITE_SYSTEM_BEIDOU,
  SATELLITE_SYSTEM_GALILEO, SATELLITE_SYSTEM_SBAS, SATELLITE_SYSTEM_QZSS, SATELLITE_SYSTEM_STARFIRE,
  SATELLITE_SYSTEM_OMNISTAR
}
 
enum  SATELLITE_FREQUENCIES {
  SATELLITE_FREQUENCY_L1CA = 0x01, SATELLITE_FREQUENCY_L1C = 0x02, SATELLITE_FREQUENCY_L1P = 0x04, SATELLITE_FREQUENCY_L1M = 0x08,
  SATELLITE_FREQUENCY_L2C = 0x10, SATELLITE_FREQUENCY_L2P = 0x20, SATELLITE_FREQUENCY_L2M = 0x40, SATELLITE_FREQUENCY_L5 = 0x80
}
 
enum  MAGNETIC_CALIBRATION_ACTIONS { MAGNETIC_CALIBRATION_CANCEL, MAGNETIC_CALIBRATION_START_2D, MAGNETIC_CALIBRATION_START_3D, MAGNETIC_CALIBRATION_RESET }
 

Functions

template<typename T , typename InputIterator >
read16 (InputIterator it)
 
template<typename T , typename InputIterator >
read32 (InputIterator it)
 
template<typename T , typename InputIterator >
read64 (InputIterator it)
 
template<typename T , typename Out >
void write16 (Out out, T sample)
 
template<typename T , typename Out >
void write32 (Out out, T sample)
 
template<typename T , typename Out >
void write64 (Out out, T sample)
 
struct imu_advanced_navigation_anpp::protocol::Header __attribute__ ((packed))
 
uint16_t crc (uint8_t const *begin, uint8_t const *end)
 
template<typename Packet , typename Driver >
Header writePacket (Driver &driver, Packet const &packet)
 
template<typename Packet , typename Driver >
Packet waitForPacket (Driver &driver, base::Time const &_timeout)
 
template<typename Driver >
ACK_RESULTS waitForAck (Driver &driver, Header const &header, base::Time const &_timeout)
 
template<typename Driver >
void validateAck (Driver &driver, Header const &header, base::Time const &_timeout)
 
template<typename Packet , typename Driver >
Packet query (Driver &driver)
 
template<typename Driver >
Header writePacketPeriod (Driver &driver, uint8_t packet_id, int period, bool clear_existing)
 

Variables

enum imu_advanced_navigation_anpp::protocol::BOOT_MODES __attribute__
 

Detailed Description

Implementation of the ANPP protocol itself

A iodrivers_base driver that uses this protocol is provided as Driver

The general structure is that there is one struct per packet. Thse structs represent the fixed-size part of the packet - some packets have variable sizes. Structs that are meant to be sent to the device have a marshal() method that returns the packet payload as a set of bytes. Structs that are meant to be received have an unmarshal() static method that return the struct from the payload data.

Enumeration Type Documentation

◆ BOOT_MODES

Boot modes

Enumerator
BOOT_TO_BOOTLOADER 
BOOT_TO_PROGRAM 

◆ MAGNETIC_CALIBRATION_ACTIONS

Enumerator
MAGNETIC_CALIBRATION_CANCEL 
MAGNETIC_CALIBRATION_START_2D 
MAGNETIC_CALIBRATION_START_3D 
MAGNETIC_CALIBRATION_RESET 

◆ RAW_GNSS_STATUS

Enumerator
RAW_GNSS_FIX_STATUS_MASK 
RAW_GNSS_NO_FIX 
RAW_GNSS_2D 
RAW_GNSS_3D 
RAW_GNSS_SBAS 
RAW_GNSS_DGPS 
RAW_GNSS_OMNISTAR 
RAW_GNSS_RTK_FLOAT 
RAW_GNSS_RTK_FIXED 
RAW_GNSS_HAS_DOPPLER_VELOCITY 
RAW_GNSS_HAS_TIME 
RAW_GNSS_EXTERNAL 
RAW_GNSS_HAS_TILT 
RAW_GNSS_HAS_HEADING 
RAW_GNSS_HAS_FLOATING_AMBIGUITY_HEADING 

◆ SATELLITE_FREQUENCIES

Bitfield values to represent supported frequencies

Enumerator
SATELLITE_FREQUENCY_L1CA 
SATELLITE_FREQUENCY_L1C 
SATELLITE_FREQUENCY_L1P 
SATELLITE_FREQUENCY_L1M 
SATELLITE_FREQUENCY_L2C 
SATELLITE_FREQUENCY_L2P 
SATELLITE_FREQUENCY_L2M 
SATELLITE_FREQUENCY_L5 

◆ SATELLITE_SYSTEM

Enumerator
SATELLITE_SYSTEM_UNKNOWN 
SATELLITE_SYSTEM_GPS 
SATELLITE_SYSTEM_GLONASS 
SATELLITE_SYSTEM_BEIDOU 
SATELLITE_SYSTEM_GALILEO 
SATELLITE_SYSTEM_SBAS 
SATELLITE_SYSTEM_QZSS 
SATELLITE_SYSTEM_STARFIRE 
SATELLITE_SYSTEM_OMNISTAR 

Function Documentation

◆ __attribute__()

struct imu_advanced_navigation_anpp::protocol::Header imu_advanced_navigation_anpp::protocol::__attribute__ ( (packed)  )

◆ crc()

uint16_t imu_advanced_navigation_anpp::protocol::crc ( uint8_t const *  begin,
uint8_t const *  end 
)

Compute the CRC as expected by the protocol

◆ query()

template<typename Packet , typename Driver >
Packet imu_advanced_navigation_anpp::protocol::query ( Driver driver)
inline

◆ read16()

template<typename T , typename InputIterator >
T imu_advanced_navigation_anpp::protocol::read16 ( InputIterator  it)
inline

Helper function to read a 64 bit value from a byte stream

◆ read32()

template<typename T , typename InputIterator >
T imu_advanced_navigation_anpp::protocol::read32 ( InputIterator  it)
inline

Helper function to read a 64 bit value from a byte stream

◆ read64()

template<typename T , typename InputIterator >
T imu_advanced_navigation_anpp::protocol::read64 ( InputIterator  it)
inline

Helper function to read a 32 bit value from a byte stream

◆ validateAck()

template<typename Driver >
void imu_advanced_navigation_anpp::protocol::validateAck ( Driver driver,
Header const &  header,
base::Time const &  _timeout 
)
inline

◆ waitForAck()

template<typename Driver >
ACK_RESULTS imu_advanced_navigation_anpp::protocol::waitForAck ( Driver driver,
Header const &  header,
base::Time const &  _timeout 
)
inline

◆ waitForPacket()

template<typename Packet , typename Driver >
Packet imu_advanced_navigation_anpp::protocol::waitForPacket ( Driver driver,
base::Time const &  _timeout 
)
inline

◆ write16()

template<typename T , typename Out >
void imu_advanced_navigation_anpp::protocol::write16 ( Out  out,
sample 
)
inline

Helper function to write a 16 bit value into a byte stream

◆ write32()

template<typename T , typename Out >
void imu_advanced_navigation_anpp::protocol::write32 ( Out  out,
sample 
)
inline

Helper function to read a 64 bit value from a byte stream

◆ write64()

template<typename T , typename Out >
void imu_advanced_navigation_anpp::protocol::write64 ( Out  out,
sample 
)
inline

Helper function to read a 32 bit value from a byte stream

◆ writePacket()

template<typename Packet , typename Driver >
Header imu_advanced_navigation_anpp::protocol::writePacket ( Driver driver,
Packet const &  packet 
)
inline

◆ writePacketPeriod()

template<typename Driver >
Header imu_advanced_navigation_anpp::protocol::writePacketPeriod ( Driver driver,
uint8_t  packet_id,
int  period,
bool  clear_existing 
)
inline

Variable Documentation

◆ __attribute__

struct imu_advanced_navigation_anpp::protocol::MagneticCalibrationStatus imu_advanced_navigation_anpp::protocol::__attribute__