From f837937cb7e1af5061696dbdd550c72a3855aed1 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Mon, 6 Apr 2026 20:09:30 +0900 Subject: [PATCH] Add firmware_name to info response --- cmd/info/main.go | 1 + firmware/firmware.cpp | 2 ++ firmware/include/handlers.h | 3 +++ firmware/include/wire.h | 5 +++-- firmware/lib/handlers.cpp | 1 + firmware/test.cpp | 2 ++ lib/client/types.go | 7 ++++--- 7 files changed, 16 insertions(+), 5 deletions(-) diff --git a/cmd/info/main.go b/cmd/info/main.go index 3232741..3bab2ec 100644 --- a/cmd/info/main.go +++ b/cmd/info/main.go @@ -61,6 +61,7 @@ func run() error { r.info.BoardID[4], r.info.BoardID[5], r.info.BoardID[6], r.info.BoardID[7]) fmt.Printf(" MAC: %s\n", net.HardwareAddr(r.info.MAC[:])) fmt.Printf(" Link-Local: %s\n", net.IP(r.info.LinkLocal[:])) + fmt.Printf(" Firmware: %s\n", r.info.FirmwareName) } return nil diff --git a/firmware/firmware.cpp b/firmware/firmware.cpp index fe01faf..2d850ce 100644 --- a/firmware/firmware.cpp +++ b/firmware/firmware.cpp @@ -2,6 +2,8 @@ #include "handlers.h" #include "w6300.h" +std::string_view firmware_name = "picomap"; + static constexpr uint16_t PICOMAP_DISCOVERY_PORT = 28777; static constexpr std::array picomap_discovery_ip = { diff --git a/firmware/include/handlers.h b/firmware/include/handlers.h index c9e0a39..ae6774a 100644 --- a/firmware/include/handlers.h +++ b/firmware/include/handlers.h @@ -1,6 +1,9 @@ #pragma once +#include #include "wire.h" #include "usb_cdc.h" +extern std::string_view firmware_name; + void handle_picoboot(usb_cdc& usb, uint32_t message_id); void handle_info(usb_cdc& usb, uint32_t message_id); diff --git a/firmware/include/wire.h b/firmware/include/wire.h index 3bfb7f0..2e3646f 100644 --- a/firmware/include/wire.h +++ b/firmware/include/wire.h @@ -48,8 +48,9 @@ struct ResponseInfo { std::array board_id; std::array mac; std::array link_local; - auto as_tuple() const { return std::tie(board_id, mac, link_local); } - auto as_tuple() { return std::tie(board_id, mac, link_local); } + std::string firmware_name; + auto as_tuple() const { return std::tie(board_id, mac, link_local, firmware_name); } + auto as_tuple() { return std::tie(board_id, mac, link_local, firmware_name); } }; static constexpr uint8_t hash_key[8] = {}; diff --git a/firmware/lib/handlers.cpp b/firmware/lib/handlers.cpp index 7042da1..7468941 100644 --- a/firmware/lib/handlers.cpp +++ b/firmware/lib/handlers.cpp @@ -18,5 +18,6 @@ void handle_info(usb_cdc& usb, uint32_t message_id) { auto ninfo = w6300::get_net_info(); resp.mac = ninfo.mac; resp.link_local = ninfo.lla; + resp.firmware_name = firmware_name; usb.send(encode_response(message_id, resp)); } diff --git a/firmware/test.cpp b/firmware/test.cpp index 276681f..1c11a01 100644 --- a/firmware/test.cpp +++ b/firmware/test.cpp @@ -1,6 +1,8 @@ #include "dispatch.h" #include "handlers.h" +std::string_view firmware_name = "picomap_test"; + static constexpr handler_entry handlers[] = { {RequestPICOBOOT::ext_id, handle_picoboot}, {RequestInfo::ext_id, handle_info}, diff --git a/lib/client/types.go b/lib/client/types.go index 2127387..802e0c9 100644 --- a/lib/client/types.go +++ b/lib/client/types.go @@ -7,9 +7,10 @@ type ResponsePICOBOOT struct{} type RequestInfo struct{} type ResponseInfo struct { - BoardID [8]byte - MAC [6]byte - LinkLocal [16]byte + BoardID [8]byte + MAC [6]byte + LinkLocal [16]byte + FirmwareName string } type DeviceError struct {