Qianjun Wang
Hi,
Yes, you can call bt_nus_send() repeatedly. If the buffer is full, you will get -ENOMEM returned and will have to try again laiter.
There is n API to see the number of queued packets, but you can register the sent callback for the NUS service and count yourself if you need this information (incrase a variable wen you call bt_nus_send() successfully, and decrease it when you get the callback).
As an aside, following eith's suggestion be aware that if you do not implement such a count or something similar a BLE disconnect followed by a reconnect will silently discard the buffer contents at the time of BLE disconnect (in our experience, may be different with latest Softdevice/IDEs) and those packets discarded will be lost. Tracking received packets allows reloading the buffer and hence BLE transmission.