From c4f49432d9d10871e62b58522d31d2a7e2b4a336 Mon Sep 17 00:00:00 2001 From: JTrotta Date: Fri, 25 Aug 2017 10:31:49 +0200 Subject: [PATCH 01/11] Update Board.cs Added CM3 support --- Raspberry.System/Board.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Raspberry.System/Board.cs b/Raspberry.System/Board.cs index 4595242..1165470 100644 --- a/Raspberry.System/Board.cs +++ b/Raspberry.System/Board.cs @@ -245,7 +245,10 @@ private Model LoadModel() case 0x2082: return Model.B3; - + + case 0x20A0: + return Model.ComputeModule3; + default: return Model.Unknown; } @@ -268,6 +271,7 @@ private ConnectorPinout LoadConnectorPinout() case Model.B2: case Model.Zero: case Model.B3: + case Model.ComputeModule3: return ConnectorPinout.Plus; default: @@ -277,4 +281,4 @@ private ConnectorPinout LoadConnectorPinout() #endregion } -} \ No newline at end of file +} From 471029362859e0ba7db1a1910a52c97381ff5e46 Mon Sep 17 00:00:00 2001 From: JTrotta Date: Fri, 25 Aug 2017 10:33:16 +0200 Subject: [PATCH 02/11] Update Model.cs Added CM3 support --- Raspberry.System/Model.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Raspberry.System/Model.cs b/Raspberry.System/Model.cs index c16174b..f6d6dd5 100644 --- a/Raspberry.System/Model.cs +++ b/Raspberry.System/Model.cs @@ -57,6 +57,11 @@ public enum Model /// Pi 3 Model B. /// B3 + + /// + /// Compute module 3. + /// + ComputeModule3, } /// @@ -93,10 +98,12 @@ public static string GetDisplayName(this Model model) return "Raspberry Pi Zero"; case Model.B3: return "Raspberry Pi 3 Model B"; - + case Model.ComputeModule3: + return "Raspberry Pi Compute Module 3"; + default: throw new ArgumentOutOfRangeException("model"); } } } -} \ No newline at end of file +} From d16876ab3a485f3aeadb1a487fb28800754fb5d7 Mon Sep 17 00:00:00 2001 From: JTrotta Date: Wed, 13 Sep 2017 12:06:20 +0200 Subject: [PATCH 03/11] Some adjustment --- Icon.png | Bin 31034 -> 33360 bytes Raspberry.System.3.0.0.nupkg | Bin 0 -> 26745 bytes Raspberry.System.nuspec | 33 --------------------------------- Raspberry.System/Model.cs | 2 +- Raspberry.System/Processor.cs | 7 ++++++- 5 files changed, 7 insertions(+), 35 deletions(-) create mode 100644 Raspberry.System.3.0.0.nupkg delete mode 100644 Raspberry.System.nuspec diff --git a/Icon.png b/Icon.png index 5db037551f81de42e2bfa87e3f1b116f361e169b..1dc39dd2952d4bb0b10db4027b34f570b28cb777 100644 GIT binary patch literal 33360 zcmaI7V{|3Y_dOgN6WgBHxUp^9Ht)ok*tRFOZzi^Fdor=DXFlKG|Ml~tx>oh7)vJ52 zU3Jdhr#ezuQ3@FW9{~&u3|U56T=icc_+NvA`F9-jY#iO094*{QIha_OSh?99^Uc7(f~sZ2Mbv?Y7a!0-tmAdgxGSi1 zkWb^m<>e&=RB(qFohEGxIiq5tXkyy_rK5=HU@jclPhn@T^y(e&dDrbcH_w@hoTs<$ zudn;|+PAFSvFYhNowM$%7R$WMM6hT2&uFnf<30O5H0HJM^q)SW|9^wGnbS|Vn@&U5 zE0LhXzEtF-4rD3Ht4bx=?UfRlZ3CI)U6=M>H-;^TTLW@QZAwgX+X59%QEl;ORCP{T za@$rU>79bDQn!ER>Bipt=&6*Vl;nsnzC>?<$FeeJFB0&TOmfOUB2}1e7;4gY?SrsU za?j&A0e?&eYIS(Bc=35Hh-o`!VI;7UXu?&g@{#eV8&YJcdb~35@ntMg-^7EH?vjRc z*v2ZT=qUvb&;vd%oCt~mWzw}5Ym9W;k0HN47hPm-(iD=iPiUy*%KSd>0H0pr4AmC3 zDe#9Ru{+X%UOm}h9_Z?b5Z|6p>63VZU*!ZHs^Yes#t%6{$0nl-#ZAWBje^lLSB*f*cgGBYs{oM5S&i_T>fEnU_?m1oy z4BdF;DQOsEglctWMw*dTa^>*Nx(a2L7ZQaju$If%90GWKJYxygF%cx=CXJ#AgM-6C z?a_BYMQ>M%LWsFus<4soHPiEduS7yEyd;EC@RtUHf2~b%9{Ab}1?x)rY_j4D;%PX9 z1s|iE^ye|MqE+h0w>jSzbi39PCOm(=s&_}zX`VnmuJ|MjZ!xo;sCPU-2a zsj8gv^+RZk@c%x!5hBGxnwaEs{$xAqX2Gb&uo06$@iU^%a)n|RQCil#!m17xp5|J! z8bVdrC`#*f7-(i6EJ;t$nXFqdx1LwihoSU<>^wG2#2pq8j7skh1b%K@aZTazQ>v?| zoE&dGJpCUoO4fm|>`6~j%hGxI+XB1G87Ot99l-sUvX3B-_Q}h!NneB>|E<6jb6>b9 z;bJLVfe$|=4BLAKnkINps~5tOqDAG^>EomT5- z(BZqp9prfF;Je0uk2T6z_$f(Za(+HCX<28 z2fZ7U8*UI0S~TM6Z;<6#@P=bIsL~+cw*?!>{R&4@cTEZDE0`>+42pQeMM97VeDnQ1pJ>B|XjHQ(omEK)e&y)yf!F>pcw> z|Hb5wQt1CcF>vXj$NIeg@yv2euz4FT-W3N~x#X_0W=Me3EblC$fq0xnk1p+@zqHtg zwUpoZ6%@&sr@gUXn@Hw(cDfr$q4#qUb7?9ikx|70m(;*C#y3*X*8SdPZHDAQFbH&b z5b1M6bYnv4aCo=`WWS-`d_70p%apJ;CY(Tf}0G9 z{5;J{xBHf{hggx%Q5rGw)KNEc)w1UAV!u7yZ0xo~-MIbkk&%Q=kAuy8zf}1>9We+RR?UQvh{xnSP zz>1$$CgXHOP$d%Jz;;q-5Xq+^>q%6QqhR{v(>+xBCD zjst&Jtxb!Ufb9|hOLCFZ5V-GO0R(PBh*{(PV1ng1;OC2cr;#_@%$r~2x}ll!iWL+S z&+h_FL*kY7^4+X7UPoN*-OzA?Em6!CQ81>e%%Z|BCb=FMRhd9Dbb}-jR4oP@j5n`= zmI7z}r^ljh>E4i4;&Q||k+@VM+nh}m+slZ7tYsdvleoJ`0T+ikucL)9q*&Xsg6liS zPm<&7_Sz~jHwveF39n9I4E>vsonWS+P94Fo@(OQ`q?yuX~sARxn#smZ7>WF`h@L_{tYq`H^KDK1K8-U!8xZiUj zlr8MS5d;u(lv(=dEX;CLxJP8_NEiKCA0EPF)GS*ZcDnJNn&2`ipQFKgRKXoTK#Hzr zC-~`73&nN%XMaPzwUpHLbP6^XlLWW$k@EzB)9CMocfyu8%KZ1yQZ==Z-`CITf6*7J zcH`OVwhejEsPSK&Bb(#6vIl0({3#0R`V5QX6}(p%Jd>fg9$mvgJ>OE<(L^m__^^U| zhaVP6+5?Fbl^v-k?C4`q)hsF3mc-p*#;*({U$c|~YTrWlb4t+~_3(C6%84288|u2i zQ7SWvtGxnZ6i&Dz-`c5)vBU^<-T~zA5?~^McV(1U1k>8mjc_1o*}Mi?~NHue2I-BAKn28fnX*L+hXshN;+wuIulVcqH z5Jngs@PEP4jpN1f-l#5AHbt>4PP2H*s=~iBIxMdFD3ko$&kF|#4Zws(z4C0yqxw*N z=b=;?z*7)Aznc4~h>dk%d1~Rwp+%woFyMT?q81*I9P8RB(*}<_>lxkTxp`>~&7|d3 zyE7SiJ%zyuM}4q_nhF}<9)wE$V_9C93vhA_xx-eZWlt;`)P`N*f4>%FgLdlwi=zK= zJu8G>hwihN=>(VO1G}4947kM4*h?(Lb8Hwiva1T+kbDHyIE5g-zYt&S2WUPXVmk+7?S6}NP7xoaptI$Ca9&tQgJKb9rB@KKnN+9hKF58aw(NbD6nB5=G1llaXkGc3c=5i!r$4hbMt!h zBFBV!a{IpA>ksU3BS|onuUf)-c$@}dphwvW8kRRS2*>7PF|F!;nUC>*xC|{tJM=VdK72dGxs#yp;iQu;N#$QR+UrZkXgdY0#NF{cZ-gP@fn!ooD8uS7I4l zHWpFp{KQlWjc3J!@ihZYE5F>)jfLRr!!v!ec5%2ChJR?Z;)qeCoZyigiG*Lx38!`9 z+djm&42>db$a;^a-~^P#`NcriEGF96ggw9$)wbGi{A1xpUg3~6qi1(Re~O>ft+M-Sj~LVKn8^T=XsE4_rV&VkV5T{RHkNIAIo5VO{ssn7rMZnudXJv_l= z;0)kE!a2WCwlfP=#h_T^1MJxf!(B>@92jaNUB14l!VVTUh>;lg9t%4q1%7{5(5LA{ ziR^u=m+sVWKtP2IzMdZo_1}SKet%wP1XIfGx}F?Be7YdK8SR5yako#DfiQ2_M1;sG z#r_7hs+17lgphM|Mi`0hisi0SX%XS-(He!#$3tHhEOx;6OA!57 z*~cNLHGw=|{G0^uw-PxGPQRbyVv)tf@~b4wcvabya?g+ZpO!;u3NR8KE4W5u{9CQ= z$6RAIF$-U)nt|as|Fpq=)S>5}X}Y!!>V3;H%1wfG9PQr-PGte100X`Qoi;(>H>@e* zt6h7-UZY#&e2p;52CkfgudcUST92 zu^wPo;wcYkd>oSRdj3)#V%K4As@x33__Ub5`@l0 zk!#0)Ysc@y9Go?;ubZ%=i0FF4jvKVwFuz zIxkb;ZtRN+#>hp_p3N5xW6Sd8`wgtDI-{&! zu2`{2$N_4I?t_T=-!|u1`&!bXK!u|{P9?#*?Vg~D>gcMPR27=C7`yMKAQ9y2#VLY# z1A*&BPOx-N2IYJ9(M)uM9LkK17jM`;9F1K}BSgl8b$M948h7PtdtnjT`O%Yt=2)hv z4g6W&a?W-b6AGp4E7Yi-V*fGA4ZgqV5jh35<+AuOuypymesway4L5XR58|LZG`eyG zMbSbhC{Lf?3fmD-QD1k=})MIbUCL**5tbH_y?s) z@Q$sTBU73eD$FZL>4zH53R8qnlR4L$TR3f#=guqrxu$cdB~#4_lD!gRN*2&OeX`Ce z6U9(&Bzgl(5Wez;ur@XBiF2y3?KKYxJEHNsX9bcP<4+YyJh}>3I8fgPd28%``jU|7 zNBm2N$HcCSo_ILoaw6LXtadME>#jjpRBBJ&TwtCT~ROO>&OSJ$zwGpr;4^0D=Ue-vQlJLS_^ z6!JDhrq98{FBKq{DXwjifivqIgp#-W5VVm{in8%hv#OXQqW6_%l=>PB$k;p>(HU5o{RfyF$IV@!OPQEdUKrJ)G*!kG~k(or0@SYxiS_EMd|I!k81=AwHOlYW61yT~7Mg+`+Z0J@<7D7jR zLjUED%yv)wacGhjcf9N+$p+mIZ9Rr|tp+vMJI~m|;aJ--#-zRF58bhn;ttF1bHQ&; zul4t+e+Tk*uT^QeC1Y9aMtm;AFePa&0QFT1DSODG>3_60Ze7#gu#AkR6@BI zq;;X-Ar1w(B5IG(1Eb+GP=!QLc#ZcZJW^=7QYNqEPu87;T<}-g;P_HA!{L!T5Nh3! zlFYpeh6m1xl(cuK!g%HdG2wt|1-z%-roPwp+5%HA5YB-n}$s(9(Za2-S{RK*Y4_QW&y+e(WFKeFXWaqW4i-f8vn#bSxVVkf{7fWhLx zDH!vNzd~zF4;iAecNU_rC1uXDx?kM^YpaFy1MAQsTfTDhnfhNnE=OBf!=K9TUZ_y{TZ*0ZF0_eOe4Cnw%m^jWP9U zrSPH8S)4CsN-&*JK5qWQn9ci*-Gxx3IV6DBQnajp9%99L&JHgC3PC(l?r;fP33B&xNJjQ)l0t$8Rm0whLVfqMTzLDh6 z7Ixk~tZT)b<8bbHdIPb`VIUjfHe=!JwQXFBsl^irb!F*mE@`BOgn}6h=;t^gr-K;) z-iA!D02FUm37IPN-^uGHN|Cf2!60tqlNCGi8756|7veoQqpMOg>6WBMi06Zkgu1{V zQ2twJ#viQ4QzFCQ#y5(cL@dbZ@4+t9)8I?BwX|ODy*h4mihoaT*;8D4^==#risyi) zmP51V5g{@GSy2Ba398h)U$|e=fjLx3QX}cQ{M$Y5CrgQ4`A27TMVkXCGv25Wg4rnY zB_#yB(S3$ICY**|=L7bZs83HLcf=uc&+sephA|`d$Xblmc&+6s%fmljU(Oy4fh!dR zET+UE;<)$F__Ubx@Rt&d6#8ZrJ;Wq&R{4(u#V=~k+k^P&dKLRYnOIf9WK7B+1JxBV z0U76zi_*>#7=)w2J!1`YVN^A^T|#tYI{5mex*nR0vy2Y{+zz-$lq8WrCjDR@JK6{` zQDpXy}zqau^SCgqXEar4n-|0TAO5Cwrg?rsRiY1ExRB z_Zpivn2NB1By4awr^*KvP$b6M?CEV2jDkiH!CeWJnr1TbPlCq z{F*_rP?w0opPcaZ5m3)*V9X{AM|^WITxjnOP;b361y|MxAEjIk@pWD|0(#G0J1*^t zim>7GNYY>=ou@)*xL?Ti_OSIrs64t*_JSzBpNx(R2zg$f;#5`Jyn3)H+Ioe({YX|w z$n{zVv0rL25%it7CUY4a;x23i^TaGwMoZvl#3My;&h-TCv} zPXqO8A3@WGMm4`i8B+HPt4JJ`PmButdmQ^!os1)IAHSE+&kbgmn-@%22P#59`s|yS zlirr3Nvo+#WksSPbmzo{q$!TFstV^>0aB!zMHOTbH?yk)t#-b%VqROj5b$Sgqaai0 z78)!2R3oboY9WkgD2i~03;PdL8%`d@LwRzFY>%Jsj34M_IEco}5osbD z$RDXDST$v_MM2W(!pc*#>NKP^BADmEve^YHQ1%W=0EZEjFU|v92H^_IiqmZH& zDDd%DOMV3^Or!y)AKOuw>l}%F-5QE~sS7AHT!BlyNL8NGBsxy@P_C&Ab>;NfY-}7kE0Fdj z9ot5gAABRx+`X781G=?-b7KG7aYueF*h6HE>hHA)Ad4?rtGVt9L7)%jq7TBZ3ied< zbRu81gYPVdgQe^j%tG`1DBV#g`I8~iIBABpR!|h&NQ%>WIdRIB=HT$55*!djNea%T zj5v$leZqy_a_LCR#x53_N!5rPK?n(9GE&rjyJljYrcJGfT7Th|z#(6`@%$ z`aGZ^jJ?dJwY)_5wc@e|`qg^+({bPs&m&%lD7NbSP79*gnTCzfX+%-<;7|uhND}&{ z{^B9{Ng0GwJ9j5|wg_3*flT#$c5S(e$&aYi+q7%UFaI|XP$&Z$&UKzxgwTTX52=Me zU8gOoZb3-xfT>JrQ63>SwE7cRh2rmycsc4+7lT7kGzXl+h&|38gL;S`z6hCeW@#5_ z(#^gQ#-YdEVSm%YxZi>bs1lDl^8Mg!@+XI93EkyJ3lwi|R(bK>D~{ zL=Mix77lz1zDCsm|1Y@dr2Cy34VM%#$Q+?Y({PDX?%Rf&W3K%u8eU7c=%&~X;EUUh z8xG+?Cucyy>3Vl&mv0Wj?KDRO?pUD<+=%c?pNE!_u>$*cx-OG~rQTl90iqlS?z&>S!{U)Xs z#wJEc`no0d9~U$U1s<7;zYD0TvN%podlL|(%#Y`o4(By_4MfKoT=OsyGo$nEnW*y+ z{|rAUil+HqP3Xc&3dXGV3Re6#T8gpvVAPr)9%0B2m3hkbY_`_)^+myH3MTG+1T^hnq6N=)Ul$C7P z`#I+Ko?Ea`W)BACT47D>+s#K{ohNvebRd<_NwDVLk9}Hx1wy$(KDczzj=h|0dW2O7 zMO*76sC8O4Zpm&Uz2I2*Q-RzYQicqyC6eQdDP3;6wP5|FNo(7KVO#t0A|~V-wi1T9P+k5&yp@O zuS2Q}J8jH|KjG5NVd>pln_q~_!WKb^tHa426%Wl$+-Db+STIbbiM@943LZ3&FUH|O z7ZTq|O??dP@0WNdHGFHkbpuvL{Z;lZ{b|rl#*Gn+KY1WFcJpjMo)n-HL&Nb0lT1DI z6|92s7)c;NWl;jHONAgQMz%-$5Wq{mq8?>00D0Jiu77VvF8=etQ2m>s=ii9826zw# zT0|JB*5aG@u4MtqG-zF;y|N9CBFz+`F~jG%LpSKZ(rBl1>7iCJSC_o1KmW{Sb;h(uw7Yma^t&eDg4 zb%>E$Y0)mbpfZ&$iqgSm>M)TaaX`kug@p9Fxd1dB2fiz%1c`<{;^5`<#?1 zl!zx3%%yrCAQJrJ)*kWok%t6dCi)G!&4uXgL!GZM$U5RArm`1T9h!zb|BY^78m;0F z^=L~%(R#K9TMi>zP;2{f8BoZaaQlfM+6UgiSzr`HYk=Q{kpb+X&-cPI1YIhmlBdFi z@&;2wIANDt>wl6G&(Z9y3eDPv5pSPhm3?Luu6;O-wz*j)mn+xFwy5y6$UAm5 z^|hE@_!uxX?EN@JTxf41B?a3)Qi|D8aPbZj5>cWq7+q)zg$y4GoQe7JYeaKcOp&q` zMcqr1Z;R3phGV~xsBdHy3`<5;S%#J0aDZ^F3n{7dKbg?~i+Hkn>`O+->~0z|jqQ)W zd?7rdWCdn6Q9`*CLH(|ue00z+VPUi_p5k3iI0#6SD&=Nj5Dx5%t3LZ8;ZXeen~*cF zsNx3+CLjXz@H#irQBO67YFyKtPbt!vj^9{&2~elbf~88-?2yGGdB`&9VRuUPG) zGI8|3D(^OP5T~Xth-UW7o_!*EPK1s1gG^!y_Uv4JCYC?4l8L70p;MnFlSut}CZmA8 zlUW+QISyn9f7zj*T_N>`(Tvx>w~n*}*J^NT)d+VGN&`_mMg;SR)li+T^NhVVc@H7rXux$_MeM;u`o>Idur)|**HH`%Ft zwaZX1=F$a+%C;d<38fewqe@{BbyeW^S{Is5xt3)3;jh^8tyzcxokt-H->GvWQ3wV{ zvLRJyjB0zS!qE%u(qEAzobC+^+EHSfo|rD+JR(o7qx1MWOxqx$Eyyd_NwDs16b1n( zhE*|_PF&Ou6-sa3z0MXvTYF?>857`iKc)t@WI5ZC6xBggF1&5YG|y>SfTodwshs`L zO;CW`|9GvFl}-h?osmUAaQjt392f7#`PZaE(M`c2fw4urB^s4ja_|7%L7!LS1Db{z zy%)Bv|Kqw@j-R`hX8TdDFZ!A3pRPb;F@}@dCbWfhi8F-s;G+hW+x#5o!lyk(;os`y zR6Wuw2-GMnuYtLobRffs35Y3!)hjSjCBXDh7xj+fR3wl~U}u1rU{7+fNgyOk7CALvs950?Kstnnrjajbe0Kex72Lopxdx zeW=uO^bd?hwl-NfRZWcOb#MpscYOipApo2PrFh&T_7V0paH|Pm_;?)gLAcXxEfv0y0P+Eq<-xc!ukxHB9P1@1L#^h~xaFWKwCUn*|?1eV| zR|*0tg|-RZn&TvxnJSF(CwOVg@&JD82npvyLvXW`*0~w{zp>8l;CH zS@|6zHTm#L6wP1hb2u9P~8i>pzOv_+Yfel2(uR*SI#73qLTP zTliE{RKKO2;qE~|n|5b0A#fb3mf^7cx))2!2ZOTKJtDFa5x0 zUo$)iNI#uXTP}XkPpE(EDUutFWm`eP#LK%&cwyQCvK^lVE1|aUuy4U}Fi60wG;k`I zqt3dFKta%|KIlB z>`Jx~n^^NJ)Xv|8ma9=*$M>%1;vMxkYj0Z?Hf4lzxBNF+T$CAXRH=0OLa&Vsy?N_` zFjJ)Rq9{%%N-}BEN(^ytp$~v5El8eUama^2n30*VR7Y zyaR*bV^+jUmkwUoyr_S2-0<3n@|A+mg-N)#7ma>>lPGJ`S55<2)Wg4`VGTZ8MY?PI z48p_G+>WLn?;aXW>^)w9m&E)C8HSw>{euFdMOfCN>g`2+N?jx8dhzNS9%nNTPDro| zBilbe(Q71x>BD83=9|j1F@-D5@89$cjI>3*aa)etBn zfM^AFs=p?PT^Z+Fq_+~uV#f=)lnkVVt|SO!3(ey^+iTc;C>&;eCjvWrGw zH%r0AYlO%sl3oF$(W@kFX-8M&)Ea`9LG&$|?~FBa#(_S;7^`@a+yBR$oIo{GR9A zYcVw~)QTzJzW<0I&(&TeIy>F8&U(?PGRaYO>yae&=-li;=CUo1NR7L`A)b^rcsgf# zK>4h`<98SA8sQvXOq}x1E#8oTL7kuHsb8iHNbs9(3oD4nkRQ&hDFTcPNG)U{lp>h2 z{04~^^4GZriAToK2kvmNE%MI7TbLbKG4;i{Xei|k=(L$8J$y?J`IqHi_F%5b)J2

