From e0e309c4ed3c2d566f5b07a45f25ce458781fd33 Mon Sep 17 00:00:00 2001 From: Philippe G Date: Fri, 17 Apr 2020 14:54:39 -0700 Subject: [PATCH 1/2] equalizer w/o display --- plugin/SqueezeESP32.zip | Bin 8725 -> 8797 bytes .../plugins/SqueezeESP32/settings/player.html | 59 +++++++-------- plugin/SqueezeESP32/Player.pm | 7 -- plugin/SqueezeESP32/PlayerSettings.pm | 68 ++++++++++-------- plugin/SqueezeESP32/Plugin.pm | 12 ++++ plugin/SqueezeESP32/install.xml | 2 +- plugin/repo.xml | 4 +- 7 files changed, 83 insertions(+), 69 deletions(-) diff --git a/plugin/SqueezeESP32.zip b/plugin/SqueezeESP32.zip index f4d99dc50f2b8e4b510042e9a745f5ae95c58765..fa298f364077ca5392f2bbbce26c2088feba42ca 100644 GIT binary patch delta 4496 zcmZXYcQhPK_s7@jy$h?XAbJ%d)@D(x(R@xKNb+64qA zWv`eha&)`ZJC7i6piD%q?d`A5vBYB5CaEDp%B&mSPnv9HFl>fL|nTa8vWZUJjfBVcS?1ya>=mqDcBWc$OJCmMP|Nz?E3Z>I-J zAUnM^3}DQ5FLkTfR9fICg{9OMprPS;yVyldyw5uS~jP~ZFOvWCy)=D7k>8)8xfK?=h zHM(GOCL~5C&U^r_*bQ2~D%Lnu^V%#RlJ`tANuKXjKa?BZvNS$`V{&=*B&CnyEtK>t z8Xo^4oXvD*hxdQon+_}`tgxLPf)Fg(u&#Ub^`~1V^;&+0{&kT%EPV3>2~|=>-nwYZ z?7?_NG)RKr{uY@!xFkm;!WC@iucsg{`Xy8wzD51&+seKX{Z%Xe-pP8PWm>PDp~j``fI-`u z{W2-3xCJ%)#@fi<39&we4Kg$_Lg=@=L_%1GngmBjnr}v#E!wi2x3QU^>fxSA= zxniNlB)oBlQeUBtYm*9XgKV(7s*&*Tx|JB|OeA_<51S;P3~h$WMC~-w^*L%nPLQPu zKWrCF<_H%XUZW@eAWM8tc7OO-Wd%rMPCgyxv6WXhO>b0_;I2^(IZj-J9~GrMvktxKu<*Yd9E z7jNQZZdNpfP{23=`z^wNv+MA)%%>qD^j+z=UHW8qbaAlMhl$%|OcoL|=7{_nqMJpqm7AjkD!|#17?CX_} zBBm-(PtE%i&!MJJP+SFy-m1NLNG-HVZB>!Klrx-QEr3<_e1%nYe2vXS;jR@k5>BXb zMEY3O%B~jrJabUfP7X26$^2F(0hY7O_b0P8^{;I?pTi$yocY!tFb*8NFzl;ehBqO+ zDSqjXx0G@sl!WSS4Ve`$8Amo!^IDWL`*NdvLa(rkX5NrSd|Dk+(F17&B4AZdl~Ig2tw0&Lt@|!C()m-)8poYJk@1o1nLCciQZ`Aue%Ye zAS-UKO4HMTC4Fy*>iWr&os+{hlKk=`=TPSwH&)S;(ccRplOlmDRlUh|ftW`lyR?!9 zxXp912-H`%FUHXaccKyGG_22hQv-?#_`5KMRAVM#QbHu3u8wXbT z!IXy;Z%BL%nIk#yp8MN&_&#?O1$8&#TXwS;t|5o%U^9!LG#gM(@MK}4_Xj0ICg&cA zbK)LvpGKf;M>B*1lSF=;#j9iLa3YH>fE8jgE?j0B*G`;GM$UDN5xm=O9`>A>*L6}+ zT+e0%3pf)N9?rEDO3iZt?A4+6`_YqF+{>^d-a?|DwTXmt|%# z_GDWC=DpWE=^sPVPvF(mJ7z>1jQ_pIb~1){1HkWzeK0WTJ)GGpwm3lgL}_u@G#%Un zG;jFYIRwG0`jtNL%m=%3&)1U+x-dj3fcdQJnK;$AUyOmk0*Ma=tR8zG&*b7Y67-&n z2lQ!}!qzS~RPsqMGpP>z`d_)wUep=;MR#gBz&Ji3GJkdz_&`)vU&+ZUYxP96Fmle9 zZ1ihY68QZ%PyPAAv7>)gvtj3^S&hp)Y~z*TJdb}{A+V-;_ISyoS7k8*Q(Vd|f#EG+ zNYKAV*EF!jCxhn+&>3an%b| zDJ0YGhv0AS>Gr5tiB^`z4>vJamC00s-UP7zpb7kOEjMtB`JWqE`2aKqwZ{?!SOCBh zf`kkNvvpq*B)c6eyp1$8KH>HKMYGKcG(A>arCG z>lrE77EZsf26ZlssQB|Z;@viiNpSY4;*wqdOhgyu<7cU7|w+HKU zVikGQ9X8&IkYCh6uiu&Rhp$WPMD=5TW88+oxEZln`Rs6X9FRU8EL#%N8VA+W=ICJ$ z`JpoHF0;OtFDL;h&{}ASO=TyD;9Po4mPIVDAZ={eg^P#6`0~V+nyf?wK#+GtbiQR~ z*}%=75QW{lyAxv(-#SdWV0iB!ag5tD)H7b<$T4adm*2@=fBL)nS#Hq$R?obC6S@xe znwROSTJC25J5g(&?dhNMZngyzNix>oLaAx{w?>c9Y0~7Q`-U0xfRVGwJ~Pf)K&zKc zHdP0>sbb%&ebKy-d@xk=>_lUQW3vBPUM1cwu;}&S?+|c@2@?GLWpS>BcSqEzrf9|Q zdYp{lQ<_w1rzfnkxD8~UGIwIY6n$z~KrJBg$T(vysrgTi*V?5@ot^n@QpbkGDfQDw z8dO^vmIv&VEoLk0KBiXKqCQXfCNp1salt9?=YOWdRc!zIjaUwapP8J}_eM8o!BXcR zEM*H{PAk{O=UpryN^a=qPVkr9tDYi`P#ubZ<$kYw(-W&XF;Qwb?Z#(sw&wmg81dk; zSX9qjA^|nmyyERO4ty;-EPEQ}jMbM)m-0LrVc%&kE7E9;BC0keWw7K67aKqNTYRV~ z+366e@tSJL5hAA)lHB>LFOKfKdqDo9+D(i5+#k=2r64Gxua?cv(tRGHNQxeJ1AUQa z$fXjFA9QT|E=O)@pZN8aBk?A+7HmdFrDjVZh*mMq4oRWZ(&>j;iF{h=f?kR)7$w0C za}c;atJu5hoo&I6rIthRY9Y$9WZ8Jq)l<<$)vmbE=^1NDIlCdxgT+uTF2`7`d*XTv zk2_~&6ohtFT)Jyw$Nj~E^_oasXR}N8s7PC(<=rA*g?2BG^HmpzF_#t#jD=T4>*I?~ z!vW#6EPh=#`Dz8uuijElirnf3vL&m8N{Lf*G5VM$ui{0%a&0dZg6On5*P@}n!nxTc zUF_=mf|fBUfB1KdlZI=%8(c9%D0TZ>laMx|)_qcZ*MOTO7Ug0|9#XhSs!)$Fgr3Q8x=5|CUJV&W zknb?X5E#fRv*{(d1G?Pi_h$PxuD6YhB-tv{ZsGtZ9Bw1yCwod^YaRGNKQVOVOHbbj z>-zh@VgB8lL_Jk|pFW)jas`n7KfQckI=Ma2tI9OUeMXS%zU`K(SWAMOj*5%|qB?+n z{4m@ELL7RYmhi>^w$a|2eRyiZO+NiS=O|G+v+99%%m_9^PXiugd=M|0~ z%N2CxDHiKtx7X9U8%-#devxhpfSFly8pUree;|p}NZnW)iVlMwIC#wcIIF+wrMq1L zf6j)pCXd-9jS-#`bSm~#ZI6miexFk_E?0GmNXklf$zXasB|N0+@Cd{Gol;uC2{%KH zTT@1^;N$n6+ag$M$U;?v#M4rh7d`eDB+(!Kd5trs zbWrV2KfA6|mZI+&tM8i!MkI9~z!$1QG|2DzVj z3;SqD=T>t`3YP~%75?%oL!KoVm9U*f!mVmp44heyj4aX$4V23ZVG-XvOhoFuQW|ma zMv^zv`edpH0K1njPc7#>Ts4TCjV9XQ|gbG8lK&5oW;J=(ji#qF})OZcHw)yP+65xoA_GF-knue)`sQ2*x@_Rq4^?C z>QSVwU<>HN?)a{sA4XamBAqiWMSDM1LfuLv5+CM$UCd8m^Pzy~Zr!zVOLu{C;#M}k zavyFEyqwS*Q%+c<&F6TJ!e|xJWUOMhuc*IEN!9U_T|jx;cDH2*q;CY%&)dFM42;O! zBkrY9m-atq*6|T8aPoP!%8PCPExRsP-aNO;x%S($?Hhvyei$9hPAxib1~dlM6#Im2 z!y$_rb*A&l)(;o$Yx(TtMZl5^(kktX8`bQDH+J)>I2L!|hwL@p2BnTsRh=!iQyh%@ zAVqE-TuLs_c|M5r*+j2*L8l)-L$@s5gvgx3G z$;b3K02LSwTZp+j{aBh}Qj|o!fPZXLtr=7`UNuQ$p#H?kRQs}Wt$dAVe1~QfWBiG| zph^i-Y*kCe@snJkGNK9QU>)9K%|<}#y0A7JSmIcemO-14Xf^V}$u*x@ogKrYMhaO& zns0JLL;@1Q%oWB$_43oaATXCrmN0exN@b9_9_;WFb}|$G)?@s_VTs+Gb*c-@a2ZD^ z+!SCU00JI*i>4bX@D+cg&lEr~M9=F*gNN(I!4jfEN2*;;v1S6t4N)Zt_6l1c?w0XT z^wFolj~q+>pguoWfS)cLJ0A^~JlS z+$1buV7+X$w|xb>iF=&=+JVNjjFspWYj3#sZb~CL`|_lq6?4sQ8C^)@e0Jr>?%(L= zliger@;+|;P4>`0c;Px;@^Y$At(`dU=R*YiF`7U8o|WO zB>UecxdW0009(3y?+AL;|Q00nAL`e>@rq008oT2reTUnVGSxyW#t2 z#4It delta 4478 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 - [% prefs.pref_width %] - [% END %] + [% IF prefs.pref_width %] + [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_WIDTH" desc="PLUGIN_SQUEEZEESP32_WIDTH_DESC" %] + + [% prefs.pref_width %] + [% END %] - [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_SMALL_VU" desc="PLUGIN_SQUEEZEESP32_SMALL_VU_DESC" %] - - [% END %] + [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_SMALL_VU" desc="PLUGIN_SQUEEZEESP32_SMALL_VU_DESC" %] + + [% END %] - [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_SPECTRUM_SCALE" desc="PLUGIN_SQUEEZEESP32_SPECTRUM_SCALE_DESC" %] - - [% END %] + [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_SPECTRUM_SCALE" desc="PLUGIN_SQUEEZEESP32_SPECTRUM_SCALE_DESC" %] + + [% END %] - [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM" desc="PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM_DESC" %] - [% "PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM_SIZE" | string %]  - - [% "PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM_BAND" | string %]  - - [% END %] + [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM" desc="PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM_DESC" %] + [% "PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM_SIZE" | string %]  + + [% "PLUGIN_SQUEEZEESP32_SMALL_SPECTRUM_BAND" | string %]  + + [% END %] - [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_FULL_SPECTRUM_BAND" desc="PLUGIN_SQUEEZEESP32_FULL_SPECTRUM_BAND_DESC" %] - - [% END %] + [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_FULL_SPECTRUM_BAND" desc="PLUGIN_SQUEEZEESP32_FULL_SPECTRUM_BAND_DESC" %] + + [% END %] - [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_ARTWORK" desc="PLUGIN_SQUEEZEESP32_ARTWORK_DESC" %] - [% "PLUGIN_SQUEEZEESP32_ARTWORK_ENABLE" | string %]  - - [% "PLUGIN_SQUEEZEESP32_ARTWORK_X" | string %]  - - [% "PLUGIN_SQUEEZEESP32_ARTWORK_Y" | string %]  - - [% END %] + [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_ARTWORK" desc="PLUGIN_SQUEEZEESP32_ARTWORK_DESC" %] + [% "PLUGIN_SQUEEZEESP32_ARTWORK_ENABLE" | string %]  + + [% "PLUGIN_SQUEEZEESP32_ARTWORK_X" | string %]  + + [% "PLUGIN_SQUEEZEESP32_ARTWORK_Y" | string %]  + + [% END %] -
+
+ [% END %] + [% WRAPPER setting title="PLUGIN_SQUEEZEESP32_EQUALIZER" desc="" %] [% END %] diff --git a/plugin/SqueezeESP32/Player.pm b/plugin/SqueezeESP32/Player.pm index a2024151..7e638201 100644 --- a/plugin/SqueezeESP32/Player.pm +++ b/plugin/SqueezeESP32/Player.pm @@ -15,12 +15,6 @@ sub hasIR { 0 } sub init { my $client = shift; - - $prefs->client($client)->init( { - eq => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - } - ); - $client->SUPER::init(@_); Plugins::SqueezeESP32::Plugin::config_artwork($client); } @@ -61,7 +55,6 @@ sub reconnect { my $client = shift; $client->pluginData('artwork_md5', ''); $client->SUPER::reconnect(@_); - Plugins::SqueezeESP32::Plugin::send_equalizer($client); } 1; diff --git a/plugin/SqueezeESP32/PlayerSettings.pm b/plugin/SqueezeESP32/PlayerSettings.pm index 86bc1929..89c2ff7e 100644 --- a/plugin/SqueezeESP32/PlayerSettings.pm +++ b/plugin/SqueezeESP32/PlayerSettings.pm @@ -21,7 +21,7 @@ sub needsClient { sub validFor { my ($class, $client) = @_; - return $client->model eq 'squeezeesp32' && $client->displayWidth; + return $client->model eq 'squeezeesp32'; } sub page { @@ -40,45 +40,51 @@ sub handler { my ($cprefs, @prefs) = $class->prefs($client); if ($paramRef->{'saveSettings'}) { - $cprefs->set('small_VU', $paramRef->{'pref_small_VU'}); - my $spectrum = { scale => $paramRef->{'pref_spectrum_scale'}, - small => { size => $paramRef->{'pref_spectrum_small_size'}, - band => $paramRef->{'pref_spectrum_small_band'} }, - full => { band => $paramRef->{'pref_spectrum_full_band'} }, - }; - $cprefs->set('spectrum', $spectrum); - my $artwork = { enable => $paramRef->{'pref_artwork_enable'}, - x => $paramRef->{'pref_artwork_x'}, - y => $paramRef->{'pref_artwork_y'}, - }; - $cprefs->set('artwork', $artwork); - $client->display->modes($client->display->build_modes); - $client->display->update; + if ($client->displayWidth) { + $cprefs->set('small_VU', $paramRef->{'pref_small_VU'}); + my $spectrum = { scale => $paramRef->{'pref_spectrum_scale'}, + small => { size => $paramRef->{'pref_spectrum_small_size'}, + band => $paramRef->{'pref_spectrum_small_band'} }, + full => { band => $paramRef->{'pref_spectrum_full_band'} }, + }; + $cprefs->set('spectrum', $spectrum); + + my $artwork = { enable => $paramRef->{'pref_artwork_enable'}, + x => $paramRef->{'pref_artwork_x'}, + y => $paramRef->{'pref_artwork_y'}, + }; + $cprefs->set('artwork', $artwork); + $client->display->modes($client->display->build_modes); + $client->display->update; + + # force update or disable artwork + if ($artwork->{'enable'}) { + Plugins::SqueezeESP32::Plugin::update_artwork($client, 1); + } else { + Plugins::SqueezeESP32::Plugin::config_artwork($client); + } + } my $eq = $cprefs->get('eq'); for my $i (0 .. $#{$eq}) { $eq->[$i] = $paramRef->{"pref_eq.$i"}; } $cprefs->set('eq', $eq); - Plugins::SqueezeESP32::Plugin::send_equalizer($client); - - # force update or disable artwork - if ($artwork->{'enable'}) { - Plugins::SqueezeESP32::Plugin::update_artwork($client, 1); - } else { - Plugins::SqueezeESP32::Plugin::config_artwork($client); - } + Plugins::SqueezeESP32::Plugin::send_equalizer($client); } - # as there is nothing captured, we need to re-set these variables - $paramRef->{'pref_width'} = $cprefs->get('width'); + if ($client->displayWidth) { + # as there is nothing captured, we need to re-set these variables + $paramRef->{'pref_width'} = $cprefs->get('width'); + + # here I don't know why you need to set again spectrum which is a reference + # to a hash. Using $paramRef->{prefs} does not work either. It seems that + # some are copies of value, some are references, can't figure out. This whole + # logic of "Settings" is beyond me and I really hate it + $paramRef->{'pref_spectrum'} = $cprefs->get('spectrum'); + $paramRef->{'pref_artwork'} = $cprefs->get('artwork'); + } - # here I don't know why you need to set again spectrum which is a reference - # to a hash. Using $paramRef->{prefs} does not work either. It seems that - # some are copies of value, some are references, can't figure out. This whole - # logic of "Settings" is beyond me and I really hate it - $paramRef->{'pref_spectrum'} = $cprefs->get('spectrum'); - $paramRef->{'pref_artwork'} = $cprefs->get('artwork'); $paramRef->{'pref_eq'} = $cprefs->get('eq'); return $class->SUPER::handler($client, $paramRef); diff --git a/plugin/SqueezeESP32/Plugin.pm b/plugin/SqueezeESP32/Plugin.pm index 3c2ad5b5..ca533c24 100644 --- a/plugin/SqueezeESP32/Plugin.pm +++ b/plugin/SqueezeESP32/Plugin.pm @@ -36,6 +36,7 @@ sub initPlugin { Slim::Control::Request::subscribe( sub { onNotification(@_) }, [ ['newmetadata'] ] ); Slim::Control::Request::subscribe( sub { onNotification(@_) }, [ ['playlist'], ['open', 'newsong'] ]); Slim::Control::Request::subscribe( \&onStopClear, [ ['playlist'], ['stop', 'clear'] ]); + Slim::Control::Request::subscribe( \&onPlayer,[ ['client'], [ 'new', 'reconnect' ] ] ); } sub onStopClear { @@ -50,6 +51,17 @@ sub onStopClear { } } +sub onPlayer { + my $request = shift; + my $client = $request->client; + + if ($client->model eq 'squeezeesp32') { + $prefs->client($client)->init( { + eq => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + } ); + Plugins::SqueezeESP32::Plugin::send_equalizer($client); + } +} sub onNotification { my $request = shift; diff --git a/plugin/SqueezeESP32/install.xml b/plugin/SqueezeESP32/install.xml index 7a9bee38..c3322c4f 100644 --- a/plugin/SqueezeESP32/install.xml +++ b/plugin/SqueezeESP32/install.xml @@ -10,6 +10,6 @@ PLUGIN_SQUEEZEESP32 PLUGIN_SQUEEZEESP32_DESC Plugins::SqueezeESP32::Plugin - 0.81 + 0.82 Philippe diff --git a/plugin/repo.xml b/plugin/repo.xml index 1c888a8d..8fa1d18b 100644 --- a/plugin/repo.xml +++ b/plugin/repo.xml @@ -1,10 +1,10 @@ - + https://github.com/sle118/squeezelite-esp32 Philippe - dcd91eaeb065cf3e90e964ea40a883ed5480093e + 55eb14f12790d71306d143689d9b3d47f9820731 philippe_44@outlook.com SqueezeESP32 additional player id (100) http://github.com/sle118/squeezelite-esp32/raw/master/plugin/SqueezeESP32.zip From 014aa91fdde6e28638fa81f28b4ceb6903f67432 Mon Sep 17 00:00:00 2001 From: Philippe G Date: Sun, 19 Apr 2020 23:01:07 -0700 Subject: [PATCH 2/2] add RSSI + disable equalizer when not needed - release --- components/squeezelite/embedded.c | 9 +++++++++ components/squeezelite/embedded.h | 3 +++ components/squeezelite/equalizer.c | 9 ++++++++- components/squeezelite/slimproto.c | 4 ++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/components/squeezelite/embedded.c b/components/squeezelite/embedded.c index 89a2aa83..44637ebb 100644 --- a/components/squeezelite/embedded.c +++ b/components/squeezelite/embedded.c @@ -23,6 +23,7 @@ #include "esp_pthread.h" #include "esp_system.h" #include "esp_timer.h" +#include "esp_wifi.h" void get_mac(u8_t mac[]) { esp_read_mac(mac, ESP_MAC_WIFI_STA); @@ -58,3 +59,11 @@ void embedded_init(void) { sb_controls_init(); if (sb_display_init()) custom_player_id = 100; } + +u16_t get_RSSI(void) { + wifi_ap_record_t wifidata; + esp_wifi_sta_get_ap_info(&wifidata); + // we'll assume dBm, -30 to -100 + if (wifidata.primary != 0) return 100 + wifidata.rssi + 30; + else return 0xffff; +} diff --git a/components/squeezelite/embedded.h b/components/squeezelite/embedded.h index d599f565..ec710c8b 100644 --- a/components/squeezelite/embedded.h +++ b/components/squeezelite/embedded.h @@ -59,6 +59,9 @@ void register_external(void); void deregister_external(void); void decode_restore(int external); +// must provide or define as 0xffff +u16_t get_RSSI(void); + // to be defined to nothing if you don't want to support these extern struct visu_export_s { pthread_mutex_t mutex; diff --git a/components/squeezelite/equalizer.c b/components/squeezelite/equalizer.c index 3a5517fc..fb119fd4 100644 --- a/components/squeezelite/equalizer.c +++ b/components/squeezelite/equalizer.c @@ -45,11 +45,18 @@ void equalizer_open(u32_t sample_rate) { equalizer.update = false; if (equalizer.handle) { - LOG_INFO("equalizer initialized"); + bool active = false; + for (int i = 0; i < EQ_BANDS; i++) { esp_equalizer_set_band_value(equalizer.handle, equalizer.gain[i], i, 0); esp_equalizer_set_band_value(equalizer.handle, equalizer.gain[i], i, 1); + active |= equalizer.gain[i] != 0; } + + // do not activate equalizer if all gain are 0 + if (!active) equalizer_close(); + + LOG_INFO("equalizer initialized %u", active); } else { LOG_WARN("can't init equalizer"); } diff --git a/components/squeezelite/slimproto.c b/components/squeezelite/slimproto.c index 3c55ec43..f0b447d6 100644 --- a/components/squeezelite/slimproto.c +++ b/components/squeezelite/slimproto.c @@ -183,7 +183,11 @@ static void sendSTAT(const char *event, u32_t server_timestamp) { packN(&pkt.stream_buffer_size, status.stream_size); packN(&pkt.bytes_received_H, (u64_t)status.stream_bytes >> 32); packN(&pkt.bytes_received_L, (u64_t)status.stream_bytes & 0xffffffff); +#if EMBEDDED + packn(&pkt.signal_strength, get_RSSI()); +#else pkt.signal_strength = 0xffff; +#endif packN(&pkt.jiffies, now); packN(&pkt.output_buffer_size, status.output_size); packN(&pkt.output_buffer_fullness, status.output_full);