@@ -53,10 +53,23 @@ SerialPABotBase_WirelessProController::~SerialPABotBase_WirelessProController(){
5353
5454
5555
56- class SerialPABotBase_WirelessProController ::Message : public BotBaseRequest{
56+
57+ class SerialPABotBase_WirelessProController ::MessageControllerStatus : public BotBaseRequest{
58+ public:
59+ pabb_esp32_RequestStatus params;
60+ MessageControllerStatus ()
61+ : BotBaseRequest(false )
62+ {
63+ params.seqnum = 0 ;
64+ }
65+ virtual BotBaseMessage message () const override {
66+ return BotBaseMessage (PABB_MSG_ESP32_REQUEST_STATUS, params);
67+ }
68+ };
69+ class SerialPABotBase_WirelessProController ::MessageControllerState : public BotBaseRequest{
5770public:
5871 pabb_esp32_report30 params;
59- Message (uint8_t ticks, ESP32Report0x30 report)
72+ MessageControllerState (uint8_t ticks, ESP32Report0x30 report)
6073 : BotBaseRequest(true )
6174 {
6275 params.seqnum = 0 ;
@@ -159,7 +172,7 @@ void SerialPABotBase_WirelessProController::push_state(const Cancellable* cancel
159172 Milliseconds current_ms = std::min (time_left, 255 * 15ms);
160173 uint8_t current_ticks = (uint8_t )milliseconds_to_ticks_15ms (current_ms.count ());
161174 m_serial->issue_request (
162- Message (current_ticks, report),
175+ MessageControllerState (current_ticks, report),
163176 cancellable
164177 );
165178 time_left -= current_ms;
@@ -210,27 +223,30 @@ void SerialPABotBase_WirelessProController::status_thread(){
210223 break ;
211224 }
212225
213- std::string str;
214226 std::string error;
215227 try {
216228 pabb_MsgAckRequestI32 response;
217229 m_serial->issue_request_and_wait (
218- NintendoSwitch::DeviceRequest_system_clock (),
230+ MessageControllerStatus (),
219231 &scope
220232 ).convert <PABB_MSG_ACK_REQUEST_I32>(logger (), response);
221233 last_ack.store (current_time (), std::memory_order_relaxed);
222- uint32_t wallclock = response.data ;
223- if (wallclock == 0 ){
224- m_handle.set_status_line1 (
225- " Not connected to Switch." ,
226- COLOR_RED
227- );
228- }else {
229- m_handle.set_status_line1 (
230- " Status Reports: " + tostr_u_commas (wallclock),
231- theme_friendly_darkblue ()
232- );
233- }
234+
235+ uint32_t status = response.data ;
236+ bool status_paired = status & 1 ;
237+ bool status_connected = status & 2 ;
238+
239+ std::string str;
240+ str += " Paired: " + (status_paired
241+ ? html_color_text (" Yes" , theme_friendly_darkblue ())
242+ : html_color_text (" No" , COLOR_RED)
243+ );
244+ str += " , Connected: " + (status_connected
245+ ? html_color_text (" Yes" , theme_friendly_darkblue ())
246+ : html_color_text (" No" , COLOR_RED)
247+ );
248+
249+ m_handle.set_status_line1 (str);
234250 }catch (InvalidConnectionStateException&){
235251 break ;
236252 }catch (SerialProtocolException& e){
0 commit comments