Index: emcore/trunk/export/syscallwrappers.h |
— | — | @@ -222,6 +222,7 @@ |
223 | 223 | #define read_battery_state __emcore_syscall->read_battery_state |
224 | 224 | #define tlsf_realign __emcore_syscall->tlsf_realign |
225 | 225 | #define realign __emcore_syscall->realign |
| 226 | +#define fat_size_mv __emcore_syscall->fat_size_mv |
226 | 227 | |
227 | 228 | |
228 | 229 | #endif |
Index: emcore/trunk/export/syscallapi.h |
— | — | @@ -280,6 +280,7 @@ |
281 | 281 | typeof(read_battery_state) *read_battery_state; |
282 | 282 | typeof(tlsf_realign) *tlsf_realign; |
283 | 283 | typeof(realign) *realign; |
| 284 | + typeof(fat_size_mv) *fat_size_mv; |
284 | 285 | }; |
285 | 286 | |
286 | 287 | |
Index: emcore/trunk/syscallapi.c |
— | — | @@ -244,5 +244,8 @@ |
245 | 245 | .read_input_mw = read_input_mw, |
246 | 246 | .read_battery_state = read_battery_state, |
247 | 247 | .tlsf_realign = tlsf_realign, |
248 | | - .realign = realign |
| 248 | + .realign = realign, |
| 249 | +#ifdef HAVE_STORAGE |
| 250 | + .fat_size_mv = fat_size_mv |
| 251 | +#endif |
249 | 252 | }; |
Index: emcore/trunk/usb/usb.c |
— | — | @@ -629,6 +629,7 @@ |
630 | 630 | case 51: // DISK_UNMOUNT
|
631 | 631 | #endif
|
632 | 632 | case 58: // FAT_ENABLE_FLUSHING
|
| 633 | + case 59: // FAT_SIZE
|
633 | 634 | if (!set_dbgaction(DBGACTION_STORAGE, 0))
|
634 | 635 | memcpy(dbgasyncsendbuf, dbgrecvbuf, sizeof(dbgasyncsendbuf));
|
635 | 636 | break;
|
— | — | @@ -951,6 +952,11 @@ |
952 | 953 | fat_enable_flushing((bool)(dbgasyncsendbuf[1]));
|
953 | 954 | usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
|
954 | 955 | break;
|
| 956 | + case 59: // FAT_SIZE
|
| 957 | + dbgasyncsendbuf[0] = 1;
|
| 958 | + fat_size_mv(dbgasyncsendbuf[1], &dbgasyncsendbuf[1], &dbgasyncsendbuf[2]);
|
| 959 | + usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
|
| 960 | + break;
|
955 | 961 | }
|
956 | 962 | break;
|
957 | 963 | #endif
|
Index: emcore/trunk/fat.c |
— | — | @@ -250,11 +250,8 @@ |
251 | 251 | + fat_bpb->firstdatasector;
|
252 | 252 | }
|
253 | 253 |
|
254 | | -void fat_size(IF_MV2(int volume,) unsigned long* size, unsigned long* free)
|
| 254 | +void fat_size_mv(int volume, unsigned long* size, unsigned long* free)
|
255 | 255 | {
|
256 | | -#ifndef HAVE_MULTIVOLUME
|
257 | | - const int volume = 0;
|
258 | | -#endif
|
259 | 256 | struct bpb* fat_bpb = &fat_bpbs[volume];
|
260 | 257 | if (size)
|
261 | 258 | *size = fat_bpb->dataclusters * (fat_bpb->bpb_secperclus * SECTOR_SIZE / 1024);
|
— | — | @@ -262,6 +259,14 @@ |
263 | 260 | *free = fat_bpb->fsinfo.freecount * (fat_bpb->bpb_secperclus * SECTOR_SIZE / 1024);
|
264 | 261 | }
|
265 | 262 |
|
| 263 | +void fat_size(IF_MV2(int volume,) unsigned long* size, unsigned long* free)
|
| 264 | +{
|
| 265 | +#ifndef HAVE_MULTIVOLUME
|
| 266 | + const int volume = 0;
|
| 267 | +#endif
|
| 268 | + fat_size_mv(volume, size, free);
|
| 269 | +}
|
| 270 | +
|
266 | 271 | void fat_init(void)
|
267 | 272 | {
|
268 | 273 | unsigned int i;
|
Index: emcore/trunk/fat.h |
— | — | @@ -19,13 +19,22 @@ |
20 | 20 | *
|
21 | 21 | ****************************************************************************/
|
22 | 22 |
|
| 23 | +
|
23 | 24 | #ifndef FAT_H
|
24 | 25 | #define FAT_H
|
25 | 26 |
|
26 | | -#ifndef IN_APPLICATION_CODE
|
27 | 27 |
|
28 | 28 | #include "global.h"
|
29 | 29 | #include "util.h"
|
| 30 | +
|
| 31 | +
|
| 32 | +extern void fat_size_mv(int volume, unsigned long* size, unsigned long* free);
|
| 33 | +extern void fat_enable_flushing(bool state);
|
| 34 | +
|
| 35 | +
|
| 36 | +#ifndef IN_APPLICATION_CODE
|
| 37 | +
|
| 38 | +
|
30 | 39 | #include "mv.h" /* for volume definitions */
|
31 | 40 |
|
32 | 41 | #ifndef SECTOR_SIZE
|
— | — | @@ -134,8 +143,8 @@ |
135 | 144 | extern void* fat_get_sector_buffer(void);
|
136 | 145 | extern void fat_release_sector_buffer(void);
|
137 | 146 |
|
| 147 | +
|
138 | 148 | #endif
|
139 | 149 |
|
140 | | -extern void fat_enable_flushing(bool state);
|
141 | 150 |
|
142 | 151 | #endif
|