Skip to content

Commit 8cf5328

Browse files
author
Ezra Boley
authored
Merge pull request #95 from badgerloop-software/Dash-Buttons
Initial Button fixing
2 parents acf9230 + e563d09 commit 8cf5328

File tree

6 files changed

+156
-111
lines changed

6 files changed

+156
-111
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,4 +258,5 @@ $RECYCLE.BIN/
258258
**/public/fonts
259259
**/public/images
260260

261-
.vscode/
261+
/.vscode
262+
.vscode/

embedded/app/src/init.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,13 @@ int initData() {
5959
}
6060

6161
int initMetaData() {
62-
if ((data = (data_t *) malloc(sizeof(data_t))) == NULL) { return 1; }
63-
if ((data->pressure = (pressure_t *) malloc(sizeof(pressure_t))) == NULL) { return 1; }
64-
if ((data->motion = (motion_t *)malloc(sizeof(motion_t))) == NULL) { return 1; }
65-
if ((data->bms = (bms_t *) malloc(sizeof(bms_t))) == NULL) { return 1; }
66-
if ((data->rms = (rms_t *) malloc(sizeof(rms_t))) == NULL) { return 1; }
67-
if ((data->flags = (flags_t *) malloc(sizeof(flags_t))) == NULL) { return 1; }
68-
if ((data->timers = (timers_t *) malloc(sizeof(timers_t))) == NULL) { return 1; }
62+
if ((data = (data_t *) malloc(sizeof(data_t))) == NULL) { return 1; }
63+
if ((data->pressure = (pressure_t *) malloc(sizeof(pressure_t))) == NULL) { return 1; }
64+
if ((data->motion = (motion_t *)malloc(sizeof(motion_t))) == NULL) { return 1; }
65+
if ((data->bms = (bms_t *) malloc(sizeof(bms_t))) == NULL) { return 1; }
66+
if ((data->rms = (rms_t *) malloc(sizeof(rms_t))) == NULL) { return 1; }
67+
if ((data->flags = (flags_t *) malloc(sizeof(flags_t))) == NULL) { return 1; }
68+
if ((data->timers = (timers_t *) malloc(sizeof(timers_t))) == NULL) { return 1; }
6969
data->state = 0;
7070
return 0;
7171
}

embedded/app/src/states.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,9 @@ stateTransition_t * safeToApproachAction() {
437437
data->state = 10;
438438
return NULL;
439439
}
440-
440+
//
441+
// We're removing pre and post faults and making them non run faults.
442+
// When you change this make 11 the non run fault action. Ty - EU
441443
stateTransition_t * preFaultAction() {
442444
//TODO
443445
data->state = 11;

embedded/peripherals/include/braking.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,11 @@ void showPressures(void);
3131

3232
int joinPressureMonitor(void);
3333

34+
void brakePrimary(void);
35+
36+
void brakeSecondary(void);
37+
38+
void brakePrimaryRelease(void);
39+
40+
void brakeSecondaryRelease(void);
41+

embedded/peripherals/include/hv_iox.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,6 @@ int isEStopOn(void);
4545

4646
int getMasterSwFeedback(void);
4747

48+
int setMCUHVEnabled(int val);
49+
4850
#endif

middleware/src/HVTCPSocket.cpp

Lines changed: 134 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
1-
#include <unistd.h>
2-
#include <stdio.h>
3-
#include <sys/socket.h>
4-
#include <stdlib.h>
5-
#include <netinet/in.h>
6-
#include <string.h>
1+
#include <unistd.h>
2+
#include <stdio.h>
3+
#include <sys/socket.h>
4+
#include <stdlib.h>
5+
#include <netinet/in.h>
6+
#include <string.h>
77
#include <pthread.h>
88
#include <unistd.h>
99

10-
extern "C" {
11-
#include "data.h"
12-
}
13-
1410
#include "HVTCPSocket.h"
1511
#include "connStat.h"
12+
13+
extern "C"
14+
{
15+
#include "data.h"
1616
#include "state_machine.h"
17+
#include "hv_iox.h"
18+
#include <braking.h>
19+
}
20+
1721

1822
pthread_t HVTCPThread, connStatThread;
1923

@@ -31,112 +35,135 @@ void SetupHVTCPServer(){
3135
fprintf(stderr, "Error creating connection watcher\n");
3236
}
3337

34-
if (pthread_create(&HVTCPThread, NULL, TCPLoop, NULL)){
35-
fprintf(stderr, "Error creating HV Telemetry thread\n");
36-
}
38+
if (pthread_create(&HVTCPThread, NULL, TCPLoop, NULL)){
39+
fprintf(stderr, "Error creating HV Telemetry thread\n");
40+
}
3741
}
3842

