summaryrefslogtreecommitdiff
path: root/firmware/test
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-10-22 15:06:08 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-10-22 15:06:08 +0000
commit46ddacf533b2b154373f0ac98c85b4ac172ccfa6 (patch)
treedb40164976c9993e1b12a60bb63320a0aa382390 /firmware/test
parenta901c3a433125a939bef9caf6a8219f97f395fc7 (diff)
downloadrockbox-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.c8
-rw-r--r--firmware/test/fat/main.c42
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
10int ata_read_sectors(unsigned long start, unsigned char count, void* buf) 10int 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
25int ata_write_sectors(unsigned long start, unsigned char count, void* buf) 25int 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
85void dbg_mkfile(char* name) 86void 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
271extern void ata_exit(void);
272
287int main(int argc, char *argv[]) 273int 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