@@ -17,7 +17,6 @@ use bittide_sys::net_state::{Manager, Subordinate, UgnEdge, UgnReport};
1717use bittide_sys:: smoltcp:: ringbuffer:: RingbufferDevice ;
1818use bittide_sys:: stability_detector:: Stability ;
1919use core:: fmt:: Write ;
20- use log:: { info, trace, warn, LevelFilter } ;
2120use riscv:: register:: { mcause, mepc, mtval} ;
2221use smoltcp:: iface:: { Config , Interface , SocketHandle , SocketSet , SocketStorage } ;
2322use smoltcp:: socket:: tcp;
@@ -28,7 +27,6 @@ const INSTANCES: DeviceInstances = unsafe { DeviceInstances::new() };
2827const LINK_COUNT : usize = 7 ;
2928const TCP_BUF_SIZE : usize = 256 ;
3029const MANAGER_DNA : [ u8 ; 12 ] = [ 133 , 129 , 48 , 4 , 64 , 192 , 105 , 1 , 1 , 0 , 2 , 64 ] ;
31- const LOG_TICK_EVERY : u32 = 500 ;
3230const CLIENT_IP : [ u8 ; 4 ] = [ 100 , 100 , 100 , 100 ] ;
3331const SERVER_IP : [ u8 ; 4 ] = [ 100 , 100 , 100 , 101 ] ;
3432
@@ -61,30 +59,24 @@ fn socket_set<'a>(storage: &'a mut [SocketStorage<'static>]) -> SocketSet<'a> {
6159fn 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) ]
7576fn 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