00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00023 #include <stdio.h>
00024 #include <stddef.h>
00025 #include <stdlib.h>
00026 #include <string.h>
00027 #include <ctype.h>
00028 #include <sys/types.h>
00029 #include <sys/socket.h>
00030 #include <netinet/in.h>
00031 #include <arpa/inet.h>
00032 #include <unistd.h>
00033
00034 #include "eripc.h"
00035 #include "eripcclient.h"
00036 #include "eripcpowermgr.h"
00037 #include "eripcparser.h"
00038
00039 int pwrSetAC97(erClientChannel_t channel, int enabled)
00040 {
00041 erIpcCmd_t cmd;
00042
00043 strcpy(cmd.name, "pwrAC97");
00044 cmd.cc = (int) ccPwrAC97;
00045 cmd.nArg = 1;
00046 sprintf(cmd.arg[0], "%d", enabled);
00047
00048 return erIpcSndCommand(channel, &cmd);
00049 }
00050
00065 int pwrGotoIdleMode(erClientChannel_t channel, int MHz, int timeout)
00066 {
00067 erIpcCmd_t cmd;
00068
00069 strcpy(cmd.name, "pwrGotoIdle");
00070 cmd.cc = (int) ccPwrIdleMode;
00071 cmd.nArg = 2;
00072 sprintf(cmd.arg[0], "%d", MHz);
00073 sprintf(cmd.arg[1], "%d", timeout);
00074
00075 return erIpcSndCommand(channel, &cmd);
00076 }
00077
00078
00079
00080
00081
00082 int pwrParseCommand(char *szCommand, erIpcCmd_t * pCmd)
00083 {
00084 int i;
00085 char *pChar;
00086 int cmdcode;
00087 char szToken[TB_MAXCHARONLINE];
00088 int nReqArgs = 0;
00089
00090 pCmd->cc = (int) ccPwrUndefined;
00091 for (i = 0; i < TB_N_ARG; i++)
00092 {
00093 strcpy(pCmd->arg[i], "");
00094 }
00095
00096
00097 pChar = szCommand;
00098 i = 0;
00099 while (*pChar != '\0')
00100 {
00101 szToken[i] = '\0';
00102 if (*pChar == ',')
00103 {
00104 pChar++;
00105 break;
00106 }
00107 szToken[i] = *pChar++;
00108 i++;
00109 szToken[i] = '\0';
00110 }
00111
00112
00113
00114
00115
00116 if (isdigit(szToken[0]))
00117 {
00118 cmdcode = atoi(szToken);
00119 }
00120 else
00121 {
00122 cmdcode = -1;
00123 }
00124 if (strcmp(szToken, "pwrAC97") == 0 || cmdcode == ccPwrAC97)
00125 {
00126 strcpy(pCmd->name, szToken);
00127 pCmd->cc = (int) ccPwrAC97;
00128 nReqArgs = 1;
00129 pCmd->nArg = 1;
00130 }
00140 else if (strcmp(szToken, "pwrGotoIdle") == 0 || cmdcode == ccPwrIdleMode)
00141 {
00142 strcpy(pCmd->name, szToken);
00143 pCmd->cc = (int) ccPwrIdleMode;
00144 nReqArgs = 2;
00145 pCmd->nArg = 2;
00146 }
00147 else {
00148 strcpy(pCmd->name, "Undefined");
00149 pCmd->cc = (int) ccPwrUndefined;
00150 fprintf(stderr, "%s: Command %s \n", __FUNCTION__, szToken);
00151 fprintf(stderr, "Error parsing (%s). Command undefined\n", szCommand);
00152 pCmd->nArg = -1;
00153 return -1;
00154 }
00155
00156 if (nReqArgs > 0)
00157 {
00158 erIpcGetArgs(pChar, pCmd, nReqArgs);
00159 }
00160 return 0;
00161 }