From aa5d1f152879e698878e5a1c78f1b17e18873b6f Mon Sep 17 00:00:00 2001 From: Nyx Zheng Date: Wed, 25 Jul 2018 11:00:04 +0800 Subject: [PATCH] aispeech: add wait_device_mode_timeout_ms when vad resume Change-Id: Id4f1e711541a49879347118bcc7852c071213656 Signed-off-by: Nyx Zheng --- rk3308/aispeech/dds_client/demo/demo_main | Bin 89168 -> 89272 bytes rk3308/aispeech/dds_client/demo/main.c | 1 + rk3308/aispeech/dds_client/demo/main.o | Bin 43120 -> 43264 bytes rk3308/aispeech/dds_client/demo/music.o | Bin 31176 -> 31168 bytes 4 files changed, 1 insertion(+) diff --git a/rk3308/aispeech/dds_client/demo/demo_main b/rk3308/aispeech/dds_client/demo/demo_main index d4f0079c187b2338b4f2e3443ee36e4b6dfa6c5b..9335a27307e0ffe282ac20dc903fc2a3c7d0b21a 100755 GIT binary patch delta 7877 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 delta 7835 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 diff --git a/rk3308/aispeech/dds_client/demo/main.c b/rk3308/aispeech/dds_client/demo/main.c index 55c1e3e..1b6f11e 100755 --- a/rk3308/aispeech/dds_client/demo/main.c +++ b/rk3308/aispeech/dds_client/demo/main.c @@ -401,6 +401,7 @@ void *vad_detect_func(void* arg) { do_system_sleep(); printf("resume >>>>\n"); dds_client_publish(dc, DDS_CLIENT_USER_DEVICE_MODE, "{\"mode\":\"normal\"}"); + wait_device_mode_timeout_ms(30); } usleep(1000*1000); } diff --git a/rk3308/aispeech/dds_client/demo/main.o b/rk3308/aispeech/dds_client/demo/main.o index c91e5aaca13ad998d244f4831d51f48e4c05a0a3..5b67cc3e83233caa2206fb491ec9e1fb15e29376 100644 GIT binary patch delta 1791 zcmZ9MUr1Yb6vuz(rq*Oj(W`NHX&qkIKZ`ZGXvAb7Mpqe&6pYfMgN-TLHKQF>*L4p1 z5dSBkTTRbalAC z=llER=9k)*B2T3;m&E2)&i^D!EDQgY?-#6DA}x%uFWKACmOYs6<=>y;RNh_a#IpPc zFpE#}TP4Yd=Nz@z=IGMa9ICyrcGa&W z7}I)BKhA#tYq&}sjfaM(ADH~i%2-kFm75GE(-l&pOXUcrfFny{ueIodZU)~#oR(6e zPp3;TmR@%2%Vqq$v{?QgtXW)=Y}K7C$)9sPz%SMQ1&WN zsg-#DJeHmCSZ>x>WPH_Ms$KLyv?>+;%Cf5+U4Gw{t~W~5>hh{`4;O1W^}hmj{o~Eo zz=iUKS71BW!&{KjCK~Q$k+7ukhAo_@*SNHq#%ITl zq@n{W0LHR;gx3@5E%Ju5l*mUgF+`_m zq6cDD6xWH~G0{G;t8qM}xs&PX(|o#fSycMS@7WB$kFa@I2|gB-@8)s_-4=PX=bue; z4bRE6=Uo#uJn!K?Ir-g0qr!8Fdv^XMDEC>N;p92ik0@Zrictk}v1deaIvhGS&TU-u zc^PMj77A)O-w;&A9qMz2*HpMnH3y=`ZR%{~>CGT*6~ZX}!lPE%PacCA9xrlt&X7>^ zvs5!^7(0kw7nJYsR0i$F1nsO(`<7xwuIc{|RLuXxev!`=LL=Xfhf&2D6;w6R@31(g z1e1cMZyu^Jv`oBiev`^2@^z+s2>WA-vro{FiB986Oo0t;Gp6Lwd%r*aDcx4@Ogytl zbb(Y({RR?UM0pQJBnWF0Gd`e;b7$6P8*kG4tfD;UgKZ4X1*A|E<8!riF>cNUY_0;m z;BS=YeUf?_8|Q1Kx){diYaxQ0^8u+njxQ|K!YvFg1SFRix z5`&8Y_yS{#0h_H}CtloH^hq`KxbAof)g>3yVQ?t`DU4C<#!ZSFXj=~0JhQss2__bb F{s#<2M$rHO delta 1744 zcmZ9MUuara9LMkPYE#8XH8Hul))DR6Vg5AOB~=T-t4k$`HYmDV_DrJ1m0@98Tz~!P@mmkzHmRaK4px4H zhj$DN(?0cXoPp2l3N|z9lo&h&3F$JG8|`Bg3_OA*GG#LfndV`+KAn)K1^l|pW&H{a z$E1|Q8*+3P|Lh9GGYod0Ik8P@O3xe80H2ES?&l3KjiFu+JYux>FMY!&x)1tw7QE)~ z5caJ2~&d?p(K7Yc<&f-6utbuG1f#i;{N3W{ZVS89A#R7VUCmc zib>qP@(F5nq@OstQXHS4RLQCt zWyv%S6Pnb}F!hqgnG|Q)TMrku$ zgK6aqrpsK<(G^aW2Pd7ps zhi5ssjw56qOB*mUYa#oc%!VeYUhz{h%WdN{uB@68PiXX2>T()irO9e)XyRx!U9%j& zOsVvB9jdRpUw5}6`GGZ@A<7(8`ib(4O8F)3%yL6}nl6gB=QOVMT+-+j&oAqq4>fdw zdj1JRa~xl#RO|V7oFueHspQkE@~Ouxp$3~AQr32bR&K=oISwp%Zk_`h!aT>fQKjO1 zk18E?jT19ObDCRyg)i5uwl3u@vXv@Vg)pfs$Z zNenG+roA<#bEawHdiF`pY9t34_0Y?fx))K;fTPtoC++;_T3j*=a YZwU~@C>d99bxSa=W#xo#(UouiAK_R-CIA2c diff --git a/rk3308/aispeech/dds_client/demo/music.o b/rk3308/aispeech/dds_client/demo/music.o index cc5f9362b6fdcadad07f28a0c710dead1a7c7418..18edb14f754f20fb48f7dfdfddb4627083c4ece1 100644 GIT binary patch delta 106 zcmX@{neo79#t9mX4I4EdYX}=!80n@brdXJ#rdVn!nCY458EjV9{OQeDuvxLxo{=$N za$?zjMuy3X<@JmPlNXk^Ga66UtT1O(n4DN)4&H#Y&J!B9J^Wd10kG E0G#0@IRF3v delta 127 zcmX@`neoJD#t9mX9UCE; bfn>pC$x3^mNMxlw=Y?VhFxWi#VVOJtk~}G2