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:
Thu Nov 14 15:52:36 2013 +0000
Revision:
11:b084552b03fe
Parent:
9:e7a5959ffae1
Child:
13:e2446fcdc246
update api

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 9:e7a5959ffae1 8 #define RX_SIZE 256
mazgch 9:e7a5959ffae1 9 #define TX_SIZE 128
mazgch 9:e7a5959ffae1 10
mazgch 2:b6012cd91657 11 class GPSParser
mazgch 2:b6012cd91657 12 {
mazgch 2:b6012cd91657 13 public:
mazgch 2:b6012cd91657 14 #define WAIT -1
mazgch 2:b6012cd91657 15 #define NOT_FOUND 0
mazgch 2:b6012cd91657 16
mazgch 2:b6012cd91657 17 #define UBX 0x100000
mazgch 2:b6012cd91657 18 #define NMEA 0x200000
mazgch 2:b6012cd91657 19 #define LENGTH(x) (x & 0x00FFFF)
mazgch 2:b6012cd91657 20 #define PROTOCOL(x) (x & 0xFF0000)
mazgch 1:f41579f4e2ed 21
mazgch 2:b6012cd91657 22 virtual int getMessage(char* buf, int len) = 0;
mazgch 4:c959dd4c5fe8 23 virtual int send(const char* buf, int len);
mazgch 4:c959dd4c5fe8 24 virtual int sendNmea(const char* buf, int len);
mazgch 11:b084552b03fe 25 virtual int sendUbx(unsigned char cls, unsigned char id, const void* buf = NULL, int len = 0);
mazgch 2:b6012cd91657 26
mazgch 2:b6012cd91657 27 static const char* findNmeaItemPos(int ix, const char* start, const char* end);
mazgch 2:b6012cd91657 28 static bool getNmeaItem(int ix, char* buf, int len, double& val);
mazgch 2:b6012cd91657 29 static bool getNmeaItem(int ix, char* buf, int len, int& val, int base/*=10*/);
mazgch 2:b6012cd91657 30 static bool getNmeaItem(int ix, char* buf, int len, char& val);
mazgch 2:b6012cd91657 31 protected:
mazgch 2:b6012cd91657 32 static int _getMessage(Pipe<char>* pipe, char* buf, int len);
mazgch 2:b6012cd91657 33 static int _parseNmea(Pipe<char>* pipe, int len);
mazgch 2:b6012cd91657 34 static int _parseUbx(Pipe<char>* pipe, int len);
mazgch 4:c959dd4c5fe8 35 virtual int _send(const void* buf, int len) = 0;
mazgch 2:b6012cd91657 36 static const char toHex[16];
mazgch 2:b6012cd91657 37 };
mazgch 2:b6012cd91657 38
mazgch 9:e7a5959ffae1 39 class GPSSerial : public SerialPipe, public GPSParser
mazgch 1:f41579f4e2ed 40 {
mazgch 1:f41579f4e2ed 41 public:
mazgch 9:e7a5959ffae1 42 GPSSerial(PinName tx = GPSTXD, PinName rx = GPSRXD, int baudrate = GPSBAUD,
mazgch 9:e7a5959ffae1 43 int rxSize = RX_SIZE, int txSize = TX_SIZE);
mazgch 2:b6012cd91657 44
mazgch 2:b6012cd91657 45 virtual int getMessage(char* buf, int len);
mazgch 2:b6012cd91657 46 protected:
mazgch 3:c7cd4887560d 47 virtual char next(void);
mazgch 4:c959dd4c5fe8 48 virtual int _send(const void* buf, int len);
mazgch 1:f41579f4e2ed 49 };
mazgch 2:b6012cd91657 50
mazgch 2:b6012cd91657 51 class GPSI2C : public I2C, public GPSParser
mazgch 2:b6012cd91657 52 {
mazgch 2:b6012cd91657 53 public:
mazgch 9:e7a5959ffae1 54 GPSI2C(PinName sda = GPSSDA, PinName scl = GPSSCL,
mazgch 9:e7a5959ffae1 55 int rxSize = RX_SIZE);
mazgch 2:b6012cd91657 56 bool detect(void);
mazgch 2:b6012cd91657 57
mazgch 2:b6012cd91657 58 virtual int getMessage(char* buf, int len);
mazgch 4:c959dd4c5fe8 59 virtual int send(const char* buf, int len);
mazgch 3:c7cd4887560d 60 virtual int sendNmea(const char* buf, int len);
mazgch 11:b084552b03fe 61 virtual int sendUbx(unsigned char cls, unsigned char id, const void* buf = NULL, int len = 0);
mazgch 2:b6012cd91657 62 protected:
mazgch 3:c7cd4887560d 63 virtual char next(void);
mazgch 9:e7a5959ffae1 64 bool writeable(void) { return true; }
mazgch 9:e7a5959ffae1 65 bool putc(int c) { char ch = c; return send(&ch, 1); }
mazgch 4:c959dd4c5fe8 66 virtual int _send(const void* buf, int len);
mazgch 3:c7cd4887560d 67 int _get(char* buf, int len); // read the NMEA or UBX stream
mazgch 3:c7cd4887560d 68
mazgch 2:b6012cd91657 69 Pipe<char> _pipe;
mazgch 2:b6012cd91657 70 bool found;
mazgch 2:b6012cd91657 71 static const char REGLEN;
mazgch 2:b6012cd91657 72 static const char REGSTREAM;
mazgch 2:b6012cd91657 73 };