1/*
2** Copyright 2003, Axel D��rfler, axeld@pinc-software.de. All rights reserved.
3** Distributed under the terms of the MIT License.
4*/
5#ifndef FATFS_H
6#define FATFS_H
7
8
9#include <SupportDefs.h>
10#include <ByteOrder.h>
11
12namespace FATFS {
13
14class Volume;
15
16// mode bits
17#define FAT_READ_ONLY   1
18#define FAT_HIDDEN              2
19#define FAT_SYSTEM              4
20#define FAT_VOLUME              8
21#define FAT_SUBDIR              16
22#define FAT_ARCHIVE             32
23
24#define read32(buffer,off) \
25        B_LENDIAN_TO_HOST_INT32(*(uint32 *)&buffer[off])
26
27#define read16(buffer,off) (buffer[off] + (buffer[off + 1] << 8))
28
29#define write32(buffer, off, value) \
30        *(uint32*)&buffer[off] = B_HOST_TO_LENDIAN_INT32(value)
31
32#define write16(buffer, off, value) \
33        *(uint16*)&buffer[off] = B_HOST_TO_LENDIAN_INT16(value)
34
35enum name_lengths {
36	FATFS_BASENAME_LENGTH	= 8,
37	FATFS_EXTNAME_LENGTH	= 3,
38	FATFS_NAME_LENGTH	= 12,
39};
40
41status_t get_root_block(int fDevice, char *buffer, int32 blockSize, off_t partitionSize);
42
43
44}	// namespace FATFS
45
46#endif	/* FATFS_H */
47
48