From f2cb7b00ba1e6e0465367f782c31bcaa38ff433a Mon Sep 17 00:00:00 2001 From: dongheng Date: Thu, 26 Sep 2019 10:37:49 +0800 Subject: [PATCH] feat(sleep): add function set CPU sleep mode --- components/esp8266/include/esp_sleep.h | 5 +++++ components/esp8266/lib/VERSION | 2 +- components/esp8266/lib/libnet80211.a | Bin 388502 -> 388606 bytes components/esp8266/lib/libnet80211_dbg.a | Bin 427866 -> 427970 bytes components/esp8266/source/esp_sleep.c | 17 ++++++++++++++--- 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/components/esp8266/include/esp_sleep.h b/components/esp8266/include/esp_sleep.h index b783bb75..367dd892 100644 --- a/components/esp8266/include/esp_sleep.h +++ b/components/esp8266/include/esp_sleep.h @@ -26,6 +26,11 @@ typedef enum { WIFI_MODEM_SLEEP_T } wifi_sleep_type_t; +typedef enum esp_sleep_mode { + ESP_CPU_WAIT = 0, + ESP_CPU_LIGHTSLEEP, +} esp_sleep_mode_t; + typedef void (*fpm_wakeup_cb)(void); /** diff --git a/components/esp8266/lib/VERSION b/components/esp8266/lib/VERSION index 37f7fd40..0134131d 100644 --- a/components/esp8266/lib/VERSION +++ b/components/esp8266/lib/VERSION @@ -1,6 +1,6 @@ gwen: core: 743c778 - net80211: da5ae93 + net80211: 5d845dd pp: 2c0db4c wpa: 743c778 espnow: 743c778 diff --git a/components/esp8266/lib/libnet80211.a b/components/esp8266/lib/libnet80211.a index 6437ce87e8723f587d1a2bbc6e4cd4a1ae9666cc..16fbf3d601f34fc5845a2f8ea9acb7eae89bbf33 100644 GIT binary patch delta 3038 zcmc&$4Q!KD6us~Dhpp{sS4z8|uIswB+hnXA44jd$A;O3mn;HU`h?}q>>TpXi8$`2j z)2T#~O;Y481|1Rtiy{IgmS~hA2*i*$v5^T13nB<6vN&M;DD%FrKelxcAsSzDdhR*r zz58BYzkJ*J6PBANEN`Tbxv!+C*fY6gr{ifRT>+MVmzcK;*l1WnzCiu2K{P)AOrYfg zu=d|#A;lY`Xg77l2>lqd^+YydzIBV>;YDq|oAn zr$G^ofEpCH!Z})VD_lDciaUT(vNVD6R&ZSh<$nz6A8)XCHYjfcRb~^Y936LtS@R`O z&6@u|A~CYLx2?kLUF2!?9#Lt01?rz{;nxIitY>Clp|dkB);V69ofG4zrg)|nd%UMg zbGg08H>Y;76))r|b@$&GNi3Sg;k)Fl;gJnLI^N}1rls~4*x8klUI1N^_K42dJJHLA zgq)a^P;@w}KiRm?kTeM3`?}SmU@9ZXh(3nmT zbA%^qZO9j=WM$xW4i%;WBLQG1m?j0=iCPQHyL{-GR33~AL_9gzNz_{I9UQWxDuSu_ zSwt$XR@7RB*M8|(sydj8-Av*k3k{awHC(nhHBo6vFp|#|@`b|^d=-};wX-AGJ)TwZ zk{TQw&nnqMEH$$#Hh`T(ytozz%(CmYklTn75ua9veHK>93zniih0*{vqzHQ%_6k{n z`c#q$^;nZCX4T^kV%CQvWV3#(N+Wt0y9IUOML|2TG@WQ0b`o)D#({KN(S>d+N$Vt?^B-%jCG9Fs*8-#T05{Lo3<(I zz}3WTH6F`m6WAlD$YI&4?>hk6aRQZeyHz+_jQt)~a}3q9Ifm?J4LlODQcfKQ2D!m1XQt`5ut z7}j7T)yahoZaa;lDN{rL?a8lk|7ZEE`<}>Kd$3Gl@xL&SogN#p=w(mV5@t&bTYj?U zYQiemM$^pJjES{&wXk1Q5lim;Njp<_L@e=V#DCJreHF3R_G&(k$66$d%ORdQH@wDA2Y>sOutNE3 zynj%kPWsC_OLz9wH;S}zVaq>wR`I4Wtb!M`>6${yh*)x)Qj2n_KGxdrQWkbaEcxp7 idzHqTXv^%UZ*U`WLH;s_YM&!Afws2zGiRxqd;SCtV!EaP delta 2818 zcmc(g3v5$m6vxl^-F98e*rU|mZtII~Yga(n1~Poa%{UbdGGmsY31pQ`L7CZN%tkb< zg$x1&O68IrLdcj%98m0Ozi_jvD4RsBKG zSM~poGNv|HR?M|33rj-EQN1ZTCG8id_L;!!Nz59ZTC_25BspDCP^gji0JljGOrNQo ztMKuCUD4U~i|k6cIWv8IPuV;CN|`~aY_Tf+&FRtMP=Ta4o=g{tmbU$#gVn=QhH^dJ zfYoz!892U4pAr4AJ!fJt0|0y^Gi-%=BMp*IHu(z5H|yKr?NRl2DO;%Tev%nFpnFvP z%Tf6RWwG9jcz-8cFhUU0DR|>x2Mi@A=qTqvH<(QTVl1#3c0vhd?GXojWJLWvSTL&o z@`(B_XrnClGspElbeP5Ezx{o}BG+B|Uy zOKD=NoE(!uUUEE%+;z)X?8&aviyjY2%oR+G$6Z%K0}tojpdmeOlBFzB72|O?K>2at zRmPOcK{=N(LI6|;%XEN;$i<(5aiwWcruUk`lT5D!F3Y)wM5nlirJP>LhZ&W~WqG_Y zQ5BFGqTQFDbF(#Qu(E1CSc}hF**s>!E{bd$UKKP}hqL84MVaUnyg; zO2+p$<7_+4s6n(-Jhcoj+F3I#Q0t(kdfZFKdzQC5sizRDodnx(I~hOUiZP=6SO_a! zRJGwoSA6+%Wc_<sQ z;-}6_(=kGx*8Mm@EF1UxnI~;$4ZwL5#s+vk-taS%_T^LQ>-gy;En!5~$?DHF?5E5W z3N7P=>X_3w61iSuGgHf8$pmgw-)LcL4XG|#SyuCdtWTdp@#PCvv9z#;RGRqBTrGVT z;C`+JwPX>WV@)MG$8RsBQq%Xhc6J`;3+<^|#HAnRN?)A`GY0w1Q^$`uV~{(Z(K-{? zZG22xy=o+y@U@gSUPG$;xKuhpOGrsp8!t$$<`kmsWp&(NQmaElD&2H>mX;FxO!n!f jZqbk$IH>anQi+b7BWWrAA4@&p(SP94klOTwKD_I10Q11s diff --git a/components/esp8266/lib/libnet80211_dbg.a b/components/esp8266/lib/libnet80211_dbg.a index e0171918c16d179523ff29fc0e58f3f02da0d825..aff7af3c8f9780186c222002133554bbd4f4efbe 100644 GIT binary patch delta 3016 zcmc&$eN0nV6hG&-MW6*rtu3FWe3XxXP!JePjIg+XGX%`CL}qjt1Dg;Pri+eEeWGMD zY@?DI4>4wb%&A$N)74mGHdmdCBy$NSWHPf&lDRnjM-nEuF=glWwLl4)X}0Vpzy8ke zcg{Wc-uGVK>-DaLi>`!SiL;(9D=c=FmYhm!LS+On=P9vlE8t9MVqaqYITc%?0VO)l z0Ct`ag)-fkL5sv_cxtpYgLn)Sf6{dh#J_>jcRp2z9QPr)PvXx)Nt;vD1B{ zJWJS*c@{OSN}}eYI{p0AvGIt)A^|_drjCy9`z7t57?~gM%d_LixDUV(rN3e@`R2ND zSjxFk;f1}a1F@zH#;73x&(&>C4H`Y7V=UIaqQekX3IKvp$(74( zm#5_irs>-ep!gdW`zIWLKe-^B<4nIk1Tm2u@X#`1;WRi{%UJd?!C_b!$g>2w;o6Y= z5ono~ZwtvE1B!I23!3~5KY>$$0#zS}?*k3g4SWu_Bk90^*6is!t3*U^Sku_pTEC(3 zjrz4M4UL|~7aP#?>DS2xij}*W3)QWr24W`22*mQXk?{fl@F-x&xzdxdKH$si zjt}{V#{!0|k)Dk80blMCE5Pj-&QAbj0bpmCi_~^9)&siN4mZaOHJvBZ^VCi<)(iL0 zur*$zX60>>S$Sz?tk<~hzh8?FQ?qh4vwYG51H;|Mdsau}lx&%r^6x9)O9#U})%RYs z;}zOJ2Wv&yN*bDjHCRXG7OcfVaxsbG1{$>Z-2yASt)wuC`Hj?P#Tt?KD%s;W+fOZV z(q2tIDXS?ao@MwNS{W~^*3e02?4xnEae!(Qn3m9fNj-E|(n%^$WI9eRCIOphFp+2U zP(c#Qq&C`?gd4fRC`&v>RmrmbR_aOSqSbVZCHB%YHg>ZW+G*oO&FwV6jLRu2#ovDu zlQ8U{-V}Bhk=2g-@h|e)IeDLEr7~61Qb{-ID3dUE(*0B}JxNt*EQ{Zxo-~%1=$4d8 zT~wCN%T#pHPG;Om*U~YUik708EE#Cj{n!Q2LAe>2&KI~g1GB_R7rmK*nF5mO05hJZ z%WUKGbXU@9vO1VLs9e$@y~afOnHWb$9B359-E`K$lP=K>PKfGm3eRNOPX(DQ8@j1Z z%A2IH#LaY6x?rO|=^m$1DJ?d#XYu-RHmb0rg1Ew)s zt@PD#Wlc63aVgbj^MWpVSJEZ=Oi~qHV-j_{_vBz^SPVb2-^9?+>zEeRzmT81Sb#5? zwo}S_Ow{$i1Tac(bLGSf+P4|4-mh}7*%`FF{9gYfdQvrENkmYQvx&=htjE&GpylNb z2WJHp`THpyct;nsyse%1!mbJBOAwCbLFNC3cy0Ft3evO*Q>b6mCgxctE&tLkv9)p1 z;xCY#JzIoYHKU>`Db)J;knT4@H60jfT(@yUeoH}NNonB!uH1yx`>jP&^Hy+<*WRtU z`hHNU1u-^lSkzR@;w{S6j)i{xyo)Qf%EU3eeRbOSoZuYqP`h?ZOi-yu@9frkPfS|! hi1ih^RjVc~c|_j)*u)XNgCFZIq=goo@73))|2NWfzmWg{ delta 2822 zcmc(gTTB#Z6vxl^?JRo{5$I+ImfdCLwk&u-sMWNlkknWo3>ahTC0dBZTQSl2fYMY4 z3=fv*vUCimu|}y{Xj+TbC5~-O+bC^lVp3j;#s_N}8+|acDK`^QdcK*RRS24D+H{it z{J;P2obNKT$?WA;&yBDrl4V=G;I&1i3roJq+0K+Ou+U3ty&Kqc+D=?(_bNjlb^;S> zt_0Td&SWW5!8DnBI^m_&z=1zUie7A81^nO8m>>8wvb=HtEbgPzNtq757;8%c%S%f! zCQH7XFiFK6q-SZF2c&0d?FEotL`u^DNY7H+dXWBODgSf>YsEZxu1c_PZeD`y8sQmOk;RMn z#jfb`+D%?HT%Te;)LZ%)A1$@16?@$3{d#-!abvDU^)0gtMHe*ROH=2zE)l}+jVu}0 zJ+vlAziv;Ptt10LkdzKbq1Hiz_?1fDMEObm7_?2PpQ7xdzPY4yI1W8i>OW1%1C+&j zuj>6BaK`}(*eMj~;3SO4CrFgjpa;^O0Aeg~I-G_Q%H|~wxMWhj6E;k#Z<$p80-7m{ z{nB-P3CEoQV*>-6fh+L^j02p90VhWGFxUBS6-V^r%hfFU*A?&lO7RS?1;$J{J|+WC zd|X7H{nS`&$sW;-t{jq>E0`G1c%(KCz2TXlAzcBItJJ89@r(&je;azAF|}e?&SZ=b z0M)@&2Jkw$cngfHyM|@D9~{2MtZL1OoM|&U#bdY@(Jg*4hZ-4?XF80kfXo){8Cexz z2hrwcReZP_*Sc9Hb72=nb_~Y^jlGA=SMw+{O#^1F4I;URnow|Z!eBd7^WMq3uyYFs012X+bDhGS&>QavvB(u~!J zUW(WE;$1JRrv<8g)KrUS$$0O+c0cvxVU?d?GoB#hxA$X=DDQ8?ifpQ8U~9I%{O@GE z?*Ntrh)Spg*a>zKvu9JW2X_jy;}60*a8?er_J4#mIn=rX&x#mpY0st9h*i0it{=t@ zihTSq#spr9<$0`_m0?{T%e8(I2B<-mhU^S#c`V2ugz;7$E8w@hXwPQ_Yz5BGXF)pp z8exEnuv+XAwikaDb_B=B_|*so3TVb@e7k_+?FjCoh@<)RWZeZUm5)d8MblEu3Sf*Hwm(xI9N#M-hgt5EQsY~Jf`Bd5OofgVT3%X=PiI(Dqae)oTSsM z0d6}n=C)+vM2I=f@0>>8!ln{4VU1sswX^HlA1MiRuEI)aJM%l9Mj6_@-E3iE8SzP# zweo$e#b$PC{mqOenaNmru!WUI5=dXUJd3AnFp)-IU72HD15Y;*3Z#A7z)Rf;L=$QM zR=#huiNwSZPo$19zR{aVC8w;9Ii_TBCnn35Cy${&Y?*AS{J?BAPI;ou^4%d5Y1HML zX(s)zLpxe5J$&lF;}?2C(Ph&9Cui2*M%6lrhY}O@&2}D;w#-VPR55X=O}fx+B8{G` bVN)W}!P6{eGPZuV)B078i8NZ_{P%wY+1rvq diff --git a/components/esp8266/source/esp_sleep.c b/components/esp8266/source/esp_sleep.c index 0a118c60..bff1fb51 100644 --- a/components/esp8266/source/esp_sleep.c +++ b/components/esp8266/source/esp_sleep.c @@ -51,7 +51,8 @@ typedef struct pm_soc_clk { uint32_t frc2_cnt; } pm_soc_clk_t; -static uint32_t s_lock_cnt = 1; +static uint16_t s_lock_cnt = 1; +static esp_sleep_mode_t s_sleep_mode = ESP_CPU_WAIT; static uint32_t s_sleep_wakup_triggers; static uint32_t s_sleep_duration; @@ -116,6 +117,11 @@ static inline void update_soc_clk(pm_soc_clk_t *clk, uint32_t us) WdevTimOffSet += us; } +static int cpu_is_wait_mode(void) +{ + return (s_sleep_mode == ESP_CPU_WAIT) || s_lock_cnt; +} + void esp_wifi_hw_open(void) { phy_open_rf(); @@ -192,9 +198,14 @@ void esp_sleep_unlock(void) soc_restore_local_irq(irqflag); } +void esp_sleep_set_mode(esp_sleep_mode_t mode) +{ + s_sleep_mode = mode; +} + void esp_sleep_start(void) { - if (s_lock_cnt) { + if (cpu_is_wait_mode()) { soc_wait_int(); return ; } @@ -207,7 +218,7 @@ void esp_sleep_start(void) const esp_irqflag_t irqflag = soc_save_local_irq(); const uint32_t wdevflag = save_local_wdev(); - if (s_lock_cnt) { + if (cpu_is_wait_mode()) { cpu_wait = 0; goto exit; }