-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSensorData.cpp
More file actions
129 lines (113 loc) · 2.81 KB
/
SensorData.cpp
File metadata and controls
129 lines (113 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include "SensorData.h"
#include <Arduino.h>
#include <FlexCAN_T4.h>
/**
* @brief Default constructor for SensorData class
*
* Instructions to send an ERROR message:
* inId = IDERROR = 0
* inData = {sensorID, shutDown, errorType, **errorData}
* inDataLength = 3 + errorDataLength
* inTimeStamp = millis()
*
* shutDown:
* 0: No shutdown
* 1: Shutdown
* errorType:
* 0: No Error
* 1: Warning
* 2: Critical
* 3: Fatal
*/
SensorData::SensorData() {
id = 0;
data = {0};
timeStamp = 0;
dataLength = 0;
}
/**
* @brief Constructor for SensorData class
*
* @param inId (int) The unique identifier for the sensor.
* @param inData (int*) The data from the sensor.
* @param inDataLength (int) The length of the data array.
* @param inTimeStamp (unsigned long) The timestamp of the data.
*/
SensorData::SensorData(int inId, int* inData, int inDataLength, unsigned long inTimeStamp) {
id = inId;
data = inData;
dataLength = inDataLength;
timeStamp = inTimeStamp;
}
/**
* @brief CAN Constructor for SensorData class
*
* @param canMessage (CAN_message_t) The CAN message to be converted to a SensorData.
* Everything else is the same as the other constructor.
*/
SensorData::SensorData(CAN_message_t canMessage) {
id = canMessage.id;
timeStamp = canMessage.timestamp;
dataLength = canMessage.len;
data = new int[dataLength];
for (int i = 0; i < dataLength; i++) {
data[i] = canMessage.buf[i];
}
}
/**
* @brief Destructor for SensorData class
*/
SensorData::~SensorData() {
delete[] data;
}
// Getters and Setters
int SensorData::getTimeStamp() const {
return timeStamp;
}
int SensorData::getId() const {
return id;
}
int* SensorData::getData() const {
return data;
}
int SensorData::length() const {
return dataLength;
}
void SensorData::setId(int inId) {
id = inId;
}
void SensorData::setData(int* inData) {
data = inData;
}
void SensorData::setTimeStamp(unsigned long inTimeStamp) {
timeStamp = inTimeStamp;
}
/**
* @brief Format the SensorData into a CAN_message_t.
*
* @return (CAN_message_t) The formmatted CAN message.
*/
CAN_message_t SensorData::formatCAN() const {
CAN_message_t canMessage;
canMessage.id = id;
for (int i = 0; i < dataLength; i++) {
canMessage.buf[i] = data[i];
}
canMessage.len = dataLength;
canMessage.timestamp = timeStamp;
return canMessage;
}
/**
* @brief Print the SensorData to the Serial Monitor.
*/
void SensorData::toString() const {
Serial.println("ID: " + String(id));
Serial.println("Timestamp: " + String(timeStamp));
Serial.println("Data Length: " + String(dataLength));
Serial.print("Data: ");
for (int i = 0; i < dataLength; i++) {
Serial.print(data[i]);
Serial.print(" ");
}
Serial.println();
}