1
10
13
14
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
91
92
93
94
95
96
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
...
...
...
#define FX_SOURCE_CODE
#include "fx_api.h"
#include "fx_utility.h"
...
...
ULONG _fx_utility_FAT_sector_get(FX_MEDIA *media_ptr, ULONG cluster)
{
ULONG FAT_sector;
ULONG byte_offset;
#ifdef FX_ENABLE_EXFAT
if (media_ptr -> fx_media_FAT_type == FX_FAT12)
#else
if (media_ptr -> fx_media_12_bit_FAT)
#endif
{
byte_offset = (((ULONG)cluster << 1) + cluster) >> 1;
...}
#ifdef FX_ENABLE_EXFAT
else if (media_ptr -> fx_media_FAT_type == FX_FAT16)
#else
else if (!media_ptr -> fx_media_32_bit_FAT)
#endif
{
byte_offset = (((ULONG)cluster) << 1);
...}
else
{
byte_offset = (((ULONG)cluster) * 4);
}else { ... }
FAT_sector = (byte_offset / media_ptr -> fx_media_bytes_per_sector) +
(ULONG)media_ptr -> fx_media_reserved_sectors;
return(FAT_sector);
}{ ... }