diff --git a/Makefile b/Makefile index dc11a4fc..bdcafee5 100644 --- a/Makefile +++ b/Makefile @@ -17,9 +17,21 @@ ETL_INCLUDES += ./external/etl/include/etl/unordered_map.h # Source and header files APP_HEADER_PATHS += ./include -APP_SOURCE_PATHS += ./src -APP_SOURCE_PATHS += ./src/user -APP_SOURCES = $(notdir $(wildcard src/*.cpp src/user/*.cpp)) +APP_SOURCE_PATHS = ./src +APP_SOURCE_PATHS += ./src/user_programs +APP_SOURCE_PATHS += ./src/drivers +APP_SOURCE_PATHS += ./src/faults +APP_SOURCE_PATHS += ./src/hal +APP_SOURCE_PATHS += ./src/ipc +APP_SOURCE_PATHS += ./src/scheduler +APP_SOURCE_PATHS += ./src/userlib +APP_SOURCE_PATHS += ./src/svc + +# I hate make +rwildcard = $(foreach d,$(wildcard $1*), \ + $(call rwildcard,$d/,$2)) $(wildcard $1$2) + +APP_SOURCES = $(foreach dir,$(APP_SOURCE_PATHS),$(call rwildcard,$(dir)/,*.cpp)) # Path to base of nRF52x-base repo NRF_BASE_DIR = external/nrf52x-base/ diff --git a/include/fault_handler.hpp b/include/faults/fault_handler.hpp similarity index 100% rename from include/fault_handler.hpp rename to include/faults/fault_handler.hpp diff --git a/include/register_utils.hpp b/include/register_utils.hpp deleted file mode 100644 index 057f15c7..00000000 --- a/include/register_utils.hpp +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -namespace edge { -#define TRIGGER_SVC(call_type) asm volatile("svc %0" ::"I"(call_type)) -#define SET_REGISTER(reg, value) asm volatile("mov " #reg ", %0" ::"r"(value) : #reg) -#define READ_REGISTER(reg, var) asm volatile("mov %0, " #reg : "=r"(var)) -} // namespace edge diff --git a/include/pending_process_callbacks.hpp b/include/scheduler/pending_process_callbacks.hpp similarity index 100% rename from include/pending_process_callbacks.hpp rename to include/scheduler/pending_process_callbacks.hpp diff --git a/src/button_driver.cpp b/src/drivers/button_driver.cpp similarity index 97% rename from src/button_driver.cpp rename to src/drivers/button_driver.cpp index 715891c7..09aab150 100644 --- a/src/button_driver.cpp +++ b/src/drivers/button_driver.cpp @@ -1,7 +1,7 @@ #include "drivers/button_driver.hpp" #include "drivers/driver_enums.hpp" -#include "pending_process_callbacks.hpp" +#include "scheduler/pending_process_callbacks.hpp" namespace edge::drivers { diff --git a/src/driver_commands.cpp b/src/drivers/driver_commands.cpp similarity index 100% rename from src/driver_commands.cpp rename to src/drivers/driver_commands.cpp diff --git a/src/led_display.cpp b/src/drivers/led_display.cpp similarity index 100% rename from src/led_display.cpp rename to src/drivers/led_display.cpp diff --git a/src/timer.cpp b/src/drivers/timer.cpp similarity index 100% rename from src/timer.cpp rename to src/drivers/timer.cpp diff --git a/src/main.cpp b/src/entrypoint.cpp similarity index 93% rename from src/main.cpp rename to src/entrypoint.cpp index 6e032fde..2ea9a9d9 100644 --- a/src/main.cpp +++ b/src/entrypoint.cpp @@ -1,5 +1,5 @@ #include "drivers/driver_enums.hpp" -#include "fault_handler.hpp" +#include "faults/fault_handler.hpp" #include "scheduler/scheduler.hpp" #include "util.hpp" diff --git a/src/fault_handler.cpp b/src/faults/fault_handler.cpp similarity index 95% rename from src/fault_handler.cpp rename to src/faults/fault_handler.cpp index d89f52f4..03bea444 100644 --- a/src/fault_handler.cpp +++ b/src/faults/fault_handler.cpp @@ -1,7 +1,7 @@ -#include "fault_handler.hpp" +#include "faults/fault_handler.hpp" #include "nrf52.h" -#include "pending_process_callbacks.hpp" +#include "scheduler/pending_process_callbacks.hpp" #include "scheduler/scheduler.hpp" #include diff --git a/src/raw_fault_handling.cpp b/src/faults/raw_fault_handling.cpp similarity index 97% rename from src/raw_fault_handling.cpp rename to src/faults/raw_fault_handling.cpp index c167a183..b6ffabed 100644 --- a/src/raw_fault_handling.cpp +++ b/src/faults/raw_fault_handling.cpp @@ -1,4 +1,4 @@ -#include "fault_handler.hpp" +#include "faults/fault_handler.hpp" #include "nrf52833.h" #include diff --git a/src/gpio_event_controller.cpp b/src/hal/gpio_event_controller.cpp similarity index 100% rename from src/gpio_event_controller.cpp rename to src/hal/gpio_event_controller.cpp diff --git a/src/gpio_wrapper.cpp b/src/hal/gpio_wrapper.cpp similarity index 100% rename from src/gpio_wrapper.cpp rename to src/hal/gpio_wrapper.cpp diff --git a/src/hal_enums.cpp b/src/hal/hal_enums.cpp similarity index 100% rename from src/hal_enums.cpp rename to src/hal/hal_enums.cpp diff --git a/src/ipc_manager.cpp b/src/ipc/ipc_manager.cpp similarity index 95% rename from src/ipc_manager.cpp rename to src/ipc/ipc_manager.cpp index 81082f06..cc018395 100644 --- a/src/ipc_manager.cpp +++ b/src/ipc/ipc_manager.cpp @@ -1,6 +1,6 @@ #include "ipc/ipc_manager.hpp" -#include "pending_process_callbacks.hpp" +#include "scheduler/pending_process_callbacks.hpp" #include "util.hpp" #include diff --git a/src/mpu.cpp b/src/scheduler/mpu.cpp similarity index 100% rename from src/mpu.cpp rename to src/scheduler/mpu.cpp diff --git a/src/pending_process_callbacks.cpp b/src/scheduler/pending_process_callbacks.cpp similarity index 94% rename from src/pending_process_callbacks.cpp rename to src/scheduler/pending_process_callbacks.cpp index e019828e..0f131a9d 100644 --- a/src/pending_process_callbacks.cpp +++ b/src/scheduler/pending_process_callbacks.cpp @@ -1,4 +1,4 @@ -#include "pending_process_callbacks.hpp" +#include "scheduler/pending_process_callbacks.hpp" #include diff --git a/src/scheduler.cpp b/src/scheduler/scheduler.cpp similarity index 99% rename from src/scheduler.cpp rename to src/scheduler/scheduler.cpp index ed74e3ca..64a8cb0d 100644 --- a/src/scheduler.cpp +++ b/src/scheduler/scheduler.cpp @@ -2,7 +2,7 @@ #include "drivers/driver_commands.hpp" #include "nrf52833.h" -#include "pending_process_callbacks.hpp" +#include "scheduler/pending_process_callbacks.hpp" #include "scheduler/mpu.hpp" #include "util.hpp" diff --git a/src/svc.cpp b/src/svc/svc.cpp similarity index 98% rename from src/svc.cpp rename to src/svc/svc.cpp index 4c797829..ec6f9461 100644 --- a/src/svc.cpp +++ b/src/svc/svc.cpp @@ -1,6 +1,6 @@ #include "drivers/driver_commands.hpp" #include "drivers/driver_enums.hpp" -#include "fault_handler.hpp" +#include "faults/fault_handler.hpp" #include "ipc/ipc_command_types.hpp" #include "ipc/ipc_manager.hpp" #include "scheduler/scheduler.hpp" diff --git a/src/user/user_program_exception.cpp b/src/user_programs/user_program_exception.cpp similarity index 100% rename from src/user/user_program_exception.cpp rename to src/user_programs/user_program_exception.cpp diff --git a/src/user/user_program_ipc_part_1.cpp b/src/user_programs/user_program_ipc_part_1.cpp similarity index 100% rename from src/user/user_program_ipc_part_1.cpp rename to src/user_programs/user_program_ipc_part_1.cpp diff --git a/src/user/user_program_ipc_part_2.cpp b/src/user_programs/user_program_ipc_part_2.cpp similarity index 100% rename from src/user/user_program_ipc_part_2.cpp rename to src/user_programs/user_program_ipc_part_2.cpp diff --git a/src/syscalls.cpp b/src/userlib/syscalls.cpp similarity index 91% rename from src/syscalls.cpp rename to src/userlib/syscalls.cpp index 14ab74a4..c82fc3ab 100644 --- a/src/syscalls.cpp +++ b/src/userlib/syscalls.cpp @@ -2,12 +2,15 @@ #include "drivers/driver_enums.hpp" #include "ipc/ipc_command_types.hpp" -#include "register_utils.hpp" #include "userlib/system_call_type.hpp" #include "util.hpp" #include +#define TRIGGER_SVC(call_type) asm volatile("svc %0" ::"I"(call_type)) +#define SET_REGISTER(reg, value) asm volatile("mov " #reg ", %0" ::"r"(value) : #reg) +#define READ_REGISTER(reg, var) asm volatile("mov %0, " #reg : "=r"(var)) + #define RETURN_REGISTER(reg) \ int ret; \ READ_REGISTER(reg, ret); \