WO2005086459A1 - Host based satellite positioning methods and systems - Google Patents

Host based satellite positioning methods and systems Download PDF

Info

Publication number
WO2005086459A1
WO2005086459A1 PCT/US2004/003535 US2004003535W WO2005086459A1 WO 2005086459 A1 WO2005086459 A1 WO 2005086459A1 US 2004003535 W US2004003535 W US 2004003535W WO 2005086459 A1 WO2005086459 A1 WO 2005086459A1
Authority
WO
WIPO (PCT)
Prior art keywords
interface
positioning
gps
function
tracker
Prior art date
Application number
PCT/US2004/003535
Other languages
French (fr)
Inventor
Clifford Yamamoto
Sebastian Nonis
Ashutosh Pande
Nikola Bulatovic
Stefan Witanis
Original Assignee
Sirf Technology, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sirf Technology, Inc. filed Critical Sirf Technology, Inc.
Priority to EP04709090A priority Critical patent/EP1719317A1/en
Priority to PCT/US2004/003535 priority patent/WO2005086459A1/en
Publication of WO2005086459A1 publication Critical patent/WO2005086459A1/en

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S19/00Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
    • G01S19/01Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
    • G01S19/13Receivers
    • G01S19/35Constructional details or hardware or software details of the signal processing chain
    • G01S19/37Hardware or software details of the signal processing chain
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S19/00Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
    • G01S19/38Determining a navigation solution using signals transmitted by a satellite radio beacon positioning system
    • G01S19/39Determining a navigation solution using signals transmitted by a satellite radio beacon positioning system the satellite radio beacon positioning system transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
    • G01S19/42Determining position
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S5/00Position-fixing by co-ordinating two or more direction or position line determinations; Position-fixing by co-ordinating two or more distance determinations
    • G01S5/0009Transmission of position information to remote stations
    • G01S5/0018Transmission from mobile station to base station
    • G01S5/0036Transmission from mobile station to base station of measured values, i.e. measurement on mobile and position calculation on base station

