總網頁瀏覽量

2012年4月7日 星期六

Android GPS framework


GpsLocation結構: 表示定位相關資訊
typedef struct {
    // set to sizeof(GpsLocation)
    size_t             size;
    //旗標位元
    uint16_t           flags;
    //緯度
    double          latitude;
    //經度
    double          longitude;
    //高度
    double          altitude;
    //速度
    float              speed;
    //方位
    float              bearing;
    //精準度
    float              accuracy;
    //時間戳記
    GpsUtcTime            timestamp;
} GpsLocation;


GpsStatusValue定義: 表示GPS晶片狀態
typedef uint16_t GpsStatusValue; //儲存GPS狀態 下面狀態的 0~4
#define GPS_STATUS_NONE             0
#define GPS_STATUS_SESSION_BEGIN    1//啟動導航
#define GPS_STATUS_SESSION_END      2//停止導航
#define GPS_STATUS_ENGINE_ON        3//未啟動導航
#define GPS_STATUS_ENGINE_OFF       4//電源關閉


GpsSvInfo結構: 描述衛星狀態
typedef struct {
    size_t  size;
    int       prn; //偽亂碼 即衛星編號
    float    snr;//衛星訊號
    float    elevation;//高度
    float   azimuth;//方位角
} GpsSvInfo;


GpsInterface結構: 連通上下層 為主要GPS的架構
typedef struct {
    size_t          size;
    int   (*init)( GpsCallbacks* callbacks );//初始化 並設定回調函數
    int   (*start)( void );//啟動導航
    int   (*stop)( void ); //關閉導航
    void  (*cleanup)( void );
    int   (*inject_time)(GpsUtcTime time, int64_t timeReference, int uncertainty);//插入目前時間
    int  (*inject_location)(double latitude, double longitude, float accuracy);//插入位置資訊
    void  (*delete_aiding_data)(GpsAidingData flags);//刪除輔助資訊
    int   (*set_position_mode)(GpsPositionMode mode, GpsPositionRecurrence recurrence, uint32_t   
           min_interval, uint32_t preferred_accuracy, uint32_t preferred_time);//設定位置模式
    const void* (*get_extension)(const char* name);//取得擴充介面
} GpsInterface;





沒有留言:

張貼留言