-- SPDX-FileCopyrightText: 2024 Max Reznik -- -- SPDX-License-Identifier: Apache-2.0 ---------------------------------------------------------------- with Ada.Text_IO; with Interfaces; with Ethernet.MDIO; with Ethernet.PHY_Management; with Net.Headers; with Net.Protos.Icmp; with Net.Utils; with Net.Generic_Receiver; package body Network is package LAN_Receiver is new Net.Generic_Receiver (Net.Interfaces.Ifnet_Type'Class (STM32_MAC)); ------------------ -- ICMP_Handler -- ------------------ procedure ICMP_Handler (Ifnet : in out Net.Interfaces.Ifnet_Type'Class; Packet : in out Net.Buffers.Buffer_Type) is use type Net.Uint8; IP : constant Net.Headers.IP_Header_Access := Packet.IP; ICMP : constant Net.Headers.ICMP_Header_Access := Packet.ICMP; begin if ICMP.Icmp_Type = Net.Headers.ICMP_ECHO_REPLY then Ada.Text_IO.Put (Packet.Get_Length'Image); Ada.Text_IO.Put (" bytes from "); Ada.Text_IO.Put (Net.Utils.To_String (IP.Ip_Src)); Ada.Text_IO.Put (" seq="); Ada.Text_IO.Put (Net.Headers.To_Host (ICMP.Icmp_Seq)'Image); Ada.Text_IO.New_Line; else Net.Protos.Icmp.Receive (Ifnet, Packet); end if; end ICMP_Handler; ---------------- -- Initialize -- ---------------- procedure Initialize is begin STM32_MAC.Configure (Net.STM32_Interfaces.STM32F407_Pins, RMII => True); LAN_Receiver.Start; DHCP.Initialize (STM32_MAC'Access); end Initialize; end Network;