From 9149508c830d7d29a65a721b52ffc191af301256 Mon Sep 17 00:00:00 2001 From: furrtek Date: Fri, 13 May 2016 01:18:04 +0200 Subject: [PATCH] Improved close call precision --- firmware/Makefile | 2 +- firmware/application/baseband_api.cpp | 9 +++ firmware/application/baseband_api.hpp | 1 + firmware/application/transmitter_model.hpp | 2 +- firmware/application/ui_closecall.cpp | 16 +++-- firmware/application/ui_closecall.hpp | 5 +- firmware/application/ui_xylos.cpp | 14 ++-- firmware/baseband-tx.bin | Bin 33280 -> 33280 bytes firmware/baseband-tx/baseband_thread.cpp | 8 +-- firmware/baseband-tx/baseband_thread.hpp | 6 -- firmware/baseband-tx/proc_xylos.cpp | 15 ++--- firmware/baseband-tx/proc_xylos.hpp | 6 +- firmware/baseband.bin | Bin 33280 -> 33280 bytes firmware/baseband/Makefile | 1 + firmware/baseband/baseband_thread.cpp | 3 +- firmware/baseband/proc_closecall.cpp | 72 +++++++++++++++++++++ firmware/baseband/proc_closecall.hpp | 48 ++++++++++++++ firmware/baseband/spectrum_collector.cpp | 1 + firmware/common/message.hpp | 15 ++++- firmware/common/modules.h | 4 +- firmware/portapack-h1-firmware.bin | Bin 465768 -> 466088 bytes sdcard/baseband-tx.bin | Bin 33280 -> 33280 bytes sdcard/baseband.bin | Bin 33280 -> 33280 bytes 23 files changed, 184 insertions(+), 44 deletions(-) create mode 100644 firmware/baseband/proc_closecall.cpp create mode 100644 firmware/baseband/proc_closecall.hpp diff --git a/firmware/Makefile b/firmware/Makefile index 5bce1a9f..0def504c 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -65,7 +65,7 @@ modules: $(TARGET_BASEBAND).bin $(TARGET_BASEBAND_TX).bin cp $(PATH_BASEBAND_TX).bin ../sdcard/$(PATH_BASEBAND_TX).bin $(TARGET).bin: modules $(MAKE_SPI_IMAGE) $(TARGET_BOOTSTRAP).bin $(TARGET_HACKRF_FIRMWARE).dfu $(TARGET_BASEBAND_TX)_inc.bin $(TARGET_APPLICATION).bin - $(MAKE_SPI_IMAGE) $(TARGET_BOOTSTRAP).bin $(TARGET_HACKRF_FIRMWARE).dfu $(TARGET_BASEBAND)_inc.bin $(TARGET_APPLICATION).bin $(TARGET).bin + $(MAKE_SPI_IMAGE) $(TARGET_BOOTSTRAP).bin $(TARGET_HACKRF_FIRMWARE).dfu $(TARGET_BASEBAND_TX)_inc.bin $(TARGET_APPLICATION).bin $(TARGET).bin $(TARGET_BOOTSTRAP).bin: $(TARGET_BOOTSTRAP).elf $(CP) -O binary $(TARGET_BOOTSTRAP).elf $(TARGET_BOOTSTRAP).bin diff --git a/firmware/application/baseband_api.cpp b/firmware/application/baseband_api.cpp index 3c87682b..cc9939dd 100644 --- a/firmware/application/baseband_api.cpp +++ b/firmware/application/baseband_api.cpp @@ -86,6 +86,15 @@ void shutdown() { shared_memory.baseband_queue.push(shutdown_message); } +void spectrum_streaming_start(size_t decimation_factor) { + shared_memory.baseband_queue.push_and_wait( + SpectrumStreamingConfigMessage { + SpectrumStreamingConfigMessage::Mode::Running, + decimation_factor + } + ); +} + void spectrum_streaming_start() { shared_memory.baseband_queue.push_and_wait( SpectrumStreamingConfigMessage { diff --git a/firmware/application/baseband_api.hpp b/firmware/application/baseband_api.hpp index 15959142..3fc9115f 100644 --- a/firmware/application/baseband_api.hpp +++ b/firmware/application/baseband_api.hpp @@ -55,6 +55,7 @@ void stop(); void shutdown(); +void spectrum_streaming_start(size_t decimation_factor); void spectrum_streaming_start(); void spectrum_streaming_stop(); diff --git a/firmware/application/transmitter_model.hpp b/firmware/application/transmitter_model.hpp index 55d078ac..a4eae0f0 100644 --- a/firmware/application/transmitter_model.hpp +++ b/firmware/application/transmitter_model.hpp @@ -66,7 +66,7 @@ private: uint32_t baseband_bandwidth_ { max2837::filter::bandwidth_minimum }; int32_t vga_gain_db_ { 8 }; BasebandConfiguration baseband_configuration { - .mode = 0, /* TODO: Enum! */ + .mode = 0, .sampling_rate = 3072000, .decimation_factor = 1, }; diff --git a/firmware/application/ui_closecall.cpp b/firmware/application/ui_closecall.cpp index 93ab314a..79e837e9 100644 --- a/firmware/application/ui_closecall.cpp +++ b/firmware/application/ui_closecall.cpp @@ -24,10 +24,9 @@ #include "ui_receiver.hpp" #include "ch.h" -#include "evtimer.h" +#include "time.hpp" #include "event_m0.hpp" -#include "ff.h" #include "hackrf_gpio.hpp" #include "portapack.hpp" #include "radio.hpp" @@ -50,6 +49,7 @@ void CloseCallView::focus() { CloseCallView::~CloseCallView() { receiver_model.disable(); + time::signal_tick_second -= signal_token_tick_second; } void CloseCallView::do_detection() { @@ -224,7 +224,7 @@ void CloseCallView::on_show() { } ); - baseband::spectrum_streaming_start(); + baseband::spectrum_streaming_start(1); } void CloseCallView::on_hide() { @@ -286,7 +286,7 @@ void CloseCallView::on_vga_changed(int32_t v_db) { receiver_model.set_vga(v_db); } -void CloseCallView::update_rate() { +void CloseCallView::on_tick_second() { text_rate.set(to_string_dec_uint(scan_counter, 3)); scan_counter = 0; } @@ -343,8 +343,8 @@ CloseCallView::CloseCallView( }; }; - field_frequency_max.set_value(receiver_model.tuning_frequency() + 5000000); - field_frequency_max.set_step(200000); + field_frequency_max.set_value(receiver_model.tuning_frequency() + 2000000); + field_frequency_max.set_step(100000); field_frequency_max.on_change = [this](rf::Frequency f) { (void) f; this->on_range_changed(); @@ -373,6 +373,10 @@ CloseCallView::CloseCallView( nav.pop(); }; + signal_token_tick_second = time::signal_tick_second += [this]() { + this->on_tick_second(); + }; + //audio::output::mute(); receiver_model.set_baseband_configuration({ .mode = toUType(ReceiverModel::Mode::CloseCall), diff --git a/firmware/application/ui_closecall.hpp b/firmware/application/ui_closecall.hpp index 42e2ef4a..49a557b8 100644 --- a/firmware/application/ui_closecall.hpp +++ b/firmware/application/ui_closecall.hpp @@ -43,7 +43,7 @@ namespace ui { -#define CC_SLICE_WIDTH 5000000 //10000000 +#define CC_SLICE_WIDTH 3000000 //10000000 #define CC_BIN_NB 236 #define CC_BIN_WIDTH CC_SLICE_WIDTH/CC_BIN_NB @@ -74,6 +74,7 @@ private: uint8_t slicemax_db[32]; // Todo: Cap max slices ! uint8_t slicemax_idx[32]; uint8_t scan_counter; + SignalToken signal_token_tick_second; bool ignore = true; bool slicing; bool locked = false; @@ -82,7 +83,7 @@ private: void do_detection(); void on_lna_changed(int32_t v_db); void on_vga_changed(int32_t v_db); - void update_rate(); + void on_tick_second(); /* |012345678901234567890123456789| * | Min: Max: LNA VGA | diff --git a/firmware/application/ui_xylos.cpp b/firmware/application/ui_xylos.cpp index 56de2e67..f1c1d14a 100644 --- a/firmware/application/ui_xylos.cpp +++ b/firmware/application/ui_xylos.cpp @@ -270,7 +270,7 @@ XylosView::XylosView( receiver_code.set_value(1); header_code_a.set_value(0); header_code_b.set_value(0); - options_freq.set_selected_index(5); + options_freq.set_selected_index(6); // 5 ! DEBUG checkbox_wcsubfamily.set_value(true); checkbox_wcid.set_value(true); @@ -331,13 +331,15 @@ XylosView::XylosView( button_transmit.set_style(&style_val); - button_txtest.on_select = [this,&transmitter_model](Button&) { + XylosView::upd_message(); + + button_txtest.on_select = [this](Button&) { const uint8_t ccirtest[21] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,13,12,11,0xFF }; if (txing == false) { EventDispatcher::message_map().unregister_handler(Message::ID::TXDone); EventDispatcher::message_map().register_handler(Message::ID::TXDone, - [this,&transmitter_model](Message* const p) { + [this](Message* const p) { const auto message = static_cast(p); if (message->n == 25) { audio::headphone::set_volume(volume_t::decibel(0 - 99) + audio::headphone::volume_range().max); @@ -364,14 +366,14 @@ XylosView::XylosView( } }; - button_transmit.on_select = [this,&transmitter_model](Button&) { + button_transmit.on_select = [this](Button&) { if (txing == false) { upd_message(); EventDispatcher::message_map().unregister_handler(Message::ID::TXDone); EventDispatcher::message_map().register_handler(Message::ID::TXDone, - [this,&transmitter_model](Message* const p) { + [this](Message* const p) { uint8_t c; char progress[21]; const auto message = static_cast(p); @@ -390,7 +392,7 @@ XylosView::XylosView( journuit(); } } else { - for (c=0;cn;c++) + for (c=0;cn;c++) // Todo: Use progressbar ! progress[c] = ' '; progress[c] = '.'; progress[++c] = 0; diff --git a/firmware/baseband-tx.bin b/firmware/baseband-tx.bin index 7ee70f4d51b695a4832316e1467a6f36f0a44a21..002a8983c3ef4a0f7303d8ea2e3f90f7c955d662 100644 GIT binary patch delta 2236 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 diff --git a/firmware/baseband-tx/baseband_thread.cpp b/firmware/baseband-tx/baseband_thread.cpp index 23cfa3bc..51c62caf 100644 --- a/firmware/baseband-tx/baseband_thread.cpp +++ b/firmware/baseband-tx/baseband_thread.cpp @@ -85,7 +85,7 @@ void BasebandThread::run() { const auto baseband_buffer = std::make_unique>(); baseband::dma::configure( baseband_buffer->data(), - direction() + baseband::Direction::Transmit ); //baseband::dma::allocate(4, 2048); @@ -98,7 +98,7 @@ void BasebandThread::run() { while(true) { // TODO: Place correct sampling rate into buffer returned here: - const auto buffer_tmp = baseband::dma::wait_for_rx_buffer(); + const auto buffer_tmp = baseband::dma::wait_for_tx_buffer(); if( buffer_tmp ) { buffer_c8_t buffer { buffer_tmp.p, buffer_tmp.count, baseband_configuration.sampling_rate @@ -139,8 +139,8 @@ void BasebandThread::disable() { void BasebandThread::enable() { if( baseband_processor ) { - baseband_sgpio.configure(direction()); - baseband::dma::enable(direction()); + baseband_sgpio.configure(baseband::Direction::Transmit); + baseband::dma::enable(baseband::Direction::Transmit); baseband_sgpio.streaming_enable(); } } diff --git a/firmware/baseband-tx/baseband_thread.hpp b/firmware/baseband-tx/baseband_thread.hpp index 5abb1ce1..bc3bf491 100644 --- a/firmware/baseband-tx/baseband_thread.hpp +++ b/firmware/baseband-tx/baseband_thread.hpp @@ -33,12 +33,6 @@ public: Thread* start(const tprio_t priority); void on_message(const Message* const message); - - // This getter should die, it's just here to leak information to code that - // isn't in the right place to begin with. - baseband::Direction direction() const { - return baseband::Direction::Transmit; - } void wait_for_switch(void); diff --git a/firmware/baseband-tx/proc_xylos.cpp b/firmware/baseband-tx/proc_xylos.cpp index 61cdd241..9caf1d19 100644 --- a/firmware/baseband-tx/proc_xylos.cpp +++ b/firmware/baseband-tx/proc_xylos.cpp @@ -30,16 +30,11 @@ #include -// 1990 1131 1201 1275 1357 ... - -// 14 13 12 11: -// 2108 989 2259 931 - void XylosProcessor::execute(const buffer_c8_t& buffer) { // This is called at 1536000/2048 = 750Hz - ai = 0; + // ai = 0; for (size_t i = 0; i>18]*255); // Audio preview sample generation: 1536000/48000 = 32 - if (as >= 31) { + /*if (as >= 31) { as = 0; audio[ai++] = sample * 128; } else { as++; - } + }*/ //FM - frq = sample * 300; // ~10kHz wide + frq = sample * 1000; // ~10kHz wide phase = (phase + frq); sphase = phase + (256<<16); diff --git a/firmware/baseband-tx/proc_xylos.hpp b/firmware/baseband-tx/proc_xylos.hpp index 97695997..1de15d16 100644 --- a/firmware/baseband-tx/proc_xylos.hpp +++ b/firmware/baseband-tx/proc_xylos.hpp @@ -39,10 +39,10 @@ public: void execute(const buffer_c8_t& buffer) override; private: - int16_t audio_data[64]; + /*int16_t audio_data[64]; std::array audio; - /*const buffer_s16_t audio_buffer { + const buffer_s16_t audio_buffer { audio.data(), audio.size() };*/ @@ -75,7 +75,7 @@ private: int32_t sample, frq; TXDoneMessage message; - AudioOutput audio_output; + //AudioOutput audio_output; }; #endif diff --git a/firmware/baseband.bin b/firmware/baseband.bin index 187b9c21d9f8e4ad51fb6788edb426fe617c95bd..08ce9eee6789f70e4348aaaf59fa82d44434d54d 100644 GIT binary patch delta 3978 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 J)?5Er{|^-kPSgMZ delta 3899 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 W`yHXPMyPIohW6GusOg7)!v7EO@iH<1 diff --git a/firmware/baseband/Makefile b/firmware/baseband/Makefile index ffb80d85..6c4ec717 100755 --- a/firmware/baseband/Makefile +++ b/firmware/baseband/Makefile @@ -144,6 +144,7 @@ CPPSRC = main.cpp \ proc_wfm_audio.cpp \ proc_ais.cpp \ proc_wideband_spectrum.cpp \ + proc_closecall.cpp \ proc_tpms.cpp \ proc_ert.cpp \ proc_capture.cpp \ diff --git a/firmware/baseband/baseband_thread.cpp b/firmware/baseband/baseband_thread.cpp index 37f36275..54fda4fa 100644 --- a/firmware/baseband/baseband_thread.cpp +++ b/firmware/baseband/baseband_thread.cpp @@ -36,6 +36,7 @@ #include "proc_wfm_audio.hpp" #include "proc_ais.hpp" #include "proc_wideband_spectrum.hpp" +#include "proc_closecall.hpp" #include "proc_tpms.hpp" #include "proc_ert.hpp" #include "proc_capture.hpp" @@ -132,7 +133,7 @@ BasebandProcessor* BasebandThread::create_processor(const int32_t mode) { case 5: return new TPMSProcessor(); case 6: return new ERTProcessor(); case 7: return new CaptureProcessor(); - case 10: return new WidebandSpectrum(); // Close call + case 10: return new CloseCallProcessor(); default: return nullptr; } } diff --git a/firmware/baseband/proc_closecall.cpp b/firmware/baseband/proc_closecall.cpp new file mode 100644 index 00000000..8d49aff0 --- /dev/null +++ b/firmware/baseband/proc_closecall.cpp @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "proc_closecall.hpp" + +#include "event_m4.hpp" + +#include +#include + +#include + +void CloseCallProcessor::execute(const buffer_c8_t& buffer) { + // 2048 complex8_t samples per buffer. + // 102.4us per buffer. 20480 instruction cycles per buffer. + + if( phase == 0 ) { + std::fill(spectrum.begin(), spectrum.end(), 0); + } + + for(size_t i=0; iid) { + case Message::ID::UpdateSpectrum: + case Message::ID::SpectrumStreamingConfig: + channel_spectrum.on_message(message); + break; + + default: + break; + } +} diff --git a/firmware/baseband/proc_closecall.hpp b/firmware/baseband/proc_closecall.hpp new file mode 100644 index 00000000..f00e6ff7 --- /dev/null +++ b/firmware/baseband/proc_closecall.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. + * + * This file is part of PortaPack. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __PROC_CLOSECALLPROCESSOR_H__ +#define __PROC_CLOSECALLPROCESSOR_H__ + +#include "baseband_processor.hpp" +#include "spectrum_collector.hpp" + +#include "message.hpp" + +#include +#include +#include + +class CloseCallProcessor : public BasebandProcessor { +public: + void execute(const buffer_c8_t& buffer) override; + + void on_message(const Message* const message) override; + +private: + SpectrumCollector channel_spectrum; + + std::array spectrum; + + size_t phase = 0; +}; + +#endif/*__PROC_CLOSECALLPROCESSOR_H__*/ diff --git a/firmware/baseband/spectrum_collector.cpp b/firmware/baseband/spectrum_collector.cpp index 0d288bee..564182e9 100644 --- a/firmware/baseband/spectrum_collector.cpp +++ b/firmware/baseband/spectrum_collector.cpp @@ -47,6 +47,7 @@ void SpectrumCollector::on_message(const Message* const message) { } void SpectrumCollector::set_state(const SpectrumStreamingConfigMessage& message) { + set_decimation_factor(message.decimation_factor); if( message.mode == SpectrumStreamingConfigMessage::Mode::Running ) { start(); } else { diff --git a/firmware/common/message.hpp b/firmware/common/message.hpp index e4727502..92a7041c 100644 --- a/firmware/common/message.hpp +++ b/firmware/common/message.hpp @@ -237,15 +237,26 @@ public: Stopped = 0, Running = 1, }; - + constexpr SpectrumStreamingConfigMessage( Mode mode ) : Message { ID::SpectrumStreamingConfig }, - mode { mode } + mode { mode }, + decimation_factor { 1 } + { + } + + constexpr SpectrumStreamingConfigMessage( + Mode mode, + size_t decimation_factor + ) : Message { ID::SpectrumStreamingConfig }, + mode { mode }, + decimation_factor { decimation_factor } { } Mode mode { Mode::Stopped }; + size_t decimation_factor = 1; }; struct ChannelSpectrum { diff --git a/firmware/common/modules.h b/firmware/common/modules.h index 38ca88d4..3f5e744c 100644 --- a/firmware/common/modules.h +++ b/firmware/common/modules.h @@ -1,2 +1,2 @@ -const char md5_baseband[16] = {0x1a,0x50,0xbc,0xc5,0xf4,0x5a,0x50,0x1b,0x3f,0x88,0x4c,0xb5,0xb3,0x95,0xa9,0x4d,}; -const char md5_baseband_tx[16] = {0xf6,0x31,0x51,0xa5,0x0a,0xb1,0x36,0xf8,0xbe,0x4e,0xe2,0x7b,0x84,0xfc,0x62,0xac,}; +const char md5_baseband[16] = {0x07,0xff,0xf6,0x7f,0x06,0x02,0xd1,0xd7,0x67,0x8f,0x67,0xdc,0xe8,0x36,0xa9,0xc0,}; +const char md5_baseband_tx[16] = {0xe9,0xeb,0x30,0xea,0x3f,0xf5,0xea,0x93,0xf9,0x62,0x1e,0x9c,0x5f,0x29,0xa7,0x95,}; diff --git a/firmware/portapack-h1-firmware.bin b/firmware/portapack-h1-firmware.bin index a6059fd98688f91c791e1c534979931a87fd873e..f852f729261d5a64286cc42dbcb160c96c88e023 100644 GIT binary patch delta 46321 zcmd43d30387B^bwbe-sK_4v0#^AcBel z0V)twhN~um8qg4j%j5`Nhs2TLUJamvqId#?({sOHog|3Y``-HATJMk7YgJe6s$J8r zUAuPe+TG{(r`NunUb#}(DAJ0BA|dNF?Lp{6NGyUGp);>D9z*|{x3{BCNjxE^6aHG( zS?B*CuJ~I={|A-+KdjU5?;{@ricCh}pYn#M>qU8_UzBGe9QHGtAR4269#K94_y>eG zKbt0qnL`a8(L`j)d*6N{@AL}tPZ1-;ffzSD^<#( z$BF!0knI=5kwZnfOF-D&+rA~mcRJJeNn);$#NLp^KccSs zi99fnYmO`+@?!S7R_qzS(ks>*4$uT*_&Sjo2qgxA{h}2g9xKWZyi-2zEoA-^;V?pd zXOHMsa-_N9-{#-ez0@HUr8-6Vw*SIE+=soS6T3>HJk~2PK`+LONBgkvk%if2dN=FE z1hJ_POVW!bqbNss1*_F*IBxm z&DVRF%yZ;EEILd~jT7Y!Z(rZCyAK;4CZ=0N`H{EDq3cUX-*&PJ4kPAt_uFi7n0UWv z=*upKiF3s6ec7~d@pG*KSV+GTA8T_eSH zLPBmJq+ARn>}_b6R${Qqm`rMFmA3GH- z=J&4+>~?L-6PtRV%hEvE{O9uGn!0y1GxNZ@^N~a_3lCuJTsJvG%0f0FMw~w*EwKKa z$_vxPD0E48n<9J@NC^zxhRA?3kPNEzuTR-R`#(6y)>7>RS+F^vAZ=aW8t zn|8UL%hNO&F@QfHimFPjyLw@Ug=~s=``m0uBEek2Hvt_ZOqsKyDNa^MeFAR6+U8%0KU97TB6PH?* z_uQd0V}z61N%xTQkdIx86>a)e2W2e97z67aCz_JPkftRc(~Uhr?Ist=bT@|-eTX^Z z#6ChRTN@`15*fVbJK@BGGq;C%(A!Ii!TXBSX6@e zK%5|N@_%?iFGgLEh}k8`&-mHK1aWL`jqj&(oIv`9kaDxPbCyPLn8WBY>=n!*MFe+c zdfV4WDtgaN28I-;_rQ5Q81>P&m@!dIPyNtsojc!IWR_afi6C$GPBqs$Gwnn^;bjvO z#UAk!e4E_eZIk4XjbvSD7C^TT*b|B3kod(O>)b4-h>R+)b?(2xbWgD6M6rwL^fEb7 zygzc2r*llxJ*+%Q93NkZP2A2MD?OZ-gUWXHMUuE6yd)8F9KqS2*^|YqBI40TarD5L zQ=*N?kZD4MBW=3XNvxBukkYeGYe}hdm(yf7fO|M(b(VF)hgdy?2`ir?Cgce69*>Fy zD)s$Ep0uN03ntnZoOGo!7j*O>&clM51=$TePO&%HL#g5rF*C&KQ^m~a91qF-sVS*0 zqL#=vdf3mYV%PZJy?>qpDOuw2kaC43r-|b#1o>W%VfReC=0dn&!aBJ;?Z-eWj)9PJ z#LIWgGye5h~PRJnEhwf~flXI61_4}ZHt-DW0?ZyIxHj}%d0awcV;o?K~4=|Rj*C37aH z+|L^zCWJ%hhhVXBoD}2|@>UKZ#*yul40lPrrKZE+UybXO%Q&ulTzP|LZj`;ywFN8H zr|EsyyL*jA@vi(UBtITh)diD^zH}!H$iGr~XW4s55P4Og#l^XTH!;gqJ#Max6TU3e z;&fqCL|~_71UVaj640qttye15nps_{&g+O_;7WW$Dw)D_iNTP&?Z1|QnKHz66%H54 zDsAE{^~3K2<_(y%qJFiVWK6oU{iwvl;)g|M2@ipL_w~@p@{H zv4^!LghjN{2$Heu5q;L86A<%@PPvI`*W9YS@~=>1ig7^vV&2~N%CbjE)_qO0NWLrx z5%x2Wlq`R*HB5*YqmczoSVeE^1JJ!Hg#lmgBjz)Uc9ihSr{|Kao13a!5o6DmfZqAq z3oA5VfkG$Tgjna@b+J~Z8K*Y!iLz#_rnPb@@Wy<8`HAt`3(ExUg{LF80lyhxCupq) ztyeGklhy)gErQn6Q1P5wZ!#|`UG$xs95$6jUbvB1OFwXTZ;5m#8uH2?adC>SJucNB z_)UC@({pC}&P8YEzIkqDy7jT0C8y`|;gYPn=C9Pj)}8}A*^sSYy!s7&+lNzxp>%-0 z{Ols@{c(#+?+;(RvrON%Y-YHsa)y)}+$SsCk*1Rv$4R%I2sPnj<5I(V+aPuF+$E0| zk})dD=A5%Wnm<<4_Tf!5Cv9=r{nO7`9u)>y?kAQx=x*6e!Mv-CHyK+lRE3m8_sRd! zrUPvn-NYhTOYcvyk2=TuJBbCW5QYi4lVp9g=oVVGp4TE10~s#Z#N4N*b_~o^&{Z5D z=B`QA^%B<4KcT7m%uQQRnb6jOniRWXtguyt0=*_E)M&Qy{1m%blQNdbl|e2e(V{Ip z=M#JfmG45u*slNZT$@~l-TiatSpMG*#qxhUl(Bys%80)WWrI4DirYO8oI7$MTBE5t z)e&zvhuxw|@g~SFLMrn4-r*_!;brZq_HVvh#$1ZkKwrdO`CzKUwYHw~{mx3#_V{el zw(2I*RypH7JI#68uB|Gxi>>Jz$u3n1t#KNuZDqwY4U+L1TBU6@YL42YTaD2=8O9 zalP-V#5PPz4a?FU4=THY;#R>LU(V;g@tjao?MicX@|Xtf&T}eK?6X{9F2N>@(BytH zRoJrHRp?rgUeMK;8YUels@i8Xa}5^xQ0N6s{AuS{Wd@YCh|6@ z-OzdP8QKuxO3floLvbQUO4Ob^tI%Z{3x%dM5*pKSf7z@tmo|%s(~hY_ zaqu$N9Id@K!5p3l2O)Dwjlp%Z~!q^ z<*js2G~96lqTD7_Y1+P@u5V4$R|6thWlbC1Q*0ry_Nq!^DZP_IChuHu3ist*cU~`} z&sHqp0vgAqy5@fo(vNZ>{V8~-T}VF@{d|XzE}irLB&4~FUg;ihSm~Z%f}C#IJ|`M- z`s|$_xSfZiuanbJCpNk#+A8!}?D))d%*3>7!9ED;(mVOcUq1Jz5ErY2nvL$sCd*x# zwq-N0zerHIFK_~K^8}dn1Vo_NA&axXM-K#mYZJC&8?=2tMaWqRD1Pxul^PXSmb@<1 zq*!=6g4J>t+NvO{L9n1w#2d7sK{Tp2aI->K);Kgb5zS4p%|6Gw!GUJ#WJxZ8w?G2( z{7wnnF`Nzw{N4p2{GC=^O!c8pz>WMc+;B*&x?~rtXzSgoB%Wf|R8bbF3eI#!}kf@o?_pMJ(36JzTYRP0}8*O$AA|6Z9pIR z`GD33Ic=JM=2F(CYK`sESKTq#7_847;y_^>E4f3o3TxSmcZgZ(L8ZqbZg}zc#IDN3 z<-7s+nQW;bsHBG2Z+D2j^MXqJA#%vv12+wX@?5^f+CT1w^a<$`Go6Bu$a9^M80S)N zmdoaRqcwQ%#zRIyy&1{(d)f3mMHiFrggqjttO&ByIpW<`|6i^je1AQqUO{ABL5?n@ z&_ZXix;f%9jIhvmJ#+D6KC!n1UYOux_Pa!9?|*uvj=KdXERo+-Zx>hwQ_=t|m?@}4 z_&9xz`&rXnFsKBTexB>^5(dnh&xmC%5I6P+Dy{%+jU-Z$w(!7t18!o@1KV>6Dd`0p z1i~_eF}>KC1>$dULFEtsgiBK_96!7;sGRq+mV3l>1IM@ZBL>(944k^mf3G+Zldto$ ziREIF?Q4|te0&qZPB6l4@9;GLw8I;(!9nHoci0^Z#e4b%lm`xyLoK-~8W9Qt$^yW@ zT?gL@*xdoM;s-<%tA9W=bU>F~&xdr}aA0c=!SFyqIh@5|WKD2I0C-W4BUmEM=7rL7%)M zoshieVPmt$+$DB za4Mh&d?xbKoQT45r0?}v$?BXgPJL0B+SOhD@&o1QD8EJ|c7#F%>pdcwfS7lBI!ye_ z1j-u>;|-{3mQQ-Z(Z`D=(HMYP{>sCLQ&u)Q0s}D1pL%%rVd&lrGqT32FFHF%uXflU z9s1EB?~HeP|F%Cn6Ovh1N{uNA>ilcbJs*N#xi$pWjnZU;-^a=GR!8w^OXGu-PKnVr zO%jQrxbgFNx>F+-7dPIQO#38@i@j`nKk5?o2OGot({BZFT`@ajqf1586jqu|S0|lx z^VZHUBBtLEwik;;M$DSBX{zD9zm&aF%z6)?ri54A?H1)fYrS5~W)GmfldvrAc6;)l zWp5U<=iAHX{jJ{H#q9g`vZBA$J6O!R=FmPylibT~bqP6EXX$>!fzENhU(8B#XeLU- zcgOHtVR0j=T`a$e%^XShhcCTJBx@0#zlo)eqFc2`kpAi>_Rc8uIeaS9j;4df zvZ;-uM^mk+eSNA(4o+o7xtM@FmF>%=(?ruO7CwgV)0%D;N#C2
Nm?MkG#-ORLk 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

LMRJln3O+oY8d{S4bD&)$C&|Zx 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 d45xLvxy>Y<*53 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

=bf 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 NKiN9l*YK6V{Xe(7-sJ!Q diff --git a/sdcard/baseband-tx.bin b/sdcard/baseband-tx.bin index 7ee70f4d51b695a4832316e1467a6f36f0a44a21..002a8983c3ef4a0f7303d8ea2e3f90f7c955d662 100644 GIT binary patch delta 2236 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 diff --git a/sdcard/baseband.bin b/sdcard/baseband.bin index 187b9c21d9f8e4ad51fb6788edb426fe617c95bd..08ce9eee6789f70e4348aaaf59fa82d44434d54d 100644 GIT binary patch delta 3978 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 J)?5Er{|^-kPSgMZ delta 3899 zcmZWM4OA58wcq#c>GJ2wRf;2yM3LRk=NP?DciMk*Y2iW4MsA3#n{hXoY-ccpZ(O@KH<63 z>w1%}QsZzvAzvVj*9$Q$m>ToE2C*99LocN2VvSpU2C)jE(FdD#zY6`eo1RVLUzlfh z&Jy2n1LLfQ?q)*dRw0Q?r!){M^(WZLHgM^!?0lmTV<^%^FBquH@1H|V=Mc^#3^h)N z18W1LBlJIbIMN7Rfo9#mR0`BMn~gTYKLX8cNIhqi}AV$LephlM31UG|fSY8us4!&$iMGYjALRvIQS4a~gAucq9F-H@Wn95jB z6TD(dWMn^lWO5nJ`w7WFFd-Y>WvD}P`+jJOXfXuficahYS40V$*e~$2W0=8#B73t? zGbfIQ?UFB!1+b7YJ+U|q;==$@57D2)U!!)@5?C`gjjj?J=l+SZ_GaMcxey5t#(YZ4 zclMJ(e+EuYtbFfVS`#4u`V8LG$MJfx!(--61KQ(z|0$N9>M`&>sn%OM(Vn9hYdnZo zb3C!=#gkJ|7wZg(pCY!ehoVjgbrW$Jd>wnhB&nve+j!lWk(!-)QB!woPwY$h;M8g5Gw2|sXJAx3n&av=>&0q?W*yq8i>ZJbPkPM=DAZ9i`$kAjRKLV<9b} zlBU7YgtI@=i!Zu4o)g>Mw|#Hg{leBWjF4?F?A~01m)t^#t(A~d^9Tu#A>;yL3*t0{ zFOV*s_`6*%HoFm*>2YbbBJ_HGSNsqrPZHC3n?GN@_=X3biL*w$TdEhqlg4u{o5^9- zi%)ytO>-IT0BSiv7eSjPjRwP8mif%9z$J@0;n#AmOHRM-_^RT#%kgIln5^cAGIab0 zMRVLwve5Bw6J{*DL)>gV5!s65D8pw^GPnSVu{QMOKj}tP2&Do9kJmS)cf7m(k zGauqRdCXDv-u1d51@lOVmEDfg&*hF@gi{Ee-(@uBhRbm-_Lv)fzc96Yvpe@z_p;nu zrL&H+qXet z9R}k^+OjX*IFwC@c;S3Av@A-!@>2`7`wC@m4b zxktz7T98u4+52v|eqTaFzx$nWZ`HGdCrPR3OXb9qZZM}NvX|UKLF$*fSe@wheR_ko zEWX)ply8n2^*5NY|K^8Aop{41@EMmV>+(WmW>UmSZ~yqg$DSQD^O_%>_>>pynMv%h zS7^SK8%u)9|$_969IU;t7*NDcX^vq)X?Q(aSL)P51~Sp%9Lv0Wb? zyJmYFin3x>KkavQ7?no?kD-H~A~o%*9jR$o2auX})ilG&jp3Wuw5mZ@*0JDLc?r)= zS{yp@np;?XKSxuxV>9sQ97|J0*p-Qv;0D#uXUkeUvw84Yye9=vNA zUcw9~h9|ETU}!7jQY!ssWqz|9G~0B?%s#_F8kR8|G`Y3%Q}%)vF0V>pZz@_?oKAdM zfy4)|2Q61_$CV_^&t6VxqOc(+gtA8-hw9wbbPl|pdz9{iWve%_1_gexIibc(0Fd# zMCfq>s?^~7%319^NGBW)uBqoJ~KZh zmAl`f&To=N7z@R=># zD+T((kc&hv9XaMh`pi7!RwB1=YTjvXGQq(_m%6YgbzpwXPW#7lrj!ukk-P1{Cs*)_-+0I8n*?vPZsV(CYIs$F=2;hVTVpP+?5va z7NqaE?~Y0msxWck3`MP#ue97*AU{#p*V8jA{+yL|6JTP1&r%%g?;EXSR4GUOu3Ii7 z>#$q$p|dd8@)z&zZeik(ce-0X@OR5RJXlpJ5xyyWjHbZOqIf(wpDe1RH{k1{eN=$0 z#mnhp=q$cB%;Zhwm+%hj@8o0UObmoS7N;>X_4e8#nvvwC&l?N1g`JWvVTtDXPjxMH zJHmxLLWZ%rX$T);#RE|GMIIbncZt3N#U+dAeNbOA2Yy-l7Z!a0_S!GALIoaNzj5|& z*a{MLFNp`caRyXzGe z>yeK16En$C7vsRP5mP`P9)D^20*}-p!#&OJM^?R@a2%QM)_kgwj zX4o5^b+^i_nzFG_kxs(G2K;+z6CP|Rq4b~d^uD<)uMN8PUA|AjwYj~aDNoFb^y53c zBE5Ns)^rr93ts(kec~VACxdo;uXfP_w{#Kt?KAiRukPNo zOzfCt7$@S+`={+^-aA(il8bNwpM}G7ts6out1%;l`dqYJBe+_vH1G)?X#@(EgL9MC z7o&#Ooru#A|M0qivigna&n_H3XrRU&<@oMx_+4EN#}DzLX;o;7V0jqDRdDrCgR#B_ W`yHXPMyPIohW6GusOg7)!v7EO@iH<1