Make LZ4 Decompressor return a state value
This commit is contained in:
parent
8655fdc897
commit
1ec9d9f1a7
|
@ -6,10 +6,21 @@
|
||||||
namespace JabyEngine {
|
namespace JabyEngine {
|
||||||
class LZ4Decompressor {
|
class LZ4Decompressor {
|
||||||
public:
|
public:
|
||||||
enum struct Result {
|
struct Result {
|
||||||
InProgress = 0,
|
Progress progress;
|
||||||
Done,
|
size_t bytes_ready;
|
||||||
Error
|
|
||||||
|
static constexpr Result new_error() {
|
||||||
|
return {Progress::Error, 0};
|
||||||
|
}
|
||||||
|
|
||||||
|
static constexpr Result new_done(size_t bytes_ready) {
|
||||||
|
return {Progress::Done, bytes_ready};
|
||||||
|
}
|
||||||
|
|
||||||
|
static constexpr Result new_in_progress(size_t bytes_ready) {
|
||||||
|
return {Progress::InProgress, bytes_ready};
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -28,7 +39,7 @@ namespace JabyEngine {
|
||||||
void setup(uint8_t* dst_adr);
|
void setup(uint8_t* dst_adr);
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
Progress process(const uint8_t* data, size_t size);
|
Result process(const uint8_t* data, size_t size);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,10 +10,10 @@ namespace JabyEngine {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Progress LZ4Decompressor :: process(const uint8_t* data, size_t size) {
|
LZ4Decompressor::Result LZ4Decompressor :: process(const uint8_t* data, size_t size) {
|
||||||
for(size_t n = 0; n < size; n++) {
|
for(size_t n = 0; n < size; n++) {
|
||||||
this->dst_adr[n] = data[n];
|
this->dst_adr[n] = data[n];
|
||||||
}
|
}
|
||||||
return Progress::Error;
|
return Result::new_error();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -14,10 +14,11 @@ extern "C" uint32_t __boot_loader_end;
|
||||||
|
|
||||||
namespace JabyEngine {
|
namespace JabyEngine {
|
||||||
namespace GPU {
|
namespace GPU {
|
||||||
static void decompress_logo() {
|
static size_t decompress_logo() {
|
||||||
LZ4Decompressor lz4_decomp(reinterpret_cast<uint8_t*>(&__boot_loader_end));
|
LZ4Decompressor lz4_decomp(reinterpret_cast<uint8_t*>(&__boot_loader_end));
|
||||||
|
|
||||||
switch(lz4_decomp.process(SplashScreen, sizeof(SplashScreen))) {
|
const auto [progress, bytes_ready] = lz4_decomp.process(SplashScreen, sizeof(SplashScreen));
|
||||||
|
switch(progress) {
|
||||||
case Progress::InProgress:
|
case Progress::InProgress:
|
||||||
printf("Decompressing still in progress...\n");
|
printf("Decompressing still in progress...\n");
|
||||||
break;
|
break;
|
||||||
|
@ -30,15 +31,16 @@ namespace JabyEngine {
|
||||||
printf("Done decompressing\n");
|
printf("Done decompressing\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return bytes_ready;
|
||||||
}
|
}
|
||||||
|
|
||||||
void display_logo() {
|
void display_logo() {
|
||||||
decompress_logo();
|
const auto bytes_ready = decompress_logo();
|
||||||
|
|
||||||
// Upload SplashScreen picture
|
// Upload SplashScreen picture
|
||||||
auto state = FileProcessor::create(&__boot_loader_end, SimpleTIM(32, 0, 0, 0));
|
auto state = FileProcessor::create(&__boot_loader_end, SimpleTIM(32, 0, 0, 0));
|
||||||
// v this will not be correct for now...
|
while(state.process((bytes_ready/sizeof(uint32_t))) == Progress::InProgress);
|
||||||
while(state.process((sizeof(SplashScreen)/sizeof(uint32_t))) == Progress::InProgress);
|
|
||||||
|
|
||||||
Display::enable();
|
Display::enable();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue