-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
63 lines (51 loc) · 2 KB
/
main.py
File metadata and controls
63 lines (51 loc) · 2 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
import logging
import sys
import thread
import time
import MySQLdb
import states.brake_2_state
import states.brake_state
import states.demo_motors_state
import states.fault_state
import states.initialization_state
import states.push_state
import states.ready_state
import states.ready_state
import states.sensor_data_acquisition_state
import states.sensor_data_acquisition_state
import states.wait_for_pod_to_stop_state
import ready_listener
from drive_controller import DriveController
from dto.pod_data import PodData
from mysql_wrapper import MySQLWrapper
from reporters.spacex_udp_sender import spacex_udp_sender
def enter_fault_state():
states.fault_state.start(pod_data, sql_wrapper)
# Give it time to send fault state to spacex and abort
time.sleep(10)
sys.exit(1)
logging.basicConfig(filename='test.log', level=logging.DEBUG)
logging.getLogger().addHandler(logging.StreamHandler())
pod_data = PodData()
sql_wrapper = MySQLWrapper(logging)
thread.start_new_thread(spacex_udp_sender, (pod_data,logging))
drive_controller = DriveController()
inited_tty = None
suspension_tcp_socket = None
try:
inited_tty, suspension_tcp_socket = states.initialization_state.start(pod_data, sql_wrapper, drive_controller)
except MySQLdb.OperationalError, e:
logging.error("Initialization state failed because of mysql operational error: " + str(e) + ". Aborting run...")
enter_fault_state()
except RuntimeError, e:
logging.error(e)
enter_fault_state()
ready_listener.start_listener(logging, pod_data, sql_wrapper)
states.sensor_data_acquisition_state.start(pod_data, suspension_tcp_socket, sql_wrapper, logging, inited_tty)
states.ready_state.start(pod_data, sql_wrapper)
states.push_state.start(pod_data, inited_tty, sql_wrapper)
states.brake_state.start(pod_data, sql_wrapper, drive_controller)
thread.start_new_thread(states.wait_for_pod_to_stop_state.start, (pod_data, sql_wrapper, drive_controller))
states.brake_2_state.start(pod_data, drive_controller, sql_wrapper, logging)
while True:
time.sleep(1)