This class provides an API to communicate with a u-blox GNSS chip. The files here were originally part of the C027_Support library (https://developer.mbed.org/teams/ublox/code/C027_Support/ at revision 138:dafbbf31bf76) but have been separated out, primarily for use on the u-blox C030 board where the cellular interace portion of the C027_Support library will instead be provided through the new mbed Cellular API.

Dependents:   example-ublox-at-cellular-interface-ext example-low-power-sleep example-C030-out-of-box-demo example-C030-out-of-box-demo ... more

Embed: (wiki syntax)

« Back to documentation index

GnssI2C Class Reference

GNSS class which uses a i2c as physical interface. More...

#include <gnss.h>

Inherits GnssParser.

Public Types

enum  { WAIT = -1, NOT_FOUND = 0 }

Public Member Functions

 GnssI2C (PinName sda GNSS_IF(=NC,=NC), PinName scl GNSS_IF(=NC,=NC), unsigned char i2cAdr GNSS_IF(=(66<< 1),=(66<< 1)), int rxSize=256)
 Constructor.
virtual ~GnssI2C (void)
 Destructor.
virtual bool init (PinName pn=GNSS_IF(NC, NC))
 Helper function to probe the i2c device.
virtual int getMessage (char *buf, int len)
 Get a line from the physical interface.
virtual int send (const char *buf, int len)
 Send a buffer.
virtual int sendNmea (const char *buf, int len)
 Send an NMEA message, this function just takes the payload and calculates and adds checksum ($ and *XX
will be added).
virtual int sendUbx (unsigned char cls, unsigned char id, const void *buf=NULL, int len=0)
 Send a UBX message, this function just takes the payload and calculates and adds checksum.
void powerOff (void)
 Power off the GNSS, it can be again woken up by an edge on the serial port on the external interrupt pin.
void cutOffPower (void)
 Cuts off the power supply of GNSS by disabling gnssEnable pin Backup supply is provided, can turn it on again by enabling PA15.
int enable_ubx ()
 Enable UBX messages.
eUBX_MESSAGE get_ubx_message (char *)
 GET Message type of receiver UBX message.
tUBX_ACK_ACK decode_ubx_cfg_ack_nak_msg (char *)
 Method to parse contents of UBX ACK-ACK/NAK and return messageid amd class for which ACK is received.
tUBX_NAV_ODO decode_ubx_nav_odo_msg (char *)
 Method to parse contents of UBX_NAV_ODO and return decoded msg.
tUBX_NAV_PVT decode_ubx_nav_pvt_msg (char *)
 Method to parse contents of UBX_NAV_PVT and return decoded msg.
tUBX_LOG_BATCH decode_ubx_log_batch_msg (char *)
 Method to parse contents of UBX_LOG_BATCH and return decoded msg.
tUBX_NAV_STATUS decode_ubx_nav_status_msg (char *)
 Method to parse contents of UBX_NAV_STATUS and return decoded msg.
tUBX_NAV_SAT decode_ubx_nav_sat_msg (char *, int)
 Method to parse contents of UBX_NAV_SAT and return decoded msg.
int ubx_request_batched_data (bool sendMonFirst=false)
 Method to send UBX LOG-RETRIEVEBATCH msg.

Static Public Member Functions

static const char * findNmeaItemPos (int ix, const char *start, const char *end)
 get the first character of a NMEA field.
static bool getNmeaItem (int ix, char *buf, int len, double &val)
 Extract a double value from a buffer containing a NMEA message.
static bool getNmeaItem (int ix, char *buf, int len, int &val, int base)
 Extract a interger value from a buffer containing a NMEA message.
static bool getNmeaItem (int ix, char *buf, int len, char &val)
 Extract a char value from a buffer containing a NMEA message.
static bool getNmeaAngle (int ix, char *buf, int len, double &val)
 Extract a latitude/longitude value from a buffer containing a NMEA message.

Protected Member Functions

bool writeable (void)
 Check if the port is writeable (like SerialPipe)
bool putc (int c)
 Write a character (like SerialPipe).
virtual int _send (const void *buf, int len)
 Write bytes to the physical interface.
int _get (char *buf, int len)
 Read bytes from the physical interface.
void _powerOn (void)
 Power on the GNSS module.

Static Protected Member Functions

static int _getMessage (Pipe< char > *pipe, char *buf, int len)
 Get a line from the physical interface.
static int _parseNmea (Pipe< char > *pipe, int len)
 Check if the current offset of the pipe contains a NMEA message.
static int _parseUbx (Pipe< char > *pipe, int len)
 Check if the current offset of the pipe contains a UBX message.

Protected Attributes

Pipe< char > _pipe
 the rx pipe.
unsigned char _i2cAdr
 the i2c address.
DigitalInOut * _gnssEnable
 IO pin that enables GNSS.

Static Protected Attributes

static const char REGLEN = 0xFD
 the length i2c register address.
static const char REGSTREAM = 0xFF
 the stream i2c register address.
static const char _toHex [16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' }
 num to hex conversion

Detailed Description

GNSS class which uses a i2c as physical interface.

Definition at line 387 of file gnss.h.


Member Enumeration Documentation

anonymous enum [inherited]
Enumerator:
WAIT 

wait for more incoming data (the start of a message was found, or no data available)

NOT_FOUND 

a parser concluded the the current offset of the pipe doe not contain a valid message

Definition at line 135 of file gnss.h.


Constructor & Destructor Documentation

GnssI2C ( PinName sda   GNSS_IF=NC,=NC,
PinName scl   GNSS_IF=NC,=NC,
unsigned char i2cAdr   GNSS_IF=(66<< 1),=(66<< 1),
int  rxSize = 256 
)

Constructor.

Parameters:
sdais the I2C SDA pin (between CPU and GNSS).
sclis the I2C SCL pin (CPU to GNSS).
adrthe I2C address of the GNSS set to (66<<1).
rxSizethe size of the serial rx buffer.
~GnssI2C ( void   ) [virtual]

Destructor.

Definition at line 701 of file gnss.cpp.


Member Function Documentation

int _get ( char *  buf,
int  len 
) [protected]

Read bytes from the physical interface.

Parameters:
bufthe buffer to read into.
lensize of the read buffer .
Returns:
bytes read.

Definition at line 762 of file gnss.cpp.

int _getMessage ( Pipe< char > *  pipe,
char *  buf,
int  len 
) [static, protected, inherited]

Get a line from the physical interface.

Parameters:
pipethe receiveing pipe to parse messages .
bufthe buffer to store it.
lensize of the buffer.
Returns:
type and length if something was found, WAIT if not enough data is available, NOT_FOUND if nothing was found.

Definition at line 78 of file gnss.cpp.

int _parseNmea ( Pipe< char > *  pipe,
int  len 
) [static, protected, inherited]

Check if the current offset of the pipe contains a NMEA message.

Parameters:
pipethe receiveing pipe to parse messages.
lennumer of bytes to parse at maximum.
Returns:
length if something was found (including the NMEA frame), WAIT if not enough data is available, NOT_FOUND if nothing was found.

Definition at line 116 of file gnss.cpp.

int _parseUbx ( Pipe< char > *  pipe,
int  len 
) [static, protected, inherited]

Check if the current offset of the pipe contains a UBX message.

Parameters:
pipethe receiveing pipe to parse messages.
lennumer of bytes to parse at maximum.
Returns:
length if something was found (including the UBX frame), WAIT if not enough data is available, NOT_FOUND if nothing was found.

Definition at line 145 of file gnss.cpp.

void _powerOn ( void   ) [protected, inherited]

Power on the GNSS module.

Definition at line 70 of file gnss.cpp.

int _send ( const void *  buf,
int  len 
) [protected, virtual]

Write bytes to the physical interface.

Parameters:
bufthe buffer to write.
lensize of the buffer to write.
Returns:
bytes written.

Implements GnssParser.

Definition at line 783 of file gnss.cpp.

void cutOffPower ( void   ) [inherited]

Cuts off the power supply of GNSS by disabling gnssEnable pin Backup supply is provided, can turn it on again by enabling PA15.

Definition at line 62 of file gnss.cpp.

tUBX_ACK_ACK decode_ubx_cfg_ack_nak_msg ( char *  buf ) [inherited]

Method to parse contents of UBX ACK-ACK/NAK and return messageid amd class for which ACK is received.

Parameters:
buffthe UXB message
Returns:
tUBX_ACK_ACK

Definition at line 403 of file gnss.cpp.

tUBX_LOG_BATCH decode_ubx_log_batch_msg ( char *  buf ) [inherited]

Method to parse contents of UBX_LOG_BATCH and return decoded msg.

Parameters:
buffthe UXB message
Returns:
tUBX_LOG_BATCH

Definition at line 492 of file gnss.cpp.

tUBX_NAV_ODO decode_ubx_nav_odo_msg ( char *  buf ) [inherited]

Method to parse contents of UBX_NAV_ODO and return decoded msg.

Parameters:
buffthe UXB message
Returns:
tUBX_NAV_ODO

Definition at line 413 of file gnss.cpp.

tUBX_NAV_PVT decode_ubx_nav_pvt_msg ( char *  buf ) [inherited]

Method to parse contents of UBX_NAV_PVT and return decoded msg.

Parameters:
buffthe UXB message
Returns:
tUBX_NAV_PVT

Definition at line 443 of file gnss.cpp.

tUBX_NAV_SAT decode_ubx_nav_sat_msg ( char *  buf,
int  length 
) [inherited]

Method to parse contents of UBX_NAV_SAT and return decoded msg.

Parameters:
buffthe UXB message, int length
Returns:
tUBX_NAV_SAT

Definition at line 575 of file gnss.cpp.

tUBX_NAV_STATUS decode_ubx_nav_status_msg ( char *  buf ) [inherited]

Method to parse contents of UBX_NAV_STATUS and return decoded msg.

Parameters:
buffthe UXB message
Returns:
tUBX_NAV_STATUS

Definition at line 543 of file gnss.cpp.

int enable_ubx (  ) [inherited]

Enable UBX messages.

Parameters:
none
Returns:
1 if successful, false otherwise.

Definition at line 305 of file gnss.cpp.

const char * findNmeaItemPos ( int  ix,
const char *  start,
const char *  end 
) [static, inherited]

get the first character of a NMEA field.

Parameters:
ixthe index of the field to find.
startthe start of the buffer.
endthe end of the buffer.
Returns:
the pointer to the first character of the field.

Definition at line 230 of file gnss.cpp.

eUBX_MESSAGE get_ubx_message ( char *  buff ) [inherited]

GET Message type of receiver UBX message.

Parameters:
buffthe UXB message
Returns:
eUBX_MESSAGE

Definition at line 327 of file gnss.cpp.

int getMessage ( char *  buf,
int  len 
) [virtual]

Get a line from the physical interface.

Parameters:
bufthe buffer to store it.
lensize of the buffer.
Returns:
type and length if something was found, WAIT if not enough data is available, NOT_FOUND if nothing was found.

Implements GnssParser.

Definition at line 720 of file gnss.cpp.

bool getNmeaAngle ( int  ix,
char *  buf,
int  len,
double &  val 
) [static, inherited]

Extract a latitude/longitude value from a buffer containing a NMEA message.

Parameters:
ixthe index of the field to extract (will extract ix and ix + 1),
bufthe NMEA message,
lenthe size of the NMEA message,
valthe extracted latitude or longitude,
Returns:
true if successful, false otherwise.

Definition at line 289 of file gnss.cpp.

bool getNmeaItem ( int  ix,
char *  buf,
int  len,
char &  val 
) [static, inherited]

Extract a char value from a buffer containing a NMEA message.

Parameters:
ixthe index of the field to extract.
bufthe NMEA message.
lenthe size of the NMEA message.
valthe extracted value.
Returns:
true if successful, false otherwise.

Definition at line 269 of file gnss.cpp.

bool getNmeaItem ( int  ix,
char *  buf,
int  len,
double &  val 
) [static, inherited]

Extract a double value from a buffer containing a NMEA message.

Parameters:
ixthe index of the field to extract.
bufthe NMEA message.
lenthe size of the NMEA message.
valthe extracted value.
Returns:
true if successful, false otherwise.

Definition at line 246 of file gnss.cpp.

bool getNmeaItem ( int  ix,
char *  buf,
int  len,
int &  val,
int  base 
) [static, inherited]

Extract a interger value from a buffer containing a NMEA message.

Parameters:
ixthe index of the field to extract.
bufthe NMEA message.
lenthe size of the NMEA message.
valthe extracted value.
basethe numeric base to be used (e.g. 8, 10 or 16).
Returns:
true if successful, false otherwise.

Definition at line 258 of file gnss.cpp.

bool init ( PinName  pn = GNSS_IF( NC, NC ) ) [virtual]

Helper function to probe the i2c device.

Parameters:
pnthe power-on pin for the chip.
Returns:
true if successfully detected the GNSS chip.

Implements GnssParser.

Definition at line 706 of file gnss.cpp.

void powerOff ( void   ) [inherited]

Power off the GNSS, it can be again woken up by an edge on the serial port on the external interrupt pin.

Definition at line 52 of file gnss.cpp.

bool putc ( int  c ) [protected]

Write a character (like SerialPipe).

Parameters:
cthe character to write.
Returns:
true if succesffully written .

Definition at line 457 of file gnss.h.

int send ( const char *  buf,
int  len 
) [virtual]

Send a buffer.

Parameters:
bufthe buffer to write.
lensize of the buffer to write.
Returns:
bytes written.

Reimplemented from GnssParser.

Definition at line 732 of file gnss.cpp.

int sendNmea ( const char *  buf,
int  len 
) [virtual]

Send an NMEA message, this function just takes the payload and calculates and adds checksum ($ and *XX
will be added).

Parameters:
bufthe message payload to write.
lensize of the message payload to write.
Returns:
total bytes written.

Reimplemented from GnssParser.

Definition at line 744 of file gnss.cpp.

int sendUbx ( unsigned char  cls,
unsigned char  id,
const void *  buf = NULL,
int  len = 0 
) [virtual]

Send a UBX message, this function just takes the payload and calculates and adds checksum.

Parameters:
clsthe UBX class id.
idthe UBX message id.
bufthe message payload to write.
lensize of the message payload to write.
Returns:
total bytes written.

Reimplemented from GnssParser.

Definition at line 753 of file gnss.cpp.

int ubx_request_batched_data ( bool  sendMonFirst = false ) [inherited]

Method to send UBX LOG-RETRIEVEBATCH msg.

This message is used to request batched data.

Parameters:
bool
Returns:
int

Definition at line 590 of file gnss.cpp.

bool writeable ( void   ) [protected]

Check if the port is writeable (like SerialPipe)

Returns:
true if writeable

Definition at line 449 of file gnss.h.


Field Documentation

DigitalInOut* _gnssEnable [protected, inherited]

IO pin that enables GNSS.

Definition at line 335 of file gnss.h.

unsigned char _i2cAdr [protected]

the i2c address.

Definition at line 477 of file gnss.h.

Pipe<char> _pipe [protected]

the rx pipe.

Definition at line 476 of file gnss.h.

const char _toHex = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' } [static, protected, inherited]

num to hex conversion

Definition at line 334 of file gnss.h.

const char REGLEN = 0xFD [static, protected]

the length i2c register address.

Definition at line 478 of file gnss.h.

const char REGSTREAM = 0xFF [static, protected]

the stream i2c register address.

Definition at line 479 of file gnss.h.