|
发表于 2009-1-18 20:44:51
|
显示全部楼层
typedef uint8_t (*sd_raw_interval_handler) (uint8_t* buffer, uint32_t offset, void* p);
uint8_t sd_raw_read(uint32_t offset, uint8_t* buffer, uint16_t length)
{
//......
}
uint8_t sd_raw_read_interval(uint32_t offset, uint8_t* buffer, uint16_t interval, uint16_t length, sd_raw_interval_handler callback, void* p)
{
//......
if(!sd_raw_read(offset, buffer, interval))
return 0;
if(!callback(buffer, offset, p))
return 0;
//......
}
partition = partition_open(sd_raw_read,
sd_raw_read_interval,
sd_raw_write,0);
typedef uint8_t (*device_read_t)(uint32_t offset, uint8_t* buffer, uint16_t length);
typedef uint8_t (*device_read_callback_t)(uint8_t* buffer, uint32_t offset, void* p);
typedef uint8_t (*device_read_interval_t)(uint32_t offset, uint8_t* buffer, uint16_t interval, uint16_t length, device_read_callback_t callback, void* p);
struct partition_struct* partition_open(device_read_t device_read, device_read_interval_t device_read_interval, device_write_t device_write, uint8_t index)
{
//......
new_partition->device_read_interval = device_read_interval;
//......
}
fs->partition->device_read_interval(arg.entry_offset,
buffer,
sizeof(buffer),
arg.byte_count,
fat16_dir_entry_read_callback,
dir_entry);
本贴被 ee168 编辑过,最后修改时间:2009-01-18,20:48:13. |
|