From 25488da944a44d7ecd9e047758babc04177c1bae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20Mi=C5=A1i=C4=87?= Date: Mon, 30 May 2022 14:44:13 +0200 Subject: [PATCH] px4io: replace safety_off state with safety button event (#19558) internal PX4IO safety_off state is removed and replaced with a normal safety button event. From this 'commit' commander is taking care of the PX4IO safety. --- .../extras/cubepilot_io-v2_default.bin | Bin 39728 -> 39696 bytes .../extras/cubepilot_io-v2_default.bin | Bin 39728 -> 39696 bytes .../durandal-v1/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../pix32v5/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../mro/x21-777/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../px4/fmu-v2/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../px4/fmu-v3/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../fmu-v4pro/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../px4/fmu-v5/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../px4/fmu-v5x/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../px4/fmu-v6c/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes .../px4/fmu-v6x/extras/px4_io-v2_default.bin | Bin 39952 -> 39916 bytes msg/px4io_status.msg | 2 +- src/drivers/drv_pwm_output.h | 6 - src/drivers/pca9685_pwm_out/main.cpp | 2 - src/drivers/pwm_out/PWMOut.cpp | 2 - src/drivers/px4io/px4io.cpp | 134 ++++-------------- src/drivers/uavcan/uavcan_main.cpp | 2 - src/modules/commander/commander_params.c | 2 +- src/modules/commander/esc_calibration.cpp | 10 -- src/modules/px4iofirmware/CMakeLists.txt | 2 +- src/modules/px4iofirmware/mixer.cpp | 6 +- src/modules/px4iofirmware/protocol.h | 13 +- src/modules/px4iofirmware/px4io.cpp | 10 +- src/modules/px4iofirmware/px4io.h | 6 +- src/modules/px4iofirmware/registers.c | 21 +-- .../{safety.cpp => safety_button.cpp} | 43 ++---- 27 files changed, 68 insertions(+), 193 deletions(-) rename src/modules/px4iofirmware/{safety.cpp => safety_button.cpp} (79%) diff --git a/boards/cubepilot/cubeorange/extras/cubepilot_io-v2_default.bin b/boards/cubepilot/cubeorange/extras/cubepilot_io-v2_default.bin index fc9066700fbd65dc8c497a04666ced228cbc4148..b91f26a198dc0927a3d349e26f173d0aaaa4c98a 100755 GIT binary patch delta 4270 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 KihR)U%6|g~TkkLc delta 4511 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 diff --git a/boards/holybro/pix32v5/extras/px4_io-v2_default.bin b/boards/holybro/pix32v5/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 KihR)U%6|g~TkkLc delta 4511 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 diff --git a/boards/mro/x21-777/extras/px4_io-v2_default.bin b/boards/mro/x21-777/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 KihR)U%6|g~TkkLc delta 4511 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 diff --git a/boards/px4/fmu-v2/extras/px4_io-v2_default.bin b/boards/px4/fmu-v2/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 KihR)U%6|g~TkkLc delta 4511 zcmZ8l30PD|wywIjFWqdiiLxo(vLc+z66n=;>^S`W@sY@b)4voNrT486$tnCLie0PGw*$`zwhTib?Vfq zbE?lhx0;_mXZC-=U`;b#j`3Mif+M~C{E-qNq%>K!<2H;NNhX^Pf48y;xY5$g26*|O zdmkw-1Fi$^TCRGxv3QB4#@`p?S1kueeb3=_mJOq$WsK}Y%e!H(U{3ZSQkX6N5fvD} zMYcxH#$Duc-Aj0$!9$ktq{&|Xl_!yc z0tEtF@=`vPacl!pI4w9W)f?B6G(Hm7S{CtRG0^(ipyi;1j`w6{1~@Sq%S+wJvwtnSZ^B)Qn%uHkQ1n&mY|U z3PX_kpyp~HXa$?(r6gKbI6$V%NvO&fkm4eLfyb)sp~J{2Zg3!wc7s&zz^crlcR*U} zK*B^961?3=Aj3$=AND(eg+um$`pW$JGhWJoLmRcJrl5LOcmb?pU5xM#>8ccKVua5m zEIcD2VU!yS7u`({6|9VuJoI5Xi04k948QnW-R>+!$D3K<*RXKLZQ^tLKSjHEr>Jvq zAU^|}=QuJRBX^x^}agO)3;1j+Fu%NWJ zOG^@c>rze68rB=y%!@fSc&V2wyXjHU1M0TV$m_0xGY!e!*o6g+yBp*u>6Ae_8N*KT z@AhBQ_|E<$jnAz})oh!lo2DOQoR+uYndqJs%5Y=6F*7?S`!!{=b7-i=Dg1(;!_S`1 zdZz=ae%-9W9<4i_6=cMZF%B|Z?1|Dx7;#dB!N1)WrNPFuDb>`NB+pf;|Ho!jK=nhJ zA%qo)3{qOdkwO7FCDhwAZ=_5jo95=vN_WOpB6VCj7QPs6dg#q6h);cluH+%hdXJom z0zXNnWAGoRSMCZv@um4QiP`^|gqpChTnep^cGTF(sDiOm_j|-B_=5KgZ{>XseEB2l z_(_hGu`~w2G(axwn~@cO=90XEarin}TabW{lKO%o`~i7f5V9b8_=x_9uCtH9#OzVl zpUD<7SYpD$CJ8Cqdxf2~`i!AVquGa``$1C$G4w+ z$);~?6=s=GC1WA_sO$>!VzPeT^5u!zx6gRQORl$VZRTQb-}USvKIHwZ-PSmGl)rcF zv|SotgJePgVuTl6CROoU!q%6{}&9vdEb{c3$axERSDf!=2Gr}h4 zYN9HPOwxD)TPI1O8AUcHwSdT+rhFTUuNutz^nP~sPy><)7(2w5J+o~2f+x}XBPlNo z!)2tVa5ny!SPND7T{2J@7qrVIQzGFF#|a4`4x~zwP?YMw!bQ8pU-=9k315+oMOx@g z7m6aQQd)HVp~xZr#jVa$=T6Y2SWdyiHsN}y`KDae9b)u}Q{6me4jD9+m6|7Yg$PVQ zPXAmsf5@|5(Gkvv=hBX&Hilq z4jMGAXRY)s9O42}GhdDOkWc1E2W@k4O-m)2^U+GAIJyI)j1leHr`m(7kV4aok&*Z> zQ0aplu|}sj%8@^qHE%i}Yed9PH%sjlzq2E?uQmcSPVu2#ZKU<9HZV=)?W1R*3>n}$ zM1g>NfcFCG$fgBLaX~Y}9#Ksx8CZQd5 z&~?<`0pPdbiRvMH7iQxuVqF-ClgOimW1syy%+Q^vWlD>e5*m;+Mn5(;%)o(sLkiW8 z$qO^&3^8y9buL{$3w)5wSQIUfvp)wGy=3{K&~Y?Izo#+N{Q?0r2L+&+99R@Gu0T>7 zeU#bo9HjPP$a$18bOD3o{@+1!|qC6{%UK!ZGC3vMHhaA(F(WQPNYm3vw^%Tc)ZysJngUS|5|MZ6L^8_<&>I z&i93WQ0v8ZW95FWTO8$4s`kO2{qD%SNZ8~?>ZXS>#ct^5oVOm{Y*{(BZ8o_?<3K!5lKJk=%BljgThYWe z^Xs|rL|1rqwb3WLG^(T2+&PfJzBVVhd_+^>^K{0mtJGX9pVNWWZD3&vDbt03#eSZy z4(n($uhWHfz{-%2^5c6B@bzcrHRE`NHMugmxy>BSvE5453P@+8yVMNfuCEFal=20d z;4ZiLGUT>gyHE!gAzz%Vh>HQ1tjxsVyBGRU&S4v#*l2T$Wo{hrZB6Biv~&KSWpX7e zczm*3YoRWw6xmuQp`*(kyBwuveSU}#7?4`YSkFF20VQ29kBeKe5=|GhcC30{Go#!s zKI6{Pa!R*2-tr@m5FDqE6t%oAjfv4R+1(|Oh}R*-e0rBj9A#)rZ)G; zf9#GYKN!-g#_Ol@5n8JM!J&p*#h2ZRm@(QbHWc^At^$58G+LX4RbHB%5Sd&2emF#1 z4}Fb3AGCJsjv@uE66G;D+{%!0Gw7p$Y0rBAYzH_1Nig;UcEP*^{4uPfb>G5*Kt3$V z2rx@G`k3i;S^hnV{IGb843yaMee&q{tKn}^X*TDARVn0fsU9mxUui05JcbnaEmKw` zU@%y;Qj2@Y@s+FP-#8L^hq#*rt%?j%KndRm|7aS{pfCMPByH6dZ>lxI*7r%!>d zTwc9;+=w%$@{Awh&&YuB9!I?y$;~zCPqruHUOZgY z<)l|dyZH4}*12RO7e>37eRty(k`|DCjd7)>5ITFegb?L z_$2Ud;E!NF6!@4kbLbP`!{B`%a2@FVfDbw~{T%RtDiCBK?1hO);2KyE0leM$Kq6q})W6)5ZF`@|q=?G{jCq6y7)6QQ{?xYh=4ld7}wY@hm zgPxvU+(}gHW^+pT_5#UE>-1b0NRvqWIyE!kBL7@BiTmLk>IftLFRAcdlJL?*97c*> z>cneF_{%>VCeUS221-C7$iD&31)fWt0D7UCVu7jCqX626YXP(i(!Lznf+mFNWB4#_ zoU*eI&2os7+$tX0!S6#gc5!H!7|UjcTy)cDXZ4#Q+WD>2)f<+UvfGUJS0G;WgExw$ z?iCx({3{H*01|9U)mxw%ufX_kfUg1H0LFZP6f*%!0owp40M`I+z*NhHS1WKnbwQWY zB}K=P;xynafVz4BOx>7(W8nAVHDKzV139rpHr}7FX_|0*4UdIVDOhXd?cxox?KN$v z05&~O{i%#L{3AX=853Clay@U=l_3a z?~>uooe5unjS+ATa2_xhumZ3OupbcEB7@(3w9?H@l6aK-{CX%3CES)|&H%F-lC~vT zP1pPukOIg6NU&#Mi+8Tth~n5=G|&=4wq*NGYkT5J5+{>;TS6vV&Y}s8S)*@NLZ57K z)64TNB#FUJI)2YhZRyy@68XjyHfJGqPJbT&3y{zo=?Bx%`I1>QNE$dzb^!D=5Sjo@ zj3z-7qk(AvMoW#!7YEU4s-muFtP3q4ZB^rNnh*`2T2gP+gnE<6y*G=wTXaM+w_O=K z!7Ur_b$cp5oyWBv@g0wBJaY}V)b}Nbdg=vzr%kfm#Zh@OXTP3Jp3w2 z+kSFlluOAoC!ONJuxz~V?K^!;Fjp_DMF*YYDVJGSPV zc@>XATVa~$4w)pX({Prfy8{s_=DN!pU+y@Qh_zqS4O($!V#R*-K4Ix&~ z8d!a{0jbYJ7cZZE^2r^&F!vVBjaY+O+VQd|XC0o{O`fIEOc0WMqG_rIs``?|?fh2j4z@WEvI i!3eUsZW5kAj@9kMKauH&_JMriP#fddK>kqw@_zuwk`pxm diff --git a/boards/px4/fmu-v3/extras/px4_io-v2_default.bin b/boards/px4/fmu-v3/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 KihR)U%6|g~TkkLc delta 4511 zcmZ8l30PD|wywIjFWqdiiLxo(vLc+z66n=;>^S`W@sY@b)4voNrT486$tnCLie0PGw*$`zwhTib?Vfq zbE?lhx0;_mXZC-=U`;b#j`3Mif+M~C{E-qNq%>K!<2H;NNhX^Pf48y;xY5$g26*|O zdmkw-1Fi$^TCRGxv3QB4#@`p?S1kueeb3=_mJOq$WsK}Y%e!H(U{3ZSQkX6N5fvD} zMYcxH#$Duc-Aj0$!9$ktq{&|Xl_!yc z0tEtF@=`vPacl!pI4w9W)f?B6G(Hm7S{CtRG0^(ipyi;1j`w6{1~@Sq%S+wJvwtnSZ^B)Qn%uHkQ1n&mY|U z3PX_kpyp~HXa$?(r6gKbI6$V%NvO&fkm4eLfyb)sp~J{2Zg3!wc7s&zz^crlcR*U} zK*B^961?3=Aj3$=AND(eg+um$`pW$JGhWJoLmRcJrl5LOcmb?pU5xM#>8ccKVua5m zEIcD2VU!yS7u`({6|9VuJoI5Xi04k948QnW-R>+!$D3K<*RXKLZQ^tLKSjHEr>Jvq zAU^|}=QuJRBX^x^}agO)3;1j+Fu%NWJ zOG^@c>rze68rB=y%!@fSc&V2wyXjHU1M0TV$m_0xGY!e!*o6g+yBp*u>6Ae_8N*KT z@AhBQ_|E<$jnAz})oh!lo2DOQoR+uYndqJs%5Y=6F*7?S`!!{=b7-i=Dg1(;!_S`1 zdZz=ae%-9W9<4i_6=cMZF%B|Z?1|Dx7;#dB!N1)WrNPFuDb>`NB+pf;|Ho!jK=nhJ zA%qo)3{qOdkwO7FCDhwAZ=_5jo95=vN_WOpB6VCj7QPs6dg#q6h);cluH+%hdXJom z0zXNnWAGoRSMCZv@um4QiP`^|gqpChTnep^cGTF(sDiOm_j|-B_=5KgZ{>XseEB2l z_(_hGu`~w2G(axwn~@cO=90XEarin}TabW{lKO%o`~i7f5V9b8_=x_9uCtH9#OzVl zpUD<7SYpD$CJ8Cqdxf2~`i!AVquGa``$1C$G4w+ z$);~?6=s=GC1WA_sO$>!VzPeT^5u!zx6gRQORl$VZRTQb-}USvKIHwZ-PSmGl)rcF zv|SotgJePgVuTl6CROoU!q%6{}&9vdEb{c3$axERSDf!=2Gr}h4 zYN9HPOwxD)TPI1O8AUcHwSdT+rhFTUuNutz^nP~sPy><)7(2w5J+o~2f+x}XBPlNo z!)2tVa5ny!SPND7T{2J@7qrVIQzGFF#|a4`4x~zwP?YMw!bQ8pU-=9k315+oMOx@g z7m6aQQd)HVp~xZr#jVa$=T6Y2SWdyiHsN}y`KDae9b)u}Q{6me4jD9+m6|7Yg$PVQ zPXAmsf5@|5(Gkvv=hBX&Hilq z4jMGAXRY)s9O42}GhdDOkWc1E2W@k4O-m)2^U+GAIJyI)j1leHr`m(7kV4aok&*Z> zQ0aplu|}sj%8@^qHE%i}Yed9PH%sjlzq2E?uQmcSPVu2#ZKU<9HZV=)?W1R*3>n}$ zM1g>NfcFCG$fgBLaX~Y}9#Ksx8CZQd5 z&~?<`0pPdbiRvMH7iQxuVqF-ClgOimW1syy%+Q^vWlD>e5*m;+Mn5(;%)o(sLkiW8 z$qO^&3^8y9buL{$3w)5wSQIUfvp)wGy=3{K&~Y?Izo#+N{Q?0r2L+&+99R@Gu0T>7 zeU#bo9HjPP$a$18bOD3o{@+1!|qC6{%UK!ZGC3vMHhaA(F(WQPNYm3vw^%Tc)ZysJngUS|5|MZ6L^8_<&>I z&i93WQ0v8ZW95FWTO8$4s`kO2{qD%SNZ8~?>ZXS>#ct^5oVOm{Y*{(BZ8o_?<3K!5lKJk=%BljgThYWe z^Xs|rL|1rqwb3WLG^(T2+&PfJzBVVhd_+^>^K{0mtJGX9pVNWWZD3&vDbt03#eSZy z4(n($uhWHfz{-%2^5c6B@bzcrHRE`NHMugmxy>BSvE5453P@+8yVMNfuCEFal=20d z;4ZiLGUT>gyHE!gAzz%Vh>HQ1tjxsVyBGRU&S4v#*l2T$Wo{hrZB6Biv~&KSWpX7e zczm*3YoRWw6xmuQp`*(kyBwuveSU}#7?4`YSkFF20VQ29kBeKe5=|GhcC30{Go#!s zKI6{Pa!R*2-tr@m5FDqE6t%oAjfv4R+1(|Oh}R*-e0rBj9A#)rZ)G; zf9#GYKN!-g#_Ol@5n8JM!J&p*#h2ZRm@(QbHWc^At^$58G+LX4RbHB%5Sd&2emF#1 z4}Fb3AGCJsjv@uE66G;D+{%!0Gw7p$Y0rBAYzH_1Nig;UcEP*^{4uPfb>G5*Kt3$V z2rx@G`k3i;S^hnV{IGb843yaMee&q{tKn}^X*TDARVn0fsU9mxUui05JcbnaEmKw` zU@%y;Qj2@Y@s+FP-#8L^hq#*rt%?j%KndRm|7aS{pfCMPByH6dZ>lxI*7r%!>d zTwc9;+=w%$@{Awh&&YuB9!I?y$;~zCPqruHUOZgY z<)l|dyZH4}*12RO7e>37eRty(k`|DCjd7)>5ITFegb?L z_$2Ud;E!NF6!@4kbLbP`!{B`%a2@FVfDbw~{T%RtDiCBK?1hO);2KyE0leM$Kq6q})W6)5ZF`@|q=?G{jCq6y7)6QQ{?xYh=4ld7}wY@hm zgPxvU+(}gHW^+pT_5#UE>-1b0NRvqWIyE!kBL7@BiTmLk>IftLFRAcdlJL?*97c*> z>cneF_{%>VCeUS221-C7$iD&31)fWt0D7UCVu7jCqX626YXP(i(!Lznf+mFNWB4#_ zoU*eI&2os7+$tX0!S6#gc5!H!7|UjcTy)cDXZ4#Q+WD>2)f<+UvfGUJS0G;WgExw$ z?iCx({3{H*01|9U)mxw%ufX_kfUg1H0LFZP6f*%!0owp40M`I+z*NhHS1WKnbwQWY zB}K=P;xynafVz4BOx>7(W8nAVHDKzV139rpHr}7FX_|0*4UdIVDOhXd?cxox?KN$v z05&~O{i%#L{3AX=853Clay@U=l_3a z?~>uooe5unjS+ATa2_xhumZ3OupbcEB7@(3w9?H@l6aK-{CX%3CES)|&H%F-lC~vT zP1pPukOIg6NU&#Mi+8Tth~n5=G|&=4wq*NGYkT5J5+{>;TS6vV&Y}s8S)*@NLZ57K z)64TNB#FUJI)2YhZRyy@68XjyHfJGqPJbT&3y{zo=?Bx%`I1>QNE$dzb^!D=5Sjo@ zj3z-7qk(AvMoW#!7YEU4s-muFtP3q4ZB^rNnh*`2T2gP+gnE<6y*G=wTXaM+w_O=K z!7Ur_b$cp5oyWBv@g0wBJaY}V)b}Nbdg=vzr%kfm#Zh@OXTP3Jp3w2 z+kSFlluOAoC!ONJuxz~V?K^!;Fjp_DMF*YYDVJGSPV zc@>XATVa~$4w)pX({Prfy8{s_=DN!pU+y@Qh_zqS4O($!V#R*-K4Ix&~ z8d!a{0jbYJ7cZZE^2r^&F!vVBjaY+O+VQd|XC0o{O`fIEOc0WMqG_rIs``?|?fh2j4z@WEvI i!3eUsZW5kAj@9kMKauH&_JMriP#fddK>kqw@_zuwk`pxm diff --git a/boards/px4/fmu-v4pro/extras/px4_io-v2_default.bin b/boards/px4/fmu-v4pro/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 zcmZ8l4OCP|maclQyJ-Z5h8E;k`_WM$sDLIJ9OBS4@T6%75JXf^o8V7tG#ZRi6FsyF z`a&E>t@uNT8pCh`OJaZyV+cXa;A&hm8`{wfg=cRO?$o0T>rrkN)Pi9OqcKPM#)X1{MxEa0Q@Yu2Uw6b$t0!Y~EiK=$V+;pfP?{AtCr zT&g(4oyze^DGo+#cc8fU@=oS2a>&wTTxfGBVZ|WNM|y_;#dacZZ^z&FAT1LZx0fZy zj0K}_R51i;-^uywFlfaa4u$53ffcJs!V5{&Xy(5B&-u^z79Mk%V<(YYdd-DEdK;uo zF3e?&y#vyE7ZSrgNOX-Ou?Cy_2Ld-Rdlu=s)3kIx(V1l93wDbFPb zc@9jw(51Vdjc~lO-(<`jJB1>*?-nr=wb?DjxeCU7Rh0)CI*2~JUq2EIG96Fb3kTfN z)BodRI`x5Z0&B|v4{k~BsuUXhVy|P->@~hXOaaxe=VDo|mp;tlX7jm*jJL)Cng%SQ9NT*r; zNb?)AtFRzA$(^_zX%jbNv3b1hfs))TjE=c|c6D87bC*MA`qaT#K6RirEWY3fYnbK| z97I(#CEntbV&QGQId0)69X|i#Km3p;UI|+XFbfcW8Yy-9U^I&q6~*F_;tIh-Jur;D7CABCd|Cd~r3qv0yW~{37T7XUpdg zaj;J8ArD`iW{6No*T1m*Vh^8V2W?No zF8sk$XTSJ}4Uvh#h!K~2_S(Az?WiR)S{5BB8|)UIYM)qtWw+&ZJLoG%>>B==8b;jg zeucCbtDooiriW^T#B`skYlb6CS8jLHh+%fOWw9O2t{z?V$q$*CW2cc!#MmWm^BL_0 zqAz*iM|jzmMG@FY>K84(Iyo}gNqN`P%xg%l7C4J-72`Rscvc%)T5S7Q;bplWdiKISJfgDoIO&=DtjaO&^%f?wC2c+E1An;Ff2IEO)t`FO{$({!Vy2e>t#arNJ)`e#8JT!y)1XvUNHJE8Mo~;Yb}6e25FurhZn2y zYSOe=i)+Z0#nVEnJ@U5Y4w?JbYNULBA4aAL?b;{W9cz#>X9y!5Nhsx}Pjkha-BOIJ zU{qh6!pEBt3CzvXx}|$gqzy1cfyOO4$)?h?My%)A93U z-jbPEB4tas*-K!g#vH{*LTTFIOf+YT7B4EzbZNIaKFOUpvW9CBXZzk^EH z;1>Wz^Pi-0nQ^AW;b-Ld2$Nq97Gt~$V+6cl)LRD?!VI9tstMlYdU9h~B3J4#7#Q)s zSI%pARxEVz(E7U<^YJ_**85oTG~vohgKB+y_|Mu^Tq>lTjntMsi}j?tY+cHKLOlQ6 zS)INqludgSCP#zNrt{E@Sp{>X2eGJT5*+k^W1v4oO3D-PB2rzx0CS|LygKq1-}H7! z=AxH#ywcCUnINMgGswfFWO;(tKppzhzqJZW6s0#>g?h!J z8@r6Va@mI}Txe; z4tOgCSRhmhjeKcNXunt53&B*I49jxi{t|%aDHG#>9X4i0=-`*bXzicuc!t&Pm1?|r zj=wFDFEteWKg+c3tmu=cb)A4*q>{R;-hm2#>ZlZMJ9KB%qAK`Z=)pELdsRR5D~%YDpjBz| ztTRY?!J5A+34_6|)dqZ@Twc9)-k>X)cS$GRzK;EnmKq*{-n~f-la1LQ|3c}4guVb% zqghx-kN@{c#hR=BRBMJsT_De{JqL&7Pixo4PD}xovxmh3IUmTMZkxg*ZbKZ~JTAG( ztL7$riA-5{M^3$Ek@0ouj~7KU)}O4t>!vq2r}SS>xZER~xCc6=QjhL_7Q*p?z4Q)8 zZ-P$gsyi3%h)(G;a1wBzn;w=aMm|my8)wL+FHoPQoS4x#o?u}9H*r8k^`H5r@rp(8B*!8Mg)k$+(lh2 zwSKqhCgXnr#Lokf=1Xf&l^tjN1)5(0uEV5My%X}U589Uj7Xg<5BhVNA0aDHftOV2m z&H}y%D6IEh+k&5?F6eMNBn3X~>Hx<8)YTZTmn3pfj)?(Z~`gRe*6A@bqthOi+} z^aBO}shvT5Cg+jzhPT( z5bn*s>^8750X_wM2FL-F16BY8fT~jl-)S_Fg*J!O;YPEj-dqRgDiRyV3r6pxn0co( zlO*h%Ctm{AI#RK7o|gJ}29OL$1&FW)Ri}TR){GL_@9Dy~kaIgTvwz?H*t0{L?|yu* zD1z-)hp6n3{`GV8)JOWs-*1QVdD=^F&2`8jJ>{nD<6b(Fwqva6yAs&!LYRiu2|D%H z5bmz@qv_~EMHUT#hD9I6H=w7>qT$i7X^1pzx=bCwWc}C@fJ10ERZ&-T<%QNOyR|ry zhDU>;medGs6Xs<1uJ!oqlb}Jyfb9t^1;J6}h~R!w<;tzUYvaV@O$RK+4okS`Xb)I|%U_`}6T-5-a?6itqTZ7BZ;A*WAkd)Gnu#Wqny#Aj3Lq%YkTFY|0j-Yyo@>Xa{rx zx&UVYP1ZYyjw`W9cGMe{=p>YB_{Rq+IvP&y)>kRNg3H*UUlmpFR!vxF@DmHB;S@7; KihR)U%6|g~TkkLc delta 4511 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 diff --git a/boards/px4/fmu-v5/extras/px4_io-v2_default.bin b/boards/px4/fmu-v5/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 KihR)U%6|g~TkkLc delta 4511 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 diff --git a/boards/px4/fmu-v5x/extras/px4_io-v2_default.bin b/boards/px4/fmu-v5x/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 KihR)U%6|g~TkkLc delta 4511 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 diff --git a/boards/px4/fmu-v6c/extras/px4_io-v2_default.bin b/boards/px4/fmu-v6c/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 KihR)U%6|g~TkkLc delta 4511 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 diff --git a/boards/px4/fmu-v6x/extras/px4_io-v2_default.bin b/boards/px4/fmu-v6x/extras/px4_io-v2_default.bin index 25a00e2357d781ece9c0d41447c3f4a52c6d19f6..36128d00f42697f28ae38b7b455d50b12cf06998 100755 GIT binary patch delta 4421 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 KihR)U%6|g~TkkLc delta 4511 zcmZ8l30PD|wywIjFWqdiiLxo(vLc+z66n=;>^S`W@sY@b)4voNrT486$tnCLie0PGw*$`zwhTib?Vfq zbE?lhx0;_mXZC-=U`;b#j`3Mif+M~C{E-qNq%>K!<2H;NNhX^Pf48y;xY5$g26*|O zdmkw-1Fi$^TCRGxv3QB4#@`p?S1kueeb3=_mJOq$WsK}Y%e!H(U{3ZSQkX6N5fvD} zMYcxH#$Duc-Aj0$!9$ktq{&|Xl_!yc z0tEtF@=`vPacl!pI4w9W)f?B6G(Hm7S{CtRG0^(ipyi;1j`w6{1~@Sq%S+wJvwtnSZ^B)Qn%uHkQ1n&mY|U z3PX_kpyp~HXa$?(r6gKbI6$V%NvO&fkm4eLfyb)sp~J{2Zg3!wc7s&zz^crlcR*U} zK*B^961?3=Aj3$=AND(eg+um$`pW$JGhWJoLmRcJrl5LOcmb?pU5xM#>8ccKVua5m zEIcD2VU!yS7u`({6|9VuJoI5Xi04k948QnW-R>+!$D3K<*RXKLZQ^tLKSjHEr>Jvq zAU^|}=QuJRBX^x^}agO)3;1j+Fu%NWJ zOG^@c>rze68rB=y%!@fSc&V2wyXjHU1M0TV$m_0xGY!e!*o6g+yBp*u>6Ae_8N*KT z@AhBQ_|E<$jnAz})oh!lo2DOQoR+uYndqJs%5Y=6F*7?S`!!{=b7-i=Dg1(;!_S`1 zdZz=ae%-9W9<4i_6=cMZF%B|Z?1|Dx7;#dB!N1)WrNPFuDb>`NB+pf;|Ho!jK=nhJ zA%qo)3{qOdkwO7FCDhwAZ=_5jo95=vN_WOpB6VCj7QPs6dg#q6h);cluH+%hdXJom z0zXNnWAGoRSMCZv@um4QiP`^|gqpChTnep^cGTF(sDiOm_j|-B_=5KgZ{>XseEB2l z_(_hGu`~w2G(axwn~@cO=90XEarin}TabW{lKO%o`~i7f5V9b8_=x_9uCtH9#OzVl zpUD<7SYpD$CJ8Cqdxf2~`i!AVquGa``$1C$G4w+ z$);~?6=s=GC1WA_sO$>!VzPeT^5u!zx6gRQORl$VZRTQb-}USvKIHwZ-PSmGl)rcF zv|SotgJePgVuTl6CROoU!q%6{}&9vdEb{c3$axERSDf!=2Gr}h4 zYN9HPOwxD)TPI1O8AUcHwSdT+rhFTUuNutz^nP~sPy><)7(2w5J+o~2f+x}XBPlNo z!)2tVa5ny!SPND7T{2J@7qrVIQzGFF#|a4`4x~zwP?YMw!bQ8pU-=9k315+oMOx@g z7m6aQQd)HVp~xZr#jVa$=T6Y2SWdyiHsN}y`KDae9b)u}Q{6me4jD9+m6|7Yg$PVQ zPXAmsf5@|5(Gkvv=hBX&Hilq z4jMGAXRY)s9O42}GhdDOkWc1E2W@k4O-m)2^U+GAIJyI)j1leHr`m(7kV4aok&*Z> zQ0aplu|}sj%8@^qHE%i}Yed9PH%sjlzq2E?uQmcSPVu2#ZKU<9HZV=)?W1R*3>n}$ zM1g>NfcFCG$fgBLaX~Y}9#Ksx8CZQd5 z&~?<`0pPdbiRvMH7iQxuVqF-ClgOimW1syy%+Q^vWlD>e5*m;+Mn5(;%)o(sLkiW8 z$qO^&3^8y9buL{$3w)5wSQIUfvp)wGy=3{K&~Y?Izo#+N{Q?0r2L+&+99R@Gu0T>7 zeU#bo9HjPP$a$18bOD3o{@+1!|qC6{%UK!ZGC3vMHhaA(F(WQPNYm3vw^%Tc)ZysJngUS|5|MZ6L^8_<&>I z&i93WQ0v8ZW95FWTO8$4s`kO2{qD%SNZ8~?>ZXS>#ct^5oVOm{Y*{(BZ8o_?<3K!5lKJk=%BljgThYWe z^Xs|rL|1rqwb3WLG^(T2+&PfJzBVVhd_+^>^K{0mtJGX9pVNWWZD3&vDbt03#eSZy z4(n($uhWHfz{-%2^5c6B@bzcrHRE`NHMugmxy>BSvE5453P@+8yVMNfuCEFal=20d z;4ZiLGUT>gyHE!gAzz%Vh>HQ1tjxsVyBGRU&S4v#*l2T$Wo{hrZB6Biv~&KSWpX7e zczm*3YoRWw6xmuQp`*(kyBwuveSU}#7?4`YSkFF20VQ29kBeKe5=|GhcC30{Go#!s zKI6{Pa!R*2-tr@m5FDqE6t%oAjfv4R+1(|Oh}R*-e0rBj9A#)rZ)G; zf9#GYKN!-g#_Ol@5n8JM!J&p*#h2ZRm@(QbHWc^At^$58G+LX4RbHB%5Sd&2emF#1 z4}Fb3AGCJsjv@uE66G;D+{%!0Gw7p$Y0rBAYzH_1Nig;UcEP*^{4uPfb>G5*Kt3$V z2rx@G`k3i;S^hnV{IGb843yaMee&q{tKn}^X*TDARVn0fsU9mxUui05JcbnaEmKw` zU@%y;Qj2@Y@s+FP-#8L^hq#*rt%?j%KndRm|7aS{pfCMPByH6dZ>lxI*7r%!>d zTwc9;+=w%$@{Awh&&YuB9!I?y$;~zCPqruHUOZgY z<)l|dyZH4}*12RO7e>37eRty(k`|DCjd7)>5ITFegb?L z_$2Ud;E!NF6!@4kbLbP`!{B`%a2@FVfDbw~{T%RtDiCBK?1hO);2KyE0leM$Kq6q})W6)5ZF`@|q=?G{jCq6y7)6QQ{?xYh=4ld7}wY@hm zgPxvU+(}gHW^+pT_5#UE>-1b0NRvqWIyE!kBL7@BiTmLk>IftLFRAcdlJL?*97c*> z>cneF_{%>VCeUS221-C7$iD&31)fWt0D7UCVu7jCqX626YXP(i(!Lznf+mFNWB4#_ zoU*eI&2os7+$tX0!S6#gc5!H!7|UjcTy)cDXZ4#Q+WD>2)f<+UvfGUJS0G;WgExw$ z?iCx({3{H*01|9U)mxw%ufX_kfUg1H0LFZP6f*%!0owp40M`I+z*NhHS1WKnbwQWY zB}K=P;xynafVz4BOx>7(W8nAVHDKzV139rpHr}7FX_|0*4UdIVDOhXd?cxox?KN$v z05&~O{i%#L{3AX=853Clay@U=l_3a z?~>uooe5unjS+ATa2_xhumZ3OupbcEB7@(3w9?H@l6aK-{CX%3CES)|&H%F-lC~vT zP1pPukOIg6NU&#Mi+8Tth~n5=G|&=4wq*NGYkT5J5+{>;TS6vV&Y}s8S)*@NLZ57K z)64TNB#FUJI)2YhZRyy@68XjyHfJGqPJbT&3y{zo=?Bx%`I1>QNE$dzb^!D=5Sjo@ zj3z-7qk(AvMoW#!7YEU4s-muFtP3q4ZB^rNnh*`2T2gP+gnE<6y*G=wTXaM+w_O=K z!7Ur_b$cp5oyWBv@g0wBJaY}V)b}Nbdg=vzr%kfm#Zh@OXTP3Jp3w2 z+kSFlluOAoC!ONJuxz~V?K^!;Fjp_DMF*YYDVJGSPV zc@>XATVa~$4w)pX({Prfy8{s_=DN!pU+y@Qh_zqS4O($!V#R*-K4Ix&~ z8d!a{0jbYJ7cZZE^2r^&F!vVBjaY+O+VQd|XC0o{O`fIEOc0WMqG_rIs``?|?fh2j4z@WEvI i!3eUsZW5kAj@9kMKauH&_JMriP#fddK>kqw@_zuwk`pxm diff --git a/msg/px4io_status.msg b/msg/px4io_status.msg index df072e71c2..295c8fba66 100644 --- a/msg/px4io_status.msg +++ b/msg/px4io_status.msg @@ -19,7 +19,7 @@ bool status_rc_ppm bool status_rc_sbus bool status_rc_st24 bool status_rc_sumd -bool status_safety_off +bool status_safety_button_event # px4io safety button was pressed for longer than 1 second # PX4IO alarms (PX4IO_P_STATUS_ALARMS) bool alarm_pwm_error diff --git a/src/drivers/drv_pwm_output.h b/src/drivers/drv_pwm_output.h index 87fc629f6f..43721f9cb0 100644 --- a/src/drivers/drv_pwm_output.h +++ b/src/drivers/drv_pwm_output.h @@ -188,12 +188,6 @@ typedef uint16_t servo_position_t; /** get the maximum PWM value the output will send */ #define PWM_SERVO_GET_MAX_PWM _PX4_IOC(_PWM_SERVO_BASE, 19) -/** force safety switch off (to disable use of safety switch) */ -#define PWM_SERVO_SET_FORCE_SAFETY_OFF _PX4_IOC(_PWM_SERVO_BASE, 25) - -/** force safety switch on (to enable use of safety switch) */ -#define PWM_SERVO_SET_FORCE_SAFETY_ON _PX4_IOC(_PWM_SERVO_BASE, 28) - /* * * diff --git a/src/drivers/pca9685_pwm_out/main.cpp b/src/drivers/pca9685_pwm_out/main.cpp index 7e230fc567..c748d526e7 100644 --- a/src/drivers/pca9685_pwm_out/main.cpp +++ b/src/drivers/pca9685_pwm_out/main.cpp @@ -492,9 +492,7 @@ int PCA9685Wrapper::ioctl(cdev::file_t *filep, int cmd, unsigned long arg) break; case PWM_SERVO_SET_ARM_OK: - case PWM_SERVO_SET_FORCE_SAFETY_OFF: case PWM_SERVO_CLEAR_ARM_OK: - case PWM_SERVO_SET_FORCE_SAFETY_ON: case PWM_SERVO_ARM: case PWM_SERVO_DISARM: break; diff --git a/src/drivers/pwm_out/PWMOut.cpp b/src/drivers/pwm_out/PWMOut.cpp index 25b94c70d5..f32f579597 100644 --- a/src/drivers/pwm_out/PWMOut.cpp +++ b/src/drivers/pwm_out/PWMOut.cpp @@ -717,8 +717,6 @@ int PWMOut::pwm_ioctl(device::file_t *filp, int cmd, unsigned long arg) case PWM_SERVO_SET_ARM_OK: case PWM_SERVO_CLEAR_ARM_OK: - case PWM_SERVO_SET_FORCE_SAFETY_OFF: - case PWM_SERVO_SET_FORCE_SAFETY_ON: break; case PWM_SERVO_DISARM: diff --git a/src/drivers/px4io/px4io.cpp b/src/drivers/px4io/px4io.cpp index ceb34bc1cd..bfcb3227da 100644 --- a/src/drivers/px4io/px4io.cpp +++ b/src/drivers/px4io/px4io.cpp @@ -74,6 +74,7 @@ #include #include #include +#include #include #include @@ -196,7 +197,8 @@ private: uint16_t _last_written_arming_c{0}; ///< the last written arming state reg uORB::Subscription _t_actuator_armed{ORB_ID(actuator_armed)}; ///< system armed control topic - uORB::Subscription _t_vehicle_command{ORB_ID(vehicle_command)}; ///< vehicle command topic + uORB::Subscription _t_vehicle_command{ORB_ID(vehicle_command)}; ///< vehicle command topic + uORB::Subscription _t_vehicle_status{ORB_ID(vehicle_status)}; ///< vehicle status topic uORB::SubscriptionInterval _parameter_update_sub{ORB_ID(parameter_update), 1_s}; @@ -443,15 +445,14 @@ int PX4IO::init() // the startup script to be able to load a new IO // firmware - // If IO has already safety off it won't accept going into bootloader mode, - // therefore we need to set safety on first. - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_ON, PX4IO_FORCE_SAFETY_MAGIC); - // Now the reboot into bootloader mode should succeed. io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_REBOOT_BL, PX4IO_REBOOT_BL_MAGIC); return -1; } + /* Set safety_off to false when FMU boot*/ + io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_SAFETY_OFF, 0); + if (_max_rc_input > input_rc_s::RC_INPUT_MAX_CHANNELS) { _max_rc_input = input_rc_s::RC_INPUT_MAX_CHANNELS; } @@ -476,14 +477,6 @@ int PX4IO::init() return ret; } - /* set safety to off if circuit breaker enabled */ - if (circuit_breaker_enabled("CBRK_IO_SAFETY", CBRK_IO_SAFETY_KEY)) { - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_OFF, PX4IO_FORCE_SAFETY_MAGIC); - - } else { - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_ON, PX4IO_FORCE_SAFETY_MAGIC); - } - /* try to claim the generic PWM output device node as well - it's OK if we fail at this */ if (_param_sys_hitl.get() <= 0 && _param_sys_use_io.get() == 1) { _class_instance = register_class_devname(PWM_OUTPUT_BASE_DEVICE_PATH); @@ -621,11 +614,6 @@ void PX4IO::Run() update_params(); - /* Check if the IO safety circuit breaker has been updated */ - bool circuit_breaker_io_safety_enabled = circuit_breaker_enabled("CBRK_IO_SAFETY", CBRK_IO_SAFETY_KEY); - /* Bypass IO safety switch logic by setting FORCE_SAFETY_OFF */ - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_OFF, circuit_breaker_io_safety_enabled); - /* Check if the flight termination circuit breaker has been updated */ bool disable_flighttermination = circuit_breaker_enabled("CBRK_FLIGHTTERM", CBRK_FLIGHTTERM_KEY); /* Tell IO that it can terminate the flight if FMU is not responding or if a failure has been reported by the FailureDetector logic */ @@ -974,15 +962,12 @@ int PX4IO::io_handle_status(uint16_t status) */ /* check for IO reset - force it back to armed if necessary */ - if (_status & PX4IO_P_STATUS_FLAGS_SAFETY_OFF && !(status & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) - && !(status & PX4IO_P_STATUS_FLAGS_ARM_SYNC)) { + if (!(status & PX4IO_P_STATUS_FLAGS_ARM_SYNC)) { /* set the arming flag */ - ret = io_reg_modify(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_FLAGS, 0, - PX4IO_P_STATUS_FLAGS_SAFETY_OFF | PX4IO_P_STATUS_FLAGS_ARM_SYNC); + ret = io_reg_modify(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_FLAGS, 0, PX4IO_P_STATUS_FLAGS_ARM_SYNC); /* set new status */ _status = status; - _status &= PX4IO_P_STATUS_FLAGS_SAFETY_OFF; } else if (!(_status & PX4IO_P_STATUS_FLAGS_ARM_SYNC)) { @@ -999,18 +984,26 @@ int PX4IO::io_handle_status(uint16_t status) } /** - * Get and handle the safety status + * Get and handle the safety button status */ - const bool safety_off = status & PX4IO_P_STATUS_FLAGS_SAFETY_OFF; + const bool safety_button_pressed = status & PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT; - /* px4io board will change safety_off from false to true and stay like that until the vehicle is rebooted - * where safety will change back to false. Here we are triggering the safety button event once. - * TODO: change px4io firmware to act on the event. This will enable the "force safety on disarming" feature. */ - if (_previous_safety_off != safety_off) { + if (safety_button_pressed) { + io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_SAFETY_BUTTON_ACK, 0); _button_publisher.safetyButtonTriggerEvent(); } - _previous_safety_off = safety_off; + /** + * Inform PX4IO board about safety_off state for LED control + */ + vehicle_status_s vehicle_status; + + if (_t_vehicle_status.update(&vehicle_status)) { + if (_previous_safety_off != vehicle_status.safety_off) { + io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_SAFETY_OFF, vehicle_status.safety_off); + _previous_safety_off = vehicle_status.safety_off; + } + } return ret; } @@ -1033,37 +1026,17 @@ int PX4IO::dsm_bind_ioctl(int dsmMode) return -EINVAL; } - // Check if safety was off - bool safety_off = (_status & PX4IO_P_STATUS_FLAGS_SAFETY_OFF); - int ret = -1; - - // Put safety on - if (safety_off) { - // re-enable safety - ret = io_reg_modify(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_FLAGS, PX4IO_P_STATUS_FLAGS_SAFETY_OFF, 0); - - // set new status - _status &= ~(PX4IO_P_STATUS_FLAGS_SAFETY_OFF); - } - PX4_INFO("Binding DSM%s RX", (dsmMode == DSM2_BIND_PULSES) ? "2" : ((dsmMode == DSMX_BIND_PULSES) ? "-X" : "-X8")); - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_power_down); + int ret = OK; + ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_power_down); px4_usleep(500000); - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_set_rx_out); - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_power_up); + ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_set_rx_out); + ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_power_up); px4_usleep(72000); - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_send_pulses | (dsmMode << 4)); + ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_send_pulses | (dsmMode << 4)); px4_usleep(50000); - io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_reinit_uart); - ret = OK; - - // Put safety back off - if (safety_off) { - ret = io_reg_modify(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_FLAGS, 0, - PX4IO_P_STATUS_FLAGS_SAFETY_OFF); - _status |= PX4IO_P_STATUS_FLAGS_SAFETY_OFF; - } + ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_reinit_uart); if (ret != OK) { PX4_INFO("Binding DSM failed"); @@ -1133,7 +1106,7 @@ int PX4IO::io_get_status() status.status_arm_sync = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_ARM_SYNC; status.status_init_ok = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_INIT_OK; status.status_failsafe = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_FAILSAFE; - status.status_safety_off = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_SAFETY_OFF; + status.status_safety_button_event = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT; // PX4IO_P_STATUS_ALARMS status.alarm_rc_lost = STATUS_ALARMS & PX4IO_P_STATUS_ALARMS_RC_LOST; @@ -1644,18 +1617,6 @@ int PX4IO::ioctl(file *filep, int cmd, unsigned long arg) *(unsigned *)arg = _max_actuators; break; - case PWM_SERVO_SET_FORCE_SAFETY_OFF: - PX4_DEBUG("PWM_SERVO_SET_FORCE_SAFETY_OFF"); - /* force safety swith off */ - ret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_OFF, PX4IO_FORCE_SAFETY_MAGIC); - break; - - case PWM_SERVO_SET_FORCE_SAFETY_ON: - PX4_DEBUG("PWM_SERVO_SET_FORCE_SAFETY_ON"); - /* force safety switch on */ - ret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_ON, PX4IO_FORCE_SAFETY_MAGIC); - break; - case DSM_BIND_START: /* bind a DSM receiver */ ret = dsm_bind_ioctl(arg); @@ -1725,16 +1686,6 @@ int PX4IO::ioctl(file *filep, int cmd, unsigned long arg) } - // re-enable safety - ret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_ON, PX4IO_FORCE_SAFETY_MAGIC); - - if (ret != PX4_OK) { - PX4_WARN("IO refused to re-enable safety"); - } - - // set new status - _status &= ~(PX4IO_P_STATUS_FLAGS_SAFETY_OFF); - /* reboot into bootloader - arg must be PX4IO_REBOOT_BL_MAGIC */ usleep(1); ret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_REBOOT_BL, arg); @@ -2058,29 +2009,6 @@ int PX4IO::custom_command(int argc, char *argv[]) return 1; } - - if (!strcmp(verb, "safety_off")) { - int ret = get_instance()->ioctl(NULL, PWM_SERVO_SET_FORCE_SAFETY_OFF, 0); - - if (ret != OK) { - PX4_ERR("failed to disable safety (%i)", ret); - return 1; - } - - return 0; - } - - if (!strcmp(verb, "safety_on")) { - int ret = get_instance()->ioctl(NULL, PWM_SERVO_SET_FORCE_SAFETY_ON, 0); - - if (ret != OK) { - PX4_ERR("failed to enable safety (%i)", ret); - return 1; - } - - return 0; - } - if (!strcmp(verb, "debug")) { if (argc <= 1) { PX4_ERR("usage: px4io debug LEVEL"); @@ -2162,8 +2090,6 @@ Output driver communicating with the IO co-processor. PRINT_MODULE_USAGE_ARG("", "Firmware file", false); PRINT_MODULE_USAGE_COMMAND_DESCR("update", "Update IO firmware"); PRINT_MODULE_USAGE_ARG("", "Firmware file", true); - PRINT_MODULE_USAGE_COMMAND_DESCR("safety_off", "Turn off safety (force)"); - PRINT_MODULE_USAGE_COMMAND_DESCR("safety_on", "Turn on safety (force)"); PRINT_MODULE_USAGE_COMMAND_DESCR("debug", "set IO debug level"); PRINT_MODULE_USAGE_ARG("", "0=disabled, 9=max verbosity", false); PRINT_MODULE_USAGE_COMMAND_DESCR("bind", "DSM bind"); diff --git a/src/drivers/uavcan/uavcan_main.cpp b/src/drivers/uavcan/uavcan_main.cpp index e1bfc231b0..cc87e8e070 100644 --- a/src/drivers/uavcan/uavcan_main.cpp +++ b/src/drivers/uavcan/uavcan_main.cpp @@ -951,8 +951,6 @@ UavcanNode::ioctl(file *filp, int cmd, unsigned long arg) switch (cmd) { case PWM_SERVO_SET_ARM_OK: case PWM_SERVO_CLEAR_ARM_OK: - case PWM_SERVO_SET_FORCE_SAFETY_OFF: - // these are no-ops, as no safety switch break; case MIXERIOCRESET: diff --git a/src/modules/commander/commander_params.c b/src/modules/commander/commander_params.c index f1bb34c84c..c22c489987 100644 --- a/src/modules/commander/commander_params.c +++ b/src/modules/commander/commander_params.c @@ -927,7 +927,7 @@ PARAM_DEFINE_INT32(COM_PREARM_MODE, 0); /** * Enable force safety * - * Force safety when the vehicle disarms. Not supported when safety button used over PX4IO board. + * Force safety when the vehicle disarms * * @boolean * @group Commander diff --git a/src/modules/commander/esc_calibration.cpp b/src/modules/commander/esc_calibration.cpp index 1f43cc6a4d..865017ac27 100644 --- a/src/modules/commander/esc_calibration.cpp +++ b/src/modules/commander/esc_calibration.cpp @@ -187,13 +187,6 @@ static int do_esc_calibration_ioctl(orb_advert_t *mavlink_log_pub) goto Out; } - /* tell IO to switch off safety without using the safety switch */ - if (px4_ioctl(fd, PWM_SERVO_SET_FORCE_SAFETY_OFF, 0) != PX4_OK) { - calibration_log_critical(mavlink_log_pub, CAL_QGC_FAILED_MSG, "Unable to force safety off"); - return_code = PX4_ERROR; - goto Out; - } - calibration_log_info(mavlink_log_pub, "[cal] Connect battery now"); timeout_start = hrt_absolute_time(); @@ -233,9 +226,6 @@ static int do_esc_calibration_ioctl(orb_advert_t *mavlink_log_pub) Out: if (fd != -1) { - if (px4_ioctl(fd, PWM_SERVO_SET_FORCE_SAFETY_ON, 0) != PX4_OK) { - calibration_log_info(mavlink_log_pub, CAL_QGC_FAILED_MSG, "Safety switch still off"); - } if (px4_ioctl(fd, PWM_SERVO_DISARM, 0) != PX4_OK) { calibration_log_info(mavlink_log_pub, CAL_QGC_FAILED_MSG, "Servos still armed"); diff --git a/src/modules/px4iofirmware/CMakeLists.txt b/src/modules/px4iofirmware/CMakeLists.txt index 6e4bcdee66..3df90ffdac 100644 --- a/src/modules/px4iofirmware/CMakeLists.txt +++ b/src/modules/px4iofirmware/CMakeLists.txt @@ -39,7 +39,7 @@ add_library(px4iofirmware mixer.cpp px4io.cpp registers.c - safety.cpp + safety_button.cpp serial.cpp ) diff --git a/src/modules/px4iofirmware/mixer.cpp b/src/modules/px4iofirmware/mixer.cpp index 2e0e5bb14f..9fc40dcbde 100644 --- a/src/modules/px4iofirmware/mixer.cpp +++ b/src/modules/px4iofirmware/mixer.cpp @@ -134,13 +134,11 @@ mixer_tick() * FMU or from the mixer. * */ - should_arm = (r_status_flags & PX4IO_P_STATUS_FLAGS_INIT_OK) /* IO initialised without error */ - && (r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) /* and IO is armed */ + should_arm = (r_status_flags & PX4IO_P_STATUS_FLAGS_INIT_OK) /* IO initialised without error */ && (r_setup_arming & PX4IO_P_SETUP_ARMING_FMU_ARMED) /* and FMU is armed */ ; - should_arm_nothrottle = ((r_status_flags & PX4IO_P_STATUS_FLAGS_INIT_OK) /* IO initialised without error */ - && (r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) /* and IO is armed */ + should_arm_nothrottle = ((r_status_flags & PX4IO_P_STATUS_FLAGS_INIT_OK) /* IO initialised without error */ && ((r_setup_arming & PX4IO_P_SETUP_ARMING_FMU_PREARMED) /* and FMU is prearmed */ || (r_status_flags & PX4IO_P_STATUS_FLAGS_RAW_PWM) /* or direct PWM is set */ )); diff --git a/src/modules/px4iofirmware/protocol.h b/src/modules/px4iofirmware/protocol.h index 73c82dae9d..a0389d78b4 100644 --- a/src/modules/px4iofirmware/protocol.h +++ b/src/modules/px4iofirmware/protocol.h @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (c) 2012-2017 PX4 Development Team. All rights reserved. + * Copyright (c) 2012-2022 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -114,6 +114,7 @@ #define PX4IO_P_STATUS_FLAGS_FMU_INITIALIZED (1 << 11) /* FMU was initialized and OK once */ #define PX4IO_P_STATUS_FLAGS_RC_ST24 (1 << 12) /* ST24 input is valid */ #define PX4IO_P_STATUS_FLAGS_RC_SUMD (1 << 13) /* SUMD input is valid */ +#define PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT (1 << 14) /* px4io safety button was pressed for longer than 1 second */ #define PX4IO_P_STATUS_ALARMS 3 /* alarm flags - alarms latch, write 1 to a bit to clear it */ #define PX4IO_P_STATUS_ALARMS_RC_LOST (1 << 0) /* timed out waiting for RC input */ @@ -184,12 +185,8 @@ enum { /* DSM bind states */ #define PX4IO_P_SETUP_CRC 11 /* get CRC of IO firmware */ /* storage space of 12 occupied by CRC */ -#define PX4IO_P_SETUP_FORCE_SAFETY_OFF 12 /* force safety switch into - 'armed' (PWM enabled) state - this is a non-data write and - hence index 12 can safely be used. */ - -#define PX4IO_P_SETUP_FORCE_SAFETY_ON 14 /* force safety switch into 'disarmed' (PWM disabled state) */ -#define PX4IO_FORCE_SAFETY_MAGIC 22027 /* required argument for force safety (random) */ +#define PX4IO_P_SETUP_SAFETY_BUTTON_ACK 14 /**< ACK from FMU when it gets safety button pressed status */ +#define PX4IO_P_SETUP_SAFETY_OFF 15 /**< FMU inform PX4IO about safety_off for LED indication*/ #define PX4IO_P_SETUP_SBUS_RATE 16 /**< frame rate of SBUS1 output in Hz */ #define PX4IO_P_SETUP_THERMAL 17 /**< thermal management */ #define PX4IO_P_SETUP_ENABLE_FLIGHTTERMINATION 18 /**< flight termination; false if the circuit breaker (CBRK_FLIGHTTERM) is set */ @@ -212,7 +209,7 @@ enum { /* DSM bind states */ #define PX4IO_PAGE_TEST 127 #define PX4IO_P_TEST_LED 0 /**< set the amber LED on/off */ -/* PWM disarmed values that are active, even when SAFETY_SAFE */ +/* PWM disarmed values that are active */ #define PX4IO_PAGE_DISARMED_PWM 109 /* 0..CONFIG_ACTUATOR_COUNT-1 */ /** diff --git a/src/modules/px4iofirmware/px4io.cpp b/src/modules/px4iofirmware/px4io.cpp index 74f6637f46..69527d7bf2 100644 --- a/src/modules/px4iofirmware/px4io.cpp +++ b/src/modules/px4iofirmware/px4io.cpp @@ -154,8 +154,7 @@ show_debug_messages(void) static void update_mem_usage(void) { - if (/* IO armed */ (r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) - /* and FMU is armed */ && (r_setup_arming & PX4IO_P_SETUP_ARMING_FMU_ARMED)) { + if (/* FMU is armed */ (r_setup_arming & PX4IO_P_SETUP_ARMING_FMU_ARMED)) { return; } @@ -183,8 +182,7 @@ ring_blink(void) { #if defined(LED_GREEN) - if (/* IO armed */ (r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) - /* and FMU is armed */ && (r_setup_arming & PX4IO_P_SETUP_ARMING_FMU_ARMED)) { + if (/* FMU is armed */ (r_setup_arming & PX4IO_P_SETUP_ARMING_FMU_ARMED)) { LED_GREEN(true); return; } @@ -314,8 +312,8 @@ extern "C" __EXPORT int user_start(int argc, char *argv[]) ENABLE_SBUS_OUT(false); #endif - /* start the safety switch handler */ - safety_init(); + /* start the safety button handler */ + safety_button_init(); /* initialise the control inputs */ controls_init(); diff --git a/src/modules/px4iofirmware/px4io.h b/src/modules/px4iofirmware/px4io.h index c8872c8aa0..99cba83e67 100644 --- a/src/modules/px4iofirmware/px4io.h +++ b/src/modules/px4iofirmware/px4io.h @@ -131,8 +131,6 @@ extern struct sys_state_s system_state; # define ADC_VSERVO 4 # define ADC_RSSI 5 -#define BUTTON_SAFETY px4_arch_gpioread(GPIO_BTN_SAFETY) - #define PX4_CRITICAL_SECTION(cmd) { irqstate_t flags = px4_enter_critical_section(); cmd; px4_leave_critical_section(flags); } void atomic_modify_or(volatile uint16_t *target, uint16_t modification); @@ -145,9 +143,9 @@ void atomic_modify_and(volatile uint16_t *target, uint16_t modification); extern void mixer_tick(void); /** - * Safety switch/LED. + * Safety button/LED. */ -extern void safety_init(void); +extern void safety_button_init(void); extern void failsafe_led_init(void); /** diff --git a/src/modules/px4iofirmware/registers.c b/src/modules/px4iofirmware/registers.c index dfe0a6f8ec..a191577ef3 100644 --- a/src/modules/px4iofirmware/registers.c +++ b/src/modules/px4iofirmware/registers.c @@ -413,10 +413,6 @@ registers_set_one(uint8_t page, uint8_t offset, uint16_t value) break; case PX4IO_P_SETUP_REBOOT_BL: - if (r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) { - // don't allow reboot while armed - break; - } // check the magic value if (value != PX4IO_REBOOT_BL_MAGIC) { @@ -433,22 +429,19 @@ registers_set_one(uint8_t page, uint8_t offset, uint16_t value) dsm_bind(value & 0x0f, (value >> 4) & 0xF); break; - case PX4IO_P_SETUP_FORCE_SAFETY_ON: - if (value == PX4IO_FORCE_SAFETY_MAGIC) { - r_status_flags &= ~PX4IO_P_STATUS_FLAGS_SAFETY_OFF; - - } else { - return -1; - } + case PX4IO_P_SETUP_SAFETY_BUTTON_ACK: + // clear safety button pressed flag so it can be used again + r_status_flags &= ~PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT; break; - case PX4IO_P_SETUP_FORCE_SAFETY_OFF: - if (value == PX4IO_FORCE_SAFETY_MAGIC) { + case PX4IO_P_SETUP_SAFETY_OFF: + + if (value) { r_status_flags |= PX4IO_P_STATUS_FLAGS_SAFETY_OFF; } else { - return -1; + r_status_flags &= ~PX4IO_P_STATUS_FLAGS_SAFETY_OFF; } break; diff --git a/src/modules/px4iofirmware/safety.cpp b/src/modules/px4iofirmware/safety_button.cpp similarity index 79% rename from src/modules/px4iofirmware/safety.cpp rename to src/modules/px4iofirmware/safety_button.cpp index 1a5eedb7d7..6d4672d5f2 100644 --- a/src/modules/px4iofirmware/safety.cpp +++ b/src/modules/px4iofirmware/safety_button.cpp @@ -32,7 +32,7 @@ ****************************************************************************/ /** - * @file safety.cpp + * @file safety_button.cpp * Safety button logic. * * @author Lorenz Meier @@ -46,7 +46,7 @@ #include "px4io.h" -static struct hrt_call arming_call; +static struct hrt_call safety_button_call; static struct hrt_call failsafe_call; /* @@ -59,30 +59,23 @@ static unsigned counter = 0; * Define the various LED flash sequences for each system state. */ #define LED_PATTERN_FMU_OK_TO_ARM 0x0003 /**< slow blinking */ -#define LED_PATTERN_FMU_REFUSE_TO_ARM 0x5555 /**< fast blinking */ +#define LED_PATTERN_FMU_REFUSE_TO_ARM 0x5555 /**< fast blinking */ #define LED_PATTERN_IO_ARMED 0x5050 /**< long off, then double blink */ #define LED_PATTERN_FMU_ARMED 0x5500 /**< long off, then quad blink */ #define LED_PATTERN_IO_FMU_ARMED 0xffff /**< constantly on */ static unsigned blink_counter = 0; -/* - * IMPORTANT: The arming state machine critically - * depends on using the same threshold - * for arming and disarming. Since disarming - * is quite deadly for the system, a similar - * length can be justified. - */ -#define ARM_COUNTER_THRESHOLD 10 +#define SAFETY_SWITCH_THRESHOLD 10 -static void safety_check_button(void *arg); +static void safety_button_check(void *arg); static void failsafe_blink(void *arg); void -safety_init(void) +safety_button_init(void) { /* arrange for the button handler to be called at 10Hz */ - hrt_call_every(&arming_call, 1000, 100000, safety_check_button, NULL); + hrt_call_every(&safety_button_call, 1000, 100000, safety_button_check, NULL); } void @@ -93,26 +86,20 @@ failsafe_led_init(void) } static void -safety_check_button(void *arg) +safety_button_check(void *arg) { - const bool safety_button_pressed = BUTTON_SAFETY; + const bool safety_button_pressed = px4_arch_gpioread(GPIO_BTN_SAFETY); - /* Keep safety button pressed for one second to turn off safety - * - * Note that safety cannot be turned on again by button because a button - * hardware problem could accidentally disable it in flight. + /* Keep safety button pressed for one second to trigger safety button event. + * The logic to prevent turning on safety again is in the commander. */ - if (safety_button_pressed && !(r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_OFF) && - (r_setup_arming & PX4IO_P_SETUP_ARMING_IO_ARM_OK)) { - if (counter <= ARM_COUNTER_THRESHOLD) { - counter++; + if (safety_button_pressed && !(r_status_flags & PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT)) { - } + counter++; - if (counter == ARM_COUNTER_THRESHOLD) { - // switch safety off -> ready to arm state - atomic_modify_or(&r_status_flags, PX4IO_P_STATUS_FLAGS_SAFETY_OFF); + if (counter >= SAFETY_SWITCH_THRESHOLD) { + atomic_modify_or(&r_status_flags, PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT); } } else {