vvvv

Revision:
137:8dc8f48275fc
Parent:
136:cbccf4052d45
Child:
138:6a7a5c4f35f6
--- a/MDM.h	Thu Jan 21 15:59:42 2016 +0000
+++ b/MDM.h	Fri Jan 22 15:28:39 2016 +0000
@@ -72,21 +72,25 @@
         unsigned int ci;     //!< Cell ID in hexadecimal format (2 to 4 bytes in hex)
         CopsMode regStatus;    //!< Cops mode
     } NetStatus;
+    typedef enum { CELL_LAST = 0, CELL_GNSS, CELL_LOCATE, CELL_HYBRID} CellSensType;
+    typedef enum { CELL_DETAILED = 1, CELL_MULTIHYP = 2} CellRespType;
+    #define CELL_MAX_HYP    (16 + 1)
+    int _locRcvPos;     //!< Received positions
+    int _locExpPos;     //!< Expected positions
    //! 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
+       float latitude;      //!< 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
+       CellSensType sensor;      //!< Sensor used for last calculation
        int svUsed;          //!< number of satellite used
-   }CellLocData;
-
+   }CellLocData;    
     //! An IP v4 address
     typedef uint32_t IP;
     #define NOIP ((MDMParser::IP)0) //!< No IP address
@@ -440,10 +444,10 @@
     int infoFile(const char* filename);
     
     // ----------------------------------------------------------------
-    // Cell Locate
+    // CellLocate
     // ----------------------------------------------------------------
 
-     /** Configures CellLocate Http Aiding server
+     /** Configures CellLocate Tcp 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
@@ -451,7 +455,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", \
+    int cellLocSrvTcp(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
@@ -466,28 +470,38 @@
     /** Configures CellLocate URCs in the case of +ULOC operations
         \mode       Urc configuration: 0 disabled, 1 enabled
      */
-    int cellLocUnsolIndication(int mode);
+    int cellLocUnsol(int mode);
 
     /**  Configures CellLocate location sensor 
          \scanMode Network scan mode: 0 normal, 1 deep scan
      */
-    int cellLocConfigSensor(int scanMode);
+    int cellLocConfig(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
+         \sensor        Sensor selection: 
          \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)
+         \type
+         \hypotesis  Maximum desired number of responses from CellLocate® (up to 16)
      */
-    int cellLocRequest(int sensor, int timeout, int accuracy, int numHypotesis =1);
+    int cellLocRequest(CellSensType sensor, int timeout, int accuracy, CellRespType type = CELL_DETAILED,int hypotesis = 1);
 
-    /** Check if a position is available
+    /** Get a position record
         \data pointer to a CellLocData struct where the location will be copied in
-        \return 1 if data is available, 0 otherwise
+        \index of the position to retrive
+        \return 1 if data has been retrived and copied, 0 otherwise
     */
-    int cellLocGet(CellLocData *data);
+    int cellLocGetData(CellLocData *data, int index =0);
+    
+    /** Get number of position records received       
+        \return number of position received
+    */
+    int cellLocGetRes();
+    /** Get expected number of position to be received       
+        \return number of expected position to be received
+    */
+    int cellLocGetExpRes();
     
     // ----------------------------------------------------------------
     // DEBUG/DUMP status to standard out (printf)
@@ -724,7 +738,7 @@
     DevStatus   _dev; //!< collected device information
     NetStatus   _net; //!< collected network information 
     IP          _ip;  //!< assigned ip address
-    CellLocData _loc; //!< CellLocate data
+    CellLocData _loc[CELL_MAX_HYP]; //!< 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