From a38c1c4c3f04ac359b46fed296d976b8bb1f879e Mon Sep 17 00:00:00 2001 From: Robert Atkinson Date: Sat, 23 Jan 2016 10:55:27 -0800 Subject: [PATCH 1/3] update new low-level libraries from sdk Former-commit-id: 5b44faa04771eccd8ef3a2e9abbde4777edcb8f9 Former-commit-id: 07f023eec84b803e63b08efc1ccc9eeefead9192 --- FtcRobotController/libs/Analytics-release.aar | Bin 12931 -> 12946 bytes .../libs/ModernRobotics-release.aar | Bin 9894 -> 9935 bytes .../libs/WirelessP2p-release.aar | Bin 4458 -> 4456 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/FtcRobotController/libs/Analytics-release.aar b/FtcRobotController/libs/Analytics-release.aar index 4fd577c651f9457229dd62ee34056f4b6c9c0bd9..8752cf9f2784acbfedcf84fb08ce24a60c56dd7a 100644 GIT binary patch delta 11779 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 delta 11744 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 delta 9039 zcmZviRZyKlw55UIB)Gdf1b6q~7Tn$4?Z*!u;J^v)?jGEo0D<7{ZovsQxifR`otc`h z+P%AauT{0XANrx|n^r1OLRD4x0E-L-g@_1c;l?Bj?x36pZUQxA?<-hDzEeO!ty4om zp+G@FnLC)eyIZ=m+L^i)`@yLiuC~xzT%h(DqW+uK@3t;b5l|pu@ZO7C7s@Uu7s|i3 z2oYcW-%o40FSYLcYoDFV4J+*y(>m;`_z!i=9lyfa;1eUl!oo)BCq^<48lz^2I=NfR z@@T8%4UhpUvOKcZCa%5(lEQkKx|K~G5r>u(p1g-NRx+gV|o$GP@GuA8xN(hT=L>qsy(JTmN z4%&!Ku>Ts761-#;f*1nUNr^yuAyj*jEA_0{K^MP8B8K0=&oXU)!ZtmBetMdn9gK*B z@oZOvU@E1y|1mYuG(4dYTq9m5Y_x$z8}xI4n{-E#wr#Z=PVk#looPnJLZYgfS7h!O zZBGCsR+VHjTD@LBlYX@O#LKQrwCm>zcbfa@^&F7)C17kCDrX=q)$*`%pPEpUErn;T zqk1NKv$>M!Bq7*Qk;{Rz`5b|*;c}C^)3Br)_?Sb*x20xvYq8;Ph}-)4oyg8?**&7lXR&lPijh!!zer~NpxV>aHmElQ_evzEy7 zP_*7q@rH-YuCW} z4=7Gtk(kAFDfu{_V7TU#(o)La%=h-0_&OQ1iPx5+$!+3E2r6QFo4gn!`o@ zs)27ljR!2?O0VH&?qk`x7!=X?)ra}l<2A9%z5H#vLwcHxc)1o>y7;Od>wxy`xTIIc zR@AQ33$7ffKvqDgdyERYJO+;VEH+V!E1?|kNc{O(h} zGxCQnh2U#^vI!9q@^Oc+{w;cu^_;t$Qpj>%2ncG2xMJFw) ztP-WdX+%4y7)*I6Euf+SbwnRQZr55FGqOXGy4XBa6pSk?jql^d{Ixg6b z*+l3!doH`vprTOHn7_c+-6AwIKtfKvOv57<``n|x%Hu@JtG;Q?i-NUAaAz{F(O#`peuHI^byq}lsv~1v z9@l}=U;!n$O7y{lHA1?jm~5@O+ur&&FCnwZ)q0gU#n5X8we))*lAz`%Yp5}@`JNfp z=5d!qpr@G3xNf75S5iB?IYppCS(l3&2a4{((ZP;Y4G{gS181kYJeHWTGlxjjAuBZc zeY_eGLeTYN7Tt6AURKnA)%G#5`F&Ez3nwm!iz|+j1f-`%@wK)y<(e$T_7rRwu z8P`faE>OJB?%;SXUC=W!*BhQeAN07WXFAo)iWjZXnN@=e`lCI)?dd*y!g$>OhVp%i z&8(%q?rvcLl3VrXXSRWRtc7)MDtC|!2|8XDx zV%B2yfFF==n8eO3x+&-mON4X!z&s@%e*n9Y`Kbxy#6Z4SX zMh>w~bThG(3Yo&KU2AKhY7Oc%pDn{##%Q~L+mC;5FY3DMWS@yD5*2S8ZaGa9zQtET za)`R6xvGv^@Te;vPgMMD3 zL!}_>7m#K#&ACy>5J5-C;-KG-l;jz>md9AvB?eKj(!3}ggi*6M7V}OF*$sZ){itC; zAh2~hH&wm2*WSz94?UG_9PgxT8~O2kP6TLPn-no=|8lnEz5kh7B2j+pW;wzP<}(q} zT;RwM5r`#yjI19#IoCY+Cwzf3<4N(O5YMfkB?H3dqw{|;= zd4p65Lr;lFnB7WOo^91?^JI#8I^CLh%R@;VW+qAUjCI5=TMH>8Fe=iR;1>+=7#8pv zsY>NEr69PAc0pu*W15XIN+M)1uSj`Y%OPNc^I{(t4dq3F&ehPwUG*T&Bls*?ffZao% z@n;{?)b#zMGvh0(CS+n#5N04HCI>*QP<4Qc8?b*FCu28I+L3#$uc+bvqA@cHv0gzK zcC@3+Wxf%s4ltX`jZ}FpO8$P3@fyS;kd0iqK09H2yDH%q_y|q3h~XRfTp2I;(9BUs zbjE;*-|T3oQb^wK@HdU~G0c6M1JnPpq>kNt%S~JHBEg{;CO^yL%03_)Z2>T&JCY#0 zvl+>4b<4=(sG!UUWnR2H{e#AcCt%L`j2!fHqkANc${o^cb9#+S{bC=LRA<~2=2azn zjwG|t%^UTT4rTXml2G5_^~N8=8P7Yz@5e0*{^;HutF%nK6*|pmuW_@EuhN3g&`W&t z^>z-%t7|0If6KkTP*amFw7&tL?#E_=Yc|f3L`}|?ko+5)Iq8@STqAa{3HtsDqUJvq z=+P}s-s>P68d5CEJupv2PWmV&Wf%^iV4PQheJ~LZn88w1NnZz8R(i)9^yXFD*My(- zMDVd?bLp*AyBx? ztTXm`Ic-3ph&JCYZo@O{KoS2f6tD-#429v7#%^O#IM$|kV<2eTw|L3yJ%X|m^v<~B z+zEr{I`@bo?x?4X7tsh((k-9N7uM>Wd510?ZrE>(i}5a77ar+Pm=^HELRv$%J9HFl zAtA2PVtSDVy(6I>^eKR)Hvtym+AQ3_2U5%fJax$N>T%g?%`o*u(TQ#43AlCtD}s~t z&)l^JH51xFs&=b&l$_#M$zvCZF8%Iqev=$^qKSkGs^=R6{n#@bPC9q$Y{{NNVn-)N_G5 ze$^KGG0(XKYWiT#U{1^HrM)V>JWvYsYg^;g*7_(pgfJ|6py0g(w{iL*{hRDA6&oSt z+@wOd*=Tv%F*qbVE|AIYVewhe@!{GsoZT18sH2Z%OnIMv^1?4>XWT&CLfR)1fuI2tCmCwJWfl0rC&e&}Vl=*>xsXeXb7~sXb1t>V;OUdkZfnD{;M{V(bhordcVr*_6fbaYVSdkn)H zFfa$8%!q21Vg5q0aXh9yKRSlGb@6&eu;vx!>}^sYlw&rcg^eHL8=XYc{LJJqTUWWK16I7Fm-U)Ie(vzYJbb+BjYIB7ga|cTRiQSIBUSoTRR;@9KO6Vv!vXxbtet5p4^g1acv z1qNDPvsijEbKk%8+&a`mD(w1{dOP_TxmruhT`9R+DqL8kn88y`q%vpiV_b0$2vFG=kPl zELpR;zL-cTqveIE*R5#Rh|nAHX58FHLIFau7~e4=bIsP$v7-C_TIv#g-=^cT&V?3e zHOVMwtSp>Zf93Oz8FW6zh>>$LayDvt4i#WRv+hc3LA*?+y(v3-nkGMuVtytHJVptT)K2;|Hxaby7}>Xz)s8DLv=zES`=*;Z>K$}1ULKmLbMN;C zn#RB|>lYXWJUOBdu!2#4C4PmTm4u*w#KbDZzrj`ebOzHFLa|iF4%DJ-Y0TL#LLrf+ zkNk$?S+tTc`r`j$XCqU(leq6)@4jU0o20W5=5f{_6n>5=NQi9+zte{H?L?g7zTxCZ ziIBEHXw73)t!E42XNFxC^#l~Zg;m*{!`c~9Ac1W_c&uRk_M$)lmNvaKY1Xcptb^9= zixYJaMjQCY-sSZDAkdE$IwzAo2M=4jPLt(knG35PLv$=su@7&zR{hzlcG8oI;-<#e zq0oY_i{f3EE;Ly#Nu`4A71_76Bp&q>vh#B@+(aNza!ZH7{5qa!P~d8O8z zWX$JJ6|Wk!T2?$^)3hrqEiUQ8?79vTg-W_o(Czb^<_M-_s6VNSlD@FZ;~B$Kh{%5z zqBN5lhaSta`37*@HL_NwQ}+c3TYk)Eja}|O2=$fMwb+s0G3&jG$-ZlvbhGx_(+<=^2#!4t%2 zR#}NDaE^yjXb?X89O ztrA_JYY*s`1`N-kB_Q2barX#Dzl~WH^$n)(mh)Lww#o3OY#DAmqNgqyKIx3FSSXAW z3E!-!-BC=GK-iUmplOHd*0BV^m=IQD)(>Ase&4H4e(Sx_t2gj~J^7X4~lt34e8s zdT5D63rteF#Y9A~->#?5Gzqw8X9g}s^ne1<)p`7!ic1TonKy(^H4_OfSHq82=VCr? zV!p-C0V2S2;L?&o;p<-YmGSzS z>*3h$c1n%|D`n2ddHI0VWnpZh=xd?W+BO$oEfV_#5yi+=@>mF+u&_d%N(V_V1t2QF zAxn@dKMY)Km@e(&CV6lmrxbfp4qj3;i++nsA|7sH5{0 zS9NtIpZ*Z_`A40!90*cAijHAY zXbtqg3vCW;j);>w1kd9{?Xc{Y>?f{ZP98tF&TtcvUC%(4zI(Bqu`itzm)%(9h1kv>;I~G{PdV4 zZ^h1W4c92>q-Ak-fJMJ9*bs>Fnnd``ykQS1Va#%(sHg!&h&LSWrmZ>;>7ek6iqvu& z`qH7Z384`6nM!k;Sgnft6u8Lj`m}=TNUwm%A#vJI`BH2D^@ORNY+_=QfuxhTqscX4 z$qa%g9ErDBl4Q+50br2H4)8&TB+s3(TKq`Ik^0n$8L6qGc2xLjl40`Eb^W`2X z7B5dT3c^KfjJs%`w?!1Gf)q?ej`#pnDur#M*to`H#hcH%92`g+3)qxcSdHc_IvPq^ z_*P)^4CC72vP$OXJk$beHRcZonGsjw$#)+C^MuiV|JaprZxKZvJ}YP?SJ3y^C33Q@ zIYqqI{h%B^b;E}iE*SHXxt;cc+4Bqr!XkoAWM8$HU4_winyzpWlo~q(4u7Lz1=Gvt*+oNv;`+m>S!RM4LU$A2hW z5vEG(=vO@eHo~wA@~!x6(C>Ggv%#+k39mhY^E6Ruu;DkY{94g zU*sJ>2Z3Nsr;2wxFSECri#_Vjn zz7YX?*wsRVm2KpLeIwa*?W5Ee*rkaeeD4c-(-RlWpC;{1+KkkiaUO zG;LI|P_^zzR|loA#^O5tZ>nPNh0KZgtmjF5-10Mj%rTntc*QQIf#uYo?{{OWoHqF@ z`5V3=6X&BYp&DBGLo+*(kg%-RH5aDqlSe>!41;GQ-3uc+E^n-_E1oIVoRhzbZ`0c= z?x>Bu|E+O*48CV%@-*bafB0^-=3ugKst@cWCYcBVMIZ!!AWv38V$&wg9M@!rLbPbN z{H6tMZP6!+i{<#L(K9%$p6NMvwyQRjlprkG4r}D@>bnfBE~h+(G;zdCGw9B2u?m2! z6r0UImbMiR=sh31V#CR@s`leJo(~JVw5dlCj5n}EF?$?%+?2o;m#!NmJIq_vHmj>; zZHQNN3dqsWcjxB~aW}V5qu@>QHx z`>Ws0$8MsW$%vuz60mGhF5-D9Y$pJz!EU^6=sJ#r{QjM6??P=bJaYJo0DdTq7Q)RW zg<(dw?<^zPb^e{`#>q(0*0JGncaS;%g_!IK1W`>XU6C)2V|BXnuQw2bLl{Rk1f?0D zMy7p=I?G%d+JnLUE`eG>gtPxwvKds1N~K&@A%!A$36 zR^YGx=lzdV%j9p?-KN2#YB6iLmUaGG#j-G*uZ*A(FwZrC6M7d0e$U{ zw@1qg9n@A5#0m`!e*rhfpM)wexb7QR9LY%qEoCZatcYB$L@TcNdxFNBr6W0MW$QU? z4k|2ivTWCCk-+b4s%5Z(9-gaKh(x8*H31LrNr9H4jY)St9{ENm@<%{O*_G>jfG<&l z8QO30_rz1mTCzFUPq^2sT3MB(RwuUKG_2-_o5Eg`Yoo1#xx1+ZPLhM zGZC(M$bv+xsfdILIT?)Sqvs3AyCbz&%k`v@qGr|LQF?}OwmU+9{g^)$Fe6NuJ?Xda zVq#U^drC-qjJO0$77q#nE2=PhrVW%{^B&hqBj^N{B;E0vS?w0&H;(G;I`x2I_bCqt z+JK(btS?uBh%^ymbC|A8ECTxkQ=%FQ%Ms1{UyJsW>iCSC8Zu zH@DN}$3J5cF8=QMyO`g*Eq(d?;EP!mIvVnLPt5(T># zX`O&pJ|D$*ZFvZe1ks1kqzGDt_zSY_ay4$|iR8F_R|>YEm0=ef7ogp_it1*gvKi@{ zV@H?tMGs!}!1QWQ`Y_`n=4vfW)-+#bA-F}0R3tPm$KQmfYKphn+;sfvpkb6HR<^D9d`R)A(NbZq*o5whKrEBFm zdcUl`=s|d@Odq>e5qDF4Bdb2>k$j(j-+HIB(QSGU;r;u-2Fwp>zGDv)oQgJRy`erX z{=|Kw>m?0+&u@M6FYB2q1Kzx7V&2PK${2h5U!MeC$gKCs$jwrKgg2D`#eyLI7Yy=1 z(F<;+MhE9n;lTb+I;4$i1)NBQ4j!e(``-mPa2Yi@_>vlz{67Rrq}WAe|7el-e}VNc z{&UoYKtX|%Xednne`v{niXsPg|wilCvO;QrI~FV}^n zQ$j(hvwHY=fJ@NAaqEQa4NY&#DS=@c&WxcT-Tk|C;&rZyyTke*j4hTm}FD diff --git a/FtcRobotController/libs/WirelessP2p-release.aar b/FtcRobotController/libs/WirelessP2p-release.aar index a8e53e42a782244cc68e3d80b831ed73cc8c1f7c..08e72e7a82c496827f1db500fc88da5e8879eb8d 100644 GIT binary patch delta 3433 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 C3{8dr delta 3389 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 Date: Tue, 26 Jan 2016 22:05:56 -0800 Subject: [PATCH 2/3] progress towards making Swerve Library operational on Motorola G2 Former-commit-id: 57d9ef49bc9853e04fa26dcd82b728edc8a3291e Former-commit-id: 42dcb25265b58c2dd17ca82a6764d927c09fc6d9 --- .../swerverobotics/library/internal/Util.java | 121 ++++++++++++++++-- 1 file changed, 107 insertions(+), 14 deletions(-) diff --git a/SwerveRoboticsLibrary/src/main/java/org/swerverobotics/library/internal/Util.java b/SwerveRoboticsLibrary/src/main/java/org/swerverobotics/library/internal/Util.java index 6150bfe0e2a..cc428a65b42 100644 --- a/SwerveRoboticsLibrary/src/main/java/org/swerverobotics/library/internal/Util.java +++ b/SwerveRoboticsLibrary/src/main/java/org/swerverobotics/library/internal/Util.java @@ -2,14 +2,12 @@ import com.qualcomm.robotcore.hardware.*; import com.qualcomm.robotcore.util.*; -import org.swerverobotics.library.*; + import org.swerverobotics.library.exceptions.*; import java.lang.reflect.*; import java.util.*; import java.util.concurrent.*; -import static junit.framework.Assert.*; - /** * Various internal utilities that assist us. */ @@ -214,28 +212,109 @@ static public List getDeclaredMethodsIncludingSuper(Class clazz) // Private field access - utility //---------------------------------------------------------------------------------------------- - // The Field of the 'fieldDexIndex' field of class Field + // Dalvik VM: the Field of the 'fieldDexIndex' field of class Field static Field fieldDexIndexField = getFieldDexIndexField(); + // ART VM: The Field of the 'artField' field of class Field (Lollipop and greater) + static Field fieldArtField = getFieldArtField(); + // ART VM: The dexIndex field of an ArtField + static Field fieldArtFieldDexIndex = getFieldArtFieldDexIndex(); + static Field getFieldDexIndexField() // Find the Field for the 'fieldDexIndex' field of class Field. + // This works on the Dalvik VM. + { + Field result = null; + try { + Class fieldClass = Field.class; + Class fieldSuperClass = fieldClass.getSuperclass(); + + List superFields = getLocalDeclaredNonStaticFields(fieldSuperClass, false); + List fieldFields = getLocalDeclaredNonStaticFields(fieldClass, false); + + int iFieldTarget = 7; + + result = fieldFields.get(iFieldTarget - superFields.size()); + if (!result.isAccessible()) + result.setAccessible(true); + } + catch (Exception ignored) + { + result = null; + } + return result; + } + + static Field getFieldArtField() + // Find the Field for the 'artField' field of class Field + // This works on the ART VM. { - Class fieldClass = Field.class; - Class fieldSuperClass = fieldClass.getSuperclass(); - assertTrue(!BuildConfig.DEBUG || fieldSuperClass.getSuperclass() == Object.class); + return getFieldByName(Field.class, "artField"); + } - List superFields = getLocalDeclaredNonStaticFields(fieldSuperClass, false); - List fieldFields = getLocalDeclaredNonStaticFields(fieldClass, false); + static Field getFieldArtFieldDexIndex() + // Field the 'fieldDexIndex' field of the class ArtField + // This works on the ART VM. + { + Field result = null; + try { + Class classArtField = Class.forName("java.lang.reflect.ArtField"); + if (classArtField != null) + return getFieldByName(classArtField, "fieldDexIndex"); + } + catch (Exception e) + { + result = null; + } + return result; + } + + static Field getFieldByName(Class klass, String name) + { + Field result = null; + try { + List fieldFields = getLocalDeclaredNonStaticFields(klass, false); - int iFieldTarget = 7; + for (Field field : fieldFields) + { + if (field.getName().equals(name)) + { + result = field; + break; + } + } + } + catch (Exception e) + { + result = null; + } - Field result = fieldFields.get(iFieldTarget - superFields.size()); - if (!result.isAccessible()) + if (result != null && !result.isAccessible()) result.setAccessible(true); return result; } + static Field getFieldByIndex(Class klass, int index) + { + Field result = null; + try { + Class fieldClass = klass; + + List fieldFields = getLocalDeclaredNonStaticFields(fieldClass, false); + + result = fieldFields.get(index); + + if (!result.isAccessible()) + result.setAccessible(true); + } + catch (Exception ignored) + { + result = null; + } + return result; + } + static Comparator fieldComparator = new Comparator() // A comparator that sorts fields according to their declaration order { @@ -248,13 +327,26 @@ static Field getFieldDexIndexField() static int getSortIndex(Field field) // Returns a sort key that will sort Fields in their declared order { + int result = -1; try { - return fieldDexIndexField.getInt(field); + if (fieldDexIndexField != null) + { + // Dalvik VM + result = fieldDexIndexField.getInt(field); + } + + else if (fieldArtField != null) + { + // ART VM + Object artField = fieldArtField.get(field); + result = fieldArtFieldDexIndex.getInt(artField); + } } catch (IllegalAccessException e) { throw SwerveRuntimeException.wrap(e); } + return result; } //---------------------------------------------------------------------------------------------- @@ -293,7 +385,8 @@ static public List getDeclaredNonStaticFieldsIncludingSuper(Class claz { if (clazz.getSuperclass() == null) { - return getLocalDeclaredNonStaticFields(clazz, sort); + List result = /*getLocalDeclaredNonStaticFields(clazz, sort)*/ /*only want user-visible ones*/ new LinkedList(); + return result; } else { From a2466180ae28404a9351efdfd47d0dda6a2c2daf Mon Sep 17 00:00:00 2001 From: Robert Atkinson Date: Wed, 27 Jan 2016 08:15:01 -0800 Subject: [PATCH 3/3] remove dead code Former-commit-id: e138813ff1f8c1af79dfefced87e72c391c1ec3f Former-commit-id: e41747ebb0cbdd672b74c0305c53e6c54467df29 --- .../swerverobotics/library/internal/Util.java | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/SwerveRoboticsLibrary/src/main/java/org/swerverobotics/library/internal/Util.java b/SwerveRoboticsLibrary/src/main/java/org/swerverobotics/library/internal/Util.java index cc428a65b42..652e99ba8fc 100644 --- a/SwerveRoboticsLibrary/src/main/java/org/swerverobotics/library/internal/Util.java +++ b/SwerveRoboticsLibrary/src/main/java/org/swerverobotics/library/internal/Util.java @@ -295,26 +295,6 @@ static Field getFieldByName(Class klass, String name) return result; } - static Field getFieldByIndex(Class klass, int index) - { - Field result = null; - try { - Class fieldClass = klass; - - List fieldFields = getLocalDeclaredNonStaticFields(fieldClass, false); - - result = fieldFields.get(index); - - if (!result.isAccessible()) - result.setAccessible(true); - } - catch (Exception ignored) - { - result = null; - } - return result; - } - static Comparator fieldComparator = new Comparator() // A comparator that sorts fields according to their declaration order {