aboutsummaryrefslogtreecommitdiff
path: root/src/Wifi.cpp
diff options
context:
space:
mode:
authorJesse Talavera-Greenberg <jesse@jesse.tg>2023-09-18 15:09:11 -0400
committerGitHub <noreply@github.com>2023-09-18 21:09:11 +0200
commit5bfe51e670bb0806b254144cbe4c60d3f914c735 (patch)
tree0253b50ff73621f86283d6caf41c1a9ea06b0639 /src/Wifi.cpp
parentdb963aa002cdf943c86d19f8abd3f4fd40be38ec (diff)
Refactor the core's handling of firmware and BIOS images to rely less on the file system (#1826)
* Introduce firmware-related structs * Fix some indents * Move the generated firmware identifier to a constant * Document the WifiAccessPoint constructors * Add some constants * Remove a stray comment * Implement Firmware::UserData * Add Firmware::Mask * Document Firmware::Buffer * Add a Firmware constructor that uses a FileHandle * Set the default username in UserData * Update the UserData checksum * Forgot to include Platform.h * Remove some redundant assignments in the default Firmware constructor * const-ify CRC16 * Replace the plain Firmware buffer with a Firmware object - Remove some functions that were reimplemented in the Firmware constructors * Fix some crashes due to undefined behavior * Fix the user data initialization - Initialize both user data objects to default - Set both user data objects to the same touch screen calibration * Follow the DS logic in determining which user data section is current * Remove an unneeded include * Remove another unneeded include * Initialize FirmwareMask in Firmware::Firmware * Use the DEFAULT_SSID constant * Add SPI_Firmware::InstallFirmware and SPI_Firmware::RemoveFirmware * Move a logging call to after the file is written * Add a SaveManager for the firmware * Touch up the SPI_Firmware::Firmware declaration * Move all firmware loading and customization to the frontend * Call Platform::WriteFirmware when it's time to write the firmware back to disk * Fix some missing stuff * Remove the Get* functions from SPI_Firmware in favor of GetFirmware() * Implement SPI_Firmware::DeInit in terms of RemoveFirmware * Add Firmware::UpdateChecksums * Fix an incorrect length * Update all checksums in the firmware after setting touch screen calibration data * Use the Firmware object's Position methods * Remove register fields from the Firmware object * Install the firmware before seeing if direct boot is necessary * Install the firmware before calling NDS::Reset in LoadROM * Slight cleanup in ROMManager * Fix the default access point name * Shorten the various getters in Firmware * Add qualifiers for certain uses of firmware types - GCC can get picky if -fpermissive isn't defined * Add an InstallFirmware overload that takes a unique_ptr * Log when firmware is added or removed * Don't clear the firmware in SPI_Firmware::Init - The original code didn't, it just set the pointer to nullptr * Fix a typo * Write back the full firmware if it's not generated * Move the FreeBIOS to an external file * Load wfcsettings.bin into the correct part of the generated firmware blob * Load BIOS files in the frontend, not in the core * Fix logging the firmware ID * Add some utility functions * Mark Firmware's constructors as explicit * Remove obsolete ConfigEntry values * Include <locale> explicitly in ROMManager * Fix up some includes * Add Firmware::IsBootable() * Add a newline to a log entry - Whoops * Log the number of bytes written out in SaveManager * Mark FirmwareHeader's constructor as explicit * Clean up GenerateDefaultFirmware and LoadFirmwareFromFile - Now they return a pair instead of two by-ref values * Refactor SaveManager a little bit - Manage its buffers as unique_ptrs to mitigate leaks - Reallocate the internal buffer if SetPath is asked to reload the file (and the new length is different) * Remove some stray parens * Fix some firmware-related bugs I introduced - Firmware settings are now properly saved to disk (beforehand I misunderstood when the firmware blob was written) - Firmware is no longer overwritten by contents of wfcsettings.bin * Slight cleanup
Diffstat (limited to 'src/Wifi.cpp')
-rw-r--r--src/Wifi.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/Wifi.cpp b/src/Wifi.cpp
index fa05a65..d786cd0 100644
--- a/src/Wifi.cpp
+++ b/src/Wifi.cpp
@@ -176,6 +176,7 @@ void DeInit()
void Reset()
{
+ using namespace SPI_Firmware;
memset(RAM, 0, 0x2000);
memset(IO, 0, 0x1000);
@@ -215,15 +216,15 @@ void Reset()
}
#undef BBREG_FIXED
- RFVersion = SPI_Firmware::GetRFVersion();
+ RFVersion = GetFirmware()->Header().RFChipType;
memset(RFRegs, 0, 4*0x40);
- u8 console = SPI_Firmware::GetConsoleType();
- if (console == 0xFF)
+ FirmwareConsoleType console = GetFirmware()->Header().ConsoleType;
+ if (console == FirmwareConsoleType::DS)
IOPORT(0x000) = 0x1440;
- else if (console == 0x20)
+ else if (console == FirmwareConsoleType::DSLite)
IOPORT(0x000) = 0xC340;
- else if (NDS::ConsoleType == 1 && console == 0x57)
+ else if (NDS::ConsoleType == 1 && console == FirmwareConsoleType::DSi)
IOPORT(0x000) = 0xC340; // DSi has the modern DS-wifi variant
else
{