Audio notifications for install progress
This commit is contained in:
parent
c9e020da74
commit
2a88b56ce2
@ -18,4 +18,5 @@ namespace inst::util {
|
|||||||
std::vector<uint32_t> setClockSpeed(int deviceToClock, uint32_t clockSpeed);
|
std::vector<uint32_t> setClockSpeed(int deviceToClock, uint32_t clockSpeed);
|
||||||
std::string getIPAddress();
|
std::string getIPAddress();
|
||||||
int getUsbState();
|
int getUsbState();
|
||||||
|
void playAudio(std::string audioPath);
|
||||||
}
|
}
|
BIN
romfs/audio/awoo.wav
Executable file
BIN
romfs/audio/awoo.wav
Executable file
Binary file not shown.
BIN
romfs/audio/bark.wav
Executable file
BIN
romfs/audio/bark.wav
Executable file
Binary file not shown.
@ -28,6 +28,7 @@ SOFTWARE.
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <machine/endian.h>
|
#include <machine/endian.h>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
#include "nx/ncm.hpp"
|
#include "nx/ncm.hpp"
|
||||||
#include "install/nca.hpp"
|
#include "install/nca.hpp"
|
||||||
@ -40,6 +41,7 @@ SOFTWARE.
|
|||||||
#include "util/title_util.hpp"
|
#include "util/title_util.hpp"
|
||||||
#include "sdInstall.hpp"
|
#include "sdInstall.hpp"
|
||||||
#include "ui/MainApplication.hpp"
|
#include "ui/MainApplication.hpp"
|
||||||
|
#include "util/util.hpp"
|
||||||
|
|
||||||
namespace inst::ui {
|
namespace inst::ui {
|
||||||
extern MainApplication *mainApp;
|
extern MainApplication *mainApp;
|
||||||
@ -129,7 +131,9 @@ namespace tin::install::nsp
|
|||||||
|
|
||||||
if (!Crypto::rsa2048PssVerify(&header.magic, 0x200, header.fixed_key_sig, Crypto::NCAHeaderSignature))
|
if (!Crypto::rsa2048PssVerify(&header.magic, 0x200, header.fixed_key_sig, Crypto::NCAHeaderSignature))
|
||||||
{
|
{
|
||||||
|
std::thread audioThread(inst::util::playAudio,"romfs:/audio/bark.wav");
|
||||||
int rc = inst::ui::mainApp->CreateShowDialog("Invalid NCA signature detected!", "Improperly signed software should only be installed from trustworthy\nsources. Files containing cartridge repacks and DLC unlockers will always\nshow this warning. You can disable this check in Awoo Installer's settings.\n\nAre you sure you want to continue the installation?", {"Cancel", "Yes, I understand the risks"}, false);
|
int rc = inst::ui::mainApp->CreateShowDialog("Invalid NCA signature detected!", "Improperly signed software should only be installed from trustworthy\nsources. Files containing cartridge repacks and DLC unlockers will always\nshow this warning. You can disable this check in Awoo Installer's settings.\n\nAre you sure you want to continue the installation?", {"Cancel", "Yes, I understand the risks"}, false);
|
||||||
|
audioThread.join();
|
||||||
if (rc != 1)
|
if (rc != 1)
|
||||||
THROW_FORMAT(("The requested NCA (" + tin::util::GetNcaIdString(ncaId) + ") is not properly signed").c_str());
|
THROW_FORMAT(("The requested NCA (" + tin::util::GetNcaIdString(ncaId) + ") is not properly signed").c_str());
|
||||||
declinedValidation = true;
|
declinedValidation = true;
|
||||||
|
@ -23,6 +23,8 @@ SOFTWARE.
|
|||||||
#include "install/install_nsp_remote.hpp"
|
#include "install/install_nsp_remote.hpp"
|
||||||
|
|
||||||
#include <machine/endian.h>
|
#include <machine/endian.h>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
#include "install/nca.hpp"
|
#include "install/nca.hpp"
|
||||||
#include "nx/fs.hpp"
|
#include "nx/fs.hpp"
|
||||||
#include "nx/ncm.hpp"
|
#include "nx/ncm.hpp"
|
||||||
@ -33,6 +35,7 @@ SOFTWARE.
|
|||||||
#include "util/debug.h"
|
#include "util/debug.h"
|
||||||
#include "util/error.hpp"
|
#include "util/error.hpp"
|
||||||
#include "ui/MainApplication.hpp"
|
#include "ui/MainApplication.hpp"
|
||||||
|
#include "util/util.hpp"
|
||||||
|
|
||||||
namespace inst::ui {
|
namespace inst::ui {
|
||||||
extern MainApplication *mainApp;
|
extern MainApplication *mainApp;
|
||||||
@ -107,7 +110,9 @@ namespace tin::install::nsp
|
|||||||
|
|
||||||
if (!Crypto::rsa2048PssVerify(&header->magic, 0x200, header->fixed_key_sig, Crypto::NCAHeaderSignature))
|
if (!Crypto::rsa2048PssVerify(&header->magic, 0x200, header->fixed_key_sig, Crypto::NCAHeaderSignature))
|
||||||
{
|
{
|
||||||
|
std::thread audioThread(inst::util::playAudio,"romfs:/audio/bark.wav");
|
||||||
int rc = inst::ui::mainApp->CreateShowDialog("Invalid NCA signature detected!", "Improperly signed software should only be installed from trustworthy\nsources. Files containing cartridge repacks and DLC unlockers will always\nshow this warning. You can disable this check in Awoo Installer's settings.\n\nAre you sure you want to continue the installation?", {"Cancel", "Yes, I understand the risks"}, false);
|
int rc = inst::ui::mainApp->CreateShowDialog("Invalid NCA signature detected!", "Improperly signed software should only be installed from trustworthy\nsources. Files containing cartridge repacks and DLC unlockers will always\nshow this warning. You can disable this check in Awoo Installer's settings.\n\nAre you sure you want to continue the installation?", {"Cancel", "Yes, I understand the risks"}, false);
|
||||||
|
audioThread.join();
|
||||||
if (rc != 1)
|
if (rc != 1)
|
||||||
THROW_FORMAT(("The requested NCA (" + tin::util::GetNcaIdString(ncaId) + ") is not properly signed").c_str());
|
THROW_FORMAT(("The requested NCA (" + tin::util::GetNcaIdString(ncaId) + ") is not properly signed").c_str());
|
||||||
declinedValidation = true;
|
declinedValidation = true;
|
||||||
|
@ -20,6 +20,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|||||||
SOFTWARE.
|
SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
#include "install/install_xci.hpp"
|
#include "install/install_xci.hpp"
|
||||||
#include "util/file_util.hpp"
|
#include "util/file_util.hpp"
|
||||||
#include "util/title_util.hpp"
|
#include "util/title_util.hpp"
|
||||||
@ -30,6 +32,7 @@ SOFTWARE.
|
|||||||
#include "install/nca.hpp"
|
#include "install/nca.hpp"
|
||||||
#include "sdInstall.hpp"
|
#include "sdInstall.hpp"
|
||||||
#include "ui/MainApplication.hpp"
|
#include "ui/MainApplication.hpp"
|
||||||
|
#include "util/util.hpp"
|
||||||
|
|
||||||
namespace inst::ui {
|
namespace inst::ui {
|
||||||
extern MainApplication *mainApp;
|
extern MainApplication *mainApp;
|
||||||
@ -108,7 +111,9 @@ namespace tin::install::xci
|
|||||||
|
|
||||||
if (!Crypto::rsa2048PssVerify(&header->magic, 0x200, header->fixed_key_sig, Crypto::NCAHeaderSignature))
|
if (!Crypto::rsa2048PssVerify(&header->magic, 0x200, header->fixed_key_sig, Crypto::NCAHeaderSignature))
|
||||||
{
|
{
|
||||||
|
std::thread audioThread(inst::util::playAudio,"romfs:/audio/awoo.wav");
|
||||||
int rc = inst::ui::mainApp->CreateShowDialog("Invalid NCA signature detected!", "Improperly signed software should only be installed from trustworthy\nsources. Files containing cartridge repacks and DLC unlockers will always\nshow this warning. You can disable this check in Awoo Installer's settings.\n\nAre you sure you want to continue the installation?", {"Cancel", "Yes, I understand the risks"}, false);
|
int rc = inst::ui::mainApp->CreateShowDialog("Invalid NCA signature detected!", "Improperly signed software should only be installed from trustworthy\nsources. Files containing cartridge repacks and DLC unlockers will always\nshow this warning. You can disable this check in Awoo Installer's settings.\n\nAre you sure you want to continue the installation?", {"Cancel", "Yes, I understand the risks"}, false);
|
||||||
|
audioThread.join();
|
||||||
if (rc != 1)
|
if (rc != 1)
|
||||||
THROW_FORMAT(("The requested NCA (" + tin::util::GetNcaIdString(ncaId) + ") is not properly signed").c_str());
|
THROW_FORMAT(("The requested NCA (" + tin::util::GetNcaIdString(ncaId) + ") is not properly signed").c_str());
|
||||||
declinedValidation = true;
|
declinedValidation = true;
|
||||||
|
@ -26,6 +26,7 @@ SOFTWARE.
|
|||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
#include <switch.h>
|
#include <switch.h>
|
||||||
#include "util/network_util.hpp"
|
#include "util/network_util.hpp"
|
||||||
@ -171,7 +172,9 @@ namespace netInstStuff{
|
|||||||
fprintf(stdout, "%s", e.what());
|
fprintf(stdout, "%s", e.what());
|
||||||
inst::ui::setInstInfoText("Failed to install " + urlNames[urlItr]);
|
inst::ui::setInstInfoText("Failed to install " + urlNames[urlItr]);
|
||||||
inst::ui::setInstBarPerc(0);
|
inst::ui::setInstBarPerc(0);
|
||||||
|
std::thread audioThread(inst::util::playAudio,"romfs:/audio/bark.wav");
|
||||||
inst::ui::mainApp->CreateShowDialog("Failed to install " + urlNames[urlItr] + "!", "Partially installed contents can be removed from the System Settings applet.\n\n" + (std::string)e.what(), {"OK"}, true);
|
inst::ui::mainApp->CreateShowDialog("Failed to install " + urlNames[urlItr] + "!", "Partially installed contents can be removed from the System Settings applet.\n\n" + (std::string)e.what(), {"OK"}, true);
|
||||||
|
audioThread.join();
|
||||||
nspInstalled = false;
|
nspInstalled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,8 +192,10 @@ namespace netInstStuff{
|
|||||||
if(nspInstalled) {
|
if(nspInstalled) {
|
||||||
inst::ui::setInstInfoText("Install complete");
|
inst::ui::setInstInfoText("Install complete");
|
||||||
inst::ui::setInstBarPerc(100);
|
inst::ui::setInstBarPerc(100);
|
||||||
|
std::thread audioThread(inst::util::playAudio,"romfs:/audio/awoo.wav");
|
||||||
if (ourUrlList.size() > 1) inst::ui::mainApp->CreateShowDialog(std::to_string(ourUrlList.size()) + " files installed successfully!", nspInstStuff::finishedMessage(), {"OK"}, true);
|
if (ourUrlList.size() > 1) inst::ui::mainApp->CreateShowDialog(std::to_string(ourUrlList.size()) + " files installed successfully!", nspInstStuff::finishedMessage(), {"OK"}, true);
|
||||||
else inst::ui::mainApp->CreateShowDialog(urlNames[0] + " installed!", nspInstStuff::finishedMessage(), {"OK"}, true);
|
else inst::ui::mainApp->CreateShowDialog(urlNames[0] + " installed!", nspInstStuff::finishedMessage(), {"OK"}, true);
|
||||||
|
audioThread.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG("Done");
|
LOG_DEBUG("Done");
|
||||||
|
@ -24,6 +24,7 @@ SOFTWARE.
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
#include "install/install_nsp.hpp"
|
#include "install/install_nsp.hpp"
|
||||||
#include "install/install_xci.hpp"
|
#include "install/install_xci.hpp"
|
||||||
@ -140,7 +141,9 @@ namespace nspInstStuff {
|
|||||||
fprintf(stdout, "%s", e.what());
|
fprintf(stdout, "%s", e.what());
|
||||||
inst::ui::setInstInfoText("Failed to install " + inst::util::shortenString(ourTitleList[titleItr].filename().string(), 42, true));
|
inst::ui::setInstInfoText("Failed to install " + inst::util::shortenString(ourTitleList[titleItr].filename().string(), 42, true));
|
||||||
inst::ui::setInstBarPerc(0);
|
inst::ui::setInstBarPerc(0);
|
||||||
|
std::thread audioThread(inst::util::playAudio,"romfs:/audio/bark.wav");
|
||||||
inst::ui::mainApp->CreateShowDialog("Failed to install " + inst::util::shortenString(ourTitleList[titleItr].filename().string(), 42, true) + "!", "Partially installed contents can be removed from the System Settings applet.\n\n" + (std::string)e.what(), {"OK"}, true);
|
inst::ui::mainApp->CreateShowDialog("Failed to install " + inst::util::shortenString(ourTitleList[titleItr].filename().string(), 42, true) + "!", "Partially installed contents can be removed from the System Settings applet.\n\n" + (std::string)e.what(), {"OK"}, true);
|
||||||
|
audioThread.join();
|
||||||
nspInstalled = false;
|
nspInstalled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,6 +163,7 @@ namespace nspInstStuff {
|
|||||||
if(nspInstalled) {
|
if(nspInstalled) {
|
||||||
inst::ui::setInstInfoText("Install complete");
|
inst::ui::setInstInfoText("Install complete");
|
||||||
inst::ui::setInstBarPerc(100);
|
inst::ui::setInstBarPerc(100);
|
||||||
|
std::thread audioThread(inst::util::playAudio,"romfs:/audio/awoo.wav");
|
||||||
if (ourTitleList.size() > 1) {
|
if (ourTitleList.size() > 1) {
|
||||||
if (inst::config::deletePrompt) {
|
if (inst::config::deletePrompt) {
|
||||||
if(inst::ui::mainApp->CreateShowDialog(std::to_string(ourTitleList.size()) + " files installed successfully! Delete them from the SD card?", "The original files aren't needed anymore after they've been installed", {"No","Yes"}, false) == 1) {
|
if(inst::ui::mainApp->CreateShowDialog(std::to_string(ourTitleList.size()) + " files installed successfully! Delete them from the SD card?", "The original files aren't needed anymore after they've been installed", {"No","Yes"}, false) == 1) {
|
||||||
@ -173,6 +177,7 @@ namespace nspInstStuff {
|
|||||||
if(inst::ui::mainApp->CreateShowDialog(inst::util::shortenString(ourTitleList[0].filename().string(), 32, true) + " installed! Delete it from the SD card?", "The original file isn't needed anymore after it's been installed", {"No","Yes"}, false) == 1) if (std::filesystem::exists(ourTitleList[0])) std::filesystem::remove(ourTitleList[0]);
|
if(inst::ui::mainApp->CreateShowDialog(inst::util::shortenString(ourTitleList[0].filename().string(), 32, true) + " installed! Delete it from the SD card?", "The original file isn't needed anymore after it's been installed", {"No","Yes"}, false) == 1) if (std::filesystem::exists(ourTitleList[0])) std::filesystem::remove(ourTitleList[0]);
|
||||||
} else inst::ui::mainApp->CreateShowDialog(inst::util::shortenString(ourTitleList[0].filename().string(), 42, true) + " installed!", nspInstStuff::finishedMessage(), {"OK"}, true);
|
} else inst::ui::mainApp->CreateShowDialog(inst::util::shortenString(ourTitleList[0].filename().string(), 42, true) + " installed!", nspInstStuff::finishedMessage(), {"OK"}, true);
|
||||||
}
|
}
|
||||||
|
audioThread.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG("Done");
|
LOG_DEBUG("Done");
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
#include <thread>
|
||||||
#include "util/error.hpp"
|
#include "util/error.hpp"
|
||||||
#include "usbInstall.hpp"
|
#include "usbInstall.hpp"
|
||||||
#include "install/usb_nsp.hpp"
|
#include "install/usb_nsp.hpp"
|
||||||
@ -31,8 +32,6 @@ namespace usbInstStuff {
|
|||||||
} PACKED;
|
} PACKED;
|
||||||
|
|
||||||
std::vector<std::string> OnSelected() {
|
std::vector<std::string> OnSelected() {
|
||||||
Result rc = 0;
|
|
||||||
|
|
||||||
TUSHeader header;
|
TUSHeader header;
|
||||||
while(true) {
|
while(true) {
|
||||||
if (tin::util::USBRead(&header, sizeof(TUSHeader)) != 0) break;
|
if (tin::util::USBRead(&header, sizeof(TUSHeader)) != 0) break;
|
||||||
@ -111,7 +110,9 @@ namespace usbInstStuff {
|
|||||||
fprintf(stdout, "%s", e.what());
|
fprintf(stdout, "%s", e.what());
|
||||||
inst::ui::setInstInfoText("Failed to install " + fileNames[fileItr]);
|
inst::ui::setInstInfoText("Failed to install " + fileNames[fileItr]);
|
||||||
inst::ui::setInstBarPerc(0);
|
inst::ui::setInstBarPerc(0);
|
||||||
|
std::thread audioThread(inst::util::playAudio,"romfs:/audio/bark.wav");
|
||||||
inst::ui::mainApp->CreateShowDialog("Failed to install " + fileNames[fileItr] + "!", "Partially installed contents can be removed from the System Settings applet.\n\n" + (std::string)e.what(), {"OK"}, true);
|
inst::ui::mainApp->CreateShowDialog("Failed to install " + fileNames[fileItr] + "!", "Partially installed contents can be removed from the System Settings applet.\n\n" + (std::string)e.what(), {"OK"}, true);
|
||||||
|
audioThread.join();
|
||||||
nspInstalled = false;
|
nspInstalled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,8 +126,10 @@ namespace usbInstStuff {
|
|||||||
tin::util::USBCmdManager::SendExitCmd();
|
tin::util::USBCmdManager::SendExitCmd();
|
||||||
inst::ui::setInstInfoText("Install complete");
|
inst::ui::setInstInfoText("Install complete");
|
||||||
inst::ui::setInstBarPerc(100);
|
inst::ui::setInstBarPerc(100);
|
||||||
|
std::thread audioThread(inst::util::playAudio,"romfs:/audio/awoo.wav");
|
||||||
if (ourTitleList.size() > 1) inst::ui::mainApp->CreateShowDialog(std::to_string(ourTitleList.size()) + " files installed successfully!", nspInstStuff::finishedMessage(), {"OK"}, true);
|
if (ourTitleList.size() > 1) inst::ui::mainApp->CreateShowDialog(std::to_string(ourTitleList.size()) + " files installed successfully!", nspInstStuff::finishedMessage(), {"OK"}, true);
|
||||||
else inst::ui::mainApp->CreateShowDialog(fileNames[0] + " installed!", nspInstStuff::finishedMessage(), {"OK"}, true);
|
else inst::ui::mainApp->CreateShowDialog(fileNames[0] + " installed!", nspInstStuff::finishedMessage(), {"OK"}, true);
|
||||||
|
audioThread.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG("Done");
|
LOG_DEBUG("Done");
|
||||||
|
@ -264,4 +264,35 @@ namespace inst::util {
|
|||||||
usbDsGetState(&usbState);
|
usbDsGetState(&usbState);
|
||||||
return usbState;
|
return usbState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void playAudio(std::string audioPath) {
|
||||||
|
int audio_rate = 22050;
|
||||||
|
Uint16 audio_format = AUDIO_S16SYS;
|
||||||
|
int audio_channels = 2;
|
||||||
|
int audio_buffers = 4096;
|
||||||
|
|
||||||
|
if(Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers) != 0) return;
|
||||||
|
|
||||||
|
Mix_Chunk *sound = NULL;
|
||||||
|
sound = Mix_LoadWAV(audioPath.c_str());
|
||||||
|
if(sound == NULL) {
|
||||||
|
Mix_FreeChunk(sound);
|
||||||
|
Mix_CloseAudio();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int channel = Mix_PlayChannel(-1, sound, 0);
|
||||||
|
if(channel == -1) {
|
||||||
|
Mix_FreeChunk(sound);
|
||||||
|
Mix_CloseAudio();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while(Mix_Playing(channel) != 0);
|
||||||
|
|
||||||
|
Mix_FreeChunk(sound);
|
||||||
|
Mix_CloseAudio();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user