Definitions

  • This invention relates to satellite positioning systems.
  • this invention relates to satellite positioning systems implemented utilizing the processing power of a host in communication with a hardware tracker.
  • a host based SPS system may include a host processing system that connects through a tracker hardware interface to a dedicated hardware space vehicle tracker.
  • the host processing system may also include a memory that includes a SPS library having a user interface, positioning engine, a tracker interface and an operating system interface.
  • a processor in the host processing system runs the positioning engine and the functions provided by the interfaces.
  • the tracker hardware interface receives positioning information from the space vehicle tracker. Through functions in the tracker interface, the positioning information is communicated to the positioning engine. In turn, the positioning engine may determine a position and communicate the position to a user application through functions provided in the user interface.
  • Figure 1 illustrates a detailed block diagram of one example of a positioning systems implemented as a host based SPS solution.
  • Figure 2 illustrates a hardware tracker that communicates with the positioning system shown in Figure 1.
  • Figure 3 depicts a hardware and software diagram of a positioning system that includes a GPS library with a user interface, a tracker interface, and an operating system interface.
  • Figure 4 illustrates a flow diagram of a user program running in the positioning system.
  • Figure 5 illustrates a block diagram of the cooperation between threads, tasks and hardware in one implementation of a host based SPS solution.
  • Figure 6 illustrates an execution schedule for a receive manager thread and a periodic navigation task.
  • Figure 7 illustrates a synchronization diagram for the timing and interaction between the threads and tasks shown in Figure 5.
  • a typical satellite positioning system (“SPS”) system has approximately 12 satellites that may be visible at any one time to a wireless device.
  • SPS means any system utilizing satellites and/or land-based communications devices for providing or enabling the determination of a location of the wireless device on the earth, for example but not limited to: the global positioning system (“GPS”) known as NAVSTAR, GLONASS, LORAN, Shoran, Decca, or TACAN.
  • GPS global positioning system
  • FIG. 1 depicts a block diagram of a positioning system 100 suitable for practicing methods and implementing systems consistent with the present invention.
  • the positioning system 100 includes a host 102 and tracker hardware 104.
  • the host 102 includes a central processing unit (“CPU") 106, a hardware tracker interface 110, and a memory 112.
  • the host 102 also includes a secondary storage device 114 (e.g., generally non- volatile memory such as a magnetic disk, flash memory, optical storage, and the like), and a display 116, and an input interface 118 (e.g., a mouse, keyboard, and the like).
  • a secondary storage device 114 e.g., generally non- volatile memory such as a magnetic disk, flash memory, optical storage, and the like
  • an input interface 118 e.g., a mouse, keyboard, and the like.
  • An operating system 120 (e.g., Windows CE, QNX, Palm OS, UNIX, Linux, Windows 2000, NT, XP, or the like) runs in the memory 112.
  • a user program 122 communicates with a SPS library 124 and the operating system 120.
  • the user program 122 thereby receives position information from the GPS library, and may also communicate commands to the SPS library.
  • the user program 122 may be any program that utilizes positioning information, including, as examples, a mapping program, course charter, location aid, and the like.
  • the host 102 connects through the hardware tracker interface 110 and the interface connection 126 to the tracker hardware 104.
  • the hardware tracker interface 110 may be virtually any type of data transfer interface (as examples, a serial, parallel, compact flash, PC Card, or network interface).
  • the interface connection 126 may then be, as examples, a serial cable, parallel cable, or network cable, and may optionally be wireless.
  • the hardware tracker interface 110 is an RS232 port running at 38,400 bps, N-8-1 that communicates up to 2KB of data per second between the host 102 and the tracker hardware 104.
  • the tracker hardware (as illustrated by the reference numeral 128) is more closely incorporated into the host 102.
  • the tracker hardware 128 may be directly coupled to the host 102 address, data, and control buses.
  • the host 102 receives and processes navigation information from the hardware tracker 104, 128 in order to provide the user programs 122 with position information.
  • the CPU 106 may be a microprocessor, microcontroller, application specific integrated circuit ("ASIC"), discrete or a combination of other types of circuits acting as a central processing unit.
  • the memory 112 may be RAM, DRAM, SDRAM, or any other type of read/writeable memory.
  • the tracker hardware 1O4 acquires and tracks SPS satellites and sends raw measurement data to the host 102 for position calculation.
  • the tracker hardware 104 includes an antenna 202 for receiving SPS satellite signals and a radio frequency ("RF") filter 204 for passing the signals to the RF interface circuit 206.
  • the RF interface circuit 206 processes the signals, produces 2-bit Inphase and Quadrature ("I/Q") signals and recovers SPS clocks.
  • the RF interface circuit 206 provides the I/Q signals and SPS clocks to the location processing circuit 208 for digital processing.
  • a reference frequency source 210 e.g., a crystal oscillator
  • RTC real time clock
  • the tracker hardware 104 may be implemented with components available from SiRF Technology, Inc. of San Jose California.
  • the RF interface circuit 206 may be implemented as a GRF2i/LP integrated circuit.
  • the location processing circuit may be implemented, as examples, as a GSP2t integrated circuit or GSP2e integrated circuit.
  • the tracker hardware 104 minimizes the overhead on the host 102 and operating system 120 by keeping low the maximum transmission rate of raw measurements to the host 102 (e.g., one measurement per second).
  • the memory 112 in the host 102 includes a SPS library 124, user programs 122 (e.g., map displaying, map matching, dead reckoning and route calculation programs), and the operating system 120 (which may be a multi-threaded operating system).
  • the SPS library 124 includes a positioning engine 302, a user interface 304, a tracker interface 306, and an operating system interface 308.
  • the user tasks 310 implement device drivers or link directly to the user programs 122, as examples.
  • persistent storage 312 and a real time clock 314 may optionally be provided.
  • the persistent storage 312 may be, as examples, 2 KB of Flash memory, battery backed up RAM or a disk drive.
  • the SPS library 124 may use the RTC in the host 102, the RTC 314, or may operate without an RTC.
  • the user interface 304 is called by the user programs 122 to start and configure the positioning system.
  • the positioning engine 302 calls a function provide by the user program 122 (e.g., GPS_Output) to deliver positioning messages (e.g., position updates and other synchronous and asynchronous data) to the user program 122.
  • the tracker interface 306 provides for communication between the tracker hardware 104 and the host 102 and, to that end, may load and call the operating system 120 serial communication drivers.
  • the operating system interface 308 calls operating syste functions for task scheduling and synchronization, RTC access, and storage access.
  • Figure 4 shows a flow diagram of a user program 122.
  • the user program 122 calls GPS_Start to start the positioning engine 302 (step 402).
  • the user program 122 determines whether to configure the positioning engine 302 (step 404).
  • the program 122 configures the positioning engine 302 by sending a message to the positioning engine 302 using the GPS_Input function, for example (step 406).
  • the program 122 waits for a new position fix (or other information) from the positioning engine 302 (step 408).
  • the positioning engine processes the information, for example, to display or update a map (step 410). If the program 122 continues to run (step 412), processing returns to step 404. Otherwise, the program 122 stops the positioning engine (step 414) and terminates.
  • the positioning engine runs separately and, when new positioning information is available, creates a message for the program 122 (step 416) and sends the message to the program 122 (step 418). Tables 1-5 below show exemplary function calls.
  • Table 6 shows which functions and messages are associated with each interface, while Tables 7-10 set forth files and data types used or referred to in the follow description. Table 6 - Interface Functions and Messages
  • GPS_COMM TRK_Create() GPS_COMM ⁇ TRK_Delete()
  • GPS_COMM " TRK_Read() GPS COMM- TRK_Write()
  • the user or GPS interface includes a GPS control interface and a GPS communication interface.
  • the GPS control Interface functions allow a user program to start and stop the GPS engine using the functions shown in Table 11.
  • the GPS communication interface functions allow a user program to send and receive messages to and from the GPS engine using the functions shown in Table 12.
  • GPS_Start() initializes and starts positioning engine threads and communication interface. This function should be called by user programs to start GPS activity.
  • the GPS_Stop function stops the positioning engine threads and communication interface. This function should be called by the user program to stop GPS activity.
  • the GPS_Output function retrieves a message from positiomng engine. There are no return values. The function is called by the positioning engine whenever any message is sent out. This function is implemented by the v ser program and statically linked with the GPS library.
  • the GPS_Input function sends a command to the GPS engine.
  • Tlxe function may be called by the client program to send a command to the GPS receiver.
  • the GPS communication interface messages are exchanged between the GPS client (e.g., a user program) and positioning or GPS engine via the user interface input and output functions.
  • the GPS client e.g., a user program
  • positioning or GPS engine via the user interface input and output functions.
  • the GPS_NAV_MEASURED_NAVIGATION output message provides ECEF position, velocity, GPS time and position status information.
  • the message is outputted periodically at 1Hz rate.
  • the GPS_NAV_MEASURED_TRACKER output message provides satellite status, azimuth, elevation and C/No information.
  • the message is outputted periodically at 1Hz rate.
  • Table 43 - tGPS_SV_INFO sub-structure Note: To get a real value of the parameter a value from the structure should be multiplied by the scale factor.
  • the GPS_NAV_SW_VERSION output message provides a positioning engine software version string. Message is sent as a reply to the GPS_NAV_POLL_SW_NERSION input message.
  • the GPS_NAV_CLOCK_STATUS output message provides current GPS clock status information. Message is outputted periodically at 1Hz rate or on demand as a reply to GPS_NAV_POLL_CLOCK_STATUS input message.
  • the GPS_NAV_ERROR output message outputs notification, warning, and alert messages.
  • GPS_ADC_ODOMETER_DATA output message provides ADC, odometer and GPIO lines state from tracker. Message is outputted periodically at 1 or 10Hz rate depending on setting used in GPS_Start() function.
  • the analog to digital converter may, for example, take measurements at 50Hz rate and the reported value adcX_avg may be an average of the last 5 samples.
  • the GPS_NAV_COMPLETE output message is sent at the end of the navigation cycle to confirm that the GPS engine has finished a position computation cycle (with or without success). In one implementation, this message is outputted at 1Hz rate.
  • the GPS_NAV_TEXT output message outputs debug and development messages in text format.
  • GPS_NAV_iNITIALIZE input message performs GPS engine re-initialization. Message should be used to perform factory, cold, warm or hot restart.
  • the navigation engine will initiate restart within one second and a default clock offset value is 96250 Hz.
  • a default clock offset value is 96250 Hz.
  • a value of 96250 Hz should be used.
  • TTFF TTFF
  • GPS_NAV_POLL_SW_VERSION input message asks for the software version of the position / GPS library.
  • the software version string may be returned, for example, in a GPS_NAV_S W_VERSION output message via GPS_Output() function.
  • the GPS_NAV_SET_DGPS_SOURCE input message selects a data source for differential (DGPS) corrections.
  • GPS_NAV_POLL_CLOCK_STATUS input message asks for the cunent GPS clock status of the GPS library.
  • the clock status data may be returned in GPS_NAV_CLOCK_STATUS output message via GPS_Output() function.
  • the GPS_NAV_SET_SBAS_PRN input message manually forces PRN for use in SBAS corrections.
  • the Operating System Interface functions are operating system dependent and are implemented in the open source format available from SiRF Technology, Inc.
  • the functions include Thread, mutex and semaphore functions. Permanent storage and RTC functions may be available depending on hardware availability.
  • the OS_Thread_Create() function uses an appropriate operating system service to create a thread.
  • the function is called by the GPS engine at the startup to create all desired threads.
  • a maximum number of desired threads may be specified by a GPS_RTOS_THREAD_MAX define.
  • the OS_Thread_Delete() function uses appropriate OS service to stop a thread and/or to wait for thread to gracefully stop. Function is called by the GPS engine from GPS_Stop() to stop all SiRFNav threads.
  • Thread identifiers and functions may be specified, for example, in the gpsjrtos.h header file.
  • the OS_Thread_Sleep() function uses appropriate OS service to suspend a thread for a given number of milliseconds. Function is called by the GPS engine to suspend current thread temporarily.
  • the OS_Mutex_Create() function uses an operating system service to create a Mutex (mutually exclusive) object, or OS-specific equivalent such as a software critical section. This function is called by the GPS engine at the startup to create all desired mutexes.
  • the maximum number of desired mutexes may be specified by a GPS_RTOS_MUTEX_MAX define.
  • the OS_Mutex_Delete() function uses an operating system service to delete a Mutex object. The function is called by the GPS engine at the stopping procedure to delete all used mutexes.
  • the OS_Mutex_Enter() function uses an operating system service to obtain a Mutex object. This function is called by the GPS engine just before entering into a critical section.
  • the OS_Mutex_Exit() function uses appropriate OS service to release a Mutex object. Function is called by the GPS engine just after leaving from a critical section.
  • the OS_Semaphore_Create() function uses an operating system service to create a Semaphore object.
  • the function is called by the GPS engine at the startup to create all desired semaphores.
  • the maximum number of desired semaphores may specified by a GPS_RTOS_SEM_MAX define.
  • the OS_Semaphore_Delete() function uses an operating system service to delete a Semaphore object. The function is called by the GPS engine at the stopping procedure to delete all used semaphores.
  • the OS_Semaphore_Wait() function uses an operating system service to wait for Semaphore object. Function is called by the GPS threads to wait for events.
  • the OS_Semaphore_Release() function uses appropriate OS service to release a Semaphore object.
  • the function is called by the GPS engine to schedule other thread.
  • the OS_Storage_Open() function uses an operating system or BIOS service to open a non volatile storage system.
  • the function is called by the GPS engine at the startup to open a storage.
  • function may return GPS_RTOS_ERROR.
  • OS_Storage_Close() function uses appropriate OS or BIOS service to close a non volatile storage system. The function is called by the GPS engine at the shut down procedure to close a storage.
  • function may return GPS_RTOS_ERROR.
  • the OS Storage_Write() function uses appropriate OS or BIOS service to write given words to a non volatile storage system (battery backed RAM, file system, etc.).
  • the function is called by the GPS engine periodically, for example every 30 seconds, to save time, position and ephemeris information. That information is used later to speed up the GPS start procedure (e.g., for hot or warm starts).
  • the OS_Storage_WriteAll() function uses an operating system or BIOS service to write a GPS data structure to a nonvolatile storage system.
  • Tbe function is called by the GPS engine periodically, for example every 30 seconds, to save time, position and ephemeris information. That information is used later to speed up the GPS start procedure (hot or warm starts)
  • the OS_Storage_Read() function uses an operating system or BIOS service to read GPS data structure from a nonvolatile storage system.
  • Trie function is called by the GPS engine at the startup to retrieve time, position and ephemeris information. This information is used to speed up the GPS start procedure (e.g., for hot or warm starts).
  • the OS_RTC__Read() function uses an operating system or BIOS service to read a real time clock information from the host's RTC.
  • the function is called periodically by the GPS engine.
  • the tracker communication interface functions allow messages to be sent and received between the tracker hardware and the user programs and position library.
  • the GPS_COMM_TRK_Create() function uses an OS or BIOS service to create a tracker communication handle.
  • the function is called by the GPS engine at the startup to create a communication handle.
  • the GPS_COMM_TRK_Delete() fixnction uses an OS or BIOS service to delete a tracker communication handle.
  • the function is called by the GPS engine at the stopping procedure to delete a communication handler.
  • the GPS_COMM_TRK_Open() function uses an OS or BIOS service to open and configure a tracker communication port. The function is called by the GPS engine at the startup.
  • the GPS_COMM_TRK_Reo ⁇ en() function uses an OS or BIOS service to re-open a tracker communication port.
  • the function is called by the GPS engine after coming back from a power suspend mode. When power suspend mode is not required then the function may return GPS_SUCCESS only.
  • the GPS_COMM_TRK_Close() function uses an OS or BIOS service to close a tracker communication port.
  • the function is called by the GPS engine at the stopping procedure to close the port.
  • the GPS_COMM_TRK_Wait() function uses an OS or BIOS services to wait for data from a tracker communication port.
  • the function is called by tlxe GPS engine to wait for the tracker data.
  • the GPS_COMM_TRK_Read() function uses appropriate OS or BIOS services to read data from a tracker communication port. The function is called by the GPS engine to read tracker data.
  • the GPS_COMM_TRK_Write() function uses appropriate OS or BIOS services to write data to the tracker communication port.
  • the function is called by the GPS engine to send commands to the tracker hardware.
  • FIG. 5 that figure shows a block diagram 500 of the cooperation between threads, tasks and hardware in one implementation of a host b ased GPS solution.
  • the tracker hardware 104 communicates through a serial driver 502 (for example, the Windows CE serial driver).
  • the serial driver 502 communicates and coope-rates with a file system 504 (for example, the Windows CE file system), which includes input buffers and output buffers for the communications that will occur.
  • Figure 5 shows a pass through data flow path to the tracker hardware 10-4.
  • the path includes the SendPassThroughDataToTracker thread 506 that forwards data directly from a client program, tlirough a pass through control function 508 to a tracker interface send function 510.
  • the tracker interface receive function 5 2 forwards data from the tracker hardware 104 to the navigation / positioning engine queue; 514 (if the message is destined for the positioning engine), or to the user interface queue 516 (if the message is destined directly for the user program).
  • the DataForwarder thread 5 18 removes messages from the user interface queue 516 and sends them via the user callback function 520 to the user program.
  • the host 102 includes the Component Obj ect Module interface (available from Microsoft), the user callback function 520 may be thte IcallBack function.
  • the receive manager and navigation thread 522 removes messages destined for the GPS library from the positioning engine queue 514, and also places messages destined for the user programs on the user interface queue 516.
  • the messages for the GPS library are processed by the tasks including the NavPeriodicTask 524.
  • a set of shared buffers, control flags, completion flags, and the like 526 are maintained by the GPS library.
  • the COM interface provides a set of control functions 528.
  • FIG. 6 that figure illustrates one execution schedule 600 for the receive manager thread 522 and the NavPeriodicTask 524.
  • the schedule 600 the NavPeriodicTask 524 runs as a low-priority (background) thread, while the receiver manager and navigation thread 522 run in one normal-priority thread.
  • Figure 7 that figure shows a synchronization diagram 700.
  • the synchronization diagram 700 illustrates the timing and interaction between the threads and tasks shown in Figure 5.
  • receive manager (RxM) and navigation (Nav) run sequentially in one loop that waits for new data from Tracker Interface (TRK_IF) Receiver before each iteration.
  • Either RxM or Nav may signals NavPeriodicTask 524 to proceed with one iteration of its loop (unless NavPeriodicTask 524 already performing its task:, in which case it will finish the task and skip one loop).
  • the RxM and Nav thread 522 may wait on a Critical Section when writing data to the UI Queue 516, or when sending data to Tracker 104. There will typically be a thread running while RxM&Nav are waiting.
  • NavPeriodicTasks .524 runs at smaller priority than the other tasks and it will not run as long as any other thread is running.
  • NavPeriodicTasks 524 runs at normal priority, b»ut does not present a conflict as long as RxM&Nav have sufficient priority to consume data generated by NavPeriodicTasks 524.
  • the RxM and Nav thread 522 runs the RxM control task that maintains a state machine for the Rx and manages the state machine transitions based on cunent state.
  • the RxM communicates with the tracker hardware 104 through the tracker interface. It both sends data and commands to the tracker hardware 104 to pace it through initial acquisition and tracking of SPS satellites, and receives data and status messages from the receiver with raw SPS satellite tracking data.
  • the primary purpose of the RxM task is to manage and control the operation of the tracker hardware 104. It also preprocesses the raw tracker data and submits the processed data to the Navigation Processing Task.
  • the RxM gets scheduled or called by the Nav Task once the tracker hardware 104 starts tracking.
  • the NavPeriodicTasks thread 524 is a pseudo task that peforms miscellaneous support operations for the RxM and Nav tasks. Its functions include determining and performing updates to the satellite state tables, and generating new visible SPS satellite list when new ephemeris data is collected, or whenever it is requested.
  • the Nav Processor Thread performs position, velocity and time computations based on the RxM generated individual SPS satellite data. This makes use of the functionality offered through the navigation library in optimally computing the navigation position data.
  • the computed navigation data is made available to the Data Forwarding thread.
  • the Nav Processor calls or schedules the RxM task to run, and then it performs navigation computations and generates the user position, velocity, and time data. Based on the computation results, if pre-selected enor thresholds are exceeded, the Nav Processor may send commands to the receiver, either directly or through the RxM, to force the receiver to reset.
  • the I/O Reader thread and Tracker Interface Receiver 512 sends data to queues as shown in Figure 5.
  • data length enor checks may be performed with enor counts logged in a global variable. Enoneous message bytes will be reported to the user program through debug messages.
  • the I/O Writer thread 510 is not used. Instead, its role may been taken by TRK_IF, whose methods are invoked from the RxM+Nav thread 522 and SendPassThruDataToTracker 504. TRK F writes directly to the serial port. (All I/O functions will be grouped into one class). In WinCE, buffering is performed on the File System level, which allows TRK_IF to return quickly upon sending data. On Nucleus, additional buffering may be provided. [00106] The DataForwarderThread 518 reads from the UI Queue 516 and calls the user program's ICallBack interface for each binary message to be sent.
  • the DataForwarderThread 518 may continue piping data until the UI queue 516 is empty.
  • the UI Queue 516 is not locked while Callback is being executed, which allows other threads to run while waiting for Callback to return. Client Callback typically puts data in internal storage for another thread to use. Generally, one Callback is called at a time.
  • the UI Queue 516 is prioritized and it will put pass-thru messages before all others in the queue.
  • the SendPassThruDataToTracker function 506 is an API call for sending pass- thru messages from the user program to the fracker hardware 104.
  • the pass through control function 504 may be implemented as a filter to enable or disable pass-thru iraessages.
  • a Shutdown may be performed by purging all queues and I/O. For example, 300ms (enough for RxM&Nav to complete) may then be given for threads to complete. Although some threads may not complete in that time, such as the DataForwarderTTiread 518 (that may be waiting for Callback to return), and NavPeriodicTask 524, for which there may or may not be a provision to interrupt long-term calculations. Regardless, threads which do not complete on time are terminated.
  • the following synchronization objects may be used: a Semaphore and Critical Seciton in UI Queue 516 for triggering UI output, a Semaphore and Critical Section in Trk2Nav Queue 514 for triggering Nav update, a Positioning / Navigation Library sync flag (from NavPeriodTasks to RxM and Nav), and a shutdown semaphore and flag. No»te that the Critical Section(s) in the Tracker Interface are for protecting access to the serial port.
  • Queues may have the following API and features: Constructor/destru-ctor, void *GetBuffer(int priority, long size) to obtain a pre-allocated buffer for Put(), voi ⁇ l Put() to queues the buffer with specified priority, void *BeginGet() to waits until data ready or shutdown, void EndGet(), void Remove(), void Purge() to cancel all BeginGet calls, an internal Semaphore for notifying BeginGet() when data is ready, and an internal Critical Section.
  • enor checking all queue overruns, I/O enors, timeouts and COM enors may optionally be reported to client, packaged in debug messages, UI queue 516 overruns will be reported as an enor to user program, Tracker message time-outs may be handled by Nav, and Trk2Nav Queue 514 overruns may be signaled to RxM and Nav.
  • the Windows registry may provide a mechanism for configuring thread priorities (that may, for example, be set once at startup and remain unchanged during execution), I/O buffer sizes, and queue sizes.
  • the SetupComm() function may be used to increase the size of existing WinCE I/O buffers. Doing so prevents input data loss under stress conditions. This may also be configurable through registry, and default values may be chosen to accommodate several seconds of I/O (e.g., 4kb for input and lkb for output).

Abstract

Methods and systems consistent with the present invention provide a host (102) based positioning system. The host based positioning system includes a tracker hardware interface (110) that connects to a dedicated hardware space vehicle tracker (104). The tracker hardware interface receives positioning information from the space vehicle tracker (104). The host based positioning system also includes a memory that includes a GPS library (124) having a user interface, a tracker interface, and an operating system interface. A processor (106) runs functions provided by the interfaces.

Description

HOST BASED SATELLITE POSITIONING METHODS ND SYSTEMS
BACKGROUND OF THE INVENTION [001] 1. Field of the Invention
[002] This invention relates to satellite positioning systems. In particular, this invention relates to satellite positioning systems implemented utilizing the processing power of a host in communication with a hardware tracker.
[003] 2. Related Art
[004] The worldwide utilization of wireless devices such as two-way radios, pagers, portable televisions, personal communication system ("PCS"), personal digital assistants ("PDAs") cellular telephones (also known a "mobile phones"), Bluetooth, satellite radio receivers and Satellite Positioning Systems ("SPS") such as Global Positioning Systems ("GPS"), also known as NANSTAR, is growing at a rapid pace. Current trends are calling for the incorporation of SPS services into a broad range of electronic devices and systems, including Personal Digital Assistants (PDAs), cellular telephones, portable computers, automobiles, and the like. At the same time, manufacturers constantly strive to reduce costs and produce the most cost-attractive product possible for consumers.
[005] In the past, providing a SPS solution often involved expensive dedicated SPS signal reception and processing hardware, as well as dedicated post processing hardware for resolving location measurements, displaying location coordinates, updating map displays, and the like. However, given the rapid growth in speed, sophistication, and processing power of the host microprocessors present in the host device (e.g., in a cellular telephone or automobile), the possibility exists for allowing the host microprocessor to bear the burden not only of running its regular applications, but also to operate as part of the SPS solution. Such an approach is presented in U.S. Pat. No. 6,430,503, titled "Distributed GPS Navigation System," issued to Paul W. McBurney et al., the entirety of which is incorporated herein by reference.
[006] As noted above, however, there is a strong push toward incorporating SPS solutions in many electronic devices designed by numerous manufacturers. Of course, each device varies considerably in architecture, operating system, hardware interfaces, and the like. Prior SPS solutions did not provide the flexibility that allowed the solutions to be adapted to a wide range of electronic devices. Instead, expensive customized solutions were needed for each device, thereby undesirably increasing costs and delaying the introduction of SPS services into a wide range of devices.
[007] Therefore, a need exists for implementations of SPS solutions that overcome the problems noted above and others previously experienced.
SUMMARY [008] Methods and systems consistent with an invention of a host based SPS solution are disclosed. The SPS solution is implemented in a convenient library form that is flexible and extensible, and that may adapt to meet he needs of many different hardware platforms. As a result, a wide variety of electronic devices may incorporate SPS functionality with less expense utilizing less development time.
[009] In one example implementation, a host based SPS system may include a host processing system that connects through a tracker hardware interface to a dedicated hardware space vehicle tracker. The host processing system may also include a memory that includes a SPS library having a user interface, positioning engine, a tracker interface and an operating system interface. A processor in the host processing system runs the positioning engine and the functions provided by the interfaces.
[0010] The tracker hardware interface receives positioning information from the space vehicle tracker. Through functions in the tracker interface, the positioning information is communicated to the positioning engine. In turn, the positioning engine may determine a position and communicate the position to a user application through functions provided in the user interface.
[0011] Other apparatus, systems, methods, features and advantages of the present invention will be or will become apparent to one with skill in the art upon examination of the following figures and detailed description. It is intended that all such additional systems, methods, features and advantages be included within this description, be within the scope of the present invention, and be protected by the accompanying claims.
BRIEF DESCRIPTION OF THE FIGURES
[0012] The components in the figures are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention. In the figures, like reference numerals designate corresponding parts throughout the different views.
[0013] Figure 1 illustrates a detailed block diagram of one example of a positioning systems implemented as a host based SPS solution.
[0014] Figure 2 illustrates a hardware tracker that communicates with the positioning system shown in Figure 1.
[0015] Figure 3 depicts a hardware and software diagram of a positioning system that includes a GPS library with a user interface, a tracker interface, and an operating system interface. [0016] Figure 4 illustrates a flow diagram of a user program running in the positioning system.
[0017] Figure 5 illustrates a block diagram of the cooperation between threads, tasks and hardware in one implementation of a host based SPS solution.
[0018] Figure 6 illustrates an execution schedule for a receive manager thread and a periodic navigation task.
[0019] Figure 7 illustrates a synchronization diagram for the timing and interaction between the threads and tasks shown in Figure 5.
DETAILED DESCRIPTION [0020] Reference will now be made in detail to an implementation in accordance with methods, systems, and products consistent with the present invention as illustrated in the accompanying drawings. The same reference numbers may be used throughout the drawings and the following description to refer to the same or like parts.
[0021] A typical satellite positioning system ("SPS") system has approximately 12 satellites that may be visible at any one time to a wireless device. SPS means any system utilizing satellites and/or land-based communications devices for providing or enabling the determination of a location of the wireless device on the earth, for example but not limited to: the global positioning system ("GPS") known as NAVSTAR, GLONASS, LORAN, Shoran, Decca, or TACAN. Although many of the interface functions below make reference to GPS, those functions are not limited to use with GPS, but, generally, are equally applicable in other SPS environments.
[0022] Figure 1 depicts a block diagram of a positioning system 100 suitable for practicing methods and implementing systems consistent with the present invention. The positioning system 100 includes a host 102 and tracker hardware 104. The host 102 includes a central processing unit ("CPU") 106, a hardware tracker interface 110, and a memory 112. The host 102 also includes a secondary storage device 114 (e.g., generally non- volatile memory such as a magnetic disk, flash memory, optical storage, and the like), and a display 116, and an input interface 118 (e.g., a mouse, keyboard, and the like).
[0023] An operating system 120 (e.g., Windows CE, QNX, Palm OS, UNIX, Linux, Windows 2000, NT, XP, or the like) runs in the memory 112. As will be explained in more detail below, a user program 122 communicates with a SPS library 124 and the operating system 120. The user program 122 thereby receives position information from the GPS library, and may also communicate commands to the SPS library. The user program 122 may be any program that utilizes positioning information, including, as examples, a mapping program, course charter, location aid, and the like.
[0024] The host 102 connects through the hardware tracker interface 110 and the interface connection 126 to the tracker hardware 104. The hardware tracker interface 110 may be virtually any type of data transfer interface (as examples, a serial, parallel, compact flash, PC Card, or network interface). The interface connection 126 may then be, as examples, a serial cable, parallel cable, or network cable, and may optionally be wireless. In one implementation, the hardware tracker interface 110 is an RS232 port running at 38,400 bps, N-8-1 that communicates up to 2KB of data per second between the host 102 and the tracker hardware 104.
[0025] In other implementations, the tracker hardware (as illustrated by the reference numeral 128) is more closely incorporated into the host 102. Thus, rather than connecting to the host 102 tlirough the interface connection 126, for example, the tracker hardware 128 may be directly coupled to the host 102 address, data, and control buses. As will be explained in more detail below, the host 102 receives and processes navigation information from the hardware tracker 104, 128 in order to provide the user programs 122 with position information.
[0026] Although aspects of the present invention are depicted as being stored in memory 112, one skilled in the art will appreciate that all or part of systems and methods consistent with the present invention may be stored on or read from other machine-readable media, for example, secondary storage devices such as hard disks, floppy disks, and CD-ROMs; a signal received from a network; or other forms of R-OM or RAM either currently known or later developed. Further, although specific components of positioning system 100 are described, one skilled in the art will appreciate that a positioning system suitable for use with methods, systems, and articles of manufacture consistent with the present invention may contain additional or different components. For example, the CPU 106 may be a microprocessor, microcontroller, application specific integrated circuit ("ASIC"), discrete or a combination of other types of circuits acting as a central processing unit. The memory 112 may be RAM, DRAM, SDRAM, or any other type of read/writeable memory.
[0027] Turning next to Figure 2, that figure snows one example of an implementation of the tracker hardware 104. The tracker hardware 1O4 acquires and tracks SPS satellites and sends raw measurement data to the host 102 for position calculation. To that end, the tracker hardware 104 includes an antenna 202 for receiving SPS satellite signals and a radio frequency ("RF") filter 204 for passing the signals to the RF interface circuit 206. The RF interface circuit 206 processes the signals, produces 2-bit Inphase and Quadrature ("I/Q") signals and recovers SPS clocks. The RF interface circuit 206 provides the I/Q signals and SPS clocks to the location processing circuit 208 for digital processing. A reference frequency source 210 (e.g., a crystal oscillator) provides a reference clock for the RF interface circuit 206, while the optional real time clock ("RTC") source 212 provides a reference clock for the location processing circuit 208.
[0028] The tracker hardware 104 may be implemented with components available from SiRF Technology, Inc. of San Jose California. For example, the RF interface circuit 206 may be implemented as a GRF2i/LP integrated circuit. The location processing circuit may be implemented, as examples, as a GSP2t integrated circuit or GSP2e integrated circuit. The tracker hardware 104 minimizes the overhead on the host 102 and operating system 120 by keeping low the maximum transmission rate of raw measurements to the host 102 (e.g., one measurement per second).
[0029] With regard next to Figure 3, that figure shows a detailed block diagram of a hardware and software diagram 300 for the positioning system 100. The memory 112 in the host 102 includes a SPS library 124, user programs 122 (e.g., map displaying, map matching, dead reckoning and route calculation programs), and the operating system 120 (which may be a multi-threaded operating system). The SPS library 124 includes a positioning engine 302, a user interface 304, a tracker interface 306, and an operating system interface 308. The user tasks 310 implement device drivers or link directly to the user programs 122, as examples. [0030] In addition to the hardware tracker 104, persistent storage 312 and a real time clock 314 may optionally be provided. The persistent storage 312 may be, as examples, 2 KB of Flash memory, battery backed up RAM or a disk drive. The SPS library 124 may use the RTC in the host 102, the RTC 314, or may operate without an RTC.
[0031] The user interface 304 is called by the user programs 122 to start and configure the positioning system. The positioning engine 302 calls a function provide by the user program 122 (e.g., GPS_Output) to deliver positioning messages (e.g., position updates and other synchronous and asynchronous data) to the user program 122. The tracker interface 306 provides for communication between the tracker hardware 104 and the host 102 and, to that end, may load and call the operating system 120 serial communication drivers. The operating system interface 308 calls operating syste functions for task scheduling and synchronization, RTC access, and storage access. [0032] Figure 4 shows a flow diagram of a user program 122. The user program 122 calls GPS_Start to start the positioning engine 302 (step 402). The user program 122 determines whether to configure the positioning engine 302 (step 404). The program 122 configures the positioning engine 302 by sending a message to the positioning engine 302 using the GPS_Input function, for example (step 406). Next, the program 122 waits for a new position fix (or other information) from the positioning engine 302 (step 408). [0033] When information is received, the positioning engine processes the information, for example, to display or update a map (step 410). If the program 122 continues to run (step 412), processing returns to step 404. Otherwise, the program 122 stops the positioning engine (step 414) and terminates. The positioning engine runs separately and, when new positioning information is available, creates a message for the program 122 (step 416) and sends the message to the program 122 (step 418). Tables 1-5 below show exemplary function calls.
Figure imgf000010_0001
Figure imgf000011_0001
Table 2 - User Callback GPS_Output() /* User callback function. Receives all communication from GPS. */ #include "GPS_interface.h" void GPS_Output( tGPS_UINT32 message_id, void * message_structure, tGPS_OINT32 length ) { tGPS_NAV_MEASURED_NAVIGATION nav_data; switch ( message_id ) { cas GPS_NAV_MEASURED_NAVIGATION: memcpy( &nav_data, message_structure, sizeof(tGPS_NAV_MEASURED_NAVIGATION) ); if ( mav_data.nav_mode & GPS_MODE_MASK ) { printf("x=%ld, y=%ld, z=%ld \n", nav_data.ecef_x, nav_data.ecef_y, nav_data.ecef_z); else printf("no fix \n"); break; case GPS_NAN_MEASURED_TRACKER: break; default: /*...*/ break; } // switch } // GPS_Output()
Table 3 - Configure using GPS_Input() /* Configures GPS Engine to turn off SBAS correction: */ tGPS_NAN_SET_DGPS_SOURCE DGPSSrc; tGPS_UIΝT32 result; DGPSSrc.bit_rate = 0; DGPSSrc.freq = 0; DGPSSrc.src = GPS_DGPS_SRC_NONE; result = GPS_Input( GPSJSTAV_SET_DGPSJ5OURCE, (void*)&DGPSSrc, sizeof(DGPSSrc) );
Table 4 - Configure using GPS_Input() /* Forces cold start of GPS receiver: */ tGPS_NAV_INITIALIZE InitMsg; tGPS_UINT32 result; memset(&InitMsg, 0, sizeof(InitMsg)); InitMsg.restart_flags = GPS_RESTART_COLD; result = GPSJnput ( GPS_NAV_INITIALIZE, (void*)&InitMsg, sizeof(InitMsg) );
Table 5 - GPS _Stop() /* Stops GPS Engine and all SiRFNav tasks: */ tGPS_UINT32 result; result = GPS_Stoρ();
[0034] Below, one exemplary implementation of the user interface 304, tracker interface 306, and an operating system interface 308 is set forth. Table 6 shows which functions and messages are associated with each interface, while Tables 7-10 set forth files and data types used or referred to in the follow description. Table 6 - Interface Functions and Messages
User Interface:
GPS_Start() GPS_Stop() GPS_Output() GPS_Input()
GPS_NAV_MEASURED_NAVIGATION output message GPS_NAV_MEASURED_TRACKER output message GPS_NAV_SW "VERSION output message GPS_NAV_CLOCK_STATUS output message GPS_NAV_ERROR output message GPS_ADC_ODOMETER_DATA output message GPS_NAN_COMPLETE output message GPS_ΝAN_TEXT output message, GPS_ΝAV_IΝITIALIZE input message GPS_NAV_POLL_SW_VERSION input message GPS_NAV_SET_DGPS_SOURCE input message GPS_NAV_POLL_CLOCK_STATUS input message GPS_NAV_SET_SBAS_PRN input message
Operating system interface:
OS_Thread_Create()
OS_Thread_Delete()
OS_Thread_Sleep0
OS_Mutex_Create()
OS_Mutex_Delete()
OS_Mutex_Enter()
OS_Mutex_Exit()
OS_Semaphore_Create()
OS_Semaphore_Delete()
OS_Semaphore_Wait()
OS_Semaphore_Release()
OS_Storage_Oρen()
OS_Storage_Close()
OS_Storage_Write()
OS_Storage_WriteAll()
OS_Storage_Read()
OS_RTC_Read()
Tracker interface: GPS_COMM TRK_Create() GPS_COMM~ TRK_Delete() GPS_COMM~ TRK_Open() GPS_COMM_ TRK_Reopen() GPS_COMM_ TRK_Close() GPS_COMM" TRK_Wait() GPS_COMM" TRK_Read() GPS COMM- TRK_Write()
Figure imgf000014_0001
Figure imgf000014_0002
Figure imgf000014_0003
Figure imgf000014_0004
Figure imgf000015_0002
[0035] The user or GPS interface includes a GPS control interface and a GPS communication interface. The GPS control Interface functions allow a user program to start and stop the GPS engine using the functions shown in Table 11.
Figure imgf000015_0003
[0036] The GPS communication interface functions allow a user program to send and receive messages to and from the GPS engine using the functions shown in Table 12.
Figure imgf000015_0004
[0037] GPS_Start() initializes and starts positioning engine threads and communication interface. This function should be called by user programs to start GPS activity.
Figure imgf000015_0001
Figure imgf000016_0001
Figure imgf000016_0002
Figure imgf000016_0003
Figure imgf000016_0004
Figure imgf000017_0001
Figure imgf000017_0002
Figure imgf000017_0003
Figure imgf000017_0004
Figure imgf000018_0001
Table 19 - Example
#include "gps_types.h" #include "gps_ctrl.h" if ( GPS_Start(GPS_CTRL_MODE_AUTO | GPS_CTRL_MIODE_TEXT_ENABLE, 96250, 1, 38400) != GPS_SUCCESS ) { // error handler
// GPS engine has started successfully
[0038] The GPS_Stop function stops the positioning engine threads and communication interface. This function should be called by the user program to stop GPS activity.
Figure imgf000018_0002
Table 21 - Example #include "gps_types.h" #include "gps_ctrl.h" if ( GPS_Stop() != GPS_SUCCESS ) { // error handler } // GPS engine has stopped successfully
[0039] The GPS_Output function retrieves a message from positiomng engine. There are no return values. The function is called by the positioning engine whenever any message is sent out. This function is implemented by the v ser program and statically linked with the GPS library.
Figure imgf000019_0001
Figure imgf000020_0001
Table 23 - Example
#include "gps ypes.h" #include "gpsjLnterface.h" #include "gps_messages.h" void GPS_Output( tGPS_UINT32 message_id, void *message_structure, tGPS_UINT32 length )
{ tGPS_NAV_MEASURED_NAVIGATION nav_data; switch ( message_id ) { case GPS_NAV_MEASURED_NAVIGATION: memcpy( &nav_data, message_structure, sizeof(tGPS_NAV_MEASURED_NAVIGATION) ); if ( nav_data.nav_mode & GPS_MODE_MASK ) printf("x=%ld, y=%ld, z=%ld \n", nav_data.ecef_x, nav_data.ecef_jy, nav_data.ecef_z); else printf("no fix \n"); break; case GPS_NAV_MEASURED_TRACKER: // use tracker information here break; default: break; } // switch } // GPS_Output()
[0040] The GPS_Input function sends a command to the GPS engine. Tlxe function may be called by the client program to send a command to the GPS receiver.
Figure imgf000022_0001
Figure imgf000022_0002
Table 26 - Example #include "gps_types.h" #include "gps_interface.h" #include "gps_messages.h"
/* Forces cold start of GPS receiver: */ tGPS_NAV_INITIALIZE InitMsg; tGPS_UINT32 result; memset( &InitMsg, 0, sizeof(tGPS_NAV_INITIALIZE) ); InitMsg.restart_flags = GPS_RESTART_COLD; result = GPS_Input( GPS_NAN_ιNITIALIZE, (void*)& tMsg, sizeof(tGPS_NAN_INITIALIZE) );
[0041] The GPS communication interface messages are exchanged between the GPS client (e.g., a user program) and positioning or GPS engine via the user interface input and output functions.
Figure imgf000023_0001
Figure imgf000024_0001
Figure imgf000025_0001
[0042] The GPS_NAV_MEASURED_NAVIGATION output message provides ECEF position, velocity, GPS time and position status information. The message is outputted periodically at 1Hz rate.
Figure imgf000025_0002
Table 32 - Message structure Note: To get a real value of the parameter a value from the structure should be multiplied by the scale factor. tGPS NAV MEASURED NAVIGATION Structure Data type | Data range Scale I Units | Description
Figure imgf000026_0001
Figure imgf000026_0002
Figure imgf000026_0003
7 1 Dead reckoning
Figure imgf000027_0001
Figure imgf000027_0002
Figure imgf000027_0003
Figure imgf000027_0004
Figure imgf000027_0005
Figure imgf000027_0006
[0043] The GPS_NAV_MEASURED_TRACKER output message provides satellite status, azimuth, elevation and C/No information. The message is outputted periodically at 1Hz rate.
Figure imgf000028_0001
Figure imgf000028_0002
Table 43 - tGPS_SV_INFO sub-structure: Note: To get a real value of the parameter a value from the structure should be multiplied by the scale factor.
Figure imgf000029_0002
Figure imgf000029_0003
Figure imgf000029_0004
[0044] The GPS_NAV_SW_VERSION output message provides a positioning engine software version string. Message is sent as a reply to the GPS_NAV_POLL_SW_NERSION input message.
Figure imgf000029_0001
Figure imgf000030_0001
Figure imgf000030_0002
[0045] The GPS_NAV_CLOCK_STATUS output message provides current GPS clock status information. Message is outputted periodically at 1Hz rate or on demand as a reply to GPS_NAV_POLL_CLOCK_STATUS input message.
Figure imgf000030_0003
7 (0x07) GPS NAN CLOCK STATUS
Figure imgf000031_0001
[0046] The GPS_NAV_ERROR output message outputs notification, warning, and alert messages.
Figure imgf000031_0002
Figure imgf000031_0003
Figure imgf000032_0001
[0047] The GPS_ADC_ODOMETER_DATA output message provides ADC, odometer and GPIO lines state from tracker. Message is outputted periodically at 1 or 10Hz rate depending on setting used in GPS_Start() function.
Figure imgf000032_0002
Figure imgf000032_0003
Figure imgf000033_0002
Figure imgf000033_0003
Figure imgf000033_0004
[0048] In one implementation, the Voltage formula is Uin [V] = Vref * ( ( adcX avg + 8192 ) / 16384 ), where: Vref = 2.55V, and adcX_avg is a measurement value from message above. The analog to digital converter may, for example, take measurements at 50Hz rate and the reported value adcX_avg may be an average of the last 5 samples. [0049] The GPS_NAV_COMPLETE output message is sent at the end of the navigation cycle to confirm that the GPS engine has finished a position computation cycle (with or without success). In one implementation, this message is outputted at 1Hz rate.
Figure imgf000033_0001
Figure imgf000034_0001
Figure imgf000034_0002
[0O50] The GPS_NAV_TEXT output message outputs debug and development messages in text format.
Figure imgf000034_0003
Table 59 - Message structure tGPS NAV TEXT Structure Data Data range Scale Units Description member ty e (after de-scaling) factor
Figure imgf000035_0001
[0051] The GPS_NAV_iNITIALIZE input message performs GPS engine re-initialization. Message should be used to perform factory, cold, warm or hot restart.
Figure imgf000035_0002
Figure imgf000035_0003
Figure imgf000036_0001
Figure imgf000036_0002
Figure imgf000036_0003
Figure imgf000036_0004
[0052] In one implementation, the navigation engine will initiate restart within one second and a default clock offset value is 96250 Hz. When the actual clock offset is unknown a value of 96250 Hz should be used. However, if the real clock offset is far from a specified value a longer TTFF will be observed.
Table 65 - Example #include "gpsjypes.h" #include "gps_irιterface.h" /* Forces cold start of GPS receiver: */ tGPS_NAV TNITIALιZE InitMsg; tGPS_UINT32 result; memset( &InitMCsg, 0, sizeof(tGPS_NAN_ιNιTIALIZE) ); gps_init.chnl_cnt = 12; gps_init.restart_flags = GPS_RESTART_HOT | GPS_RESTART_TEXTOUT; result s GPS_Input( GPS_NAN_INITIALIZE, (void*)&InitMsg, sizeof(tGPS_NAN NITIALIZE) );
[0053] The GPS_NAV_POLL_SW_VERSION input message asks for the software version of the position / GPS library.
Figure imgf000037_0001
Table 67 - Message structure tGPS NAV POLL SW VERSION
Figure imgf000038_0001
[0054] The software version string may be returned, for example, in a GPS_NAV_S W_VERSION output message via GPS_Output() function. [0055] The GPS_NAV_SET_DGPS_SOURCE input message selects a data source for differential (DGPS) corrections.
Figure imgf000038_0002
Figure imgf000038_0003
Figure imgf000039_0001
[0056] These settings may be saved in nonvolatile data storage. [0057] The GPS_NAV_POLL_CLOCK_STATUS input message asks for the cunent GPS clock status of the GPS library.
Figure imgf000039_0002
Figure imgf000039_0003
[0058] The clock status data may be returned in GPS_NAV_CLOCK_STATUS output message via GPS_Output() function. [0059] The GPS_NAV_SET_SBAS_PRN input message manually forces PRN for use in SBAS corrections.
Figure imgf000040_0001
Figure imgf000040_0002
[0060] These settings may be saved in permanent data storage. [0061] The Operating System Interface functions are operating system dependent and are implemented in the open source format available from SiRF Technology, Inc. The functions include Thread, mutex and semaphore functions. Permanent storage and RTC functions may be available depending on hardware availability.
Figure imgf000040_0003
Figure imgf000041_0001
Figure imgf000042_0001
[0062] The OS_Thread_Create() function uses an appropriate operating system service to create a thread. The function is called by the GPS engine at the startup to create all desired threads.
Figure imgf000042_0002
Figure imgf000042_0003
[0063] A maximum number of desired threads may be specified by a GPS_RTOS_THREAD_MAX define. [0064] The OS_Thread_Delete() function uses appropriate OS service to stop a thread and/or to wait for thread to gracefully stop. Function is called by the GPS engine from GPS_Stop() to stop all SiRFNav threads.
Figure imgf000043_0001
Figure imgf000043_0002
[0065] Thread identifiers and functions may be specified, for example, in the gpsjrtos.h header file. [0066] The OS_Thread_Sleep() function uses appropriate OS service to suspend a thread for a given number of milliseconds. Function is called by the GPS engine to suspend current thread temporarily.
Figure imgf000044_0002
Figure imgf000044_0003
[0067] The OS_Mutex_Create() function uses an operating system service to create a Mutex (mutually exclusive) object, or OS-specific equivalent such as a software critical section. This function is called by the GPS engine at the startup to create all desired mutexes.
Figure imgf000044_0001
Figure imgf000045_0001
Figure imgf000045_0002
[0068] The maximum number of desired mutexes may be specified by a GPS_RTOS_MUTEX_MAX define. [0069] The OS_Mutex_Delete() function uses an operating system service to delete a Mutex object. The function is called by the GPS engine at the stopping procedure to delete all used mutexes.
Table 88
File gpsjrtos.c Syntax tGPS_UINT32 OS_Mutex_Delete( tGPS_MUTEX mx iandle ) Parameter Data range Units 1 Description mx handle Mutex object handle
Figure imgf000046_0001
[0070] The OS_Mutex_Enter() function uses an operating system service to obtain a Mutex object. This function is called by the GPS engine just before entering into a critical section.
Figure imgf000046_0002
Figure imgf000046_0003
[0071] The OS_Mutex_Exit() function uses appropriate OS service to release a Mutex object. Function is called by the GPS engine just after leaving from a critical section.
Figure imgf000047_0001
Figure imgf000047_0002
[0072] The OS_Semaphore_Create() function uses an operating system service to create a Semaphore object. The function is called by the GPS engine at the startup to create all desired semaphores.
Table 94
File gpsjtos.c Syntax tGPS_UINT32 OS_Semaphore_Create( tGPS_SEMAPHORE *sem_handle, tGPS_UINT32 init_value )
Parameter Data range Units I Description
Figure imgf000048_0001
Figure imgf000048_0002
[0073] The maximum number of desired semaphores may specified by a GPS_RTOS_SEM_MAX define. [0074] The OS_Semaphore_Delete() function uses an operating system service to delete a Semaphore object. The function is called by the GPS engine at the stopping procedure to delete all used semaphores.
Figure imgf000048_0003
Figure imgf000048_0004
[0075] The OS_Semaphore_Wait() function uses an operating system service to wait for Semaphore object. Function is called by the GPS threads to wait for events.
Figure imgf000049_0001
Figure imgf000049_0002
[0076] The OS_Semaphore_Release() function uses appropriate OS service to release a Semaphore object. The function is called by the GPS engine to schedule other thread.
Table 100
Figure imgf000050_0001
Figure imgf000050_0002
[0077] The OS_Storage_Open() function uses an operating system or BIOS service to open a non volatile storage system. The function is called by the GPS engine at the startup to open a storage.
Figure imgf000050_0003
Figure imgf000051_0001
[0078] When the nonvolatile storage is not available then function may return GPS_RTOS_ERROR. [0079] The OS_Storage_Close() function uses appropriate OS or BIOS service to close a non volatile storage system. The function is called by the GPS engine at the shut down procedure to close a storage.
Figure imgf000051_0002
Figure imgf000051_0003
[0080] When the nonvolatile storage is not available then function may return GPS_RTOS_ERROR. [0081] The OS Storage_Write() function uses appropriate OS or BIOS service to write given words to a non volatile storage system (battery backed RAM, file system, etc.). The function is called by the GPS engine periodically, for example every 30 seconds, to save time, position and ephemeris information. That information is used later to speed up the GPS start procedure (e.g., for hot or warm starts).
Figure imgf000052_0001
Figure imgf000052_0002
[0082] The OS_Storage_WriteAll() function uses an operating system or BIOS service to write a GPS data structure to a nonvolatile storage system. Tbe function is called by the GPS engine periodically, for example every 30 seconds, to save time, position and ephemeris information. That information is used later to speed up the GPS start procedure (hot or warm starts)
Figure imgf000053_0001
Figure imgf000053_0002
[0083] The OS_Storage_Read() function uses an operating system or BIOS service to read GPS data structure from a nonvolatile storage system. Trie function is called by the GPS engine at the startup to retrieve time, position and ephemeris information. This information is used to speed up the GPS start procedure (e.g., for hot or warm starts).
Figure imgf000054_0001
Figure imgf000054_0002
[0084] The OS_RTC__Read() function uses an operating system or BIOS service to read a real time clock information from the host's RTC. The function is called periodically by the GPS engine.
Figure imgf000054_0003
timeOfWeek 0 .. 604799999 ms GPS time of the week
Figure imgf000055_0001
[0085] The tracker communication interface functions allow messages to be sent and received between the tracker hardware and the user programs and position library.
Figure imgf000055_0002
[0086] The GPS_COMM_TRK_Create() function uses an OS or BIOS service to create a tracker communication handle. The function is called by the GPS engine at the startup to create a communication handle.
Figure imgf000056_0001
Figure imgf000056_0002
[0087] The GPS_COMM_TRK_Delete() fixnction uses an OS or BIOS service to delete a tracker communication handle. The function is called by the GPS engine at the stopping procedure to delete a communication handler.
Figure imgf000056_0003
Figure imgf000057_0001
[0088] The GPS_COMM_TRK_Open() function uses an OS or BIOS service to open and configure a tracker communication port. The function is called by the GPS engine at the startup.
Figure imgf000057_0002
Figure imgf000058_0001
[0089] The GPS_COMM_TRK_Reoρen() function uses an OS or BIOS service to re-open a tracker communication port. The function is called by the GPS engine after coming back from a power suspend mode. When power suspend mode is not required then the function may return GPS_SUCCESS only.
Figure imgf000058_0002
Figure imgf000058_0003
[0090] The GPS_COMM_TRK_Close() function uses an OS or BIOS service to close a tracker communication port. The function is called by the GPS engine at the stopping procedure to close the port.
Figure imgf000059_0001
Figure imgf000059_0002
[0091] The GPS_COMM_TRK_Wait() function uses an OS or BIOS services to wait for data from a tracker communication port. The function is called by tlxe GPS engine to wait for the tracker data.
Table 125
File gps_comm_trk. c Syntax tGPS UINT32 GPS_COMM_TRK_Wait( tGPS_COMM port iandle, tGPS_ UINT32 timeout ) Parameter Data range Units Description
Figure imgf000060_0001
Figure imgf000060_0002
[0092] The GPS_COMM_TRK_Read() function uses appropriate OS or BIOS services to read data from a tracker communication port. The function is called by the GPS engine to read tracker data.
Figure imgf000060_0003
Figure imgf000061_0001
[0093] The GPS_COMM_TRK_Write() function uses appropriate OS or BIOS services to write data to the tracker communication port. The function is called by the GPS engine to send commands to the tracker hardware.
Figure imgf000061_0002
Figure imgf000061_0003
[0094] Turning next to Figure 5, that figure shows a block diagram 500 of the cooperation between threads, tasks and hardware in one implementation of a host b ased GPS solution. In particular, the tracker hardware 104 communicates through a serial driver 502 (for example, the Windows CE serial driver). The serial driver 502 communicates and coope-rates with a file system 504 (for example, the Windows CE file system), which includes input buffers and output buffers for the communications that will occur.
[0095] Figure 5 shows a pass through data flow path to the tracker hardware 10-4. The path includes the SendPassThroughDataToTracker thread 506 that forwards data directly from a client program, tlirough a pass through control function 508 to a tracker interface send function 510. In the reception direction, the tracker interface receive function 5 2 forwards data from the tracker hardware 104 to the navigation / positioning engine queue; 514 (if the message is destined for the positioning engine), or to the user interface queue 516 (if the message is destined directly for the user program). The DataForwarder thread 5 18 removes messages from the user interface queue 516 and sends them via the user callback function 520 to the user program. When the host 102 includes the Component Obj ect Module interface (available from Microsoft), the user callback function 520 may be thte IcallBack function.
[0096] The receive manager and navigation thread 522 removes messages destined for the GPS library from the positioning engine queue 514, and also places messages destined for the user programs on the user interface queue 516. The messages for the GPS library are processed by the tasks including the NavPeriodicTask 524. A set of shared buffers, control flags, completion flags, and the like 526 are maintained by the GPS library. Finally, it is noted that the COM interface provides a set of control functions 528.
[0097] Turning next to Figure 6, that figure illustrates one execution schedule 600 for the receive manager thread 522 and the NavPeriodicTask 524. In the schedule 600, the NavPeriodicTask 524 runs as a low-priority (background) thread, while the receiver manager and navigation thread 522 run in one normal-priority thread. [0098] With regard to Figure 7, that figure shows a synchronization diagram 700. The synchronization diagram 700 illustrates the timing and interaction between the threads and tasks shown in Figure 5.
[0099] With reference to Figure 7, receive manager (RxM) and navigation (Nav) run sequentially in one loop that waits for new data from Tracker Interface (TRK_IF) Receiver before each iteration. Either RxM or Nav may signals NavPeriodicTask 524 to proceed with one iteration of its loop (unless NavPeriodicTask 524 already performing its task:, in which case it will finish the task and skip one loop).
[00100] The RxM and Nav thread 522 may wait on a Critical Section when writing data to the UI Queue 516, or when sending data to Tracker 104. There will typically be a thread running while RxM&Nav are waiting. In one implementation, NavPeriodicTasks .524 runs at smaller priority than the other tasks and it will not run as long as any other thread is running. In an alternative implementation, NavPeriodicTasks 524 runs at normal priority, b»ut does not present a conflict as long as RxM&Nav have sufficient priority to consume data generated by NavPeriodicTasks 524.
[00101] The RxM and Nav thread 522 runs the RxM control task that maintains a state machine for the Rx and manages the state machine transitions based on cunent state. The RxM communicates with the tracker hardware 104 through the tracker interface. It both sends data and commands to the tracker hardware 104 to pace it through initial acquisition and tracking of SPS satellites, and receives data and status messages from the receiver with raw SPS satellite tracking data. The primary purpose of the RxM task is to manage and control the operation of the tracker hardware 104. It also preprocesses the raw tracker data and submits the processed data to the Navigation Processing Task. The RxM gets scheduled or called by the Nav Task once the tracker hardware 104 starts tracking. [00102] The NavPeriodicTasks thread 524 is a pseudo task that peforms miscellaneous support operations for the RxM and Nav tasks. Its functions include determining and performing updates to the satellite state tables, and generating new visible SPS satellite list when new ephemeris data is collected, or whenever it is requested.
[00103] The Nav Processor Thread performs position, velocity and time computations based on the RxM generated individual SPS satellite data. This makes use of the functionality offered through the navigation library in optimally computing the navigation position data. The computed navigation data is made available to the Data Forwarding thread. At the beginning of each iteration, the Nav Processor calls or schedules the RxM task to run, and then it performs navigation computations and generates the user position, velocity, and time data. Based on the computation results, if pre-selected enor thresholds are exceeded, the Nav Processor may send commands to the receiver, either directly or through the RxM, to force the receiver to reset.
[00104] The I/O Reader thread and Tracker Interface Receiver 512 sends data to queues as shown in Figure 5. In addition, data length enor checks may be performed with enor counts logged in a global variable. Enoneous message bytes will be reported to the user program through debug messages.
[00105] Note that in some implementations, the I/O Writer thread 510 is not used. Instead, its role may been taken by TRK_IF, whose methods are invoked from the RxM+Nav thread 522 and SendPassThruDataToTracker 504. TRK F writes directly to the serial port. (All I/O functions will be grouped into one class). In WinCE, buffering is performed on the File System level, which allows TRK_IF to return quickly upon sending data. On Nucleus, additional buffering may be provided. [00106] The DataForwarderThread 518 reads from the UI Queue 516 and calls the user program's ICallBack interface for each binary message to be sent. If the UJI queue's Semaphore is still signaled after Callback returns, the DataForwarderThread 518 may continue piping data until the UI queue 516 is empty. In one implementation, the UI Queue 516 is not locked while Callback is being executed, which allows other threads to run while waiting for Callback to return. Client Callback typically puts data in internal storage for another thread to use. Generally, one Callback is called at a time. The UI Queue 516 is prioritized and it will put pass-thru messages before all others in the queue. [00107] The SendPassThruDataToTracker function 506 is an API call for sending pass- thru messages from the user program to the fracker hardware 104. Note that the pass through control function 504 may be implemented as a filter to enable or disable pass-thru iraessages. [00108] A Shutdown may be performed by purging all queues and I/O. For example, 300ms (enough for RxM&Nav to complete) may then be given for threads to complete. Although some threads may not complete in that time, such as the DataForwarderTTiread 518 (that may be waiting for Callback to return), and NavPeriodicTask 524, for which there may or may not be a provision to interrupt long-term calculations. Regardless, threads which do not complete on time are terminated.
[00109] The following synchronization objects may be used: a Semaphore and Critical Seciton in UI Queue 516 for triggering UI output, a Semaphore and Critical Section in Trk2Nav Queue 514 for triggering Nav update, a Positioning / Navigation Library sync flag (from NavPeriodTasks to RxM and Nav), and a shutdown semaphore and flag. No»te that the Critical Section(s) in the Tracker Interface are for protecting access to the serial port. [00110] Queues may have the following API and features: Constructor/destru-ctor, void *GetBuffer(int priority, long size) to obtain a pre-allocated buffer for Put(), voi<l Put() to queues the buffer with specified priority, void *BeginGet() to waits until data ready or shutdown, void EndGet(), void Remove(), void Purge() to cancel all BeginGet calls, an internal Semaphore for notifying BeginGet() when data is ready, and an internal Critical Section.
[00111] With regard to enor checking, all queue overruns, I/O enors, timeouts and COM enors may optionally be reported to client, packaged in debug messages, UI queue 516 overruns will be reported as an enor to user program, Tracker message time-outs may be handled by Nav, and Trk2Nav Queue 514 overruns may be signaled to RxM and Nav. [00112] It is further noted that the Windows registry may provide a mechanism for configuring thread priorities (that may, for example, be set once at startup and remain unchanged during execution), I/O buffer sizes, and queue sizes. Note that the SetupComm() function may be used to increase the size of existing WinCE I/O buffers. Doing so prevents input data loss under stress conditions. This may also be configurable through registry, and default values may be chosen to accommodate several seconds of I/O (e.g., 4kb for input and lkb for output).
[00113] The foregoing description of an implementation of the invention has been presented for purposes of illustration and description. It is not exhaustive and does not limit the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practicing of the invention. For example, the described implementation includes software but the present invention may be implemented as a combination of hardware and software or in hardware alone. Note also that the implementation may vary between systems. The invention may be implemented with both object-oriented and non-object-oriented programming systems. The claims and their equivalents define the scope of the invention.

Claims

CLAIMS What is claimed is:
1. A system for processing positioning signals, the system comprising: a tracker hardware interface for receiving positioning information; a memory comprising a GPS library comprising a user interface, a fracker interface, and an operating system interface, the tracker interface comprising at least one fracker interface function for communicating over the fracker hardware interface; and a processor for running the tracker interface function.
2. The system of claim 1 , wherein the memory further comprises a positioning engine for determining a position from the positioning information.
3. The system of claim 1 , wherein the fracker hardware interface comprises a serial interface.
4. The system of claim 1, wherein the user interface comprises at least one positioning control function and at least one positioning engine communication function.
5. The system of claim 3, wherein the positioning control function comprises a positioning engine start function.
6. The system of claim 4, wherein the positioning control function comprises a positioning engine stop function.
7. The system of claim 4, wherein the positioning engine communication function is a command delivery function.
8. A method in a positioning system comprising a tracker hardware interface, the method comprising the steps of: calling a fracker interface function to receive positioning information from a tracker hardware interface; determining a position from the positiomng information using a positioning engine; and calling a user interface message delivery function to communicate the position to a user application.
9. The method of claim 8, wherein the user interface message delivery function is provided by the user application.
10. The method of claim 8, wherein the positioning system further comprises a user interface, and further comprising the step of receiving a positioning engine start message from the user interface.
11. The method of claim 8, wherein the positioning system further comprises a user interface, and further comprising the step of receiving a user command for the positioning engine from the user interface.
12. The method of claim 8, wherein the positioning system further comprises a user interface, and further comprising the step of receiving a positioning engine stop message from the user interface.
13. The method of claim 8, further comprising the step of initiating execution of a Navigation thread for generating navigation data received from the fracker hardware interface.
14. The method of claim 13, further comprising the step of initiating execution of a Periodic navigation processing thread.
15. The method of claim 14, wherein the Periodic processing thread is a lower priority thread than the Navigation thread.
16. A computer-readable medium containing instructions that cause a positioning system having a tracker hardware interface to perform a method comprising the steps of: calling a tracker interface function to receive positioning information from a tracker hardware interface; determining a position from the positioning information using a positioning engine; and calling a user interface message delivery function to communicate the position to a user application.
17. The computer-readable medium of claim 16, wherein the user interface message delivery function is provided by the user application.
18. The computer-readable medium of claim 16, wherein the positioning system further comprises a user interface, and further comprising the step of receiving a positioning engine start message from the user interface.
19. The computer-readable medium of claim 16, wherein the positioning system further comprises a user interface, and further comprising the step of receiving a user command for the positioning engine from the user interface.
20. The computer-readable medium of claim 16, wherein the positioning system further comprises a user interface, and further comprising the step of receiving a positioning engine stop message from the user interface.
PCT/US2004/003535 2004-02-06 2004-02-06 Host based satellite positioning methods and systems WO2005086459A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP04709090A EP1719317A1 (en) 2004-02-06 2004-02-06 Host based satellite positioning methods and systems
PCT/US2004/003535 WO2005086459A1 (en) 2004-02-06 2004-02-06 Host based satellite positioning methods and systems

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2004/003535 WO2005086459A1 (en) 2004-02-06 2004-02-06 Host based satellite positioning methods and systems

Publications (1)

Publication Number Publication Date
WO2005086459A1 true WO2005086459A1 (en) 2005-09-15

Family

ID=34920915

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2004/003535 WO2005086459A1 (en) 2004-02-06 2004-02-06 Host based satellite positioning methods and systems

Country Status (2)

Country Link
EP (1) EP1719317A1 (en)
WO (1) WO2005086459A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005044497A1 (en) * 2005-09-16 2007-03-22 Bury Sp.Z.O.O navigation device
RU2456630C1 (en) * 2010-12-30 2012-07-20 Общество с ограниченной ответственностью "СПИРИТ-Телеком" Glonass/gps/galileo satellite navigation receiver with correlators, asynchronously controlled by peripheral processor
RU2616970C1 (en) * 2016-01-27 2017-04-19 Федеральное государственное казенное военное образовательное учреждение высшего образования "Военно-космическая академия имени А.Ф. Можайского" Министерства обороны Российской Федерации Method of glonass system signal processing with frequency division

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5528248A (en) 1994-08-19 1996-06-18 Trimble Navigation, Ltd. Personal digital location assistant including a memory cartridge, a GPS smart antenna and a personal computing device
US5589835A (en) 1994-12-20 1996-12-31 Trimble Navigation Limited Differential GPS receiver system linked by infrared signals
US5832247A (en) 1995-12-28 1998-11-03 Trimble Navigation Limited PCI card for receiving a GPS signal
US6377891B1 (en) * 1999-02-12 2002-04-23 Trimble Navigation Limited User interface for global positioning system receiver
US6384777B1 (en) 1998-01-06 2002-05-07 Trimble Navigation Limited User-controlled GPS receiver
US6401037B1 (en) 2000-04-10 2002-06-04 Trimble Navigation Limited Integrated position and direction system for determining position of offset feature
US20020196181A1 (en) 2001-06-25 2002-12-26 Fall Kevin R. Integrated network interface card and global positioning system receiver

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5528248A (en) 1994-08-19 1996-06-18 Trimble Navigation, Ltd. Personal digital location assistant including a memory cartridge, a GPS smart antenna and a personal computing device
US5589835A (en) 1994-12-20 1996-12-31 Trimble Navigation Limited Differential GPS receiver system linked by infrared signals
US5832247A (en) 1995-12-28 1998-11-03 Trimble Navigation Limited PCI card for receiving a GPS signal
US6384777B1 (en) 1998-01-06 2002-05-07 Trimble Navigation Limited User-controlled GPS receiver
US6377891B1 (en) * 1999-02-12 2002-04-23 Trimble Navigation Limited User interface for global positioning system receiver
US6401037B1 (en) 2000-04-10 2002-06-04 Trimble Navigation Limited Integrated position and direction system for determining position of offset feature
US20020196181A1 (en) 2001-06-25 2002-12-26 Fall Kevin R. Integrated network interface card and global positioning system receiver

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005044497A1 (en) * 2005-09-16 2007-03-22 Bury Sp.Z.O.O navigation device
DE102005044497B4 (en) * 2005-09-16 2007-07-12 Bury Sp.Z.O.O navigation device
US7298322B2 (en) 2005-09-16 2007-11-20 Bury Sp. Z.O.O. Navigation device which switches the feed to an interface of a central processing unit between digital position information obtained with an internal antenna or digital position information obtained with an external antenna
RU2456630C1 (en) * 2010-12-30 2012-07-20 Общество с ограниченной ответственностью "СПИРИТ-Телеком" Glonass/gps/galileo satellite navigation receiver with correlators, asynchronously controlled by peripheral processor
RU2616970C1 (en) * 2016-01-27 2017-04-19 Федеральное государственное казенное военное образовательное учреждение высшего образования "Военно-космическая академия имени А.Ф. Можайского" Министерства обороны Российской Федерации Method of glonass system signal processing with frequency division

Also Published As

Publication number Publication date
EP1719317A1 (en) 2006-11-08

Similar Documents

Publication Publication Date Title
US8954269B2 (en) Host based satellite positioning systems
US7151489B2 (en) Method and system for multi-function satellite positioning system receivers
EP1425604B1 (en) Advanced power management for satellite positioning system
US5448773A (en) Long life portable global position system receiver
US8094066B2 (en) Method and system for calculating position
US8860610B2 (en) Adding multi-system functionalities to legacy navigation satellite system receivers
US9323314B1 (en) System and method for reducing energy usage in a mobile communications device
US20120021767A1 (en) Updating position assist data on a mobile computing device
JP2011520131A (en) GPS power saving using low power sensors
US20040252049A1 (en) Tracker architecture for GPS systems
JPH11258327A (en) Decentralized gps navigation system
JPH11258326A (en) User controlled gps receiver
WO2018052722A9 (en) Fast recovery from incorrect carrier phase integer locking
US20070008218A1 (en) Tracker architecture for GPS systems
EP2478390B1 (en) Methods and apparatuses for affecting application of a filtering model using carrier phase
JP2023011006A (en) Satellite radio wave receiver, electronic timepiece, positioning information acquisition control method and program
EP1719317A1 (en) Host based satellite positioning methods and systems
JP3259723B2 (en) Information terminal and positioning method
JP7032970B2 (en) Communication systems, communication modules, servers, control methods, and control programs
KR20070015378A (en) Host based satellite positioning methods and systems
EP2881758A1 (en) Position calculation method and position calculator
US7546395B2 (en) Navagation processing between a tracker hardware device and a computer host based on a satellite positioning solution system
Panigrahi et al. A method to compute location in GNSS denied area
JP6766837B2 (en) Satellite radio receiver, electronic clock and positioning control method
JP2009288017A (en) Navigation device and reception sensitivity control method

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

WWE Wipo information: entry into national phase

Ref document number: 2004709090

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 1020067018059

Country of ref document: KR

WWP Wipo information: published in national office

Ref document number: 2004709090

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1020067018059

Country of ref document: KR