Demo
Dependents: A_TeseoLocationNEW A_TeseoLocation
createTeseoGNSS.cpp
- Committer:
- HarryKeane
- Date:
- 2020-01-31
- Revision:
- 5:d91199cfc6a4
- Parent:
- 0:a77f1f1f8318
File content as of revision 5:d91199cfc6a4:
/** ****************************************************************************** * @file createTeseoGNSS.cpp * @author AST/CL * @version V1.1.0 * @date May, 2017 * @brief . ****************************************************************************** * @attention * * <h2><center>© COPYRIGHT(c) 2017 STMicroelectronics</center></h2> * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of STMicroelectronics nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************** */ #include "mbed.h" #include "Teseo.h" #include "GPSProviderImplBase.h" #include "TeseoConfig.h" static void _AppOutputCallback(uint32_t msgId, uint32_t msgType, tTeseoData *pData); static void _AppEventCallback(eTeseoLocEventType event, uint32_t data); static char msg[256]; static char *geofenceCirclePosition[] = { "Unknown", "Outside", "Boundary", "Inside" }; extern Serial serialDebug; #define TESEO_APP_LOG_INFO(...) serialDebug.printf(__VA_ARGS__) GPSProviderImplBase * createGPSProviderInstance(void) { static Teseo gnss(TESEO_PIN_RESET, TESEO_PIN_WAKEUP, TESEO_PIN_PPS, TESEO_PIN_TX, TESEO_PIN_RX, &serialDebug); /* Register output callback and event callback functions */ gnss.TeseoLocRegOutput(_AppOutputCallback, _AppEventCallback); return &gnss; } /** * @brief This function prints on the console the info about Fix data for single or combined satellite navigation system * @param pData * @retval None */ static void GetGNSMsgInfos(tTeseoData *pData) { // char msg[256]; TESEO_APP_LOG_INFO("\r\n"); sprintf(msg, "Constellation:\t\t[ %s ]\t", pData->gns_data.constellation); TESEO_APP_LOG_INFO(msg); if (strcmp(pData->gns_data.constellation, "$GPGSV") == 0) { TESEO_APP_LOG_INFO("-- only GPS constellation is enabled\n\r"); } else if (strcmp(pData->gns_data.constellation, "$GLGSV") == 0) { TESEO_APP_LOG_INFO("-- only GLONASS constellation is enabled\n\r"); } else if (strcmp(pData->gns_data.constellation, "$GAGSV") == 0) { TESEO_APP_LOG_INFO("-- only GALILEO constellation is enabled\n\r"); } else if (strcmp(pData->gns_data.constellation, "$BDGSV") == 0) { TESEO_APP_LOG_INFO("-- only BEIDOU constellation is enabled\n\r"); } else if (strcmp(pData->gns_data.constellation, "$QZGSV") == 0) { TESEO_APP_LOG_INFO("-- only QZSS constellation is enabled\n\r"); } else if (strcmp(pData->gns_data.constellation, "$GNGSV") == 0) { TESEO_APP_LOG_INFO("-- message to report all satellites for all enabled constellations\n\r"); } sprintf(msg, "UTC:\t\t\t[ %02d:%02d:%02d ]\n\r", pData->gns_data.utc.hh, pData->gns_data.utc.mm, pData->gns_data.utc.ss); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Latitude:\t\t[ %.0f' %d'' %c ]\n\r", (pData->gns_data.xyz.lat - ((int)pData->gns_data.xyz.lat % 100)) / 100, ((int)pData->gns_data.xyz.lat % 100), pData->gns_data.xyz.ns); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Longitude:\t\t[ %.0f' %d'' %c ]\n\r", (pData->gns_data.xyz.lon - ((int)pData->gns_data.xyz.lon % 100)) / 100, ((int)pData->gns_data.xyz.lon % 100), pData->gns_data.xyz.ew); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Satellites locked:\t[ %d ]\n\r", pData->gns_data.sats); TESEO_APP_LOG_INFO(msg); sprintf(msg,"HDOP:\t\t\t[ %.01f ]\n\r", pData->gns_data.hdop); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Altitude:\t\t[ %.01f ]\n\r", pData->gns_data.xyz.alt); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Geoid infos:\t\t[ %.01f ]\n\r", pData->gns_data.geo_sep); TESEO_APP_LOG_INFO(msg); // sprintf(msg,"ID - Checksum:\t\t[ *%x ]\n\r", // (pData->gns_data.checksum); // TESEO_APP_LOG_INFO(msg); TESEO_APP_LOG_INFO("\n\n\r"); return; } /** * @brief This function prints on the console the info about GPS Pseudorange Noise Statistics * @param pData * @retval None */ static void GetGPGSTInfos(tTeseoData *pData) { // char msg[256]; TESEO_APP_LOG_INFO("\r\n"); sprintf(msg, "UTC:\t\t\t[ %02d:%02d:%02d ]\n\r", pData->gpgst_data.utc.hh, pData->gpgst_data.utc.mm, pData->gpgst_data.utc.ss); TESEO_APP_LOG_INFO(msg); sprintf(msg,"EHPE:\t\t[ %.01f ]\n\r", pData->gpgst_data.EHPE); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Semi-major Dev:\t\t[ %.01f ]\n\r", pData->gpgst_data.semi_major_dev); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Semi-minor Dev:\t\t[ %.01f ]\n\r", pData->gpgst_data.semi_minor_dev); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Semi-maior Angle:\t\t[ %.01f ]\n\r", pData->gpgst_data.semi_major_angle); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Lat Err Dev:\t\t[ %.01f ]\n\r", pData->gpgst_data.lat_err_dev); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Lon Err Dev:\t\t[ %.01f ]\n\r", pData->gpgst_data.lon_err_dev); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Alt Err Dev:\t\t[ %.01f ]\n\r", pData->gpgst_data.alt_err_dev); TESEO_APP_LOG_INFO(msg); // sprintf(msg,"ID - Checksum:\t\t[ *%x ]\n\r", // pData->gpgst_data.checksum); // TESEO_APP_LOG_INFO(msg); TESEO_APP_LOG_INFO("\n\n\r"); return; } /** * @brief This function prints on the console the info about Recommended Minimum Specific GPS/Transit data got by the most recent reception process * @param pData * @retval None */ static void GetGPRMCInfos(tTeseoData *pData) { // char msg[256]; TESEO_APP_LOG_INFO("\r\n"); sprintf(msg, "UTC:\t\t\t\t[ %02d:%02d:%02d ]\n\r", pData->gprmc_data.utc.hh, pData->gprmc_data.utc.mm, pData->gprmc_data.utc.ss); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Status:\t\t\t\t[ %c ]\t\t", pData->gprmc_data.status); TESEO_APP_LOG_INFO(msg); if (pData->gprmc_data.status == 'A') { TESEO_APP_LOG_INFO("-- Valid (reported in 2D and 3D fix conditions)\n\r"); } else if (pData->gprmc_data.status == 'V') { TESEO_APP_LOG_INFO("-- Warning (reported in NO FIX conditions)\n\r"); } else { TESEO_APP_LOG_INFO("-- Unknown status\n\r"); } sprintf(msg,"Latitude:\t\t\t[ %.0f' %02d'' %c ]\n\r", ((pData->gprmc_data.xyz.lat - ((int)pData->gprmc_data.xyz.lat % 100))) / 100, ((int)pData->gprmc_data.xyz.lat % 100), pData->gprmc_data.xyz.ns); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Longitude:\t\t\t[ %.0f' %02d'' %c ]\n\r", ((pData->gprmc_data.xyz.lon - ((int)pData->gprmc_data.xyz.lon % 100))) / 100, ((int)pData->gprmc_data.xyz.lon % 100), pData->gprmc_data.xyz.ew); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Speed over ground (knots):\t[ %.01f ]\n\r", pData->gprmc_data.speed); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Trackgood:\t\t\t[ %.01f ]\n\r", pData->gprmc_data.trackgood); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Date (ddmmyy):\t\t\t[ %d ]\n\r", pData->gprmc_data.date); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Magnetic Variation:\t\t[ %.01f ]\n\r", pData->gprmc_data.mag_var); TESEO_APP_LOG_INFO(msg); if (pData->gprmc_data.mag_var_dir != 'E' && pData->gprmc_data.mag_var_dir != 'W') { sprintf(msg,"Magnetic Var. Direction:\t[ - ]\n\r"); } else { sprintf(msg,"Magnetic Var. Direction:\t[ %c ]\n\r", pData->gprmc_data.mag_var_dir); } TESEO_APP_LOG_INFO(msg); // sprintf(msg,"Checksum:\t\t[ *%x ]\n\r", // pData->gprmc_data.checksum); // TESEO_APP_LOG_INFO(msg); TESEO_APP_LOG_INFO("\n\n\r"); return; } /** * @brief This function prints on the console the info about GNSS satellites got by the most recent reception process * @param pData * @retval None */ static void GetGSAMsgInfos(tTeseoData *pData) { // char msg[256]; TESEO_APP_LOG_INFO("\r\n"); sprintf(msg, "Constellation:\t\t[ %s ]\t", pData->gsa_data.constellation); TESEO_APP_LOG_INFO(msg); if (strcmp(pData->gsa_data.constellation, "$GPGSA") == 0) { TESEO_APP_LOG_INFO("-- only GPS constellation is enabled\n\r"); } else if (strcmp(pData->gsa_data.constellation, "$GLGSA") == 0) { TESEO_APP_LOG_INFO("-- only GLONASS constellation is enabled\n\r"); } else if (strcmp(pData->gsa_data.constellation, "$GAGSA") == 0) { TESEO_APP_LOG_INFO("-- only GALILEO constellation is enabled\n\r"); } else if (strcmp(pData->gsa_data.constellation, "$BDGSA") == 0) { TESEO_APP_LOG_INFO("-- only BEIDOU constellation is enabled\n\r"); } else if (strcmp(pData->gsa_data.constellation, "$GNGSA") == 0) { TESEO_APP_LOG_INFO("-- more than one constellation is enabled\n\r"); } sprintf(msg, "Operating Mode:\t\t[ %c ]\t\t", pData->gsa_data.operating_mode); TESEO_APP_LOG_INFO(msg); if (pData->gsa_data.operating_mode == 'A') { TESEO_APP_LOG_INFO("-- Auto (2D/3D)\n\r"); } else if (pData->gsa_data.operating_mode == 'M') { TESEO_APP_LOG_INFO("-- Manual\n\r"); } sprintf(msg,"Current Mode:\t\t[ %d ]\t\t", pData->gsa_data.current_mode); TESEO_APP_LOG_INFO(msg); if (pData->gsa_data.current_mode == 1) { TESEO_APP_LOG_INFO("-- no fix available\n\r"); } else if (pData->gsa_data.current_mode == 2) { TESEO_APP_LOG_INFO("-- 2D\n\r"); } else if (pData->gsa_data.current_mode == 3) { TESEO_APP_LOG_INFO("-- 3D\n\r"); } for (uint8_t i=0; i<12; i++) { sprintf(msg,"SatPRN%02d:\t\t[ %d ]\n\r", i+1, pData->gsa_data.sat_prn[i]); TESEO_APP_LOG_INFO(msg); } sprintf(msg,"PDOP:\t\t\t[ %.01f ]\n\r", pData->gsa_data.pdop); TESEO_APP_LOG_INFO(msg); sprintf(msg,"HDOP:\t\t\t[ %.01f ]\n\r", pData->gsa_data.hdop); TESEO_APP_LOG_INFO(msg); sprintf(msg,"VDOP:\t\t\t[ %.01f ]\n\r", pData->gsa_data.vdop); TESEO_APP_LOG_INFO(msg); // sprintf(msg,"ID - Checksum:\t\t[ *%x ]\n\r", // pData->gsa_data.checksum); // TESEO_APP_LOG_INFO(msg); TESEO_APP_LOG_INFO("\n\n\r"); } /** * @brief This function prints on the console the info about GNSS satellites got by the most recent reception process * @param pData * @retval None */ static void GetGSVMsgInfos(tTeseoData *pData) { uint8_t i; uint8_t tot_sats = pData->gsv_data.tot_sats; // char msg[256]; char degree_sym = 248; TESEO_APP_LOG_INFO("\r\n"); sprintf(msg, "Constellation:\t\t[ %s ]\t", pData->gsv_data.constellation); TESEO_APP_LOG_INFO(msg); if (strcmp(pData->gsv_data.constellation, "$GPGSV") == 0) { TESEO_APP_LOG_INFO("-- message to report all GPS satellites\n\r"); } else if (strcmp(pData->gsv_data.constellation, "$GLGSV") == 0) { TESEO_APP_LOG_INFO("-- message to report all GLONASS satellites\n\r"); } else if (strcmp(pData->gsv_data.constellation, "$GAGSV") == 0) { TESEO_APP_LOG_INFO("-- message to report all GALILEO satellites\n\r"); } else if (strcmp(pData->gsv_data.constellation, "$BDGSV") == 0) { TESEO_APP_LOG_INFO("-- message to report all BEIDOU satellites\n\r"); } else if (strcmp(pData->gsv_data.constellation, "$QZGSV") == 0) { TESEO_APP_LOG_INFO("-- message to report all QZSS satellites\n\r"); } else if (strcmp(pData->gsv_data.constellation, "$GNGSV") == 0) { TESEO_APP_LOG_INFO("-- message to report all satellites for all enabled constellations\n\r"); } /* debug */ // sprintf(msg,"Tot Messages:\t\t[ %d ]\n\r", // ((tTeseoData *)(handle->pData))->gsv_data.amount); // TESEO_APP_LOG_INFO(msg); // // sprintf(msg,"Message Num:\t\t[ %d ]\n\r", // ((tTeseoData *)(handle->pData))->gsv_data.number); // TESEO_APP_LOG_INFO(msg); sprintf(msg,"Num of Satellites:\t[ %d ]\n\r", tot_sats); TESEO_APP_LOG_INFO(msg); TESEO_APP_LOG_INFO("\n\r"); for (i=0; i<tot_sats; i++) { sprintf(msg,"Sat%02dPRN:\t\t[ %03d ]\n\r", i+1, pData->gsv_data.gsv_sat_i[i].prn); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Sat%02dElev (%c):\t\t[ %03d ]\n\r", i+1, degree_sym, pData->gsv_data.gsv_sat_i[i].elev); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Sat%02dAzim (%c):\t\t[ %03d ]\n\r", i+1, degree_sym, pData->gsv_data.gsv_sat_i[i].azim); TESEO_APP_LOG_INFO(msg); sprintf(msg,"Sat%02dCN0 (dB):\t\t[ %03d ]\n\r", i+1, pData->gsv_data.gsv_sat_i[i].cn0); TESEO_APP_LOG_INFO(msg); TESEO_APP_LOG_INFO("\n\r"); } TESEO_APP_LOG_INFO("\r\n"); } /** * @brief This function prints on the console the info Geofence * @param pData * @retval None */ static void GetGeofenceInfos(tTeseoData *pData) { // char msg[256]; TESEO_APP_LOG_INFO("\r\n"); if(pData->geofence_data.op == GNSS_FEATURE_EN_MSG) { sprintf(msg, "Geofence Enabling:\t\t[ %s ]\t", pData->geofence_data.result ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); } if(pData->geofence_data.op == GNSS_GEOFENCE_CFG_MSG) { sprintf(msg, "Geofence Configuration:\t\t[ %s ]\t", pData->geofence_data.result ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); } if(pData->geofence_data.op == GNSS_GEOFENCE_STATUS_MSG) { sprintf(msg, "Geofence Status:\t\t[ %s ]\t", pData->geofence_data.result ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); if(pData->geofence_data.result == 0) { TESEO_APP_LOG_INFO("\r\n"); sprintf(msg, "Time/Date:\t\t%02d:%02d:%02d %02d/%02d/%04d\n", pData->geofence_data.timestamp.hh, pData->geofence_data.timestamp.mm, pData->geofence_data.timestamp.ss, pData->geofence_data.timestamp.day, pData->geofence_data.timestamp.month, pData->geofence_data.timestamp.year); TESEO_APP_LOG_INFO(msg); for(uint8_t i = 0; i<MAX_GEOFENCES_NUM; i++) { sprintf(msg, "Position circle[%d]:\t%s\n", i, geofenceCirclePosition[pData->geofence_data.status[i]]); TESEO_APP_LOG_INFO(msg); } } } if(pData->geofence_data.op == GNSS_GEOFENCE_ALARM_MSG) { sprintf(msg, "Geofence Alarm:\t\t[ %s ]\t", pData->geofence_data.result ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); if(pData->geofence_data.result == 0) { TESEO_APP_LOG_INFO("\r\n"); sprintf(msg, "Time:\t\t%02d:%02d:%02d\n", pData->geofence_data.timestamp.hh, pData->geofence_data.timestamp.mm, pData->geofence_data.timestamp.ss); TESEO_APP_LOG_INFO(msg); int i = pData->geofence_data.idAlarm; sprintf(msg, "Position circle[%d]:\t%s\n", i, geofenceCirclePosition[pData->geofence_data.status[i]]); TESEO_APP_LOG_INFO(msg); } } TESEO_APP_LOG_INFO("\r\n"); } /** * @brief This function prints on the console the info about Odometer * @param pData * @retval None */ static void GetOdometerInfos(tTeseoData *pData) { // char msg[256]; TESEO_APP_LOG_INFO("\r\n"); if(pData->odo_data.op == GNSS_FEATURE_EN_MSG) { sprintf(msg, "Odometer Enabling:\t\t[ %s ]\t", pData->odo_data.result ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); } if((pData->odo_data.op == GNSS_ODO_START_MSG) || (pData->odo_data.op == GNSS_ODO_STOP_MSG)) { sprintf(msg, "Odometer Operation:\t\t[ %s ]\t", pData->odo_data.result ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); } TESEO_APP_LOG_INFO("\r\n"); } /** * @brief This function prints on the console the info about Datalog * @param pData * @retval None */ static void GetDatalogInfos(tTeseoData *pData) { // char msg[256]; TESEO_APP_LOG_INFO("\r\n"); if(pData->datalog_data.op == GNSS_FEATURE_EN_MSG) { sprintf(msg, "Datalog Enabling:\t\t[ %s ]\t", pData->datalog_data.result ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); } if(pData->datalog_data.op == GNSS_DATALOG_CFG_MSG) { sprintf(msg, "Datalog Configuring:\t\t[ %s ]\t", pData->datalog_data.result ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); } if(pData->datalog_data.op == GNSS_DATALOG_START_MSG) { sprintf(msg, "Datalog Start:\t\t[ %s ]\t", pData->datalog_data.result ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); } if(pData->datalog_data.op == GNSS_DATALOG_STOP_MSG) { sprintf(msg, "Datalog Stop:\t\t[ %s ]\t", pData->datalog_data.result ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); } if(pData->datalog_data.op == GNSS_DATALOG_ERASE_MSG) { sprintf(msg, "Datalog Erase:\t\t[ %s ]\t", pData->datalog_data.result ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); } TESEO_APP_LOG_INFO("\r\n"); } /** * @brief This function prints on the console the ack about Message List cfg * @param pData * @retval None */ static void GetMsgListAck(tTeseoData *pData) { // char msg[256]; TESEO_APP_LOG_INFO("\r\n"); sprintf(msg, "Msg List config:\t\t[ %s ]\t", pData->ack ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); TESEO_APP_LOG_INFO("\r\n"); } /** * @brief This function prints on the console the ack about Message List cfg * @param pData * @retval None */ static void GetAck(tTeseoData *pData) { // char msg[256]; TESEO_APP_LOG_INFO("\r\n"); sprintf(msg, "Params configuration:\t\t[ %s ]\t", pData->ack ? "ERROR" : "OK"); TESEO_APP_LOG_INFO(msg); TESEO_APP_LOG_INFO("\r\n"); } void _AppOutputCallback(uint32_t msgId, uint32_t msgType, tTeseoData *pData) { switch (msgId) { case LOC_OUTPUT_LOCATION: { // Output last location TESEO_APP_LOG_INFO("Loc: lat=%lf, lon=%lf, alt=%f\r\n", pData->gpgga_data.xyz.lat, pData->gpgga_data.xyz.lon, pData->gpgga_data.xyz.alt); break; } case LOC_OUTPUT_NMEA: { //return; Teseo::eMsg msg = (Teseo::eMsg)msgType; switch(msg) { case Teseo::GNS: // GET Fix data for single or combined Satellite navigation system GetGNSMsgInfos(pData); break; case Teseo::GPGST: // GET GPS Pseudorange Noise Statistics GetGPGSTInfos(pData); break; case Teseo::GPRMC: // GET Recommended Minimum Specific GPS/Transit data GetGPRMCInfos(pData); break; case Teseo::GSA: // GET GPS DOP and Active Satellites GetGSAMsgInfos(pData); break; case Teseo::GSV: // GET GPS Satellites in View GetGSVMsgInfos(pData); break; default: break; } break; } case LOC_OUTPUT_PSTM: { Teseo::ePSTMsg msg = (Teseo::ePSTMsg)msgType; switch(msg) { case Teseo::PSTMGEOFENCE: // GET Geofence info GetGeofenceInfos(pData); break; case Teseo::PSTMODO: // GET Geofence info GetOdometerInfos(pData); break; case Teseo::PSTMDATALOG: // GET Datalog info GetDatalogInfos(pData); break; case Teseo::PSTMSGL: // GET Message List ack GetMsgListAck(pData); break; case Teseo::PSTMSAVEPAR: // GET SAVE PAR ack GetAck(pData); break; default: break; } break; } default: break; } } void _AppEventCallback(eTeseoLocEventType event, uint32_t data) { switch (event) { case TESEO_LOC_EVENT_START_RESULT: if (data != 0) { TESEO_APP_LOG_INFO("start failed.\r\n"); } else { TESEO_APP_LOG_INFO("start OK.\r\n"); } break; case TESEO_LOC_EVENT_STOP_RESULT: if (data != 0) { TESEO_APP_LOG_INFO("stop failed.\r\n"); } else { TESEO_APP_LOG_INFO("stop OK.\r\n"); } break; default: break; } }