From e0a6c665e926ae5ed03dd813ca0f37d0073d131b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=5B=20Kristjan=20Komlo=C5=A1i=20HomePC=20=5D?= <[ kristjan.komlosi@gmail.com ]> Date: Wed, 1 Feb 2017 17:34:40 +0100 Subject: [PATCH] started working on arguments parsing --- tinio/a.out | Bin 14464 -> 14768 bytes tinio/old.cpp | 86 ++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 65 insertions(+), 21 deletions(-) diff --git a/tinio/a.out b/tinio/a.out index 0c0984ba4e90c61b117665083d4273bc77df251f..e9e05ab1e02c290195b293df4ed143dd3dc48cd0 100755 GIT binary patch delta 5300 zcmZu#3v`sl75@L-Y~GLEO~NLSu$u&sN679*LNJO3!s;Ik8bC#g5MmNwk(Xo>u?07} zV%f$$4GenH^cAd+$ng=Ra1bj5K_1%n1eF$S?I9F((*&hp!-A3RcjuoUmdKnlbLW2d z&b>2t=AXyk^mu1|ONO~LQR1moCDIz_=JBt^WvE~o^+KT zO4kb$>)E^V$CXD0ia+`F{VB8T-z@K$zP@VKu3P4-Plyn|$i=hqK;!>5{qc({Gd6aXE_xbs5Z|k79@PXTBr(WHp9F5AYb=BYG^vr^L#ToQQe5PY$ivDP6y*7$Zd zJ2o%V2&0rKbz5zm(kvNRAl8zp`6l>ugfx}C52Fs{EwScn0a%%;X$yru{{O%YOa1imQ(Pm916 zUw^F9Y&el-la!5J9$mOw@g0gicugZ*^a(`a(VwAAv6iAn{4$dFo(?08{>V!Jji9^#jlN5<&fw5(u&4wK zL>^Seg%tmniZ7Jhn2yNbm&&>l^5QN-T?rIjNM-#ARymU;CXQKf0GQNpi{hKQ-;COW zXy!>&ny3C0crXcF3o0lU9yYWBkS`vj`B_qsVttnP6Fr$`gi+sJQbR)TB4{pAyVGoV z(#!&hMcxc_bPwqU+kb$uJ`@|fQeNnKw##!TTALsaMqdqwQ6EY5E2Q;8gjUQRn)be2 zC?t@=DN^`7JOQ|Z84ex=z&$KHNWBOA6~Q|ID}k7)=ZJZQDM@y(6CrGl(kV6Fh|?&F zr`#PrjRt2;hG-3j795}XG!epml~n3RGaQKJX@{l>lEpj&jzn}jw{ zn?{~}S7c8tab?7THj}>OcLkeWL9pYoCj73mz71z3kD+$Npk-_ zRegst7Kl~k>o>yO&*zfEZq!z)u5bH*d;TTa9*-vKjI2B28YJV;bE$f_y9S?Hh>$9+ zN+9h+k|_bNVLr?$fk`^(*}3JTq{5fu)fDm+1yPsczu^BXy3}_CJv|c4#Y*zKLcR?l zii9iFm*8^^%6(h;oT^i%_&0Zg%x!32eu*PYfBnS+$EB;@YYF1^|jT~ zXgAxQI?}ri(V^Y@PyY*t4}t!9AROKbI(R7@?gzDm!r?@08_l5kpxZ$!Krh1k^PmIp z_D4`!y`O=80s0+i9KMD$Y%FfjNuY0lJ^-49MerL?ajdf9v`n32fXzuOh(7;aI4sHR zxwKq4mc5>4mG$gcnpHRN68lfuNZmu1SbX|8@2)tTG-5+NaKJ(sHxg-C^^ z*A-Sk;T#Msj+E;bTyyX|_QtkS))y#&ET$I~^)|6;_rF0U(r$l=R zC9{sTjl5G{#!ij2=5)}-0EsRTlpdz&Aqj&1Wm@fWh?QHdxKO*TZ+q_+7vYBlT_R|s zpw9{VqM)w|x?9l0g8og=uLK%v3>k}mhQ8|fuv(pWFd=jPX>Fm@cdfYp=nj>4P zbv)4~E>DJUfar+$86QhENxqngTk z##pMS2;v9^vPxz}JZFhSn;j&sE$jg@wSX;?h`zn+$0`5he)y zEE-S{r5u}zl&PeF>;L$reUbDrfT1t#FmPc32H3xDiI-E^=CPLYTo|JHA3D!T2$&I$ zhd%M`(B~Z*61gd4EpryPmh~g|^SSgf-sxn?CO)n@bu7})NGb<-xs{ilR2Ci=`pqI( z^m~EQ7r<$j+K0^2pq|~Io34{4vZu#crSZ4-)9)!!YZrT0{nPcN$~EGR4}V%-y7 z9`zGvVSU|-x*89fqgA8$A#$VQ+I&Z%dzGhd?UL%6y89YdvTgacWQV)H-m|vWz0~cg zytjtEpP$Fh<-1~^Smv%-24l=QafXS0tK48}r)Q#7CZ}tv*VfmSt*otZuc~ub-dkBC zRaLEUKUz~&Q{Pav#J$SBb7#R{WOf=q8k!uZcJxTilTWnZHY)4coa}?XMwf(M>P^4g)N_ok( rnu;^zPWG$fyW&sURN0hxcBXi8yisf-4g<@bGC8i)p-LyP9;fyH`KlfY delta 4625 zcmZu#4OEm>8ouBB2#gHO3@|e!FdyI#5->~(VP#>84IWNPWtyd+hK0+LCbZSo4vBUc ziPPBK-OAP$Pi>w&of9p^q0J1_gH)##)?;gF8*SE^Inb`Itx{UwKJWeRm%w_@x%a*A zbKjr)z4x8_GhJI+Hb=a!O;edD;C&m(uJRDs-JaOwpIS^LvQNecatG9t)NapZR=ANW+@l$yx^}w zy}9D}=sRCM^H^`k*`!Z5ugu_srVM_@~&3n1S(x>$BA^sLqdDc+BZv7+8-LG3a6}~QR zm4lfeU`8ur#gE42X2K{wRbdUnI%6vMWiuZ^#4T)?JL7#yln3H{p>rgN@^GdqXuN0{ z+mxtxS|;Je5`S(I-X#~NO`T}R;3Jdph_26%#@m%7{&~D7-6A~`IpNc-&_cy=dx9t3 zNw6%@aib}GeuBrIY7Bvn@c@wLq(AyRJKvp9qgeTm34SG>7utT6o;*%|la!1D=HTzz zJbcua7z(zI#s}N2+tXAQ+}_t@(guUAhvN_Ztf!T1#gH~*8`@-FIeNt3Pvfy+4Q0lo z#FP8jpx_@Qo|Y=sC-{xT(~`xy1iy}W3PP+?(?T$?iU2DC5g~9J@f49*i{O_KPqU6~ z68z1?)B43~1%Dm!3B)fG{58Z=^2N#ppHDpf1Y^a5&mo?cH>PUqfXvvKsU&{HIgUTMo6R#9;gU z>wrh?m{>H3W_7={9Ds7}5QTq3QL=BFm?mc8bi!@xO{{rpYz-tg=+kMpR;KXP_L5K# z6YVA0Xy1=8b`j0?zU1HaZR=~g5!wqd9CiPsY3ScdeH;4GKaG=$>!oEK$$`N2BoHGr ze}pFh`2?H*AUv!-M6(C%Cio!WU`O2iOk&>R-Xwo$Ekf9CF$LETB2ITuJe5Ih7z%GA zGotqyc4Gg5L!kYHRud``>y(ZT5_&zMBE9-`)J$Gx2$%Dn)KAy@In=k4w3&sl*w5+W zw-9{c5@2*#Y^#ngCG<<6aQ-p5Ij;BrLH!R%ni6zm1%^c^dI+K%9a#iu8EL;n5T)Hn zpuOT!xF7gx;37Vus9U%9AlZ9V@3&IF5q*e%AOd(hevMw}tu^$bUtGkn^>%#kg5Ci! zRr_HVC0p8YK}!CG90(tYu7H_v#prubWYNz^Y58c_@fUEAEqOka1RaPiAkVEoC{6Li zEhG-~1(IjsifDU96l^~7AY5^}_3_iJ$=bg9^vJB_9_v!LOYZ4w9aDajf*GEmxpzbF z9da>Z6(ssTfbfZtlwkN!vh;E(3$>)-RGuDg_h?pIyMl>9f~;0WsHsOM0#G52dx*P*tJtIZerE2%G1 zCZh0FX<2o&H`DI6|GcKX3HsUvP1^=~YE0AUhjan-66i0!*R%}$ymo-z0D25w9s})# z^_M~K!nYg--41#hbU&yCiCBQZRq=1ra!u+5?s6ARVQ@6e_+odCGREuOKII$_yM3lx z#`r#WmTB=A|Ij@)Rn?_Wj4Bu`;MLb zpnT`xS7oiqSxI?{BA18_(%yw)+>SJb@5;JSDdV4J`Lgrq7(=1cj>;L?pAJq3>X9{Iy9MF#|NN&lBysSaIrjMDLqf3M+8)eK`k|7G9m3X3k)p z{E6I}%Fan4mVzg4DqrLe`=BcM)vU|Y7XC1JK5oh!W@j^ZbP z-GH^I6TLhIc_%cC)wD3Zya3#V-R*+Osk}-vQI6n^;t6~ur2;1-iU;IM z r9v?9I`Lz$Y%7>H`Y$pOIGjzl9cZTvf#^jOL;k zwTn3=u@<=?b#ge9Z_e{5(?wfOZD6gGd`E_@NlN|_IE8=m^Xe&naJENzS6Dbkt#t&F z;(OBL#L^_OOzBme5U}UqXJ>oT^W^BWNxBO*VMesf*7OWr@TelP{}1 z62FIRD!=Am=6jSK)Y@K#WHus()4_E00Y_l&y>$;&Hg0&Js(wpTRb3+=xVn|!Q&7rZ zDR_xLP*}wG75ezeLf@3&+Qxeu>iD_BDjqCa*uA?bOHpg+DO|IDOLNVJ`o?-zvnp`S zmb!+z^-YWF9;#nocYpU6{*M*j6&S`bvhy0h(>P-c+Qx@~8YhuKHNJD6j~CBzI9JMJ z#-OFVdX7IKBGCvB&$-rV97P5#<3n@&PUFBbXc>3T_1lbXzShQ<%q?{pySqVgS$Jk{ zk*!wlpS4r@hmbN7+@M>n+*ML!GyWF9ak`|W)M@Mu20hGomiV2Noy)DR6f$DeYIV**nYpb|c+eRIDi9V@ct)Woo98&Ygs!L>42vj3T7E%DhS^ k|Dfz9+kmPML=w1bUa4(mzRvEq@Z08 #include #include +#include // those vars are to be used with locateDevice function -const uint8_t devInfoListLen = 200; -const CY_VID_PID deviceVidPid{UINT16(0x04b4), UINT16(0x0004)}; -uint8_t deviceNumList[devInfoListLen]; +const uint8_t maxDevs = 16; // 16 connected devices should be enough... +const CY_VID_PID deviceVidPid{UINT16(0x04b4), UINT16(0x0004)}; // the id for the chip +uint8_t deviceNumList[maxDevs]; uint8_t deviceCount; -CY_DEVICE_INFO deviceInfoList[devInfoListLen]; +CY_DEVICE_INFO deviceInfoList[maxDevs]; // vars for deviceOpen function -CY_HANDLE deviceHandle; +uint8_t whichDev; +uint8_t interfaceNum; +CY_HANDLE deviceHandleList[maxDevs]; uint8_t defaultInterfaceNum = 0; //----ACTUAL CODE BELOW @@ -109,7 +112,7 @@ int locateDevice() // locate the device and verify it's the right one try { CY_RETURN_STATUS retVal; retVal = CyGetDeviceInfoVidPid(deviceVidPid, deviceNumList, deviceInfoList, - &deviceCount, devInfoListLen); + &deviceCount, maxDevs); throw retVal; } catch (CY_RETURN_STATUS errVal) { int r = evalErrors(errVal); @@ -121,38 +124,79 @@ int locateDevice() // locate the device and verify it's the right one "otherwise."); return 0; } + if (deviceCount == 0) { + puts("No devices found!"); + return 10; + } return 0; } } -int selectDevice(const uint8_t whichDev = 0) { - if (deviceCount == 0) { - puts("No devices found!"); - return 10; - } +int selectDevice() { + if (whichDev > deviceCount) { puts("The requested device doesn't exist."); return 5; } - CY_RETURN_STATUS retval = - CyOpen(deviceNumList[whichDev], defaultInterfaceNum, &deviceHandle); - if (!evalErrors(retval)) { - return retval; + + for(int i = 0; i < deviceCount; i++){ + int rs = evalErrors(CyOpen(deviceNumList[i], interfaceNum, &deviceHandleList[i])); + if (rs != 0) + { + return rs; + } } - return -1; + return 0; } -void test() -{ + +int isstrdigit(const char *str) { + for(; *str != '\0'; str++){ + if ( !(isdigit(*str)) ) { + return 0; + } + } + return 1; + +} + +void test() { char trash; trash = getchar(); - CySetGpioValue(deviceHandle, 8, 0); + CySetGpioValue(deviceHandleList[0], 8, 0); +} + +int parseCmdLine(int acount, char * const* arglist) { + int opt; + while( (opt = getopt(acount, arglist, "d:s:r:v:i:") != -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; + + 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; + + } } - +} int main(int argc, char const *argv[]) { initLib(); locateDevice(); selectDevice(); - test(); + // test(); }