From 83d870e58457a1d335a1d9b9966a6a1887cc297b Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 24 Nov 2025 03:02:43 +0100 Subject: feat! breaking changes on kernel sources. Signed-off-by: Amlal El Mahrouss --- src/kernel/NetworkKit/NetworkDevice.h | 83 +++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/kernel/NetworkKit/NetworkDevice.h (limited to 'src/kernel/NetworkKit/NetworkDevice.h') diff --git a/src/kernel/NetworkKit/NetworkDevice.h b/src/kernel/NetworkKit/NetworkDevice.h new file mode 100644 index 00000000..3afa8484 --- /dev/null +++ b/src/kernel/NetworkKit/NetworkDevice.h @@ -0,0 +1,83 @@ +/* ======================================== + + Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. + +======================================== */ + +#ifndef __INC_NETWORK_DEVICE_H__ +#define __INC_NETWORK_DEVICE_H__ + +#include +#include + +/// @note Can either work with: Ethernet, GPRS, WiFi + +namespace Kernel { +struct NetworkDeviceCommand; +class NetworkDevice; + +/** + * \brief Network device interface, establishes a connection to the NIC. + */ +class NetworkDevice final NE_DEVICE { + public: + NetworkDevice(void (*out)(DeviceInterface*, NetworkDeviceCommand), + void (*in)(DeviceInterface*, NetworkDeviceCommand), + void (*cleanup)(void) = nullptr); + + ~NetworkDevice() override; + + public: + NetworkDevice& operator=(const NetworkDevice&) = default; + NetworkDevice(const NetworkDevice&) = default; + + public: + const Char* Name() const override; + Boolean Name(const Char* newStr); + + private: + Void (*fCleanup)(void); +}; + +struct NetworkDeviceCommand final { + UInt32 CommandName; + UInt32 CommandType; + UInt32 CommandFlags; + VoidPtr CommandBuffer; + SizeT CommandSizeBuffer; +}; + +/// @brief TCP device. +using TCPNetworkDevice = NetworkDevice; + +/// @brief UDP device. +using UDPNetworkDevice = NetworkDevice; + +/// @brief PPP device. +using PPPNetworkDevice = NetworkDevice; + +/// @brief IPC device. +using IPCNetworkDevice = NetworkDevice; + +/// @brief GRPS device. +using GPRSNetworkDevice = NetworkDevice; + +/// @brief GSM device. +using GSMNetworkDevice = NetworkDevice; + +/// @brief Bluetooth device. +using BTNetworkDevice = NetworkDevice; + +/// @brief Printer device. +using PrinterNetworkDevice = NetworkDevice; + +/// @brief Debug device. +using DBGNetworkDevice = NetworkDevice; + +/// @brief LTE device. +using LTENetworkDevice = NetworkDevice; +} // namespace Kernel + +#include + +#endif // !__INC_NETWORK_DEVICE_H__ -- cgit v1.2.3