20
20
* Boston, MA 02110-1301, USA.
21
21
*/
22
22
23
- #include " acars_app.hpp"
24
-
25
23
#include " baseband_api.hpp"
26
24
#include " portapack_persistent_memory.hpp"
27
25
#include " file_path.hpp"
26
+ #include " audio.hpp"
28
27
28
+ #include " acars_app.hpp"
29
29
using namespace portapack ;
30
- using namespace acars ;
31
30
32
31
#include " string_format.hpp"
33
32
#include " utility.hpp"
34
33
35
- void ACARSLogger::log_raw_data (const acars::Packet& packet, const uint32_t frequency) {
36
- (void )frequency;
37
- std::string entry{}; // = "Raw: F:" + to_string_dec_uint(frequency) + "Hz ";
38
- entry.reserve (256 );
39
-
40
- // Raw hex dump of all the bytes
41
- // for (size_t c = 0; c < packet.length(); c += 32)
42
- // entry += to_string_hex(packet.read(c, 32), 8) + " ";
34
+ namespace ui ::external_app::acars_rx {
43
35
44
- for (size_t c = 0 ; c < 256 ; c += 32 )
45
- entry += to_string_bin (packet.read (c, 32 ), 32 );
46
-
47
- log_file.write_entry (packet.received_at (), entry);
36
+ void ACARSLogger::log_str (std::string msg) {
37
+ log_file.write_entry (msg);
48
38
}
49
39
50
- /* void ACARSLogger::log_decoded(
51
- const acars::Packet& packet,
52
- const std::string text) {
53
-
54
- log_file.write_entry(packet.timestamp(), text);
55
- }*/
56
-
57
- namespace ui {
58
-
59
40
ACARSAppView::ACARSAppView (NavigationView& nav)
60
41
: nav_{nav} {
61
- baseband::run_image (portapack::spi_flash::image_tag_acars );
42
+ baseband::run_prepared_image (portapack::memory::map::m4_code. base () );
62
43
63
44
add_children ({&rssi,
64
45
&channel,
65
46
&field_rf_amp,
66
47
&field_lna,
67
48
&field_vga,
68
49
&field_frequency,
50
+ &field_volume,
69
51
&check_log,
70
52
&console});
71
53
@@ -79,6 +61,9 @@ ACARSAppView::ACARSAppView(NavigationView& nav)
79
61
logger = std::make_unique<ACARSLogger>();
80
62
if (logger)
81
63
logger->append (logs_dir / u" ACARS.TXT" );
64
+
65
+ audio::set_rate (audio::Rate::Hz_24000);
66
+ audio::output::start ();
82
67
}
83
68
84
69
ACARSAppView::~ACARSAppView () {
@@ -90,29 +75,31 @@ void ACARSAppView::focus() {
90
75
field_frequency.focus ();
91
76
}
92
77
93
- void ACARSAppView::on_packet (const acars::Packet& packet) {
78
+ void ACARSAppView::on_packet (const ACARSPacketMessage* packet) {
94
79
std::string console_info;
95
80
96
- /* if (!packet.is_valid()) {
97
- console_info = to_string_datetime(packet.received_at(), HMS);
98
- console_info += " INVALID";
99
-
100
- console.writeln(console_info);
101
- } else {
102
- console_info = to_string_datetime(packet.received_at(), HMS);
103
- console_info += ":" + to_string_bin(packet.read(0, 32), 32);
104
- //console_info += " REG:" + packet.registration_number();
105
-
106
- console.writeln(console_info);
107
- }*/
108
-
109
- packet_counter++;
110
- if (packet_counter % 10 == 0 )
111
- console.writeln (" Block #" + to_string_dec_uint (packet_counter));
112
-
113
- // Log raw data whatever it contains
114
- if (logger && logging)
115
- logger->log_raw_data (packet, receiver_model.target_frequency ());
81
+ if (packet->state == 255 ) {
82
+ // got a packet, parse it, and display
83
+ rtc::RTC datetime;
84
+ rtc_time::now (datetime);
85
+ // todo parity error recovery
86
+ console_info = to_string_datetime (datetime, HMS);
87
+ console_info += " : " ;
88
+ console_info += packet->message ;
89
+ console.writeln (console_info);
90
+ // Log raw data whatever it contains
91
+ if (logger && logging)
92
+ logger->log_str (console_info);
93
+ } else {
94
+ // debug message arrived
95
+ console_info = " State: " ;
96
+ console_info += to_string_dec_int (packet->state );
97
+ console_info += " lastbyte: " ;
98
+ console_info += to_string_dec_uint (packet->message [0 ]);
99
+ console.writeln (console_info);
100
+ if (logger && logging)
101
+ logger->log_str (console_info);
102
+ }
116
103
}
117
104
118
- } /* namespace ui */
105
+ } // namespace ui::external_app::acars_rx
0 commit comments