diff --git a/firmware/CMakeLists.txt b/firmware/CMakeLists.txt index fedb3fd..f0adbf1 100644 --- a/firmware/CMakeLists.txt +++ b/firmware/CMakeLists.txt @@ -10,13 +10,12 @@ set(CMAKE_CXX_STANDARD 23) pico_sdk_init() set(LIB_SOURCES - lib/dhcp.cpp lib/net.cpp lib/tusb_config.cpp w6300/w6300.cpp ) -set(LIB_DEPS pico_stdlib pico_rand tinyusb_device tinyusb_board hardware_pio hardware_spi hardware_dma hardware_clocks) +set(LIB_DEPS pico_stdlib tinyusb_device tinyusb_board hardware_pio hardware_spi hardware_dma hardware_clocks) add_executable(picomap firmware.cpp ${LIB_SOURCES}) target_include_directories(picomap PRIVATE include w6300) diff --git a/firmware/firmware.cpp b/firmware/firmware.cpp index d862177..75af9b0 100644 --- a/firmware/firmware.cpp +++ b/firmware/firmware.cpp @@ -5,7 +5,6 @@ #include "wire.h" #include "usb_cdc.h" #include "timer_queue.h" -#include "dhcp.h" #include "net.h" #include "w6300.h" @@ -17,9 +16,6 @@ int main() { net_init(); - auto ninfo = w6300::get_net_info(); - dhcp_start(timers, ninfo.mac); - static static_vector rx_buf; while (true) { diff --git a/firmware/include/dhcp.h b/firmware/include/dhcp.h deleted file mode 100644 index fd6177b..0000000 --- a/firmware/include/dhcp.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once -#include -#include "timer_queue.h" - -void dhcp_start(timer_queue& timers, const std::array& mac); diff --git a/firmware/lib/dhcp.cpp b/firmware/lib/dhcp.cpp deleted file mode 100644 index d323ec7..0000000 --- a/firmware/lib/dhcp.cpp +++ /dev/null @@ -1,55 +0,0 @@ -#include "dhcp.h" -#include -#include "pico/rand.h" -#include "w6300.h" - -namespace dhcp_opt { - constexpr uint8_t message_type = 53; - constexpr uint8_t param_request = 55; - constexpr uint8_t end = 255; - constexpr uint8_t discover = 1; - constexpr uint8_t subnet_mask = 1; -} - -struct __attribute__((packed)) dhcp_discover { - uint8_t op = 1; - uint8_t htype = 1; - uint8_t hlen = 6; - uint8_t hops = 0; - uint32_t xid = __builtin_bswap32(static_cast(get_rand_64())); - uint16_t secs = 0; - uint16_t flags = __builtin_bswap16(0x8000); - std::array ciaddr = {}; - std::array yiaddr = {}; - std::array siaddr = {}; - std::array giaddr = {}; - std::array chaddr = {}; - std::array sname = {}; - std::array file = {}; - std::array magic = {99, 130, 83, 99}; - uint8_t opt_msg_type[3] = {dhcp_opt::message_type, 1, dhcp_opt::discover}; - uint8_t opt_params[3] = {dhcp_opt::param_request, 1, dhcp_opt::subnet_mask}; - uint8_t opt_end = dhcp_opt::end; -}; - -static_assert(sizeof(dhcp_discover) == 247); - -static void send_discover(timer_queue& timers, const std::array& mac) { - auto sn = w6300::socket_id{0}; - w6300::open_socket(sn, w6300::protocol::udp, w6300::port_num{68}, w6300::sock_flag::none); - - dhcp_discover pkt; - std::copy(mac.begin(), mac.end(), pkt.chaddr.begin()); - - w6300::ip_address broadcast = {}; - broadcast.ip = {255, 255, 255, 255}; - broadcast.len = 4; - - w6300::sendto(sn, std::span{reinterpret_cast(&pkt), sizeof(pkt)}, broadcast, w6300::port_num{67}); - - timers.schedule_ms(5000, [&timers, mac]() { send_discover(timers, mac); }); -} - -void dhcp_start(timer_queue& timers, const std::array& mac) { - send_discover(timers, mac); -}