Thu, 15 Dec 2011 17:58:22 +0100
betatest corrections
25
646ee4dc3a6b
started communication class and CLI
Malte Bayer <mbayer@neo-soft.org>
parents:
diff
changeset
|
1 | #!/usr/bin/env python |
646ee4dc3a6b
started communication class and CLI
Malte Bayer <mbayer@neo-soft.org>
parents:
diff
changeset
|
2 | """ |
646ee4dc3a6b
started communication class and CLI
Malte Bayer <mbayer@neo-soft.org>
parents:
diff
changeset
|
3 | Freeslot project |
646ee4dc3a6b
started communication class and CLI
Malte Bayer <mbayer@neo-soft.org>
parents:
diff
changeset
|
4 | Command line interface |
646ee4dc3a6b
started communication class and CLI
Malte Bayer <mbayer@neo-soft.org>
parents:
diff
changeset
|
5 | """ |
27
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
6 | |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
7 | from freeslot import Blackbox, LOGLEVEL |
35
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
8 | from optparse import OptionParser |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
9 | from operator import itemgetter |
78
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
10 | from subprocess import Popen, PIPE |
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
11 | import sys, os |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
12 | from copy import copy |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
13 | import curses |
35
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
14 | |
81 | 15 | VERSION = "1.4" |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
16 | MAXSLOTS = 6 |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
17 | TERM = { |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
18 | "caption": "\033[1;37m\033[1;44m", |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
19 | "text": "\033[1;30m", |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
20 | } |
27
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
21 | |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
22 | # disable debug log output |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
23 | LOGLEVEL = 10 |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
24 | |
81 | 25 | SOUNDPREFIX = "quake-" |
26 | ||
78
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
27 | SOUNDS = { |
81 | 28 | "countdown_start": os.path.abspath(SOUNDPREFIX + "sound/countdown.mp3"), |
29 | "race_start": os.path.abspath(SOUNDPREFIX + "sound/racestart.mp3"), | |
30 | "race_prepare": os.path.abspath(SOUNDPREFIX + "sound/siren.mp3"), | |
31 | "lap_record": os.path.abspath(SOUNDPREFIX + "sound/laprecord.mp3"), | |
32 | "fuel_warning1": os.path.abspath(SOUNDPREFIX + "sound/fuel1.mp3"), | |
33 | "fuel_warning2": os.path.abspath(SOUNDPREFIX + "sound/fuel2.mp3"), | |
34 | "fuel_full": os.path.abspath(SOUNDPREFIX + "sound/fuel_full.mp3"), | |
35 | "pitlane_enter": os.path.abspath(SOUNDPREFIX + "sound/pitlane_enter.mp3"), | |
36 | "pitlane_exit": os.path.abspath(SOUNDPREFIX + "sound/pitlane_exit.mp3"), | |
78
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
37 | } |
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
38 | |
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
39 | def trigger_sound(what): |
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
40 | if what in SOUNDS: |
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
41 | Popen(["/usr/bin/mpg123", "-q", SOUNDS[what]]) |
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
42 | #os.spawnlp(os.P_NOWAIT, "/usr/bin/mpg123", "mpg123", SOUNDS[what]) |
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
43 | #Popen(["/usr/bin/mpg123", SOUNDS[what]]).pid |
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
44 | |
27
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
45 | class SlotCli(): |
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
46 | def __init__(self): |
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
47 | self.box = Blackbox() |
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
48 | self.box.connect() |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
49 | self.slot_dummy = { |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
50 | "name": "Unnamed", |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
51 | "laps": 0, |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
52 | "last": 0.00, |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
53 | "best": 0.00, |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
54 | "fuel": 0, |
81 | 55 | "fuel_last": 0, |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
56 | "position": 0, |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
57 | "drive": 0, |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
58 | "status": "Idle", |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
59 | "clk": 0, |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
60 | "car": 0, |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
61 | } |
27
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
62 | |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
63 | self.slot = [ |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
64 | copy(self.slot_dummy), copy(self.slot_dummy), |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
65 | copy(self.slot_dummy), copy(self.slot_dummy), |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
66 | copy(self.slot_dummy), copy(self.slot_dummy), |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
67 | ] |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
68 | self.reset_slots() |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
69 | self.sysclk = 0.00 |
78
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
70 | self.bestlap = 9999999.00 |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
71 | |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
72 | def reset_slots(self): |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
73 | idx = 0 |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
74 | for slt in self.slot: |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
75 | slt["laps"] = 0 |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
76 | slt["last"] = 0.00 |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
77 | slt["best"] = 0.00 |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
78 | slt["fuel"] = 0 |
81 | 79 | slt["fuel_last"] = 0 |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
80 | slt["position"] = idx |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
81 | slt["car"] = idx # used for sort order calculation |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
82 | slt["status"] = self.slot_dummy["status"] |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
83 | slt["clk"] = 0 |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
84 | idx += 1 |
78
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
85 | self.bestlap = 0.00 |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
86 | |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
87 | def update_positions(self): |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
88 | order1 = sorted(self.slot, key=itemgetter( |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
89 | "clk")) |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
90 | order2 = sorted(self.slot, key=itemgetter( |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
91 | "laps"), reverse=True) |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
92 | idx = 1 |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
93 | for tst in order2: |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
94 | self.slot[tst["car"]]["position"] = idx |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
95 | idx += 1 |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
96 | |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
97 | def render_slots(self): |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
98 | self.update_positions() |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
99 | self.scr.addstr(3,0, |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
100 | "Pos | #/Name | Laps | Best | Last | Fuel | Status ", |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
101 | curses.color_pair(2)) |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
102 | for idx in range(MAXSLOTS): |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
103 | self.scr.addstr((3 + self.slot[idx]["position"]), 0, |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
104 | "%3i | %i %15s | %4i | %7.2fs | %7.2fs | %3i%% | %10s" % ( |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
105 | self.slot[idx]["position"], |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
106 | self.slot[idx]["car"] + 1, self.slot[idx]["name"], |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
107 | self.slot[idx]["laps"], |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
108 | self.slot[idx]["best"], |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
109 | self.slot[idx]["last"], |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
110 | self.slot[idx]["fuel"], |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
111 | self.slot[idx]["status"], |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
112 | ) ) |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
113 | |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
114 | def cleartop(self): |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
115 | self.scr.addstr(0,0, "%80s" % "Live monitor running, press keys to control or (q)uit") |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
116 | self.scr.addstr(1,0, "%80s" % " ") |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
117 | |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
118 | def readName(self, slot): |
56
a20f59a3016c
ui fix, added car5+6 detector to blackbox
Malte Bayer <mbayer@neo-soft.org>
parents:
55
diff
changeset
|
119 | self.scr.nodelay(0) # enable delay on readkey |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
120 | curses.echo() |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
121 | self.scr.addstr(0,0, "Enter Name for Controller %i [%s]:" % ( |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
122 | slot + 1, |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
123 | self.slot[slot]["name"]), |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
124 | curses.color_pair(1)) |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
125 | self.scr.refresh() |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
126 | name = self.scr.getstr(1,0, 15) |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
127 | if name != "": |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
128 | self.slot[slot]["name"] = name |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
129 | self.cleartop() |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
130 | self.scr.refresh() |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
131 | curses.noecho() |
56
a20f59a3016c
ui fix, added car5+6 detector to blackbox
Malte Bayer <mbayer@neo-soft.org>
parents:
55
diff
changeset
|
132 | self.scr.nodelay(1) # disable delay on readkey |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
133 | |
74
173d0863a804
added live init to slotcli
Malte Bayer <mbayer@neo-soft.org>
parents:
61
diff
changeset
|
134 | def monitor_init(self): |
173d0863a804
added live init to slotcli
Malte Bayer <mbayer@neo-soft.org>
parents:
61
diff
changeset
|
135 | """ |
173d0863a804
added live init to slotcli
Malte Bayer <mbayer@neo-soft.org>
parents:
61
diff
changeset
|
136 | Send initializing commands for live monitoring |
173d0863a804
added live init to slotcli
Malte Bayer <mbayer@neo-soft.org>
parents:
61
diff
changeset
|
137 | """ |
173d0863a804
added live init to slotcli
Malte Bayer <mbayer@neo-soft.org>
parents:
61
diff
changeset
|
138 | self.box.com.query("F1\n") # set fuel logic enabled |
173d0863a804
added live init to slotcli
Malte Bayer <mbayer@neo-soft.org>
parents:
61
diff
changeset
|
139 | self.box.com.query("*1\n") # set live fuel info |
173d0863a804
added live init to slotcli
Malte Bayer <mbayer@neo-soft.org>
parents:
61
diff
changeset
|
140 | |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
141 | def monitor(self): |
27
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
142 | """ |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
143 | Live Monitor on the console |
27
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
144 | Keyboard loop to control it??? |
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
145 | """ |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
146 | # clear garbage in UART rx buffer |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
147 | while self.box.com.readline() != "": pass |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
148 | |
74
173d0863a804
added live init to slotcli
Malte Bayer <mbayer@neo-soft.org>
parents:
61
diff
changeset
|
149 | self.monitor_init() |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
150 | self.scr = curses.initscr() |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
151 | curses.start_color() |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
152 | curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLACK) # standard text |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
153 | curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_BLUE) # label |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
154 | curses.noecho() # disable key echo |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
155 | curses.cbreak() # do not buffer keypresses |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
156 | self.scr.keypad(1) # enable special keys |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
157 | self.scr.nodelay(1) # disable delay on readkey |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
158 | |
59
361bc4602cf7
added fuel management to blackbox, cars dont get stuck at the moment
Malte Bayer <mbayer@neo-soft.org>
parents:
56
diff
changeset
|
159 | self.cleartop() |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
160 | self.render_slots() |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
161 | self.scr.refresh() |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
162 | |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
163 | |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
164 | while 1: |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
165 | key = self.scr.getch() |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
166 | if key == ord('q'): break |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
167 | elif key == ord(' '): self.cyclemode() |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
168 | elif key == ord('1'): self.readName(0) |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
169 | elif key == ord('2'): self.readName(1) |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
170 | elif key == ord('3'): self.readName(2) |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
171 | elif key == ord('4'): self.readName(3) |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
172 | elif key == ord('5'): self.readName(4) |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
173 | elif key == ord('6'): self.readName(5) |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
174 | elif key == ord('a'): |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
175 | if self.slot[4]["drive"] > 0: self.slot[4]["drive"] -= 1 |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
176 | cli.box.speedminimum(4, self.slot[4]["drive"]) |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
177 | elif key == ord('s'): |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
178 | if self.slot[4]["drive"] < 16: self.slot[4]["drive"] += 1 |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
179 | cli.box.speedminimum(4, self.slot[4]["drive"]) |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
180 | elif key == ord('y'): |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
181 | if self.slot[5]["drive"] > 0: self.slot[5]["drive"] -= 1 |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
182 | cli.box.speedminimum(5, self.slot[5]["drive"]) |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
183 | elif key == ord('x'): |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
184 | if self.slot[5]["drive"] < 16: self.slot[5]["drive"] += 1 |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
185 | cli.box.speedminimum(5, self.slot[4]["drive"]) |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
186 | |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
187 | |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
188 | # is there something in the rx buffer? |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
189 | rx = self.box.com.readline() |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
190 | if rx != "": |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
191 | self.scr.addstr(10,0, |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
192 | "Last RX: %19s" % rx, curses.color_pair(2)) |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
193 | self.scr.refresh() |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
194 | # we have received something |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
195 | data = rx.split(":") |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
196 | if rx[:2] == "L:": |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
197 | # update lap time info |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
198 | l = int(data[2], 16) |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
199 | slot = int(data[3]) - 1 |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
200 | t = int(data[4], 16) / 2000.00 |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
201 | self.sysclk = int(data[5], 16) / 2000.00 |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
202 | self.slot[slot]["laps"] = l |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
203 | self.slot[slot]["last"] = t |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
204 | self.slot[slot]["clk"] = self.sysclk |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
205 | if (self.slot[slot]["best"] > t) or (self.slot[slot]["best"] == 0): self.slot[slot]["best"] = t |
78
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
206 | if self.bestlap > t: |
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
207 | trigger_sound("lap_record") |
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
208 | self.bestlap = t |
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
209 | |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
210 | self.slot[slot]["status"] = "IN-RACE" |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
211 | self.render_slots() |
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
212 | |
59
361bc4602cf7
added fuel management to blackbox, cars dont get stuck at the moment
Malte Bayer <mbayer@neo-soft.org>
parents:
56
diff
changeset
|
213 | if rx[:2] == "F:": |
361bc4602cf7
added fuel management to blackbox, cars dont get stuck at the moment
Malte Bayer <mbayer@neo-soft.org>
parents:
56
diff
changeset
|
214 | # update fuel level |
361bc4602cf7
added fuel management to blackbox, cars dont get stuck at the moment
Malte Bayer <mbayer@neo-soft.org>
parents:
56
diff
changeset
|
215 | slot = int(data[1]) |
361bc4602cf7
added fuel management to blackbox, cars dont get stuck at the moment
Malte Bayer <mbayer@neo-soft.org>
parents:
56
diff
changeset
|
216 | f = int(data[2], 16) |
361bc4602cf7
added fuel management to blackbox, cars dont get stuck at the moment
Malte Bayer <mbayer@neo-soft.org>
parents:
56
diff
changeset
|
217 | f = f / 100 # fuel in percent |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
218 | self.sysclk = int(data[3], 16) / 2000.00 |
81 | 219 | self.slot[slot]["fuel_last"] = self.slot[slot]["fuel"] |
59
361bc4602cf7
added fuel management to blackbox, cars dont get stuck at the moment
Malte Bayer <mbayer@neo-soft.org>
parents:
56
diff
changeset
|
220 | self.slot[slot]["fuel"] = f |
81 | 221 | if self.slot[slot]["fuel_last"] != f: |
222 | # 10 percent fuel, set speed limit for car to 8 | |
223 | if (self.slot[slot]["fuel_last"] == 11) and (f == 10): | |
224 | # warning sound | |
225 | trigger_sound("fuel_warning1") | |
226 | cli.box.speedlimit(slot, 8) | |
227 | # 5 percent, set speed limit for car to 4 | |
228 | if (self.slot[slot]["fuel_last"] == 6) and (f == 5): | |
229 | # warning sound | |
230 | trigger_sound("fuel_warning2") | |
231 | cli.box.speedlimit(slot, 4) | |
232 | if (self.slot[slot]["fuel_last"] == 1) and (f == 0): | |
233 | # set speedlimit to 2 | |
234 | cli.box.speedlimit(slot, 2) | |
235 | if (self.slot[slot]["fuel_last"] < f) and (f >= 11) and (f < 20): | |
236 | cli.box.speedlimit(slot, 15) | |
237 | if (self.slot[slot]["fuel_last"] < f) and (f == 100): | |
238 | trigger_sound("fuel_full") | |
59
361bc4602cf7
added fuel management to blackbox, cars dont get stuck at the moment
Malte Bayer <mbayer@neo-soft.org>
parents:
56
diff
changeset
|
239 | self.render_slots() |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
240 | |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
241 | if rx[:1] == "~": |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
242 | # jumpstart occured |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
243 | slot = int(rx[1:2]) |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
244 | t = int(data[1], 16) / 2000.00 |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
245 | self.slot[slot]["jumpstart"] = t |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
246 | self.slot[slot]["status"] = "Jumpstart!" |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
247 | |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
248 | if rx[:3] == "RW:": |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
249 | # ResponseWire packet, do nothing at the moment, just decode |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
250 | slot = int(data[1]) |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
251 | devtype = int(data[2]) |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
252 | sender = int(data[3], 16) |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
253 | status = int(data[4], 16) |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
254 | self.sysclk = int(data[5], 16) |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
255 | if (devtype == 4): |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
256 | # pitlane sent something |
81 | 257 | if (status == 5): |
258 | self.slot[slot]["status"] = "PITLANE" | |
259 | trigger_sound("pitlane_enter") | |
260 | if (status == 6): | |
261 | self.slot[slot]["status"] = "IN-RACE" | |
262 | trigger_sound("pitlane_exit") | |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
263 | |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
264 | self.render_slots() |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
265 | |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
266 | if rx == "!RACE PREPARE": |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
267 | # reset current race status |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
268 | # and display PREPARE PHASE |
78
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
269 | self.reset_slots() |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
270 | for slot in range(MAXSLOTS): |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
271 | self.slot[slot]["status"] = "Prepare" |
78
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
272 | trigger_sound("race_prepare") |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
273 | |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
274 | if rx == "!RACE START": |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
275 | for slot in range(MAXSLOTS): |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
276 | if self.slot[slot]["status"] == "~~~~~~~~~~": |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
277 | self.slot[slot]["status"] = "Idle" |
78
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
278 | trigger_sound("race_start") |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
279 | |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
280 | if rx == "!COUNTDOWN": |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
281 | # countdown initiated |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
282 | for slot in range(MAXSLOTS): |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
283 | self.slot[slot]["status"] = "~~~~~~~~~~" |
78
d9126a55295c
added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents:
77
diff
changeset
|
284 | trigger_sound("countdown_start") |
77
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
285 | |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
286 | self.scr.addstr(10,31, |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
287 | "Race Timer: %7.3f min" % (self.sysclk / 60), |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
288 | curses.color_pair(2)) |
cede78304992
finished live CLI, BB firmware improvements and fixes
Malte Bayer <mbayer@neo-soft.org>
parents:
74
diff
changeset
|
289 | |
55
9293f3efcc06
added live display to CLI (lap counter, last and best time)
Malte Bayer <mbayer@neo-soft.org>
parents:
54
diff
changeset
|
290 | self.scr.refresh() |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
291 | |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
292 | # terminate |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
293 | curses.nocbreak() |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
294 | self.scr.keypad(0) |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
295 | curses.echo() |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
296 | curses.endwin() |
27
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
297 | return None |
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
298 | |
58
042c490fdfaa
better code quality
Tobias Paepke <tobias.paepke@paepke.net>
parents:
56
diff
changeset
|
299 | def cyclemode(self): |
042c490fdfaa
better code quality
Tobias Paepke <tobias.paepke@paepke.net>
parents:
56
diff
changeset
|
300 | pass |
042c490fdfaa
better code quality
Tobias Paepke <tobias.paepke@paepke.net>
parents:
56
diff
changeset
|
301 | |
27
3e617fcf999a
added exception, started SlotCli class
Malte Bayer <mbayer@neo-soft.org>
parents:
25
diff
changeset
|
302 | if __name__ == "__main__": |
35
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
303 | parser = OptionParser(version="%prog " + VERSION) |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
304 | parser.add_option("--live", dest="live", action="store_true", default=False, |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
305 | help="Run Live monitor on console", metavar="[0-5]") |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
306 | |
35
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
307 | parser.add_option("--carid", dest="carid", |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
308 | help="Required for programming a car directly", metavar="[0-5]") |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
309 | parser.add_option("--fuel", dest="fuel", |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
310 | help="Set maximum CAR fuel level", metavar="[0-15]") |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
311 | parser.add_option("--brake", dest="brake", |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
312 | help="Set CAR brake strength", metavar="[0-15]") |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
313 | parser.add_option("--speed", dest="speed", |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
314 | help="Set maximum CAR speed", metavar="[0-15]") |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
315 | parser.add_option("--blink", dest="blink", |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
316 | help="Set car lights blinking state", metavar="[on|off]") |
36
aea84f4f5a12
feature: program a specific controller speed limit without changing the car's acceleration
Malte Bayer <mbayer@neo-soft.org>
parents:
35
diff
changeset
|
317 | parser.add_option("--limit", dest="limit", |
aea84f4f5a12
feature: program a specific controller speed limit without changing the car's acceleration
Malte Bayer <mbayer@neo-soft.org>
parents:
35
diff
changeset
|
318 | help="Controlled SPEED LIMIT (15 = no limit)", metavar="[0-15]") |
50
84b8ab4cd79e
implemented new --drive command to CLI
Malte Bayer <mbayer@neo-soft.org>
parents:
36
diff
changeset
|
319 | parser.add_option("--drive", dest="drive", |
84b8ab4cd79e
implemented new --drive command to CLI
Malte Bayer <mbayer@neo-soft.org>
parents:
36
diff
changeset
|
320 | help="Controlled SPEED MINIMUM (0 = disabled)", metavar="[0-15]") |
35
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
321 | |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
322 | (options, args) = parser.parse_args() |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
323 | cli = SlotCli() |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
324 | # should a CLI function be started? |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
325 | |
58
042c490fdfaa
better code quality
Tobias Paepke <tobias.paepke@paepke.net>
parents:
56
diff
changeset
|
326 | if options.live: |
54
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
327 | # start the live monitor |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
328 | cli.monitor() |
68eca8057d68
added livemode display to slotcli, without communication yet
Malte Bayer <mbayer@neo-soft.org>
parents:
50
diff
changeset
|
329 | sys.exit(0) |
35
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
330 | |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
331 | # check commandline if we have to program something |
58
042c490fdfaa
better code quality
Tobias Paepke <tobias.paepke@paepke.net>
parents:
56
diff
changeset
|
332 | if not options.carid: |
35
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
333 | print "Option --carid is required for all car programming commands!\nUse --help to get a list of available commands" |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
334 | sys.exit(1) |
36
aea84f4f5a12
feature: program a specific controller speed limit without changing the car's acceleration
Malte Bayer <mbayer@neo-soft.org>
parents:
35
diff
changeset
|
335 | |
58
042c490fdfaa
better code quality
Tobias Paepke <tobias.paepke@paepke.net>
parents:
56
diff
changeset
|
336 | if options.fuel: |
35
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
337 | print "setFuel: " + cli.box.progcar(int(options.carid), "fuel", int(options.fuel)) |
36
aea84f4f5a12
feature: program a specific controller speed limit without changing the car's acceleration
Malte Bayer <mbayer@neo-soft.org>
parents:
35
diff
changeset
|
338 | |
58
042c490fdfaa
better code quality
Tobias Paepke <tobias.paepke@paepke.net>
parents:
56
diff
changeset
|
339 | if options.speed: |
35
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
340 | print "setSpeed: " + cli.box.progcar(int(options.carid), "speed", int(options.speed)) |
36
aea84f4f5a12
feature: program a specific controller speed limit without changing the car's acceleration
Malte Bayer <mbayer@neo-soft.org>
parents:
35
diff
changeset
|
341 | |
58
042c490fdfaa
better code quality
Tobias Paepke <tobias.paepke@paepke.net>
parents:
56
diff
changeset
|
342 | if options.brake: |
35
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
343 | print "setBrake: " + cli.box.progcar(int(options.carid), "brake", int(options.brake)) |
36
aea84f4f5a12
feature: program a specific controller speed limit without changing the car's acceleration
Malte Bayer <mbayer@neo-soft.org>
parents:
35
diff
changeset
|
344 | |
58
042c490fdfaa
better code quality
Tobias Paepke <tobias.paepke@paepke.net>
parents:
56
diff
changeset
|
345 | if options.blink: |
35
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
346 | state = False |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
347 | if options.blink == "on": |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
348 | state = True |
00166228a419
cli: implemented setting of fuel, brake, speed, blinkstate for any car
Malte Bayer <mbayer@neo-soft.org>
parents:
27
diff
changeset
|
349 | print "setBlink: " + cli.box.blinkcar(int(options.carid), state) |
36
aea84f4f5a12
feature: program a specific controller speed limit without changing the car's acceleration
Malte Bayer <mbayer@neo-soft.org>
parents:
35
diff
changeset
|
350 | |
58
042c490fdfaa
better code quality
Tobias Paepke <tobias.paepke@paepke.net>
parents:
56
diff
changeset
|
351 | if options.limit: |
36
aea84f4f5a12
feature: program a specific controller speed limit without changing the car's acceleration
Malte Bayer <mbayer@neo-soft.org>
parents:
35
diff
changeset
|
352 | print "Change Speed Limit: " + cli.box.speedlimit(int(options.carid), int(options.limit)) |
aea84f4f5a12
feature: program a specific controller speed limit without changing the car's acceleration
Malte Bayer <mbayer@neo-soft.org>
parents:
35
diff
changeset
|
353 | |
58
042c490fdfaa
better code quality
Tobias Paepke <tobias.paepke@paepke.net>
parents:
56
diff
changeset
|
354 | if options.drive: |
50
84b8ab4cd79e
implemented new --drive command to CLI
Malte Bayer <mbayer@neo-soft.org>
parents:
36
diff
changeset
|
355 | print "Change minimum Speed drive: " + cli.box.speedminimum(int(options.carid), int(options.drive)) |
84b8ab4cd79e
implemented new --drive command to CLI
Malte Bayer <mbayer@neo-soft.org>
parents:
36
diff
changeset
|
356 |