Vehicle Control Unit 0.01
This is the c library for controlling the car.
Loading...
Searching...
No Matches
AppsMonitor.c
Go to the documentation of this file.
1#include "../../../Inc/Systems/Monitor/AppsMonitor.h"
2#include "../../../Inc/Utils/Common.h"
3#include <math.h>
4
5// Make new Apps MonitorSystem
6void initAppsMonitor(AppsMonitor* am, Apps* apps, int hz) {
8 am->apps = apps;
9 am->status = APPS_OK;
10}
11
12// Start the Apps MonitorSystem
14 if (am->base.runMonitor == NULL) {
15 printf("Monitor function not set for AppsMonitor\n");
16 return _FAILURE;
17 }
18 ENABLE(am->base.system);
19 return _SUCCESS;
20}
21
22// Check the Apps MonitorSystem
23int checkAppsMonitor(void* am) {
24 AppsMonitor* amPtr = (AppsMonitor*)am;
25 Apps* apps = amPtr->apps;
26 checkAppsLimit(apps);
27 if (apps->status != APPS_OK && apps->status != APPS_LOW) {
28 return _FAILURE;
29 }
30 if (apps->status == APPS_LOW) {
31 printf("AppsMonitor: APPS position is too low. Defaulting to 0 to pass\r\n");
32 }
33 return _SUCCESS;
34}
35
36
37void checkAppsLimit(Apps* apps) {
38 float pos1 = getAppPosition(apps->app[0]);
39 float pos2 = getAppPosition(apps->app[1]);
40
41 // Resonable Value check upper bound
42 if (pos1 > 100 || pos2 > 100) {
43 apps->status = APPS_FAULT;
44 return;
45 }
46
47 // In sync check
48 float difference = fabs(pos1 - pos2);
49 if (difference > APPS_DIFFERENCE * 100) {
50 apps->status = APPS_FAULT;
51 return;
52 }
53
54 // Resonable Value check lower bound
55 if (pos1 < 0 || pos2 < 0) {
56 apps->status = APPS_LOW;
57 return;
58 }
59
60 apps->status = APPS_OK;
61}
float getAppPosition(App *app)
Gets the current position of the APP.
Definition: App.c:11
void initAppsMonitor(AppsMonitor *am, Apps *apps, int hz)
Definition: AppsMonitor.c:6
int startAppsMonitor(AppsMonitor *am)
Definition: AppsMonitor.c:13
void checkAppsLimit(Apps *apps)
Checks App limits for faults.
Definition: AppsMonitor.c:37
int checkAppsMonitor(void *am)
Definition: AppsMonitor.c:23
@ APPS_LOW
Definition: Apps.h:19
@ APPS_OK
Definition: Apps.h:17
@ APPS_FAULT
Definition: Apps.h:18
#define APPS_DIFFERENCE
Definition: Apps.h:14
#define _FAILURE
Definition: Common.h:6
#define _SUCCESS
Definition: Common.h:5
void initMonitorSystem(MonitorSystem *monitor, const char *name, int hz, MonitorType type, FaultType fault, int(*runMonitor)(void *self))
Initializes the Monitor System with initial settings.
Definition: MonitorSystem.c:3
@ m_APPS
Definition: MonitorSystem.h:12
@ VEHICLE_SHUTDOWN
Definition: MonitorSystem.h:23
#define ENABLE(item_)
Definition: Updateable.h:10
AppsStatus status
Definition: AppsMonitor.h:10
Apps * apps
Definition: AppsMonitor.h:9
MonitorSystem base
Definition: AppsMonitor.h:8
Definition: Apps.h:22
App * app[2]
Definition: Apps.h:25
AppsStatus status
Definition: Apps.h:24
int(* runMonitor)(void *self)
Definition: MonitorSystem.h:30