From 9a4fd5aab5cedb21748cdd8d977f95914ac1b3bc Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Sun, 28 Jan 2018 01:07:22 +0100 Subject: [PATCH 1/3] LP-514 Add new Esc icons for Wizard --- .../resources/bttn-dshot1200-dwn.png | Bin 0 -> 5071 bytes .../resources/bttn-dshot1200-up.png | Bin 0 -> 5973 bytes .../resources/bttn-dshot150-dwn.png | Bin 0 -> 5050 bytes .../resources/bttn-dshot150-up.png | Bin 0 -> 5945 bytes .../resources/bttn-dshot600-dwn.png | Bin 0 -> 5060 bytes .../resources/bttn-dshot600-up.png | Bin 0 -> 5979 bytes .../{bttn-ESC-down.png => bttn-esc-down.png} | Bin .../{bttn-ESC-up.png => bttn-esc-up.png} | Bin .../setupwizard/resources/bttn-esc300-dwn.png | Bin 0 -> 4579 bytes .../setupwizard/resources/bttn-esc300-up.png | Bin 0 -> 5748 bytes .../resources/bttn-multishot-dwn.png | Bin 0 -> 5072 bytes .../resources/bttn-multishot-up.png | Bin 0 -> 5995 bytes .../resources/bttn-oneshot125-dwn.png | Bin 0 -> 4959 bytes .../resources/bttn-oneshot125-up.png | Bin 6166 -> 5894 bytes .../resources/bttn-oneshot42-dwn.png | Bin 0 -> 4806 bytes .../resources/bttn-oneshot42-up.png | Bin 0 -> 5732 bytes .../plugins/setupwizard/wizardResources.qrc | 18 ++++++++++++++++-- 17 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-dshot1200-dwn.png create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-dshot1200-up.png create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-dshot150-dwn.png create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-dshot150-up.png create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-dshot600-dwn.png create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-dshot600-up.png rename ground/gcs/src/plugins/setupwizard/resources/{bttn-ESC-down.png => bttn-esc-down.png} (100%) rename ground/gcs/src/plugins/setupwizard/resources/{bttn-ESC-up.png => bttn-esc-up.png} (100%) create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-esc300-dwn.png create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-esc300-up.png create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-multishot-dwn.png create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-multishot-up.png create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-oneshot125-dwn.png create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-oneshot42-dwn.png create mode 100644 ground/gcs/src/plugins/setupwizard/resources/bttn-oneshot42-up.png diff --git a/ground/gcs/src/plugins/setupwizard/resources/bttn-dshot1200-dwn.png b/ground/gcs/src/plugins/setupwizard/resources/bttn-dshot1200-dwn.png new file mode 100644 index 0000000000000000000000000000000000000000..0f428c6fe35a88156a2d1225164f3f5f41d8846a GIT binary patch literal 5071 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 D++GWW literal 0 HcmV?d00001 diff --git a/ground/gcs/src/plugins/setupwizard/resources/bttn-dshot150-dwn.png b/ground/gcs/src/plugins/setupwizard/resources/bttn-dshot150-dwn.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f04144cd3114ee2a87218664072bf315b9e4f0 GIT binary patch literal 5050 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 G!T$&QT?Q5a literal 0 HcmV?d00001 diff --git a/ground/gcs/src/plugins/setupwizard/resources/bttn-dshot150-up.png b/ground/gcs/src/plugins/setupwizard/resources/bttn-dshot150-up.png new file mode 100644 index 0000000000000000000000000000000000000000..61e09cf3568fd691f03457406d4ce8cd27e50f48 GIT binary patch literal 5945 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 b(F^|%ePe;%&JO7i00000NkvXXu0mjfZ~G!2 literal 0 HcmV?d00001 diff --git a/ground/gcs/src/plugins/setupwizard/resources/bttn-dshot600-dwn.png b/ground/gcs/src/plugins/setupwizard/resources/bttn-dshot600-dwn.png new file mode 100644 index 0000000000000000000000000000000000000000..92f32ab8e86b24bb60c4006df0532aaef86e7524 GIT binary patch literal 5060 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 a1pg1(KDOCMqik#d000000006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;sF~J0RS%))9L^K7U)St zK~#9!?VWji6!qQ5-!pq%*=4hAPQsGi{k>nWd1ZHg zlbPMw-)BDG?{|JPBLNa_q-G}h`RAX%MX%TYOp>JGk|Y@s2qFYUQOt^>6j>~mx1W0I zsfB0}Cg}^61i?}?Io*W?DlL3`1%lRgg37gF(oJkPrg$bNa zCpMc6lgWfE%lVDQBl|>l5`a38m;hOlq-a@|ak*SxcM=F96^{;NSw@niXdkWk7A2%W zA)jYKuPcc#Part&R*iVXB>RMXl7GnOn@0%*g62{Ag?ru{%HN%2pWI3y5Cq0wFOnzZ z^EecN97>WT5%LKH7p6Wc++}lL?KE*B|B(^`fuIF_1=5R5GsBL={t^gU4f!t6j=Ckq zdBQyr@(BbNq(1>2O6?ckMRdqlXRc@a&OPkhdyu1LCn>M2rl!`6)#`}oAXq}esMis1 ziY6^Nk-=G+jLgrbZ)R^1^7-kk)*8|1V^Hf1sABpM zYtkS|Dk9mW6$KQR1GB?M$@dnDk8J1t#cPR)k{Fqj#iXmRAUAtpBt|k9=tkXAV*r~A z8_JHCv+&a|`D)`%TACY9zGO1t$*H0|K6c-z|Azy2HQAb+WICQv_4?q5lO*@Ye71sk} z@({F!Skzi0vRaEIi+W7Jpih>Nkdajy&>GO9;Bq?An|k7~)?qf+@Q+nHn7{06CR~xt z%o`_@(z8dz?J0E!lo^uj-G7J=KmLqu`^t%mOClj77p)-_5c3 z1)}ei`OPZ~8e9lBM<3Udy(g=9;-z`? z?h(!8f{|P~I-g$2NnP5Z!ZwGRdH>Ty#dJq!OdvWr8;w5JeKJ<9r7NF>UH7+py{}y^ z7fzQ#gUvzBISU8Ms`>b<-IN@zZ1O)t`t;zANx2N^lSH&ZORd?;o+FhkT3y1n{pA7I z4N!33TU}aMx@Z%I_@11uJI&l>oB7L!%UHc|j&P{UfhlDG#)MQ<+9*_NU85Uy>~juG zPvo`7r?GtfK3@IjhM;{1S(cGy(5O|!7<8m1nHV=Lli$3tlFfUL1285#jTaxBjO^pK z-A!r=@-r#O&t&!oYgxX2e^3tuogr39mQiaBs5N@DMiYkkWaTH%V!JOm`G=g zM;D!dT5GuI^GKP!;)&9#$?czf`Hyfa6?a{q?|pyABqW zjHd9;p*)Ig>rrFu)LE!Bx=a3{qhfmypEkJD)~9Ohu<~U%I*z~pZAK4C6O5WSAN35W2e}- ztBjT39^`aw{iXd;T?*gsE^9JRAEgQS8sJFznWhI9ou=7!&-wLq662%Y>(OcW;lx~G z3_50iunvIK#8}?^&5gtu&L0Gmy2UWPU@!&wncP476HZi}3);a&tB)f-Z7?o--=J*I za<-~#=TQ2%M2y|iy0j&aAKr(1ZyH6f#J~eMje0G4S;^#OB~v(KBum!q;oYTMF@&F(f5D&M-}MbP;-dB5_cx9k%n#b=3LY`}GA29CeZMQ<$JggK5mS>KHAc^UH;v|* zx4xj@zPEx>@K9-V=rzF||JR_M%a%c6I9Z!|7t(_9MJFZ!L3| z6#-CovW6$#_?&;P+DUayJsP#lt=D8T_vu?0klwvb+iCW(4DBpdc-V8K=~49I+ppxo zTSp_ep$;$jM4Skz=*tTD>_Idl5;Y#L5Jzp%-B|8_x;9jYsf=}(VbNB#i!nfW!_ z4m0Q9-%@e94uI>f%mTpXaI$e%85?(%@%EC znA+Q>G*eFTEdSw(?Tj4U3$^O}o!x#oF_)~g?)>)6RhS#>&2Dq=(W(p9tx=y}PkgMt zN!$Ko)lJ^V7%x5_Zti<`l^!J=sslW6R{{A0QgA5>|M!peJoC3Nykcq&yTipNYxhw2 z!Xi#o)uPvFnElWck`kiZEvAlkI)Gi@Rq)%ttfH>o+GPH)fxUR;7gNz{n!kmjqFfkG z`eKOEw%E;m#n;~Nqjc~96Y9uqai_LUT{UN#G`c?kul{obi`SG~uuOx^(U`AXc(gxJ zS<54TUdE}j^~4x-JUQ#?pm&aqyN~hH7Z$OQZo9o9Yp4mOy?s0) z#_~0rh~xuE$zBFRME%( z8?+rU_MX>UJ?C}B(BAY)jK$?rc>P}+n_bS~bg^Q?ffm=bb?*t*?5LfM3!`4!X{B`kJjm&D;?-t%pw*oJnW}2cO_tSZJN^^e9nKc>B%8x| z$z9I3i@NOAkdKN&_7eEE?EInq+#{Da?CKm_-@d;bo85_4qhe4-54P?--U(r;#JK#- z3p%=obM;ob#hw3|vU)cy-`BTL&g?;Vll$TIR-1#RU+<-^zHRPOke^B4)bqoC%oZD3jh@@D z&1Pu7BF~Zfc>ENj zeFXKvv$r*A-*xC@lfsQrf4(Z1mSo~sMGfL!9PJQPC|Gwk7 z?<9R{7ppvW4uv zNk~YH%}ocO_`vtnS*(pYiIX+k54UMub@evh|8yJu(#|_nUjG!L4O$MLI8AwVE%gm{ z_LW}Tm@t>ih0Wol>WrCn+mG_@((@g8UuiXkFD&BDDR~SZm_mGvo^$n9b{?u={>ozZ zl~#9nyG8rTdF-{%xMNZ-1Jb)=h|+S-Y-QVla^79KwaGZX-_KpcV|QM~;LIKvqqG4< zCd^Y$^Epb(lEm^?W&!Z_k}a%nbdvUzkUMfj zFRM7qALgy?@VZ;tX3@TKiuRSay6%&w>-g2{pI@Te%(PU)Q zkkk$f%9nu|i5MG47wkP!g@8^KldRD(ZsxCodih4tmkWX`s8Hsc;!>{4&0t)9Ca*2n z(B?u!b9i#GeMhS<`DGoENZ4P#(cTLTyBe#D4)egRqlq;}F>C5D=KTBHW|!@k+Rd92 z1tKFk-aCkPk>7|5iLO87rhi&D?!S37*?p6!Z?N&jmhX6T;U=7ogZ-|`P3N8)hLhGa zj>^+@%>8s5Uu^l#`~R)AcLrVk@{P7EAJ&l~`=ye*p#Tl7-Z4UQL8}2T& zWF_;52PV_McXy(+8hZDP=h?yuPEzR$yd z{uF>g8SXG^-tui&Y!3dqXtTEn)0TEYJBkwFaDm~OS_=>TaVal8IE4Y}-6@8+Vl+<(hx#t-X5 zz17Z&jR%;wd>c-ef+@y*6|ZNgk!Peve2m+hw98_Bj))~r_R>%z)MT`$qmDp zd2J3o;-e{?F@nMwBXBA1psi1@1QyNyQIr4MdGI8E{QEjezpn}DP7@z%U`B!aPEoPZ zQQUpQaP&Ggb3WeW?I@lCh5y~3T5IpLXyP(lzEM$85!@KfrjlcP`prJJwc(^^C^&SFglK;K`U;Bnmot1|3NJl$9TP|O zW6sB$sHtlp(PShcR?q2Li`RM1oU^!{sg?H5!e%*3Wo2d14>s-1w<12|3*=UFmlZL0 zSrO3&Ew@b=%H1~%=R{>Kzj$Rim8a{xuGQt-rUU=8=SU?z5~AIMTNMRo<3L`gQ$Yd_ zmQ|BzGIIaTqj`D$H{3PVeWT62jrrn%R@yu3ySVJu@E<7=?$p)WIC;uFX3b)=dtbM= zV4+ZslsFL+dx~@Zo!qYbdU6;#oJycMK9z{}7LU8#Bg~!>5 zqJ*I9g?4iI9-u?^Mwf!n#pUWc!@4@VZwrSK2!iQQB8L)$GhO<6sIK<(4MAveIj)DQ zt*s57L$$ZcckW#9o*3Sir*8;C3!CL^Q2S6v94c(9eBtou6G8a>rXia{Eq?70w(L31 znr%ne`CS!?xH2b1QAp_)&G_NzOc*gu3_ZGBbT=8f;Rl1caeNNdHFYdry_4nZ4{^5M zhIqtE*GDD6RXM5Ld`&jFS*bW24jc|g(4U$ZbcbqhoEfy^nxc4rgc!YspUxP=-P6bL z)#m+tv~mZ>D(XN~C%c>*8FgxA6l8Jhggi_!dK?Z17K^1z_q9$JRG0sm6a|~jec$qH zM)qgo6@ys4c|RX~R!nKdIU%erAf)cGQQUgXV5W~7icX`#ZntB#hF=~Wc4PURPA5*M zlY(J=89!5B8IE+MB}H?`q#P!W83c+8r_+huZVyQ}ipU49`3vi+ zyiBeh(Vulihj@Q^5l6lk!n*W2a*@*~k(m>RGB&R-PNx%x-4+qwJ?uwHxLhu5HXCE} zGAS6|j}1Ex^U;c8_LQDNlElcXPVG#x!nnM2Zl9RTfQ%#@4u>}s4~Nk<;x=Ld9BXuT zI%D(tvVGq%7Jj*ljV0wc6(NR;3hR1AGi6Lat{Xd;_*erDha)WWBjHdjIM&d9$>a@4 z<@DKlmVaHs=bH{ue#(p}xwoyzkQA@yitJRb9hJq<{=K{htWeF5ghO?Luv{(|u|_RF znmU46(?@gUcr}}LA7%I9N{&_3Qhm08x`s$UucctnX-JAUkdYk6po~Pu49y@tr5i4n zyT}l!Zq#l;MamVso}+7OQXIXL^O-5jVwC*_k)48~DBc5+CpQXLH|l7#CT?`;*J(WB z5(q9y4i!m9Ac5dw5p`pMKnO}82+@#FgnI%(+qEDZN+1Z9Ly6L{K+rxt2!|2~IuRi# zfgo5RUt1F~fgn;szKe1w&p=0kK+rZ#v?!?R>T0nE1%h^HqQ#JJ_wL>F?AcRbn|^<_B7>R_skd#ACDBu-ollKlb(mVEO@-EtgOaIM9xOHa(Ns|(k5&M7Spi_ps03shk1ws|!Lt z-<9CA5`1zd&jw_lP*4gG@(Bc?E-Iy&x`N9u%yR}<*6UD`kDy#W0`V*;2XG}JCP5^L zDv-GRhaM?`Mw|PFdj7eU>=WMki%AGe5Dp<90fgcTAg(|Y{||^W=YR_*(Bl9A002ov JPDHLkV1hb|#Owe7 literal 0 HcmV?d00001 diff --git a/ground/gcs/src/plugins/setupwizard/resources/bttn-ESC-down.png b/ground/gcs/src/plugins/setupwizard/resources/bttn-esc-down.png similarity index 100% rename from ground/gcs/src/plugins/setupwizard/resources/bttn-ESC-down.png rename to ground/gcs/src/plugins/setupwizard/resources/bttn-esc-down.png diff --git a/ground/gcs/src/plugins/setupwizard/resources/bttn-ESC-up.png b/ground/gcs/src/plugins/setupwizard/resources/bttn-esc-up.png similarity index 100% rename from ground/gcs/src/plugins/setupwizard/resources/bttn-ESC-up.png rename to ground/gcs/src/plugins/setupwizard/resources/bttn-esc-up.png diff --git a/ground/gcs/src/plugins/setupwizard/resources/bttn-esc300-dwn.png b/ground/gcs/src/plugins/setupwizard/resources/bttn-esc300-dwn.png new file mode 100644 index 0000000000000000000000000000000000000000..f3f5aaf043eaf7295c949c329a1496dd5ab57c26 GIT binary patch literal 4579 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 HcJTiLIQIG> literal 0 HcmV?d00001 diff --git a/ground/gcs/src/plugins/setupwizard/resources/bttn-esc300-up.png b/ground/gcs/src/plugins/setupwizard/resources/bttn-esc300-up.png new file mode 100644 index 0000000000000000000000000000000000000000..33a5b5ec36ef8c0f0c9bac58a5482c0ffbc3bfe6 GIT binary patch literal 5748 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 mi9{liNF)-8L?V%N1^*Ai6A`6~iHw#200006 literal 0 HcmV?d00001 diff --git a/ground/gcs/src/plugins/setupwizard/resources/bttn-multishot-up.png b/ground/gcs/src/plugins/setupwizard/resources/bttn-multishot-up.png new file mode 100644 index 0000000000000000000000000000000000000000..70ee2280c45bf0e0f021ee26336b45c39e179612 GIT binary patch literal 5995 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 W=6?i*NE1h4098dz1&kal^#1^*^veqX literal 0 HcmV?d00001 diff --git a/ground/gcs/src/plugins/setupwizard/resources/bttn-oneshot125-up.png b/ground/gcs/src/plugins/setupwizard/resources/bttn-oneshot125-up.png index aae7e4ef800ecc6177268b793adbfbb7c69adb65..161f889327d57a13c3f4d1141e3e11791e1e211f 100644 GIT binary patch literal 5894 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 literal 6166 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 diff --git a/ground/gcs/src/plugins/setupwizard/resources/bttn-oneshot42-dwn.png b/ground/gcs/src/plugins/setupwizard/resources/bttn-oneshot42-dwn.png new file mode 100644 index 0000000000000000000000000000000000000000..a3ceeee5942d5619c5f4999de74f58cf352e8f39 GIT binary patch literal 4806 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 S+~W3205xSTrD_H1i2ngg_IFJH literal 0 HcmV?d00001 diff --git a/ground/gcs/src/plugins/setupwizard/resources/bttn-oneshot42-up.png b/ground/gcs/src/plugins/setupwizard/resources/bttn-oneshot42-up.png new file mode 100644 index 0000000000000000000000000000000000000000..e107d7ba9a96d07eb99904219cfb326fee293407 GIT binary patch literal 5732 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 W8-Oj)(jV9W0000resources/bttn-plane-down.png resources/bttn-plane-over.png resources/bttn-plane-up.png - resources/bttn-ESC-down.png - resources/bttn-ESC-up.png + resources/bttn-esc-down.png + resources/bttn-esc-up.png resources/bttn-ppm-down.png resources/bttn-ppm-up.png resources/bttn-pwm-down.png @@ -52,8 +52,22 @@ resources/bttn-upgrade-up.png resources/not-connected.png resources/connected.png + resources/bttn-esc300-dwn.png + resources/bttn-esc300-up.png resources/bttn-oneshot-dwn.png resources/bttn-oneshot-up.png + resources/bttn-oneshot125-dwn.png + resources/bttn-oneshot125-up.png + resources/bttn-oneshot42-dwn.png + resources/bttn-oneshot42-up.png + resources/bttn-multishot-dwn.png + resources/bttn-multishot-up.png + resources/bttn-dshot150-dwn.png + resources/bttn-dshot150-up.png + resources/bttn-dshot600-dwn.png + resources/bttn-dshot600-up.png + resources/bttn-dshot1200-dwn.png + resources/bttn-dshot1200-up.png resources/bttn-srxl-down.png resources/bttn-srxl-up.png resources/bttn-hott-down.png From 498aba5c1967f72133e3b75a3f59cfa62c42beed Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Sun, 28 Jan 2018 01:28:14 +0100 Subject: [PATCH 2/3] LP-514 Add DShot150/600/1200 and OneShot42/MultiShot Esc support to Wizard --- .../plugins/setupwizard/connectiondiagram.cpp | 4 +- .../setupwizard/pages/esccalibrationpage.cpp | 6 +- .../setupwizard/pages/esccalibrationpage.h | 2 +- .../src/plugins/setupwizard/pages/escpage.cpp | 55 +++- .../src/plugins/setupwizard/pages/escpage.h | 1 + .../src/plugins/setupwizard/pages/escpage.ui | 271 +++++++++++++++++- .../pages/outputcalibrationpage.cpp | 49 +++- .../setupwizard/pages/outputcalibrationpage.h | 9 +- .../src/plugins/setupwizard/setupwizard.cpp | 27 +- .../vehicleconfigurationhelper.cpp | 39 ++- .../setupwizard/vehicleconfigurationhelper.h | 18 +- .../setupwizard/vehicleconfigurationsource.h | 2 +- 12 files changed, 436 insertions(+), 47 deletions(-) diff --git a/ground/gcs/src/plugins/setupwizard/connectiondiagram.cpp b/ground/gcs/src/plugins/setupwizard/connectiondiagram.cpp index c8f02c137..a694a2d5e 100644 --- a/ground/gcs/src/plugins/setupwizard/connectiondiagram.cpp +++ b/ground/gcs/src/plugins/setupwizard/connectiondiagram.cpp @@ -179,7 +179,9 @@ void ConnectionDiagram::setupGraphicsScene() case VehicleConfigurationSource::CONTROLLER_CC: case VehicleConfigurationSource::CONTROLLER_CC3D: prefix = "cc-"; - if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT || + if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT125 || + m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT42 || + m_configSource->getEscType() == VehicleConfigurationSource::ESC_MULTISHOT || m_configSource->getEscType() == VehicleConfigurationSource::ESC_SYNCHED) { suffix = "-oneshot"; } diff --git a/ground/gcs/src/plugins/setupwizard/pages/esccalibrationpage.cpp b/ground/gcs/src/plugins/setupwizard/pages/esccalibrationpage.cpp index 874beeba2..b8bd5a218 100644 --- a/ground/gcs/src/plugins/setupwizard/pages/esccalibrationpage.cpp +++ b/ground/gcs/src/plugins/setupwizard/pages/esccalibrationpage.cpp @@ -93,8 +93,10 @@ void EscCalibrationPage::resetAllSecurityCheckboxes() int EscCalibrationPage::getHighOutputRate() { - if (getWizard()->getEscType() == SetupWizard::ESC_ONESHOT) { - return HIGH_ONESHOT125_OUTPUT_PULSE_LENGTH_MICROSECONDS; + if (getWizard()->getEscType() == SetupWizard::ESC_ONESHOT125 || + getWizard()->getEscType() == SetupWizard::ESC_ONESHOT42 || + getWizard()->getEscType() == SetupWizard::ESC_MULTISHOT) { + return HIGH_ONESHOT_MULTISHOT_OUTPUT_PULSE_LENGTH_MICROSECONDS; } else { return HIGH_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS; } diff --git a/ground/gcs/src/plugins/setupwizard/pages/esccalibrationpage.h b/ground/gcs/src/plugins/setupwizard/pages/esccalibrationpage.h index f9abf5b56..18768a606 100644 --- a/ground/gcs/src/plugins/setupwizard/pages/esccalibrationpage.h +++ b/ground/gcs/src/plugins/setupwizard/pages/esccalibrationpage.h @@ -59,7 +59,7 @@ private: // Min value should match min value defined in vehicleconfigurationsource.h static const int LOW_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS = 1000; static const int HIGH_PWM_OUTPUT_PULSE_LENGTH_MICROSECONDS = 1900; - static const int HIGH_ONESHOT125_OUTPUT_PULSE_LENGTH_MICROSECONDS = 2000; + static const int HIGH_ONESHOT_MULTISHOT_OUTPUT_PULSE_LENGTH_MICROSECONDS = 2000; Ui::EscCalibrationPage *ui; bool m_isCalibrating; OutputCalibrationUtil m_outputUtil; diff --git a/ground/gcs/src/plugins/setupwizard/pages/escpage.cpp b/ground/gcs/src/plugins/setupwizard/pages/escpage.cpp index 2bd35b1dd..9e0645b00 100644 --- a/ground/gcs/src/plugins/setupwizard/pages/escpage.cpp +++ b/ground/gcs/src/plugins/setupwizard/pages/escpage.cpp @@ -47,17 +47,41 @@ void EscPage::initializePage() { bool enabled = isSynchOrOneShotAvailable(); - ui->oneshotESCButton->setEnabled(enabled); - if (ui->oneshotESCButton->isChecked() && !enabled) { - ui->oneshotESCButton->setChecked(false); + ui->oneshot125ESCButton->setEnabled(enabled); + ui->oneshot42ESCButton->setEnabled(enabled); + ui->multishotESCButton->setEnabled(enabled); + + if ((ui->oneshot125ESCButton->isChecked() || + ui->oneshot42ESCButton->isChecked() || + ui->multishotESCButton->isChecked()) && !enabled) { + ui->oneshot125ESCButton->setChecked(false); + ui->oneshot42ESCButton->setChecked(false); + ui->multishotESCButton->setChecked(false); ui->rapidESCButton->setChecked(true); } + + enabled = isFastDShotAvailable(); + ui->dshot1200ESCButton->setEnabled(enabled); + if (ui->dshot1200ESCButton->isChecked() && !enabled) { + ui->dshot1200ESCButton->setChecked(false); + ui->dshot600ESCButton->setChecked(true); + } } bool EscPage::validatePage() { - if (ui->oneshotESCButton->isChecked()) { - getWizard()->setEscType(SetupWizard::ESC_ONESHOT); + if (ui->dshot1200ESCButton->isChecked()) { + getWizard()->setEscType(SetupWizard::ESC_DSHOT1200); + } else if (ui->dshot600ESCButton->isChecked()) { + getWizard()->setEscType(SetupWizard::ESC_DSHOT600); + } else if (ui->dshot150ESCButton->isChecked()) { + getWizard()->setEscType(SetupWizard::ESC_DSHOT150); + } else if (ui->multishotESCButton->isChecked()) { + getWizard()->setEscType(SetupWizard::ESC_MULTISHOT); + } else if (ui->oneshot42ESCButton->isChecked()) { + getWizard()->setEscType(SetupWizard::ESC_ONESHOT42); + } else if (ui->oneshot125ESCButton->isChecked()) { + getWizard()->setEscType(SetupWizard::ESC_ONESHOT125); } else if (ui->rapidESCButton->isChecked()) { if (isSynchOrOneShotAvailable()) { getWizard()->setEscType(SetupWizard::ESC_SYNCHED); @@ -65,7 +89,7 @@ bool EscPage::validatePage() getWizard()->setEscType(SetupWizard::ESC_RAPID); } } else if (ui->defaultESCButton->isChecked()) { - getWizard()->setEscType(SetupWizard::ESC_STANDARD); + getWizard()->setEscType(SetupWizard::ESC_STANDARD300); } return true; @@ -107,3 +131,22 @@ bool EscPage::isSynchOrOneShotAvailable() return available; } + +bool EscPage::isFastDShotAvailable() +{ + bool available = true; + + switch (getWizard()->getControllerType()) { + case SetupWizard::CONTROLLER_CC3D: + case SetupWizard::CONTROLLER_SPRACINGF3: + case SetupWizard::CONTROLLER_SPRACINGF3EVO: + case SetupWizard::CONTROLLER_PIKOBLX: + case SetupWizard::CONTROLLER_TINYFISH: + available = false; + break; + default: + break; + } + + return available; +} diff --git a/ground/gcs/src/plugins/setupwizard/pages/escpage.h b/ground/gcs/src/plugins/setupwizard/pages/escpage.h index a0e4ec0fb..cba0e8466 100644 --- a/ground/gcs/src/plugins/setupwizard/pages/escpage.h +++ b/ground/gcs/src/plugins/setupwizard/pages/escpage.h @@ -46,6 +46,7 @@ public: private: Ui::EscPage *ui; bool isSynchOrOneShotAvailable(); + bool isFastDShotAvailable(); }; #endif // ESCPAGE_H diff --git a/ground/gcs/src/plugins/setupwizard/pages/escpage.ui b/ground/gcs/src/plugins/setupwizard/pages/escpage.ui index b26f440d2..40d22e685 100644 --- a/ground/gcs/src/plugins/setupwizard/pages/escpage.ui +++ b/ground/gcs/src/plugins/setupwizard/pages/escpage.ui @@ -6,8 +6,8 @@ 0 0 - 641 - 400 + 699 + 549 @@ -59,7 +59,7 @@ p, li { white-space: pre-wrap; } - Standard ESC: Slow refresh rate (50Hz), not recommended for Multirotors. + Standard ESC: Minimal refresh rate (300Hz), for Multirotors. QToolButton { border: none } @@ -69,8 +69,8 @@ p, li { white-space: pre-wrap; } - :/setupwizard/resources/bttn-ESC-up.png - :/setupwizard/resources/bttn-ESC-down.png:/setupwizard/resources/bttn-ESC-up.png + :/setupwizard/resources/bttn-esc300-up.png + :/setupwizard/resources/bttn-esc300-dwn.png:/setupwizard/resources/bttn-esc300-up.png @@ -139,10 +139,17 @@ p, li { white-space: pre-wrap; } + + + + + + 0 + - + - false + true @@ -150,18 +157,260 @@ p, li { white-space: pre-wrap; } - OneShot ESC: BLHeli, Kiss... + OneShot125 ESC: BLHeli, Kiss... QToolButton { border: none } - OneShot ESC + OneShot125 ESC - :/setupwizard/resources/bttn-oneshot-up.png - :/setupwizard/resources/bttn-oneshot-dwn.png:/setupwizard/resources/bttn-oneshot-up.png + :/setupwizard/resources/bttn-oneshot125-up.png + :/setupwizard/resources/bttn-oneshot125-dwn.png:/setupwizard/resources/bttn-oneshot125-up.png + + + + 200 + 100 + + + + true + + + false + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + + true + + + + 10 + + + + OneShot42 ESC: BLHeli, Kiss... + + + QToolButton { border: none } + + + OneShot42 ESC + + + + :/setupwizard/resources/bttn-oneshot42-up.png + :/setupwizard/resources/bttn-oneshot42-dwn.png:/setupwizard/resources/bttn-oneshot42-up.png + + + + 200 + 100 + + + + true + + + false + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + + true + + + + 10 + + + + MultiShot ESC: BLHeli, Kiss... + + + QToolButton { border: none } + + + MultiShot ESC + + + + :/setupwizard/resources/bttn-multishot-up.png + :/setupwizard/resources/bttn-multishot-dwn.png:/setupwizard/resources/bttn-multishot-up.png + + + + 200 + 100 + + + + true + + + false + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + + + + 0 + + + + + true + + + + 10 + + + + DShot150 ESC: BLHeli_S... + + + QToolButton { border: none } + + + DShot150 ESC + + + + :/setupwizard/resources/bttn-dshot150-up.png + :/setupwizard/resources/bttn-dshot150-dwn.png:/setupwizard/resources/bttn-dshot150-up.png + + + + 200 + 100 + + + + true + + + false + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + + true + + + + 10 + + + + DShot600 ESC: BLHeli_S... + + + QToolButton { border: none } + + + DShot600 ESC + + + + :/setupwizard/resources/bttn-dshot600-up.png + :/setupwizard/resources/bttn-dshot600-dwn.png:/setupwizard/resources/bttn-dshot600-up.png + + + + 200 + 100 + + + + true + + + false + + + true + + + Qt::ToolButtonTextUnderIcon + + + true + + + + + + + true + + + + 10 + + + + DShot1200 ESC: BLHeli_S... + + + QToolButton { border: none } + + + DShot1200 ESC + + + + :/setupwizard/resources/bttn-dshot1200-up.png + :/setupwizard/resources/bttn-dshot1200-dwn.png:/setupwizard/resources/bttn-dshot1200-up.png diff --git a/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp b/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp index 838a3c2ac..d23abac22 100644 --- a/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp +++ b/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp @@ -82,8 +82,8 @@ void OutputCalibrationPage::setupActuatorMinMaxAndNeutral(int motorChannelStart, for (int servoid = 0; servoid < 12; servoid++) { if (servoid >= motorChannelStart && servoid <= motorChannelEnd) { // Set to motor safe values - m_actuatorSettings[servoid].channelMin = LOW_OUTPUT_RATE_MILLISECONDS; - m_actuatorSettings[servoid].channelNeutral = LOW_OUTPUT_RATE_MILLISECONDS; + m_actuatorSettings[servoid].channelMin = getLowOutputRate(); + m_actuatorSettings[servoid].channelNeutral = getLowOutputRate(); m_actuatorSettings[servoid].channelMax = getHighOutputRate(); m_actuatorSettings[servoid].isReversableMotor = false; // Car, Tank, Boat and Boat differential should use reversable Esc/motors @@ -93,10 +93,10 @@ void OutputCalibrationPage::setupActuatorMinMaxAndNeutral(int motorChannelStart, || (getWizard()->getVehicleSubType() == SetupWizard::GROUNDVEHICLE_DIFFERENTIAL_BOAT)) { m_actuatorSettings[servoid].channelNeutral = NEUTRAL_OUTPUT_RATE_MILLISECONDS; m_actuatorSettings[servoid].isReversableMotor = true; - // Set initial output value - m_calibrationUtil->startChannelOutput(servoid, NEUTRAL_OUTPUT_RATE_MILLISECONDS); - m_calibrationUtil->stopChannelOutput(); } + // Set initial output value + m_calibrationUtil->startChannelOutput(servoid, m_actuatorSettings[servoid].channelNeutral); + m_calibrationUtil->stopChannelOutput(); } else if (servoid < totalUsedChannels) { // Set to servo safe values m_actuatorSettings[servoid].channelMin = NEUTRAL_OUTPUT_RATE_MILLISECONDS; @@ -466,11 +466,18 @@ void OutputCalibrationPage::setWizardPage() qDebug() << "Current channel: " << currentChannel + 1; if (currentChannel >= 0) { if (currentPageIndex == 1) { + // Set Min, Neutral and Max for slider in all cases, needed for DShot. + ui->motorNeutralSlider->setMinimum(m_actuatorSettings[currentChannel].channelMin); ui->motorNeutralSlider->setValue(m_actuatorSettings[currentChannel].channelNeutral); - ui->motorPWMValue->setText(QString(tr("Output value : %1 µs")).arg(m_actuatorSettings[currentChannel].channelNeutral)); + ui->motorNeutralSlider->setMaximum(m_actuatorSettings[currentChannel].channelMin + NEUTRAL_OUTPUT_RATE_RANGE); + if (ui->motorNeutralSlider->minimum() == LOW_OUTPUT_RATE_DSHOT) { + // DShot output + ui->motorPWMValue->setText(QString(tr("Digital output value : %1")).arg(m_actuatorSettings[currentChannel].channelNeutral)); + } else { + ui->motorPWMValue->setText(QString(tr("Output value : %1 µs")).arg(m_actuatorSettings[currentChannel].channelNeutral)); + } // Reversable motor found if (m_actuatorSettings[currentChannel].isReversableMotor) { - ui->motorNeutralSlider->setMinimum(m_actuatorSettings[currentChannel].channelMin); ui->motorNeutralSlider->setMaximum(m_actuatorSettings[currentChannel].channelMax); ui->motorInfo->setText(tr("

To find the neutral rate for this reversable motor, press the Start button below and slide the slider to the right or left until you find the value where the motor doesn't start.

When done press button again to stop.

")); } @@ -816,10 +823,27 @@ void OutputCalibrationPage::debugLogChannelValues(bool showFirst) qDebug() << "ChannelMax : " << m_actuatorSettings[currentChannel].channelMax; } +int OutputCalibrationPage::getLowOutputRate() +{ + if (getWizard()->getEscType() == VehicleConfigurationSource::ESC_DSHOT150 || + getWizard()->getEscType() == VehicleConfigurationSource::ESC_DSHOT600 || + getWizard()->getEscType() == VehicleConfigurationSource::ESC_DSHOT1200) { + return LOW_OUTPUT_RATE_DSHOT; + } else { + return LOW_OUTPUT_RATE_MILLISECONDS_PWM; + } +} + int OutputCalibrationPage::getHighOutputRate() { - if (getWizard()->getEscType() == SetupWizard::ESC_ONESHOT) { - return HIGH_OUTPUT_RATE_MILLISECONDS_ONESHOT125; + if (getWizard()->getEscType() == VehicleConfigurationSource::ESC_ONESHOT125 || + getWizard()->getEscType() == VehicleConfigurationSource::ESC_ONESHOT42 || + getWizard()->getEscType() == VehicleConfigurationSource::ESC_MULTISHOT) { + return HIGH_OUTPUT_RATE_MILLISECONDS_ONESHOT_MULTISHOT; + } else if (getWizard()->getEscType() == VehicleConfigurationSource::ESC_DSHOT150 || + getWizard()->getEscType() == VehicleConfigurationSource::ESC_DSHOT600 || + getWizard()->getEscType() == VehicleConfigurationSource::ESC_DSHOT1200) { + return HIGH_OUTPUT_RATE_DSHOT; } else { return HIGH_OUTPUT_RATE_MILLISECONDS_PWM; } @@ -828,8 +852,13 @@ int OutputCalibrationPage::getHighOutputRate() void OutputCalibrationPage::on_motorNeutralSlider_valueChanged(int value) { Q_UNUSED(value); - ui->motorPWMValue->setText(tr("Output value : %1 µs").arg(value)); + if (ui->motorNeutralSlider->minimum() == LOW_OUTPUT_RATE_DSHOT) { + // DShot output + ui->motorPWMValue->setText(QString(tr("Digital output value : %1")).arg(value)); + } else { + ui->motorPWMValue->setText(QString(tr("Output value : %1 µs")).arg(value)); + } if (ui->motorNeutralButton->isChecked()) { quint16 value = ui->motorNeutralSlider->value(); m_calibrationUtil->setChannelOutputValue(value); diff --git a/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.h b/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.h index 13cd2c427..09c33310f 100644 --- a/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.h +++ b/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.h @@ -87,10 +87,14 @@ private slots: private: enum ElementType { FULL, FRAME, MOTOR, SERVO }; + static const int LOW_OUTPUT_RATE_DSHOT = 0; + static const int HIGH_OUTPUT_RATE_DSHOT = 2000; static const int LOW_OUTPUT_RATE_MILLISECONDS = 1000; - static const int NEUTRAL_OUTPUT_RATE_MILLISECONDS = 1500; + static const int LOW_OUTPUT_RATE_MILLISECONDS_PWM = 1000; static const int HIGH_OUTPUT_RATE_MILLISECONDS_PWM = 1900; - static const int HIGH_OUTPUT_RATE_MILLISECONDS_ONESHOT125 = 2000; + static const int NEUTRAL_OUTPUT_RATE_RANGE = 500; + static const int NEUTRAL_OUTPUT_RATE_MILLISECONDS = 1500; + static const int HIGH_OUTPUT_RATE_MILLISECONDS_ONESHOT_MULTISHOT = 2000; void setupVehicle(); void startWizard(); @@ -112,6 +116,7 @@ private: void getCurrentChannels(QList &channels); void enableAllMotorsCheckBox(bool enable); + int getLowOutputRate(); int getHighOutputRate(); quint16 getCurrentChannel(); diff --git a/ground/gcs/src/plugins/setupwizard/setupwizard.cpp b/ground/gcs/src/plugins/setupwizard/setupwizard.cpp index 5bb2f5833..5a8f46728 100644 --- a/ground/gcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/gcs/src/plugins/setupwizard/setupwizard.cpp @@ -181,7 +181,10 @@ int SetupWizard::nextId() const } case PAGE_BIAS_CALIBRATION: - if (getVehicleType() == VEHICLE_MULTI) { + if ((getVehicleType() == VEHICLE_MULTI) && + (getEscType() != ESC_DSHOT150) && + (getEscType() != ESC_DSHOT600) && + (getEscType() != ESC_DSHOT1200)) { return PAGE_ESC_CALIBRATION; } else { return PAGE_OUTPUT_CALIBRATION; @@ -414,14 +417,32 @@ QString SetupWizard::getSummaryText() case ESC_STANDARD: summary.append(tr("Standard ESC (%1 Hz)").arg(VehicleConfigurationHelper::LEGACY_ESC_FREQUENCY)); break; + case ESC_STANDARD300: + summary.append(tr("Standard ESC (%1 Hz)").arg(VehicleConfigurationHelper::LEGACY_MULTI_ESC_FREQUENCY)); + break; case ESC_RAPID: summary.append(tr("Rapid ESC (%1 Hz)").arg(VehicleConfigurationHelper::RAPID_ESC_FREQUENCY)); break; case ESC_SYNCHED: summary.append(tr("Synched ESC")); break; - case ESC_ONESHOT: - summary.append(tr("Oneshot ESC")); + case ESC_ONESHOT125: + summary.append(tr("Oneshot125 ESC")); + break; + case ESC_ONESHOT42: + summary.append(tr("Oneshot42 ESC")); + break; + case ESC_MULTISHOT: + summary.append(tr("Multishot ESC")); + break; + case ESC_DSHOT150: + summary.append(tr("Dshot150 ESC")); + break; + case ESC_DSHOT600: + summary.append(tr("Dshot600 ESC")); + break; + case ESC_DSHOT1200: + summary.append(tr("Dshot1200 ESC")); break; default: summary.append(tr("Unknown")); diff --git a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp index dd266f6e3..9ae0f840b 100644 --- a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp +++ b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -157,7 +157,9 @@ void VehicleConfigurationHelper::applyHardwareConfiguration() data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PWMNOONESHOT; break; case VehicleConfigurationSource::INPUT_PPM: - if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT || + if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT125 || + m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT42 || + m_configSource->getEscType() == VehicleConfigurationSource::ESC_MULTISHOT || m_configSource->getEscType() == VehicleConfigurationSource::ESC_SYNCHED) { data.CC_RcvrPort = HwSettings::CC_RCVRPORT_PPM_PIN8ONESHOT; } else { @@ -515,6 +517,7 @@ void VehicleConfigurationHelper::applyActuatorConfiguration() ActuatorSettings *actSettings = ActuatorSettings::GetInstance(m_uavoManager); qint16 escFrequence = LEGACY_ESC_FREQUENCY; + qint16 escDShotMode = LEGACY_DSHOT_MODE; ActuatorSettings::BankModeOptions bankMode = ActuatorSettings::BANKMODE_PWM; switch (m_configSource->getEscType()) { @@ -522,6 +525,10 @@ void VehicleConfigurationHelper::applyActuatorConfiguration() escFrequence = LEGACY_ESC_FREQUENCY; bankMode = ActuatorSettings::BANKMODE_PWM; break; + case VehicleConfigurationSource::ESC_STANDARD300: + escFrequence = LEGACY_MULTI_ESC_FREQUENCY; + bankMode = ActuatorSettings::BANKMODE_PWM; + break; case VehicleConfigurationSource::ESC_RAPID: bankMode = ActuatorSettings::BANKMODE_PWM; escFrequence = RAPID_ESC_FREQUENCY; @@ -530,9 +537,32 @@ void VehicleConfigurationHelper::applyActuatorConfiguration() bankMode = ActuatorSettings::BANKMODE_PWMSYNC; escFrequence = PWMSYNC_ESC_FREQUENCY; break; - case VehicleConfigurationSource::ESC_ONESHOT: + case VehicleConfigurationSource::ESC_ONESHOT125: bankMode = ActuatorSettings::BANKMODE_ONESHOT125; - escFrequence = ONESHOT_ESC_FREQUENCY; + escFrequence = ESC_FREQUENCY_ZERO; + break; + case VehicleConfigurationSource::ESC_ONESHOT42: + bankMode = ActuatorSettings::BANKMODE_ONESHOT42; + escFrequence = ESC_FREQUENCY_ZERO; + break; + case VehicleConfigurationSource::ESC_MULTISHOT: + bankMode = ActuatorSettings::BANKMODE_MULTISHOT; + escFrequence = ESC_FREQUENCY_ZERO; + break; + case VehicleConfigurationSource::ESC_DSHOT150: + bankMode = ActuatorSettings::BANKMODE_DSHOT; + escFrequence = ESC_FREQUENCY_ZERO; + escDShotMode = DSHOT_MODE_150; + break; + case VehicleConfigurationSource::ESC_DSHOT600: + bankMode = ActuatorSettings::BANKMODE_DSHOT; + escFrequence = ESC_FREQUENCY_ZERO; + // escDShotFrequence = LEGACY_DSHOT_ESC_FREQUENCY; + break; + case VehicleConfigurationSource::ESC_DSHOT1200: + bankMode = ActuatorSettings::BANKMODE_DSHOT; + escFrequence = ESC_FREQUENCY_ZERO; + escDShotMode = DSHOT_MODE_1200; break; default: break; @@ -574,6 +604,7 @@ void VehicleConfigurationHelper::applyActuatorConfiguration() switch (m_configSource->getVehicleSubType()) { case VehicleConfigurationSource::MULTI_ROTOR_TRI_Y: // Servo always on channel 4 + data.DShotMode = escDShotMode; data.BankUpdateFreq[0] = escFrequence; data.BankMode[0] = bankMode; if (m_configSource->getControllerType() == VehicleConfigurationSource::CONTROLLER_REVO @@ -591,6 +622,7 @@ void VehicleConfigurationHelper::applyActuatorConfiguration() break; case VehicleConfigurationSource::MULTI_ROTOR_QUAD_X: case VehicleConfigurationSource::MULTI_ROTOR_QUAD_PLUS: + data.DShotMode = escDShotMode; data.BankUpdateFreq[0] = escFrequence; data.BankMode[0] = bankMode; data.BankUpdateFreq[1] = escFrequence; @@ -617,6 +649,7 @@ void VehicleConfigurationHelper::applyActuatorConfiguration() case VehicleConfigurationSource::MULTI_ROTOR_OCTO_COAX_X: case VehicleConfigurationSource::MULTI_ROTOR_OCTO_COAX_PLUS: case VehicleConfigurationSource::MULTI_ROTOR_OCTO_V: + data.DShotMode = escDShotMode; data.BankUpdateFreq[0] = escFrequence; data.BankMode[0] = bankMode; data.BankUpdateFreq[1] = escFrequence; diff --git a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.h b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.h index 31f7707ac..7227ecd96 100644 --- a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.h +++ b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.h @@ -61,15 +61,19 @@ public: VehicleConfigurationHelper(VehicleConfigurationSource *configSource); bool setupVehicle(bool save = true); bool setupHardwareSettings(bool save = true); - static const qint16 LEGACY_ESC_FREQUENCY = 50; - static const qint16 RAPID_ESC_FREQUENCY = 490; - static const qint16 PWMSYNC_ESC_FREQUENCY = 0; - static const qint16 ONESHOT_ESC_FREQUENCY = 0; - static const qint16 ANALOG_SERVO_FREQUENCY = 50; - static const qint16 DIGITAL_SERVO_FREQUENCY = 333; + static const qint16 LEGACY_ESC_FREQUENCY = 50; + static const qint16 LEGACY_MULTI_ESC_FREQUENCY = 300; + static const qint16 RAPID_ESC_FREQUENCY = 490; + static const qint16 PWMSYNC_ESC_FREQUENCY = 0; + static const qint16 ESC_FREQUENCY_ZERO = 0; + static const qint16 DSHOT_MODE_150 = 150; + static const qint16 LEGACY_DSHOT_MODE = 600; + static const qint16 DSHOT_MODE_1200 = 1200; + static const qint16 ANALOG_SERVO_FREQUENCY = 50; + static const qint16 DIGITAL_SERVO_FREQUENCY = 333; static const int MIXER_TYPE_NONE = 0; static const int MIXER_TYPE_MOTOR = 1; - static const int MIXER_TYPE_REVERSABLEMOTOR = 2; + static const int MIXER_TYPE_REVERSABLEMOTOR = 2; static const int MIXER_TYPE_SERVO = 3; diff --git a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationsource.h b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationsource.h index bb5885364..ee0be765f 100644 --- a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationsource.h +++ b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationsource.h @@ -65,7 +65,7 @@ public: MULTI_ROTOR_OCTO_X, MULTI_ROTOR_OCTO_V, MULTI_ROTOR_OCTO_COAX_X, MULTI_ROTOR_OCTO_COAX_PLUS, FIXED_WING_DUAL_AILERON, FIXED_WING_AILERON, FIXED_WING_ELEVON, FIXED_WING_VTAIL, HELI_CCPM, GROUNDVEHICLE_MOTORCYCLE, GROUNDVEHICLE_CAR, GROUNDVEHICLE_DIFFERENTIAL, GROUNDVEHICLE_BOAT, GROUNDVEHICLE_DIFFERENTIAL_BOAT }; - enum ESC_TYPE { ESC_ONESHOT, ESC_SYNCHED, ESC_RAPID, ESC_STANDARD, ESC_UNKNOWN }; + enum ESC_TYPE { ESC_DSHOT1200, ESC_DSHOT600, ESC_DSHOT150, ESC_MULTISHOT, ESC_ONESHOT42, ESC_ONESHOT125, ESC_SYNCHED, ESC_RAPID, ESC_STANDARD300, ESC_STANDARD, ESC_UNKNOWN }; enum SERVO_TYPE { SERVO_ANALOG, SERVO_DIGITAL, SERVO_UNKNOWN }; enum INPUT_TYPE { INPUT_PWM, INPUT_PPM, INPUT_SBUS, INPUT_DSM, INPUT_SRXL, INPUT_HOTT_SUMD, INPUT_EXBUS, INPUT_IBUS, INPUT_UNKNOWN }; enum AIRSPEED_TYPE { AIRSPEED_ESTIMATE, AIRSPEED_EAGLETREE, AIRSPEED_MS4525, AIRSPEED_DISABLED }; From 76118a2984150da944db499dc2a979ce75d0e007 Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Wed, 14 Feb 2018 13:53:09 +0100 Subject: [PATCH 3/3] LP-514 Changes from review - Simplify and rename. --- .../pages/outputcalibrationpage.cpp | 40 +++++++++---------- .../setupwizard/pages/outputcalibrationpage.h | 14 +++---- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp b/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp index d23abac22..fa8f17d03 100644 --- a/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp +++ b/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.cpp @@ -91,7 +91,7 @@ void OutputCalibrationPage::setupActuatorMinMaxAndNeutral(int motorChannelStart, || (getWizard()->getVehicleSubType() == SetupWizard::GROUNDVEHICLE_DIFFERENTIAL) || (getWizard()->getVehicleSubType() == SetupWizard::GROUNDVEHICLE_BOAT) || (getWizard()->getVehicleSubType() == SetupWizard::GROUNDVEHICLE_DIFFERENTIAL_BOAT)) { - m_actuatorSettings[servoid].channelNeutral = NEUTRAL_OUTPUT_RATE_MILLISECONDS; + m_actuatorSettings[servoid].channelNeutral = NEUTRAL_OUTPUT_RATE_MS; m_actuatorSettings[servoid].isReversableMotor = true; } // Set initial output value @@ -99,17 +99,17 @@ void OutputCalibrationPage::setupActuatorMinMaxAndNeutral(int motorChannelStart, m_calibrationUtil->stopChannelOutput(); } else if (servoid < totalUsedChannels) { // Set to servo safe values - m_actuatorSettings[servoid].channelMin = NEUTRAL_OUTPUT_RATE_MILLISECONDS; - m_actuatorSettings[servoid].channelNeutral = NEUTRAL_OUTPUT_RATE_MILLISECONDS; - m_actuatorSettings[servoid].channelMax = NEUTRAL_OUTPUT_RATE_MILLISECONDS; + m_actuatorSettings[servoid].channelMin = NEUTRAL_OUTPUT_RATE_MS; + m_actuatorSettings[servoid].channelNeutral = NEUTRAL_OUTPUT_RATE_MS; + m_actuatorSettings[servoid].channelMax = NEUTRAL_OUTPUT_RATE_MS; // Set initial servo output value - m_calibrationUtil->startChannelOutput(servoid, NEUTRAL_OUTPUT_RATE_MILLISECONDS); + m_calibrationUtil->startChannelOutput(servoid, NEUTRAL_OUTPUT_RATE_MS); m_calibrationUtil->stopChannelOutput(); } else { // "Disable" these channels - m_actuatorSettings[servoid].channelMin = LOW_OUTPUT_RATE_MILLISECONDS; - m_actuatorSettings[servoid].channelNeutral = LOW_OUTPUT_RATE_MILLISECONDS; - m_actuatorSettings[servoid].channelMax = LOW_OUTPUT_RATE_MILLISECONDS; + m_actuatorSettings[servoid].channelMin = LOW_OUTPUT_RATE_MS; + m_actuatorSettings[servoid].channelNeutral = LOW_OUTPUT_RATE_MS; + m_actuatorSettings[servoid].channelMax = LOW_OUTPUT_RATE_MS; } } } @@ -472,9 +472,9 @@ void OutputCalibrationPage::setWizardPage() ui->motorNeutralSlider->setMaximum(m_actuatorSettings[currentChannel].channelMin + NEUTRAL_OUTPUT_RATE_RANGE); if (ui->motorNeutralSlider->minimum() == LOW_OUTPUT_RATE_DSHOT) { // DShot output - ui->motorPWMValue->setText(QString(tr("Digital output value : %1")).arg(m_actuatorSettings[currentChannel].channelNeutral)); + ui->motorPWMValue->setText(tr("Digital output value : %1").arg(m_actuatorSettings[currentChannel].channelNeutral)); } else { - ui->motorPWMValue->setText(QString(tr("Output value : %1 µs")).arg(m_actuatorSettings[currentChannel].channelNeutral)); + ui->motorPWMValue->setText(tr("Output value : %1 µs").arg(m_actuatorSettings[currentChannel].channelNeutral)); } // Reversable motor found if (m_actuatorSettings[currentChannel].isReversableMotor) { @@ -788,10 +788,10 @@ bool OutputCalibrationPage::checkAlarms() if (data.Alarm[SystemAlarms::ALARM_ACTUATOR] != SystemAlarms::ALARM_OK) { QMessageBox mbox(this); - mbox.setText(QString(tr("The actuator module is in an error state.\n\n" - "Please make sure the correct firmware version is used then " - "restart the wizard and try again. If the problem persists please " - "consult the librepilot.org support forum."))); + mbox.setText(tr("The actuator module is in an error state.\n\n" + "Please make sure the correct firmware version is used then " + "restart the wizard and try again. If the problem persists please " + "consult the librepilot.org support forum.")); mbox.setStandardButtons(QMessageBox::Ok); mbox.setIcon(QMessageBox::Critical); @@ -829,9 +829,8 @@ int OutputCalibrationPage::getLowOutputRate() getWizard()->getEscType() == VehicleConfigurationSource::ESC_DSHOT600 || getWizard()->getEscType() == VehicleConfigurationSource::ESC_DSHOT1200) { return LOW_OUTPUT_RATE_DSHOT; - } else { - return LOW_OUTPUT_RATE_MILLISECONDS_PWM; } + return LOW_OUTPUT_RATE_PWM_MS; } int OutputCalibrationPage::getHighOutputRate() @@ -839,14 +838,13 @@ int OutputCalibrationPage::getHighOutputRate() if (getWizard()->getEscType() == VehicleConfigurationSource::ESC_ONESHOT125 || getWizard()->getEscType() == VehicleConfigurationSource::ESC_ONESHOT42 || getWizard()->getEscType() == VehicleConfigurationSource::ESC_MULTISHOT) { - return HIGH_OUTPUT_RATE_MILLISECONDS_ONESHOT_MULTISHOT; + return HIGH_OUTPUT_RATE_ONESHOT_MULTISHOT_MS; } else if (getWizard()->getEscType() == VehicleConfigurationSource::ESC_DSHOT150 || getWizard()->getEscType() == VehicleConfigurationSource::ESC_DSHOT600 || getWizard()->getEscType() == VehicleConfigurationSource::ESC_DSHOT1200) { return HIGH_OUTPUT_RATE_DSHOT; - } else { - return HIGH_OUTPUT_RATE_MILLISECONDS_PWM; } + return HIGH_OUTPUT_RATE_PWM_MS; } void OutputCalibrationPage::on_motorNeutralSlider_valueChanged(int value) @@ -855,9 +853,9 @@ void OutputCalibrationPage::on_motorNeutralSlider_valueChanged(int value) if (ui->motorNeutralSlider->minimum() == LOW_OUTPUT_RATE_DSHOT) { // DShot output - ui->motorPWMValue->setText(QString(tr("Digital output value : %1")).arg(value)); + ui->motorPWMValue->setText(tr("Digital output value : %1").arg(value)); } else { - ui->motorPWMValue->setText(QString(tr("Output value : %1 µs")).arg(value)); + ui->motorPWMValue->setText(tr("Output value : %1 µs").arg(value)); } if (ui->motorNeutralButton->isChecked()) { quint16 value = ui->motorNeutralSlider->value(); diff --git a/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.h b/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.h index 09c33310f..567b5d01e 100644 --- a/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.h +++ b/ground/gcs/src/plugins/setupwizard/pages/outputcalibrationpage.h @@ -87,14 +87,14 @@ private slots: private: enum ElementType { FULL, FRAME, MOTOR, SERVO }; - static const int LOW_OUTPUT_RATE_DSHOT = 0; - static const int HIGH_OUTPUT_RATE_DSHOT = 2000; - static const int LOW_OUTPUT_RATE_MILLISECONDS = 1000; - static const int LOW_OUTPUT_RATE_MILLISECONDS_PWM = 1000; - static const int HIGH_OUTPUT_RATE_MILLISECONDS_PWM = 1900; + static const int LOW_OUTPUT_RATE_DSHOT = 0; + static const int HIGH_OUTPUT_RATE_DSHOT = 2000; + static const int LOW_OUTPUT_RATE_MS = 1000; + static const int LOW_OUTPUT_RATE_PWM_MS = 1000; + static const int HIGH_OUTPUT_RATE_PWM_MS = 1900; static const int NEUTRAL_OUTPUT_RATE_RANGE = 500; - static const int NEUTRAL_OUTPUT_RATE_MILLISECONDS = 1500; - static const int HIGH_OUTPUT_RATE_MILLISECONDS_ONESHOT_MULTISHOT = 2000; + static const int NEUTRAL_OUTPUT_RATE_MS = 1500; + static const int HIGH_OUTPUT_RATE_ONESHOT_MULTISHOT_MS = 2000; void setupVehicle(); void startWizard();