Skip to content

Commit e91ed3c

Browse files
authored
Merge pull request #76 from Sylensky/feature/dynamic-object-loading
load star database items dynamically
2 parents 5230ec1 + 4458d4b commit e91ed3c

File tree

14 files changed

+935
-40
lines changed

14 files changed

+935
-40
lines changed

esp32_wireless_control/firmware/catalogues/bsc5/bsc5ra.cpp

Lines changed: 338 additions & 9 deletions
Large diffs are not rendered by default.

esp32_wireless_control/firmware/catalogues/bsc5/bsc5ra.h

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,27 @@ class BSC5 : public StarDatabaseInterface
7878
void printDatabaseInfo() const override;
7979
size_t getTotalObjectCount() const override;
8080

81+
// Pagination support
82+
bool loadPage(size_t page_index, size_t page_size = 32) override;
83+
bool isPageLoaded(size_t page_index) const override;
84+
size_t getCurrentPageCount() const override;
85+
size_t getPageSize() const override;
86+
void clearLoadedPages() override;
87+
void clearOldestPage(); // Helper to manage memory during search
88+
8189
private:
8290
const uint8_t* _start; // Start of raw data
8391
const uint8_t* _end; // End of raw data
8492
size_t _star_count;
85-
std::vector<BSC5Entry> _binary_entries;
93+
94+
// Pagination state
95+
size_t _page_size;
96+
std::vector<size_t> _loaded_pages; // Track which pages are loaded
97+
std::vector<BSC5Entry> _binary_entries; // Now contains only loaded pages
98+
99+
// Binary format metadata
100+
bool _is_compact;
101+
size_t _header_size;
86102

87103
// Helper methods
88104
bool begin_binary(const uint8_t* data, size_t len);
@@ -91,6 +107,16 @@ class BSC5 : public StarDatabaseInterface
91107

92108
bool parseStarFromBinary(size_t index, BSC5Entry& star) const;
93109
bool convertStarToUnified(const BSC5Entry& star, StarUnifiedEntry& unified) const;
110+
111+
// Pagination helpers
112+
size_t calculateStarOffset(size_t star_index) const;
113+
bool loadStarAtIndex(size_t global_index, BSC5Entry& star) const;
114+
size_t getPageForIndex(size_t global_index) const;
115+
size_t getLocalIndexInPage(size_t global_index, size_t page_index) const;
116+
117+
// Full catalog search methods
118+
bool findByNameInAllPages(const String& name, StarUnifiedEntry& result) const;
119+
bool findByNameFragmentInAllPages(const String& name_fragment, StarUnifiedEntry& result) const;
94120
};
95121

96122
extern BSC5 bsc5;

0 commit comments

Comments
 (0)