mirror of
https://github.com/eried/portapack-mayhem.git
synced 2025-06-09 07:32:47 -04:00
AudioTX, fixed about screen and an LCR address list bug
This commit is contained in:
parent
6c0102abd4
commit
c2fbc0c8d5
9 changed files with 31 additions and 26 deletions
|
@ -106,6 +106,13 @@ void set_audiotx_data(const uint32_t bw) {
|
||||||
send_message(&message);
|
send_message(&message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void set_fifo_data(const int8_t * data) {
|
||||||
|
const FIFODataMessage message {
|
||||||
|
data
|
||||||
|
};
|
||||||
|
send_message(&message);
|
||||||
|
}
|
||||||
|
|
||||||
void set_pwmrssi(int32_t avg, bool enabled) {
|
void set_pwmrssi(int32_t avg, bool enabled) {
|
||||||
const PWMRSSIConfigureMessage message {
|
const PWMRSSIConfigureMessage message {
|
||||||
enabled,
|
enabled,
|
||||||
|
|
|
@ -54,6 +54,7 @@ struct WFMConfig {
|
||||||
|
|
||||||
void set_ccir_data( const uint32_t samples_per_tone, const uint16_t tone_count);
|
void set_ccir_data( const uint32_t samples_per_tone, const uint16_t tone_count);
|
||||||
void set_audiotx_data(const uint32_t bw);
|
void set_audiotx_data(const uint32_t bw);
|
||||||
|
void set_fifo_data(const int8_t * data);
|
||||||
void set_pwmrssi(int32_t avg, bool enabled);
|
void set_pwmrssi(int32_t avg, bool enabled);
|
||||||
void set_afsk_data(const uint32_t afsk_samples_per_bit, const uint32_t afsk_phase_inc_mark, const uint32_t afsk_phase_inc_space,
|
void set_afsk_data(const uint32_t afsk_samples_per_bit, const uint32_t afsk_phase_inc_mark, const uint32_t afsk_phase_inc_space,
|
||||||
const uint8_t afsk_repeat, const uint32_t afsk_bw, const bool afsk_alt_format);
|
const uint8_t afsk_repeat, const uint32_t afsk_bw, const bool afsk_alt_format);
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
#include "portapack.hpp"
|
#include "portapack.hpp"
|
||||||
#include "audio.hpp"
|
#include "audio.hpp"
|
||||||
#include "event_m0.hpp"
|
#include "event_m0.hpp"
|
||||||
#include "baseband_api.hpp"
|
|
||||||
|
|
||||||
#include "ui_about.hpp"
|
#include "ui_about.hpp"
|
||||||
#include "touch.hpp"
|
#include "touch.hpp"
|
||||||
|
@ -318,7 +317,7 @@ void AboutView::render_audio() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ym_buffer[ym_render_cnt] = (ym_out * 2) - 93;
|
ym_buffer[ym_render_cnt] = (ym_out * 2) - 45;
|
||||||
|
|
||||||
if (ym_sample_cnt < 960) {
|
if (ym_sample_cnt < 960) {
|
||||||
ym_sample_cnt++;
|
ym_sample_cnt++;
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "ui_menu.hpp"
|
#include "ui_menu.hpp"
|
||||||
#include "ui_navigation.hpp"
|
#include "ui_navigation.hpp"
|
||||||
#include "transmitter_model.hpp"
|
#include "transmitter_model.hpp"
|
||||||
|
#include "baseband_api.hpp"
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
|
@ -156,12 +157,10 @@ private:
|
||||||
MessageHandlerRegistration message_handler_fifo_signal {
|
MessageHandlerRegistration message_handler_fifo_signal {
|
||||||
Message::ID::FIFOSignal,
|
Message::ID::FIFOSignal,
|
||||||
[this](const Message* const p) {
|
[this](const Message* const p) {
|
||||||
FIFODataMessage datamessage;
|
|
||||||
const auto message = static_cast<const FIFOSignalMessage*>(p);
|
const auto message = static_cast<const FIFOSignalMessage*>(p);
|
||||||
if (message->signaltype == 1) {
|
if (message->signaltype == 1) {
|
||||||
this->render_audio();
|
this->render_audio();
|
||||||
datamessage.data = ym_buffer;
|
baseband::set_fifo_data(ym_buffer);
|
||||||
EventDispatcher::send_message(datamessage);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -46,7 +46,7 @@ private:
|
||||||
|
|
||||||
const scan_list_t scan_list[2] = {
|
const scan_list_t scan_list[2] = {
|
||||||
{ 36, &RGSB_list_Lille[0][0] },
|
{ 36, &RGSB_list_Lille[0][0] },
|
||||||
{ 23, &RGSB_list_Reims[0][0] }
|
{ 20, &RGSB_list_Reims[0][0] }
|
||||||
};
|
};
|
||||||
|
|
||||||
const char RGSB_list_Lille[36][5] = {
|
const char RGSB_list_Lille[36][5] = {
|
||||||
|
@ -62,7 +62,7 @@ private:
|
||||||
"EbS0"
|
"EbS0"
|
||||||
};
|
};
|
||||||
|
|
||||||
const char RGSB_list_Reims[23][5] = {
|
const char RGSB_list_Reims[20][5] = {
|
||||||
"AI10", "AI20", "AI30", "AI40",
|
"AI10", "AI20", "AI30", "AI40",
|
||||||
"AI50", "AI60", "AI70",
|
"AI50", "AI60", "AI70",
|
||||||
"AJ10", "AJ20", "AJ30", "AJ40",
|
"AJ10", "AJ20", "AJ30", "AJ40",
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
#include "proc_audiotx.hpp"
|
#include "proc_audiotx.hpp"
|
||||||
#include "portapack_shared_memory.hpp"
|
#include "portapack_shared_memory.hpp"
|
||||||
#include "sine_table.hpp"
|
#include "sine_table_int8.hpp"
|
||||||
//#include "audio_output.hpp"
|
//#include "audio_output.hpp"
|
||||||
#include "event_m4.hpp"
|
#include "event_m4.hpp"
|
||||||
|
|
||||||
|
@ -37,33 +37,30 @@ void AudioTXProcessor::execute(const buffer_c8_t& buffer){
|
||||||
ai = 0;
|
ai = 0;
|
||||||
for (size_t i = 0; i<buffer.count; i++) {
|
for (size_t i = 0; i<buffer.count; i++) {
|
||||||
|
|
||||||
//audio_fifo.out(&sample, 1);
|
|
||||||
|
|
||||||
// Audio preview sample generation: 1536000/48000 = 32
|
// Audio preview sample generation: 1536000/48000 = 32
|
||||||
if (as >= 31) {
|
if (as >= 31) {
|
||||||
as = 0;
|
as = 0;
|
||||||
//audio_fifo.out(&sample, 1);
|
audio_fifo.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() < 1024) && (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);
|
||||||
asked = true;
|
asked = true;
|
||||||
//}
|
}
|
||||||
} else {
|
} else {
|
||||||
as++;
|
as++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// FM
|
// FM
|
||||||
frq = (int32_t)(sample) * 4 * 2000;
|
frq = sample * 8000;
|
||||||
|
|
||||||
phase = (phase + frq);
|
phase = (phase + frq);
|
||||||
sphase = phase + (256 << 16);
|
sphase = phase + (64 << 18);
|
||||||
|
|
||||||
re = (sine_table_f32[(sphase & 0x03FF0000)>>18]*127);
|
re = (sine_table_i8[(sphase & 0x03FC0000) >> 18]);
|
||||||
im = (sine_table_f32[(phase & 0x03FF0000)>>18]*127);
|
im = (sine_table_i8[(phase & 0x03FC0000) >> 18]);
|
||||||
|
|
||||||
buffer.p[i] = {(int8_t)re, (int8_t)im};
|
buffer.p[i] = {(int8_t)re, (int8_t)im};
|
||||||
}
|
}
|
||||||
|
@ -79,7 +76,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, 1024);
|
||||||
asked = false;
|
asked = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
#include "fifo.hpp"
|
#include "fifo.hpp"
|
||||||
#include "baseband_processor.hpp"
|
#include "baseband_processor.hpp"
|
||||||
|
#include "baseband_thread.hpp"
|
||||||
|
|
||||||
class AudioTXProcessor : public BasebandProcessor {
|
class AudioTXProcessor : public BasebandProcessor {
|
||||||
public:
|
public:
|
||||||
|
@ -35,15 +36,15 @@ public:
|
||||||
private:
|
private:
|
||||||
bool configured = false;
|
bool configured = false;
|
||||||
|
|
||||||
//std::unique_ptr<int8_t[]> audio_fifo_data = std::make_unique<int8_t[]>(1UL << 11);
|
BasebandThread baseband_thread { 1536000, this, NORMALPRIO + 20, baseband::Direction::Transmit };
|
||||||
//FIFO<int8_t> audio_fifo = { audio_fifo_data.get(), 11 }; // 43ms @ 48000Hz
|
|
||||||
|
int8_t audio_fifo_data[2048];
|
||||||
|
FIFO<int8_t> audio_fifo = { audio_fifo_data, 11 }; // 43ms @ 48000Hz
|
||||||
|
|
||||||
uint8_t as = 0, ai;
|
uint8_t as = 0, ai;
|
||||||
int8_t re, im;
|
int8_t re, im;
|
||||||
int8_t sample;
|
int8_t sample;
|
||||||
|
|
||||||
int16_t st;
|
|
||||||
|
|
||||||
bool asked = false;
|
bool asked = false;
|
||||||
|
|
||||||
//int16_t audio_data[64];
|
//int16_t audio_data[64];
|
||||||
|
|
|
@ -616,12 +616,13 @@ public:
|
||||||
class FIFODataMessage : public Message {
|
class FIFODataMessage : public Message {
|
||||||
public:
|
public:
|
||||||
constexpr FIFODataMessage(
|
constexpr FIFODataMessage(
|
||||||
|
const int8_t * data
|
||||||
) : Message { ID::FIFOData },
|
) : Message { ID::FIFOData },
|
||||||
data ( nullptr )
|
data ( data )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t * data;
|
const int8_t * data;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CaptureThreadDoneMessage : public Message {
|
class CaptureThreadDoneMessage : public Message {
|
||||||
|
|
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue