v5gdb 0.1.0-alpha.2

GDB-compatible debugger backend for the VEX V5 platform
use std::time::Duration;

use v5gdb::{debugger::V5Debugger, transport::StdioTransport};
use vexide::prelude::*;

#[inline(never)]
fn fib(n: u64) -> u64 {
    let mut a = 1;
    let mut b = 0;
    let mut count = 0;

    while count < n {
        let tmp = a + b;
        b = a;
        a = tmp;
        count += 1;
    }

    b
}

#[vexide::main]
async fn main(_peripherals: Peripherals) {
    let log_level = if option_env!("DEBUG").is_some() {
        log::Level::max()
    } else {
        log::Level::Warn
    };
    colored::control::set_override(true);
    clang_log::init(log_level, "v5gdb(basic)");

    v5gdb::install(V5Debugger::new(StdioTransport::new()));
    v5gdb::breakpoint!();

    loop {
        let num = 40;
        let x = fib(num);
        println!("{x}");
        sleep(Duration::from_secs(1)).await;
    }
}