Espresso 0.0.1b
This commit is contained in:
38
include/fs/fat16.h
Normal file
38
include/fs/fat16.h
Normal file
@ -0,0 +1,38 @@
|
||||
#ifndef _FAT16_H
|
||||
#define _FAT16_H
|
||||
|
||||
#include <types.h>
|
||||
|
||||
#define FAT16_MAX_FILENAME 256
|
||||
#define FAT16_ATTR_DIRECTORY 0x10
|
||||
|
||||
typedef struct {
|
||||
uint8_t drive;
|
||||
uint32_t fat_start;
|
||||
uint32_t root_dir_start;
|
||||
uint32_t data_start;
|
||||
uint16_t bytes_per_sector;
|
||||
uint8_t sectors_per_cluster;
|
||||
uint16_t root_entry_count;
|
||||
uint32_t current_dir_cluster;
|
||||
} fat16_t;
|
||||
|
||||
typedef struct {
|
||||
char name[FAT16_MAX_FILENAME];
|
||||
uint8_t attr;
|
||||
uint32_t cluster;
|
||||
uint32_t size;
|
||||
} fat16_dir_entry_t;
|
||||
|
||||
int32_t fat16_init(uint8_t drive);
|
||||
|
||||
uint32_t cluster_to_lba(uint16_t cluster);
|
||||
uint16_t fat16_get_fat_entry(uint16_t cluster);
|
||||
uint16_t fat16_alloc_cluster(void);
|
||||
|
||||
int32_t fat16_list_dir(fat16_dir_entry_t* entries, size_t max_entries);
|
||||
int32_t fat16_change_dir(const char* dirname);
|
||||
int32_t fat16_read_file(const char* filename, void* buffer, size_t max_size);
|
||||
int32_t fat16_write_file(const char* filename, const void* data, size_t size);
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user