mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2025-01-10 07:53:37 +00:00
Setfreq usb command (#2235)
* SetFreq usb command for rx apps * code format, better check
This commit is contained in:
parent
a2c4fefe34
commit
02b75f567a
@ -435,4 +435,7 @@ void AnalogAudioView::handle_coded_squelch(uint32_t value) {
|
|||||||
text_ctcss.set(tone_key_string_by_value(value, text_ctcss.parent_rect().width() / 8));
|
text_ctcss.set(tone_key_string_by_value(value, text_ctcss.parent_rect().width() / 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AnalogAudioView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
} /* namespace ui */
|
} /* namespace ui */
|
||||||
|
@ -247,12 +247,21 @@ class AnalogAudioView : public View {
|
|||||||
|
|
||||||
void handle_coded_squelch(uint32_t value);
|
void handle_coded_squelch(uint32_t value);
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
|
|
||||||
MessageHandlerRegistration message_handler_coded_squelch{
|
MessageHandlerRegistration message_handler_coded_squelch{
|
||||||
Message::ID::CodedSquelch,
|
Message::ID::CodedSquelch,
|
||||||
[this](const Message* p) {
|
[this](const Message* p) {
|
||||||
const auto message = *reinterpret_cast<const CodedSquelchMessage*>(p);
|
const auto message = *reinterpret_cast<const CodedSquelchMessage*>(p);
|
||||||
this->handle_coded_squelch(message.value);
|
this->handle_coded_squelch(message.value);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
};
|
};
|
||||||
|
|
||||||
} /* namespace ui */
|
} /* namespace ui */
|
||||||
|
@ -128,4 +128,8 @@ void CaptureAppView::focus() {
|
|||||||
record_view.focus();
|
record_view.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CaptureAppView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
|
|
||||||
} /* namespace ui */
|
} /* namespace ui */
|
||||||
|
@ -108,6 +108,15 @@ class CaptureAppView : public View {
|
|||||||
3};
|
3};
|
||||||
|
|
||||||
spectrum::WaterfallView waterfall{};
|
spectrum::WaterfallView waterfall{};
|
||||||
|
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
};
|
};
|
||||||
|
|
||||||
} /* namespace ui */
|
} /* namespace ui */
|
||||||
|
@ -178,4 +178,8 @@ void ERTAppView::on_show_list() {
|
|||||||
recent_entries_view.focus();
|
recent_entries_view.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ERTAppView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
|
|
||||||
} /* namespace ui */
|
} /* namespace ui */
|
||||||
|
@ -176,6 +176,14 @@ class ERTAppView : public View {
|
|||||||
this->on_packet(packet);
|
this->on_packet(packet);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
void on_packet(const ert::Packet& packet);
|
void on_packet(const ert::Packet& packet);
|
||||||
void on_show_list();
|
void on_show_list();
|
||||||
};
|
};
|
||||||
|
@ -321,6 +321,10 @@ void POCSAGAppView::on_stats(const POCSAGStatsMessage* stats) {
|
|||||||
widget_frames.set_sync(stats->has_sync);
|
widget_frames.set_sync(stats->has_sync);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void POCSAGAppView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
|
|
||||||
void BaudIndicator::paint(Painter& painter) {
|
void BaudIndicator::paint(Painter& painter) {
|
||||||
auto p = screen_pos();
|
auto p = screen_pos();
|
||||||
char top = '-';
|
char top = '-';
|
||||||
|
@ -292,6 +292,15 @@ class POCSAGAppView : public View {
|
|||||||
Console console{
|
Console console{
|
||||||
{0, 2 * 16 + 6, screen_width, screen_height - 54}};
|
{0, 2 * 16 + 6, screen_width, screen_height - 54}};
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
|
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
|
|
||||||
MessageHandlerRegistration message_handler_packet{
|
MessageHandlerRegistration message_handler_packet{
|
||||||
Message::ID::POCSAGPacket,
|
Message::ID::POCSAGPacket,
|
||||||
[this](Message* const p) {
|
[this](Message* const p) {
|
||||||
|
@ -122,6 +122,10 @@ APRSRxView::APRSRxView(NavigationView& nav, Rect parent_rect)
|
|||||||
receiver_model.enable();
|
receiver_model.enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void APRSRxView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
|
|
||||||
void APRSRxView::on_packet(const APRSPacketMessage* message) {
|
void APRSRxView::on_packet(const APRSPacketMessage* message) {
|
||||||
std::string str_console = "\x1B";
|
std::string str_console = "\x1B";
|
||||||
|
|
||||||
|
@ -185,6 +185,7 @@ class APRSRxView : public View {
|
|||||||
|
|
||||||
std::string title() const override { return "APRS RX"; };
|
std::string title() const override { return "APRS RX"; };
|
||||||
void on_packet(const APRSPacketMessage* message);
|
void on_packet(const APRSPacketMessage* message);
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void on_data(uint32_t value, bool is_data);
|
void on_data(uint32_t value, bool is_data);
|
||||||
@ -271,6 +272,13 @@ class APRSRXView : public View {
|
|||||||
this->view_stream.on_packet(message);
|
this->view_stream.on_packet(message);
|
||||||
this->view_table.on_pkt(message);
|
this->view_table.on_pkt(message);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->view_stream.on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
};
|
};
|
||||||
|
|
||||||
} /* namespace ui */
|
} /* namespace ui */
|
||||||
|
@ -323,4 +323,9 @@ void LevelView::handle_coded_squelch(const uint32_t value) {
|
|||||||
text_ctcss.set(" ");
|
text_ctcss.set(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LevelView::on_freqchg(int64_t freq) {
|
||||||
|
receiver_model.set_target_frequency(freq);
|
||||||
|
button_frequency.set_text("<" + to_string_short_freq(freq) + " MHz>");
|
||||||
|
}
|
||||||
|
|
||||||
} /* namespace ui */
|
} /* namespace ui */
|
||||||
|
@ -188,6 +188,15 @@ class LevelView : public View {
|
|||||||
|
|
||||||
void handle_coded_squelch(const uint32_t value);
|
void handle_coded_squelch(const uint32_t value);
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
|
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
|
|
||||||
MessageHandlerRegistration message_handler_coded_squelch{
|
MessageHandlerRegistration message_handler_coded_squelch{
|
||||||
Message::ID::CodedSquelch,
|
Message::ID::CodedSquelch,
|
||||||
[this](const Message* const p) {
|
[this](const Message* const p) {
|
||||||
|
@ -187,4 +187,8 @@ void SondeView::on_packet(const sonde::Packet& packet) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SondeView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
|
|
||||||
} /* namespace ui */
|
} /* namespace ui */
|
||||||
|
@ -195,6 +195,14 @@ class SondeView : public View {
|
|||||||
const auto message = static_cast<const OrientationDataMessage*>(p);
|
const auto message = static_cast<const OrientationDataMessage*>(p);
|
||||||
this->on_orientation(message);
|
this->on_orientation(message);
|
||||||
}};
|
}};
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
|
|
||||||
void on_gps(const GPSPosDataMessage* msg);
|
void on_gps(const GPSPosDataMessage* msg);
|
||||||
void on_orientation(const OrientationDataMessage* msg);
|
void on_orientation(const OrientationDataMessage* msg);
|
||||||
|
@ -224,6 +224,10 @@ std::string SubGhzDView::pad_string_with_spaces(int snakes) {
|
|||||||
return paddedStr;
|
return paddedStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SubGhzDView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
void RecentEntriesTable<ui::SubGhzDRecentEntries>::draw(
|
void RecentEntriesTable<ui::SubGhzDRecentEntries>::draw(
|
||||||
const Entry& entry,
|
const Entry& entry,
|
||||||
|
@ -127,6 +127,14 @@ class SubGhzDView : public View {
|
|||||||
}};
|
}};
|
||||||
SubGhzDRecentEntriesView recent_entries_view{columns, recent};
|
SubGhzDRecentEntriesView recent_entries_view{columns, recent};
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
|
|
||||||
MessageHandlerRegistration message_handler_packet{
|
MessageHandlerRegistration message_handler_packet{
|
||||||
Message::ID::SubGhzDData,
|
Message::ID::SubGhzDData,
|
||||||
[this](Message* const p) {
|
[this](Message* const p) {
|
||||||
|
@ -220,6 +220,10 @@ std::string WeatherView::pad_string_with_spaces(int snakes) {
|
|||||||
return paddedStr;
|
return paddedStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WeatherView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
void RecentEntriesTable<ui::WeatherRecentEntries>::draw(
|
void RecentEntriesTable<ui::WeatherRecentEntries>::draw(
|
||||||
const Entry& entry,
|
const Entry& entry,
|
||||||
|
@ -151,6 +151,14 @@ class WeatherView : public View {
|
|||||||
}};
|
}};
|
||||||
WeatherRecentEntriesView recent_entries_view{columns, recent};
|
WeatherRecentEntriesView recent_entries_view{columns, recent};
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
|
|
||||||
MessageHandlerRegistration message_handler_packet{
|
MessageHandlerRegistration message_handler_packet{
|
||||||
Message::ID::WeatherData,
|
Message::ID::WeatherData,
|
||||||
[this](Message* const p) {
|
[this](Message* const p) {
|
||||||
|
@ -143,6 +143,10 @@ void AFSKRxView::on_data(uint32_t value, bool is_data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AFSKRxView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
|
|
||||||
AFSKRxView::~AFSKRxView() {
|
AFSKRxView::~AFSKRxView() {
|
||||||
audio::output::stop();
|
audio::output::stop();
|
||||||
receiver_model.disable();
|
receiver_model.disable();
|
||||||
|
@ -117,6 +117,15 @@ class AFSKRxView : public View {
|
|||||||
const auto message = static_cast<const AFSKDataMessage*>(p);
|
const auto message = static_cast<const AFSKDataMessage*>(p);
|
||||||
this->on_data(message->value, message->is_data);
|
this->on_data(message->value, message->is_data);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ui::external_app::afsk_rx
|
} // namespace ui::external_app::afsk_rx
|
||||||
|
@ -202,4 +202,8 @@ void AnalogTvView::update_modulation(const ReceiverModel::Mode modulation) {
|
|||||||
receiver_model.enable();
|
receiver_model.enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AnalogTvView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ui::external_app::analogtv
|
} // namespace ui::external_app::analogtv
|
||||||
|
@ -108,6 +108,15 @@ class AnalogTvView : public View {
|
|||||||
void set_options_widget(std::unique_ptr<Widget> new_widget);
|
void set_options_widget(std::unique_ptr<Widget> new_widget);
|
||||||
|
|
||||||
void update_modulation(const ReceiverModel::Mode modulation);
|
void update_modulation(const ReceiverModel::Mode modulation);
|
||||||
|
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ui::external_app::analogtv
|
} // namespace ui::external_app::analogtv
|
||||||
|
@ -103,4 +103,8 @@ void FoxhuntRxView::on_orientation(const OrientationDataMessage* msg) {
|
|||||||
geomap.update_my_orientation(msg->angle, true);
|
geomap.update_my_orientation(msg->angle, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FoxhuntRxView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ui::external_app::foxhunt_rx
|
} // namespace ui::external_app::foxhunt_rx
|
||||||
|
@ -103,6 +103,14 @@ class FoxhuntRxView : public View {
|
|||||||
[this](const Message* const p) {
|
[this](const Message* const p) {
|
||||||
this->on_statistics_update(static_cast<const ChannelStatisticsMessage*>(p)->statistics);
|
this->on_statistics_update(static_cast<const ChannelStatisticsMessage*>(p)->statistics);
|
||||||
}};
|
}};
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
|
|
||||||
float my_lat = 200;
|
float my_lat = 200;
|
||||||
float my_lon = 200;
|
float my_lon = 200;
|
||||||
|
@ -125,6 +125,10 @@ void NRFRxView::on_data(uint32_t value, bool is_data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NRFRxView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
|
|
||||||
NRFRxView::~NRFRxView() {
|
NRFRxView::~NRFRxView() {
|
||||||
audio::output::stop();
|
audio::output::stop();
|
||||||
receiver_model.disable();
|
receiver_model.disable();
|
||||||
|
@ -89,6 +89,15 @@ class NRFRxView : public View {
|
|||||||
const auto message = static_cast<const AFSKDataMessage*>(p);
|
const auto message = static_cast<const AFSKDataMessage*>(p);
|
||||||
this->on_data(message->value, message->is_data);
|
this->on_data(message->value, message->is_data);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
};
|
};
|
||||||
|
|
||||||
} /* namespace ui::external_app::nrf_rx */
|
} /* namespace ui::external_app::nrf_rx */
|
||||||
|
@ -186,6 +186,10 @@ void ProtoView::on_data(const ProtoViewDataMessage* message) {
|
|||||||
draw2();
|
draw2();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ProtoView::on_freqchg(int64_t freq) {
|
||||||
|
field_frequency.set_value(freq);
|
||||||
|
}
|
||||||
|
|
||||||
ProtoView::~ProtoView() {
|
ProtoView::~ProtoView() {
|
||||||
audio::output::stop();
|
audio::output::stop();
|
||||||
receiver_model.disable();
|
receiver_model.disable();
|
||||||
|
@ -157,6 +157,15 @@ class ProtoView : public View {
|
|||||||
[this](const Message* const) {
|
[this](const Message* const) {
|
||||||
this->on_timer();
|
this->on_timer();
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
MessageHandlerRegistration message_handler_freqchg{
|
||||||
|
Message::ID::FreqChangeCommand,
|
||||||
|
[this](Message* const p) {
|
||||||
|
const auto message = static_cast<const FreqChangeCommandMessage*>(p);
|
||||||
|
this->on_freqchg(message->freq);
|
||||||
|
}};
|
||||||
|
|
||||||
|
void on_freqchg(int64_t freq);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ui::external_app::protoview
|
} // namespace ui::external_app::protoview
|
||||||
|
@ -1147,6 +1147,23 @@ static void cmd_asyncmsg(BaseSequentialStream* chp, int argc, char* argv[]) {
|
|||||||
chprintf(chp, usage);
|
chprintf(chp, usage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static void cmd_setfreq(BaseSequentialStream* chp, int argc, char* argv[]) {
|
||||||
|
const char* usage = "usage: setfreq freq_in_hz\r\n";
|
||||||
|
if (argc != 1) {
|
||||||
|
chprintf(chp, usage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int64_t freq = atol(argv[0]);
|
||||||
|
|
||||||
|
if (freq <= 0) {
|
||||||
|
chprintf(chp, usage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// radio::set_tuning_frequency(freq); // sadly this doesn't update any widget, just change the frequency.
|
||||||
|
FreqChangeCommandMessage message{freq};
|
||||||
|
EventDispatcher::send_message(message);
|
||||||
|
chprintf(chp, "ok\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
static const ShellCommand commands[] = {
|
static const ShellCommand commands[] = {
|
||||||
{"reboot", cmd_reboot},
|
{"reboot", cmd_reboot},
|
||||||
@ -1180,6 +1197,7 @@ static const ShellCommand commands[] = {
|
|||||||
{"settingsreset", cmd_settingsreset},
|
{"settingsreset", cmd_settingsreset},
|
||||||
{"sendpocsag", cmd_sendpocsag},
|
{"sendpocsag", cmd_sendpocsag},
|
||||||
{"asyncmsg", cmd_asyncmsg},
|
{"asyncmsg", cmd_asyncmsg},
|
||||||
|
{"setfreq", cmd_setfreq},
|
||||||
{NULL, NULL}};
|
{NULL, NULL}};
|
||||||
|
|
||||||
static const ShellConfig shell_cfg1 = {
|
static const ShellConfig shell_cfg1 = {
|
||||||
|
@ -125,6 +125,7 @@ class Message {
|
|||||||
PocsagTosend = 67,
|
PocsagTosend = 67,
|
||||||
BatteryStateData = 68,
|
BatteryStateData = 68,
|
||||||
ProtoViewData = 69,
|
ProtoViewData = 69,
|
||||||
|
FreqChangeCommand = 70,
|
||||||
MAX
|
MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1427,4 +1428,11 @@ class ProtoViewDataMessage : public Message {
|
|||||||
const uint16_t maxptr = 99;
|
const uint16_t maxptr = 99;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class FreqChangeCommandMessage : public Message {
|
||||||
|
public:
|
||||||
|
constexpr FreqChangeCommandMessage(int64_t freq)
|
||||||
|
: Message{ID::FreqChangeCommand}, freq{freq} {}
|
||||||
|
int64_t freq = 0;
|
||||||
|
};
|
||||||
|
|
||||||
#endif /*__MESSAGE_H__*/
|
#endif /*__MESSAGE_H__*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user