#include "handlers.h" #include "pico/unique_id.h" #include "pico/bootrom.h" #include "dispatch.h" #include "net.h" #include "debug_log.h" size_t handle_picoboot(uint32_t message_id, std::span, span_writer &out) { dispatch_schedule_ms(100, []{ reset_usb_boot(0, 1); }); return encode_response_into(out, message_id, ResponsePICOBOOT{}); } size_t handle_info(uint32_t message_id, std::span, span_writer &out) { ResponseInfo resp; pico_unique_board_id_t uid; pico_get_unique_board_id(&uid); std::copy(uid.id, uid.id + 8, resp.board_id.begin()); auto& ns = net_get_state(); resp.mac = ns.mac; resp.ip = ns.ip; resp.firmware_name = firmware_name; return encode_response_into(out, message_id, resp); } size_t handle_log(uint32_t message_id, std::span, span_writer &out) { ResponseLog resp; for (auto& e : dlog_drain()) resp.entries.push_back(LogEntry{e.timestamp_us, std::move(e.message)}); return encode_response_into(out, message_id, resp); }