Implement file system API and add shutdown functionality for desktop builds
This commit is contained in:
+27
-12
@@ -1,9 +1,10 @@
|
||||
#ifndef NOVA64_CORE_H
|
||||
#define NOVA64_CORE_H
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
|
||||
// Cross-platform DLL export/import visibility macros
|
||||
#if defined(_WIN32) || defined(__CYGWIN__)
|
||||
@@ -42,16 +43,27 @@ typedef void (*nova64_audio_output_cb_t)(const int16_t *samples,
|
||||
uint32_t count);
|
||||
|
||||
/**
|
||||
* @brief Callback to read sectors from the SD card.
|
||||
* @param sector_idx The zero-based sector index to read.
|
||||
* @param destination_buffer Pointer to memory where sector data should be
|
||||
* copied.
|
||||
* @param sector_count Number of 512-byte sectors to read.
|
||||
* @return True on success, false on read error.
|
||||
* @brief Callback to read data from the SD card.
|
||||
* @param slot_idx Zero-based cartridge slot index.
|
||||
* @param file_path Null-terminated path to the file to read.
|
||||
* @param destination_buffer Pointer to memory where file data should be copied.
|
||||
* @param destination_length Maximum number of bytes available in the
|
||||
* destination buffer.
|
||||
* @return Number of bytes read on success, negative value on read error.
|
||||
*/
|
||||
typedef bool (*nova64_sd_read_sector_cb_t)(uint32_t sector_idx,
|
||||
uint8_t *destination_buffer,
|
||||
uint32_t sector_count);
|
||||
typedef int32_t (*nova64_sd_read_file_cb_t)(uint32_t slot_idx,
|
||||
const char *file_path,
|
||||
uint8_t *destination_buffer,
|
||||
uint32_t destination_length);
|
||||
|
||||
/**
|
||||
* @brief Callback to retrieve the size of a file on the SD card.
|
||||
* @param slot_idx Zero-based cartridge slot index.
|
||||
* @param file_path Null-terminated path to the file.
|
||||
* @return File size in bytes on success, negative value on error.
|
||||
*/
|
||||
typedef int32_t (*nova64_sd_get_file_size_cb_t)(uint32_t slot_idx,
|
||||
const char *file_path);
|
||||
|
||||
/**
|
||||
* @brief Callback triggered when a cartridge state change occurs (e.g.
|
||||
@@ -60,7 +72,7 @@ typedef bool (*nova64_sd_read_sector_cb_t)(uint32_t sector_idx,
|
||||
* @param is_inserted True if a cartridge is detected, false if ejected.
|
||||
*/
|
||||
typedef void (*nova64_cartridge_status_cb_t)(uint32_t slot_idx,
|
||||
bool is_inserted);
|
||||
bool is_inserted);
|
||||
|
||||
/**
|
||||
* @brief Callback for core log output.
|
||||
@@ -79,7 +91,8 @@ typedef void (*nova64_log_cb_t)(const char *message);
|
||||
typedef struct {
|
||||
nova64_display_flush_cb_t display_flush;
|
||||
nova64_audio_output_cb_t audio_output;
|
||||
nova64_sd_read_sector_cb_t sd_read_sector;
|
||||
nova64_sd_read_file_cb_t sd_read_file;
|
||||
nova64_sd_get_file_size_cb_t sd_get_file_size;
|
||||
nova64_cartridge_status_cb_t cartridge_status;
|
||||
nova64_log_cb_t log_message;
|
||||
} nova64_io_interface_t;
|
||||
@@ -104,11 +117,13 @@ NOVA64_API bool nova64_init(const nova64_io_interface_t *io_interface);
|
||||
*/
|
||||
NOVA64_API int32_t nova64_main();
|
||||
|
||||
#if defined(NOVA64_SHUTDOWN_AVAILABLE)
|
||||
/**
|
||||
* @brief Requests shutdown of the FreeRTOS scheduler.
|
||||
* @return True if the shutdown request was issued, false otherwise.
|
||||
*/
|
||||
NOVA64_API bool nova64_shutdown(void);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Retrieves the engine version integer.
|
||||
|
||||
Reference in New Issue
Block a user