summaryrefslogtreecommitdiffstats
path: root/main/common/i2c.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/common/i2c.c')
-rw-r--r--main/common/i2c.c221
1 files changed, 112 insertions, 109 deletions
diff --git a/main/common/i2c.c b/main/common/i2c.c
index 3982fb0..13736f3 100644
--- a/main/common/i2c.c
+++ b/main/common/i2c.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
@@ -34,126 +34,129 @@
#include "genlib.h"
#include "stddefs.h"
-int i2cVerbose;
+int i2cVerbose;
char *I2cHelp[] = {
- "I-Squared-C Interface Access",
- "[options] {init | show | read addr len | write addr data}",
+ "I-Squared-C Interface Access",
+ "[options] {init | show | read addr len | write addr data}",
#if INCLUDE_VERBOSEHELP
- "Options:",
- " -b burst",
- " -i{##} interface",
- " -w{data} pre-write data as part of read (uses repeated start)",
- " -v verbose",
+ "Options:",
+ " -b burst",
+ " -i{##} interface",
+ " -w{data} pre-write data as part of read (uses repeated start)",
+ " -v verbose",
#endif
- 0,
+ 0,
};
int
I2cCmd(int argc, char *argv[])
{
- char *next;
- uchar buf[256];
- int i, wtot, opt, interface, len, rslt, addr, burst, ret, rwctrl;
+ char *next;
+ uchar buf[256];
+ int i, wtot, opt, interface, len, rslt, addr, burst, ret, rwctrl;
- rslt = 0;
- wtot = 0;
- burst = 0;
- rwctrl = 0;
- interface = 0;
- i2cVerbose = 0;
- ret = CMD_SUCCESS;
- while ((opt=getopt(argc,argv,"bi:vw:")) != -1) {
- switch(opt) {
- case 'i':
- interface = atoi(optarg);
- break;
- case 'b':
- burst = 1; /* Do multiple accesses within one START/STOP */
- break;
- case 'w': /* Pre-write in a read */
- burst = 1;
- rwctrl = REPEATED_START;
- for(wtot=1;wtot<sizeof(buf);wtot++) {
- buf[wtot] = (uchar)strtol(optarg,&next,0);
- if (*next == ',')
- optarg = next+1;
- else
- break;
- }
- buf[0] = wtot;
- break;
- case 'v':
- i2cVerbose = 1;
- break;
- default:
- return(CMD_FAILURE);
- }
- }
+ rslt = 0;
+ wtot = 0;
+ burst = 0;
+ rwctrl = 0;
+ interface = 0;
+ i2cVerbose = 0;
+ ret = CMD_SUCCESS;
+ while((opt=getopt(argc,argv,"bi:vw:")) != -1) {
+ switch(opt) {
+ case 'i':
+ interface = atoi(optarg);
+ break;
+ case 'b':
+ burst = 1; /* Do multiple accesses within one START/STOP */
+ break;
+ case 'w': /* Pre-write in a read */
+ burst = 1;
+ rwctrl = REPEATED_START;
+ for(wtot=1; wtot<sizeof(buf); wtot++) {
+ buf[wtot] = (uchar)strtol(optarg,&next,0);
+ if(*next == ',') {
+ optarg = next+1;
+ } else {
+ break;
+ }
+ }
+ buf[0] = wtot;
+ break;
+ case 'v':
+ i2cVerbose = 1;
+ break;
+ default:
+ return(CMD_FAILURE);
+ }
+ }
- if (argc < (optind+1))
- return(CMD_PARAM_ERROR);
+ if(argc < (optind+1)) {
+ return(CMD_PARAM_ERROR);
+ }
- if (strcmp(argv[optind],"read") == 0) {
- if (argc != (optind+3))
- return(CMD_PARAM_ERROR);
- addr = strtol(argv[optind+1],0,0);
- len = strtol(argv[optind+2],0,0);
- if (len > sizeof(buf))
- len = sizeof(buf);
- if (burst) {
- addr |= rwctrl;
- rslt = i2cRead(interface,addr,buf,len);
- }
- else {
- for(i=0;i<len;i++) {
- rslt = i2cRead(interface,addr,buf+i,1);
- if (rslt < 0)
- break;
- }
- }
- if (rslt < 0) {
- printf("i2cRead = %d\n",rslt);
- ret = CMD_FAILURE;
- }
- else
- printMem(buf,len,1);
- }
- else if (strcmp(argv[optind],"write") == 0) {
- if (rwctrl == REPEATED_START) {
- printf("-w applies to read only\n");
- return(CMD_FAILURE);
- }
- if (argc < (optind+3))
- return(CMD_PARAM_ERROR);
- addr = strtol(argv[optind+1],0,0);
- for(len=0,i=optind+2;i<argc;i++,len++)
- buf[len] = (uchar)strtol(argv[i],0,0);
+ if(strcmp(argv[optind],"read") == 0) {
+ if(argc != (optind+3)) {
+ return(CMD_PARAM_ERROR);
+ }
+ addr = strtol(argv[optind+1],0,0);
+ len = strtol(argv[optind+2],0,0);
+ if(len > sizeof(buf)) {
+ len = sizeof(buf);
+ }
+ if(burst) {
+ addr |= rwctrl;
+ rslt = i2cRead(interface,addr,buf,len);
+ } else {
+ for(i=0; i<len; i++) {
+ rslt = i2cRead(interface,addr,buf+i,1);
+ if(rslt < 0) {
+ break;
+ }
+ }
+ }
+ if(rslt < 0) {
+ printf("i2cRead = %d\n",rslt);
+ ret = CMD_FAILURE;
+ } else {
+ printMem(buf,len,1);
+ }
+ } else if(strcmp(argv[optind],"write") == 0) {
+ if(rwctrl == REPEATED_START) {
+ printf("-w applies to read only\n");
+ return(CMD_FAILURE);
+ }
+ if(argc < (optind+3)) {
+ return(CMD_PARAM_ERROR);
+ }
+ addr = strtol(argv[optind+1],0,0);
+ for(len=0,i=optind+2; i<argc; i++,len++) {
+ buf[len] = (uchar)strtol(argv[i],0,0);
+ }
- if (burst) {
- rslt = i2cWrite(interface,addr,buf,len);
- }
- else {
- for(i=0;i<len;i++) {
- rslt = i2cWrite(interface,addr,buf+i,1);
- if (rslt < 0)
- break;
- }
- }
- if (rslt < 0) {
- printf("i2cWrite = %d\n",rslt);
- ret = CMD_FAILURE;
- }
- }
- else if (strcmp(argv[optind],"init") == 0) {
- i2cCtrl(interface,I2CCTRL_INIT,0,0);
- }
- else if (strcmp(argv[optind],"show") == 0) {
- i2cCtrl(interface,I2CCTRL_SHOW,0,0);
- }
- else
- return(CMD_PARAM_ERROR);
+ if(burst) {
+ rslt = i2cWrite(interface,addr,buf,len);
+ } else {
+ for(i=0; i<len; i++) {
+ rslt = i2cWrite(interface,addr,buf+i,1);
+ if(rslt < 0) {
+ break;
+ }
+ }
+ }
+ if(rslt < 0) {
+ printf("i2cWrite = %d\n",rslt);
+ ret = CMD_FAILURE;
+ }
+ } else if(strcmp(argv[optind],"init") == 0) {
+ i2cCtrl(interface,I2CCTRL_INIT,0,0);
+ } else if(strcmp(argv[optind],"show") == 0) {
+ i2cCtrl(interface,I2CCTRL_SHOW,0,0);
+ } else {
+ return(CMD_PARAM_ERROR);
+ }
- i2cVerbose = 0;
- return(ret);
+ i2cVerbose = 0;
+ return(ret);
}