## 2 Materials and Methods  
### System Design  
The schematic diagram of the proposed multi-user VLCP system is shown in Figure 1a, in which four LEDs are used to provide VLC and VLP functions for N users simultaneously. To simultaneously distinguish the data of different users and the VLCP signals from different LEDs, we adopted the dual-domain multiplexing scheme, which multiplexes the code and time resources. As shown in Figure 1b, a set of spreading codes is assigned to multiple users, while the total time resource is divided into four slots and allocated to four LEDs, respectively. On the transmitter side, the data of each user are encoded by the unique spreading code and accumulated as the transmission data. After on-off keying (OOK) modulation and adding bias current, the transmission data are loaded to each LED, in turn, through TDM. In each time slot, only one LED transmits the VLCP signal to the photodetector (PD) of each user through the VLC channel. On the receiver side, the PD of each user converts the VLCP signal to the electrical received signal. Then, the spreading code is used to decode each bit of the received signal to obtain the corresponding correlation value used for both VLC and VLP. Finally, the correlation value is utilized to recover the user data for VLC through the threshold decision and calculate the received signal strength (RSS) for VLP in each time slot. After all time slots, for each user, three of the largest RSS are selected to locate the user by using the trilateration algorithm. Therefore, the continuous VLC transmission with VLP function can be realized through the dual-domain multiplexing scheme. In addition, the supporting number of users will not be limited by the number of LEDs but can be designed according to the used number of spreading codes. The principle of the proposed multi-user VLCP system is as follows. Consider there are four LEDs and \(N\) users in the multi-user VLCP system and the output power without modulation of each LED lamp is \(P_{t}\). After OOK modulation, the transmitted VLCP signal from \(i\)-th LED can be written as:  
\[T_{i}(t)=P_{t}(\alpha S_{i}(t)+1), \tag{1}\]  
where \(\alpha\) is the modulation index, defined as the ratio of the maximum current variation caused by the modulating signal to the bias current of LED [21; 22]. The modulating signal \(S_{i}\) is the accumulation of the encoded data of all users, which can be expressed as:  
\[S_{i}(t)=\beta\sum_{k=1}^{N}s_{k}(t). \tag{2}\]  
Here, we set a parameter \(\beta=1/N\) to normalize the modulating signal and \(s_{k}\) is the encoded data of \(k\)-th user. The \(n\)-th encoded symbol of \(k\)-th user can be given as:  
\[s_{k,n}(t)=u_{k,n}(t)c_{k}(t),\ (n-1)T_{s}\leq t<T_{s}, \tag{3}\]  
where \(u_{k,n}\in\{-1,1\}\) is the \(n\)-th symbol of \(k\)-th user data, \(c_{k}\) is the spreading code assigned to \(k\)-th user, and \(T_{s}\) is the duration of one symbol. In this paper, we adopted the Walsh-Hadamard code as the spreading code given that it has good correlation properties [23; 24]. The code waveform \(c_{k}\) (\(t\)) of \(k\)-th user is expressed as:  
\[c_{k}(t)=\sum_{l=0}^{L-1}c_{k,l}p_{T_{c}}(t-lT_{c}), \tag{4}\]  
where \(L\) is the length of \(c_{k}\), \(T_{c}\) is the duration of one chip, \(c_{k,l}=c_{k,l+L}\in\{-1,\ 1\}\) is the \(l\)-th component of \(c_{k}\), and \(p_{T_{c}}\) (\(t\)) is a unit rectangular pulse written as:  
\[p_{T_{c}}(t)= \begin{cases}1&0\leq t<T_{c}\\ 0&\text{otherwise}.\end{cases}  \tag{5}\]  
Then, the VLCP signal goes through the VLC channel, which is on the basis of the Lambertian radiation model in [25], where the researchers indicated that the reflected signal is much lower than that of the light-of-sight (LOS) component. Thus, to simplify  
Figure 1: Schematic diagram of (**a**) multi-user VLCP system and (**b**) the dual-domain multiplexing scheme. the model, we only considered the LOS component in this paper. We also assumed that the light-emitting plane of the LED is parallel to the receiving plane of the PD.