From 4c415d2c81fdea38fa1f42ac5e164a4f79ce2b5e 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 13:46:11 +0100 Subject: [PATCH] parse almost done! --- tinio/a.out | Bin 14768 -> 15016 bytes tinio/old.cpp | 103 ++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 84 insertions(+), 19 deletions(-) diff --git a/tinio/a.out b/tinio/a.out index e9e05ab1e02c290195b293df4ed143dd3dc48cd0..7e28bf2268bd55bc8036263921a1b571c7f1730c 100755 GIT binary patch delta 3142 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 diff --git a/tinio/old.cpp b/tinio/old.cpp index 947f94e..df7ac30 100644 --- a/tinio/old.cpp +++ b/tinio/old.cpp @@ -5,7 +5,16 @@ #include #include #include +#include +// Those are flags used for flow control inside the program +uint8_t whichDev; +uint8_t interfaceNum; +uint8_t writeFlag; +uint8_t readFlag; +uint8_t exitFlag; +uint8_t pinNumber; +uint8_t valueToWrite; // 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), @@ -15,8 +24,8 @@ uint8_t deviceCount; CY_DEVICE_INFO deviceInfoList[maxDevs]; // vars for deviceOpen function -uint8_t whichDev; -uint8_t interfaceNum; + + CY_HANDLE deviceHandleList[maxDevs]; uint8_t defaultInterfaceNum = 0; @@ -158,39 +167,95 @@ int isstrdigit(const char *str) { return 1; } +void unknownOptarg(int option, char *argument) +{ + printf("Unknown option argument -- \'%s\' at option -%c \n", argument, option); +} + +void pinNum2HiLo() +{ + puts("Pin number you specified is too high."); + puts("Pin numbers must be between 0 and 11"); +} + +void rwConflict() +{ + puts("Can't write and read at the same time!"); +} + void test() { char trash; trash = getchar(); CySetGpioValue(deviceHandleList[0], 8, 0); } -int parseCmdLine(int acount, char *const *arglist) { +int parseCmdLine(int acount, char **arglist) { int opt; - while ((opt = getopt(acount, arglist, "d:s:r:v:i:") != -1)) { + opt = getopt(acount, arglist, "d:s:r:v:i:"); + while (opt != -1) { switch (opt) { case 'd': - if (!(isstrdigit(optarg))) { - puts("Unknown argument for switch -d"); - puts("Arguments MUST be integer numbers!"); - return -1; - } - whichDev = atoi(optarg); - break; + if(!isstrdigit(optarg)) + { + unknownOptarg(opt, optarg); + } + whichDev = atoi(optarg); + break; case 's': - if (!(isstrdigit(optarg))) { - puts("Unknown argument for switch -s"); - puts("Arguments MUST be integer numbers!"); - return -1; - } - // TODO complete when set and read GPIO are done - break; + if(!isstrdigit(optarg)) + { + unknownOptarg(opt, optarg); + return -1; } + + if(pinNumber > 11) { + pinNum2HiLo(); + return -1; + } + if(readFlag == 1){ + rwConflict(); + return -1; + } + writeFlag=1; + pinNumber=atoi(optarg); + break; + + case 'r': + if(!isstrdigit(optarg)) + { + unknownOptarg(opt, optarg); + return -1; + } + + if(pinNumber > 11) { + pinNum2HiLo(); + return -1; + } + if(writeFlag == 1){ + rwConflict(); + return -1; + } + readFlag=1; + pinNumber=atoi(optarg); + break; + + case 'i': + if(!isstrdigit(optarg)) + { + unknownOptarg(opt, optarg); + return -1; + } + interfaceNum=atoi(optarg); + break; + } + opt = getopt(acount, arglist, "d:s:r:v:i:"); } } -int main(int argc, char const *argv[]) { +int main(int argc, char **argv) { initLib(); locateDevice(); attachDevices(); + parseCmdLine(argc, argv); // test(); }