Skip to content

Commit 98ce73e

Browse files
committed
Replace log based logging with uwriteln
1 parent b65066b commit 98ce73e

1 file changed

Lines changed: 41 additions & 71 deletions

File tree

  • firmware-binaries/demos/soft-ugn-demo-mu-2/src

firmware-binaries/demos/soft-ugn-demo-mu-2/src/main.rs

Lines changed: 41 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ use bittide_sys::net_state::{Manager, Subordinate, UgnEdge, UgnReport};
1717
use bittide_sys::smoltcp::ringbuffer::RingbufferDevice;
1818
use bittide_sys::stability_detector::Stability;
1919
use core::fmt::Write;
20-
use log::{info, trace, warn, LevelFilter};
2120
use riscv::register::{mcause, mepc, mtval};
2221
use smoltcp::iface::{Config, Interface, SocketHandle, SocketSet, SocketStorage};
2322
use smoltcp::socket::tcp;
@@ -28,7 +27,6 @@ const INSTANCES: DeviceInstances = unsafe { DeviceInstances::new() };
2827
const LINK_COUNT: usize = 7;
2928
const TCP_BUF_SIZE: usize = 256;
3029
const MANAGER_DNA: [u8; 12] = [133, 129, 48, 4, 64, 192, 105, 1, 1, 0, 2, 64];
31-
const LOG_TICK_EVERY: u32 = 500;
3230
const CLIENT_IP: [u8; 4] = [100, 100, 100, 100];
3331
const SERVER_IP: [u8; 4] = [100, 100, 100, 101];
3432

@@ -61,30 +59,24 @@ fn socket_set<'a>(storage: &'a mut [SocketStorage<'static>]) -> SocketSet<'a> {
6159
fn make_device(
6260
rx: ReceiveRingbuffer,
6361
tx: TransmitRingbuffer,
62+
uart: &mut bittide_hal::shared_devices::Uart,
6463
) -> RingbufferDevice<ReceiveRingbuffer, TransmitRingbuffer> {
6564
let mut rx_aligned = AlignedReceiveBuffer::new(rx);
6665
rx_aligned.align(&tx);
67-
info!(
66+
uwriteln!(
67+
uart,
6868
"Aligned RX buffer with offset {}",
6969
rx_aligned.get_alignment_offset().unwrap()
70-
);
70+
)
71+
.ok();
7172
RingbufferDevice::new(rx_aligned, tx)
7273
}
7374

7475
#[cfg_attr(not(test), entry)]
7576
fn main() -> ! {
7677
let mut uart = INSTANCES.uart;
77-
unsafe {
78-
use bittide_sys::uart::log::LOGGER;
79-
let logger = &mut (*LOGGER.get());
80-
logger.set_logger(uart.clone());
81-
logger.set_timer(INSTANCES.timer);
82-
logger.display_source = LevelFilter::Warn;
83-
log::set_logger_racy(logger).ok();
84-
log::set_max_level_racy(LevelFilter::Info);
85-
}
8678

87-
info!("=== Soft UGN Demo MU2 ===");
79+
uwriteln!(uart, "=== Soft UGN Demo MU2 ===").ok();
8880
let transceivers = &INSTANCES.transceivers;
8981
let cc = INSTANCES.clock_control;
9082
let elastic_buffers = [
@@ -114,7 +106,7 @@ fn main() -> ! {
114106
// 6) Run manager state machines to connect to neighbors and request UGNs.
115107
// 7) Collect UGN edges over TCP and aggregate locally.
116108

117-
info!("Bringing up links...");
109+
uwriteln!(uart, "Bringing up links...").ok();
118110
let mut link_startups = [LinkStartup::new(); LINK_COUNT];
119111
while !link_startups.iter().all(|ls| ls.is_done()) {
120112
for (i, link_startup) in link_startups.iter_mut().enumerate() {
@@ -127,7 +119,7 @@ fn main() -> ! {
127119
}
128120
}
129121

130-
info!("Waiting for stability...");
122+
uwriteln!(uart, "Waiting for stability...").ok();
131123
loop {
132124
let stability = Stability {
133125
stable: cc.links_stable()[0],
@@ -138,7 +130,7 @@ fn main() -> ! {
138130
}
139131
}
140132

141-
info!("Stopping auto-centering...");
133+
uwriteln!(uart, "Stopping auto-centering...").ok();
142134
elastic_buffers
143135
.iter()
144136
.for_each(|eb| eb.set_auto_center_enable(false));
@@ -153,14 +145,16 @@ fn main() -> ! {
153145
capture_ugn.set_elastic_buffer_delta(eb_delta);
154146
}
155147

156-
info!("Captured hardware UGNs");
148+
uwriteln!(uart, "Captured hardware UGNs").ok();
157149
for (i, capture_ugn) in capture_ugns.iter().enumerate() {
158-
info!(
150+
uwriteln!(
151+
uart,
159152
"Capture UGN {}: local = {}, remote = {}",
160153
i,
161154
capture_ugn.local_counter(),
162155
capture_ugn.remote_counter()
163-
);
156+
)
157+
.ok();
164158
}
165159

166160
let receive_ringbuffers = [
@@ -190,8 +184,14 @@ fn main() -> ! {
190184
core::array::from_fn(|i| {
191185
let rx = receive_iter.next().expect("missing receive ringbuffer");
192186
let tx = transmit_iter.next().expect("missing transmit ringbuffer");
193-
let device = make_device(rx, tx);
194-
trace!("Made device for link {}, with MTU {}", i, device.mtu());
187+
let device = make_device(rx, tx, &mut uart);
188+
uwriteln!(
189+
uart,
190+
"Made device for link {}, with MTU {}",
191+
i,
192+
device.mtu()
193+
)
194+
.ok();
195195
device
196196
});
197197

@@ -207,71 +207,68 @@ fn main() -> ! {
207207
sockets.add(socket)
208208
});
209209
let dna = INSTANCES.dna.dna();
210-
info!("My dna: {:?}", dna);
210+
uwriteln!(uart, "My dna: {:?}", dna).ok();
211211
let is_manager = dna == MANAGER_DNA;
212-
info!(
212+
uwriteln!(
213+
uart,
213214
"Role: {}",
214215
if is_manager { "manager" } else { "subordinate" }
215-
);
216-
unsafe {
217-
log::set_max_level_racy(LevelFilter::Trace);
218-
}
216+
)
217+
.ok();
219218

220219
if is_manager {
221-
info!("Starting manager state machines...");
220+
uwriteln!(uart, "Starting manager state machines...").ok();
222221
let mut reports: [Option<UgnReport>; LINK_COUNT] = [None; LINK_COUNT];
223222
for link in 0..LINK_COUNT {
224223
let socket_handle = socket_handles[link];
225-
info!("Starting manager for link {}", link);
224+
uwriteln!(uart, "Starting manager for link {}", link).ok();
226225
let now = to_smoltcp_instant(INSTANCES.timer.now());
227226
let mut iface =
228227
Interface::new(Config::new(HardwareAddress::Ip), &mut devices[link], now);
229228
set_iface_ip(&mut iface, CLIENT_IP);
230229
let mut manager = Manager::new(iface, socket_handle, link, SERVER_IP);
231230

232-
trace!("Starting manager loop for link {}", link);
233231
loop {
234232
let now = to_smoltcp_instant(INSTANCES.timer.now());
235233
let mut sockets = socket_set(&mut sockets_storage[link][..]);
236-
trace!("Polling manager link {}", link);
237234
manager.poll(now, &mut devices[link], &mut sockets);
238-
trace!("manager link {} state {:?}", link, manager.state());
239235
if manager.is_done() {
240-
trace!("manager link {} is done", link);
241236
break;
242237
}
243238
}
244239
reports[link] = Some(manager.report());
245240
}
246241

247-
info!("UGN reports from subordinates:");
242+
uwriteln!(uart, "UGN reports from subordinates:").ok();
248243
for (idx, report) in reports.iter().enumerate() {
249244
if let Some(report) = report {
250-
info!("Link {}: {} edges", idx, report.count);
245+
uwriteln!(uart, "Link {}: {} edges", idx, report.count).ok();
251246
for (edge_idx, edge) in report.edges.iter().enumerate() {
252247
if edge_idx >= report.count as usize {
253248
break;
254249
}
255250
if let Some(edge) = edge {
256-
info!(
251+
uwriteln!(
252+
uart,
257253
" Edge {}: {}:{} -> {}:{}, ugn={}",
258254
edge_idx,
259255
edge.src_node,
260256
edge.src_port,
261257
edge.dst_node,
262258
edge.dst_port,
263259
edge.ugn
264-
);
260+
)
261+
.ok();
265262
} else {
266-
warn!(" Edge {}: missing", edge_idx);
263+
uwriteln!(uart, " Edge {}: missing", edge_idx).ok();
267264
}
268265
}
269266
} else {
270-
warn!("Link {}: no report", idx);
267+
uwriteln!(uart, "Link {}: no report", idx).ok();
271268
}
272269
}
273270
} else {
274-
info!("Starting subordinate state machines...");
271+
uwriteln!(uart, "Starting subordinate state machines...").ok();
275272

276273
let mut subordinates: [Subordinate; LINK_COUNT] = core::array::from_fn(|idx| {
277274
let now = to_smoltcp_instant(INSTANCES.timer.now());
@@ -287,36 +284,10 @@ fn main() -> ! {
287284

288285
loop {
289286
tick = tick.wrapping_add(1);
290-
if tick % LOG_TICK_EVERY == 0 {
291-
info!("subordinate loop tick {}", tick);
292-
}
293287
let now = to_smoltcp_instant(INSTANCES.timer.now());
294288
for link in 0..LINK_COUNT {
295289
let mut sockets = socket_set(&mut sockets_storage[link][..]);
296-
trace!("Polling subordinate link {}", link);
297290
subordinates[link].poll(now, &mut devices[link], &mut sockets);
298-
{
299-
let socket = sockets.get::<tcp::Socket>(socket_handles[link]);
300-
trace!(
301-
"subordinate link {} socket open {} active {} can_send {} can_recv {} state {:?}",
302-
link,
303-
socket.is_open(),
304-
socket.is_active(),
305-
socket.can_send(),
306-
socket.can_recv(),
307-
socket.state()
308-
);
309-
}
310-
trace!(
311-
"subordinate link {} ip addrs {:?}",
312-
link,
313-
subordinates[link].iface().ip_addrs()
314-
);
315-
trace!(
316-
"subordinate link {} state {:?}",
317-
link,
318-
subordinates[link].state()
319-
);
320291
}
321292
}
322293
}
@@ -341,9 +312,9 @@ fn exception_handler(_trap_frame: &riscv_rt::TrapFrame) -> ! {
341312
let mut uart = INSTANCES.uart;
342313
riscv::interrupt::free(|| {
343314
uwriteln!(uart, "... caught an exception. Looping forever now.\n").unwrap();
344-
info!("mcause: {:?}\n", mcause::read());
345-
info!("mepc: {:?}\n", mepc::read());
346-
info!("mtval: {:?}\n", mtval::read());
315+
writeln!(uart, "mcause: {:?}\n", mcause::read()).ok();
316+
writeln!(uart, "mepc: {:?}\n", mepc::read()).ok();
317+
writeln!(uart, "mtval: {:?}\n", mtval::read()).ok();
347318
});
348319
loop {
349320
continue;
@@ -364,6 +335,5 @@ fn build_report_for_link(
364335
dst_port: link as u32,
365336
ugn: capture_ugn.local_counter() as i64,
366337
});
367-
trace!("Prepared report for link {}", link);
368338
report
369339
}

0 commit comments

Comments
 (0)