summaryrefslogtreecommitdiffstats
path: root/main/common/cf.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/common/cf.c')
-rw-r--r--main/common/cf.c270
1 files changed, 137 insertions, 133 deletions
diff --git a/main/common/cf.c b/main/common/cf.c
index a0cbcd9..6bd28c8 100644
--- a/main/common/cf.c
+++ b/main/common/cf.c
@@ -1,7 +1,7 @@
/**************************************************************************
*
* Copyright (c) 2013 Alcatel-Lucent
- *
+ *
* Alcatel Lucent licenses this file to You under the Apache License,
* Version 2.0 (the "License"); you may not use this file except in
* compliance with the License. A copy of the License is contained the
@@ -28,7 +28,7 @@
* Original author: Ed Sutter (ed.sutter@alcatel-lucent.com)
*
*/
-
+
#include "config.h"
#if INCLUDE_CF
#include "stddefs.h"
@@ -40,112 +40,113 @@
char *CfHelp[] = {
- "Compact Flash Interface",
- "[options] {operation} [args]...",
+ "Compact Flash Interface",
+ "[options] {operation} [args]...",
#if INCLUDE_VERBOSEHELP
- "",
- "Options:",
- " -v enable verbosity",
- "",
- "Operations:",
- " init [prefix]",
- " read {dest} {blk} {blktot}",
- " write {blk} {src} {blktot}",
+ "",
+ "Options:",
+ " -v enable verbosity",
+ "",
+ "Operations:",
+ " init [prefix]",
+ " read {dest} {blk} {blktot}",
+ " write {blk} {src} {blktot}",
#endif
- 0
+ 0
};
-static int cfInum; /* Interface number: to support multiple CF interfaces.
- * Typically this will always be zero.
- */
+static int cfInum; /* Interface number: to support multiple CF interfaces.
+ * Typically this will always be zero.
+ */
int
CfCmd(int argc, char *argv[])
{
- char *cmd, *buf, *prefix, varname[16];
- int opt, verbose, cfret, blknum, blkcnt;
-
- verbose = 0;
- while ((opt=getopt(argc,argv,"i:r:w:v")) != -1) {
- switch(opt) {
- case 'i':
- cfInum = atoi(optarg); /* sticky */
- break;
- case 'v':
- verbose = 1;
- break;
- default:
- return(CMD_PARAM_ERROR);
- }
- }
-
- if (argc < optind + 1)
- return(CMD_PARAM_ERROR);
-
- cmd = argv[optind];
-
- if (strcmp(cmd,"init") == 0) {
- if (argc != optind+2)
- return(CMD_PARAM_ERROR);
-
- prefix = argv[optind+1];
- if (strlen(prefix)+4 > sizeof(varname)) {
- printf("prefix %s too long\n",prefix);
- return(CMD_PARAM_ERROR);
- }
-
- cfret = cfInit(cfInum,verbose);
- if (cfret < 0) {
- printf("cfInit returned %d\n",cfret);
- return(CMD_FAILURE);
- }
-
- sprintf(varname,"%s_RD",prefix);
- shell_sprintf(varname,"0x%lx",(long)cfRead);
-
- sprintf(varname,"%s_WR",prefix);
- shell_sprintf(varname,"0x%lx",(long)cfWrite);
-
- shell_sprintf("CF_BLKSIZ","0x%lx",CF_BLKSIZE);
-
- if (verbose) {
- printf("read: 0x%lx, write: 0x%lx, blksiz: 0x%lx\n",
- (long)cfRead,(long)cfWrite,(long)CF_BLKSIZE,verbose);
- }
- }
- else if (strcmp(cmd,"read") == 0) {
- if (argc != optind+4)
- return(CMD_PARAM_ERROR);
-
- buf = (char *)strtoul(argv[optind+1],0,0);
- blknum = strtoul(argv[optind+2],0,0);
- blkcnt = strtoul(argv[optind+3],0,0);
-
- cfret = cfRead(cfInum,buf,blknum,blkcnt,verbose);
- if (cfret < 0) {
- printf("cfRead returned %d\n",cfret);
- return(CMD_FAILURE);
- }
- }
- else if (strcmp(cmd,"write") == 0) {
- if (argc != optind+4)
- return(CMD_PARAM_ERROR);
- buf = (char *)strtoul(argv[optind+1],0,0);
- blknum = strtoul(argv[optind+2],0,0);
- blkcnt = strtoul(argv[optind+3],0,0);
-
- cfret = cfWrite(cfInum,buf,blknum,blkcnt,verbose);
- if (cfret < 0) {
- printf("cfWrite returned %d\n",cfret);
- return(CMD_FAILURE);
- }
- }
- else {
- printf("cf op <%s> not found\n",cmd);
- return(CMD_FAILURE);
- }
-
- return(CMD_SUCCESS);
+ char *cmd, *buf, *prefix, varname[16];
+ int opt, verbose, cfret, blknum, blkcnt;
+
+ verbose = 0;
+ while((opt=getopt(argc,argv,"i:r:w:v")) != -1) {
+ switch(opt) {
+ case 'i':
+ cfInum = atoi(optarg); /* sticky */
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ default:
+ return(CMD_PARAM_ERROR);
+ }
+ }
+
+ if(argc < optind + 1) {
+ return(CMD_PARAM_ERROR);
+ }
+
+ cmd = argv[optind];
+
+ if(strcmp(cmd,"init") == 0) {
+ if(argc != optind+2) {
+ return(CMD_PARAM_ERROR);
+ }
+
+ prefix = argv[optind+1];
+ if(strlen(prefix)+4 > sizeof(varname)) {
+ printf("prefix %s too long\n",prefix);
+ return(CMD_PARAM_ERROR);
+ }
+
+ cfret = cfInit(cfInum,verbose);
+ if(cfret < 0) {
+ printf("cfInit returned %d\n",cfret);
+ return(CMD_FAILURE);
+ }
+
+ sprintf(varname,"%s_RD",prefix);
+ shell_sprintf(varname,"0x%lx",(long)cfRead);
+
+ sprintf(varname,"%s_WR",prefix);
+ shell_sprintf(varname,"0x%lx",(long)cfWrite);
+
+ shell_sprintf("CF_BLKSIZ","0x%lx",CF_BLKSIZE);
+
+ if(verbose) {
+ printf("read: 0x%lx, write: 0x%lx, blksiz: 0x%lx\n",
+ (long)cfRead,(long)cfWrite,(long)CF_BLKSIZE,verbose);
+ }
+ } else if(strcmp(cmd,"read") == 0) {
+ if(argc != optind+4) {
+ return(CMD_PARAM_ERROR);
+ }
+
+ buf = (char *)strtoul(argv[optind+1],0,0);
+ blknum = strtoul(argv[optind+2],0,0);
+ blkcnt = strtoul(argv[optind+3],0,0);
+
+ cfret = cfRead(cfInum,buf,blknum,blkcnt,verbose);
+ if(cfret < 0) {
+ printf("cfRead returned %d\n",cfret);
+ return(CMD_FAILURE);
+ }
+ } else if(strcmp(cmd,"write") == 0) {
+ if(argc != optind+4) {
+ return(CMD_PARAM_ERROR);
+ }
+ buf = (char *)strtoul(argv[optind+1],0,0);
+ blknum = strtoul(argv[optind+2],0,0);
+ blkcnt = strtoul(argv[optind+3],0,0);
+
+ cfret = cfWrite(cfInum,buf,blknum,blkcnt,verbose);
+ if(cfret < 0) {
+ printf("cfWrite returned %d\n",cfret);
+ return(CMD_FAILURE);
+ }
+ } else {
+ printf("cf op <%s> not found\n",cmd);
+ return(CMD_FAILURE);
+ }
+
+ return(CMD_SUCCESS);
}
#ifdef INCLUDE_CF_DUMMY_FUNCS
@@ -157,49 +158,52 @@ CfCmd(int argc, char *argv[])
int
cfInit(int interface, int verbose)
{
- if (interface != 0) {
- if (verbose)
- printf("cfInit bad interface %d\n",interface);
- return(-1);
- }
-
- return(0);
+ if(interface != 0) {
+ if(verbose) {
+ printf("cfInit bad interface %d\n",interface);
+ }
+ return(-1);
+ }
+
+ return(0);
}
int
cfRead(int interface, char *buf, int blk, int blkcnt, int verbose)
{
- char *from;
- int size;
-
- if (interface != 0) {
- if (verbose)
- printf("cfRead bad interface %d\n",interface);
- return(-1);
- }
-
- from = (char *)(blk * CF_BLKSIZE);
- size = blkcnt * CF_BLKSIZE;
- memcpy(buf,from,size);
- return(0);
+ char *from;
+ int size;
+
+ if(interface != 0) {
+ if(verbose) {
+ printf("cfRead bad interface %d\n",interface);
+ }
+ return(-1);
+ }
+
+ from = (char *)(blk * CF_BLKSIZE);
+ size = blkcnt * CF_BLKSIZE;
+ memcpy(buf,from,size);
+ return(0);
}
int
cfWrite(int interface, char *buf, int blk, int blkcnt, int verbose)
{
- char *to;
- int size;
-
- if (interface != 0) {
- if (verbose)
- printf("cfWrite bad interface %d\n",interface);
- return(-1);
- }
-
- to = (char *)(blk * CF_BLKSIZE);
- size = blkcnt * CF_BLKSIZE;
- memcpy(to,buf,size);
- return(0);
+ char *to;
+ int size;
+
+ if(interface != 0) {
+ if(verbose) {
+ printf("cfWrite bad interface %d\n",interface);
+ }
+ return(-1);
+ }
+
+ to = (char *)(blk * CF_BLKSIZE);
+ size = blkcnt * CF_BLKSIZE;
+ memcpy(to,buf,size);
+ return(0);
}
#endif