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 09:45:55 2013 +0000
Revision:
3:c7cd4887560d
Parent:
2:b6012cd91657
Child:
4:c959dd4c5fe8
added sending of msgs

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 3:c7cd4887560d 20 virtual int sendNmea(const char* buf, int len) = 0;
mazgch 3:c7cd4887560d 21 virtual int sendUbx(unsigned char cls, unsigned char id, const void* buf, int len) = 0;
mazgch 2:b6012cd91657 22
mazgch 2:b6012cd91657 23 static const char* findNmeaItemPos(int ix, const char* start, const char* end);
mazgch 2:b6012cd91657 24 static bool getNmeaItem(int ix, char* buf, int len, double& val);
mazgch 2:b6012cd91657 25 static bool getNmeaItem(int ix, char* buf, int len, int& val, int base/*=10*/);
mazgch 2:b6012cd91657 26 static bool getNmeaItem(int ix, char* buf, int len, char& val);
mazgch 2:b6012cd91657 27 protected:
mazgch 2:b6012cd91657 28 static int _getMessage(Pipe<char>* pipe, char* buf, int len);
mazgch 2:b6012cd91657 29 static int _parseNmea(Pipe<char>* pipe, int len);
mazgch 2:b6012cd91657 30 static int _parseUbx(Pipe<char>* pipe, int len);
mazgch 3:c7cd4887560d 31 virtual int send(const void* buf, int len) = 0;
mazgch 2:b6012cd91657 32 static const char toHex[16];
mazgch 2:b6012cd91657 33 };
mazgch 2:b6012cd91657 34
mazgch 2:b6012cd91657 35 class GPSSerial : public Serial, public GPSParser
mazgch 1:f41579f4e2ed 36 {
mazgch 1:f41579f4e2ed 37 public:
mazgch 2:b6012cd91657 38 GPSSerial(PinName tx = GPSTXD, PinName rx = GPSRXD, int baudrate = GPSBAUD);
mazgch 2:b6012cd91657 39 virtual ~GPSSerial(void);
mazgch 2:b6012cd91657 40
mazgch 2:b6012cd91657 41 virtual int getMessage(char* buf, int len);
mazgch 2:b6012cd91657 42 protected:
mazgch 2:b6012cd91657 43 void serialRxIrq(void);
mazgch 3:c7cd4887560d 44 virtual char next(void);
mazgch 3:c7cd4887560d 45 virtual int send(const void* buf, int len);
mazgch 2:b6012cd91657 46 Pipe<char> _pipe;
mazgch 1:f41579f4e2ed 47 };
mazgch 2:b6012cd91657 48
mazgch 2:b6012cd91657 49 class GPSI2C : public I2C, public GPSParser
mazgch 2:b6012cd91657 50 {
mazgch 2:b6012cd91657 51 public:
mazgch 2:b6012cd91657 52 GPSI2C(PinName sda = GPSSDA, PinName scl = GPSSCL);
mazgch 2:b6012cd91657 53 bool detect(void);
mazgch 2:b6012cd91657 54
mazgch 2:b6012cd91657 55 virtual int getMessage(char* buf, int len);
mazgch 3:c7cd4887560d 56 virtual int sendNmea(const char* buf, int len);
mazgch 3:c7cd4887560d 57 virtual int sendUbx(unsigned char cls, unsigned char id, const void* buf, int len);
mazgch 2:b6012cd91657 58 protected:
mazgch 3:c7cd4887560d 59 virtual char next(void);
mazgch 3:c7cd4887560d 60 virtual int send(const void* buf, int len);
mazgch 3:c7cd4887560d 61 int _get(char* buf, int len); // read the NMEA or UBX stream
mazgch 3:c7cd4887560d 62
mazgch 2:b6012cd91657 63 Pipe<char> _pipe;
mazgch 2:b6012cd91657 64 bool found;
mazgch 2:b6012cd91657 65 static const char REGLEN;
mazgch 2:b6012cd91657 66 static const char REGSTREAM;
mazgch 2:b6012cd91657 67 };