* add C027_Support fork

Fork of C027_Support by u-blox

Revision:
133:57b208dd96fb
Parent:
132:de505da3aadf
Child:
134:2fbd5723e063
diff -r de505da3aadf -r 57b208dd96fb MDM.h
--- a/MDM.h	Wed Nov 11 16:26:19 2015 +0000
+++ b/MDM.h	Thu Nov 26 09:42:01 2015 +0000
@@ -33,7 +33,7 @@
     // ----------------------------------------------------------------
     //! MT Device Types 
     typedef enum { DEV_UNKNOWN, 
-                   DEV_SARA_G35, DEV_LISA_U2, DEV_LISA_C2, 
+                   DEV_SARA_G35, DEV_LISA_U2, DEV_LISA_U2_03S, DEV_LISA_C2, 
                    DEV_SARA_U2, DEV_LEON_G2, DEV_TOBY_L2, DEV_MPCI_L2 } Dev; 
     //! SIM Status
     typedef enum { SIM_UNKNOWN, SIM_MISSING, SIM_PIN, SIM_READY } Sim;
@@ -69,6 +69,21 @@
         unsigned short lac;  //!< location area code in hexadecimal format (2 bytes in hex)
         unsigned int ci;     //!< Cell ID in hexadecimal format (2 to 4 bytes in hex)
     } NetStatus;
+   //! Cell Locate Data
+   typedef struct {
+       bool validData;      //!< Flag for indicating if data is valid
+       struct tm time;      //!< GPS Timestamp
+       float longitude;     //!< Estimated longitude, in degrees
+       float  latitue;      //!< Estimated latitude, in degrees
+       int altitutude;      //!< Estimated altitude, in meters^2
+       int uncertainty;     //!< Maximum possible error, in meters
+       int speed;           //!< Speed over ground m/s^2
+       int direction;       //!< Course over ground in degrees
+       int verticalAcc;     //!< Vertical accuracy, in meters^2
+       int sensorUsed;      //!< Sensor used for last calculation
+       int svUsed;          //!< number of satellite used
+   }CellLocData;
+
     //! An IP v4 address
     typedef uint32_t IP;
     #define NOIP ((MDMParser::IP)0) //!< No IP address
@@ -329,6 +344,55 @@
         \return the number of bytes read
     */
     int readFile(const char* filename, char* buf, int len);
+    // ----------------------------------------------------------------
+    // Cell Locate
+    // ----------------------------------------------------------------
+
+     /** Configures CellLocate Http Aiding server
+        \server_1   Host name of the primary MGA server
+        \server_2   Host name of the secondary MGA server
+        \token      Authentication Token for MGA server access
+        \days       The number of days into the future the Offline data for the u-blox 7
+        \period     The number of weeks into the future the Offline data for u-blox M8
+        \resolution Resolution of offline data for u-blox M8: 1 everyday, 0 every other day
+    */
+    int cellLocSrvHttp(const char* token, const char* server_1 = "cell-live1.services.u-blox.com", \
+            const char* server_2 = "cell-live2.services.u-blox.com", int days = 14, int period = 4, int resolution = 1);
+
+    /** Configures  CellLocate Udp Aiding server
+        \server_1   Host name of the primary MGA server
+        \port       Server port
+        \latency    Expected network latency in seconds from 0 to 10000ms
+        \mode       Assist now management, mode of operation: 0 data downloaded at GNSS power up,
+                    1 automatically kept alive, manual download
+    */
+    int cellLocSrvUdp(const char* server_1 = "cell-live1.services.u-blox.com", int port = 46434, int latency = 1000, int mode = 0);
+
+    /** Configures CellLocate URCs in the case of +ULOC operations
+        \mode       Urc configuration: 0 disabled, 1 enabled
+     */
+    int cellLocUnsolIndication(int mode);
+
+    /**  Configures CellLocate location sensor 
+         \scanMode Network scan mode: 0 normal, 1 deep scan
+     */
+    int cellLocConfigSensor(int scanMode);
+
+    /** Request CellLocate 
+        This function is not blocking, the result has to be retrived using cellLocGet
+         \cb            Call back function called when position is available
+         \sensor        Sensor selection: 0: use last fix and stop GNSS receiver, 1: use GNSS, 2: CellLocate, 3: Hybrid
+         \timeout       Timeout period in seconds (1 - 999)
+         \accuracy      Target accuracy in meters (1 - 999999)
+         \numHypotesis  Maximum desired number of responses from CellLocate® (up to 16)
+     */
+    int cellLocRequest(int sensor, int timeout, int accuracy, int numHypotesis =1);
+
+    /** Check if a position is available
+        \data pointer to a CellLocData struct where the location will be copied in
+        \return 1 if data is available, 0 otherwise
+    */
+    int cellLocGet(CellLocData *data);
     
     // ----------------------------------------------------------------
     // DEBUG/DUMP status to standard out (printf)
@@ -561,6 +625,7 @@
     DevStatus   _dev; //!< collected device information
     NetStatus   _net; //!< collected network information 
     IP          _ip;  //!< assigned ip address
+    CellLocData _loc; //!< CellLocate data
     // management struture for sockets
     typedef struct { int handle; int timeout_ms; volatile bool connected; volatile int pending; } SockCtrl;
     // LISA-C has 6 TCP and 6 UDP sockets