From fc7aa25c4546e3ec0c800aded356e13c73d5f1ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=5B=20Kristjan=20Komlo=C5=A1i=20HomePC=20=5D?= <[ kristjan.komlosi@gmail.com ]> Date: Sun, 5 Feb 2017 19:01:08 +0100 Subject: [PATCH] =?UTF-8?q?worksgit=20add=20.=C5=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tinio/a.out | Bin 19272 -> 19472 bytes tinio/old.cpp | 302 +++++++++++++++++++++++++++++--------------------- 2 files changed, 174 insertions(+), 128 deletions(-) diff --git a/tinio/a.out b/tinio/a.out index 4e27df1b7ad5eaa58f4b38c59dbb50b5bbc6c2aa..79fbcde02c47337d4e6402a1991600e345c0ed6e 100755 GIT binary patch literal 19472 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 E0kPm(P5=M^ delta 6524 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 diff --git a/tinio/old.cpp b/tinio/old.cpp index 483b613..470cee4 100644 --- a/tinio/old.cpp +++ b/tinio/old.cpp @@ -2,19 +2,19 @@ #include #include #include +#include #include #include #include -#include // Those are flags used for flow control inside the program -uint8_t whichDev=177; // 177 values indicate unset variables. -uint8_t interfaceNum=177; -uint8_t writeFlag=0; -uint8_t readFlag=0; -uint8_t exitFlag=1; -uint8_t pinNumber=177; -uint8_t valueToWrite=177; +uint16_t whichDev = 0; +uint16_t interfaceNum = 0; +uint8_t writeFlag = 0; +uint8_t readFlag = 0; +uint8_t exitFlag = 0; +uint16_t pinNumber = 0; +uint16_t valueToWrite = 0; // those vars are to be used with locateDevice function const uint8_t maxDevs = 16; // 16 connected devices should be enough... const CY_VID_PID deviceVidPid{UINT16(0x04b4), @@ -25,7 +25,6 @@ CY_DEVICE_INFO deviceInfoList[maxDevs]; // vars for deviceOpen function - CY_HANDLE deviceHandleList[maxDevs]; uint8_t defaultInterfaceNum = 0; @@ -41,7 +40,7 @@ int verifyArgNum( int initLib() // initializes the cypress library { - printf("Initializing library..."); + //printf("Initializing library..."); if (CyLibraryInit() != CY_SUCCESS) // if the init procedure fails { puts("The library init failed."); @@ -55,23 +54,27 @@ int initLib() // initializes the cypress library initLib(); // if the library closed gracefully // try to reinitialize } - puts("OK"); + //puts("OK"); return 0; } void usage() { - puts("Tinio test build 1"); + puts("TinI/0 0.1"); puts("Usage:"); - //----TODO----// - // add a command that prints a - // usage summary. + puts("tinio "); + puts("The supported options are:"); + puts("-d - specifies the desired device - integer 0 to 15"); + puts("-i - sets the specified pin to the value specified with -v - integer 0 to 11"); + puts("-r - reads the specified pin's value and prints it to the stdout - integer 0 to 11"); + puts("-v - value for -s option - integer 0 to 255"); } int evalErrors(const CY_RETURN_STATUS error) { int errCast = int(error); switch (errCast) { // evaluates the return status of a function case 0: // everything goes OK - puts("OK"); + //puts("OK"); return 0; break; case 1: // access denied by the OS @@ -118,7 +121,7 @@ int evalErrors(const CY_RETURN_STATUS error) { int locateDevice() // locate the device and verify it's the right one { - printf("Locating devices..."); + //printf("Locating devices..."); try { CY_RETURN_STATUS retVal; retVal = CyGetDeviceInfoVidPid(deviceVidPid, deviceNumList, deviceInfoList, @@ -130,8 +133,6 @@ int locateDevice() // locate the device and verify it's the right one return r; } if (deviceCount > 1) { - puts("More than one device found. The first one will be used unless told " - "otherwise."); return 0; } if (deviceCount == 0) { @@ -153,9 +154,19 @@ int attachDevices() { return 0; } -int setGPIO(int targetPin, uint8_t value) { - int retval = evalErrors(CySetGpioValue(deviceHandleList[whichDev-1], targetPin, value)); - return retval; +int setGPIO() { + if(writeFlag==0) + return -1; + int errval = evalErrors(CySetGpioValue(deviceHandleList[whichDev], pinNumber, valueToWrite)); + return errval; +} +int readGPIO() { + if(readFlag==0) + return -1; + uint8_t value; + int errval= evalErrors(CyGetGpioValue(deviceHandleList[whichDev], pinNumber, &value)); + printf("%i\n", value); + return errval; } int isstrdigit(const char *str) { @@ -167,148 +178,183 @@ int isstrdigit(const char *str) { return 1; } -void unknownOptarg(int option, char *argument) -{ - printf("Error: Unknown option argument -- \'%s\' at option -%c \n", argument, option); +void unknownOptarg(int option, char *argument) { + printf("Error: Unknown option argument -- \'%s\' at option -%c \n", argument, + option); } -void pinNum2HiLo(int number) -{ - printf("Error: The specified pin number - %i is too high.", number); +void pinNum2HiLo(int number) { + printf("Error: The specified pin number - %i is too high.\n", number); puts("Pin numbers must be between 0 and 11"); } -void rwConflict() -{ - puts("Error: Can't write and read at the same time!"); -} +void rwConflict() { puts("Error: Can't write and read at the same time!"); } -void uselessValue() -{ - puts("Error: -v option can't be used when reading!"); -} +void uselessValue() { puts("Error: -v option can't be used when reading!"); } -void value2Hi(int number) -{ - printf("Error: The specified value - %i is too big/small.", number); +void value2Hi(int number) { + printf("Error: The specified value - %i is too big/small.\n", number); puts("Values must be zero or positive integers, smaller than 255."); } -void devNum2Hi(int number) -{ - printf("Error: The specified device number - %i is bigger than 15 or negative\n", number); - puts("Note: The number of allowed devices can be adjusted by manipulating maxDevs"); +void devNum2Hi(int number) { + printf( + "Error: The specified device number - %i is bigger than 15 or negative!\n", + number); + puts("Note: The number of allowed devices can be adjusted by manipulating " + "maxDevs"); puts("variable in the source code."); } - +void intNum2Hi(int number) +{ + printf("Error: The specified interface number - %i is too big! \n", number); + puts("Interface numbers must be unsigned 8-bit integers \n (smaller than 256 and bigger or equal than 0)."); +} void test() { - printf("read: %i | write: %i | pinNumber: %i | valueToWrite: %i \n", readFlag, writeFlag, pinNumber, valueToWrite); + printf("read: %i | write: %i | pinNumber: %i | valueToWrite: %i \n", readFlag, + writeFlag, pinNumber, valueToWrite); printf("whichDev: %i | interfaceNum: %i \n \n", whichDev, interfaceNum); } + + int parseCmdLine(int acount, char **arglist) { int opt; opt = getopt(acount, arglist, "d:s:r:v:i:"); while (opt != -1) { switch (opt) { case 'd': - if(!isstrdigit(optarg)) - { - unknownOptarg(opt, optarg); - } - whichDev = atoi(optarg); - if(whichDev > 15 || whichDev < 0 ) - { - devNum2Hi(whichDev); - whichDev=177; - return -1; - } - break; + if (!isstrdigit(optarg)) { + unknownOptarg(opt, optarg); + } + whichDev = atoi(optarg); + if (whichDev > 15 || whichDev < 0) { + devNum2Hi(whichDev); + whichDev = 0; + exitFlag = 1; + return -1; + } + break; case 's': - if(!isstrdigit(optarg)) - { - unknownOptarg(opt, optarg); - return -1; - } - pinNumber=atoi(optarg); - if(pinNumber > 11) { - pinNum2HiLo(pinNumber); - pinNumber=177; - return -1; - } - if(readFlag == 1){ - rwConflict(); - pinNumber=177; - return -1; - } - writeFlag=1; - readFlag=0; - break; + if (!isstrdigit(optarg)) { + unknownOptarg(opt, optarg); + exitFlag = 1; + return -1; + } + pinNumber = atoi(optarg); + if (pinNumber > 11 || pinNumber < 0) { + pinNum2HiLo(pinNumber); + pinNumber = 0; + exitFlag = 1; + return -1; + } + if (readFlag == 1) { + rwConflict(); + pinNumber = 0; + exitFlag = 1; + return -1; + } + writeFlag = 1; + readFlag = 0; + break; case 'r': - if(!isstrdigit(optarg)) - { - unknownOptarg(opt, optarg); - return -1; - } - pinNumber=atoi(optarg); - if(pinNumber > 11) { - pinNum2HiLo(pinNumber); - pinNumber=177; - return -1; - } - if(writeFlag == 1){ - rwConflict(); - pinNumber=177; - return -1; - } - readFlag=1; - writeFlag=0; - break; + if (!isstrdigit(optarg)) { + unknownOptarg(opt, optarg); + exitFlag = 1; + return -1; + } + pinNumber = atoi(optarg); + if (pinNumber > 11 || pinNumber < 0) { + pinNum2HiLo(pinNumber); + exitFlag = 1; + pinNumber = 0; + return -1; + } + if (writeFlag == 1) { + rwConflict(); + pinNumber = 0; + return -1; + } + readFlag = 1; + writeFlag = 0; + break; case 'i': - if(!isstrdigit(optarg)) - { - unknownOptarg(opt, optarg); - return -1; - } - interfaceNum=atoi(optarg); - break; + if (!isstrdigit(optarg)) { + unknownOptarg(opt, optarg); + exitFlag = 1; + return -1; + } + interfaceNum = atoi(optarg); + if(interfaceNum >255 || interfaceNum < 0) + { + intNum2Hi(interfaceNum); + exitFlag=1; + interfaceNum=0; + return -1; + } + + break; case 'v': - if(!isstrdigit(optarg)) - { - unknownOptarg(opt, optarg); - valueToWrite=177; - writeFlag=0; - return -1; - } - if(readFlag==1) - { - uselessValue(); - valueToWrite=177; - writeFlag=0; - return -1; - } - valueToWrite=atoi(optarg); - if(valueToWrite > 255 || valueToWrite < 0) - { - value2Hi(valueToWrite); - valueToWrite=177; - writeFlag=0; - return -1; - } - + if (!isstrdigit(optarg)) { + unknownOptarg(opt, optarg); + valueToWrite = 0; + exitFlag = 1; + writeFlag = 0; + return -1; + } + if (readFlag == 1) { + uselessValue(); + valueToWrite = 0; + exitFlag = 1; + writeFlag = 0; + return -1; + } + valueToWrite = atoi(optarg); + if (valueToWrite > 255 || valueToWrite < 0) { + value2Hi(valueToWrite); + valueToWrite = 0; + writeFlag = 0; + exitFlag = 1; + return -1; + } } opt = getopt(acount, arglist, "d:s:r:v:i:"); } - + return 0; } + +int exitOnError() +{ + if(exitFlag==1) + { + puts("Exiting"); + exit(-1); + return -1; + } + if((writeFlag | readFlag) == 0) + { + usage(); + exit(-1); + return -1; + } + return 0; +} + + + int main(int argc, char **argv) { + parseCmdLine(argc, argv); + //test(); + exitOnError(); initLib(); locateDevice(); attachDevices(); - parseCmdLine(argc, argv); - test(); + setGPIO(); + readGPIO(); + return 0; + }