From e6d61aa22c451a0179b429016470c127f55d82d1 Mon Sep 17 00:00:00 2001 From: Derek Jamison Date: Sat, 15 Apr 2023 14:34:24 -0400 Subject: [PATCH] Initial check-in for hid_cookie --- hid/hid_cookie/.flipcorg/banner.png | Bin 0 -> 48566 bytes .../.flipcorg/gallery/bt-clicking.png | Bin 0 -> 11208 bytes hid/hid_cookie/.flipcorg/gallery/credits.png | Bin 0 -> 10738 bytes .../.flipcorg/gallery/instructions-2.png | Bin 0 -> 10144 bytes .../.flipcorg/gallery/instructions-3.png | Bin 0 -> 11451 bytes .../.flipcorg/gallery/main-menu.png | Bin 0 -> 10809 bytes hid/hid_cookie/application.fam | 11 + hid/hid_cookie/assets/Arr_dwn_7x9.png | Bin 0 -> 3602 bytes hid/hid_cookie/assets/Arr_up_7x9.png | Bin 0 -> 3605 bytes hid/hid_cookie/assets/Ble_connected_15x15.png | Bin 0 -> 3634 bytes .../assets/Ble_disconnected_15x15.png | Bin 0 -> 657 bytes hid/hid_cookie/assets/Circles_47x47.png | Bin 0 -> 3712 bytes hid/hid_cookie/assets/Cookie_def_11x9.png | Bin 0 -> 3664 bytes .../assets/Cookie_pressed_17x17.png | Bin 0 -> 3689 bytes hid/hid_cookie/assets/Pin_back_arrow_10x8.png | Bin 0 -> 3606 bytes .../assets/Pressed_Button_13x13.png | Bin 0 -> 3606 bytes hid/hid_cookie/hid.c | 243 ++++++++++++++++++ hid/hid_cookie/hid.h | 41 +++ hid/hid_cookie/hid_cookie_ble_10px.png | Bin 0 -> 151 bytes hid/hid_cookie/readme.md | 41 +++ hid/hid_cookie/views.h | 7 + hid/hid_cookie/views/hid_cc.c | 241 +++++++++++++++++ hid/hid_cookie/views/hid_cc.h | 14 + 23 files changed, 598 insertions(+) create mode 100644 hid/hid_cookie/.flipcorg/banner.png create mode 100644 hid/hid_cookie/.flipcorg/gallery/bt-clicking.png create mode 100644 hid/hid_cookie/.flipcorg/gallery/credits.png create mode 100644 hid/hid_cookie/.flipcorg/gallery/instructions-2.png create mode 100644 hid/hid_cookie/.flipcorg/gallery/instructions-3.png create mode 100644 hid/hid_cookie/.flipcorg/gallery/main-menu.png create mode 100644 hid/hid_cookie/application.fam create mode 100644 hid/hid_cookie/assets/Arr_dwn_7x9.png create mode 100644 hid/hid_cookie/assets/Arr_up_7x9.png create mode 100644 hid/hid_cookie/assets/Ble_connected_15x15.png create mode 100644 hid/hid_cookie/assets/Ble_disconnected_15x15.png create mode 100644 hid/hid_cookie/assets/Circles_47x47.png create mode 100644 hid/hid_cookie/assets/Cookie_def_11x9.png create mode 100644 hid/hid_cookie/assets/Cookie_pressed_17x17.png create mode 100644 hid/hid_cookie/assets/Pin_back_arrow_10x8.png create mode 100644 hid/hid_cookie/assets/Pressed_Button_13x13.png create mode 100644 hid/hid_cookie/hid.c create mode 100644 hid/hid_cookie/hid.h create mode 100644 hid/hid_cookie/hid_cookie_ble_10px.png create mode 100644 hid/hid_cookie/readme.md create mode 100644 hid/hid_cookie/views.h create mode 100644 hid/hid_cookie/views/hid_cc.c create mode 100644 hid/hid_cookie/views/hid_cc.h diff --git a/hid/hid_cookie/.flipcorg/banner.png b/hid/hid_cookie/.flipcorg/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac1a9bc42df45ec98a57ba08ac24b310364b037 GIT binary patch literal 48566 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 literal 0 HcmV?d00001 diff --git a/hid/hid_cookie/.flipcorg/gallery/bt-clicking.png b/hid/hid_cookie/.flipcorg/gallery/bt-clicking.png new file mode 100644 index 0000000000000000000000000000000000000000..714b59adbe9d1fb6f6e41847ba02efed23d8b8c0 GIT binary patch literal 11208 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 literal 0 HcmV?d00001 diff --git a/hid/hid_cookie/.flipcorg/gallery/instructions-2.png b/hid/hid_cookie/.flipcorg/gallery/instructions-2.png new file mode 100644 index 0000000000000000000000000000000000000000..9745773a1f9ff8197c7afd333afbcc8629ed049e GIT binary patch literal 10144 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 E0j~YbqW}N^ literal 0 HcmV?d00001 diff --git a/hid/hid_cookie/.flipcorg/gallery/main-menu.png b/hid/hid_cookie/.flipcorg/gallery/main-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..4c600d718031853dfaca751463edc3254c691c36 GIT binary patch literal 10809 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 JTZ;Aw|2NmVF(Lo} literal 0 HcmV?d00001 diff --git a/hid/hid_cookie/assets/Arr_up_7x9.png b/hid/hid_cookie/assets/Arr_up_7x9.png new file mode 100644 index 0000000000000000000000000000000000000000..28b4236a292708b412629ffafe30f6d011491505 GIT binary patch literal 3605 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 biU<_Yn+9Io=xs3K`2!qm58ISjpSt)z2v?8| literal 0 HcmV?d00001 diff --git a/hid/hid_cookie/assets/Cookie_def_11x9.png b/hid/hid_cookie/assets/Cookie_def_11x9.png new file mode 100644 index 0000000000000000000000000000000000000000..8566e2e6530096cee0f36ac2e5553775d18029da GIT binary patch literal 3664 zcmaJ@c{r478-FcX%UW5oj0st1n2}`~qM5N|8%&}QX2zH>GtG=WOG&7dC2N+D2-!Lm z!ih8~*^(3`RL7JMj%Y03=ycBc{`mUd>wVtmy`Ss%``!2R-1mK5PZHL_YKMrt2mk;( zY^>4F+*y=6goXIH-{;Nh%G`;cWMOXs0Cks7bDYw-HVAL+Y!3hl;s9`oJJz|RGv)vg z6%GLGivWQ9004453}k#L0Ej@zC=}KPg#uyeR6lYc5df@N`I(_O+{@hweXXGpMbGqj zozK5*`5hRHO!vb0WXpML@QJ|<>Qst(B{Aq+ur>B!>;P8P66IUy!Dx{$=i^1to zEr%~wSKa@%u)vwBqJFvat%)Lnn)72H!psvSsRoGynB*P-dVh;TP+gX zs|!4S!|{D?48-0jrz*Z|Zx**lLX&tcnv?5Jxw>XbW_7}(WR}F&9TVD%YT8JuX0ulo z`aMm)+WB0Fg;ej+)>X5ATt>P9cUNehC`?#U7TgF{60pb%6D#bL#+*yKdFiRGM8h@K zN0EDEBqHluVeX1}=f;h$rrk+{E0S3JrP!fhE%WFvf*K-{paD*o=Vl4DZAA|h9X_Fz zevz>`XS7awP&%m=cWvIJS54zwuharu=G((Qsp~vE*1TFNf=|p9rva3=Kvk?Rji2)S zo|QNW31L^h-PZiKV#Vvtl}7kQEc8c&mt#+21?4T^{@Yj<`;52s#@W7;zsEy~<9P41 zizRvQzAqpu!SAC2L!WuCvdda}Frfz|KoD=TXv0eE6z)1CEFms+D7@dVTvjWtq9~$V z?z<8~I6tA|Wu?1pTq9y7Z=9~Jy0;Fohced`w7qN)^! zm7hKosf{1ensJ(OpOFaRlet-#zB z(iCI9bj9+t(FP)#x7|EN-Cue}NadVrhx#G4q6}K<`X-NGo~FyC6n~ukx-+t|s$iI;=Zv&+67$ z6k8Ufe61&&RK1*C25smKglajK-OFHvFW&9aULuAi z5s8GX?(^M#Plq2DWGa@b80hB8=*GJqKH#wDX6y0d-yV{MN!`n8w{6d7_B_?iU|gMg zysNvR`%Px#KF6%kbjQqbwQwBLfW4+ z1vIOVAj?N;jLU9Ry)U|2jVonZkS%j=&Xnif@Tfj*8GbCj*te$Rh~`m~%7v>C+tA{& zersC{wRik5;QFR}`kxaj#o3Rk%I6E@A8(fRJWr{gHG8us zqP8I3tJo{~ZE%#^xN~7;yJJj05ab>7JKSGSR$o;PA?GLGD0^9M;L_>jg=9o>!JYtF zE4ew?EPTV?*C)+)(4Rhzdo(m^F#g-+>PQr(MU)?{31hT3@j3;OHBom#^c!za&K5c%~E%Vymk815b3Q|0L1-ca|O2e@Ton^Dn zvrM(D#GxA!EI;C-l^e)mNRobc*`6A2iXt+EN4hD`sI_Az}uU0f~Zu&^W9wyX5f&4Tyc^J(F&e@P=(Tz+)Xv;w>C@Hd+ zP#rmYH^3>tJs@%cw`lkw`8MO&(RQU{%6HpHao^9M-66fl)KKXydgSVTcG>ClwfeQA z*E)?tWi)mL>d1~y)|HlGi&IV**S`n}cw;zZINNyU%g52m#uy!68Bbk9&1#M46CGMj z-;>!!8RMs4OSa>$57jd_9eNzz_D*<;wTNZeWPQj?o?9M$sVHx%z`S?&RYlWk;$-UJ?t7RKSd_u{ z>Et<&_RlBx2i~TZH0)C5W1V9aL@RUF=T8+*neLO_cPyrVt*9}7&})b%_&u{HL_Oqk z2qt7l!IIgl=Ru=yHcAGrBsknEs4&ruY+l+vVfP@%k;Lfh&9^;h#4wv!3v;yVTNjm- zq5LVZEatJ)6tG;y!O~O|fPV5JBR&eEK zPopX-Qyij9<1-mf(P3U_R7aB+dhKM?Gq_TDa6@T*cm$J*yrbl z6t;b3et4clV)yO#6N$;#XjpFQT~v-{tlf?=^bMKZw%JuSZtL}=9l3P!Rb@d_Y?D=u z%L!SNq%B_M#c z!(lczH@Uw@I-W;!Ct;ekI|Bg3I=2Q7i&{-5=mr=DR{1>9SkB9OuwBNGUb-~;o8`}yE?KrlU+K2)Fk8tLjAAz*NXz6t2(1Lk@Jfsk~9AHo@J`O_oU zG6nlHnKT3x8X6i3357$bbP`nG#KZ)u2ZO?3x?F@VBb>tY3Dc!8_WmXEQwB|B;OS%< zlT4+6wq$*LsliNBFgNJGb`wPVN1MXx>7KLZLNZ1CJ?FLg;NJYWolg<~0Rcd;6xf@- RqvJ=b*vMnZ&vn1v@Aq}x_jO&b*PV=WwB91ABnbe( z7F!#Pi(m$=kBuUN@8+Ag9tkE2a*kFQ<2UEe>DNle z_38tU-thgN83S?GDrhP%I$ES1Okv5w7A>g_C*0h!K{=fWS@{L&A5MuK#dYmu4fC0c zbN${XU+sNU;-Iz4y84<9kIKo{kRCf)#)}e{)WlaqRK+av!=;Kkw_?vEUqAoEPNwM! z=cD9piYY4RThZku>CV+_U2M7J!6guma6WD*WcPuXFXGygAn*Xc%X_Vq*1lu_j)@rG zoq3MAHf!{Qe6MUmGyV$Cq*qh>Ot0)5QvTb6KG~~6LN>y?)5ISiP?-YI$Hc1R^y#A1 zyUI)PGBOfwB62pOH{zrl52%iaN?O22Bo^b2dZIs$X*z4~^Wt%Hd@U@@XJ+oByOvrVGQQbI;r)-s~szd~Vmd}VQD zh2nQrlte*d?Sc4y?|{vh&&DLay|>Z+^o@Gi>J7@Bn+5((q2C>%3*QmzP1y8Kg|7J; zP)peNZl1Sy$4SpSf6VosuSbO^AYRNjHD5g-GcE z)0`EyZNOS9mIOH$R^Ya6Y7%QwJ#@O#O2sPVYNWG~Goiv`$a;@rP13OS=+(A<(3B`k zu0_WC6xH%pDXfH6x~snquCRGaX==m$a6bs#Hn%BPw#VFF`Qr|M8RUh$PQQjZ_vmVs zVYMd@B#f-A zMe-z*SGHtz(r6VGBiwNyO)FsQ^hWhF8uzsAW~zhK)ugs3!Ro26|#=Lq_=d z@H}IylXe;E+;lIS0S$GEI9G_mp#5wn*cv`Au7kFWCSoly;k`un=M1DvxQ@P#yw3HZ$Qw#GGF^7MFbB6$Tq&_! zJXe;xbMWxBa$-Hg6G24;bv9xPCMU;Dr%j+k&9o*-re7)^R$sZ3W66Eeh%^JJ2**#D6vzV7A zA8qe$>VA_QwaY0dEYm4_Omj?U4JTA~wOpnmt*rj&c**@9mrpLEWz}U^yNj^4@{PKm zbi{OO51Ces)ESpwtA1a6sTNaSLl$_D72YRn^&84v>O`R>9o_S6gyd{ z<&#;QSHV7f(~0S0cSP4Ku*$7`_)>Fzb53Y&=($A^mBtJ4y-EdQ1xH#Gyw6e_XUyLy zN7ff6_>}mhz72_XA9E?H>Trtf2ZE0U-$e!(D8MxoQHuUb%?cM32hN{Nol8Zf7AglS zSS!vVW{|4^e!dxgg8_^&{KKKqJ!5~2E`%Y?kl7xoFZG#??AB$mdFZ_SlZBiU*J!eFq3PVvzd}nFS$ucC$YQBfrIdZ5SR&`brwc(GEspIj z?{bauQpdgmhy3NRRRZ-H!R@aM#xiQ|+09?PM4GB zh~~6ot|QB)+9rRzgQ|(qeIsW_E(_6MGn;ELU#f)6K!!19Vxzf0D z_)4cyn7sD(AU%b#iH5Q=TuItd28efc)j3wTdrx{jbE|T1Z3~T2iyG^X;ryrxIT+FvGAl)wetqLx z#cV+T@e1Q4liUcNEy0~IcI!Ot%9U-GQ?8irm{3tN+rheh>t!W-IcXw&Q0_K%1QEUG z`&85<`Af!Ttu`&Pd*{_+m@750hJK+F8`iqY$LxF_cbG05e_2(?j$>Qb zxgLe}$hW1(GMDrxgU4EVVVRpeW*cU8_fN%4txnB!-MGp zwBRPXKb-DM2qdw7V93t?hZIGn#Lf3ji7LS zf`Nen*vJG*BKjiykp8{|Jut!m0f)f_uaQ372!%kR;3nW-4@BS*3^rvD{ZTF$t6v@k zmKh{~#iFBNu&}T&Xc!VoV~}BR6B84d0Ro0V=nD|~%m^yWH(Z~}-1)c2FBuGpNnlXu zEDDVZUYGUtqlK`{AcCO(-c2z5Uu`P$*O3Vh4;JoAhryu+>%030=-}|bp~1obqM0lg z(tm>fufj}x1f2wPAu(wo3<602-?{FJjzTj?zAPF8Poo9>bD+2Y8jHpZpwYnyBoq$T zcJL)osOu{_KPe6lC|fF%K@}Z zS}o`qv@OO0ukA`ov5*458#{SxMRJEvDMsCGf`<6C0$53X#PsWFU7M^ rCm~C@=C(s6cqd%fEMEG6&BL9B(HTJBE6y9W^&YgvI$~-qkDdNMQg2d~ literal 0 HcmV?d00001 diff --git a/hid/hid_cookie/assets/Pin_back_arrow_10x8.png b/hid/hid_cookie/assets/Pin_back_arrow_10x8.png new file mode 100644 index 0000000000000000000000000000000000000000..3bafabd144864b575144c75b592e5eaf53974566 GIT binary patch literal 3606 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 TFC+3}9cE|kU{!4CefEC<&8td2 literal 0 HcmV?d00001 diff --git a/hid/hid_cookie/assets/Pressed_Button_13x13.png b/hid/hid_cookie/assets/Pressed_Button_13x13.png new file mode 100644 index 0000000000000000000000000000000000000000..823926b842b8f9868fd70d6f1434dff071c04d5d GIT binary patch literal 3606 zcmaJ@c|26@+dsCllQkq`#8X*jY{g{k%P3o88U`9wuDcQ1RO(?0Mk|NnE zLbfQ9B|8a?C1mX#&+qB^y??yD=kqz|zV7S3zTay-pL4D`*jWkj%kl#NAY_d&NA9dU zH!m0aX`w4&2LSwLI5RT`Ycn$tnL_fx;jsWf@5^=!MkTFE84j&tMO;jK=bxnEF9KjC zCU29dTb}4m0DW0h%(x*cn%_l2a!(e*x&Bf&KO#GNH1}YIugUf3Q!&nG^u8+$6g~?J zVa?5LeA=j*%9`42XLN`}>=9E*oXqnF^pQ~puwI3DdqjP6bp)p*Vwf8wI@$8tm!|;$ z=D8U3aN1*|O^!z-fD<5hYa9@39QhSl>7e2YfD(aWu-KFUM*It@G8k zo>9Wo&lH~ZqaklQV4egvR9qO^uDZd=4T#!xu=+eECVIHYjU0~yYXgc-1AQ)l z-_V-7c0XV4DgO5%YcUMHP2>GJcO04wBV*Vkz41`#Gn#n+*Av>cUpsq0UjACuh_ouP>mkRXBic8yPQ< ziROyUDWhW37qk`>Qn&b$f`tI)75h57=ewV^;OoM_b8yB8qq>3swK9jur8*<&u*+&vj1qGhi%^@OH|#m-!uAxrP_+?(@y zZ`Bn(Zj&ZnakL^VdXHCJFSwmoIz5gXj7I3(j3@w2M@yUpH#AWSIEzgE6WtL?i|P~! z{n#_c>k0i$Ag$}0*Q=~FlP{K@7g6#FTxztXYj);3iYFT%N?|5Yx-Rj$7mm zC6*_MB-r2FXnr$ZE&*$Z9<|}iJAf=m7CWwsHJaeQdt1viJ@>)MwxXPmybq#bw@+CU za)TToj#rDsbpkV#+cKrhS_;(jyWeNvd~vIOkZD>a-(ci^i?sJ?T>)QrPftxp{sj-&-QLNY1FkD~CfR6W@uYz*1aN z!c(RmI5|_Djk*~R1e_i^i#$B*5_Zqh`KiNL5#L9thuuZ;&M%9Ol(Zv*k?{^4Cq43O zJhm>aV}wetL|NuuLF7AO%HPVwDoVZ8!Y-gpdnhhkGim|1Y`spGuFcv6@odNiLC)Ja zno%G4FntnzvM0~AaR|SCGCZ&UIqP`4V!KfLd37#zBlRae{>47U;l)S$Li%d@yyhr# zQgbtXtUz+Makg6aGK>IQ4dkmlQhBm6saUQ-V<-re?fgg!+6c1w&Z{epUTd%546_SCba=(FSB_zPQN=VAO~IZ zxvGCNHtMcLR>Sd_BQcGseW{@>JgK&+tIS(2hAs@3WtUG(>z*?+YBPi$SG5x`k+k0ki@7&{GqNx%Z|i8&DqUa{@IM#U32;?=oRG^!b*pH>pn60o@2CQ zp%hwRYY?7XHB&I6^QNf2=*_gNubl54YW9+@^t}@aEn;awY0{2_!s~^^+aWC}6SChc zyPkbm&d+?AIZ*tW@Nuve-VpY1!&W0xuG#$!oMrN3eib!(u5~QCFthOWQo?Vo0;ZBLt)-c)wzG@krlJ9u4B~Qt%Lt9mB_V?_GyVAisBpOb-w`Mcl`kXg<*a{zA zp@5S~mtG5#ICNO+fyTF!WsbCSv{khp=D6F2Z*|;4e9?^;$NK%BQ-XY%{&*xFGn-iv zQSqSSBK_)5i-j~Xn)m^}xohL~z4h>GV^q#5e1>+`c!pCd4O22PkoQ7*a=N`GC)mJE z*DWDbFY1<9TB*@QB*@eOve$m1kZ3C}zIZt^%HEtf#Xh1v1>+-G(DFT@HaiultQokfV%BC~F3|ZnJEM)_^uS!3?_cXl%QH?nDQG3W|``en5 zz$K~B>V(G*6_20xR?yuRhQYNKFQt@X9HoObG~JPv-gMl2S6GW*OKIws!zc>ryy(vu zSd2qPcHO;erh3U$C#5L4xrJErecI*1Vd)ePCYgD^cXKm{nSvQ2bJeZ((eY}3lkWFd=7oyo7GfvlJP60X(C&ozFUPf& zwY_WO(nageoo;>3>|eZdB!49&`+|Fm%U1Ej@|w>oeLb~w?Sjx&}b>tXH)4to3d#pAueVK}PpRXeS0Iz!WE0>=rhL^yt!pU1Bh)1VMGuYLZ zIah-c+7H{AW1XxI7uNmjx~ZRje$sHi&8TL*os}ymstoR{P_A758MHDd9nAmTX23lp zp8jaFrf=)p?sbuG7s|GuVCx9OKRxR_JKng7u!Q-p=4>bb`fzom%c|9?Tgg%>Ha=TH zK~6}vdeOT*X{4~UP`u+^xXUlb4E5pE(AMb2i4N3e@4UcTOh;`AqiBi3dRX)b)~M8| zP}RG*`RxdAYMCdE;VgFUi z&@50iN0JXM7)`+fCf+13EXbOG_QfKxXm7^3W~>1KaH-&&P&AaS4GcpfXrOm&H0T5} z8w~&kMszY76M&_Gys*AFA{@+mSqlc?yy0M1U0bLv*$nH4LxfPUjv;nVn2-RBzBky& z5M)4yu?YxR8X80=;E7Zi9S;7R7si%%)DSS}ZxdPo9Q>c4P__;rGZF<0I;x?mj)6j< zpriU4-e@m0#>-0$qy^Q|gg|v5nmX!GC`?-)rlSM;=K{0cQM`R%NOQ}7oUwOsupf;^ zhCv{~!ND5A+8QK^FGN#cUmpV1f@o=}vn|xA3?dCpS0_@HelwV3sTc~5Ov90gpdCiE z7b%bi2eU){PYwj~zqCZ^KXqbP3_?efA(|S{ot%Cf+S>mArUb&j)>Il2``>u~PhzSQ zgN%hBu~bqZ1;g%~kJ64SGR%yEMbk(WClU$&yNnKgBpQk8MECm;Y^|qvt2%x{ShT;Agi>bvQ`ToIr z|1lO*%Rgcv>|h`}z5QRk{;gsU(2n@;=(0Ee4nLO2o_Gp-v?B%|jk8~iT@E%*7VLFn zW8+olk$r4Q+1lL1iQebs$<4V-6wuDa^WJ8EKPjE`j~qYo##DjQV;r1 +#include + +#define TAG "CookieClickerApp" + +enum HidDebugSubmenuIndex { + HidSubmenuIndexInstructions, + HidSubmenuIndexClicker, + HidSubmenuIndexCredits, +}; + +static void hid_submenu_callback(void* context, uint32_t index) { + furi_assert(context); + Hid* app = context; + if(index == HidSubmenuIndexInstructions) { + app->view_id = BtHidViewInstructions; + view_dispatcher_switch_to_view(app->view_dispatcher, app->view_id); + } else if(index == HidSubmenuIndexClicker) { + app->view_id = BtHidViewClicker; + view_dispatcher_switch_to_view(app->view_dispatcher, app->view_id); + } else if(index == HidSubmenuIndexCredits) { + app->view_id = BtHidViewCredits; + view_dispatcher_switch_to_view(app->view_dispatcher, app->view_id); + } +} + +static void bt_hid_connection_status_changed_callback(BtStatus status, void* context) { + furi_assert(context); + Hid* hid = context; + bool connected = (status == BtStatusConnected); + if(connected) { + notification_internal_message(hid->notifications, &sequence_set_blue_255); + } else { + notification_internal_message(hid->notifications, &sequence_reset_blue); + } + hid_cc_set_connected_status(hid->hid_cc, connected); +} + +static uint32_t hid_submenu_view(void* context) { + UNUSED(context); + return HidViewSubmenu; +} + +static uint32_t hid_exit(void* context) { + UNUSED(context); + return VIEW_NONE; +} + +Hid* hid_alloc() { + Hid* app = malloc(sizeof(Hid)); + + // Gui + app->gui = furi_record_open(RECORD_GUI); + + // Bt + app->bt = furi_record_open(RECORD_BT); + + // Notifications + app->notifications = furi_record_open(RECORD_NOTIFICATION); + + // View dispatcher + app->view_dispatcher = view_dispatcher_alloc(); + view_dispatcher_enable_queue(app->view_dispatcher); + view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen); + + // Submenu view + app->submenu = submenu_alloc(); + submenu_set_header(app->submenu, "Cookie clicker"); + submenu_add_item( + app->submenu, "Instructions", HidSubmenuIndexInstructions, hid_submenu_callback, app); + submenu_add_item( + app->submenu, "BT Phone Clicker", HidSubmenuIndexClicker, hid_submenu_callback, app); + submenu_add_item(app->submenu, "Credits", HidSubmenuIndexCredits, hid_submenu_callback, app); + view_set_previous_callback(submenu_get_view(app->submenu), hid_exit); + view_dispatcher_add_view(app->view_dispatcher, HidViewSubmenu, submenu_get_view(app->submenu)); + app->view_id = HidViewSubmenu; + view_dispatcher_switch_to_view(app->view_dispatcher, app->view_id); + return app; +} + +Hid* hid_app_alloc_view(void* context) { + furi_assert(context); + Hid* app = context; + + // Instructions view + app->widget_instructions = widget_alloc(); + widget_add_text_scroll_element( + app->widget_instructions, + 0, + 0, + 128, + 64, + "While this app is running, go to\n" + "your phone's bluetooth\n" + "settings and discover devices.\n" + "You should see 'Control\n" + "' in the list. Click pair\n" + "on your phone. On the Flipper\n" + "Zero you should see a pin #.\n" + "If the pin matches, click OK on\n" + "your phone and the Flipper.\n" + "You should now be connected!\n" + "Launch the Cookie clicker app\n" + "on your phone. Tap your\n" + "phone's screen to click on the\n" + "first cookie, then on the\n" + "Flipper Zero, choose\n" + "'Phone clicker'. Click the\n" + "UP/DOWN buttons to set the\n" + "speed. Click the OK button on\n" + "the Flipper to enable/\n" + "disable the clicker.\n" + "Enjoy!\n"); + view_set_previous_callback(widget_get_view(app->widget_instructions), hid_submenu_view); + view_dispatcher_add_view( + app->view_dispatcher, BtHidViewInstructions, widget_get_view(app->widget_instructions)); + + // Clicker view + app->hid_cc = hid_cc_alloc(app); + view_set_previous_callback(hid_cc_get_view(app->hid_cc), hid_submenu_view); + view_dispatcher_add_view(app->view_dispatcher, BtHidViewClicker, hid_cc_get_view(app->hid_cc)); + + // Credits view + app->widget_credits = widget_alloc(); + widget_add_text_scroll_element( + app->widget_credits, + 0, + 0, + 128, + 64, + "Original app was from\n" + "external/hid_app. \n\n" + "Modified by CodeAllNight.\n" + "https://youtube.com/\n" + "@MrDerekJamison\n\n" + "Thanks to all the\n" + "contributors of the original\n" + "app!\n\n" + "Flip the World!\n"); + view_set_previous_callback(widget_get_view(app->widget_credits), hid_submenu_view); + view_dispatcher_add_view( + app->view_dispatcher, BtHidViewCredits, widget_get_view(app->widget_credits)); + + return app; +} + +void hid_free(Hid* app) { + furi_assert(app); + + // Reset notification + notification_internal_message(app->notifications, &sequence_reset_blue); + + // Free views + view_dispatcher_remove_view(app->view_dispatcher, HidViewSubmenu); + submenu_free(app->submenu); + view_dispatcher_remove_view(app->view_dispatcher, BtHidViewClicker); + hid_cc_free(app->hid_cc); + view_dispatcher_free(app->view_dispatcher); + + // Close records + furi_record_close(RECORD_GUI); + app->gui = NULL; + furi_record_close(RECORD_NOTIFICATION); + app->notifications = NULL; + furi_record_close(RECORD_BT); + app->bt = NULL; + + // Free rest + free(app); +} + +void hid_hal_mouse_move(Hid* instance, int8_t dx, int8_t dy) { + furi_assert(instance); + furi_hal_bt_hid_mouse_move(dx, dy); +} + +void hid_hal_mouse_press(Hid* instance, uint16_t event) { + furi_assert(instance); + furi_hal_bt_hid_mouse_press(event); +} + +void hid_hal_mouse_release(Hid* instance, uint16_t event) { + furi_assert(instance); + furi_hal_bt_hid_mouse_release(event); +} + +void hid_hal_mouse_release_all(Hid* instance) { + furi_assert(instance); + furi_hal_bt_hid_mouse_release_all(); +} + +int32_t hid_cookie_ble_app(void* p) { + UNUSED(p); + Hid* app = hid_alloc(); + app = hid_app_alloc_view(app); + + bt_disconnect(app->bt); + + // Wait 2nd core to update nvm storage + furi_delay_ms(200); + + // Migrate data from old sd-card folder + Storage* storage = furi_record_open(RECORD_STORAGE); + + storage_common_migrate( + storage, + EXT_PATH("apps/Tools/" HID_BT_KEYS_STORAGE_NAME), + APP_DATA_PATH(HID_BT_KEYS_STORAGE_NAME)); + + bt_keys_storage_set_storage_path(app->bt, APP_DATA_PATH(HID_BT_KEYS_STORAGE_NAME)); + + furi_record_close(RECORD_STORAGE); + + if(!bt_set_profile(app->bt, BtProfileHidKeyboard)) { + FURI_LOG_E(TAG, "Failed to switch to HID profile"); + } + + furi_hal_bt_start_advertising(); + bt_set_status_changed_callback(app->bt, bt_hid_connection_status_changed_callback, app); + + DOLPHIN_DEED(DolphinDeedPluginStart); + + view_dispatcher_run(app->view_dispatcher); + + bt_set_status_changed_callback(app->bt, NULL, NULL); + + bt_disconnect(app->bt); + + // Wait 2nd core to update nvm storage + furi_delay_ms(200); + + bt_keys_storage_set_default_path(app->bt); + + if(!bt_set_profile(app->bt, BtProfileSerial)) { + FURI_LOG_E(TAG, "Failed to switch to Serial profile"); + } + + hid_free(app); + + return 0; +} diff --git a/hid/hid_cookie/hid.h b/hid/hid_cookie/hid.h new file mode 100644 index 0000000..a728a48 --- /dev/null +++ b/hid/hid_cookie/hid.h @@ -0,0 +1,41 @@ +#pragma once + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include "views/hid_cc.h" + +#define HID_BT_KEYS_STORAGE_NAME ".bt_hid.keys" + +typedef struct Hid Hid; + +struct Hid { + Bt* bt; + Gui* gui; + NotificationApp* notifications; + ViewDispatcher* view_dispatcher; + Submenu* submenu; + Widget* widget_instructions; + Widget* widget_credits; + HidCC* hid_cc; + uint32_t view_id; +}; + +void hid_hal_mouse_move(Hid* instance, int8_t dx, int8_t dy); +void hid_hal_mouse_press(Hid* instance, uint16_t event); +void hid_hal_mouse_release(Hid* instance, uint16_t event); +void hid_hal_mouse_release_all(Hid* instance); \ No newline at end of file diff --git a/hid/hid_cookie/hid_cookie_ble_10px.png b/hid/hid_cookie/hid_cookie_ble_10px.png new file mode 100644 index 0000000000000000000000000000000000000000..d4d30afe0465e3bd0d87355a09bbdfc6c44aa5d9 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2VGmzZ%#=aj&u?6^qxc>kDAIJlDSNs& zhE&W+PH5C8xG literal 0 HcmV?d00001 diff --git a/hid/hid_cookie/readme.md b/hid/hid_cookie/readme.md new file mode 100644 index 0000000..99b957a --- /dev/null +++ b/hid/hid_cookie/readme.md @@ -0,0 +1,41 @@ +# Bluetooth Cookie Clicker +The goal of this application is use the Flipper Zero's bluetooth connectivity to send mouse clicks to your phone at a given frequency. If you are playing a game, such as Cookie Clicker 2, this will result in a 'screen tap' being simulated. Only connect to phones you own (unless your friends ask you to connect your Flipper Zero to their phone, so they can unlock more achievements in their games!) + +## Easy Setup +The easiest way is to use [FlipC.org](https://flipc.org/build) to build the project and install on your Flipper. If the application isn't already in the [Tools](https://flipc.org/category/tools) section; you can go to [Build](https://flipc.org/build) and build it yourself. + +``` +git: jamisonderek/flipper-zero-tutorials +settings: + root: /hid/hid_cookie +``` +Then click on "Let's FAP!" + +Once it is built, you will be able to choose to Download the FAP or install directly on your Flipper Zero! + +## Local Setup (Windows) +Setup your development machine with the following. You can watch my video at [YouTube](https://www.youtube.com/watch?v=gqovwRkn2xw) +- VSCode +- Git +- Recursive Clone of the Flipper Zero firmware +- Clone of this tutorial project : https://github.com/jamisonderek/flipper-zero-tutorials + + +Once everything is cloned, copy the hid_cookie project into your applications_user folder... +- Open the firmware project in Visual Studio Code +- Right click on "applications_user" +- Choose "Open in Integrated Terminal" +- Type: + ``` + New-Item -Path hid_cookie -ItemType Junction -Value ..\..\flipper-zero-tutorials\hid\hid_cookie + ``` + +Once everything is copied, build and run the project... +- Open the build task window (Ctrl+Shift+B) +- Choose "Build update bundle" +- Open the "applications_user\hid_cookie\hid.c" file +- Open the build task window (Ctrl+Shift+B) +- Choose "Launch app on Flipper" + +## Using the app +Once the application is launched, it will show a menu that includes directions for using the application. Press the OK button to launch the instructions. Press the DOWN button to read more instructions. Press the BACK button to return to the menu. diff --git a/hid/hid_cookie/views.h b/hid/hid_cookie/views.h new file mode 100644 index 0000000..eb41ef4 --- /dev/null +++ b/hid/hid_cookie/views.h @@ -0,0 +1,7 @@ +typedef enum { + HidViewSubmenu, + BtHidViewInstructions, + BtHidViewClicker, + BtHidViewCredits, + HidViewExitConfirm, +} HidView; \ No newline at end of file diff --git a/hid/hid_cookie/views/hid_cc.c b/hid/hid_cookie/views/hid_cc.c new file mode 100644 index 0000000..e58b045 --- /dev/null +++ b/hid/hid_cookie/views/hid_cc.c @@ -0,0 +1,241 @@ +#include "hid_cc.h" +#include "../hid.h" +#include + +#include "hid_icons.h" + +#define TAG "HidCC" + +struct HidCC { + View* view; + Hid* hid; + FuriTimer* timer; +}; + +typedef struct { + bool left_pressed; + bool up_pressed; + bool right_pressed; + bool down_pressed; + bool ok_pressed; + bool connected; + bool is_cursor_set; + float timer_duration; + bool timer_click_enabled; +} HidCCModel; + +static void hid_cc_draw_callback(Canvas* canvas, void* context) { + furi_assert(context); + HidCCModel* model = context; + + // Header + if(model->connected) { + canvas_draw_icon(canvas, 0, 0, &I_Ble_connected_15x15); + } else { + canvas_draw_icon(canvas, 0, 0, &I_Ble_disconnected_15x15); + } + + canvas_set_font(canvas, FontPrimary); + elements_multiline_text_aligned(canvas, 17, 3, AlignLeft, AlignTop, "Cookie\nClicker"); + canvas_set_font(canvas, FontSecondary); + FuriString* buffer = furi_string_alloc(32); + furi_string_printf(buffer, "%0.1f ms\r\n", (double)model->timer_duration); + if(model->timer_click_enabled) { + furi_string_cat(buffer, "Clicking"); + } + elements_multiline_text_aligned( + canvas, 17, 25, AlignLeft, AlignTop, furi_string_get_cstr(buffer)); + furi_string_free(buffer); + + // Keypad circles + canvas_draw_icon(canvas, 76, 8, &I_Circles_47x47); + + // Up + if(model->up_pressed) { + canvas_set_bitmap_mode(canvas, 1); + canvas_draw_icon(canvas, 93, 9, &I_Pressed_Button_13x13); + canvas_set_bitmap_mode(canvas, 0); + canvas_set_color(canvas, ColorWhite); + } + canvas_draw_icon(canvas, 96, 11, &I_Arr_up_7x9); + canvas_set_color(canvas, ColorBlack); + + // Down + if(model->down_pressed) { + canvas_set_bitmap_mode(canvas, 1); + canvas_draw_icon(canvas, 93, 41, &I_Pressed_Button_13x13); + canvas_set_bitmap_mode(canvas, 0); + canvas_set_color(canvas, ColorWhite); + } + canvas_draw_icon(canvas, 96, 44, &I_Arr_dwn_7x9); + canvas_set_color(canvas, ColorBlack); + + // Ok + if(model->ok_pressed) { + canvas_draw_icon(canvas, 91, 23, &I_Cookie_pressed_17x17); + } else { + canvas_draw_icon(canvas, 94, 27, &I_Cookie_def_11x9); + } + // Exit + canvas_draw_icon(canvas, 0, 54, &I_Pin_back_arrow_10x8); + canvas_set_font(canvas, FontSecondary); + elements_multiline_text_aligned(canvas, 13, 62, AlignLeft, AlignBottom, "Back to menu"); +} + +static void hid_cc_update_timer(HidCC* hid_cc, HidCCModel* model) { + furi_assert(hid_cc); + furi_assert(model); + if(model->timer_click_enabled) { + furi_timer_start(hid_cc->timer, model->timer_duration); + } else { + furi_timer_stop(hid_cc->timer); + } +} + +static void hid_cc_tick_callback(void* context) { + furi_assert(context); + HidCC* hid_cc = context; + + with_view_model( + hid_cc->view, + HidCCModel * model, + { + if(model->timer_click_enabled) { + hid_hal_mouse_press(hid_cc->hid, HID_MOUSE_BTN_LEFT); + furi_delay_ms(10); + hid_hal_mouse_release(hid_cc->hid, HID_MOUSE_BTN_LEFT); + } + }, + true); +} + +static void hid_cc_reset_cursor(HidCC* hid_cc) { + // Set cursor to the phone's left up corner + // Delays to guarantee one packet per connection interval + for(size_t i = 0; i < 8; i++) { + hid_hal_mouse_move(hid_cc->hid, -127, -127); + furi_delay_ms(50); + } + // Move cursor from the corner + hid_hal_mouse_move(hid_cc->hid, 20, 120); + furi_delay_ms(50); +} + +static void hid_cc_process_press(HidCC* hid_cc, HidCCModel* model, InputEvent* event) { + if(event->key == InputKeyUp) { + model->up_pressed = true; + } else if(event->key == InputKeyDown) { + model->down_pressed = true; + } else if(event->key == InputKeyOk) { + model->ok_pressed = true; + } +} + +static void hid_cc_process_release(HidCC* hid_cc, HidCCModel* model, InputEvent* event) { + if(event->key == InputKeyUp) { + model->up_pressed = false; + } else if(event->key == InputKeyDown) { + model->down_pressed = false; + } else if(event->key == InputKeyOk) { + model->ok_pressed = false; + } +} + +static bool hid_cc_input_callback(InputEvent* event, void* context) { + furi_assert(context); + HidCC* hid_cc = context; + bool consumed = false; + + with_view_model( + hid_cc->view, + HidCCModel * model, + { + if(event->type == InputTypePress) { + hid_cc_process_press(hid_cc, model, event); + if(model->connected && !model->is_cursor_set) { + hid_cc_reset_cursor(hid_cc); + model->is_cursor_set = true; + } + consumed = true; + } else if(event->type == InputTypeRelease) { + hid_cc_process_release(hid_cc, model, event); + consumed = true; + } else if(event->type == InputTypeShort) { + if(event->key == InputKeyOk) { + model->timer_click_enabled = !model->timer_click_enabled; + hid_cc_update_timer(hid_cc, model); + consumed = true; + } else if(event->key == InputKeyUp) { + // Reduce duration to 95% of value + update_timer. + if(model->timer_duration > 0) { + model->timer_duration *= 0.95f; + hid_cc_update_timer(hid_cc, model); + } + consumed = true; + } else if(event->key == InputKeyDown) { + // Increase duration to 105% of value + update_timer + model->timer_duration *= 1.05f; + hid_cc_update_timer(hid_cc, model); + consumed = true; + } else if(event->key == InputKeyBack) { + hid_hal_mouse_release_all(hid_cc->hid); + model->is_cursor_set = false; + consumed = false; + } + } else if(event->type == InputTypeLong) { + if(event->key == InputKeyBack) { + hid_hal_mouse_release_all(hid_cc->hid); + model->is_cursor_set = false; + consumed = false; + } + } + }, + true); + + return consumed; +} + +HidCC* hid_cc_alloc(Hid* bt_hid) { + HidCC* hid_cc = malloc(sizeof(HidCC)); + hid_cc->hid = bt_hid; + hid_cc->view = view_alloc(); + view_set_context(hid_cc->view, hid_cc); + view_allocate_model(hid_cc->view, ViewModelTypeLocking, sizeof(HidCCModel)); + view_set_draw_callback(hid_cc->view, hid_cc_draw_callback); + view_set_input_callback(hid_cc->view, hid_cc_input_callback); + + with_view_model( + hid_cc->view, + HidCCModel * model, + { + model->timer_duration = 22.0f; + model->timer_click_enabled = false; + }, + true); + hid_cc->timer = furi_timer_alloc(hid_cc_tick_callback, FuriTimerTypePeriodic, hid_cc); + return hid_cc; +} + +void hid_cc_free(HidCC* hid_cc) { + furi_assert(hid_cc); + furi_timer_free(hid_cc->timer); + view_free(hid_cc->view); + free(hid_cc); +} + +View* hid_cc_get_view(HidCC* hid_cc) { + furi_assert(hid_cc); + return hid_cc->view; +} + +void hid_cc_set_connected_status(HidCC* hid_cc, bool connected) { + furi_assert(hid_cc); + with_view_model( + hid_cc->view, + HidCCModel * model, + { + model->connected = connected; + model->is_cursor_set = false; + }, + true); +} diff --git a/hid/hid_cookie/views/hid_cc.h b/hid/hid_cookie/views/hid_cc.h new file mode 100644 index 0000000..caa864c --- /dev/null +++ b/hid/hid_cookie/views/hid_cc.h @@ -0,0 +1,14 @@ +#pragma once + +#include + +typedef struct Hid Hid; +typedef struct HidCC HidCC; + +HidCC* hid_cc_alloc(Hid* bt_hid); + +void hid_cc_free(HidCC* hid_cc); + +View* hid_cc_get_view(HidCC* hid_cc); + +void hid_cc_set_connected_status(HidCC* hid_cc, bool connected);