#include "pico/stdlib.h" #include "pico/bootrom.h" // https://rust-lang.github.io/unsafe-code-guidelines/layout/scalars.html // bool is compatible #define i8 int8_t #define i16 int16_t #define i32 int32_t #define u8 uint8_t #define u16 uint16_t #define u32 uint32_t #define i64 int64_t #define u64 uint64_t #define isize intptr_t #define usize uintptr_t // used from rust const uint LED_PIN = PICO_DEFAULT_LED_PIN; uint led_pin() { return PICO_DEFAULT_LED_PIN; } // without this: undefined reference to `gpio_set_dir' void c_gpio_set_dir(uint gpio, bool out) { return gpio_set_dir(gpio, out); } // without this: undefined reference to `gpio_put' void c_gpio_put(uint gpio, bool value) { return gpio_put(gpio, value); } // defined in rust u32 add_half(u32 num); int rs_main(); int c_main() { gpio_init(LED_PIN); gpio_set_dir(LED_PIN, GPIO_OUT); int sleep = 250; while (true) { gpio_put(LED_PIN, 1); sleep_ms(sleep); gpio_put(LED_PIN, 0); sleep_ms(sleep); sleep = add_half(sleep); // in rust: //reset_to_usb_boot(LED_PIN, 0); if(sleep > 2000) { reset_usb_boot(LED_PIN, 0); } } }