2011年3月11日 星期五

[Android]無法將ID編號超過32的衛星資訊通知回上層

感謝Danny網友詢問有關Android GPS的問題發現以下問題

Android GPS底層Driver在parse GPGSV

會需要將資訊填入GpsSvStatus

/** Represents SV status. */
typedef struct {
        /** Number of SVs currently visible. */
        int         num_svs;

        /** Contains an array of SV information. */
        GpsSvInfo   sv_list[GPS_MAX_SVS];

        /** Represents a bit mask indicating which SVs
         * have ephemeris data.
         */
        uint32_t    ephemeris_mask;

        /** Represents a bit mask indicating which SVs
         * have almanac data.
         */
        uint32_t    almanac_mask;

        /**
         * Represents a bit mask indicating which SVs
         * were used for computing the most recent position fix.
         */
        uint32_t    used_in_fix_mask;
} GpsSvStatus;

可是目前定義的長度只有32bit (uint32_t)

所以當你衛星ID超過32而且是fix的狀態

Android AP會無法得知

會造成某種程度定位資訊上的差異


透過Facebook分享

沒有留言: