| 554 | } |
| 555 | |
| 556 | void HandleGeneralChannelMessage() { |
| 557 | AppletStorage sams_st; |
| 558 | if(R_SUCCEEDED(appletPopFromGeneralChannel(&sams_st))) { |
| 559 | ul::util::OnScopeExit close_sams_st([&]() { |
| 560 | appletStorageClose(&sams_st); |
| 561 | }); |
| 562 | |
| 563 | StorageReader sams_st_reader(sams_st); |
| 564 | |
| 565 | // Note: are we expecting a certain size? (sometimes we get 0x10, others 0x800...) |
| 566 | const auto sams_st_size = sams_st_reader.GetSize(); |
| 567 | |
| 568 | SystemAppletMessageHeader sams_header; |
| 569 | UL_RC_ASSERT(sams_st_reader.Read(sams_header)); |
| 570 | UL_LOG_INFO("SystemAppletMessageHeader [size: 0x%lX] { magic: 0x%X, unk: 0x%X, msg: %d, unk_2: 0x%X }", sams_st_size, sams_header.magic, sams_header.unk, static_cast<u32>(sams_header.msg), sams_header.unk_2); |
| 571 | if(sams_header.IsValid()) { |
| 572 | switch(sams_header.msg) { |
| 573 | case GeneralChannelMessage::Unk_Invalid: { |
| 574 | UL_LOG_WARN("Invalid general channel message!"); |
| 575 | break; |
| 576 | } |
| 577 | case GeneralChannelMessage::RequestHomeMenu: { |
| 578 | HandleHomeButton(); |
| 579 | break; |
| 580 | } |
| 581 | case GeneralChannelMessage::Unk_Sleep: { |
| 582 | HandleSleep(); |
| 583 | break; |
| 584 | } |
| 585 | case GeneralChannelMessage::Unk_Shutdown: { |
| 586 | UL_RC_ASSERT(appletStartShutdownSequence()); |
| 587 | break; |
| 588 | } |
| 589 | case GeneralChannelMessage::Unk_Reboot: { |
| 590 | UL_RC_ASSERT(appletStartRebootSequence()); |
| 591 | break; |
| 592 | } |
| 593 | case GeneralChannelMessage::RequestJumpToSystemUpdate: { |
| 594 | UL_LOG_WARN("Got GeneralChannelMessage: RequestJumpToSystemUpdate"); |
| 595 | break; |
| 596 | } |
| 597 | case GeneralChannelMessage::Unk_OverlayBrightValueChanged: { |
| 598 | UL_LOG_WARN("Got GeneralChannelMessage: Unk_OverlayBrightValueChanged"); |
| 599 | break; |
| 600 | } |
| 601 | case GeneralChannelMessage::Unk_OverlayAutoBrightnessChanged: { |
| 602 | UL_LOG_WARN("Got GeneralChannelMessage: Unk_OverlayAutoBrightnessChanged"); |
| 603 | break; |
| 604 | } |
| 605 | case GeneralChannelMessage::Unk_OverlayAirplaneModeChanged: { |
| 606 | UL_LOG_WARN("Got GeneralChannelMessage: Unk_OverlayAirplaneModeChanged"); |
| 607 | break; |
| 608 | } |
| 609 | case GeneralChannelMessage::Unk_OverlayShown: { |
| 610 | UL_LOG_WARN("Got GeneralChannelMessage: Unk_OverlayShown"); |
| 611 | break; |
| 612 | } |
| 613 | case GeneralChannelMessage::Unk_OverlayHidden: { |
no test coverage detected