Skip to content

Commit 4b5c8d6

Browse files
committed
Create modules skeleton for new app structure (#382)
* Add modules and main.cpp skeleton * Fix typos
1 parent ccc1364 commit 4b5c8d6

File tree

9 files changed

+117
-0
lines changed

9 files changed

+117
-0
lines changed

rover-apps/arm/include/AppConfig.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#pragma once
2+
3+
#include <vector>
4+
5+
#include "Module.h"
6+
7+
std::vector<Module*> gModules = {
8+
// put modules here
9+
};

rover-apps/arm_2021/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1+
<<<<<<< HEAD:rover-apps/arm_2021/CMakeLists.txt
12
add_executable(arm_2021)
23
target_sources(arm_2021 PRIVATE src/main.cpp)
34
target_include_directories(arm_2021 PUBLIC include)
45
target_link_libraries(arm_2021
6+
=======
7+
add_executable(arm)
8+
target_sources(arm PRIVATE ../common/src/main.cpp)
9+
target_include_directories(arm PUBLIC include ../common/include)
10+
target_link_libraries(arm
11+
>>>>>>> Create modules skeleton for new app structure (#382):rover-apps/arm/CMakeLists.txt
512
PRIVATE
613
#Control
714
OpenLoopController

rover-apps/common/CMakeLists.txt

Whitespace-only changes.

rover-apps/common/include/Module.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#pragma once
2+
3+
class Module {
4+
public:
5+
virtual void periodic_10s(void) = 0;
6+
virtual void periodic_1s(void) = 0;
7+
virtual void periodic_100ms(void) = 0;
8+
virtual void periodic_10ms(void) = 0;
9+
virtual void periodic_1ms(void) = 0;
10+
};

rover-apps/common/src/main.cpp

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#include "AppConfig.h"
2+
#include "mbed.h"
3+
4+
Thread periodic_10s_thread(osPriorityNormal1);
5+
Thread periodic_1s_thread(osPriorityNormal2);
6+
Thread periodic_100ms_thread(osPriorityNormal3);
7+
Thread periodic_10ms_thread(osPriorityNormal4);
8+
Thread periodic_1ms_thread(osPriorityNormal5);
9+
10+
void periodic_10s(void) {
11+
auto startTime = Kernel::Clock::now();
12+
for (Module* module : gModules) {
13+
module->periodic_10s();
14+
}
15+
ThisThread::sleep_until(startTime + 10s);
16+
}
17+
18+
void periodic_1s(void) {
19+
auto startTime = Kernel::Clock::now();
20+
for (Module* module : gModules) {
21+
module->periodic_1s();
22+
}
23+
ThisThread::sleep_until(startTime + 1s);
24+
}
25+
26+
void periodic_100ms(void) {
27+
auto startTime = Kernel::Clock::now();
28+
for (Module* module : gModules) {
29+
module->periodic_100ms();
30+
}
31+
ThisThread::sleep_until(startTime + 100ms);
32+
}
33+
34+
void periodic_10ms(void) {
35+
auto startTime = Kernel::Clock::now();
36+
for (Module* module : gModules) {
37+
module->periodic_10ms();
38+
}
39+
ThisThread::sleep_until(startTime + 10ms);
40+
}
41+
42+
void periodic_1ms(void) {
43+
auto startTime = Kernel::Clock::now();
44+
for (Module* module : gModules) {
45+
module->periodic_1ms();
46+
}
47+
ThisThread::sleep_until(startTime + 1ms);
48+
}
49+
50+
int main() {
51+
periodic_1ms_thread.start(periodic_1ms);
52+
periodic_10ms_thread.start(periodic_10ms);
53+
periodic_100ms_thread.start(periodic_100ms);
54+
periodic_1s_thread.start(periodic_1s);
55+
periodic_10s_thread.start(periodic_10s);
56+
57+
while (true) {
58+
}
59+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#pragma once
2+
3+
#include <vector>
4+
5+
#include "Module.h"
6+
7+
std::vector<Module*> gModules = {
8+
// put modules here
9+
};

rover-apps/gimbal_2021/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1+
<<<<<<< HEAD:rover-apps/gimbal_2021/CMakeLists.txt
12
add_executable(gimbal_2021)
23
target_sources(gimbal_2021 PRIVATE src/main.cpp)
34
target_include_directories(gimbal_2021 PUBLIC include)
45
target_link_libraries(gimbal_2021
6+
=======
7+
add_executable(gimbal)
8+
target_sources(gimbal PRIVATE ../common/src/main.cpp)
9+
target_include_directories(gimbal PUBLIC include ../common/include)
10+
target_link_libraries(gimbal
11+
>>>>>>> Create modules skeleton for new app structure (#382):rover-apps/gimbal/CMakeLists.txt
512
PRIVATE
613
#Control
714
OpenLoopController
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#pragma once
2+
3+
#include <vector>
4+
5+
#include "Module.h"
6+
7+
std::vector<Module*> gModules = {
8+
// put modules here
9+
};

rover-apps/science_2021/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1+
<<<<<<< HEAD:rover-apps/science_2021/CMakeLists.txt
12
add_executable(science_2021)
23
target_sources(science_2021 PRIVATE src/main.cpp)
34
target_include_directories(science_2021 PUBLIC include)
45
target_link_libraries(science_2021
6+
=======
7+
add_executable(science)
8+
target_sources(science PRIVATE ../common/src/main.cpp)
9+
target_include_directories(science PUBLIC include ../common/include)
10+
target_link_libraries(science
11+
>>>>>>> Create modules skeleton for new app structure (#382):rover-apps/science/CMakeLists.txt
512
PRIVATE
613
#Control
714
OpenLoopController

0 commit comments

Comments
 (0)