## 4 Performance Assessment of Single Point Positioning with Smartphone Code Pseudoranges
### Positioning Methodology  
The positioning was performed using the well-known multi-GNSS single point positioning algorithm fed with code pseudoranges [31; 32; 33]. When multi-constellation signals are integrated in the observational model, one should properly handle different system time scales. This may be performed by adopting GPS time scale as a reference time and modeling inter system time difference parameters as constant biases [34]. As a result, the observational equations for single-frequency multi-constellation point positioning, here generalized to frequency \(n\) of undifferenced observations between satellite and receiver, read as follows:  
\[P_{r,n}^{s,G}-\rho_{r,0}^{s,G}+c\cdot dt^{s,G}+b_{n}^{s,G}-d_{r, trop}^{s,G}-d_{r,n,ion}^{s,G}=e_{r}^{s,G}\cdot\delta X_{r}+c\cdot dt_{r}+e_{r,n}^{s,G} \tag{1}\]  
\[P_{r,n}^{s,R}-\rho_{r,0}^{s,R}+c\cdot dt^{s,R}+b_{n}^{s,R}-d_{r, trop}^{s,R}-d_{r,n,ion}^{s,R}=e_{r}^{s,R}\cdot\delta X_{r}+c\cdot(d\bar{t}_{r}+dt_{r}^{R -G})+e_{r,n}^{s,R} \tag{2}\]  
\[P_{r,n}^{s,E}-\rho_{r,0}^{s,E}+c\cdot dt^{s,E}+b_{n}^{s,E}-d_{r, trop}^{s,E}-d_{r,n,ion}^{s,E}=e_{r}^{s,E}\cdot\delta X_{r}+c\cdot(d\bar{t}_{r}+dt_{r}^{E -G})+e_{r,n}^{s,E} \tag{3}\]  
\[P_{r,n}^{s,C}-\rho_{r,0}^{s,C}+c\cdot dt^{s,C}+b_{n}^{s,C}-d_{r, trop}^{s,C}-d_{r,n,ion}^{s,C}=e_{r}^{s,C}\cdot\delta X_{r}+c\cdot(d\bar{t}_{r}+dt_{r}^{C -G})+e_{r,n}^{s,C} \tag{4}\]  
where the superscript \(s\) denotes a particular satellite of the selected constellation, namely GPS (G), GLONASS (R), Galileo (E) or BDS (C); the subscript \(r\) states for the receiver; \(P\) is the code pseudorange in meters; \(\rho_{0}\) is the geometric range between the satellite and a priori position of the station in meters; \(dt^{sys}\) is the satellite clock correction for a particular satellite of a selected constellation in seconds (\(sys=G,R,E,\) or \(C\)); \(b\) denotes the signal specific satellite code bias in meters; \(d_{trop}\) states for the tropospheric delay in meters; \(d_{ion}\) denotes the ionospheric delay in meters; \(e\) is the line-of-sight vector from the user to the satellite; \(d\bar{t}\) refers to the receiver clock correction combined with the receiver hardware delay in seconds; \(c\) is the speed of light in meters per second; \(dt^{R-G},dt^{E-G},dt^{C-G}\) are GPS-GLONASS, GPS-Galileo, and GPS-BDS receiver inter system clock biases in seconds, respectively; \(\delta X\) refers to the vector of the corrections to a priori geocentric coordinates of the station \(\{\delta x_{r},\delta y_{r},\delta z_{r}\}\) in meters, and \(\epsilon\) corresponds to the combination of the non-modeled terms, specifically the multipath effect and the observational noise in meters. Finally, the vector of estimates reads as follows:  
\[x=[\delta x_{r},\delta y_{r},\delta z_{r},d\bar{t}_{r},dt_{r}^{R-G},dt_{r}^{E- G},dt_{r}^{C-G}] \tag{5}\]  
Ionosphere delays are corrected by the broadcast ionospheric model [35], troposphere delays are modeled by the Saastamoinen model and GMF mapping function [36; 37]. We employed orbits and clocks provided by Wuhan University [38] to show the performance level that may be reached when one employs precise products. The products provided by Center for Orbit Determination in Europe [39] were used to handle satellite code biases and to correct precise satellite clock offsets for single-frequency observations. The computations were performed with 5 s sampling interval and a cut-off angle of 10 degrees using the whole 5-h long time span of data collection that was described in Section 2. The parameters are estimated by least squares adjustment adopting a selected weighting scheme, namely elevation- or \(C/N_{0}\)-dependent one as described in [9].