Device: Fix coremini loading

For:
- RADA2B
- RADComet2
- RADComet3
- RADGalaxy2
- RADMoonT1S
- RADStar2
This commit is contained in:
Bryant Jones
2026-06-24 13:28:12 -04:00
committed by Kyle Schwarz
parent 8af6d5f2a8
commit 749552e443
7 changed files with 27 additions and 28 deletions
+4 -1
View File
@@ -737,6 +737,7 @@ bool Device::uploadCoremini(std::istream& stream, Disk::MemoryType memType) {
return false; return false;
} }
if (memType == Disk::MemoryType::SD) {
auto connected = isLogicalDiskConnected(); auto connected = isLogicalDiskConnected();
if(!connected) { if(!connected) {
@@ -747,6 +748,7 @@ bool Device::uploadCoremini(std::istream& stream, Disk::MemoryType memType) {
report(APIEvent::Type::DiskNotConnected, APIEvent::Severity::Error); report(APIEvent::Type::DiskNotConnected, APIEvent::Severity::Error);
return false; return false;
} }
}
if(!stopScript()) { if(!stopScript()) {
return false; return false;
@@ -756,7 +758,6 @@ bool Device::uploadCoremini(std::istream& stream, Disk::MemoryType memType) {
return false; return false;
} }
if(!eraseScriptMemory(memType, static_cast<uint64_t>(bin.size()))) { if(!eraseScriptMemory(memType, static_cast<uint64_t>(bin.size()))) {
return false; return false;
} }
@@ -846,11 +847,13 @@ std::optional<CoreminiHeader> Device::readCoreminiHeader(Disk::MemoryType memTyp
return std::nullopt; return std::nullopt;
} }
if (memType == Disk::MemoryType::SD) {
auto connected = isLogicalDiskConnected(); auto connected = isLogicalDiskConnected();
if(!connected) { if(!connected) {
return std::nullopt; // Already added an API error return std::nullopt; // Already added an API error
} }
}
#pragma pack(push, 2) #pragma pack(push, 2)
struct RawCoreminiHeader { struct RawCoreminiHeader {
@@ -96,10 +96,6 @@ protected:
return 15*1024*1024; return 15*1024*1024;
} }
std::optional<MemoryAddress> getCoreminiStartAddressSD() const override {
return 0;
}
}; };
} }
@@ -69,7 +69,7 @@ public:
protected: protected:
RADComet2(neodevice_t neodevice, const driver_factory_t& makeDriver) : Device(neodevice) { RADComet2(neodevice_t neodevice, const driver_factory_t& makeDriver) : Device(neodevice) {
initialize<RADComet2Settings>(makeDriver); initialize<RADComet2Settings, Disk::NeoMemoryDiskDriver, Disk::NeoMemoryDiskDriver>(makeDriver);
} }
void setupPacketizer(Packetizer& packetizer) override { void setupPacketizer(Packetizer& packetizer) override {
@@ -76,7 +76,7 @@ public:
protected: protected:
RADComet3(neodevice_t neodevice, const driver_factory_t& makeDriver) : Device(neodevice) { RADComet3(neodevice_t neodevice, const driver_factory_t& makeDriver) : Device(neodevice) {
initialize<RADComet3Settings>(makeDriver); initialize<RADComet3Settings, Disk::NeoMemoryDiskDriver, Disk::NeoMemoryDiskDriver>(makeDriver);
} }
void setupPacketizer(Packetizer& packetizer) override { void setupPacketizer(Packetizer& packetizer) override {
@@ -131,7 +131,7 @@ protected:
} }
std::optional<MemoryAddress> getCoreminiStartAddressFlash() const override { std::optional<MemoryAddress> getCoreminiStartAddressFlash() const override {
return 512*4; return 92*1024*1024;
} }
std::optional<MemoryAddress> getCoreminiStartAddressSD() const override { std::optional<MemoryAddress> getCoreminiStartAddressSD() const override {
@@ -55,7 +55,7 @@ public:
} }
protected: protected:
RADMoonT1S(neodevice_t neodevice, const driver_factory_t& makeDriver) : Device(neodevice) { RADMoonT1S(neodevice_t neodevice, const driver_factory_t& makeDriver) : Device(neodevice) {
initialize<RADMoonT1SSettings>(makeDriver); initialize<RADMoonT1SSettings, Disk::NeoMemoryDiskDriver, Disk::NeoMemoryDiskDriver>(makeDriver);
} }
void setupPacketizer(Packetizer& packetizer) override { void setupPacketizer(Packetizer& packetizer) override {
@@ -83,6 +83,10 @@ protected:
void setupSupportedTXNetworks(std::vector<Network>& txNetworks) override { void setupSupportedTXNetworks(std::vector<Network>& txNetworks) override {
setupSupportedRXNetworks(txNetworks); setupSupportedRXNetworks(txNetworks);
} }
std::optional<MemoryAddress> getCoreminiStartAddressFlash() const override {
return 32*1024*1024;
}
}; };
} }
@@ -52,7 +52,7 @@ public:
} }
protected: protected:
RADStar2(neodevice_t neodevice, const driver_factory_t& makeDriver) : Device(neodevice) { RADStar2(neodevice_t neodevice, const driver_factory_t& makeDriver) : Device(neodevice) {
initialize<RADStar2Settings>(makeDriver); initialize<RADStar2Settings, Disk::NeoMemoryDiskDriver, Disk::NeoMemoryDiskDriver>(makeDriver);
} }
virtual void setupPacketizer(Packetizer& packetizer) override { virtual void setupPacketizer(Packetizer& packetizer) override {
@@ -80,11 +80,7 @@ protected:
void setupSupportedTXNetworks(std::vector<Network>& txNetworks) override { setupSupportedRXNetworks(txNetworks); } void setupSupportedTXNetworks(std::vector<Network>& txNetworks) override { setupSupportedRXNetworks(txNetworks); }
std::optional<MemoryAddress> getCoreminiStartAddressFlash() const override { std::optional<MemoryAddress> getCoreminiStartAddressFlash() const override {
return 512*4; return 14*1024*1024;
}
std::optional<MemoryAddress> getCoreminiStartAddressSD() const override {
return 0;
} }
bool supportsGetAllMACAddresses() const override { bool supportsGetAllMACAddresses() const override {