* add C027_Support fork

Fork of C027_Support by u-blox

Revision:
26:07be5faf8925
Parent:
25:4045d02e44f1
Child:
28:4d9509e3b1cf
--- a/MDM.h	Tue Apr 08 11:59:28 2014 +0000
+++ b/MDM.h	Tue Apr 08 13:52:07 2014 +0000
@@ -52,9 +52,18 @@
     virtual int getLine(char* buf, int len) = 0; 
     virtual int send(const char* buf, int len);
     int sendFormated(const char* format, ...);
-    typedef int (*_CB)(int type, const char* buf, int len, void* param);
-    int waitFinalResp(_CB cb = NULL, void* param = NULL, int timeout_ms = 5000);
-
+    
+    typedef int (*_CALLBACKPTR)(int type, const char* buf, int len, void* param);
+    int waitFinalResp(_CALLBACKPTR = NULL, 
+                      void* param = NULL, 
+                      int timeout_ms = 5000);
+    template<class T>
+    int waitFinalResp(int (*cb)(int type, const char* buf, int len, 
+                      T* param), 
+                      T* param, int timeout_ms = 5000) 
+    {
+        return waitFinalResp((_CALLBACKPTR)cb, (void*)param, timeout_ms);
+    }
     // network
     bool init(const char* pin = NULL);
     bool checkNetStatus(Status* info = NULL);
@@ -89,6 +98,7 @@
     typedef enum { MODEL_UNKNOWN, MODEL_SARA_G350, MODEL_LISA_U200, MODEL_LISA_C200 } Model; 
     typedef enum { SIM_UNKNOWN, SIM_PIN, SIM_READY } Sim; 
     static int _cbATI(int type, const char* buf, int len, Model* model);
+    static int _cbCIMI(int type, const char* buf, int len, char* imsi);
     static int _cbUDNSRN(int type, const char* buf, int len, IP* ip);
     static int _cbUSOCR(int type, const char* buf, int len, int* socket);
     static int _cbUSORD(int type, const char* buf, int len, char* out);
@@ -97,6 +107,9 @@
     typedef struct { char* buf; char* num; } CMGRparam;
     static int _cbCUSD(int type, const char* buf, int len, char* buf);
     static int _cbCMGR(int type, const char* buf, int len, CMGRparam* param);
+    static int _cbCGSN(int type, const char* buf, int len, char* imei);
+    static int _cbGSN(int type, const char* buf, int len, char* imei);
+    static int _cbCCID(int type, const char* buf, int len, char* ccid);
     static IP strToIp(const char* str);
     IP _ip;
     Model _model;
@@ -106,6 +119,9 @@
     char _num[32];
     char _opr[32];
     int _rssi;
+    char _imsi[32];
+    char _imei[32];
+    char _ccid[32];
 private:
     typedef enum { SOCK_FREE, SOCK_CREATED, SOCK_CONNECTED } SockState;
     typedef struct { SockState state; int pending; } SockCtrl;