Compact Flash I/O test

Dependencies:   mbed

Committer:
emh203
Date:
Fri Dec 30 21:02:16 2011 +0000
Revision:
1:dc171f34db9b

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emh203 1:dc171f34db9b 1 #include "Terminal.h"
emh203 1:dc171f34db9b 2 #include "DataTypes.h"
emh203 1:dc171f34db9b 3 #include "mbed.h"
emh203 1:dc171f34db9b 4 #include "MODSERIAL.h"
emh203 1:dc171f34db9b 5 #include "diskio.h"
emh203 1:dc171f34db9b 6
emh203 1:dc171f34db9b 7 //*****************************************************************
emh203 1:dc171f34db9b 8 //Terminal Configuration
emh203 1:dc171f34db9b 9 //*****************************************************************
emh203 1:dc171f34db9b 10
emh203 1:dc171f34db9b 11 #define MAX_TERMINAL_LINE_CHARS 64
emh203 1:dc171f34db9b 12 #define MAX_TERMINAL_CMD_CHARS 32
emh203 1:dc171f34db9b 13 #define TERMINAL_QUEUE_SIZE 512
emh203 1:dc171f34db9b 14 #define NUM_TERMINAL_CMDS 3
emh203 1:dc171f34db9b 15
emh203 1:dc171f34db9b 16
emh203 1:dc171f34db9b 17 MODSERIAL pc(USBTX, USBRX,TERMINAL_QUEUE_SIZE,TERMINAL_QUEUE_SIZE); // tx, rx
emh203 1:dc171f34db9b 18
emh203 1:dc171f34db9b 19 Timer DataSpeedTimer;
emh203 1:dc171f34db9b 20
emh203 1:dc171f34db9b 21 typedef void (*TerminalCallback)(char *);
emh203 1:dc171f34db9b 22
emh203 1:dc171f34db9b 23 //These are the terminal command names that map to the callbacks
emh203 1:dc171f34db9b 24 char *TerminalCommands[NUM_TERMINAL_CMDS] = {"help","reboot","dprobe"};
emh203 1:dc171f34db9b 25
emh203 1:dc171f34db9b 26 void TerminalCmd_Help(char *arg);
emh203 1:dc171f34db9b 27 void TerminalCmd_Reboot(char *arg);
emh203 1:dc171f34db9b 28 void TerminalCmd_dprobe(char *arg);
emh203 1:dc171f34db9b 29
emh203 1:dc171f34db9b 30
emh203 1:dc171f34db9b 31 //Probes a disk
emh203 1:dc171f34db9b 32 BOOL dprobe(BYTE Disk);
emh203 1:dc171f34db9b 33 void SpeedTest(BYTE Disk);
emh203 1:dc171f34db9b 34
emh203 1:dc171f34db9b 35 //Populate this array with the callback functions
emh203 1:dc171f34db9b 36 TerminalCallback TerminalCallbacks[NUM_TERMINAL_CMDS] ={
emh203 1:dc171f34db9b 37 TerminalCmd_Help,
emh203 1:dc171f34db9b 38 TerminalCmd_Reboot,
emh203 1:dc171f34db9b 39 TerminalCmd_dprobe
emh203 1:dc171f34db9b 40 };
emh203 1:dc171f34db9b 41
emh203 1:dc171f34db9b 42 //*****************************************************************
emh203 1:dc171f34db9b 43 //Plumbing.....
emh203 1:dc171f34db9b 44 //*****************************************************************
emh203 1:dc171f34db9b 45
emh203 1:dc171f34db9b 46
emh203 1:dc171f34db9b 47 BYTE TerminalInQueueStore[TERMINAL_QUEUE_SIZE];
emh203 1:dc171f34db9b 48 BYTE TerminalOutQueueStore[TERMINAL_QUEUE_SIZE];
emh203 1:dc171f34db9b 49 CHAR TerminalLineBuf[MAX_TERMINAL_LINE_CHARS];
emh203 1:dc171f34db9b 50 BYTE TerminalPos;
emh203 1:dc171f34db9b 51 CHAR TerminalCmdBuf[MAX_TERMINAL_CMD_CHARS+1];
emh203 1:dc171f34db9b 52 CHAR TerminalArgs[MAX_TERMINAL_LINE_CHARS-MAX_TERMINAL_CMD_CHARS];
emh203 1:dc171f34db9b 53 BYTE NextCharIn;
emh203 1:dc171f34db9b 54 BOOL CmdFound;
emh203 1:dc171f34db9b 55
emh203 1:dc171f34db9b 56 void TerminalBootMsg()
emh203 1:dc171f34db9b 57 {
emh203 1:dc171f34db9b 58
emh203 1:dc171f34db9b 59 TERMINAL_PRINTF("\r\n\r\n");
emh203 1:dc171f34db9b 60 TERMINAL_PRINTF("***********************************\r\n");
emh203 1:dc171f34db9b 61 TERMINAL_PRINTF(" /|\r\n");
emh203 1:dc171f34db9b 62 TERMINAL_PRINTF(" ____ __ -- |\r\n");
emh203 1:dc171f34db9b 63 TERMINAL_PRINTF(" (___ \\ \\ \\ _|_\r\n");
emh203 1:dc171f34db9b 64 TERMINAL_PRINTF(" __) )______\\ \\ \r\n");
emh203 1:dc171f34db9b 65 TERMINAL_PRINTF(" / __/( __ )> \\ \r\n");
emh203 1:dc171f34db9b 66 TERMINAL_PRINTF(" | |___ | || |/ ^ \\ \r\n");
emh203 1:dc171f34db9b 67 TERMINAL_PRINTF(" |_____)|_||_/_/ \\_\\ \r\n");
emh203 1:dc171f34db9b 68 TERMINAL_PRINTF(" \r\n");
emh203 1:dc171f34db9b 69 TERMINAL_PRINTF("Active Pickguard \r\n");
emh203 1:dc171f34db9b 70 TERMINAL_PRINTF("Copyright (C) <2011> Eli Hughes\r\n");
emh203 1:dc171f34db9b 71 TERMINAL_PRINTF("Wavenumber LLC\r\n");
emh203 1:dc171f34db9b 72 TERMINAL_PRINTF("***********************************\r\n\r\n>");
emh203 1:dc171f34db9b 73
emh203 1:dc171f34db9b 74 }
emh203 1:dc171f34db9b 75
emh203 1:dc171f34db9b 76 void InitTerminal()
emh203 1:dc171f34db9b 77 {
emh203 1:dc171f34db9b 78 TerminalBootMsg();
emh203 1:dc171f34db9b 79 }
emh203 1:dc171f34db9b 80
emh203 1:dc171f34db9b 81 void TerminalCmd_Help(char *arg)
emh203 1:dc171f34db9b 82 {
emh203 1:dc171f34db9b 83 BYTE i;
emh203 1:dc171f34db9b 84
emh203 1:dc171f34db9b 85 TERMINAL_PRINTF("\r\n\r\bCommandList:\r\n");
emh203 1:dc171f34db9b 86 TERMINAL_PRINTF("----------------------\r\n");
emh203 1:dc171f34db9b 87
emh203 1:dc171f34db9b 88 for(i=0;i<NUM_TERMINAL_CMDS;i++)
emh203 1:dc171f34db9b 89 {
emh203 1:dc171f34db9b 90 TERMINAL_PRINTF("%s\r\n",TerminalCommands[i]);
emh203 1:dc171f34db9b 91 }
emh203 1:dc171f34db9b 92
emh203 1:dc171f34db9b 93 }
emh203 1:dc171f34db9b 94
emh203 1:dc171f34db9b 95 void TerminalCmd_Reboot(char *arg)
emh203 1:dc171f34db9b 96 {
emh203 1:dc171f34db9b 97 TerminalBootMsg();
emh203 1:dc171f34db9b 98 }
emh203 1:dc171f34db9b 99
emh203 1:dc171f34db9b 100 void TerminalCmd_dprobe(char *arg)
emh203 1:dc171f34db9b 101 {
emh203 1:dc171f34db9b 102 if(strcmp(arg,"CF") == 0)
emh203 1:dc171f34db9b 103 {
emh203 1:dc171f34db9b 104 if(dprobe(COMPACT_FLASH)==TRUE)
emh203 1:dc171f34db9b 105 SpeedTest(COMPACT_FLASH);
emh203 1:dc171f34db9b 106 }
emh203 1:dc171f34db9b 107 else if (strcmp(arg,"USB") == 0)
emh203 1:dc171f34db9b 108 {
emh203 1:dc171f34db9b 109 if(dprobe(USB)==TRUE)
emh203 1:dc171f34db9b 110 SpeedTest(USB);
emh203 1:dc171f34db9b 111 }
emh203 1:dc171f34db9b 112 else if (strcmp(arg,"RAM") == 0)
emh203 1:dc171f34db9b 113 {
emh203 1:dc171f34db9b 114 if(dprobe(RAM)==TRUE)
emh203 1:dc171f34db9b 115 SpeedTest(RAM);
emh203 1:dc171f34db9b 116 }
emh203 1:dc171f34db9b 117 else
emh203 1:dc171f34db9b 118 {
emh203 1:dc171f34db9b 119 TERMINAL_PRINTF("\r\nUsage: dprobe DISK\r\n\r\nDISK can be CF, USB or RAM\r\n");
emh203 1:dc171f34db9b 120 }
emh203 1:dc171f34db9b 121 }
emh203 1:dc171f34db9b 122
emh203 1:dc171f34db9b 123
emh203 1:dc171f34db9b 124 void ProcessTerminal()
emh203 1:dc171f34db9b 125 {
emh203 1:dc171f34db9b 126 BYTE i,j;
emh203 1:dc171f34db9b 127 BOOL ArgsFound;
emh203 1:dc171f34db9b 128
emh203 1:dc171f34db9b 129 if(TERMINAL_READABLE)
emh203 1:dc171f34db9b 130 {
emh203 1:dc171f34db9b 131 NextCharIn = TERMINAL_GETC;
emh203 1:dc171f34db9b 132
emh203 1:dc171f34db9b 133 switch(NextCharIn)
emh203 1:dc171f34db9b 134 {
emh203 1:dc171f34db9b 135 case '\r':
emh203 1:dc171f34db9b 136
emh203 1:dc171f34db9b 137 TerminalLineBuf[TerminalPos++] = 0x0;
emh203 1:dc171f34db9b 138 TERMINAL_PUTC(NextCharIn);
emh203 1:dc171f34db9b 139
emh203 1:dc171f34db9b 140 if(TerminalPos > 1)
emh203 1:dc171f34db9b 141 {
emh203 1:dc171f34db9b 142 //find the command
emh203 1:dc171f34db9b 143 i=0;
emh203 1:dc171f34db9b 144 while(TerminalLineBuf[i]>0x20 && TerminalLineBuf[i]<0x7f)
emh203 1:dc171f34db9b 145 {
emh203 1:dc171f34db9b 146 TerminalCmdBuf[i] = TerminalLineBuf[i];
emh203 1:dc171f34db9b 147 i++;
emh203 1:dc171f34db9b 148
emh203 1:dc171f34db9b 149 if(i==MAX_TERMINAL_CMD_CHARS)
emh203 1:dc171f34db9b 150 {
emh203 1:dc171f34db9b 151 break;
emh203 1:dc171f34db9b 152 }
emh203 1:dc171f34db9b 153 }
emh203 1:dc171f34db9b 154
emh203 1:dc171f34db9b 155 TerminalCmdBuf[i] = 0;
emh203 1:dc171f34db9b 156 TerminalCmdBuf[i+1] = 0;
emh203 1:dc171f34db9b 157
emh203 1:dc171f34db9b 158
emh203 1:dc171f34db9b 159 ArgsFound = TRUE;
emh203 1:dc171f34db9b 160 memset(TerminalArgs,0x00,sizeof(TerminalArgs));
emh203 1:dc171f34db9b 161 //scan for num terminator or next non whitespace
emh203 1:dc171f34db9b 162 while(TerminalLineBuf[i]<=0x20 && (i<MAX_TERMINAL_LINE_CHARS))
emh203 1:dc171f34db9b 163 {
emh203 1:dc171f34db9b 164 if(TerminalLineBuf[i] == 0x00)
emh203 1:dc171f34db9b 165 {
emh203 1:dc171f34db9b 166
emh203 1:dc171f34db9b 167 //if we find a NULL terminator before a non whitespace character they flag for no arguments
emh203 1:dc171f34db9b 168 ArgsFound = FALSE;
emh203 1:dc171f34db9b 169 break;
emh203 1:dc171f34db9b 170 }
emh203 1:dc171f34db9b 171 i++;
emh203 1:dc171f34db9b 172 }
emh203 1:dc171f34db9b 173
emh203 1:dc171f34db9b 174 if(ArgsFound == TRUE)
emh203 1:dc171f34db9b 175 {
emh203 1:dc171f34db9b 176 strcpy(TerminalArgs,&TerminalLineBuf[i]);
emh203 1:dc171f34db9b 177
emh203 1:dc171f34db9b 178 //trim trailing whitespace
emh203 1:dc171f34db9b 179 i = sizeof(TerminalArgs)-1;
emh203 1:dc171f34db9b 180
emh203 1:dc171f34db9b 181 while((TerminalArgs[i]<0x21) && (i>0))
emh203 1:dc171f34db9b 182 {
emh203 1:dc171f34db9b 183 TerminalArgs[i]= 0x00;
emh203 1:dc171f34db9b 184 i--;
emh203 1:dc171f34db9b 185 }
emh203 1:dc171f34db9b 186 }
emh203 1:dc171f34db9b 187
emh203 1:dc171f34db9b 188 CmdFound = FALSE;
emh203 1:dc171f34db9b 189 for(j=0;j<NUM_TERMINAL_CMDS;j++)
emh203 1:dc171f34db9b 190 {
emh203 1:dc171f34db9b 191 if(strcmp(TerminalCmdBuf,TerminalCommands[j]) == 0)
emh203 1:dc171f34db9b 192 {
emh203 1:dc171f34db9b 193 TERMINAL_PRINTF("\r\n");
emh203 1:dc171f34db9b 194 if(TerminalCallbacks[j] != NULL)
emh203 1:dc171f34db9b 195 TerminalCallbacks[j](TerminalArgs);
emh203 1:dc171f34db9b 196
emh203 1:dc171f34db9b 197 CmdFound = TRUE;
emh203 1:dc171f34db9b 198 break;
emh203 1:dc171f34db9b 199 }
emh203 1:dc171f34db9b 200 }
emh203 1:dc171f34db9b 201 if(CmdFound == FALSE)
emh203 1:dc171f34db9b 202 {
emh203 1:dc171f34db9b 203 TERMINAL_PRINTF("\r\n%s command not recognized.\r\n",TerminalCmdBuf);
emh203 1:dc171f34db9b 204 }
emh203 1:dc171f34db9b 205 }
emh203 1:dc171f34db9b 206 TERMINAL_PRINTF("\r\n>");
emh203 1:dc171f34db9b 207 TerminalPos = 0;
emh203 1:dc171f34db9b 208
emh203 1:dc171f34db9b 209 break;
emh203 1:dc171f34db9b 210
emh203 1:dc171f34db9b 211 case '\b':
emh203 1:dc171f34db9b 212 if(TerminalPos > 0)
emh203 1:dc171f34db9b 213 {
emh203 1:dc171f34db9b 214 TerminalPos--;
emh203 1:dc171f34db9b 215 TERMINAL_PUTC(NextCharIn);
emh203 1:dc171f34db9b 216 }
emh203 1:dc171f34db9b 217 break;
emh203 1:dc171f34db9b 218
emh203 1:dc171f34db9b 219 default:
emh203 1:dc171f34db9b 220
emh203 1:dc171f34db9b 221 if(TerminalPos == 0 && NextCharIn == 0x020)
emh203 1:dc171f34db9b 222 {
emh203 1:dc171f34db9b 223 //Do nothing if space bar is pressed at beginning of line
emh203 1:dc171f34db9b 224 }
emh203 1:dc171f34db9b 225 else if(NextCharIn >= 0x20 && NextCharIn<0x7F)
emh203 1:dc171f34db9b 226 {
emh203 1:dc171f34db9b 227
emh203 1:dc171f34db9b 228 if(TerminalPos < MAX_TERMINAL_LINE_CHARS-1)
emh203 1:dc171f34db9b 229 {
emh203 1:dc171f34db9b 230 TerminalLineBuf[TerminalPos++] = NextCharIn;
emh203 1:dc171f34db9b 231 TERMINAL_PUTC(NextCharIn);
emh203 1:dc171f34db9b 232 }
emh203 1:dc171f34db9b 233 }
emh203 1:dc171f34db9b 234
emh203 1:dc171f34db9b 235 break;
emh203 1:dc171f34db9b 236
emh203 1:dc171f34db9b 237 }
emh203 1:dc171f34db9b 238 }
emh203 1:dc171f34db9b 239
emh203 1:dc171f34db9b 240 }
emh203 1:dc171f34db9b 241
emh203 1:dc171f34db9b 242
emh203 1:dc171f34db9b 243 #define SECTORS_TO_READ_WRITE 4096
emh203 1:dc171f34db9b 244 BYTE DataBuf[512];
emh203 1:dc171f34db9b 245 BYTE DataBufCheck[512];
emh203 1:dc171f34db9b 246
emh203 1:dc171f34db9b 247 void SpeedTest(BYTE Disk)
emh203 1:dc171f34db9b 248 {
emh203 1:dc171f34db9b 249
emh203 1:dc171f34db9b 250 float DataWriteSpeed = 0;
emh203 1:dc171f34db9b 251 float DataReadSpeed = 0;
emh203 1:dc171f34db9b 252 float DataReadWriteSpeed = 0;
emh203 1:dc171f34db9b 253 int i,j,k;
emh203 1:dc171f34db9b 254
emh203 1:dc171f34db9b 255
emh203 1:dc171f34db9b 256 TERMINAL_PRINTF("\r\nData write test started...\r\n",DataReadSpeed);
emh203 1:dc171f34db9b 257 DataSpeedTimer.reset();
emh203 1:dc171f34db9b 258 DataSpeedTimer.start();
emh203 1:dc171f34db9b 259
emh203 1:dc171f34db9b 260 for(i=0;i<SECTORS_TO_READ_WRITE;i++)
emh203 1:dc171f34db9b 261 {
emh203 1:dc171f34db9b 262 if(disk_write (Disk,&DataBuf[0],i,1) == RES_ERROR)
emh203 1:dc171f34db9b 263 {
emh203 1:dc171f34db9b 264 TERMINAL_PRINTF("Error writing test block %d, stopping.\r\n", i);
emh203 1:dc171f34db9b 265 return;
emh203 1:dc171f34db9b 266 }
emh203 1:dc171f34db9b 267 }
emh203 1:dc171f34db9b 268 DataSpeedTimer.stop();
emh203 1:dc171f34db9b 269
emh203 1:dc171f34db9b 270 DataWriteSpeed = (((SECTORS_TO_READ_WRITE * 512.0)/1024.0))/(DataSpeedTimer.read());
emh203 1:dc171f34db9b 271
emh203 1:dc171f34db9b 272 TERMINAL_PRINTF("Data write speed %.1f kb/s\r\n\r\n",DataWriteSpeed);
emh203 1:dc171f34db9b 273 TERMINAL_PRINTF("Data read test started...\r\n",DataReadSpeed);
emh203 1:dc171f34db9b 274
emh203 1:dc171f34db9b 275 DataSpeedTimer.reset();
emh203 1:dc171f34db9b 276 DataSpeedTimer.start();
emh203 1:dc171f34db9b 277 for(i=0;i<SECTORS_TO_READ_WRITE;i++)
emh203 1:dc171f34db9b 278 {
emh203 1:dc171f34db9b 279 if(disk_read ( Disk,&DataBuf[0],i,1) == RES_ERROR)
emh203 1:dc171f34db9b 280 {
emh203 1:dc171f34db9b 281 TERMINAL_PRINTF("Error reading test block %d, stopping.\r\n", i);
emh203 1:dc171f34db9b 282 return;
emh203 1:dc171f34db9b 283 }
emh203 1:dc171f34db9b 284 }
emh203 1:dc171f34db9b 285 DataSpeedTimer.stop();
emh203 1:dc171f34db9b 286
emh203 1:dc171f34db9b 287 DataReadSpeed = (((SECTORS_TO_READ_WRITE * 512.0)/1024.0))/(DataSpeedTimer.read());
emh203 1:dc171f34db9b 288 TERMINAL_PRINTF("Data read speed %.1f kb/s\r\r\n\n",DataReadSpeed);
emh203 1:dc171f34db9b 289 TERMINAL_PRINTF("Data read/write test started...\r\n",DataReadSpeed);
emh203 1:dc171f34db9b 290
emh203 1:dc171f34db9b 291 DataSpeedTimer.reset();
emh203 1:dc171f34db9b 292 DataSpeedTimer.start();
emh203 1:dc171f34db9b 293
emh203 1:dc171f34db9b 294 for(j=0;j<SECTORS_TO_READ_WRITE;j++)
emh203 1:dc171f34db9b 295 {
emh203 1:dc171f34db9b 296
emh203 1:dc171f34db9b 297 for(i=0;i<512;i++)
emh203 1:dc171f34db9b 298 {
emh203 1:dc171f34db9b 299 DataBuf[i] = rand();
emh203 1:dc171f34db9b 300 DataBufCheck[i] = 0;
emh203 1:dc171f34db9b 301 }
emh203 1:dc171f34db9b 302
emh203 1:dc171f34db9b 303 if(disk_write (Disk,&DataBuf[0],j,1) == RES_ERROR)
emh203 1:dc171f34db9b 304 {
emh203 1:dc171f34db9b 305 TERMINAL_PRINTF("Error writing test block %d, stopping.\r\n", i);
emh203 1:dc171f34db9b 306 return;
emh203 1:dc171f34db9b 307 }
emh203 1:dc171f34db9b 308
emh203 1:dc171f34db9b 309 if(disk_read (Disk,&DataBufCheck[0],j,1) == RES_ERROR)
emh203 1:dc171f34db9b 310 {
emh203 1:dc171f34db9b 311 TERMINAL_PRINTF("Error reading test block %d, stopping.\r\n", i);
emh203 1:dc171f34db9b 312 return;
emh203 1:dc171f34db9b 313 }
emh203 1:dc171f34db9b 314
emh203 1:dc171f34db9b 315
emh203 1:dc171f34db9b 316 for(i=0;i<512;i++)
emh203 1:dc171f34db9b 317 {
emh203 1:dc171f34db9b 318 if(DataBuf[i]!=DataBufCheck[i])
emh203 1:dc171f34db9b 319 {
emh203 1:dc171f34db9b 320 TERMINAL_PRINTF("Readback failure on test block %d byte %d\r\n",j,i);
emh203 1:dc171f34db9b 321
emh203 1:dc171f34db9b 322 for(k=0;k<512;k++)
emh203 1:dc171f34db9b 323 {
emh203 1:dc171f34db9b 324 TERMINAL_PRINTF("k:%d Wrote: %d Read: %d\r\n",k,DataBuf[k],DataBufCheck[k]);
emh203 1:dc171f34db9b 325 break;
emh203 1:dc171f34db9b 326 }
emh203 1:dc171f34db9b 327 return;
emh203 1:dc171f34db9b 328 }
emh203 1:dc171f34db9b 329 }
emh203 1:dc171f34db9b 330 }
emh203 1:dc171f34db9b 331 DataSpeedTimer.stop();
emh203 1:dc171f34db9b 332
emh203 1:dc171f34db9b 333 DataReadWriteSpeed = (((SECTORS_TO_READ_WRITE * 512.0)/1024.0))/(DataSpeedTimer.read());
emh203 1:dc171f34db9b 334 TERMINAL_PRINTF("Data read/write speed %.1f kb/s\r\n",DataReadWriteSpeed);
emh203 1:dc171f34db9b 335 }
emh203 1:dc171f34db9b 336
emh203 1:dc171f34db9b 337 BOOL dprobe(BYTE Disk)
emh203 1:dc171f34db9b 338 {
emh203 1:dc171f34db9b 339 DWORD NumSectors;
emh203 1:dc171f34db9b 340 CHAR ModelName[41] = {0};
emh203 1:dc171f34db9b 341 CHAR SerialNumber[21] = {0};
emh203 1:dc171f34db9b 342 CHAR FirmwareVerion[9] = {0};
emh203 1:dc171f34db9b 343 BOOL RetVal;
emh203 1:dc171f34db9b 344
emh203 1:dc171f34db9b 345 if(disk_status(Disk)&STA_NODISK)
emh203 1:dc171f34db9b 346 {
emh203 1:dc171f34db9b 347 TERMINAL_PRINTF("\r\nDisk not attached");
emh203 1:dc171f34db9b 348 RetVal = FALSE;
emh203 1:dc171f34db9b 349 }
emh203 1:dc171f34db9b 350 else
emh203 1:dc171f34db9b 351 {
emh203 1:dc171f34db9b 352 TERMINAL_PRINTF("\r\n\r\nDisk Detected\r\n\r\n\n");
emh203 1:dc171f34db9b 353 if(disk_initialize(Disk)&STA_NOINIT)
emh203 1:dc171f34db9b 354 {
emh203 1:dc171f34db9b 355 TERMINAL_PRINTF("Disk Failed Initialization\r\n");
emh203 1:dc171f34db9b 356 RetVal = FALSE;
emh203 1:dc171f34db9b 357 }
emh203 1:dc171f34db9b 358 else
emh203 1:dc171f34db9b 359 {
emh203 1:dc171f34db9b 360 TERMINAL_PRINTF("Disk Initialization Success!\r\n");
emh203 1:dc171f34db9b 361
emh203 1:dc171f34db9b 362
emh203 1:dc171f34db9b 363 TERMINAL_PRINTF("Probing attached Disk\r\n");
emh203 1:dc171f34db9b 364 TERMINAL_PRINTF("-----------------------\r\n");
emh203 1:dc171f34db9b 365
emh203 1:dc171f34db9b 366 disk_ioctl (Disk,
emh203 1:dc171f34db9b 367 GET_SECTOR_COUNT,
emh203 1:dc171f34db9b 368 &NumSectors
emh203 1:dc171f34db9b 369 );
emh203 1:dc171f34db9b 370 disk_ioctl (Disk,
emh203 1:dc171f34db9b 371 ATA_GET_MODEL,
emh203 1:dc171f34db9b 372 ModelName
emh203 1:dc171f34db9b 373 );
emh203 1:dc171f34db9b 374 disk_ioctl (Disk,
emh203 1:dc171f34db9b 375 ATA_GET_REV,
emh203 1:dc171f34db9b 376 FirmwareVerion
emh203 1:dc171f34db9b 377 );
emh203 1:dc171f34db9b 378 disk_ioctl (Disk,
emh203 1:dc171f34db9b 379 ATA_GET_SN,
emh203 1:dc171f34db9b 380 SerialNumber
emh203 1:dc171f34db9b 381 );
emh203 1:dc171f34db9b 382
emh203 1:dc171f34db9b 383
emh203 1:dc171f34db9b 384 TERMINAL_PRINTF("Model Name: %s\r\n", ModelName);
emh203 1:dc171f34db9b 385 TERMINAL_PRINTF("Firmware Version: %s\r\n",FirmwareVerion);
emh203 1:dc171f34db9b 386 TERMINAL_PRINTF("Serial Number: %s\r\n",SerialNumber);
emh203 1:dc171f34db9b 387 TERMINAL_PRINTF("Number of Sectors: %d\r\n",NumSectors);
emh203 1:dc171f34db9b 388 RetVal = TRUE;
emh203 1:dc171f34db9b 389 }
emh203 1:dc171f34db9b 390 }
emh203 1:dc171f34db9b 391
emh203 1:dc171f34db9b 392 return RetVal;
emh203 1:dc171f34db9b 393 }