Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Create modules skeleton for new app structure (#382)
* Add modules and main.cpp skeleton

* Fix typos
  • Loading branch information
cindyli-13 authored and upadhyaydhruv committed Feb 4, 2022
commit b489be414848ac68c3ed25f5e42687f4cc5b1c0c
9 changes: 9 additions & 0 deletions rover-apps/arm/include/AppConfig.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#pragma once

#include <vector>

#include "Module.h"

std::vector<Module*> gModules = {
// put modules here
};
7 changes: 7 additions & 0 deletions rover-apps/arm_2021/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
<<<<<<< HEAD:rover-apps/arm_2021/CMakeLists.txt
add_executable(arm_2021)
target_sources(arm_2021 PRIVATE src/main.cpp)
target_include_directories(arm_2021 PUBLIC include)
target_link_libraries(arm_2021
=======
add_executable(arm)
target_sources(arm PRIVATE ../common/src/main.cpp)
target_include_directories(arm PUBLIC include ../common/include)
target_link_libraries(arm
>>>>>>> Create modules skeleton for new app structure (#382):rover-apps/arm/CMakeLists.txt
PRIVATE
#Control
OpenLoopController
Expand Down
Empty file.
10 changes: 10 additions & 0 deletions rover-apps/common/include/Module.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#pragma once

class Module {
public:
virtual void periodic_10s(void) = 0;
virtual void periodic_1s(void) = 0;
virtual void periodic_100ms(void) = 0;
virtual void periodic_10ms(void) = 0;
virtual void periodic_1ms(void) = 0;
};
59 changes: 59 additions & 0 deletions rover-apps/common/src/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#include "AppConfig.h"
#include "mbed.h"

Thread periodic_10s_thread(osPriorityNormal1);
Thread periodic_1s_thread(osPriorityNormal2);
Thread periodic_100ms_thread(osPriorityNormal3);
Thread periodic_10ms_thread(osPriorityNormal4);
Thread periodic_1ms_thread(osPriorityNormal5);

void periodic_10s(void) {
auto startTime = Kernel::Clock::now();
for (Module* module : gModules) {
module->periodic_10s();
}
ThisThread::sleep_until(startTime + 10s);
}

void periodic_1s(void) {
auto startTime = Kernel::Clock::now();
for (Module* module : gModules) {
module->periodic_1s();
}
ThisThread::sleep_until(startTime + 1s);
}

void periodic_100ms(void) {
auto startTime = Kernel::Clock::now();
for (Module* module : gModules) {
module->periodic_100ms();
}
ThisThread::sleep_until(startTime + 100ms);
}

void periodic_10ms(void) {
auto startTime = Kernel::Clock::now();
for (Module* module : gModules) {
module->periodic_10ms();
}
ThisThread::sleep_until(startTime + 10ms);
}

void periodic_1ms(void) {
auto startTime = Kernel::Clock::now();
for (Module* module : gModules) {
module->periodic_1ms();
}
ThisThread::sleep_until(startTime + 1ms);
}

int main() {
periodic_1ms_thread.start(periodic_1ms);
periodic_10ms_thread.start(periodic_10ms);
periodic_100ms_thread.start(periodic_100ms);
periodic_1s_thread.start(periodic_1s);
periodic_10s_thread.start(periodic_10s);

while (true) {
}
}
9 changes: 9 additions & 0 deletions rover-apps/gimbal/include/AppConfig.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#pragma once

#include <vector>

#include "Module.h"

std::vector<Module*> gModules = {
// put modules here
};
7 changes: 7 additions & 0 deletions rover-apps/gimbal_2021/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
<<<<<<< HEAD:rover-apps/gimbal_2021/CMakeLists.txt
add_executable(gimbal_2021)
target_sources(gimbal_2021 PRIVATE src/main.cpp)
target_include_directories(gimbal_2021 PUBLIC include)
target_link_libraries(gimbal_2021
=======
add_executable(gimbal)
target_sources(gimbal PRIVATE ../common/src/main.cpp)
target_include_directories(gimbal PUBLIC include ../common/include)
target_link_libraries(gimbal
>>>>>>> Create modules skeleton for new app structure (#382):rover-apps/gimbal/CMakeLists.txt
PRIVATE
#Control
OpenLoopController
Expand Down
9 changes: 9 additions & 0 deletions rover-apps/science/include/AppConfig.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#pragma once

#include <vector>

#include "Module.h"

std::vector<Module*> gModules = {
// put modules here
};
7 changes: 7 additions & 0 deletions rover-apps/science_2021/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
<<<<<<< HEAD:rover-apps/science_2021/CMakeLists.txt
add_executable(science_2021)
target_sources(science_2021 PRIVATE src/main.cpp)
target_include_directories(science_2021 PUBLIC include)
target_link_libraries(science_2021
=======
add_executable(science)
target_sources(science PRIVATE ../common/src/main.cpp)
target_include_directories(science PUBLIC include ../common/include)
target_link_libraries(science
>>>>>>> Create modules skeleton for new app structure (#382):rover-apps/science/CMakeLists.txt
PRIVATE
#Control
OpenLoopController
Expand Down