support library for C027 helper functions for Buffer Pipes, Buffered Serial Port (rtos capable) and GPS parsing. It includes modem APIs for USSD, SMS and Sockets.

Dependents:   HTTPClient_Cellular_HelloWorld Cellular_HelloMQTT MbedSmartRestMain Car_Bon_car_module ... more

This library is intended to be used with u-blox products such as the C027 or a shield with u-blox cellular and GPS modules like the cellular and positioning shield from Embedded Artist.

For 2G/GSM and 3G/UMTS you need to:

  • have a SIM card and know its PIN number
  • need to know you network operators APN setting These setting should be passed to the connect or init and join functions. You can also extend the APN database in MDMAPN.h.

For CDMA products you need to make sure that you have provisioned and activated the modem with either Sprint or Verizon.

Committer:
mazgch
Date:
Fri Oct 25 17:50:17 2013 +0000
Revision:
4:c959dd4c5fe8
Parent:
3:c7cd4887560d
Child:
9:e7a5959ffae1
small fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mazgch 1:f41579f4e2ed 1 #pragma once
mazgch 1:f41579f4e2ed 2
mazgch 2:b6012cd91657 3 #include "mbed.h"
mazgch 2:b6012cd91657 4 #include "Pipe.h"
mazgch 1:f41579f4e2ed 5 #include "SerialPipe.h"
mazgch 2:b6012cd91657 6 #include "C027_PinNames.h"
mazgch 2:b6012cd91657 7
mazgch 2:b6012cd91657 8 class GPSParser
mazgch 2:b6012cd91657 9 {
mazgch 2:b6012cd91657 10 public:
mazgch 2:b6012cd91657 11 #define WAIT -1
mazgch 2:b6012cd91657 12 #define NOT_FOUND 0
mazgch 2:b6012cd91657 13
mazgch 2:b6012cd91657 14 #define UBX 0x100000
mazgch 2:b6012cd91657 15 #define NMEA 0x200000
mazgch 2:b6012cd91657 16 #define LENGTH(x) (x & 0x00FFFF)
mazgch 2:b6012cd91657 17 #define PROTOCOL(x) (x & 0xFF0000)
mazgch 1:f41579f4e2ed 18
mazgch 2:b6012cd91657 19 virtual int getMessage(char* buf, int len) = 0;
mazgch 4:c959dd4c5fe8 20 virtual int send(const char* buf, int len);
mazgch 4:c959dd4c5fe8 21 virtual int sendNmea(const char* buf, int len);
mazgch 4:c959dd4c5fe8 22 virtual int sendUbx(unsigned char cls, unsigned char id, const void* buf, int len);
mazgch 2:b6012cd91657 23
mazgch 2:b6012cd91657 24 static const char* findNmeaItemPos(int ix, const char* start, const char* end);
mazgch 2:b6012cd91657 25 static bool getNmeaItem(int ix, char* buf, int len, double& val);
mazgch 2:b6012cd91657 26 static bool getNmeaItem(int ix, char* buf, int len, int& val, int base/*=10*/);
mazgch 2:b6012cd91657 27 static bool getNmeaItem(int ix, char* buf, int len, char& val);
mazgch 2:b6012cd91657 28 protected:
mazgch 2:b6012cd91657 29 static int _getMessage(Pipe<char>* pipe, char* buf, int len);
mazgch 2:b6012cd91657 30 static int _parseNmea(Pipe<char>* pipe, int len);
mazgch 2:b6012cd91657 31 static int _parseUbx(Pipe<char>* pipe, int len);
mazgch 4:c959dd4c5fe8 32 virtual int _send(const void* buf, int len) = 0;
mazgch 2:b6012cd91657 33 static const char toHex[16];
mazgch 2:b6012cd91657 34 };
mazgch 2:b6012cd91657 35
mazgch 2:b6012cd91657 36 class GPSSerial : public Serial, public GPSParser
mazgch 1:f41579f4e2ed 37 {
mazgch 1:f41579f4e2ed 38 public:
mazgch 2:b6012cd91657 39 GPSSerial(PinName tx = GPSTXD, PinName rx = GPSRXD, int baudrate = GPSBAUD);
mazgch 2:b6012cd91657 40 virtual ~GPSSerial(void);
mazgch 2:b6012cd91657 41
mazgch 2:b6012cd91657 42 virtual int getMessage(char* buf, int len);
mazgch 2:b6012cd91657 43 protected:
mazgch 2:b6012cd91657 44 void serialRxIrq(void);
mazgch 3:c7cd4887560d 45 virtual char next(void);
mazgch 4:c959dd4c5fe8 46 virtual int _send(const void* buf, int len);
mazgch 2:b6012cd91657 47 Pipe<char> _pipe;
mazgch 1:f41579f4e2ed 48 };
mazgch 2:b6012cd91657 49
mazgch 2:b6012cd91657 50 class GPSI2C : public I2C, public GPSParser
mazgch 2:b6012cd91657 51 {
mazgch 2:b6012cd91657 52 public:
mazgch 2:b6012cd91657 53 GPSI2C(PinName sda = GPSSDA, PinName scl = GPSSCL);
mazgch 2:b6012cd91657 54 bool detect(void);
mazgch 2:b6012cd91657 55
mazgch 2:b6012cd91657 56 virtual int getMessage(char* buf, int len);
mazgch 4:c959dd4c5fe8 57 virtual int send(const char* buf, int len);
mazgch 3:c7cd4887560d 58 virtual int sendNmea(const char* buf, int len);
mazgch 3:c7cd4887560d 59 virtual int sendUbx(unsigned char cls, unsigned char id, const void* buf, int len);
mazgch 2:b6012cd91657 60 protected:
mazgch 3:c7cd4887560d 61 virtual char next(void);
mazgch 4:c959dd4c5fe8 62 virtual int _send(const void* buf, int len);
mazgch 3:c7cd4887560d 63 int _get(char* buf, int len); // read the NMEA or UBX stream
mazgch 3:c7cd4887560d 64
mazgch 2:b6012cd91657 65 Pipe<char> _pipe;
mazgch 2:b6012cd91657 66 bool found;
mazgch 2:b6012cd91657 67 static const char REGLEN;
mazgch 2:b6012cd91657 68 static const char REGSTREAM;
mazgch 2:b6012cd91657 69 };