From 67f288898defc6974ec58b4837371554f43f9d8b Mon Sep 17 00:00:00 2001 From: 13195980010 <1512161085@qq.com> Date: Mon, 9 May 2022 20:24:59 -0700 Subject: [PATCH] flip --- src/Djitellowhite/Djitellowhite.cpp | 42 +++++++++++++++++++++++++++- src/Djitellowhite/Djitellowhite.h | 8 ++++++ src/Djitellowhite/Djitellowhite.o | Bin 6400 -> 15992 bytes src/Djitellowhite/test | Bin 19128 -> 29592 bytes 4 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/Djitellowhite/Djitellowhite.cpp b/src/Djitellowhite/Djitellowhite.cpp index 9ebb3b5..c8a8f52 100644 --- a/src/Djitellowhite/Djitellowhite.cpp +++ b/src/Djitellowhite/Djitellowhite.cpp @@ -75,9 +75,49 @@ void* Tello::udp_response_receiver(void* arg){ } } } +void Tello::forward(sockaddr_in serveraddr){ + char tmp[15] = {"forward 20"}; + send_message(tmp,serveraddr,0);// 0 -> timeout + cout << "forward successfully!" < timeout + cout << "back successfully!" < timeout + cout << "left successfully!" < timeout + cout << "right successfully!" < timeout + cout << "up successfully!" < timeout + cout << "down successfully!" < timeout + cout << "cw successfully!" < timeout + cout << "ccw successfully!" <stream_on = true; diff --git a/src/Djitellowhite/Djitellowhite.h b/src/Djitellowhite/Djitellowhite.h index b311e46..bfaa936 100644 --- a/src/Djitellowhite/Djitellowhite.h +++ b/src/Djitellowhite/Djitellowhite.h @@ -61,6 +61,14 @@ public: void get_connect(sockaddr_in serveraddr); void takeoff(sockaddr_in serveraddr); void land(sockaddr_in serveraddr); + void forward(sockaddr_in serveraddr); + void back(sockaddr_in serveraddr); + void left(sockaddr_in serveraddr); + void right(sockaddr_in serveraddr); + void up(sockaddr_in serveraddr); + void down(sockaddr_in serveraddr); + void cw(sockaddr_in serveraddr); + void ccw(sockaddr_in serveraddr); bool send_message(char* msg,sockaddr_in server_addr,int timeout = RESPONSE_TIMEOUT); static void *udp_response_receiver(void* arg); void get_video(sockaddr_in serveraddr); diff --git a/src/Djitellowhite/Djitellowhite.o b/src/Djitellowhite/Djitellowhite.o index 0fae4ceae77a395e1d85d2758e17ca67e32fa286..12a96388bd5e770804c9fdacdd369f86edde1e40 100644 GIT binary patch literal 15992 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 Ve#So4DE%?|P`(cZieNpe{{pwkw4ML} literal 6400 zcmcJTZ)_aJ6~O151OkQNLTRHCsTTxoXp7}@{@H-Qj=lC8j>PrFA|gqb_1<3Yn)B}U zcF(mDCZ=v$txi{2t&k9{RMb)gUn*1yDM4*oB~pU>sYor#hkUR~kt~|3i3E{FEw1m) zzIPr^y%ANFC*97>@4b2R=IzYR*e8taU|T9BSW@CqvD#uPMDN{7T~>R=9b$_ZGoug8 zxy$WlG_!0*wJT=bSU%soQ9yacj4mvpX>=B;8I5c<8=DZA(fL*_HZkkczZt#9o#q$L zN#Edi{^+@Ru1B?x&{=)#qo}>b=Pq}`_)BK=t{K6opP12~%*gn&8I4^uPdWa?gze>F zP~%$Rg7GN~Uk689psYft#zjak=_jV0K}sl;UP{)D|B&8$QI&$blj%{qMzViWRs2K)a3U(nLen$70Xb5M(=4GMgjQqpnZKoUYX9n>7h z4T3_gT%O)89N+U?C)6lyIgR2L&`{NN+|ndC4ee?uo&>-4F*jYP`V;BUEtma=()S0q zia7t4?`gd!OZhmo_&Luqiv9qJ|!OR0x69N|xO6u8Bk(z2x-E-T` zo9AKj+koK@54B=x@(tHlhK+`nzA<$s0rzh0w%Me4T#+lGq(TQ;nFatg5l zKWm!Y1?`l=DI96FLCAfvrpLX~ewDL*FL7>j`EBC3XHb}bU)DE4OtCQkC2@|F%LU@F z&3YV5{&!^MJV?o)bC2*+ld#+UhYk(?;$=*T<$5TA11yPN))+Q zp!@;xjSv@#+@nywMEr}y+0QBBFB6x0672s9e7!thO5pD&@DCICRp6MPGf<+)y$t2u zus+rs_sa=U%8f zm{+r$si|yN# z3Ff=N6P$oy$+2*rCA(aD7Fxb%!HEfD!1-5mWV^Fe64p@mz`njLbg7M7!xkiE_dz@> z`@4*hCmd1o+|aV~`Krv`F2}E7;&Nd*7|w;6j8la9hE=;12E&eFi~`#^ZU->5A0M;B z&Oyt_?Y7Vt4|QO0FlQXJ4)*QK8dmJr_44Im=d*c)o}J)x4|d(3^UHxTGB}#^bCygB zMW2z;w`McYWlW-ZtR2Xxt?mG(2se*{0oh=aOy*cj@jhZ?G6B32Oar7;G3p8+aBCvI zXc!~T8au_?UT{`~jHtuzrE5)+^Idqs(UcSJ1O$sW7^gCgMcMTP#t{0eQFUc%`HEF_ zgNhFe5i0UhR5eB>1=J@+rCRdB!m51_&J->`uCI-T=?%L}eqg~Xb$1QJV(OQfv+{v& z6(PK`i*9tIIK8l{Z40h=Q?S)Q(sCE$861B<;D#?HLmam}o|1g8dRXC~hdSH$6GuPz z?PUHq@vlRPKA4XYM|(WGn7^y=dlY_=ILGq+xJAuE)c7Cq15H^nFLJ z#^Vv^cpf9ad=Emd#xtw z4u$Vlxa#LI;y5q-2C)Aj;#i=LIaHtnXzMPgcX0!w(>D4&jL!Z$&ufti5bNdyI z^S$zq8s~fEqQ?1N30E{J7$g4p-kR1p-v=MjIN$G%Xq^9^cuwP-AJGv^PlWb3lwmb4 zi(IR^WxE4TkWh5w?a&q-<3S)gs(##%TD;*{cC~6xiw^vUq3eOM=fjO}X#d!Qa1C;f zLl5-h7Og_no^a!7{@>3uc)%&$q-Ks(1AUR{^Lm}e{|)F=;rN+73Kg8H zKK>#6D1hkp+~%?eY}U))JpO?W!g<2{;XC4f%pV7a@pr;cm1k&tJY!Vh`E!{ACD&EE z6VzX2Sl4Zf#Ps~lQva8<4je!Gb)d4|{9mW}r>Q^A|5o^Mf1W?8^|1kotvBNn?CCw; s4)r^*jSz(U-vV|0-Jw2Be@Hhpr8XUTXVFZsyLg8#fK}OAedzuF1I2q!Q~&?~ diff --git a/src/Djitellowhite/test b/src/Djitellowhite/test index f35b81fbe520fb568c213fa2d123f41d2bd331c9..a041d3c8ba9fbca3ca5cf75fd0cedef3053f6d34 100755 GIT binary patch literal 29592 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 s