slotUI/SlotCli.py

Thu, 15 Dec 2011 17:58:22 +0100

author
Malte Bayer <mbayer@neo-soft.org>
date
Thu, 15 Dec 2011 17:58:22 +0100
changeset 81
4f2f94a043fd
parent 78
d9126a55295c
child 82
c89221096db7
permissions
-rwxr-xr-x

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
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
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
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
25 SOUNDPREFIX = "quake-"
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
26
78
d9126a55295c added sound triggers to live mode
Malte Bayer <mbayer@neo-soft.org>
parents: 77
diff changeset
27 SOUNDS = {
81
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
28 "countdown_start": os.path.abspath(SOUNDPREFIX + "sound/countdown.mp3"),
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
29 "race_start": os.path.abspath(SOUNDPREFIX + "sound/racestart.mp3"),
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
30 "race_prepare": os.path.abspath(SOUNDPREFIX + "sound/siren.mp3"),
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
31 "lap_record": os.path.abspath(SOUNDPREFIX + "sound/laprecord.mp3"),
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
32 "fuel_warning1": os.path.abspath(SOUNDPREFIX + "sound/fuel1.mp3"),
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
33 "fuel_warning2": os.path.abspath(SOUNDPREFIX + "sound/fuel2.mp3"),
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
34 "fuel_full": os.path.abspath(SOUNDPREFIX + "sound/fuel_full.mp3"),
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
35 "pitlane_enter": os.path.abspath(SOUNDPREFIX + "sound/pitlane_enter.mp3"),
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
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
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
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
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
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
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
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
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
221 if self.slot[slot]["fuel_last"] != f:
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
222 # 10 percent fuel, set speed limit for car to 8
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
223 if (self.slot[slot]["fuel_last"] == 11) and (f == 10):
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
224 # warning sound
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
225 trigger_sound("fuel_warning1")
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
226 cli.box.speedlimit(slot, 8)
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
227 # 5 percent, set speed limit for car to 4
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
228 if (self.slot[slot]["fuel_last"] == 6) and (f == 5):
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
229 # warning sound
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
230 trigger_sound("fuel_warning2")
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
231 cli.box.speedlimit(slot, 4)
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
232 if (self.slot[slot]["fuel_last"] == 1) and (f == 0):
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
233 # set speedlimit to 2
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
234 cli.box.speedlimit(slot, 2)
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
235 if (self.slot[slot]["fuel_last"] < f) and (f >= 11) and (f < 20):
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
236 cli.box.speedlimit(slot, 15)
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
237 if (self.slot[slot]["fuel_last"] < f) and (f == 100):
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
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
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
257 if (status == 5):
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
258 self.slot[slot]["status"] = "PITLANE"
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
259 trigger_sound("pitlane_enter")
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
260 if (status == 6):
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
261 self.slot[slot]["status"] = "IN-RACE"
4f2f94a043fd betatest corrections
Malte Bayer <mbayer@neo-soft.org>
parents: 78
diff changeset
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

mercurial