mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2025-12-02 21:01:47 +00:00
Change IPC to exchange data, not pointers.
This commit is contained in:
@@ -116,11 +116,12 @@ private:
|
||||
|
||||
void handle_application_queue() {
|
||||
while( !shared_memory.application_queue.is_empty() ) {
|
||||
auto message = shared_memory.application_queue.pop();
|
||||
|
||||
context.message_map.send(message);
|
||||
|
||||
message->state = Message::State::Free;
|
||||
std::array<uint8_t, Message::MAX_SIZE> message_buffer;
|
||||
const Message* const message = reinterpret_cast<Message*>(message_buffer.data());
|
||||
const auto message_size = shared_memory.application_queue.pop(message_buffer.data(), message_buffer.size());
|
||||
if( message_size ) {
|
||||
context.message_map.send(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -147,8 +147,7 @@ void ReceiverModel::disable() {
|
||||
.decimation_factor = 1,
|
||||
}
|
||||
};
|
||||
shared_memory.baseband_queue.push(&message);
|
||||
while( !message.is_free() );
|
||||
shared_memory.baseband_queue.push(message);
|
||||
|
||||
radio::disable();
|
||||
}
|
||||
@@ -187,10 +186,7 @@ void ReceiverModel::update_baseband_configuration() {
|
||||
radio::set_baseband_decimation_by(baseband_oversampling());
|
||||
|
||||
BasebandConfigurationMessage message { baseband_configuration };
|
||||
shared_memory.baseband_queue.push(&message);
|
||||
|
||||
// Block until message is consumed, since we allocated it on the stack.
|
||||
while( !message.is_free() );
|
||||
shared_memory.baseband_queue.push(message);
|
||||
|
||||
if( baseband_configuration.mode == 3 ) {
|
||||
update_fsk_configuration();
|
||||
@@ -222,8 +218,5 @@ static constexpr FSKConfiguration fsk_configuration_tpms_a = {
|
||||
|
||||
void ReceiverModel::update_fsk_configuration() {
|
||||
FSKConfigurationMessage message { fsk_configuration_ais };
|
||||
shared_memory.baseband_queue.push(&message);
|
||||
|
||||
// Block until message is consumed, since we allocated it on the stack.
|
||||
while( !message.is_free() );
|
||||
shared_memory.baseband_queue.push(message);
|
||||
}
|
||||
|
||||
@@ -201,16 +201,15 @@ public:
|
||||
const ChannelSpectrum& spectrum
|
||||
) {
|
||||
/* TODO: static_assert that message.spectrum.db.size() >= pixel_row.size() */
|
||||
const auto& db = *spectrum.db;
|
||||
|
||||
std::array<Color, 240> pixel_row;
|
||||
for(size_t i=0; i<120; i++) {
|
||||
const auto pixel_color = spectrum_rgb3_lut[db[256 - 120 + i]];
|
||||
const auto pixel_color = spectrum_rgb3_lut[spectrum.db[256 - 120 + i]];
|
||||
pixel_row[i] = pixel_color;
|
||||
}
|
||||
|
||||
for(size_t i=120; i<240; i++) {
|
||||
const auto pixel_color = spectrum_rgb3_lut[db[i - 120]];
|
||||
const auto pixel_color = spectrum_rgb3_lut[spectrum.db[i - 120]];
|
||||
pixel_row[i] = pixel_color;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user