diff options
author | Björn Stenberg <bjorn@haxx.se> | 2002-10-22 15:06:08 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2002-10-22 15:06:08 +0000 |
commit | 46ddacf533b2b154373f0ac98c85b4ac172ccfa6 (patch) | |
tree | db40164976c9993e1b12a60bb63320a0aa382390 /firmware/test | |
parent | a901c3a433125a939bef9caf6a8219f97f395fc7 (diff) | |
download | rockbox-46ddacf533b2b154373f0ac98c85b4ac172ccfa6.tar.gz rockbox-46ddacf533b2b154373f0ac98c85b4ac172ccfa6.zip |
Fat32 write updates: Nixed some bugs. Basic file creation now works. Todo: Long filenames and extensive test cases.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2742 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/test')
-rw-r--r-- | firmware/test/fat/ata-sim.c | 8 | ||||
-rw-r--r-- | firmware/test/fat/main.c | 42 |
2 files changed, 19 insertions, 31 deletions
diff --git a/firmware/test/fat/ata-sim.c b/firmware/test/fat/ata-sim.c index a37fabcfc0..a64e0a4d4d 100644 --- a/firmware/test/fat/ata-sim.c +++ b/firmware/test/fat/ata-sim.c | |||
@@ -9,7 +9,7 @@ static FILE* file; | |||
9 | 9 | ||
10 | int ata_read_sectors(unsigned long start, unsigned char count, void* buf) | 10 | int ata_read_sectors(unsigned long start, unsigned char count, void* buf) |
11 | { | 11 | { |
12 | DEBUGF("Reading block 0x%lx\n",start); | 12 | DEBUGF("[Reading block 0x%lx]\n",start); |
13 | if(fseek(file,start*BLOCK_SIZE,SEEK_SET)) { | 13 | if(fseek(file,start*BLOCK_SIZE,SEEK_SET)) { |
14 | perror("fseek"); | 14 | perror("fseek"); |
15 | return -1; | 15 | return -1; |
@@ -17,14 +17,14 @@ int ata_read_sectors(unsigned long start, unsigned char count, void* buf) | |||
17 | if(!fread(buf,BLOCK_SIZE,count,file)) { | 17 | if(!fread(buf,BLOCK_SIZE,count,file)) { |
18 | printf("Failed reading %d blocks starting at block 0x%lx\n",count,start); | 18 | printf("Failed reading %d blocks starting at block 0x%lx\n",count,start); |
19 | perror("fread"); | 19 | perror("fread"); |
20 | return -1; | 20 | return -2; |
21 | } | 21 | } |
22 | return 0; | 22 | return 0; |
23 | } | 23 | } |
24 | 24 | ||
25 | int ata_write_sectors(unsigned long start, unsigned char count, void* buf) | 25 | int ata_write_sectors(unsigned long start, unsigned char count, void* buf) |
26 | { | 26 | { |
27 | DEBUGF("Writing block 0x%lx\n",start); | 27 | DEBUGF("[Writing block 0x%lx]\n",start); |
28 | 28 | ||
29 | if (start == 0) { | 29 | if (start == 0) { |
30 | DEBUGF("Holy crap! You're writing on sector 0!\n"); | 30 | DEBUGF("Holy crap! You're writing on sector 0!\n"); |
@@ -37,7 +37,7 @@ int ata_write_sectors(unsigned long start, unsigned char count, void* buf) | |||
37 | } | 37 | } |
38 | if(!fwrite(buf,BLOCK_SIZE,count,file)) { | 38 | if(!fwrite(buf,BLOCK_SIZE,count,file)) { |
39 | perror("fwrite"); | 39 | perror("fwrite"); |
40 | return -1; | 40 | return -2; |
41 | } | 41 | } |
42 | return 0; | 42 | return 0; |
43 | } | 43 | } |
diff --git a/firmware/test/fat/main.c b/firmware/test/fat/main.c index 1b9fd22183..91e7444999 100644 --- a/firmware/test/fat/main.c +++ b/firmware/test/fat/main.c | |||
@@ -19,6 +19,7 @@ void panicf( char *fmt, ...) | |||
19 | { | 19 | { |
20 | va_list ap; | 20 | va_list ap; |
21 | va_start( ap, fmt ); | 21 | va_start( ap, fmt ); |
22 | printf("***PANIC*** "); | ||
22 | vprintf( fmt, ap ); | 23 | vprintf( fmt, ap ); |
23 | va_end( ap ); | 24 | va_end( ap ); |
24 | exit(0); | 25 | exit(0); |
@@ -82,17 +83,20 @@ void dbg_dir(char* currdir) | |||
82 | } | 83 | } |
83 | } | 84 | } |
84 | 85 | ||
85 | void dbg_mkfile(char* name) | 86 | void dbg_mkfile(char* name, int num) |
86 | { | 87 | { |
87 | char* text = "Detta är en dummy-text\n"; | 88 | char text[800]; |
88 | int i; | 89 | int i; |
89 | int fd = open(name,O_WRONLY); | 90 | int fd = open(name,O_WRONLY); |
90 | if (fd<0) { | 91 | if (fd<0) { |
91 | DEBUGF("Failed creating file\n"); | 92 | DEBUGF("Failed creating file\n"); |
92 | return; | 93 | return; |
93 | } | 94 | } |
94 | for (i=0;i<200;i++) | 95 | for (i=0; i<sizeof(text)/4; i++ ) |
95 | if (write(fd, text, strlen(text)) < 0) | 96 | sprintf(text+i*4,"%03x,",i); |
97 | |||
98 | for (i=0;i<num;i++) | ||
99 | if (write(fd, text, sizeof(text)) < 0) | ||
96 | DEBUGF("Failed writing data\n"); | 100 | DEBUGF("Failed writing data\n"); |
97 | 101 | ||
98 | close(fd); | 102 | close(fd); |
@@ -137,27 +141,7 @@ void dbg_tail(char* name) | |||
137 | return; | 141 | return; |
138 | DEBUGF("Got file descriptor %d\n",fd); | 142 | DEBUGF("Got file descriptor %d\n",fd); |
139 | 143 | ||
140 | rc = lseek(fd,512,SEEK_SET); | 144 | rc = lseek(fd,-512,SEEK_END); |
141 | if ( rc >= 0 ) { | ||
142 | rc = read(fd, buf, SECTOR_SIZE); | ||
143 | if( rc > 0 ) | ||
144 | { | ||
145 | buf[rc]=0; | ||
146 | printf("%d: %s\n", strlen(buf), buf); | ||
147 | } | ||
148 | else if ( rc == 0 ) { | ||
149 | DEBUGF("EOF\n"); | ||
150 | } | ||
151 | else | ||
152 | { | ||
153 | DEBUGF("Failed reading file: %d\n",rc); | ||
154 | } | ||
155 | } | ||
156 | else { | ||
157 | perror("lseek"); | ||
158 | } | ||
159 | |||
160 | rc = lseek(fd,-100,SEEK_CUR); | ||
161 | if ( rc >= 0 ) { | 145 | if ( rc >= 0 ) { |
162 | rc = read(fd, buf, SECTOR_SIZE); | 146 | rc = read(fd, buf, SECTOR_SIZE); |
163 | if( rc > 0 ) | 147 | if( rc > 0 ) |
@@ -284,6 +268,8 @@ void dbg_console(void) | |||
284 | } | 268 | } |
285 | } | 269 | } |
286 | 270 | ||
271 | extern void ata_exit(void); | ||
272 | |||
287 | int main(int argc, char *argv[]) | 273 | int main(int argc, char *argv[]) |
288 | { | 274 | { |
289 | int rc,i; | 275 | int rc,i; |
@@ -325,12 +311,14 @@ int main(int argc, char *argv[]) | |||
325 | //dbg_console(); | 311 | //dbg_console(); |
326 | //dbg_dir("/"); | 312 | //dbg_dir("/"); |
327 | #if 1 | 313 | #if 1 |
328 | dbg_head("/bepa.txt"); | 314 | dbg_tail("/depa.txt"); |
329 | #else | 315 | #else |
330 | dbg_mkfile("/bepa.txt"); | 316 | dbg_mkfile("/depa.txt", 10); |
331 | #endif | 317 | #endif |
332 | dbg_dir("/"); | 318 | dbg_dir("/"); |
333 | 319 | ||
320 | ata_exit(); | ||
321 | |||
334 | return 0; | 322 | return 0; |
335 | } | 323 | } |
336 | 324 | ||