From f3432c10bd694344f7e1f82ed8cd793358f1a400 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 21 Jun 2024 05:55:02 +0200 Subject: IMP: protect other computers which doesnt support EPM layout (AMD64) IMP: Add LTE builtin and NetworkDevice of type LTE. UPDATE: Also updated ReadMe. Signed-off-by: Amlal El Mahrouss --- Kernel/Builtins/GSM/.keepme | 0 Kernel/Builtins/GSM/IO.hxx | 29 ----------------- Kernel/Builtins/LTE/.keepme | 0 Kernel/Builtins/LTE/IO.hxx | 29 +++++++++++++++++ Kernel/HALKit/ARM64/Storage/HalFlash.cxx | 54 ++++++++++++++++++++------------ Kernel/NetworkKit/GSM.hxx | 16 ---------- Kernel/NetworkKit/LTE.hxx | 16 ++++++++++ Kernel/NetworkKit/NetworkDevice.hpp | 3 ++ Kernel/Sources/KeMain.cxx | 19 +++++------ Kernel/amd64-efi.make | 2 +- 10 files changed, 91 insertions(+), 77 deletions(-) delete mode 100644 Kernel/Builtins/GSM/.keepme delete mode 100644 Kernel/Builtins/GSM/IO.hxx create mode 100644 Kernel/Builtins/LTE/.keepme create mode 100644 Kernel/Builtins/LTE/IO.hxx delete mode 100644 Kernel/NetworkKit/GSM.hxx create mode 100644 Kernel/NetworkKit/LTE.hxx (limited to 'Kernel') diff --git a/Kernel/Builtins/GSM/.keepme b/Kernel/Builtins/GSM/.keepme deleted file mode 100644 index e69de29b..00000000 diff --git a/Kernel/Builtins/GSM/IO.hxx b/Kernel/Builtins/GSM/IO.hxx deleted file mode 100644 index 39de1a0f..00000000 --- a/Kernel/Builtins/GSM/IO.hxx +++ /dev/null @@ -1,29 +0,0 @@ -/* ------------------------------------------- - -Copyright Zeta Electronics Corporation. - -File: GSM\IO.hxx. -Purpose: GSM I/O. - -------------------------------------------- */ - -#ifndef _INC_NETWORK_GSM_IO_HXX_ -#define _INC_NETWORK_GSM_IO_HXX_ - -#include -#include - -/// @brief GSM I/O routines. - -/// @brief Turn on SIM slot. -NewOS::Boolean gsm_turn_on_slot(NewOS::Int32 slot); - -/// @brief Turn off SIM slot. -NewOS::Boolean gsm_turn_off_slot(NewOS::Int32 slot); - -/// @brief Send AT command. -NewOS::Boolean gsm_send_at_command(NewOS::Char* buf, - NewOS::Size bufSz); - - -#endif // ifndef _INC_NETWORK_GSM_IO_HXX_ diff --git a/Kernel/Builtins/LTE/.keepme b/Kernel/Builtins/LTE/.keepme new file mode 100644 index 00000000..e69de29b diff --git a/Kernel/Builtins/LTE/IO.hxx b/Kernel/Builtins/LTE/IO.hxx new file mode 100644 index 00000000..a3f62fa9 --- /dev/null +++ b/Kernel/Builtins/LTE/IO.hxx @@ -0,0 +1,29 @@ +/* ------------------------------------------- + +Copyright Zeta Electronics Corporation. + +File: LTE\IO.hxx. +Purpose: LTE I/O. + +------------------------------------------- */ + +#ifndef _INC_NETWORK_LTE_IO_HXX_ +#define _INC_NETWORK_LTE_IO_HXX_ + +#include +#include + +/// @brief LTE I/O routines. + +/// @brief Turn on SIM slot. +NewOS::Boolean lte_turn_on_slot(NewOS::Int32 slot); + +/// @brief Turn off SIM slot. +NewOS::Boolean lte_turn_off_slot(NewOS::Int32 slot); + +/// @brief Send AT command. +NewOS::Boolean lte_send_at_command(NewOS::Char* buf, + NewOS::Size bufSz); + + +#endif // ifndef _INC_NETWORK_LTE_IO_HXX_ diff --git a/Kernel/HALKit/ARM64/Storage/HalFlash.cxx b/Kernel/HALKit/ARM64/Storage/HalFlash.cxx index 7bc9c8c0..4466963e 100644 --- a/Kernel/HALKit/ARM64/Storage/HalFlash.cxx +++ b/Kernel/HALKit/ARM64/Storage/HalFlash.cxx @@ -12,41 +12,55 @@ #ifdef __FLASH_MEM__ +#define cMaxFlash (4U) + namespace NewOS { - /// /:\\BRIDGE\\FLSH\\1 - constexpr auto cFlashBridgeMagic = "FLSH"; - constexpr auto cFlashBridgeRevision = 1; + /// /:\\BRIDGE\\FLSH\\1 + constexpr auto cFlashBridgeMagic = "FLSH"; + constexpr auto cFlashBridgeRevision = 1; - STATIC const Boolean kFlashEnabled = No; - STATIC SizeT kFlashSize = 0UL; - STATIC SizeT kFlashSectorSz = 0UL; + STATIC const Boolean kFlashEnabled = No; + STATIC SizeT kFlashSize[cMaxFlash] = {}; + STATIC SizeT kFlashSectorSz[cMaxFlash] = {}; - /// @brief Enable flash memory builtin. - STATIC Void drv_enable_builtin(Void); + /// @brief Enable flash memory builtin. + STATIC Void drv_enable_flash(Int32 slot); - /// @brief Disable flash memory builtin. - STATIC Void drv_disable_builtin(Void); + /// @brief Disable flash memory builtin. + STATIC Void drv_disable_flash(Int32 slot); - /// @brief get sector count. - /// @return drive sector count. - SizeT drv_std_get_sector_count(void) + /// @brief get sector count. + /// @return drive sector count. + SizeT drv_std_get_sector_count(Int32 slot) { - return kFlashSectorSz; + if (slot > cMaxFlash) + return 0; + + return kFlashSectorSz[slot]; } /// @brief get device size. /// @return drive size - SizeT drv_std_get_drv_size(void) + SizeT drv_std_get_drv_size(Int32 slot) { - return kFlashSize; + if (slot > cMaxFlash) + return 0; + + return kFlashSize[slot]; } - /// @brief Enable flash memory builtin. - STATIC Void drv_enable_builtin(Void) {} + /// @brief Enable flash memory at slot. + STATIC Void drv_enable_flash(Int32 arg) + { + kcout << "newoskrnl: enabled hardware.\r"; + } - /// @brief Disable flash memory builtin. - STATIC Void drv_disable_builtin(Void) {} + /// @brief Disable flash memory at slot. + STATIC Void drv_disable_flash(Int32 arg) + { + kcout << "newoskrnl: disabled hardware.\r"; + } } // namespace NewOS #endif // if __FLASH_MEM__ (Bridge) diff --git a/Kernel/NetworkKit/GSM.hxx b/Kernel/NetworkKit/GSM.hxx deleted file mode 100644 index f4b040b3..00000000 --- a/Kernel/NetworkKit/GSM.hxx +++ /dev/null @@ -1,16 +0,0 @@ -/* ------------------------------------------- - - Copyright Zeta Electronics Corporation. - - File: GSM.hxx. - Purpose: GSM protocol classes. - -------------------------------------------- */ - -#ifndef _INC_NETWORK_GSM_HXX_ -#define _INC_NETWORK_GSM_HXX_ - -#include -#include - -#endif // ifndef _INC_NETWORK_GSM_HXX_ diff --git a/Kernel/NetworkKit/LTE.hxx b/Kernel/NetworkKit/LTE.hxx new file mode 100644 index 00000000..cb3aa1e1 --- /dev/null +++ b/Kernel/NetworkKit/LTE.hxx @@ -0,0 +1,16 @@ +/* ------------------------------------------- + + Copyright Zeta Electronics Corporation. + + File: LTE.hxx. + Purpose: LTE protocol classes. + +------------------------------------------- */ + +#ifndef _INC_NETWORK_LTE_HXX_ +#define _INC_NETWORK_LTE_HXX_ + +#include +#include + +#endif // ifndef _INC_NETWORK_LTE_HXX_ diff --git a/Kernel/NetworkKit/NetworkDevice.hpp b/Kernel/NetworkKit/NetworkDevice.hpp index 9b251c2e..c6f0cca3 100644 --- a/Kernel/NetworkKit/NetworkDevice.hpp +++ b/Kernel/NetworkKit/NetworkDevice.hpp @@ -71,6 +71,9 @@ namespace NewOS /// @brief GSM device. using GSMNetworkDevice = NetworkDevice; + + /// @brief LTE device. + using LTENetworkDevice = NetworkDevice; } // namespace NewOS #include diff --git a/Kernel/Sources/KeMain.cxx b/Kernel/Sources/KeMain.cxx index 59f53f34..3ff754c2 100644 --- a/Kernel/Sources/KeMain.cxx +++ b/Kernel/Sources/KeMain.cxx @@ -26,8 +26,7 @@ namespace NewOS::Detail { - /// @brief Filesystem auto mounter, additional checks are also done by the - /// class. + /// @brief Filesystem auto installer, additional checks are also done by the class. class FilesystemInstaller final { NewOS::NewFilesystemManager* fNewFS{nullptr}; @@ -105,12 +104,8 @@ namespace NewOS::Detail auto catalogSystem = fNewFS->GetParser()->GetCatalog(cDirStr[dirIndx]); - kcout << "newoskrnl: write fork...\r"; - fNewFS->GetParser()->CreateFork(catalogSystem, theFork); - kcout << "newoskrnl: write catalog...\r"; - fNewFS->GetParser()->WriteCatalog( catalogSystem, (NewOS::VoidPtr)(metadataFolder.CData()), metadataSz, cFolderInfo); @@ -186,11 +181,12 @@ namespace NewOS::Detail } }; - /// @brief Loads necessary servers for the OS to work. - /// @param void no parameters. + /// @brief Loads necessary servers for the kernel -> user mode switch. + /// @param void no args. /// @return void no return value. STATIC NewOS::Void ke_launch_srv(NewOS::Void) { + // load security server. NewOS::PEFLoader secureSrv("C:\\System\\securesrv.exe"); if (!secureSrv.IsLoaded()) @@ -201,14 +197,15 @@ namespace NewOS::Detail NewOS::Utils::execute_from_image(secureSrv, NewOS::ProcessHeader::kAppKind); - NewOS::PEFLoader uiSrv("C:\\System\\uisrv.exe"); + /// load middleware service. + NewOS::PEFLoader middlewareSvc("C:\\System\\middlewaresvc.exe"); - if (!uiSrv.IsLoaded()) + if (!middlewareSvc.IsLoaded()) { NewOS::ke_stop(RUNTIME_CHECK_FAILED); } - NewOS::Utils::execute_from_image(uiSrv, + NewOS::Utils::execute_from_image(middlewareSvc, NewOS::ProcessHeader::kAppKind); } } // namespace NewOS::Detail diff --git a/Kernel/amd64-efi.make b/Kernel/amd64-efi.make index 9421f63a..c230bc48 100644 --- a/Kernel/amd64-efi.make +++ b/Kernel/amd64-efi.make @@ -84,4 +84,4 @@ help: .PHONY: clean clean: - rm -f $(LDOBJ) $(wildcard *.o) $(KERNEL) + rm -f $(LDOBJ) $(wildcard *.o) $(KERNEL) $(KERNEL_512K) -- cgit v1.2.3