亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gps.c

?? Open DMT Client C Source code
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
// ----------------------------------------------------------------------------// Copyright 2006-2007, Martin D. Flynn// All rights reserved// ----------------------------------------------------------------------------//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at// // http://www.apache.org/licenses/LICENSE-2.0// // Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.//// ----------------------------------------------------------------------------// Description://  Machine interface to GPS module.//  Abstraction layer for the machine interface to the GPS module.// Notes://  - The code included here is only an example of how to parse NMEA-0183 GPS records.//  This module should perform sufficient error checking to insure that the GPS module//  is functioning properly.//  - Ideally, GPS aquisition should occur in it's own thread in order to return//  the latest GPS fix to the requestor immediately (without blocking).  In non-thread//  mode, this implementation will block until a new GPS fix has been aquired (or if a //  timeout occurs).// ---// Change History://  2006/01/04  Martin D. Flynn//     -Initial release//  2006/02/09  Martin D. Flynn//     -This module now maintains its "stale" state.//     -"gpsGetDiagnostics" now returns a structure.//  2006/06/08  Martin D. Flynn//     -Added support for parsing "$GPGSA" //      (the DOP values are not currently used for fix discrimination).//  2007/01/28  Martin D. Flynn//     -WindowsCE port//     -Switched to generic thread access methods in 'tools/threads.h'//     -Initial implementation of a 'power-save' mode feature that closes the GPS //      comport if the sampling interval is greater than a minute (or so).  The HP //      hw6945 turns off the GPS receiver when the comport has been closed - to save //      power.  This feature allows GPS tracking on the HP hw6945 to conserve power//      (at the expense of some event accuracy).  Note: this feature is still under//      development and may not currently produce the desired results if used.// ----------------------------------------------------------------------------#include "stdafx.h" // TARGET_WINCE#include "custom/defaults.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <time.h>#include <math.h>#include "custom/log.h"#include "custom/gps.h"#include "custom/gpsmods.h"#include "tools/stdtypes.h"#include "tools/utctools.h"#include "tools/strtools.h"#include "tools/checksum.h"#include "tools/comport.h"#include "base/events.h"#include "base/propman.h"#include "base/statcode.h"// ----------------------------------------------------------------------------#if !defined(GPS_COM_DATA_FORMAT)#  define GPS_COM_DATA_FORMAT           "8N1"#endif// ----------------------------------------------------------------------------/* compiling with thread support? */#if defined(GPS_THREAD)//#  warning GPS thread support enabled#  include "tools/threads.h"#else//#  warning GPS thread support disabled#endif// ----------------------------------------------------------------------------// References://   "GPS Hackery": http://www.ualberta.ca/~ckuethe/gps///   "GPS Applications": http://www.codeproject.com/vb/net/WritingGPSApplications1.asp// ----------------------------------------------------------------------------/* default GPS port */// This default value is not used if the GPS comport property is in effect.// The real default value is specified in 'propman.c'#if defined(TARGET_WINCE)#  define DEFAULT_GPS_PORT      ""#else#  define DEFAULT_GPS_PORT      "TTYS2"#endif/* simjulator port name */#define GPS_SIMULATOR_PORT      "sim"/* GPS bps */#define DEFAULT_GPS_SPEED       4800L // 8N1 assumed/* maximum out-of-sync seconds between GPS time and system time */// set this value to '0' to ignore sync'ing with system clock #define MAX_DELTA_CLOCK_TIME    20L/* minimum out-of-sync seconds between GPS time and system time */// delta must be at least this value to cause a system clock update#define MIN_DELTA_CLOCK_TIME    5L/* maximum number of allowed seconds in a $GP record 'cycle' */// In most GPS receivers, the default 'cycle' is 1 second#define GP_EXPIRE               5L/* power-save threshold */// if PROP_GPS_SAMPLE_RATE is >= this value, the GPS port will not be openned// until 'gpsAquire' is called, and will be closed after a GPS fix is aquired.#define POWER_SAVE_THRESHOLD    45L // seconds// ----------------------------------------------------------------------------/* control characters */#define ASCII_XON               17 // DC1, CTL_Q#define ASCII_XOFF              19 // DC3, CTL_S// ----------------------------------------------------------------------------#define SUPPORT_TYPE_GPRMC      0x0001 // should always be defined#define SUPPORT_TYPE_GPGGA      0x0002 // altitude, HDOP#define SUPPORT_TYPE_GPGSA      0x0004 // PDOP, HDOP, VDOP// ----------------------------------------------------------------------------#if defined(GPS_DEVICE_SIMULATOR)static utBool                   gpsSimulator = utFalse;#endifstatic ComPort_t                gpsComPort;static utBool                   gpsPortDebug;static GPS_t                    gpsFixLast;static GPS_t                    gpsFixUnsafe;static double                   gpsLastPDOP             = GPS_UNDEFINED_DOP;static double                   gpsLastHDOP             = GPS_UNDEFINED_DOP;static double                   gpsLastVDOP             = GPS_UNDEFINED_DOP;static TimerSec_t               gpsLastHDOPTimer        = 0L;static utBool                   gpsIsStale              = utFalse;static UInt32                   gpsSampleCount_A        = 0L; // validstatic UInt32                   gpsSampleCount_V        = 0L; // invalidstatic UInt32                   gpsRestartCount         = 0L;static TimerSec_t               gpsLastSampleTimer      = 0L;static TimerSec_t               gpsLastValidTimer       = 0L;static TimerSec_t               gpsLastReadErrorTimer   = 0L;static TimerSec_t               gpsLastLostErrorTimer   = 0L;static utBool                   gpsAquireRequest        = utFalse;static UInt32                   gpsAquireTimeoutMS      = 0L;#if defined(GPS_THREAD)static utBool                   gpsRunThread = utFalse;static threadThread_t           gpsThread;static threadMutex_t            gpsMutex;static threadMutex_t            gpsSampleMutex;static threadMutex_t            gpsAquireMutex;static threadCond_t             gpsAquireCond;#define SAMPLE_LOCK             MUTEX_LOCK(&gpsSampleMutex);#define SAMPLE_UNLOCK           MUTEX_UNLOCK(&gpsSampleMutex);#define GPS_LOCK                MUTEX_LOCK(&gpsMutex);#define GPS_UNLOCK              MUTEX_UNLOCK(&gpsMutex);#define AQUIRE_LOCK             MUTEX_LOCK(&gpsAquireMutex);#define AQUIRE_UNLOCK           MUTEX_UNLOCK(&gpsAquireMutex);#define AQUIRE_WAIT             CONDITION_WAIT(&gpsAquireCond, &gpsAquireMutex);#define AQUIRE_NOTIFY           CONDITION_NOTIFY(&gpsAquireCond);#else#define SAMPLE_LOCK     #define SAMPLE_UNLOCK   #define GPS_LOCK        #define GPS_UNLOCK      #define AQUIRE_LOCK             #define AQUIRE_UNLOCK           #define AQUIRE_WAIT             #define AQUIRE_NOTIFY           #endif// ----------------------------------------------------------------------------static GPSDiagnostics_t gpsStats = { 0L, 0L, 0L, 0L, 0L };GPSDiagnostics_t *gpsGetDiagnostics(GPSDiagnostics_t *stats){#if !defined(GPS_THREAD)// These values will not be accurate if not running in thread mode#  warning GPS is not running in thread mode, diagnostic values will not be accurate.#endif    GPSDiagnostics_t *s = stats? stats : &gpsStats;    SAMPLE_LOCK {        s->lastSampleTime = TIMER_TO_UTC(gpsLastSampleTimer);        s->lastValidTime  = TIMER_TO_UTC(gpsLastValidTimer);        s->sampleCount_A  = gpsSampleCount_A;        s->sampleCount_V  = gpsSampleCount_V;        s->restartCount   = gpsRestartCount;    } SAMPLE_UNLOCK    return s;}// ----------------------------------------------------------------------------#if defined(TARGET_WINCE)// skip handling of specific GPS receiver types#elsestatic void _gpsConfigGarmin(ComPort_t *com){    // This configures a Garmin receiver to send only GPRMC & GPGGA records,    // and send them only once every 2 seconds.        // disable all sentences    comPortWriteString(com, "$PGRMO,,2\r\r\n");    // "$PGRMO,,4" restores factory default sentences    comPortFlush(com, 100L);        // Fix mode: Automatic    // Differential mode: Automatic    comPortWriteString(com, "$PGRMC,A,,,,,,,,A\r\r\n");    comPortFlush(com, 100L);        // output every 2 seconds    // automatic position averaging when stopped    // NMEA-0183 v2.30 off    // enable WAAS    comPortWriteString(com, "$PGRMC1,2,,2,,,,1,W\r\r\n");    // "$PGRMC1,1" set it back to 1/sec    // "$PGRMC1E" queries current config    comPortFlush(com, 100L);    // enable GPRMC sentence    comPortWriteString(com, "$PGRMO,GPRMC,1\r\r\n");    comPortFlush(com, 100L);    // enable GPGGA sentence    comPortWriteString(com, "$PGRMO,GPGGA,1\r\r\n");    comPortFlush(com, 100L);    /* done */    logDEBUG(LOGSRC,"Garmin GPS configured");}#endif// ----------------------------------------------------------------------------/* open gps serial port */static utBool _gpsOpen(){    ComPort_t *com = &gpsComPort;    comPortInitStruct(com);    /* check port */    const char *portName = propGetString(PROP_CFG_GPS_PORT, "");    if (!portName || !*portName) { portName = DEFAULT_GPS_PORT; }        /* simulator mode? */#if defined(GPS_DEVICE_SIMULATOR)    gpsSimulator = strEqualsIgnoreCase(portName,GPS_SIMULATOR_PORT);    if (gpsSimulator) {        // should not be here if we are running in simulator mode        return utFalse;    }#endif    /* speed */    long bpsSpeed = (long)propGetUInt32(PROP_CFG_GPS_BPS, -1L);    if (bpsSpeed <= 0L) { bpsSpeed = DEFAULT_GPS_SPEED; }    /* open */    if (comPortOpen(com,portName,bpsSpeed,GPS_COM_DATA_FORMAT,utFalse) == (ComPort_t*)0) {        // The outer loop will retry the open later        // Generally, this should not occur on the GumStix        //logWARNING(LOGSRC,"Unable to open GPS port '%s' [%s]", portName, strerror(errno));        logWARNING(LOGSRC,"Unable to open GPS port '%s'", portName);        return utFalse;    }    logDEBUG(LOGSRC,"Opened GPS port: %s [%ld bps]", comPortName(com), bpsSpeed);    threadSleepMS(500L); // wait for connection to settle    /* comport logging */    gpsPortDebug = propGetBoolean(PROP_CFG_GPS_DEBUG,utFalse);#if defined(TARGET_WINCE)    // TODO: implement comport logging feature#else    if (gpsPortDebug) {        comPortSetDebugLogger(com, 0);    }#endif    /* specific GPS device configuration */#if defined(TARGET_WINCE)    // skip handling of specific GPS receiver types#else    const char *receiver = propGetString(PROP_CFG_GPS_MODEL,"");    if (strEqualsIgnoreCase(receiver,GPS_RECEIVER_GARMIN)) {        // Garmin 15, 18PC        _gpsConfigGarmin(com);    }#endif    /* return success */    return utTrue;}/* close gps serial port */static void _gpsClose(){    comPortClose(&gpsComPort);}// ----------------------------------------------------------------------------/* update system clock time */static utBool gpsUpdateSystemClock(long fixtime){    long delta = (long)propGetUInt32(PROP_GPS_CLOCK_DELTA, MAX_DELTA_CLOCK_TIME);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品免费视频网站| 激情五月婷婷综合网| 日本一区免费视频| 久久麻豆一区二区| 久久麻豆一区二区| 国产校园另类小说区| 久久精品一区二区| 国产色综合一区| 中文字幕成人av| 中文字幕永久在线不卡| 亚洲精品视频自拍| 亚洲一区二区三区在线看| 亚洲国产sm捆绑调教视频| 午夜国产精品影院在线观看| 亚洲高清久久久| 免费一区二区视频| 国产一区视频导航| 成人看片黄a免费看在线| jizzjizzjizz欧美| 日本韩国一区二区三区| 欧美人体做爰大胆视频| 日韩午夜激情av| 久久久久97国产精华液好用吗| 中文久久乱码一区二区| 伊人色综合久久天天人手人婷| 亚洲成人高清在线| 免费人成精品欧美精品 | 大胆欧美人体老妇| eeuss鲁片一区二区三区在线看| 9久草视频在线视频精品| 色94色欧美sute亚洲线路一久 | 欧美大尺度电影在线| 久久综合九色综合97婷婷| 国产日韩欧美a| 亚洲乱码中文字幕| 美腿丝袜亚洲色图| 成人国产电影网| 欧美亚洲一区二区三区四区| 欧美变态tickle挠乳网站| 中文字幕一区日韩精品欧美| 午夜电影一区二区| 国产经典欧美精品| 在线一区二区观看| 久久亚洲综合色一区二区三区 | 极品少妇一区二区| 99国产精品视频免费观看| 欧美欧美欧美欧美| 国产精品久久久99| 麻豆成人91精品二区三区| eeuss影院一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | av影院午夜一区| 5566中文字幕一区二区电影| 日本一区二区三级电影在线观看 | 丝袜亚洲另类丝袜在线| 国产一区999| 欧美电影在线免费观看| 亚洲午夜在线电影| 国产精品自在欧美一区| 欧美亚洲精品一区| 国产性色一区二区| 日本在线播放一区二区三区| av毛片久久久久**hd| 精品国产区一区| 亚洲国产精品麻豆| 99国产欧美另类久久久精品| 久久新电视剧免费观看| 午夜电影久久久| 色婷婷香蕉在线一区二区| 久久免费美女视频| 免费看精品久久片| 欧美日韩一区二区三区在线看| 国产精品网站导航| 国产一二精品视频| 日韩欧美一级二级三级久久久| 亚洲综合偷拍欧美一区色| 国产成人亚洲综合a∨猫咪| 8x8x8国产精品| 一区二区成人在线| 成人av网站在线观看免费| 精品捆绑美女sm三区| 天天色综合成人网| 在线观看中文字幕不卡| 18涩涩午夜精品.www| 国产精品 欧美精品| 精品对白一区国产伦| 日本不卡123| 欧美久久久影院| 亚洲自拍另类综合| 日本韩国欧美一区二区三区| 中文字幕欧美国产| 国产成人自拍网| 国产午夜久久久久| 国产成人aaa| 国产日韩精品一区二区浪潮av| 九色综合狠狠综合久久| 精品少妇一区二区三区在线播放| 奇米亚洲午夜久久精品| 欧美老肥妇做.爰bbww| 亚洲bt欧美bt精品| 欧美精选在线播放| 日一区二区三区| 51精品秘密在线观看| 美女性感视频久久| 欧美成人video| 国内精品久久久久影院色| 久久久欧美精品sm网站| 国产成人精品网址| 亚洲国产精品精华液ab| 成人免费av资源| 亚洲女与黑人做爰| 欧美在线观看视频一区二区三区| 洋洋成人永久网站入口| 欧美婷婷六月丁香综合色| 亚洲成人先锋电影| 91精品国产91热久久久做人人| 奇米精品一区二区三区四区| 日韩丝袜美女视频| 国产露脸91国语对白| 全国精品久久少妇| 精品日韩在线一区| 国产91色综合久久免费分享| 国产精品国产自产拍在线| 一本色道久久综合亚洲aⅴ蜜桃 | 97久久精品人人爽人人爽蜜臀| 亚洲视频电影在线| 精品视频全国免费看| 免费欧美在线视频| 中文字幕国产精品一区二区| 色综合欧美在线| 日韩精品每日更新| 久久九九久精品国产免费直播| eeuss鲁一区二区三区| 亚洲.国产.中文慕字在线| 精品国产免费一区二区三区香蕉| 国产成人在线视频免费播放| 亚洲乱码国产乱码精品精可以看| 欧美精品vⅰdeose4hd| 韩国女主播成人在线| 成人免费在线播放视频| 555夜色666亚洲国产免| 国产一区不卡在线| 亚洲一区在线视频| 精品1区2区在线观看| av电影在线观看一区| 日日嗨av一区二区三区四区| 欧美电影免费观看高清完整版在线观看| 国产成人自拍网| 午夜精品成人在线| 国产精品午夜电影| 欧美一区二区三区四区高清| 国产69精品久久777的优势| 亚洲午夜影视影院在线观看| 国产亚洲一区二区三区在线观看| 91久久香蕉国产日韩欧美9色| 久久国产精品99久久人人澡| 亚洲免费观看高清完整版在线观看 | 91精品国产免费| 波多野结衣中文一区| 免费欧美日韩国产三级电影| 日韩美女视频一区二区| 欧美大片免费久久精品三p| 91麻豆精品视频| 狠狠色狠狠色综合系列| 亚洲一区在线视频| 日本一区二区电影| 精品久久国产老人久久综合| 欧洲精品在线观看| 成人国产一区二区三区精品| 免费观看30秒视频久久| 亚洲激情在线播放| 国产精品青草久久| 精品久久国产97色综合| 欧美区在线观看| 欧洲亚洲国产日韩| 成人黄色在线视频| 精品一区二区三区av| 五月开心婷婷久久| 一区二区三区.www| 中文字幕在线不卡一区| 久久亚洲综合av| 91精品国产综合久久久蜜臀粉嫩| 波波电影院一区二区三区| 激情综合五月婷婷| 婷婷久久综合九色综合绿巨人| 亚洲欧美日韩国产综合在线| 欧美激情一区二区三区四区| 精品日本一线二线三线不卡| 91精品国产综合久久香蕉麻豆 | 久久综合久久久久88| 91麻豆精品国产91| 欧美男女性生活在线直播观看| 色综合久久久久久久久| 成人激情电影免费在线观看| 国产jizzjizz一区二区| 精品一二三四区| 久久精品免费看| 免费成人美女在线观看| 日日摸夜夜添夜夜添国产精品| 一区二区成人在线视频|