-
Notifications
You must be signed in to change notification settings - Fork 3
/
sat_sim_example_usage.py
89 lines (67 loc) · 2.53 KB
/
sat_sim_example_usage.py
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
from satellite_simulator.sat_sim import Satellite, Environment, Simulator, SatelliteComponent
import json
import time
def minimal_example():
environment = Environment(connection_strength=10, connection_stability=10,
packet_drop_probability=0.05)
satellite = Satellite(components=[])
simulator = Simulator(environment, satellite)
del environment, satellite
data = ('PING', [])
resp = simulator.send_to_sat(data)
print(resp)
def example_usage():
environment = Environment(connection_strength=10, connection_stability=10,
packet_drop_probability=0)
def volt_effect(old_value, time_delta): return old_value - \
(0.01 * time_delta)
def temp_effect(old_value, time_delta): return [
el + (0.01 * time_delta) for el in old_value]
def wdog_effect(old_value, time_delta): return [
el - time_delta for el in old_value]
satellite_components = [
SatelliteComponent('GPS', 0,
effects_when_on=[
('battery_voltage', volt_effect), ('temps', temp_effect)],
effects_when_off=[]),
SatelliteComponent('WATCHDOG_TIMERS', 1,
effects_when_on=[('watchdogs', wdog_effect)],
effects_when_off=[])
]
satellite = Satellite(satellite_components)
satellite._turn_on_channel(1)
simulator = Simulator(environment, satellite)
del environment, satellite
data_sequence = [
('GET-HK', []),
('TURN-ON', ['0']),
('TURN-ON', ['12']),
('GET-HK', []),
('TURN-OFF', ['0']),
('GET-HK', []),
('PET-WATCHDOG', ['0', '5400']),
('GET-HK', [])
]
for data in data_sequence:
print('sending data: ', data)
resp = simulator.send_to_sat(data)
try:
# try/except because not all responses are json serializable
resp = json.loads(resp)
resp = json.dumps(resp, indent=4)
except json.decoder.JSONDecodeError as e:
pass
print('sat response:', resp)
time.sleep(2)
# doing this so I dont have to keep creating it for each example
return simulator
def flight_schedule_example():
# TODO: refer to outdated implementation on older commit for reference
pass
def run_interactively():
# TODO: refer to outdated implementation on older commit for reference
pass
def main():
example_usage()
if __name__ == "__main__":
main()