39-
4043
/* Thread Loop */
41-
void *TCPLoop(void *arg){
42-
43-
(void) arg;
44+
void *TCPLoop(void *arg)
45+
{
46+
47+
(void)arg;
4448

4549
int server_fd, new_socket;
4650
int opt = 1;
47-
51+
4852
struct sockaddr_in address;
4953
int addrlen = sizeof(address);
50-
54+
5155
// Create Server fd
52-
if((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0){
56+
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0)
57+
{
5358
fprintf(stderr, "Error creating socket FD\n");
54-
exit(EXIT_FAILURE);
55-
}
56-
59+
exit(EXIT_FAILURE);
60+
}
61+
5762
// Attach Socket
58-
if(setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT,
59-
&opt, sizeof(opt))){
63+
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT,
64+
&opt, sizeof(opt)))
65+
{
6066
fprintf(stderr, "Error attaching socket\n");
61-
exit(EXIT_FAILURE);
67+
exit(EXIT_FAILURE);
6268
}
63-
64-
address.sin_family = AF_INET;
65-
address.sin_addr.s_addr = INADDR_ANY;
66-
address.sin_port = htons(HV_TCP_PORT_RECV);
67-
69+
70+
address.sin_family = AF_INET;
71+
address.sin_addr.s_addr = INADDR_ANY;
72+
address.sin_port = htons(HV_TCP_PORT_RECV);
73+
6874
// Bind Socket
69-
if (bind(server_fd, (struct sockaddr *)&address,
70-
sizeof(address))<0) {
75+
if (bind(server_fd, (struct sockaddr *)&address,
76+
sizeof(address)) < 0)
77+
{
7178
fprintf(stderr, "Error binding port\n");
72-
exit(EXIT_FAILURE);
79+
exit(EXIT_FAILURE);
7380
}
74-
81+
7582
// Listen on the server
76-
if (listen(server_fd, 3) < 0){
83+
if (listen(server_fd, 3) < 0)
84+
{
7785
fprintf(stderr, "Error listening\n");
78-
exit(EXIT_FAILURE);
86+
exit(EXIT_FAILURE);
7987
}
80-
88+
8189
// Loop
82-
while(1){
83-
90+
while (1)
91+
{
92+
8493
// Character Buffer
85-
char buffer[1024] = {0};
86-
94+
char buffer[1024] = {0};
95+
8796
// Read incoming message
88-
if ((new_socket = accept(server_fd, (struct sockaddr *)&address,
89-
(socklen_t*)&addrlen))<0){
90-
fprintf(stderr, "Error accepting a packet\n");
91-
exit(EXIT_FAILURE);
97+
if ((new_socket = accept(server_fd, (struct sockaddr *)&address,
98+
(socklen_t *)&addrlen)) < 0)
99+
{
100+
fprintf(stderr, "Error accepting a packet\n");
101+
exit(EXIT_FAILURE);
92102
}
93-
94-
*lastPacket = getuSTimestamp();
103+
104+
*lastPacket = getuSTimestamp();
95105

96-
read(new_socket, buffer, 1024);
106+
read(new_socket, buffer, 1024);
97107

98108
printf("RECEIVED: %s\n",buffer);
99109

100110
// Do things
101-
if(!strncmp(buffer, "readyPump", MAX_COMMAND_SIZE)){
111+
if (!strncmp(buffer, "readyPump", MAX_COMMAND_SIZE))
112+
{
102113
data->flags->readyPump = 1;
103114
}
104-
105-
if(!strncmp(buffer, "pumpDown", MAX_COMMAND_SIZE)){
115+
116+
if (!strncmp(buffer, "pumpDown", MAX_COMMAND_SIZE))
117+
{
106118
data->flags->readyPump = 1;
107119
}
108-
109-
if(!strncmp(buffer, "readyCommand", MAX_COMMAND_SIZE)){
120+
121+
if (!strncmp(buffer, "readyCommand", MAX_COMMAND_SIZE))
122+
{
110123
data->flags->readyCommand = 1;
111124
}
112-
113-
if(!strncmp(buffer, "propulse", MAX_COMMAND_SIZE)){
125+
126+
if (!strncmp(buffer, "propulse", MAX_COMMAND_SIZE))
127+
{
114128
data->flags->propulse = 1;
115129
}
116-
117-
if(!strncmp(buffer, "emergencyBrake", MAX_COMMAND_SIZE)){
130+
131+
if (!strncmp(buffer, "emergencyBrake", MAX_COMMAND_SIZE))
132+
{
118133
data->flags->emergencyBrake = 1;
119134
}
120135

121-
if(!strncmp(buffer, "primBrakeOff", MAX_COMMAND_SIZE)){
122-
// TODO Turn primary brake off
136+
if (!strncmp(buffer, "primBrakeOff", MAX_COMMAND_SIZE))
137+
{
138+
brakePrimaryRelease();
139+
}
140+
if (!strncmp(buffer, "primBrakeOn", MAX_COMMAND_SIZE))
141+
{
142+
brakePrimary();
123143
}
124-
if(!strncmp(buffer, "primBrakeOn", MAX_COMMAND_SIZE)){
125-
// TODO Turn primary brake on
144+
if (!strncmp(buffer, "secBrakeOff", MAX_COMMAND_SIZE))
145+
{
146+
brakeSecondaryRelease();
126147
}
127-
if(!strncmp(buffer, "secBrakeOff", MAX_COMMAND_SIZE)){
128-
// TODO Turn sec brake off
148+
if (!strncmp(buffer, "secBrakeOn", MAX_COMMAND_SIZE))
149+
{
150+
brakeSecondary();
129151
}
130-
if(!strncmp(buffer, "secBrakeOn", MAX_COMMAND_SIZE)){
131-
// TODO turn sec brake on
152+
153+
if (!strncmp(buffer, "hvEnable", MAX_COMMAND_SIZE))
154+
{
155+
setMCUHVEnabled(true);
132156
}
133157

134-
if(!strncmp(buffer, "hvEnable", MAX_COMMAND_SIZE)){
135-
// TODO turn hv on
158+
if (!strncmp(buffer, "hvDisable", MAX_COMMAND_SIZE))
159+
{
160+
setMCUHVEnabled(false);
136161
}
137162

138-
if(!strncmp(buffer, "hvDisable", MAX_COMMAND_SIZE)){
139-
// TODO turn hv off
163+
if (!strncmp(buffer, "override", 8))
164+
{
165+
fprintf(stderr, "Override received for state: %s\n", buffer + 9);
166+
sprintf(stateMachine.overrideStateName, "%s\0", buffer + 9);
140167
}
141168

142169
if(!strncmp(buffer, "safetyOn", MAX_COMMAND_SIZE)){
@@ -149,56 +176,61 @@ void *TCPLoop(void *arg){
149176

150177
if(!strncmp(buffer,"override", 8)){
151178
fprintf(stderr, "Override received for state: %s\n", buffer+9);
152-
sprintf(stateMachine.overrideStateName, "%s\0", buffer+9);
153-
}
179+
sprintf(stateMachine.overrideStateName, "%s\0", buffer+9);
180+
}
154181

155182
// HEARTBEAT
156-
if(!strncmp(buffer, "ping", MAX_COMMAND_SIZE)){
183+
if (!strncmp(buffer, "ping", MAX_COMMAND_SIZE))
184+
{
157185
// Send acknowledge packet back
158-
send(new_socket, (char*) "pong1" , strlen("pong1") , 0 );
186+
send(new_socket, (char *)"pong1", strlen("pong1"), 0);
159187
}
160-
188+
161189
close(new_socket);
162190
}
163-
164191
}
165192

193+
void signalLV(char *cmd)
194+
{
195+
int srvFd;
166196

167-
void signalLV(char *cmd) {
168-
int srvFd;
169-
170-
int opt = 1;
197+
int opt = 1;
171198

172-
struct sockaddr_in addr;
173-
int addrlen = sizeof(addr);
199+
struct sockaddr_in addr;
200+
int addrlen = sizeof(addr);
174201

175-
if((srvFd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
176-
fprintf(stderr, "Error signalling\n");
177-
exit(1);
178-
}
202+
if ((srvFd = socket(AF_INET, SOCK_STREAM, 0)) == 0)
203+
{
204+
fprintf(stderr, "Error signalling\n");
205+
exit(1);
206+
}
179207

180-
if (setsockopt(srvFd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT,
181-
&opt, sizeof(opt))) {
182-
fprintf(stderr, "Signal error\n");
183-
exit(1);
184-
}
208+
if (setsockopt(srvFd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT,
209+
&opt, sizeof(opt)))
210+
{
211+
fprintf(stderr, "Signal error\n");
212+
exit(1);
213+
}
185214

186215
addr.sin_family = AF_INET;
187216
addr.sin_addr.s_addr = INADDR_ANY;
188217
addr.sin_port = htons(LV_SERVER_PORT);
189218

190-
if (bind(srvFd, (struct sockaddr *)&addr,
191-
sizeof(addr)) < 0) {
192-
fprintf(stderr, "Error binding\n");
193-
exit(1);
194-
}
195219

196-
if (listen(srvFd, 3) < 0) {
197-
fprintf(stderr, "Error listening\n");
198-
exit(1);
199-
}
220+
if (bind(srvFd, (struct sockaddr *)&addr,
221+
sizeof(addr)) < 0)
222+
{
223+
fprintf(stderr, "Error binding\n");
224+
exit(1);
225+
}
226+
227+
if (listen(srvFd, 3) < 0)
228+
{
229+
fprintf(stderr, "Error listening\n");
230+
exit(1);
231+
}
200232

201-
send(srvFd, cmd, strlen(cmd), 0);
233+
send(srvFd, cmd, strlen(cmd), 0);
202234

203-
close(srvFd);
235+
close(srvFd);
204236
}

0 commit comments

Comments
 (0)