-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathBowieLogger.cpp
More file actions
124 lines (93 loc) · 2.8 KB
/
Copy pathBowieLogger.cpp
File metadata and controls
124 lines (93 loc) · 2.8 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
#include "BowieLogger.h"
BowieLogger::BowieLogger() {
}
void BowieLogger::begin() {
// how often to write a new file (mins)
TIMEOUT_MINS = 15;
// how often to write a new file (seconds)
TIMEOUT_SECS = 0;
// how often to log data (seconds)
INTERVAL_SECS = 1;
log_headers[0] = "Time";
log_headers[1] = "Motor A Speed";
log_headers[2] = "Motor A Dir";
log_headers[3] = "Motor B Speed";
log_headers[4] = "Motor B Dir";
log_headers[5] = "Motor Current Sensor";
log_headers[6] = "Servo Pos - Arm L";
log_headers[7] = "Servo Pos - Arm R";
log_headers[8] = "Servo Pos - End";
log_headers[9] = "Servo Pos - Hopper";
log_headers[10] = "Servo Pos - Lid";
log_headers[11] = "Servo Pos - Extra";
log_headers[12] = "Servo Current Sensor";
log_headers[13] = "LED - Front L";
log_headers[14] = "LED - Front R";
log_headers[15] = "LED - Back L";
log_headers[16] = "LED - Back R";
log_headers[17] = "IMU Pitch";
log_headers[18] = "IMU Roll";
log_headers[19] = "IMU Yaw";
log_headers[20] = "Compass Heading";
log_headers[21] = "GPS Sats";
log_headers[22] = "GPS HDOP";
log_headers[23] = "GPS Latitude";
log_headers[24] = "GPS Longitude";
log_headers[25] = "GPS Altitude";
log_headers[26] = "Battery";
log_headers[27] = "Comm Xbee Latency";
log_headers[28] = "Comm Arduino Latency";
log_headers[29] = "Humidity";
log_headers[30] = "Temperature";
log_headers[31] = "uRADMonitor";
logdata = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
LOGGING = false;
logging_path = "";
last_time_check = 0;
LOG_LED = 13;
}
void BowieLogger::setLoggingLed(int pin) {
LOG_LED = pin;
}
void BowieLogger::initLogging() {
pinMode(LOG_LED, OUTPUT);
if(!initSd()) {
Serial.println("!!! Unable to start logging !!!");
LOGGING = false;
} else {
// only log if we have space!
if(getPercentAvailable() >= 5.0) {
LOGGING = true;
createLogFile();
} else {
Serial.println("!!! Not enough space available for logging !!!");
LOGGING = false;
}
}
}
void BowieLogger::updateLogging() {
if(LOGGING) {
uint32_t difference = (uint32_t)(log_interval - now());
uint8_t difference_sec = difference % 60;
if(millis()-last_time_check >= 1000) {
logFileTimer();
last_time_check = millis();
}
if(difference_sec <= 0) {
// get the data
// NOTE: we are assuming this is done from the sketch side
// open the file
openLogFile();
// log it to file
if(DEBUG_PRINTS) Serial.println("Logging data");
writeLogData();
// close the file
closeLogFile();
log_interval = now() + INTERVAL_SECS;
}
digitalWrite(LOG_LED, HIGH);
} else {
digitalWrite(LOG_LED, LOW);
}
}