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
1822pthread_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