|
@@ -16,8 +16,10 @@
|
|
|
|
|
|
extern struct ringfs fs_archive;
|
|
|
|
|
|
+extern SemaphoreHandle_t log_mutex;
|
|
|
+
|
|
|
//
|
|
|
-void log_get_entry_count(entry_type_t entry_type)
|
|
|
+void log_get_entry_count(void)
|
|
|
{
|
|
|
int count_flash = 0;
|
|
|
|
|
@@ -26,27 +28,24 @@ void log_get_entry_count(entry_type_t entry_type)
|
|
|
}
|
|
|
|
|
|
//
|
|
|
-//void log_get_entry(uint32_t position)
|
|
|
-void log_get_entry(uint32_t position, uint32_t sector, uint32_t slot)
|
|
|
+int log_get_entry(uint32_t index, struct ringfs *fs)
|
|
|
{
|
|
|
- archive_entry_t entry = {0};
|
|
|
-
|
|
|
- int cur_position = fs_archive.cursor_position = position;
|
|
|
- int cur_sector = fs_archive.cursor.sector;
|
|
|
- int cur_slot = fs_archive.cursor.slot;
|
|
|
+ archive_entry_t entry;
|
|
|
+ int start = ringfs_count_estimate(fs);
|
|
|
+
|
|
|
+ fs->cursor_position = start - (index - 1) - 1;
|
|
|
|
|
|
- fs_archive.cursor_position = position;
|
|
|
- fs_archive.cursor.sector = sector;
|
|
|
- fs_archive.cursor.slot = slot;
|
|
|
+ if (fs->cursor_position < 0)
|
|
|
+ return -1;
|
|
|
+ else
|
|
|
+ {
|
|
|
+ fs->cursor.sector = (fs->read.sector + fs->cursor_position/fs->slots_per_sector)%fs->flash->sector_count;
|
|
|
+ fs->cursor.slot = fs->cursor_position%fs->slots_per_sector;
|
|
|
+ }
|
|
|
|
|
|
log_fetch(&entry, ARCHIVE_ENTRY, portMAX_DELAY);
|
|
|
|
|
|
- fs_archive.cursor_position = cur_position;
|
|
|
- fs_archive.cursor.sector = cur_sector;
|
|
|
- fs_archive.cursor.slot = cur_slot;
|
|
|
-
|
|
|
printf("[entry] timestamp = % " PRId64 ", value = %u, crc = %u\r\n", entry.timestamp, entry.input_value, entry.crc);
|
|
|
+
|
|
|
+ return 0;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|