Fundamentals of Global Positioning System Receivers A Software Approach