%b3!G*WKaku87FxIoo!h$(1t4__re!~mW(Df|0_F~&j+8>4Y>5BvZ$~d+ zZzbt?jIuVj43+(I_mtGiBk!tz&IQezc3JLnD;}GT%Jk#9sokwny;-H&E{Z=`!?-%! z>SQF)>nRXb-&{agMq8*cA0ok_WOEsL#TT&eH-kny%SQQ(@SY2SkX==5VouU|9CjoT zD;k#rC2_H&Y$tqCWEFly6@Y?>iZQ~nUACDRz`@>JW3xuWM1FoHjB3|poObhc73V1_ ze9zN0U^DV8;;av?{K%g%J*yxotz)AJ4|Rf$Vk z7SbTA%1{W}98K!x{0?5lFM18_F_T~^`z$X;vZIRX!0p-RhyiPF{--vfc>whmpT~Gt zv$3 zcZSojwMgh8OHenOo!WzyA51_ji+BNckpGXDdRUxeQRU@gWe>=SlD!iZkmDba%6~7% z*h(j2Rz!ajNko-#BXsdQ&#$A6#8$7t{93KEjWYYKxjI4A*p!P2OE-;Dsbeh0ZiYU9 zf&{7Z~7KCCh_hbWbEYdIB@7}}fdET-1vHcs}UI321YDTvjW-xDFl zFo@K%QUXwig@1U&{0hyrItY6Bl;PR7VQKu0Dy4fXZ2y2f;LfNPqp{py?wN(lTor3Hk4B8jn0S!5v-A%I6CrF*Mytpc5U0*(O;0O7vlvX?ZJr?SmXa6m|=NAj!hT> z!FNi38%Tb5@8;yAMs@imnq2+Fu(af{t&TP;g&FnmlBzAUhP;$6dlIs=9?NrjOh&P0 z)(r$INEMjIDO7{`U|y&=p2WD?@xda(s%HR-gm;kEPQ7Ut7e^FGyf9T!e=W@Cl7jFY zniFZ5)->m-R3;N7=z-JIh)(-b#lyTgwFSs=80Y%0xBJW9v?e(=S!}hz^MCltO`U3I zo5gG5ur8{Sv? zu!^ySFMA;vO#N(y$*3s`Au3g*MT(Fz(D&Lr;X_e^Q5@N5*x9>C@#wvu>dpD+UFmrC zMrHW{d$H#QT(KcPKY&cv9u)hP%(YMkw@u0U7M z)T2mmJ(ag(%yE=_8(`q;zs;OeL>_uSM<8HM;eFn7Sg|Shj2t#ed!Dqk9d(j4RR&^@ zMk9(~B~GO&_i^2u&wkS{!>U%E9V)gtWfS?-O62RHGL?I#-{U6e%b%TAoQ-a`x)a3iU2 z#9h^dJn!s1`eCd5OzmQ$2KNsOG|6NpdRcLz?f&wy+c*41lV5MBy3!=qkW^ z&?rEgyvJ&UUm}{RGs7W#GGU)>>q!r{-+bBKSK~g(}p_A{XB+Tf6C3#0L zDXGwnxz<{p`YI$u@#`5t^NyDT5WELi(^EkhT^!2+igUZsQrKex)GW&YxB-B$SZJo< zi2~RMI>eGDe@=$;q-AZ9Y$(LLD8RJRfoIFOIdNEYPD1#SC-5*=ojhvnO3C0WUKT(q z=gn&A%vz_V_6d&kI!*BTj2K79}j8EPp+defmy@xVj^p38gIIrQ1`u zzuHratoieCsM`_488qXbL&Qshwa~h^&s|YY3i?5TQ}pWz6O#r>%3y^KI2!YH&CBj5 zLtW2+N-D!*A%JgXKlFBTcH?*}>znZoxgDn$1v}6^ShD@0f{hj#+)JBNn!453`a5m^ z#}6OKYIT<0#xxjhQr2Eq0xI+Z2lztWDctdE^9VBt1wLWwe?IZ&I12~I5^v7zhhl39 z@~wcMvh+s!pTEKC^Z;{SzM?42YsV*lAg4WLt^40#Rqw6jW;ZKs=)t~xv1YN67;EGf zhkBz4bRYHAuNKhuDiJT2AZ^>7SZFfpkixfd1|k*m7GXRMr$XY5s5rq!P9&XA&V=PK za`gqUlPFtS(u{WXjnp`Q;diJ_gwse>vwybiqBxp^E}n*`4kA%b@mcvF6u^i)on38^ ztN?PS;N#nn(R3rWLhlnMtiN=n2xUJ{aQ$d<=9V2oQvj>%Fr(3;fe%tObO2sJ#>hj**OOOX@q*>nQ*_@?5*&^!VOaW6RvORzfpw6(nUa<7A%z= z590pjNO9{OCUuJ_dTWwtY9o_YXJ}d+jAYlQ-`DjcnbI<>g)6rzqm&&iV$7ge?{W7j z(YS?S{)gr4$`ZF6D!jMb91R>+Gj+RT9FN7wt&_u&Ijj-ND^vy#5p#Gz)LE|2uBa(V z_Xth}b(-{1x=;aiiFV=hLc_3%Sa_+}0DyCM^Wblk1P2+~#>j7L{`A4Tyk zEjwqE@$V^dIU!BCFuV4uLg$Ea12F3wsm)>8GS^jOm_Nj<_KwP5K-*?er*!ys08~l8 zcoWd}F~;Vp5DGG8B2F@FajlzEiUiI6H_l;4Gb!I4QG%VZ$dkXX+JjdO&sGo-h&Oyopo%n9xq8*qcwU?NfC^_*Hag1H=TQNTip-oyVkA-bC#&9bS(~%vb zR!+lxFT9%1VZDNWiS%#uWfD$784&Rr@`FDsZDHUfdy80H5cKW6f^!-cX*AS7i8_ss zOOcU0zjQkZx^CPvLy@N@oBC%J2~Kd zHGrZ|DOy>S#leXC^4w(d(*!dJvI6>5*+{+=ah*u^)~^xFV!*1P{FsI(c^1*9f4@Fz zmzlGv&)&hn*UB<9W>j1MgbhqfE$qO1My0&$!Dlr9-7w}E-AQt4I9%y?@1>Xdy8a64 zvlexl#$6aj@4&HwV!3%~=$}5+a2?jBE|Vh1HAShKvv)zSjD>LD7+XR+3yHyt!3_hM zWoGaWBEMMuD;NxRoqb`TI?6gXh^l(tXVFEk$WX+*i{@Urw z{S~J_2yaqcmTqH}&@qM!RfKH~l|JP8y^rbhibqfLYmSw$a9pYBMl96`ikRkMD0UEy z7WMB>_czjYY3`ICl0{h%jguh`!$Z)}e=ObMG-+E}L|BcEGqWkAW^glKFO;+9(I1jE zZmbgp@}|88n_d(_LNgFvR+$Ie?~lO72CD6x7q=B8xNM+V;P+eIO3sHZMM@DZ%TMRD zuReVgGO%Rn*(-xB7aq@Vich#9n~no6eBC&4;#3F9<}~Nm@FOrjKAK=!n3B{78a>P| zO=ob6o~L4LG1lb0RcLBApG{OiAxpA63B*;&u%enq=1h<==%;N&VZ;3CtvM}M`1XuY*&}c=}8=UKG@;hPHEDM zjywEX9I-n>+^U^*RAny@e*{Sox>KR$8hMVNb1>IsN{CRL&e}l%D`RXdMq~ScZD;4r zFEJkc&Q0a%FN2fAKvOALOkKe4+MbY?;#b??n<_6q;jh?q$N^ECaTtB89i=AV)zZ9<$fdZzI7~sVB1mW2Nl0{sFfG9C?6>RKi)7IewE|k@3 z8E{%w@@H?TFB&2iDfK|?aTZ64cG2p17E4xi-2DjS1$I<(6GpeAyHhuXo1#+HTM)y{ z)%;V_-l;E9-vgr1zOMNG+Gs??u;EwnBBJq}smhNcwBXeKw9bgP&fIrTcNS;E`JiQWFN>aD!y2 z4N9fJJY{O?OS|y8oh;@y?`%1nE@{iGQ(G8i{~W_VyRluRX*}jfF$1lRt7TRp^K%1( zKZtXPdtlSUr==>}0BLk|CRzGE=cb%L1ad6cx$qylzP$dx2?}izroYkdiBEX)P?ZJd zJbKfrvkK=npczD>>`@^*xw?GX~xf}upQFt8^h0B zEt0gu(}6b4;P88Nqo3GUzyNU1LD9X#=*Au>4#s@-99Y_lGhb$C^-0Uu6HCu5Ko}yd z7L~GXS`)<4k_)DLWRY&KZ%>)XT(;}RsY#g8hoNwbWN7y{jG?vZai_?pjBqUBH#fJp zJ5qsqI#yI|O-)1dRo3s%+#{R(^&v%PfvJor==WWglkcPA`iH|ukrct;{+J=eJPu~j zUB82&hIy<_CCg^PXZ}==EbtPjU~hv{?KSWmod=su6R$d520Fkco?`}MOlx9_-OyUKtQD1nEy77;f_-KJji~z$t~U0D zc_h@I>B*W>+2%7ZsKzJ#G5j`_OgoCc2@JaW=+|y3d9e_%5^vP_vZVjqp0^=XeELAJ zdXtx=*6_3C3C)hiEHh1Zso8PveDlQ#a{PdMSz%>Wb=6X8qqh!u~uJk}?Hxzs4nDg%V{GQk?MrP>w7K{Y6U z{_g(r&(`c_NzWO`yX^JMn8kw|*Jwb3%!5aelx$fzG=ggHHeDrON*21-~YY7a7zc5^E% z^B5L%^Qm5%C;yAhqe$f3JB=k|dqy_Fj{DNhYLD1jE*&#s;sP7{Q<=K|t@}{ZO6e-zrBi1 z5IKeI#{J9lMzV)xq66xU$4syoLu}JRJO}Ij0;+sUHhuBPLTQQ^u zOo;vc8@nf?k9TPYfQgE-2^zF;%F15N*pR!{Ahv*Sw~l8_@!>6FjV>|Ck}~8jAtMeE zC2B*|#qY8@4c{RhsIY0H7aOB8nVWh^5Vy3hyJ~A2XHdlUGGKx$u9lsg4ViXvRbV|F+b{v^f13SHrsC&dtB4?XD6E8p`50q^>=-lzDkQSHw+Bt6dj-S0iv?awX)0x zfHwI28aC6Qhq=$pbXUuZ!xbb|lcrJL92^=Z<{>!YyUQa``@H=e z&bj6Xz>jwVkiKSy@BA2@Ckq6))SfS_u*$6f^c>v%;4&T5CfY?su@D9x<`4P71CTxa zUc}3*mUW^%Lf>NZS&MtNCeQ=E{W}L4lRohOG4+;FaRpn~E*jk3-Q7F5yOZGBxYKxW zhsG_qI|O$Lt_kjqLqifEXmI~H=e&1}`)mKLQKNR%s=4Mft8b_`s1(%y20&f^;wx&$ z8cG>zB&MJljxJ}?vE8{@PE-RFfd&|(#>!Y~Dbo1LtG1MSuiG9ao{p*OTRKHzv_eE` zds8-A;6KQAqrl|>*)2RRAv_}|MLX&tj*)Vy-$ohM5z%b6Sd?OA9gn zG?5J(@w-Zeg$WVGTZ6^7JM$p0YklJS%eq)(N?|75HW25Z?dE?~|M?a((k@ z4ue?d{EO$Q^THojw)@UtgwKUJ=4NQi6*|irsU}+XmQiBRYYz`ED;2}i!3`u0=0o>x z3RdcNM2{{1ETw%ak{OIwAd}uCl%bnToI#R*;OT}U-hky24sT-(D_EJ#-q z95FDhSiHpy$ta;*e;l<@cNW>P&FewL5>>ZIzQo}?@LqtaPZq=&%eofaG)&%tYbd;WFM7TA`&tV?9S^g+%O z#h|XuEzFt5L_PAfh+vz29h@20;znnUOL2{iNieQGxaIXoKKOanJ-7nhZ+s z6H9w&@5wxLy`8^3Sva0 z9~Zi97R~s3ZJtl)R#|P2cb|(cw~{-zuT8Fv?!wDIq${JM3v21L|8#4V1?}vmGlDaT zsm2kkakOX%MZD#PPfWG*KbrKZ$u*B=mB|k-Es5UB@g#ZlhEzI64zC0h_KP1g67Rhz z31k<&7TjxcMn7`X8Q*ls3!?bTn<6U65hUyU(#B+1;?~bk6dL}sZ_zR6E8#%d_$I3P zOk5R!`Dy-ya2rYe6HL!lNI1RR16ol|KU*(a9zBjO#b~Ytnj41&GHUo?(Pm)d@CxP5 zVq$Qqbp**0{f-;is(bJm2{+6hXQBqmHN%(!+%@pMz7yrFOE+F`wN?unXHJ)oETw0R zl4i`#{u>GZ+oqLfWuok5^50c4_vJW)jSuJ((g7kOO~S9BBv=((l_e0Hf8Nc7LQOcG z_pt+zsO2R+j$(%>Wbso=&-7`diNjA_DKt9r2rwebK#+|hsMI#bD`)J)qe2bNv+l!N zhN^^;Uh>}A=7F^LaTc&Yl;QR`1$n)exMmEZLgcPl=)FAgAzHC$cq|cM1DxG4vWV-( z-w-I9Xmpp7D#M{Xd+|`frE+!vJD{;}w!Fg++~OPbs05nkzzA}9HRIo}U&NinIY+$* zu3X?l1S(M;WyZvGVNxy3P#RzHM`@gQO6mr>@dl0ziw+5s{lO7G5NuoqOUnkUu+XJa za+%TwNF;I$_l->OrpmSohF`wVNFc|h^?cW}+xRUWO85tEhCAW|wg=ouI9tSr`%?s8 zea$l8FF(T8q52Yeaj}Etru+7zel&~Y@73s(gNEM0eJ4%sYd>IwO33e8#`&CwIU!M6 zIM^qP`fSxw{+L7u?a;CijIYpDx*!%{hxn4B!c}-i5J7iq3eiYC0jjLg2)Hhw`%mRJ zE<$p$T_aBAb)VPZHjoeg3FbiRXSdIp6B(oSFRN(q%Mu|qHnPnqaGHF~q}=Er$=MIt z^=A_vck(%HMD11XOf1CIU(ZSf*-2MR{7Y#8h~))ZzMaxCjGg@g?qcc5Guwr7uz8E> z`C*M5s4SmcJ2y&=I|Lkh1GLDnBff2#Q9Z^Q{j%lTzY68Bk4HBjH!v4jtrJ%c?M!NT zxGL7xji7xsC8rjSU+o>=ORW@%%_mQhi*DT-A$PnkyO&?ZMMHOLq+>*s34k}nu>zs* zitg`+7A1|t1{Goir24OXcmD?&|0tzCadR{Bp#B1~+|2Cc3le3e4b;LuNqmM8ipAqf z9U%LRQ(Ozz>n6^VvUZvzb6p;d{HoL*E3F~X4)!&+MDrDQLU+JROP)kcCc{tQzjGsR zxf^4#4d&fIQgGUA%Kh~mQZ0t5|B+uUK)C+3=v3IcWH4Q1SVCYr>nD^4cwp<&oSx6(H^H21Rr+%@>#% z#PQwBdI=Yn^EwAG9{W?dA;MPZ277}nF29UnZU*y;U7V;I!6rCKrps=?=%yVxL+tbSuS6hy!cWIa>xkuHy8<8|&b(tOh7860P zqk?I3p7TG#IeS4Y&1|T~55f6?ZUYd^aSjM!tx1Z!Yo5#BnQhmwuh4Z-HJy`%RNC1= ztW}YlQMHU+p`F^%r_WEIwna_j_;VHBTLo`7THdhl7wk7lA5lTqjgl%zh{~j$zZ@gG zVf;MLR*bFXHcMwERw@u{PMqB&cu^A;ZCbv!%-Z5S)3Lv)cteL{*6i{ciL=^q^*b^2 zy)P;!M^_7^_p2g(skUGbpHSuknK}KVsndiHVFc!NO=O$|`Nt_$jPg!-VR+irUd+

geuUD~ggbcNZ=o7VXe~k2y-X zQm+S02X?Eg;5k-_+-k}ad7g#qi~JcM(VzP8=*y`2ZV=14?C?kXk0C`Ft=fLl!z?(Z zkm?xhto zC15huYvJdI9)1Ckq+aR!iGD1WyzRqCDz84uDOTeV$THbQH`$fNWuBxwo7g#x5xBsD z=p%A18_4W4RD{xL;)cOR**m;d!q(X=j3hwQq}X;dq-)qXeTv@L-o>dav^XSx``CL- zsFtSTZeYzSaxLGd0Qf;DS!WJD^+YvVnr<{*gK@Mg4YI3@#vuI-QKIzVc?CE zHEn~=ObY&2#k%i{wS;kN^U#MgLr~z`G&NRx#0rFCl~Cjt1E9P<1SwEqf9rt3_oE9b zP=r-MgwClo(lukaBtas6~<9wOS@pzKeVxLd&5}*j+gX* zL~F+DM=W$i$h|J4>pJcDU62<}!y3DKY5LL*`8n?XVp}ojoGdmCfl`mL5%+8m@tm~h z#tGY_r(Ece=>(r3=$ux0PiQSjn~E?T2pZelp)+hRZVFIe{Ypw2?V^4b2GbSahR#E? z6nEKyQVg6Jd0)4Q*<0OeHHwLn-8~GjK60S70DAL2o<53chBFlN8pk(4uz2f4u>k1)E4d;`yOJ6;mhTYWh~) z_#2rDuT-Sl%-C5)d$pj@L^80LCJ}K0FQ1-q@r~ns08jfj`<9Zdy;=|EX7cbxjih=h zEr=xD$$ayGg&3-miJ=w--bs-PL{<94{I~1p6ri&aywfNCK`iH+rgzY9rTx#j0eIm> z=JNW2O5}S$P&%A?`)7rwSW@1DbS-PA(7%+PN~cE9_w)-0lYKY^2LWh%8FQI(8?vsA zHh%4SQR2bxGAc`(`}rTT$|HzFUB+g4z8nVMGWQyR3qj~J_>~HMkRTTAvx@LkW|2wnwrl#S4{k>&P zLx>hO5C4po|D=~xGv-%+w_V26(Fx|R0UOw!0y~13k2a|Y@*j(Yi}C&)s%RMI>}OSz z5Oj;*9v?2GEk-pJQV^-ofxafw%m_aeiC0UwFkLGI5>rHAgf8+)v5uO&6U@q|6q;&v znx|)>KsJ?h0OVb77V>Vz>+o_NtJSrQ%C+oi#<}H*!y?n)r{;T2uBQlYhrYF$Gc*na znaoE`<;>{R+S|q~*WFymI0n}0EsPtcTEHu{$nBtNXuQ5UBFLrR*+;)1h<|IN<^8qn z)?SX=Y}hKB5(US*gx{FG;+885`$hgkr+R{Cl(22fcfkc_PqwW*t%=iG?4j%@TNxv3 z@@3rt4k0p8G~~gJ⁣31feg}Is3jw807X_m_#RHbC4^v@00+tFYlNGqcADjbGTXK z92#7JC>%2igaYoUztnXlq-uwpyta~51jNPr2q)lILig*$1aN= z0S;om?(|(Dbn@uGpKA4<;w4SA;hMX&#-~*cUNN%UY9MvR;9gSF>*iZ#w_Eu>6>JV5 zk?0XG`lw4Npzd3=&f}P(wLH~o#|VoUofV0amV;$D9Gl32(zKSfedr^Vj+T%Il~4Ld z?`krd1mIa~Haw;l`k7@Rk)T^<4&o>cM@juhZ$|@5A){d%T=TS4o)zw=V7t=jgyS*& zN~bU?5;8j;>(D17T8Rn)OhKLTBSKUFM?(lMgULaM-Ux%Ej4_JaXi5eufW9HL)Cn&W z{v}!JZ@YR)0>v{X;tJtJc^ikjr>q$4Y@1hcKkmyHYn`RN-={UxJOL1%a5t>7q_;vlJluUkm{^)bhDo~`GtJ@D$C zB8$HnN_Yjs2ochdp|p~@P5j8~i)!{u1&B~bEB}C&S74q% zi}cqPHdd!oEgo}ROh8mBH*}(qL}E3kBq<|#=$!gTi&^wn$<^334Y zzYn9&wRn-=%z|!X&_=*g7ly8ukp=Vq z5Wm24AN!{xMFZ;sRLEVbW5Z(|RPi~Cs}mlCUR zqIr2`ZQ*00^)Y`#ha_F|+?xhrk@&2ho>E{es$x)O?aiqdAf=ey-TV5B2kJ?Tv%wy_ zzQ&5j1IIXFEuX$2Lft_&mpn3-uo!_S(5UlLWD#dOaJ14ENN1BLJnT0d_!H}y zzoktQx=nCm%9q6!&qUCl@=LEMu)uBm>VOi33^`rstwR=2=<|z(jUT7;iV|Py^h5?} z2xa!}`6`d~4bQlIY`+(NkmJUoWk&&`;I~|$7{!QidlFR@6>A0C1j60>dOt2z!~H^D z1`*ll#^5|s2B{lRMCW#tVSiF!{I;F)n{`4^@K?LHmFEzSLmCx>p+4LEI3)p^E)SY9 zdaO*j8NPddbzQAVlh!h^mz0tkQN;EMq_F-cyuVS~cu;#^U=6FMQ2o1ZCpe>#o5c0~ zyBU9G<}8z^Be4uZ1UkrUPl6F{D=+_=R9-DeKV>d+Xatn-|C` z4=AdM6JF0px@758T@H>segH0RjRhoY^czvP6_qayPycdGA!>;D1kcj!ES5a|<~0P# zp}%K&!uo4Oy|sy1shFqw_~=CDlh^K6yt`P6T((&B0W$U0kwVgMlIs^TVo*9FSj0G* zJ(I&5`oeK(?&?u%H=j{tN1bWaV?h!lOvh$bWk;j7ieT?xsOE#%;O((@`=xkbn_%NU zP;kDzJ|)JV{?NivByj0N)SfPs7~em7FF=tg?+T^#^H-pd$!x-5pIyvpxWCvV&FXX- ztv0O4di$uof|2Nv07a$^XLxzR48;&5Ylv^(028`dly6v9r=$L2GWeYdA=la#Z%SgC zkqVsENFgE)L3iak@o60-adq81U8K^8#vH%t1Q=sr4kH@M@;KgLKiyN_wk$$L+@gu995XaYCbN#-DQrz;PCH++b(XqpNZNFA|x{otxNG$mxHVUl^ zY(-z}MZMwJ&MxNcZE`al05-J5M4-fo%dqXCfi+WygnlQN9{^5v;p~n?>*_`}{XCec zAUmsY=bQ>ijl7CtM`J>8OUh(#qHyrBC+LP4BaARK>LRF<@*}yPjQpi%vqa#Fi-S+BBl1az69lXf)sC;J9<_wcx+(1y!PS%1Id$;O}_ac))rMVby$K zws2&=z$zv582>sl17My>XVpT}≠j!ab8%cq!EtD8hqP6hp&_MmCIWe#o1X2p9YA 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 literal 31034 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 Wm2iLse+-N>z#j?F;OLqieET0?YG4Tf literal 0 HcmV?d00001 diff --git a/Raspberry.System.nuspec b/Raspberry.System.nuspec deleted file mode 100644 index 23ffa1d..0000000 --- a/Raspberry.System.nuspec +++ /dev/null @@ -1,33 +0,0 @@ - - - - Raspberry.System - 0.0.0 - Raspberry.System - Eric Bézine - Raspberry-Sharp - http://opensource.org/licenses/GPL-2.0 - https://github.com/raspberry-sharp/raspberry-sharp-system/wiki - https://raw.github.com/raspberry-sharp/raspberry-sharp-system/master/Icon.png - true - - Raspberry.System is a Mono/.NET assembly providing access to Raspberry Pi system features. - - It is an initiative of the Raspberry# Community, aimed at providing tools and information concerning use of Raspberry Pi boards with Mono/.NET framework. - Visit project [Github site](https://github.com/raspberry-sharp/raspberry-sharp-system/) for documentation and samples. - -

Raspberry.System is a Mono/.NET assembly providing access to Raspberry Pi system features. - en-US - Raspberry Pi Mono System Timers - - - - - - - - - - - - diff --git a/Raspberry.System/Model.cs b/Raspberry.System/Model.cs index f6d6dd5..e453118 100644 --- a/Raspberry.System/Model.cs +++ b/Raspberry.System/Model.cs @@ -56,7 +56,7 @@ public enum Model /// /// Pi 3 Model B. /// - B3 + B3, /// /// Compute module 3. diff --git a/Raspberry.System/Processor.cs b/Raspberry.System/Processor.cs index 01e2b69..dc03a5f 100644 --- a/Raspberry.System/Processor.cs +++ b/Raspberry.System/Processor.cs @@ -18,6 +18,11 @@ public enum Processor /// /// Processor is a BCM2709. /// - Bcm2709 + Bcm2709, + + /// + /// Processor is BCM2835 + /// + BCM2835 // <- added this one JJ FIX per RB3/CM3 } } \ No newline at end of file From 7057f5a9095b9f7cd20ee910ed015bafb98d3406 Mon Sep 17 00:00:00 2001 From: JTrotta Date: Wed, 13 Sep 2017 12:27:37 +0200 Subject: [PATCH 04/11] Readme Updated --- README.md | 2 +- Raspberry.System.3.0.0.nupkg | Bin 26745 -> 26752 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 57fc772..b5bd59e 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Features ### Raspberry.System Raspberry.System provides utilities for Raspberry Pi boards, while using .NET concepts, syntax and case. -You can easily add a reference to it in your Visual Studio projects using the **[Raspberry.System Nuget](https://www.nuget.org/packages/Raspberry.System)**. +You can easily add a reference to it in your Visual Studio projects using the **[Raspberry.System Nuget](https://www.nuget.org/packages/Raspberry.System3)**. It currently support the following features: + Automatic detection of various Raspberry Pi revisions, as of 2013-09, **Raspberry Pi model B rev1 and rev2 and Raspberry Pi model A** diff --git a/Raspberry.System.3.0.0.nupkg b/Raspberry.System.3.0.0.nupkg index b48cf555c247518a011121f5f01f2deb7f0bbda5..ae681e9461895830d5ad40e52c6019223d4cfdbb 100644 GIT binary patch delta 1723 zcmex)fwAEtqj-QfGYc032vj8LdS4XI(*DNC!0>IOxFDmFv0h$jaY1Ubl7eT7tx}Mg zsiC2%fw_^9L9&5~p}Db=g8syVDwA^=tL==9OidF_43pC=lZ;F(EzB)bjFU`_EK z1{sE+#NvXa)S{wFz2M5?lGI$7gC;MGk*VJrdNxnkP+(v9BU!i8tSX!Qr1?Z|TdYmhDuOt1zfkyU6q95|gnwz6Kl_uW4algj+e$D1{=kxDx z-dkG`>-Q$x0Ia^WaA{W#@W?N>LBFk_QR z!HY#L>&t@YYo#CIl9o7fuAn-ar@VFTPN%8&iYKxdaqK^{V0!D9P2IPRW1mc)w3<^$ z_ws7hYLmr2Etfeif1TBTDbebTi@Y1h`oA*rN>Q;c9+AIiDxd53(6;#T@oV=s4rU9t zNg)e5*8QLx^uad@y8dXE`bW#m!{_1{JR`< zfk)`voKhuQ`(11&d+O7S;+-y3FP|;SCh0Nrpml`$;nudPY%>;pF;!e19eYsteo@qg zuxj1C`_S}*6$HkWZ#m}zCS>80$U0+C6%45r(c zNb~x}+^}eKm8e(A@VfNi(8b(aU%$s~&dW9}JJkO8nl4BBkB>($Pk*dh-|}xk!78(i zzpKtK%b&JvR{P2nrFnHJT-T3zME!GjHoAEIM#OSUuVcl}Cw~6Bh-3188;Q=tn*|GE zL;Gqr2MenGlUb_!`a{Fh40iMIhtaPe|9Ch-^|^GeY0!epWwLA3_||(gcWt_+_ICZ1 zSG|Y$ou<7$Ij6n5aMP*@a#q$?Q+?MO33FC>s{Yzu`_3XWZ5Lm>x&PK5&%Ijw^(J&4 zUz(;=b$;_Zd4|vNp!_Amz{J1-%wL=5tA&U&0ckVVk5V97Q=x9%ApR_mX<*vO>n2#9*Y`h|&*vWprt<={*+J@NhYNuDYa=?q>dd2A8HGU^DmmOZ6n7MIf>Hu#>CS3+tSWT`ULvy<0GwO7}B!XtyzZ-AOZ;kQM$` zA5^`7h2~FSAd8@Am^Ardsxnv&-}|gPZ9r$7=44=yMp2_RnK?}hWT<|c3?u7gpEM;9 zrvS)do7|fQ_SNn*8SAtF28QCIWPPXn#G(|vWsZW&3-^*1dt42V9=jDAzdEq7t}^&2n!>d$}oSjZ-x>VA23d0l0gyxq}5YR delta 1631 zcmZp;$oTUDqj-QfGYc032ux1U^CY4cY`28OR2#RVA^_3}!K3sRGn6g*RGm4YlS zQxcPnQ;iIgjgn0a(#(_;^d}xvnViR1ZD(ncn3|GoX>6Qol4N3(YH696oMxV6Y@B3i zY>;eXZlG6CoSTwd05vEvF)_^~(ZnLjz}UnjE!kqSI+L6V$aeFqxhv;0F)$>sF))ZT z$S?#Y78fL?78OfAq~=b}Vp6FOIh%LIKww|^BU!hHOhVH6(R`w(mSwFD65Sel zRbH>7`SqDJ-(>4E7I*dXj~Ev`IKcdo%i?Cr$3>${@U|p?|oUz zJ=V;ft1|ng1>=@eqPM0^Uh?tsMZZn6?QfsRTA7#HDez#L`pGlDfAtEiNy|`K?xtPz zW?8*m=(!G6GlPz`AD=Cgc+YXWpjT_}b0y9cfqiEdOmF?NseiX|>=W@xuccL@mQ3gV zmSH5wr|fY*Yv0_y%Y|xf22K@kwQCyEE9DqdAE)OMwTz8-kB@ded!BEoxXGaZqaL}Xs9Z! zI$7)VlwFC>XX&@i&z8+Dx!<_J@oh)?q*sFFvyR5xf92yM@^Q`7&4$`1D}Q}IbFide zrH|P&>bB92E0V4Wm+)^}@t!-DUA+xaC@6jIsVCrsseE;UUmq3e=)%bdI~to^meGaaMfZvFC$ z@1XC&^B>Cp6Ghy6N!5Sp3;ysN80fdgpOnYFFXI zqlRY=|4?=ep2YUNFYofc{oiMmhOgc#Y$sEi=V)=bUw_^|i#Vqj{PkSRrJAql|IYcH zmibD{M^*Ua7v8PYgKOe!K_CcT%$s!Y&FWvUm3Puv`%1C zgzqz*7@tY0tzQn@T&XAhYL3SNeQ&Lc`(=yNJ*_W?{@4|J<K$eVhC7pe zV+<7tWzEg=V&s@7?~R`}IV2&J1Ehb&j*YK2Z%jyKoE(@`Hd!pmdh+q4g%FcrrNiXX zWSun391AW+poA4LAEW1AXn7Lg&B&z701F^pZv!pE)3c?3`sOh($RV4-pvB5Cd7+Fv zAF7VYjVUtBvI-z6naO)n_<^A@`DL;U^JF!!kYGwq4w{CuDKd;NC%;P31u2zGm0`Z% zz%covgVN-vR34B}Myd>>_~h196%c1NP`=NDVe)zp(aHBA@^69iYLmIrwB$ja{y0?NO}?Kd4RXt$G#TdpaE8en!o|@8!699SapC0Hbg;TAAV+)h^mKV8loS9=1%W6A w8^r+2`TdMqL4=Y8w8VylBcgr)rHulhmp~ZR>oX^ZWGHd*vNAA)C4;O40ItPUt^fc4 From c9862a38558240f415b853446689471d83efc53b Mon Sep 17 00:00:00 2001 From: JTrotta Date: Wed, 13 Sep 2017 14:30:39 +0200 Subject: [PATCH 05/11] Updated file version --- Raspberry.System.3.0.0.nupkg | Bin 26752 -> 26752 bytes Raspberry.System/Properties/AssemblyInfo.cs | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Raspberry.System.3.0.0.nupkg b/Raspberry.System.3.0.0.nupkg index ae681e9461895830d5ad40e52c6019223d4cfdbb..368dee24a8e4a917eb558a5ae373bcf7e9d52aa4 100644 GIT binary patch delta 475 zcmZp;$k=d^Q7FKhnT3l11U6*odNbaB>%CD(jZrAcEYZT)Jk{7V(b&Yo+)PP9f8s%v z$$5-5wy7pbmd3`(DMkjVCTWHSmMI3QiK&(rX-0`4Aw#`_;@p(v0wo2{6kDaBL{md^ zb0cF@<5WXS6XQh7$?8mUOdB#byEA=c0?}5iA>tr}BGB1I;&~NOc5J zt5Y37)Z0{d5M`ET52DJ`JVDf*C(Q{&Ii!PmRp~Y$-i~x{69O)U26ccpBaSx#V-zwqG&D6ZH!?CvHZU`_NCOM{xq|NS3ADKY36>Eq%h@K$xQ3^yio0qVG=%2Pv!SW9r zT)}*G_fkfX_&kqkVA{;BRat9tfN^${K-x+ zw(U|v;LXUS M%K(eR$>tfJ032qQwg3PC diff --git a/Raspberry.System/Properties/AssemblyInfo.cs b/Raspberry.System/Properties/AssemblyInfo.cs index e57f5af..163f497 100644 --- a/Raspberry.System/Properties/AssemblyInfo.cs +++ b/Raspberry.System/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.0.0")] -[assembly: AssemblyFileVersion("1.2.0.0")] +[assembly: AssemblyVersion("3.0.0.0")] +[assembly: AssemblyFileVersion("3.0.0.0")] From 8f5ff5707c1ed0e02ac615b7778cc37f592fbe98 Mon Sep 17 00:00:00 2001 From: JTrotta Date: Fri, 22 Sep 2017 10:11:33 +0200 Subject: [PATCH 06/11] Refactoring --- Raspberry.System.3.0.0.nupkg | Bin 26752 -> 11167 bytes Raspberry.System/Properties/AssemblyInfo.cs | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Raspberry.System.3.0.0.nupkg b/Raspberry.System.3.0.0.nupkg index 368dee24a8e4a917eb558a5ae373bcf7e9d52aa4..4df8e0e75fc638ad45d827e29fb39e5b767f5e4a 100644 GIT binary patch delta 6933 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 delta 22231 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∓hxo?9?KEnKYIEt$fNd}?-=zS>lb}?`aT^+b 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 diff --git a/Raspberry.System/Properties/AssemblyInfo.cs b/Raspberry.System/Properties/AssemblyInfo.cs index 163f497..4879375 100644 --- a/Raspberry.System/Properties/AssemblyInfo.cs +++ b/Raspberry.System/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.0.0.0")] -[assembly: AssemblyFileVersion("3.0.0.0")] +[assembly: AssemblyVersion("3.0.1")] +[assembly: AssemblyFileVersion("3.0.1")] From df80adbd687504fc5bc15207bbc18177a6275ab9 Mon Sep 17 00:00:00 2001 From: JTrotta Date: Tue, 3 Oct 2017 14:25:52 +0200 Subject: [PATCH 07/11] Refactoring --- Raspberry.System.3.0.0.nupkg | Bin 11167 -> 11170 bytes Raspberry.System/Properties/AssemblyInfo.cs | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Raspberry.System.3.0.0.nupkg b/Raspberry.System.3.0.0.nupkg index 4df8e0e75fc638ad45d827e29fb39e5b767f5e4a..0539e3709ae956f81a5331f58b99086a0822a150 100644 GIT binary patch delta 7090 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

-@sGRsr(1%ovD^9H2Fr&4~?1$ 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 WNPmmqKdF$MpdPG@=na6soBsoh`MG`o delta 7037 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 G!~X@f18xWa diff --git a/Raspberry.System/Properties/AssemblyInfo.cs b/Raspberry.System/Properties/AssemblyInfo.cs index 4879375..55737b7 100644 --- a/Raspberry.System/Properties/AssemblyInfo.cs +++ b/Raspberry.System/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.0.1")] -[assembly: AssemblyFileVersion("3.0.1")] +[assembly: AssemblyVersion("3.1.0.0")] +[assembly: AssemblyFileVersion("3.1.0.0")] From a34e3a56ae21bb4b915721d89489e4685a37e06c Mon Sep 17 00:00:00 2001 From: Gerardo Date: Fri, 20 Oct 2017 17:16:56 +0200 Subject: [PATCH 08/11] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b5bd59e..fa0ecea 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ + +[![BCH compliance](https://bettercodehub.com/edge/badge/JTrotta/raspberry-sharp-system?branch=master)](https://bettercodehub.com/) + Raspberry# System ================= @@ -19,4 +22,4 @@ You can easily add a reference to it in your Visual Studio projects using the ** It currently support the following features: + Automatic detection of various Raspberry Pi revisions, as of 2013-09, **Raspberry Pi model B rev1 and rev2 and Raspberry Pi model A** -+ High resolution (about 1�s) timers ++ High resolution (about 1µs) timers From 0754881e1a57bd33b725b6162b879e05405f6209 Mon Sep 17 00:00:00 2001 From: JTrotta Date: Mon, 6 Nov 2017 19:22:23 +0100 Subject: [PATCH 09/11] Added PiZeroW support --- Raspberry.System/Board.cs | 3 +++ Raspberry.System/Model.cs | 7 +++++++ Raspberry.System/Properties/AssemblyInfo.cs | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Raspberry.System/Board.cs b/Raspberry.System/Board.cs index 1165470..3dfb13e 100644 --- a/Raspberry.System/Board.cs +++ b/Raspberry.System/Board.cs @@ -243,6 +243,9 @@ private Model LoadModel() case 0x0093: return Model.Zero; + case 0x00C1: + return Model.ZeroW; + case 0x2082: return Model.B3; diff --git a/Raspberry.System/Model.cs b/Raspberry.System/Model.cs index e453118..34db309 100644 --- a/Raspberry.System/Model.cs +++ b/Raspberry.System/Model.cs @@ -53,6 +53,11 @@ public enum Model ///

Zero, + /// + /// Pi Zero W. + /// + ZeroW, + /// /// Pi 3 Model B. /// @@ -96,6 +101,8 @@ public static string GetDisplayName(this Model model) return "Raspberry Pi 2 Model B"; case Model.Zero: return "Raspberry Pi Zero"; + case Model.ZeroW: + return "Raspberry Pi Zero W"; case Model.B3: return "Raspberry Pi 3 Model B"; case Model.ComputeModule3: diff --git a/Raspberry.System/Properties/AssemblyInfo.cs b/Raspberry.System/Properties/AssemblyInfo.cs index 55737b7..99f53f9 100644 --- a/Raspberry.System/Properties/AssemblyInfo.cs +++ b/Raspberry.System/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.1.0.0")] -[assembly: AssemblyFileVersion("3.1.0.0")] +[assembly: AssemblyVersion("3.1.1.0")] +[assembly: AssemblyFileVersion("3.1.1.0")] From 75915b43dd404b3bdb02e3456409510e4d146df2 Mon Sep 17 00:00:00 2001 From: chris Date: Thu, 9 Nov 2017 18:45:25 +0000 Subject: [PATCH 10/11] Significant refactoring for new revision codes. Not quite complete yet. --- .gitignore | 7 +- README.md | 2 +- Raspberry.System/Board.cs | 357 +++++++++++------- Raspberry.System/Core.cs | 71 ++++ Raspberry.System/Model.cs | 2 +- Raspberry.System/Processor.cs | 12 +- Raspberry.System/Properties/AssemblyInfo.cs | 4 +- Raspberry.System/Raspberry.System.csproj | 2 + Raspberry.System/Tracing.cs | 22 ++ RaspberrySharp.System.sln | 24 +- Test.Board/Program.cs | 16 +- .../Properties/AssemblyInfo.cs | 36 ++ .../TestNewStyleRevisionParsing.cs | 132 +++++++ .../TestOldStyleRevisionParsing.cs | 134 +++++++ .../Tests.Raspberry.System.csproj | 60 +++ .../Tests.Raspberry.System/packages.config | 4 + 16 files changed, 727 insertions(+), 158 deletions(-) create mode 100644 Raspberry.System/Core.cs create mode 100644 Raspberry.System/Tracing.cs create mode 100644 UnitTests/Tests.Raspberry.System/Properties/AssemblyInfo.cs create mode 100644 UnitTests/Tests.Raspberry.System/TestNewStyleRevisionParsing.cs create mode 100644 UnitTests/Tests.Raspberry.System/TestOldStyleRevisionParsing.cs create mode 100644 UnitTests/Tests.Raspberry.System/Tests.Raspberry.System.csproj create mode 100644 UnitTests/Tests.Raspberry.System/packages.config diff --git a/.gitignore b/.gitignore index fcb74bf..0056bec 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ TestResults **.user **.suo **.sdf +.vs/* # resharper /_[Rr]e[Ss]harper.* @@ -19,4 +20,8 @@ TestResults [Tt]humbs.db [Dd]esktop.ini -RaspberrySharp.System.userprefs \ No newline at end of file +RaspberrySharp.System.userprefs + +# Nuget packages +packages/* +!packages/repositories.config diff --git a/README.md b/README.md index fa0ecea..44bd2bf 100644 --- a/README.md +++ b/README.md @@ -21,5 +21,5 @@ Raspberry.System provides utilities for Raspberry Pi boards, while using .NET co You can easily add a reference to it in your Visual Studio projects using the **[Raspberry.System Nuget](https://www.nuget.org/packages/Raspberry.System3)**. It currently support the following features: -+ Automatic detection of various Raspberry Pi revisions, as of 2013-09, **Raspberry Pi model B rev1 and rev2 and Raspberry Pi model A** ++ Automatic detection of various Raspberry Pi revisions, as of 2017-11: **Raspberry Pi model B rev1 up to Pi 3 model B** + High resolution (about 1µs) timers diff --git a/Raspberry.System/Board.cs b/Raspberry.System/Board.cs index 3dfb13e..fd47a44 100644 --- a/Raspberry.System/Board.cs +++ b/Raspberry.System/Board.cs @@ -1,9 +1,11 @@ #region References using System; +using System.Collections; using System.Collections.Generic; using System.Globalization; using System.IO; +using System.Text; #endregion @@ -13,29 +15,30 @@ namespace Raspberry /// Represents the Raspberry Pi mainboard. ///
/// - /// Version and revisions are based on . + /// Version and revisions are based on . /// for information. + /// NOTES on V3.1.2: + /// + /// IsOverClocked has been removed. This used the "warranty" flag (i.e. void if overclocked) but this policy was changed. + /// Firmware has been changed to RevisionCode. + /// /// public class Board { + #region Fields - private static readonly Lazy board = new Lazy(LoadBoard); - - private readonly Dictionary settings; - private readonly Lazy model; - private readonly Lazy connectorPinout; + private static Board board; + private uint revisionCode; + private IList cores = new List(); #endregion #region Instance Management - private Board(Dictionary settings) + private Board() { - model = new Lazy(LoadModel); - connectorPinout = new Lazy(LoadConnectorPinout); - - this.settings = settings; + LoadBoard(); } #endregion @@ -45,10 +48,7 @@ private Board(Dictionary settings) /// /// Gets the current mainboard configuration. /// - public static Board Current - { - get { return board.Value; } - } + public static Board Current => board ?? ( board = new Board() ); /// /// Gets a value indicating whether this instance is a Raspberry Pi. @@ -56,28 +56,7 @@ public static Board Current /// /// true if this instance is a Raspberry Pi; otherwise, false. /// - public bool IsRaspberryPi - { - get - { - return Processor != Processor.Unknown; - } - } - - /// - /// Gets the processor name. - /// - /// - /// The name of the processor. - /// - public string ProcessorName - { - get - { - string hardware; - return settings.TryGetValue("Hardware", out hardware) ? hardware : null; - } - } + public bool IsRaspberryPi { get; private set; } /// /// Gets the processor. @@ -85,73 +64,41 @@ public string ProcessorName /// /// The processor. /// - public Processor Processor - { - get - { - Processor processor; - return Enum.TryParse(ProcessorName, true, out processor) ? processor : Processor.Unknown; - } - } + public Processor Processor { get; private set; } /// - /// Gets the board firmware version. + /// Gets the board revision code. This is the number from cpuinfo containing many details about the board. /// - public int Firmware + public uint RevisionCode { - get + get => revisionCode; + private set { - string revision; - int firmware; - if (settings.TryGetValue("Revision", out revision) - && !string.IsNullOrEmpty(revision) - && int.TryParse(revision, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out firmware)) - return firmware; - - return 0; + revisionCode = value; + ParseRevisionCode( value, SetBoardParams ); + ConnectorPinout = LoadConnectorPinout(); } } /// - /// Gets the serial number. + /// Gets the board revision, i.e. 1.1 etc. /// - public string SerialNumber - { - get { - string serial; - if (settings.TryGetValue("Serial", out serial) - && !string.IsNullOrEmpty(serial)) - return serial; + public Version Revision { get; private set; } - return null; - } - } + /// + /// Gets the memory size in MB. + /// + public int MemorySize { get; private set; } /// - /// Gets a value indicating whether Raspberry Pi board is overclocked. + /// Gets the serial number. /// - /// - /// true if Raspberry Pi is overclocked; otherwise, false. - /// - public bool IsOverclocked - { - get - { - var firmware = Firmware; - return (firmware & 0xFFFF0000) != 0; - } - } + public string SerialNumber { get; private set; } /// /// Gets the model. /// - /// - /// The model. - /// - public Model Model - { - get { return model.Value; } - } + public Model Model { get; private set; } /// /// Gets the connector revision. @@ -160,103 +107,234 @@ public Model Model /// The connector revision. /// /// See for more information. - public ConnectorPinout ConnectorPinout + public ConnectorPinout ConnectorPinout { get; private set; } + + /// + /// Gets the list of cores on this board. + /// + public IList Cores => cores; + + /// + /// Pretty prints the board info. + /// + public override string ToString() { - get { return connectorPinout.Value; } + var sb = new StringBuilder( $"Board:\t\t{Model.GetDisplayName()}\n" + + $"Revision code:\t0x{RevisionCode:X}\n" + + $"Model:\t\t{Model}\n" + + $"Revision:\t{Revision}\n" + + $"Processor:\t{Processor}\n" + + $"Memory size:\t{MemorySize} MB\n" + + $"Connector:\t{ConnectorPinout}\n" + + $"Serial#:\t{SerialNumber}\n" ); + + foreach ( var core in Cores ) sb.Append( "\n" + core ); + + return sb.ToString(); } #endregion #region Private Helpers - private static Board LoadBoard() + private void LoadBoard() { + var readingCoreInfo = false; + IsRaspberryPi = true; + string[] cpuInfo; try { - const string filePath = "/proc/cpuinfo"; - - var cpuInfo = File.ReadAllLines(filePath); - var settings = new Dictionary(); - var suffix = string.Empty; - - foreach(var l in cpuInfo) - { - var separator = l.IndexOf(':'); + //const string filePath = "/proc/cpuinfo"; + const string filePath = @"c:\ddata\Temp\cpuinfo"; + cpuInfo = File.ReadAllLines(filePath); + } + catch (Exception ex) + { + Tracing.TraceError("Unable to read cpuinfo - are you sure this is a Pi? " + ex.Message); + IsRaspberryPi = false; + return; + } - if (!string.IsNullOrWhiteSpace(l) && separator > 0) - { - var key = l.Substring(0, separator).Trim(); - var val = l.Substring(separator + 1).Trim(); - if (string.Equals(key, "processor", StringComparison.InvariantCultureIgnoreCase)) - suffix = "." + val; + Core currentCore = null; + foreach (var l in cpuInfo) + { + var separator = l.IndexOf(':'); - settings.Add(key + suffix, val); + if (!string.IsNullOrWhiteSpace(l) && separator > 0) + { + var key = l.Substring(0, separator).Trim().ToUpper(); + var val = l.Substring(separator + 1).Trim(); + switch (key) + { + case "REVISION": + uint revision; + if (uint.TryParse(val, NumberStyles.HexNumber, null, out revision)) + { + RevisionCode = revision; + } + break; + + case "SERIAL": + SerialNumber = val; + break; + + case "PROCESSOR": + int coreNum; + if ( int.TryParse( val, out coreNum ) ) + { + currentCore = new Core(coreNum); + cores.Add( currentCore ); + } + else + { + currentCore = null; + } + break; + + default: + currentCore?.SetState(key, val); + break; } - else - suffix = ""; } + } + } + + /// + /// Parses the Pi's revision code. + /// + public static void ParseRevisionCode( uint revisionCode, Action setBoardParams ) + { + var oldStyle = ( revisionCode & 0x00800000 ) == 0; // Bit 24 + if ( oldStyle ) + { + ParseOldRevisionCode( revisionCode, setBoardParams ); + return; + } + + var memSizeBits = ( revisionCode & 0x00700000 ) >> 20; // Bits 21-23 + var memSize = 256; + switch ( memSizeBits ) + { + case 1: + memSize = 512; + break; + case 2: + memSize = 1024; + break; + } - return new Board(settings); + var procBits = ( revisionCode & 0x000F000 ) >> 12; // Bits 13-16 + var proc = Processor.Bcm2835; + switch ( procBits ) + { + case 1: + proc = Processor.Bcm2836; + break; + case 2: + proc = Processor.Bcm2837; + break; } - catch + + var typeBits = ( revisionCode & 0x0000FF0 ) >> 4; // Bits 5-12 + var type = Model.Unknown; + switch ( typeBits ) { - return new Board(new Dictionary()); + case 0x00: + type = Model.A; + break; + case 0x02: + type = Model.APlus; + break; + case 0x03: + type = Model.BPlus; + break; + case 0x04: + type = Model.B2; + break; + case 0x06: + type = Model.ComputeModule; + break; + case 0x08: + type = Model.B3; + break; + case 0x09: + type = Model.Zero; + break; + case 0x0a: + type = Model.ComputeModule3; + break; + case 0x0c: + type = Model.ZeroW; + break; } + + var revisionBits = revisionCode & 0x000000F; // Bottom 4 bits + var revision = new Version( 1, (int)revisionBits ); + setBoardParams( type, revision, memSize, proc ); } - private Model LoadModel() + private static void ParseOldRevisionCode( uint revisionCode, Action setBoardParams ) { - var firmware = Firmware; - switch (firmware & 0xFFFF) + switch ( revisionCode & 0xFFFF ) { case 0x2: case 0x3: - return Model.BRev1; + setBoardParams( Model.BRev1, new Version( 1, 0 ), 256, Processor.Bcm2835 ); + break; case 0x4: case 0x5: case 0x6: - case 0xd: - case 0xe: - case 0xf: - return Model.BRev2; + setBoardParams( Model.BRev2, new Version( 2, 0 ), 256, Processor.Bcm2835 ); + break; case 0x7: case 0x8: case 0x9: - return Model.A; + setBoardParams( Model.A, new Version( 2, 0 ), 256, Processor.Bcm2835 ); + break; + + case 0xd: + case 0xe: + case 0xf: + setBoardParams( Model.BRev2, new Version( 2, 0 ), 512, Processor.Bcm2835 ); + break; case 0x10: - return Model.BPlus; + setBoardParams( Model.BPlus, new Version( 1, 0 ), 512, Processor.Bcm2835 ); + break; case 0x11: - return Model.ComputeModule; + case 0x14: + setBoardParams( Model.ComputeModule, new Version( 1, 0 ), 512, Processor.Bcm2835 ); + break; case 0x12: - return Model.APlus; + setBoardParams( Model.APlus, new Version( 1, 1 ), 256, Processor.Bcm2835 ); + break; - case 0x1040: - case 0x1041: - return Model.B2; + case 0x13: + setBoardParams( Model.BPlus, new Version( 1, 2 ), 512, Processor.Bcm2835 ); + break; - case 0x0092: - case 0x0093: - return Model.Zero; + case 0x15: + setBoardParams( Model.APlus, new Version( 1, 1 ), 512, Processor.Bcm2835 ); // Ambiguous - could have 256MB. + break; - case 0x00C1: - return Model.ZeroW; - - case 0x2082: - return Model.B3; - - case 0x20A0: - return Model.ComputeModule3; - default: - return Model.Unknown; + setBoardParams( Model.Unknown, new Version( 0, 0 ), 0, Processor.Bcm2835 ); + break; } } + private void SetBoardParams(Model model, Version revision, int memSize, Processor proc ) + { + Model = model; + Revision = revision; + MemorySize = memSize; + Processor = proc; + } + private ConnectorPinout LoadConnectorPinout() { switch (Model) @@ -273,8 +351,9 @@ private ConnectorPinout LoadConnectorPinout() case Model.APlus: case Model.B2: case Model.Zero: + case Model.ZeroW: case Model.B3: - case Model.ComputeModule3: + case Model.ComputeModule3: return ConnectorPinout.Plus; default: diff --git a/Raspberry.System/Core.cs b/Raspberry.System/Core.cs new file mode 100644 index 0000000..8bb739d --- /dev/null +++ b/Raspberry.System/Core.cs @@ -0,0 +1,71 @@ + +namespace Raspberry +{ + /// + /// Contains information about an R-Pi core. + /// + public class Core + { + public Core( int procNumber ) + { + ProcessorNumber = procNumber; + } + + /// + /// The number of this core. + /// + public int ProcessorNumber { get; } + + /// + /// The model name of this core. + /// + public string ModelName { get; internal set; } + + /// + /// Bogus MIPS estimate for this core. + /// + public double BogoMips { get; internal set; } + + /// + /// Features of this core. + /// + public string Features { get; internal set; } + + /// + /// Converts core information to string format. + /// + public override string ToString() + { + return $"Core:\t\t{ProcessorNumber}\n" + + $"Model name:\t{ModelName}\n" + + $"BogoMIPS:\t{BogoMips}\n" + + $"Features:\t{Features}\n"; + } + + internal void SetState( string key, string val ) + { + switch ( key ) + { + case "MODEL NAME": + ModelName = val; + break; + + case "BOGOMIPS": + double bmips; + if (double.TryParse(val, out bmips)) + { + BogoMips = bmips; + } + break; + + case "FEATURES": + Features = val; + break; + + case "CPU IMPLEMENTER": + break; + + } + } + } +} diff --git a/Raspberry.System/Model.cs b/Raspberry.System/Model.cs index 34db309..f621c74 100644 --- a/Raspberry.System/Model.cs +++ b/Raspberry.System/Model.cs @@ -84,7 +84,7 @@ public static string GetDisplayName(this Model model) switch (model) { case Model.Unknown: - return null; + return "Unknown - not a Pi!"; case Model.A: return "Raspberry Pi Model A"; case Model.APlus: diff --git a/Raspberry.System/Processor.cs b/Raspberry.System/Processor.cs index dc03a5f..fd91c05 100644 --- a/Raspberry.System/Processor.cs +++ b/Raspberry.System/Processor.cs @@ -11,18 +11,18 @@ public enum Processor Unknown, /// - /// Processor is a BCM2708. + /// Processor is a BCM2835. (Used to be referred to as BCM2708.) /// - Bcm2708, + Bcm2835, /// - /// Processor is a BCM2709. + /// Processor is a BCM2836. (Used to be referred to as BCM2709.) /// - Bcm2709, + Bcm2836, /// - /// Processor is BCM2835 + /// Processor is BCM2837 /// - BCM2835 // <- added this one JJ FIX per RB3/CM3 + Bcm2837 } } \ No newline at end of file diff --git a/Raspberry.System/Properties/AssemblyInfo.cs b/Raspberry.System/Properties/AssemblyInfo.cs index 99f53f9..bd74171 100644 --- a/Raspberry.System/Properties/AssemblyInfo.cs +++ b/Raspberry.System/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.1.1.0")] -[assembly: AssemblyFileVersion("3.1.1.0")] +[assembly: AssemblyVersion("3.1.2.0")] +[assembly: AssemblyFileVersion("3.1.2.0")] diff --git a/Raspberry.System/Raspberry.System.csproj b/Raspberry.System/Raspberry.System.csproj index d5982b7..04116f5 100644 --- a/Raspberry.System/Raspberry.System.csproj +++ b/Raspberry.System/Raspberry.System.csproj @@ -39,6 +39,7 @@ + @@ -48,6 +49,7 @@ +