mirror of
https://github.com/eried/portapack-mayhem.git
synced 2024-10-01 01:26:06 -04:00
Reduced audio tx FIFO refill size
Last received POCSAG address is auto loaded in POCSAG tx
This commit is contained in:
parent
aec41cab91
commit
446efa8fc0
@ -50,10 +50,6 @@ int WAVFileReader::open(const std::filesystem::path& path) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t WAVFileReader::read(void * const data, const size_t bytes_to_read) {
|
|
||||||
return file.read(data, bytes_to_read).value();
|
|
||||||
}
|
|
||||||
|
|
||||||
void WAVFileReader::rewind() {
|
void WAVFileReader::rewind() {
|
||||||
file.seek(data_start);
|
file.seek(data_start);
|
||||||
}
|
}
|
||||||
@ -62,14 +58,14 @@ uint32_t WAVFileReader::ms_duration() {
|
|||||||
return ((data_size_ * 1000) / sample_rate_) / bytes_per_sample;
|
return ((data_size_ * 1000) / sample_rate_) / bytes_per_sample;
|
||||||
}
|
}
|
||||||
|
|
||||||
int WAVFileReader::seek_mss(const uint16_t minutes, const uint8_t seconds, const uint32_t samples) {
|
/*int WAVFileReader::seek_mss(const uint16_t minutes, const uint8_t seconds, const uint32_t samples) {
|
||||||
const auto result = file.seek(data_start + ((((minutes * 60) + seconds) * sample_rate_) + samples) * bytes_per_sample);
|
const auto result = file.seek(data_start + ((((minutes * 60) + seconds) * sample_rate_) + samples) * bytes_per_sample);
|
||||||
|
|
||||||
if (result.is_error())
|
if (result.is_error())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
uint16_t WAVFileReader::channels() {
|
uint16_t WAVFileReader::channels() {
|
||||||
return header.fmt.nChannels;
|
return header.fmt.nChannels;
|
||||||
|
@ -93,8 +93,7 @@ public:
|
|||||||
int open(const std::filesystem::path& path);
|
int open(const std::filesystem::path& path);
|
||||||
void rewind();
|
void rewind();
|
||||||
uint32_t ms_duration();
|
uint32_t ms_duration();
|
||||||
size_t read(void * const data, const size_t bytes_to_read);
|
//int seek_mss(const uint16_t minutes, const uint8_t seconds, const uint32_t samples);
|
||||||
int seek_mss(const uint16_t minutes, const uint8_t seconds, const uint32_t samples);
|
|
||||||
uint16_t channels();
|
uint16_t channels();
|
||||||
uint32_t sample_rate();
|
uint32_t sample_rate();
|
||||||
uint32_t data_size();
|
uint32_t data_size();
|
||||||
@ -127,7 +126,6 @@ private:
|
|||||||
|
|
||||||
header_t header { };
|
header_t header { };
|
||||||
|
|
||||||
File file { };
|
|
||||||
uint32_t data_start { };
|
uint32_t data_start { };
|
||||||
uint32_t bytes_per_sample { };
|
uint32_t bytes_per_sample { };
|
||||||
uint32_t data_size_ { 0 };
|
uint32_t data_size_ { 0 };
|
||||||
|
@ -155,6 +155,8 @@ void POCSAGAppView::on_packet(const POCSAGPacketMessage * message) {
|
|||||||
console_info += pocsag::bitrate_str(message->packet.bitrate());
|
console_info += pocsag::bitrate_str(message->packet.bitrate());
|
||||||
console_info += " ADDR:" + to_string_dec_uint(pocsag_state.address);
|
console_info += " ADDR:" + to_string_dec_uint(pocsag_state.address);
|
||||||
console_info += " F" + to_string_dec_uint(pocsag_state.function);
|
console_info += " F" + to_string_dec_uint(pocsag_state.function);
|
||||||
|
|
||||||
|
portapack::persistent_memory::set_pocsag_address(pocsag_state.address);
|
||||||
|
|
||||||
if (pocsag_state.out_type == ADDRESS) {
|
if (pocsag_state.out_type == ADDRESS) {
|
||||||
// Address only
|
// Address only
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
#include "ui_navigation.hpp"
|
#include "ui_navigation.hpp"
|
||||||
#include "ui_receiver.hpp"
|
#include "ui_receiver.hpp"
|
||||||
#include "ui_rssi.hpp"
|
#include "ui_rssi.hpp"
|
||||||
//#include "ui_channel.hpp"
|
|
||||||
|
|
||||||
#include "event_m0.hpp"
|
#include "event_m0.hpp"
|
||||||
|
|
||||||
@ -103,20 +102,20 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
Button button_setfreq {
|
Button button_setfreq {
|
||||||
{ 0, 20, 12 * 8, 20 },
|
{ 0, 20, 11 * 8, 20 },
|
||||||
"----.----"
|
"----.----"
|
||||||
};
|
};
|
||||||
OptionsField options_bitrate {
|
OptionsField options_bitrate {
|
||||||
{ 13 * 8, 22 },
|
{ 12 * 8, 22 },
|
||||||
8,
|
7,
|
||||||
{
|
{
|
||||||
{ "512 bps ", 0 },
|
{ "512bps ", 0 },
|
||||||
{ "1200 bps", 1 },
|
{ "1200bps", 1 },
|
||||||
{ "2400 bps", 2 }
|
{ "2400bps", 2 }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Checkbox check_log {
|
Checkbox check_log {
|
||||||
{ 22 * 8, 22 },
|
{ 20 * 8, 22 },
|
||||||
3,
|
3,
|
||||||
"LOG",
|
"LOG",
|
||||||
true
|
true
|
||||||
|
@ -90,7 +90,7 @@ void NumbersStationView::prepare_audio() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!pause) {
|
if (!pause) {
|
||||||
size_t bytes_read = reader->read(audio_buffer, 1024);
|
auto bytes_read = reader->read(audio_buffer, 1024).value();
|
||||||
|
|
||||||
// Unsigned to signed, pretty stupid :/
|
// Unsigned to signed, pretty stupid :/
|
||||||
for (size_t n = 0; n < bytes_read; n++)
|
for (size_t n = 0; n < bytes_read; n++)
|
||||||
|
@ -131,7 +131,9 @@ POCSAGTXView::POCSAGTXView(
|
|||||||
NavigationView& nav
|
NavigationView& nav
|
||||||
) : nav_ (nav)
|
) : nav_ (nav)
|
||||||
{
|
{
|
||||||
|
uint32_t reload_address;
|
||||||
|
uint32_t c;
|
||||||
|
|
||||||
baseband::run_image(portapack::spi_flash::image_tag_fsktx);
|
baseband::run_image(portapack::spi_flash::image_tag_fsktx);
|
||||||
|
|
||||||
add_children({
|
add_children({
|
||||||
@ -146,7 +148,14 @@ POCSAGTXView::POCSAGTXView(
|
|||||||
});
|
});
|
||||||
|
|
||||||
options_bitrate.set_selected_index(1); // 1200bps
|
options_bitrate.set_selected_index(1); // 1200bps
|
||||||
options_type.set_selected_index(2); // Alphanumeric
|
options_type.set_selected_index(0); // Address only
|
||||||
|
|
||||||
|
// TODO: set_value for whole symfield
|
||||||
|
reload_address = portapack::persistent_memory::pocsag_address();
|
||||||
|
for (c = 0; c < 7; c++) {
|
||||||
|
field_address.set_value(6 - c, reload_address % 10);
|
||||||
|
reload_address /= 10;
|
||||||
|
}
|
||||||
|
|
||||||
button_message.on_select = [this, &nav](Button&) {
|
button_message.on_select = [this, &nav](Button&) {
|
||||||
this->on_set_text(nav);
|
this->on_set_text(nav);
|
||||||
|
@ -75,15 +75,15 @@ void SoundBoardView::prepare_audio() {
|
|||||||
|
|
||||||
pbar.set_value(sample_counter);
|
pbar.set_value(sample_counter);
|
||||||
|
|
||||||
size_t bytes_read = reader->read(audio_buffer, 1024);
|
auto bytes_read = reader->read(audio_buffer, 512).value();
|
||||||
|
|
||||||
// Unsigned to signed, pretty stupid :/
|
// Unsigned to signed, pretty stupid :/
|
||||||
for (size_t n = 0; n < bytes_read; n++)
|
for (size_t n = 0; n < bytes_read; n++)
|
||||||
audio_buffer[n] -= 0x80;
|
audio_buffer[n] -= 0x80;
|
||||||
for (size_t n = bytes_read; n < 1024; n++)
|
for (size_t n = bytes_read; n < 512; n++)
|
||||||
audio_buffer[n] = 0;
|
audio_buffer[n] = 0;
|
||||||
|
|
||||||
sample_counter += 1024;
|
sample_counter += 512;
|
||||||
|
|
||||||
baseband::set_fifo_data(audio_buffer);
|
baseband::set_fifo_data(audio_buffer);
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ private:
|
|||||||
uint32_t max_sound { };
|
uint32_t max_sound { };
|
||||||
uint8_t max_page { };
|
uint8_t max_page { };
|
||||||
|
|
||||||
int8_t audio_buffer[1024];
|
int8_t audio_buffer[512];
|
||||||
|
|
||||||
Style style_a {
|
Style style_a {
|
||||||
.font = font::fixed_8x16,
|
.font = font::fixed_8x16,
|
||||||
|
@ -88,7 +88,7 @@ private:
|
|||||||
bool transmitting_ { false };
|
bool transmitting_ { false };
|
||||||
|
|
||||||
FrequencyField field_frequency {
|
FrequencyField field_frequency {
|
||||||
{ 0 * 8, 1 * 8 }
|
{ 4, 1 * 8 }
|
||||||
};
|
};
|
||||||
|
|
||||||
Text text_gain {
|
Text text_gain {
|
||||||
|
@ -34,7 +34,6 @@ void AudioTXProcessor::execute(const buffer_c8_t& buffer){
|
|||||||
|
|
||||||
if (!configured) return;
|
if (!configured) return;
|
||||||
|
|
||||||
//ai = 0;
|
|
||||||
for (size_t i = 0; i<buffer.count; i++) {
|
for (size_t i = 0; i<buffer.count; i++) {
|
||||||
|
|
||||||
// Audio preview sample generation @ 1536000/divider
|
// Audio preview sample generation @ 1536000/divider
|
||||||
@ -44,7 +43,7 @@ void AudioTXProcessor::execute(const buffer_c8_t& buffer){
|
|||||||
sample = (int32_t)out_sample;
|
sample = (int32_t)out_sample;
|
||||||
//preview_audio_buffer.p[ai++] = sample << 8;
|
//preview_audio_buffer.p[ai++] = sample << 8;
|
||||||
|
|
||||||
if ((audio_fifo.len() < 1024) && (asked == false)) {
|
if ((audio_fifo.len() < 512) && (asked == false)) {
|
||||||
// Ask application to fill up fifo
|
// Ask application to fill up fifo
|
||||||
sigmessage.signaltype = 1;
|
sigmessage.signaltype = 1;
|
||||||
shared_memory.application_queue.push(sigmessage);
|
shared_memory.application_queue.push(sigmessage);
|
||||||
@ -92,7 +91,7 @@ void AudioTXProcessor::on_message(const Message* const msg) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Message::ID::FIFOData:
|
case Message::ID::FIFOData:
|
||||||
audio_fifo.in(static_cast<const FIFODataMessage*>(msg)->data, 1024);
|
audio_fifo.in(static_cast<const FIFODataMessage*>(msg)->data, 512);
|
||||||
asked = false;
|
asked = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -77,6 +77,8 @@ struct data_t {
|
|||||||
uint32_t playdead_sequence;
|
uint32_t playdead_sequence;
|
||||||
|
|
||||||
uint32_t ui_config;
|
uint32_t ui_config;
|
||||||
|
|
||||||
|
uint32_t pocsag_address;
|
||||||
};
|
};
|
||||||
|
|
||||||
static_assert(sizeof(data_t) <= backup_ram.size(), "Persistent memory structure too large for VBAT-maintained region");
|
static_assert(sizeof(data_t) <= backup_ram.size(), "Persistent memory structure too large for VBAT-maintained region");
|
||||||
@ -239,5 +241,13 @@ void set_ui_config(const uint32_t new_value) {
|
|||||||
data->ui_config = new_value;
|
data->ui_config = new_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t pocsag_address() {
|
||||||
|
return data->pocsag_address;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_pocsag_address(uint32_t address) {
|
||||||
|
data->pocsag_address = address;
|
||||||
|
}
|
||||||
|
|
||||||
} /* namespace persistent_memory */
|
} /* namespace persistent_memory */
|
||||||
} /* namespace portapack */
|
} /* namespace portapack */
|
||||||
|
@ -76,6 +76,9 @@ uint16_t ui_config_bloff();
|
|||||||
uint8_t ui_config_textentry();
|
uint8_t ui_config_textentry();
|
||||||
void set_config_textentry(uint8_t new_value);
|
void set_config_textentry(uint8_t new_value);
|
||||||
|
|
||||||
|
uint32_t pocsag_address();
|
||||||
|
void set_pocsag_address(uint32_t address);
|
||||||
|
|
||||||
} /* namespace persistent_memory */
|
} /* namespace persistent_memory */
|
||||||
} /* namespace portapack */
|
} /* namespace portapack */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user