## 2 The CNES PPP-WIZARD Demonstrator
### The Network Side of the Demonstrator
 \tag{14}\]  
where \(b_{r,\mathrm{IF},C_{i}}^{s}\) and \(b_{r,\mathrm{IF},L,i}^{s}\) play the role of the undiferenced code and phase biases with respect to the IF clock convention, respectively. Comparing the code models of Equations (4) and (14) leads to \(b_{r,\mathrm{IF},C_{i}}^{s}=\gamma_{i}\tau_{r,C_{ij}}^{s}\). As \(\tau_{r,C_{ij}}^{s}\) is estimated along with the ionosphere elongation (see Equation (13)), the undiferenced code biases are directly known. It is then possible to define the undiferenced phase bias on the frequency \(f_{i}\) as:  
\[b_{r,\mathrm{IF},L,i}^{s}=\frac{1}{\lambda_{i}}\big{(}\tau_{r,L_{ij}}^{s}+h_{r,\mathrm{IF},L,i}-h_{r,\mathrm{IF},C_{ij}}\big{)}. \tag{15}\]  
With this definition, the undiferenced phase biases \(b_{r,\mathrm{IF},L,i}^{s}\) and \(b_{r,\mathrm{IF},L,i}^{s}\) must fullfil:  
\[ \begin{split}\mu_{r,ij}^{s}-\frac{\lambda_{i}-\lambda_{j}}{ \lambda_{i}+\lambda_{j}}\bigg{(}\frac{b_{r,\mathrm{IF},C_{i}}^{s}}{\lambda_{i} }+\frac{b_{r,\mathrm{IF},C_{i}}^{s}}{\lambda_{j}}\bigg{)}=b_{r,\mathrm{IF},L,i} ^{s}-b_{r,\mathrm{IF},L,i}^{s},\\ \gamma_{i}\lambda_{i}b_{r,\mathrm{IF},L_{i}}^{s}-\gamma_{i} \lambda_{j}b_{r,\mathrm{IF},L_{j}}^{s}=(\gamma_{i}-\gamma_{i})\big{(}h_{r, \mathrm{IF},L,i}-h_{r,\mathrm{IF},C_{ij}}\big{)}.\end{split}  \tag{16}\]  
The inversion of this system of two equations with the two unknowns \(b_{r,\mathrm{IF},L_{i}}^{s}\) and \(b_{r,\mathrm{IF},L,i}^{s}\) gives the undiferenced phase biases. This process described for a two-frequencies case can be adapted for a three-frequencies or four-frequencies case (see, for instance, [15; 30]). The code and phase measurements on this third or fourth frequency \(f_{k}\) are thus expressed as:  
\[ \begin{split} C_{k}&=\rho_{r}^{s}+\gamma_{k}e+m(E^{ s})T_{Z}+h_{r,\mathrm{IF},C_{ij}}^{s}+b_{r,\mathrm{IF},C_{k}}^{s},\\ \lambda_{k}L_{k}&=\rho_{r}^{s}-\gamma_{k}e+m(E^{s}) T_{Z}+h_{r,\mathrm{IF},C_{j}}^{s}+b_{r,\mathrm{IF},L_{k}}^{s},\end{split}  \tag{17}\]  
with the undiferenced code and phase biases with respect to the IF clock defined by:  
\[b_{r,\mathrm{IF},C_{k}}^{s}=b_{r,C_{k}}^{s}-\frac{\gamma_{i}b_{r,C_{i}}^{s}- \gamma_{i}b_{r,C_{j}}^{s}}{\gamma_{j}-\gamma_{i}}\text{ and }b_{r,\mathrm{IF},L_{k}}^{s}=b_{r,L_{k}}^{s}-\frac{\gamma_{i}b_{r,C_{i}}^{s}- \gamma_{i}b_{r,C_{j}}^{s}}{\gamma_{j}-\gamma_{i}}. \tag{18}\]  
Adding the new signals on the new frequencies leads to a huge increase in the number of parameters, which is difficult to handle in real time. Indeed, the extra-widelane biasesand ambiguities for the GPS, Galileo, and Beidou constellations have to be tackled on top of the ones usually taken into account in the dual-frequency case. Therefore, the computational load is a big issue. Particular attention is paid to the production latency of the corrections. The low-frequency varying parameters such as the code biases are estimated in a background thread while high-frequency parameters such as clocks are estimated in a high-priority thread. As of June 2023, the ODTS software processes about 1500 measurements for each constellation at a 5 s interval. The output of the network side of the demonstrator is the routinely computed real-time code and phase biases as well as the real-time satellite orbits and clocks.