This commit is contained in:
firestarsdog
2026-11-03 22:47:22 -05:00
parent af4d7e5a0d
commit 08cfff03af
14 changed files with 356 additions and 297 deletions
+274 -257
View File
@@ -3741,7 +3741,7 @@ const ::capnp::_::RawSchema s_da96579883444c35 = {
0, 5, i_da96579883444c35, nullptr, nullptr, { &s_da96579883444c35, nullptr, nullptr, 0, 0, nullptr }, false
};
#endif // !CAPNP_LITE
static const ::capnp::_::AlignedData<1013> b_a1680744031fdb2d = {
static const ::capnp::_::AlignedData<1030> b_a1680744031fdb2d = {
{ 0, 0, 0, 0, 5, 0, 6, 0,
45, 219, 31, 3, 68, 7, 104, 161,
13, 0, 0, 0, 1, 0, 18, 0,
@@ -3751,7 +3751,7 @@ static const ::capnp::_::AlignedData<1013> b_a1680744031fdb2d = {
21, 0, 0, 0, 178, 0, 0, 0,
29, 0, 0, 0, 87, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
117, 0, 0, 0, 239, 12, 0, 0,
117, 0, 0, 0, 39, 13, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
99, 117, 115, 116, 111, 109, 46, 99,
@@ -3781,420 +3781,427 @@ static const ::capnp::_::AlignedData<1013> b_a1680744031fdb2d = {
67, 111, 110, 100, 105, 116, 105, 111,
110, 97, 108, 77, 111, 100, 101, 83,
116, 97, 116, 101, 0, 0, 0, 0,
236, 0, 0, 0, 3, 0, 4, 0,
240, 0, 0, 0, 3, 0, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
101, 6, 0, 0, 58, 0, 0, 0,
129, 6, 0, 0, 58, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
96, 6, 0, 0, 3, 0, 1, 0,
108, 6, 0, 0, 2, 0, 1, 0,
124, 6, 0, 0, 3, 0, 1, 0,
136, 6, 0, 0, 2, 0, 1, 0,
1, 0, 0, 0, 1, 0, 0, 0,
0, 0, 1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
105, 6, 0, 0, 74, 0, 0, 0,
133, 6, 0, 0, 74, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
104, 6, 0, 0, 3, 0, 1, 0,
116, 6, 0, 0, 2, 0, 1, 0,
132, 6, 0, 0, 3, 0, 1, 0,
144, 6, 0, 0, 2, 0, 1, 0,
2, 0, 0, 0, 2, 0, 0, 0,
0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
113, 6, 0, 0, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
108, 6, 0, 0, 3, 0, 1, 0,
120, 6, 0, 0, 2, 0, 1, 0,
3, 0, 0, 0, 3, 0, 0, 0,
0, 0, 1, 0, 3, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
117, 6, 0, 0, 106, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
116, 6, 0, 0, 3, 0, 1, 0,
128, 6, 0, 0, 2, 0, 1, 0,
4, 0, 0, 0, 4, 0, 0, 0,
0, 0, 1, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
125, 6, 0, 0, 58, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
120, 6, 0, 0, 3, 0, 1, 0,
132, 6, 0, 0, 2, 0, 1, 0,
5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
129, 6, 0, 0, 114, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
128, 6, 0, 0, 3, 0, 1, 0,
140, 6, 0, 0, 2, 0, 1, 0,
6, 0, 0, 0, 5, 0, 0, 0,
0, 0, 1, 0, 6, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
137, 6, 0, 0, 82, 0, 0, 0,
141, 6, 0, 0, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
136, 6, 0, 0, 3, 0, 1, 0,
148, 6, 0, 0, 2, 0, 1, 0,
7, 0, 0, 0, 1, 0, 0, 0,
0, 0, 1, 0, 7, 0, 0, 0,
3, 0, 0, 0, 3, 0, 0, 0,
0, 0, 1, 0, 3, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
145, 6, 0, 0, 114, 0, 0, 0,
145, 6, 0, 0, 106, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
144, 6, 0, 0, 3, 0, 1, 0,
156, 6, 0, 0, 2, 0, 1, 0,
8, 0, 0, 0, 128, 0, 0, 0,
0, 0, 1, 0, 8, 0, 0, 0,
4, 0, 0, 0, 4, 0, 0, 0,
0, 0, 1, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
153, 6, 0, 0, 66, 0, 0, 0,
153, 6, 0, 0, 58, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
148, 6, 0, 0, 3, 0, 1, 0,
160, 6, 0, 0, 2, 0, 1, 0,
9, 0, 0, 0, 129, 0, 0, 0,
0, 0, 1, 0, 9, 0, 0, 0,
5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
157, 6, 0, 0, 98, 0, 0, 0,
157, 6, 0, 0, 114, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
156, 6, 0, 0, 3, 0, 1, 0,
168, 6, 0, 0, 2, 0, 1, 0,
10, 0, 0, 0, 6, 0, 0, 0,
0, 0, 1, 0, 10, 0, 0, 0,
6, 0, 0, 0, 5, 0, 0, 0,
0, 0, 1, 0, 6, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
165, 6, 0, 0, 130, 0, 0, 0,
165, 6, 0, 0, 82, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
164, 6, 0, 0, 3, 0, 1, 0,
176, 6, 0, 0, 2, 0, 1, 0,
11, 0, 0, 0, 7, 0, 0, 0,
0, 0, 1, 0, 11, 0, 0, 0,
7, 0, 0, 0, 1, 0, 0, 0,
0, 0, 1, 0, 7, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
173, 6, 0, 0, 58, 0, 0, 0,
173, 6, 0, 0, 114, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
168, 6, 0, 0, 3, 0, 1, 0,
180, 6, 0, 0, 2, 0, 1, 0,
12, 0, 0, 0, 5, 0, 0, 0,
0, 0, 1, 0, 12, 0, 0, 0,
172, 6, 0, 0, 3, 0, 1, 0,
184, 6, 0, 0, 2, 0, 1, 0,
8, 0, 0, 0, 128, 0, 0, 0,
0, 0, 1, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
177, 6, 0, 0, 90, 0, 0, 0,
181, 6, 0, 0, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
176, 6, 0, 0, 3, 0, 1, 0,
188, 6, 0, 0, 2, 0, 1, 0,
13, 0, 0, 0, 6, 0, 0, 0,
0, 0, 1, 0, 13, 0, 0, 0,
9, 0, 0, 0, 129, 0, 0, 0,
0, 0, 1, 0, 9, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
185, 6, 0, 0, 154, 0, 0, 0,
185, 6, 0, 0, 98, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
188, 6, 0, 0, 3, 0, 1, 0,
200, 6, 0, 0, 2, 0, 1, 0,
14, 0, 0, 0, 130, 0, 0, 0,
0, 0, 1, 0, 14, 0, 0, 0,
184, 6, 0, 0, 3, 0, 1, 0,
196, 6, 0, 0, 2, 0, 1, 0,
10, 0, 0, 0, 6, 0, 0, 0,
0, 0, 1, 0, 10, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
197, 6, 0, 0, 98, 0, 0, 0,
193, 6, 0, 0, 130, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
192, 6, 0, 0, 3, 0, 1, 0,
204, 6, 0, 0, 2, 0, 1, 0,
11, 0, 0, 0, 7, 0, 0, 0,
0, 0, 1, 0, 11, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
201, 6, 0, 0, 58, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
196, 6, 0, 0, 3, 0, 1, 0,
208, 6, 0, 0, 2, 0, 1, 0,
15, 0, 0, 0, 7, 0, 0, 0,
0, 0, 1, 0, 15, 0, 0, 0,
12, 0, 0, 0, 5, 0, 0, 0,
0, 0, 1, 0, 12, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
205, 6, 0, 0, 58, 0, 0, 0,
205, 6, 0, 0, 90, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
200, 6, 0, 0, 3, 0, 1, 0,
212, 6, 0, 0, 2, 0, 1, 0,
16, 0, 0, 0, 8, 0, 0, 0,
0, 0, 1, 0, 16, 0, 0, 0,
204, 6, 0, 0, 3, 0, 1, 0,
216, 6, 0, 0, 2, 0, 1, 0,
13, 0, 0, 0, 6, 0, 0, 0,
0, 0, 1, 0, 13, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
209, 6, 0, 0, 106, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
208, 6, 0, 0, 3, 0, 1, 0,
220, 6, 0, 0, 2, 0, 1, 0,
17, 0, 0, 0, 131, 0, 0, 0,
0, 0, 1, 0, 17, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
217, 6, 0, 0, 90, 0, 0, 0,
213, 6, 0, 0, 154, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
216, 6, 0, 0, 3, 0, 1, 0,
228, 6, 0, 0, 2, 0, 1, 0,
18, 0, 0, 0, 9, 0, 0, 0,
0, 0, 1, 0, 18, 0, 0, 0,
14, 0, 0, 0, 130, 0, 0, 0,
0, 0, 1, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
225, 6, 0, 0, 146, 0, 0, 0,
225, 6, 0, 0, 98, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
224, 6, 0, 0, 3, 0, 1, 0,
236, 6, 0, 0, 2, 0, 1, 0,
15, 0, 0, 0, 7, 0, 0, 0,
0, 0, 1, 0, 15, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
233, 6, 0, 0, 58, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
228, 6, 0, 0, 3, 0, 1, 0,
240, 6, 0, 0, 2, 0, 1, 0,
19, 0, 0, 0, 132, 0, 0, 0,
0, 0, 1, 0, 19, 0, 0, 0,
16, 0, 0, 0, 8, 0, 0, 0,
0, 0, 1, 0, 16, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
237, 6, 0, 0, 90, 0, 0, 0,
237, 6, 0, 0, 106, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
236, 6, 0, 0, 3, 0, 1, 0,
248, 6, 0, 0, 2, 0, 1, 0,
20, 0, 0, 0, 5, 0, 0, 0,
0, 0, 1, 0, 20, 0, 0, 0,
17, 0, 0, 0, 131, 0, 0, 0,
0, 0, 1, 0, 17, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
245, 6, 0, 0, 90, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
244, 6, 0, 0, 3, 0, 1, 0,
0, 7, 0, 0, 2, 0, 1, 0,
21, 0, 0, 0, 6, 0, 0, 0,
0, 0, 1, 0, 21, 0, 0, 0,
18, 0, 0, 0, 9, 0, 0, 0,
0, 0, 1, 0, 18, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
253, 6, 0, 0, 122, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
252, 6, 0, 0, 3, 0, 1, 0,
8, 7, 0, 0, 2, 0, 1, 0,
22, 0, 0, 0, 8, 0, 0, 0,
0, 0, 1, 0, 22, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
5, 7, 0, 0, 58, 0, 0, 0,
253, 6, 0, 0, 146, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 7, 0, 0, 3, 0, 1, 0,
12, 7, 0, 0, 2, 0, 1, 0,
19, 0, 0, 0, 132, 0, 0, 0,
0, 0, 1, 0, 19, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
9, 7, 0, 0, 90, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
8, 7, 0, 0, 3, 0, 1, 0,
20, 7, 0, 0, 2, 0, 1, 0,
20, 0, 0, 0, 5, 0, 0, 0,
0, 0, 1, 0, 20, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
17, 7, 0, 0, 90, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
16, 7, 0, 0, 3, 0, 1, 0,
28, 7, 0, 0, 2, 0, 1, 0,
21, 0, 0, 0, 6, 0, 0, 0,
0, 0, 1, 0, 21, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
25, 7, 0, 0, 122, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
24, 7, 0, 0, 3, 0, 1, 0,
36, 7, 0, 0, 2, 0, 1, 0,
22, 0, 0, 0, 8, 0, 0, 0,
0, 0, 1, 0, 22, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
33, 7, 0, 0, 58, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
28, 7, 0, 0, 3, 0, 1, 0,
40, 7, 0, 0, 2, 0, 1, 0,
23, 0, 0, 0, 7, 0, 0, 0,
0, 0, 1, 0, 23, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
9, 7, 0, 0, 138, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
12, 7, 0, 0, 3, 0, 1, 0,
24, 7, 0, 0, 2, 0, 1, 0,
24, 0, 0, 0, 9, 0, 0, 0,
0, 0, 1, 0, 24, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
21, 7, 0, 0, 106, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
20, 7, 0, 0, 3, 0, 1, 0,
32, 7, 0, 0, 2, 0, 1, 0,
25, 0, 0, 0, 10, 0, 0, 0,
0, 0, 1, 0, 25, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
29, 7, 0, 0, 194, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
32, 7, 0, 0, 3, 0, 1, 0,
44, 7, 0, 0, 2, 0, 1, 0,
26, 0, 0, 0, 16, 0, 0, 0,
0, 0, 1, 0, 26, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
41, 7, 0, 0, 114, 0, 0, 0,
37, 7, 0, 0, 138, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
40, 7, 0, 0, 3, 0, 1, 0,
52, 7, 0, 0, 2, 0, 1, 0,
27, 0, 0, 0, 9, 0, 0, 0,
0, 0, 1, 0, 27, 0, 0, 0,
24, 0, 0, 0, 9, 0, 0, 0,
0, 0, 1, 0, 24, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
49, 7, 0, 0, 186, 0, 0, 0,
49, 7, 0, 0, 106, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
52, 7, 0, 0, 3, 0, 1, 0,
64, 7, 0, 0, 2, 0, 1, 0,
28, 0, 0, 0, 10, 0, 0, 0,
0, 0, 1, 0, 28, 0, 0, 0,
48, 7, 0, 0, 3, 0, 1, 0,
60, 7, 0, 0, 2, 0, 1, 0,
25, 0, 0, 0, 10, 0, 0, 0,
0, 0, 1, 0, 25, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
61, 7, 0, 0, 202, 0, 0, 0,
57, 7, 0, 0, 194, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
60, 7, 0, 0, 3, 0, 1, 0,
72, 7, 0, 0, 2, 0, 1, 0,
26, 0, 0, 0, 16, 0, 0, 0,
0, 0, 1, 0, 26, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
69, 7, 0, 0, 114, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
68, 7, 0, 0, 3, 0, 1, 0,
80, 7, 0, 0, 2, 0, 1, 0,
29, 0, 0, 0, 11, 0, 0, 0,
0, 0, 1, 0, 29, 0, 0, 0,
27, 0, 0, 0, 9, 0, 0, 0,
0, 0, 1, 0, 27, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
77, 7, 0, 0, 82, 0, 0, 0,
77, 7, 0, 0, 186, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
76, 7, 0, 0, 3, 0, 1, 0,
88, 7, 0, 0, 2, 0, 1, 0,
30, 0, 0, 0, 11, 0, 0, 0,
0, 0, 1, 0, 30, 0, 0, 0,
80, 7, 0, 0, 3, 0, 1, 0,
92, 7, 0, 0, 2, 0, 1, 0,
28, 0, 0, 0, 10, 0, 0, 0,
0, 0, 1, 0, 28, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
85, 7, 0, 0, 114, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
84, 7, 0, 0, 3, 0, 1, 0,
96, 7, 0, 0, 2, 0, 1, 0,
31, 0, 0, 0, 12, 0, 0, 0,
0, 0, 1, 0, 31, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
93, 7, 0, 0, 50, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
88, 7, 0, 0, 3, 0, 1, 0,
100, 7, 0, 0, 2, 0, 1, 0,
32, 0, 0, 0, 13, 0, 0, 0,
0, 0, 1, 0, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
97, 7, 0, 0, 130, 0, 0, 0,
89, 7, 0, 0, 202, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
96, 7, 0, 0, 3, 0, 1, 0,
108, 7, 0, 0, 2, 0, 1, 0,
33, 0, 0, 0, 14, 0, 0, 0,
0, 0, 1, 0, 33, 0, 0, 0,
29, 0, 0, 0, 11, 0, 0, 0,
0, 0, 1, 0, 29, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
105, 7, 0, 0, 98, 0, 0, 0,
105, 7, 0, 0, 82, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
104, 7, 0, 0, 3, 0, 1, 0,
116, 7, 0, 0, 2, 0, 1, 0,
34, 0, 0, 0, 15, 0, 0, 0,
0, 0, 1, 0, 34, 0, 0, 0,
30, 0, 0, 0, 11, 0, 0, 0,
0, 0, 1, 0, 30, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
113, 7, 0, 0, 122, 0, 0, 0,
113, 7, 0, 0, 114, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
112, 7, 0, 0, 3, 0, 1, 0,
124, 7, 0, 0, 2, 0, 1, 0,
35, 0, 0, 0, 16, 0, 0, 0,
0, 0, 1, 0, 35, 0, 0, 0,
31, 0, 0, 0, 12, 0, 0, 0,
0, 0, 1, 0, 31, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
121, 7, 0, 0, 122, 0, 0, 0,
121, 7, 0, 0, 50, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
120, 7, 0, 0, 3, 0, 1, 0,
132, 7, 0, 0, 2, 0, 1, 0,
36, 0, 0, 0, 17, 0, 0, 0,
0, 0, 1, 0, 36, 0, 0, 0,
116, 7, 0, 0, 3, 0, 1, 0,
128, 7, 0, 0, 2, 0, 1, 0,
32, 0, 0, 0, 13, 0, 0, 0,
0, 0, 1, 0, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
129, 7, 0, 0, 114, 0, 0, 0,
125, 7, 0, 0, 130, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
128, 7, 0, 0, 3, 0, 1, 0,
140, 7, 0, 0, 2, 0, 1, 0,
37, 0, 0, 0, 17, 0, 0, 0,
0, 0, 1, 0, 37, 0, 0, 0,
124, 7, 0, 0, 3, 0, 1, 0,
136, 7, 0, 0, 2, 0, 1, 0,
33, 0, 0, 0, 14, 0, 0, 0,
0, 0, 1, 0, 33, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
137, 7, 0, 0, 186, 0, 0, 0,
133, 7, 0, 0, 98, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
132, 7, 0, 0, 3, 0, 1, 0,
144, 7, 0, 0, 2, 0, 1, 0,
34, 0, 0, 0, 15, 0, 0, 0,
0, 0, 1, 0, 34, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
141, 7, 0, 0, 122, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
140, 7, 0, 0, 3, 0, 1, 0,
152, 7, 0, 0, 2, 0, 1, 0,
38, 0, 0, 0, 133, 0, 0, 0,
0, 0, 1, 0, 38, 0, 0, 0,
35, 0, 0, 0, 16, 0, 0, 0,
0, 0, 1, 0, 35, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
149, 7, 0, 0, 210, 0, 0, 0,
149, 7, 0, 0, 122, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
148, 7, 0, 0, 3, 0, 1, 0,
160, 7, 0, 0, 2, 0, 1, 0,
36, 0, 0, 0, 17, 0, 0, 0,
0, 0, 1, 0, 36, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
157, 7, 0, 0, 114, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
156, 7, 0, 0, 3, 0, 1, 0,
168, 7, 0, 0, 2, 0, 1, 0,
39, 0, 0, 0, 134, 0, 0, 0,
0, 0, 1, 0, 39, 0, 0, 0,
37, 0, 0, 0, 17, 0, 0, 0,
0, 0, 1, 0, 37, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
165, 7, 0, 0, 138, 0, 0, 0,
165, 7, 0, 0, 186, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
168, 7, 0, 0, 3, 0, 1, 0,
180, 7, 0, 0, 2, 0, 1, 0,
38, 0, 0, 0, 133, 0, 0, 0,
0, 0, 1, 0, 38, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
177, 7, 0, 0, 210, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
184, 7, 0, 0, 3, 0, 1, 0,
196, 7, 0, 0, 2, 0, 1, 0,
39, 0, 0, 0, 134, 0, 0, 0,
0, 0, 1, 0, 39, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
193, 7, 0, 0, 138, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
196, 7, 0, 0, 3, 0, 1, 0,
208, 7, 0, 0, 2, 0, 1, 0,
40, 0, 0, 0, 135, 0, 0, 0,
0, 0, 1, 0, 40, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
177, 7, 0, 0, 170, 0, 0, 0,
205, 7, 0, 0, 170, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
180, 7, 0, 0, 3, 0, 1, 0,
192, 7, 0, 0, 2, 0, 1, 0,
208, 7, 0, 0, 3, 0, 1, 0,
220, 7, 0, 0, 2, 0, 1, 0,
41, 0, 0, 0, 18, 0, 0, 0,
0, 0, 1, 0, 41, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
189, 7, 0, 0, 122, 0, 0, 0,
217, 7, 0, 0, 122, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
188, 7, 0, 0, 3, 0, 1, 0,
216, 7, 0, 0, 2, 0, 1, 0,
216, 7, 0, 0, 3, 0, 1, 0,
244, 7, 0, 0, 2, 0, 1, 0,
42, 0, 0, 0, 24, 0, 0, 0,
0, 0, 1, 0, 42, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
213, 7, 0, 0, 178, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
216, 7, 0, 0, 3, 0, 1, 0,
228, 7, 0, 0, 2, 0, 1, 0,
43, 0, 0, 0, 136, 0, 0, 0,
0, 0, 1, 0, 43, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
225, 7, 0, 0, 202, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
232, 7, 0, 0, 3, 0, 1, 0,
244, 7, 0, 0, 2, 0, 1, 0,
44, 0, 0, 0, 25, 0, 0, 0,
0, 0, 1, 0, 44, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
241, 7, 0, 0, 170, 0, 0, 0,
241, 7, 0, 0, 178, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
244, 7, 0, 0, 3, 0, 1, 0,
0, 8, 0, 0, 2, 0, 1, 0,
45, 0, 0, 0, 137, 0, 0, 0,
0, 0, 1, 0, 45, 0, 0, 0,
43, 0, 0, 0, 136, 0, 0, 0,
0, 0, 1, 0, 43, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
253, 7, 0, 0, 194, 0, 0, 0,
253, 7, 0, 0, 202, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 8, 0, 0, 3, 0, 1, 0,
12, 8, 0, 0, 2, 0, 1, 0,
46, 0, 0, 0, 26, 0, 0, 0,
0, 0, 1, 0, 46, 0, 0, 0,
4, 8, 0, 0, 3, 0, 1, 0,
16, 8, 0, 0, 2, 0, 1, 0,
44, 0, 0, 0, 25, 0, 0, 0,
0, 0, 1, 0, 44, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
9, 8, 0, 0, 210, 0, 0, 0,
13, 8, 0, 0, 170, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
16, 8, 0, 0, 3, 0, 1, 0,
28, 8, 0, 0, 2, 0, 1, 0,
45, 0, 0, 0, 137, 0, 0, 0,
0, 0, 1, 0, 45, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
25, 8, 0, 0, 194, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
28, 8, 0, 0, 3, 0, 1, 0,
40, 8, 0, 0, 2, 0, 1, 0,
46, 0, 0, 0, 26, 0, 0, 0,
0, 0, 1, 0, 46, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
37, 8, 0, 0, 210, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
44, 8, 0, 0, 3, 0, 1, 0,
56, 8, 0, 0, 2, 0, 1, 0,
47, 0, 0, 0, 138, 0, 0, 0,
0, 0, 1, 0, 47, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
25, 8, 0, 0, 234, 0, 0, 0,
53, 8, 0, 0, 234, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
32, 8, 0, 0, 3, 0, 1, 0,
44, 8, 0, 0, 2, 0, 1, 0,
60, 8, 0, 0, 3, 0, 1, 0,
72, 8, 0, 0, 2, 0, 1, 0,
48, 0, 0, 0, 19, 0, 0, 0,
0, 0, 1, 0, 48, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
41, 8, 0, 0, 114, 0, 0, 0,
69, 8, 0, 0, 114, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
40, 8, 0, 0, 3, 0, 1, 0,
52, 8, 0, 0, 2, 0, 1, 0,
68, 8, 0, 0, 3, 0, 1, 0,
80, 8, 0, 0, 2, 0, 1, 0,
49, 0, 0, 0, 139, 0, 0, 0,
0, 0, 1, 0, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
49, 8, 0, 0, 138, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
52, 8, 0, 0, 3, 0, 1, 0,
64, 8, 0, 0, 2, 0, 1, 0,
50, 0, 0, 0, 14, 0, 0, 0,
0, 0, 1, 0, 50, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
61, 8, 0, 0, 194, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
64, 8, 0, 0, 3, 0, 1, 0,
76, 8, 0, 0, 2, 0, 1, 0,
51, 0, 0, 0, 140, 0, 0, 0,
0, 0, 1, 0, 51, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
73, 8, 0, 0, 202, 0, 0, 0,
77, 8, 0, 0, 138, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
80, 8, 0, 0, 3, 0, 1, 0,
92, 8, 0, 0, 2, 0, 1, 0,
52, 0, 0, 0, 15, 0, 0, 0,
0, 0, 1, 0, 52, 0, 0, 0,
50, 0, 0, 0, 14, 0, 0, 0,
0, 0, 1, 0, 50, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
89, 8, 0, 0, 170, 0, 0, 0,
89, 8, 0, 0, 194, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
92, 8, 0, 0, 3, 0, 1, 0,
104, 8, 0, 0, 2, 0, 1, 0,
51, 0, 0, 0, 140, 0, 0, 0,
0, 0, 1, 0, 51, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
101, 8, 0, 0, 202, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
108, 8, 0, 0, 3, 0, 1, 0,
120, 8, 0, 0, 2, 0, 1, 0,
52, 0, 0, 0, 15, 0, 0, 0,
0, 0, 1, 0, 52, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
117, 8, 0, 0, 170, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
120, 8, 0, 0, 3, 0, 1, 0,
132, 8, 0, 0, 2, 0, 1, 0,
53, 0, 0, 0, 27, 0, 0, 0,
0, 0, 1, 0, 53, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
101, 8, 0, 0, 186, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
104, 8, 0, 0, 3, 0, 1, 0,
116, 8, 0, 0, 2, 0, 1, 0,
54, 0, 0, 0, 20, 0, 0, 0,
0, 0, 1, 0, 54, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
113, 8, 0, 0, 154, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
116, 8, 0, 0, 3, 0, 1, 0,
128, 8, 0, 0, 2, 0, 1, 0,
55, 0, 0, 0, 32, 0, 0, 0,
0, 0, 1, 0, 55, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
125, 8, 0, 0, 210, 0, 0, 0,
129, 8, 0, 0, 186, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
132, 8, 0, 0, 3, 0, 1, 0,
144, 8, 0, 0, 2, 0, 1, 0,
56, 0, 0, 0, 17, 0, 0, 0,
0, 0, 1, 0, 56, 0, 0, 0,
54, 0, 0, 0, 20, 0, 0, 0,
0, 0, 1, 0, 54, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
141, 8, 0, 0, 138, 0, 0, 0,
141, 8, 0, 0, 154, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
144, 8, 0, 0, 3, 0, 1, 0,
156, 8, 0, 0, 2, 0, 1, 0,
55, 0, 0, 0, 32, 0, 0, 0,
0, 0, 1, 0, 55, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
153, 8, 0, 0, 210, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
160, 8, 0, 0, 3, 0, 1, 0,
172, 8, 0, 0, 2, 0, 1, 0,
56, 0, 0, 0, 17, 0, 0, 0,
0, 0, 1, 0, 56, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
169, 8, 0, 0, 138, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
172, 8, 0, 0, 3, 0, 1, 0,
184, 8, 0, 0, 2, 0, 1, 0,
57, 0, 0, 0, 33, 0, 0, 0,
0, 0, 1, 0, 57, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
153, 8, 0, 0, 154, 0, 0, 0,
181, 8, 0, 0, 154, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
156, 8, 0, 0, 3, 0, 1, 0,
168, 8, 0, 0, 2, 0, 1, 0,
184, 8, 0, 0, 3, 0, 1, 0,
196, 8, 0, 0, 2, 0, 1, 0,
58, 0, 0, 0, 21, 0, 0, 0,
0, 0, 1, 0, 58, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
165, 8, 0, 0, 154, 0, 0, 0,
193, 8, 0, 0, 154, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
168, 8, 0, 0, 3, 0, 1, 0,
180, 8, 0, 0, 2, 0, 1, 0,
196, 8, 0, 0, 3, 0, 1, 0,
208, 8, 0, 0, 2, 0, 1, 0,
59, 0, 0, 0, 141, 0, 0, 0,
0, 0, 1, 0, 59, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
205, 8, 0, 0, 146, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
208, 8, 0, 0, 3, 0, 1, 0,
220, 8, 0, 0, 2, 0, 1, 0,
115, 108, 111, 116, 73, 100, 0, 0,
12, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -4753,6 +4760,16 @@ static const ::capnp::_::AlignedData<1013> b_a1680744031fdb2d = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
12, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
97, 99, 99, 101, 112, 116, 101, 100,
73, 115, 80, 114, 101, 118, 105, 101,
119, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, }
};
@@ -4765,11 +4782,11 @@ static const ::capnp::_::RawSchema* const d_a1680744031fdb2d[] = {
&s_f58695a93b568caf,
&s_fb41e1a738d832cb,
};
static const uint16_t m_a1680744031fdb2d[] = {42, 56, 35, 13, 23, 24, 51, 50, 29, 30, 32, 31, 20, 9, 40, 16, 37, 8, 7, 14, 43, 17, 38, 19, 45, 47, 39, 55, 54, 53, 10, 15, 48, 44, 52, 36, 18, 46, 21, 4, 49, 6, 0, 1, 11, 26, 27, 25, 41, 28, 12, 22, 34, 33, 58, 57, 2, 3, 5};
static const uint16_t i_a1680744031fdb2d[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58};
static const uint16_t m_a1680744031fdb2d[] = {42, 59, 56, 35, 13, 23, 24, 51, 50, 29, 30, 32, 31, 20, 9, 40, 16, 37, 8, 7, 14, 43, 17, 38, 19, 45, 47, 39, 55, 54, 53, 10, 15, 48, 44, 52, 36, 18, 46, 21, 4, 49, 6, 0, 1, 11, 26, 27, 25, 41, 28, 12, 22, 34, 33, 58, 57, 2, 3, 5};
static const uint16_t i_a1680744031fdb2d[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59};
const ::capnp::_::RawSchema s_a1680744031fdb2d = {
0xa1680744031fdb2d, b_a1680744031fdb2d.words, 1013, d_a1680744031fdb2d, m_a1680744031fdb2d,
5, 59, i_a1680744031fdb2d, nullptr, nullptr, { &s_a1680744031fdb2d, nullptr, nullptr, 0, 0, nullptr }, false
0xa1680744031fdb2d, b_a1680744031fdb2d.words, 1030, d_a1680744031fdb2d, m_a1680744031fdb2d,
5, 60, i_a1680744031fdb2d, nullptr, nullptr, { &s_a1680744031fdb2d, nullptr, nullptr, 0, 0, nullptr }, false
};
#endif // !CAPNP_LITE
static const ::capnp::_::AlignedData<81> b_a7940385bedd1d4c = {
+19
View File
@@ -4366,6 +4366,8 @@ public:
inline bool hasUpcomingBoundaryId() const;
inline ::capnp::Text::Reader getUpcomingBoundaryId() const;
inline bool getAcceptedIsPreview() const;
private:
::capnp::_::StructReader _reader;
template <typename, ::capnp::Kind>
@@ -4659,6 +4661,9 @@ public:
inline void adoptUpcomingBoundaryId(::capnp::Orphan< ::capnp::Text>&& value);
inline ::capnp::Orphan< ::capnp::Text> disownUpcomingBoundaryId();
inline bool getAcceptedIsPreview();
inline void setAcceptedIsPreview(bool value);
private:
::capnp::_::StructBuilder _builder;
template <typename, ::capnp::Kind>
@@ -19713,6 +19718,20 @@ inline ::capnp::Orphan< ::capnp::Text> SlcState::Builder::disownUpcomingBoundary
::capnp::bounded<21>() * ::capnp::POINTERS));
}
inline bool SlcState::Reader::getAcceptedIsPreview() const {
return _reader.getDataField<bool>(
::capnp::bounded<141>() * ::capnp::ELEMENTS);
}
inline bool SlcState::Builder::getAcceptedIsPreview() {
return _builder.getDataField<bool>(
::capnp::bounded<141>() * ::capnp::ELEMENTS);
}
inline void SlcState::Builder::setAcceptedIsPreview(bool value) {
_builder.setDataField<bool>(
::capnp::bounded<141>() * ::capnp::ELEMENTS, value);
}
inline bool SlcState::SourceReading::Reader::hasSource() const {
return !_reader.getPointerField(
::capnp::bounded<0>() * ::capnp::POINTERS).isNull();
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+11 -10
View File
@@ -140,16 +140,17 @@ class Advance:
eligible = (can_offer and not (pending_current or current_first) and type(seconds) is int and 0 < seconds <= 10 and not standstill and
speed_mps is not None and type(speed_mps) in (int, float) and math.isfinite(speed_mps) and speed_mps > 0 and
upcoming is not None and upcoming.distance_m <= speed_mps * seconds)
if eligible and (encounter is None or replaced and not (encounter.crossed and pending_preview)):
proposed = dict(observations)
proposed[sel.Source.MAP] = upcoming.observation
if sel.select_limit(proposed, policy).selected_source is sel.Source.MAP:
assert upcoming.observation.candidate is not None
encounter = self.encounter = Encounter(upcoming.boundary_id, current.speed_mps,
upcoming.observation.candidate.speed_mps, upcoming.way_id, now_ns, current_way_id,
applied_preview=previous.applied_preview if previous is not None else None)
elif eligible and not encounter.crossed:
encounter.boundary_id = upcoming.boundary_id
if eligible:
if encounter is None or replaced and not (encounter.crossed and pending_preview):
proposed = dict(observations)
proposed[sel.Source.MAP] = upcoming.observation
if sel.select_limit(proposed, policy).selected_source is sel.Source.MAP:
assert upcoming.observation.candidate is not None
encounter = self.encounter = Encounter(upcoming.boundary_id, current.speed_mps,
upcoming.observation.candidate.speed_mps, upcoming.way_id, now_ns, current_way_id,
applied_preview=previous.applied_preview if previous is not None else None)
elif not encounter.crossed:
encounter.boundary_id = upcoming.boundary_id
if encounter is None:
return None
if encounter.retired:
@@ -60,6 +60,7 @@ class SavedSlcLifecycle:
timing_only = configuration == (old_admitted, retimed, *old_display)
preserve_runtime |= configuration[:-1] == (old_admitted, replace(retimed, offsets=settings.offsets), *old_display[:-1])
if preserve_runtime:
assert self.runtime is not None and self.configuration is not None
# Policy/source edits renew choices without releasing the engaged speed cap.
choices_changed = (settings.selection != self.runtime.settings.selection or
settings.acceptance != self.runtime.settings.acceptance or configuration[2:5] != self.configuration[2:5])
@@ -27,8 +27,10 @@ class SpeedDomainTests(unittest.TestCase):
def test_offset_and_ego_delta_apply_once(self):
selected = sd.selected_pair_from_kph(30., 31. * 3.6, session_id=SESSION, timestamp_ns=0)
assert selected.cluster_mps is not None
self.assertAlmostEqual(selected.cluster_mps, 31.)
domain = sd.resolve(self.accepted, SCHEDULE, selected, self.pair(25., 26.))
assert domain.context is not None
coordinate = sd.to_planner_coordinate(domain.context)
self.assertEqual(coordinate.cap_mps, 21.)
self.assertEqual(coordinate.cluster_target_mps, 22.)
@@ -39,6 +41,7 @@ class SpeedDomainTests(unittest.TestCase):
with self.subTest(offset=offset, delta=delta):
domain = sd.resolve(self.accepted, sd.OffsetSchedule((sd.OffsetBand(0., None, offset),)),
self.pair(), self.pair(20., 20. + delta))
assert domain.context is not None
coordinate = sd.to_planner_coordinate(domain.context)
self.assertEqual(coordinate.cluster_target_mps, 20.)
self.assertEqual(coordinate.cap_mps, 20. - delta)
@@ -66,6 +69,7 @@ class SpeedDomainTests(unittest.TestCase):
missing = acc.step(self.accepted.state, acc.Observation(acc.ObservationKind.UNKNOWN), ACTIVE, POLICY, now_ns=1)
pair = self.pair(now=1)
result = sd.resolve(missing, SCHEDULE, pair, pair)
assert result.context is not None
self.assertEqual(result.context.accepted_raw_mps, 20.)
self.assertEqual(sd.to_planner_coordinate(result.context).cap_mps, 22.)
self.assertEqual(sd.resolve(replace(missing, control_target_mps=21.), SCHEDULE, pair, pair).status, sd.DomainStatus.INVALID)
@@ -74,6 +78,7 @@ class SpeedDomainTests(unittest.TestCase):
def test_cluster_measurements_below_raw_do_not_add_a_delta(self):
domain = sd.resolve(self.accepted, SCHEDULE, self.pair(20., 19.), self.pair(20., 19.))
assert domain.context is not None
coordinate = sd.to_planner_coordinate(domain.context)
self.assertEqual(coordinate.cap_mps, 22.)
self.assertEqual(coordinate.ego_delta_mps, 0.)
@@ -96,7 +101,9 @@ class SpeedDomainTests(unittest.TestCase):
accepted = acc.step(acc.new_session(SESSION), acc.Observation(acc.ObservationKind.VALID, candidate(15.)), ACTIVE, POLICY, now_ns=0)
domain = sd.resolve(accepted, SCHEDULE, self.pair(25., 26.), self.pair(20., 21.))
assert domain.context is not None
coordinate = sd.to_planner_coordinate(domain.context)
assert coordinate.cap_mps is not None
self.assertEqual(coordinate.cap_mps, 16.)
cp = CarInterface.get_non_essential_params(CAR.HONDA_CIVIC)
ordinary, composed = LongitudinalPlanner(cp, init_v=V_EGO), LongitudinalPlanner(cp, init_v=V_EGO)
@@ -478,5 +478,6 @@ class TestVision(unittest.TestCase):
missing = fallback.step(sm, cp, now_ns=2_350_000_000, now_boot_ns=6_350_000_000)
self.assertTrue(missing.message.slcState.hasCeiling)
self.assertEqual(missing.result.acceptance.basis, 'unknown')
assert missing.result.acceptance.control_target_mps is not None
self.assertAlmostEqual(missing.result.acceptance.control_target_mps, dashboard.speedMps)
self.assertEqual(missing.result.acceptance.state.accepted, chosen_accepted.result.acceptance.state.accepted)
@@ -38,8 +38,8 @@ from openpilot.starpilot.ui.feature_settings_state import (
)
from openpilot.starpilot.speed_limits.offset_document import MPH_TO_MPS
from openpilot.starpilot.speed_limits.runtime_settings import (
ADVANCE_BYTES, ADVANCE_KEYS, ADVANCE_SECONDS, CONFIRMATION_BYTES, CONFIRMATION_CHOICES,
PEDAL_OVERRIDE_BYTES, PEDAL_OVERRIDE_CHOICES, PEDAL_OVERRIDE_KEY, SOURCE_PRIORITY_KEYS, PedalOverride,
ADVANCE_BYTES, ADVANCE_KEYS, CONFIRMATION_CHOICES,
PEDAL_OVERRIDE_BYTES, PEDAL_OVERRIDE_CHOICES, PEDAL_OVERRIDE_KEY, SOURCE_PRIORITY_KEYS,
)
from openpilot.starpilot.aol.vehicle import policy_for as aol_policy_for
from openpilot.starpilot.feature_capabilities import longitudinal_supported as feature_longitudinal_supported
@@ -47,6 +47,7 @@ from openpilot.starpilot.lateral.torque_settings import DOCUMENT_KEY, LEGACY_KEY
from openpilot.starpilot.ui.torque_feature import TorqueFeature
from openpilot.starpilot.ui.controller_feature import ControllerFeature, SETUP_ACTION
from openpilot.starpilot.ui.slc_offset_feature import SlcOffsetOwner
from openpilot.starpilot.ui.slc_policy_feature import SLC_ADVANCE_CHOICES, policy_rows
from openpilot.starpilot.longitudinal.profile_preferences import read_document_value, read_profile_health
from openpilot.starpilot.ui.long_profile_feature import (LongProfileFeature, is_long_confirm_action, VALUE_HELP, CATEGORY_HELP,
preset_label, preset_value)
@@ -114,7 +115,6 @@ FLOAT_SPECS = {
for suffix in ("JerkAcceleration", "JerkDeceleration", "JerkDanger", "JerkSpeedDecrease", "JerkSpeed")},
}
SLC_PRIORITY, SLC_SECONDARY, SLC_TERTIARY = SOURCE_PRIORITY_KEYS
SLC_ADVANCE_CHOICES = ('Off', *(f'{seconds} s' for seconds in ADVANCE_SECONDS[1:]))
LONG_PREFIX = "profile:"
PRESETS = {"acceleration": ACCELERATION_PRESETS, "braking": BRAKING_PRESETS, "following": FOLLOWING_PRESETS}
PROFILE_NAMES = ("aggressive", "standard", "relaxed")
@@ -1128,31 +1128,7 @@ class FeatureSettingsOwner:
reason="Start SET at the SLC limit plus offset. RES restores your previous SET"))
rows.append(self._bool_row("ShowSpeedLimits", "Show speed limit signs", self.authority("preferences"),
reason="Display signs independently of Speed Limit Controller; does not change cruise speed"))
_, raw_confirmation, readable_confirmation = self._value('SLCConfirmation')
valid_confirmation = readable_confirmation and raw_confirmation in (None, *CONFIRMATION_BYTES)
confirmation = CONFIRMATION_CHOICES[int(raw_confirmation or b'0')] if valid_confirmation else 'Invalid'
rows.append(FeatureRow('SLCConfirmation', 'Confirm limits', confirmation, raw_confirmation,
tuple(CONFIRMATION_CHOICES.values()), available=allowed and self._readable('SLCConfirmation'), default_value='Off',
repair_value='' if valid_confirmation else 'Both',
reason='Off adopts limits automatically. For prompts, + accepts and − declines within 30 seconds'
if valid_confirmation else 'Invalid saved confirmation mode; choose a confirmation policy'))
for key, direction in zip(ADVANCE_KEYS, ('higher', 'lower'), strict=True):
advance, raw_advance, readable_advance = self._value(key)
valid_advance = readable_advance and (raw_advance is None or raw_advance in ADVANCE_BYTES)
rows.append(FeatureRow(key, f'Adopt {direction} limits early',
SLC_ADVANCE_CHOICES[int(advance)] if valid_advance else f'Saved {advance}', raw_advance,
SLC_ADVANCE_CHOICES if valid_advance else ('Off',), available=allowed, default_value='Off',
reason=f'Offer or adopt {direction} mapped limits this many seconds early at the current speed'
if valid_advance else 'Invalid saved advance time; restore Off'))
_, raw_override, readable_override = self._value(PEDAL_OVERRIDE_KEY)
default_override = PEDAL_OVERRIDE_CHOICES[PedalOverride.SPEED_REACHED]
valid_override = readable_override and (raw_override is None or raw_override in PEDAL_OVERRIDE_BYTES)
rows.append(FeatureRow(PEDAL_OVERRIDE_KEY, 'Gas pedal override',
default_override if raw_override is None else PEDAL_OVERRIDE_CHOICES[int(raw_override)] if valid_override else 'Invalid',
raw_override, PEDAL_OVERRIDE_CHOICES if valid_override else ('Off',),
available=allowed and self._readable(PEDAL_OVERRIDE_KEY), default_value=default_override,
repair_value='' if valid_override else 'Off',
reason='Choose what cruise holds after you press the gas past the adjusted speed limit'))
rows.extend(policy_rows(self._value, self._readable, allowed=allowed))
source_capability = self._source_capability()
vision_dev, maps_available = source_capability
source_allowed = configurable and self.authority("preferences")
@@ -0,0 +1,37 @@
from openpilot.starpilot.speed_limits.runtime_settings import (
ADVANCE_BYTES, ADVANCE_KEYS, ADVANCE_SECONDS, CONFIRMATION_BYTES, CONFIRMATION_CHOICES,
PEDAL_OVERRIDE_BYTES, PEDAL_OVERRIDE_CHOICES, PEDAL_OVERRIDE_KEY, PedalOverride,
)
from openpilot.starpilot.ui.feature_settings_state import FeatureRow
SLC_ADVANCE_CHOICES = ('Off', *(f'{seconds} s' for seconds in ADVANCE_SECONDS[1:]))
def policy_rows(read_value, readable, *, allowed):
rows = []
_, raw_confirmation, readable_confirmation = read_value('SLCConfirmation')
valid_confirmation = readable_confirmation and raw_confirmation in (None, *CONFIRMATION_BYTES)
confirmation = CONFIRMATION_CHOICES[int(raw_confirmation or b'0')] if valid_confirmation else 'Invalid'
rows.append(FeatureRow('SLCConfirmation', 'Confirm limits', confirmation, raw_confirmation,
tuple(CONFIRMATION_CHOICES.values()), available=allowed and readable('SLCConfirmation'), default_value='Off',
repair_value='' if valid_confirmation else 'Both',
reason='Off adopts limits automatically. For prompts, + accepts and − declines within 30 seconds'
if valid_confirmation else 'Invalid saved confirmation mode; choose a confirmation policy'))
for key, direction in zip(ADVANCE_KEYS, ('higher', 'lower'), strict=True):
advance, raw_advance, readable_advance = read_value(key)
valid_advance = readable_advance and (raw_advance is None or raw_advance in ADVANCE_BYTES)
rows.append(FeatureRow(key, f'Adopt {direction} limits early',
SLC_ADVANCE_CHOICES[int(advance)] if valid_advance else f'Saved {advance}', raw_advance,
SLC_ADVANCE_CHOICES if valid_advance else ('Off',), available=allowed, default_value='Off',
reason=f'Offer or adopt {direction} mapped limits this many seconds early at the current speed'
if valid_advance else 'Invalid saved advance time; restore Off'))
_, raw_override, readable_override = read_value(PEDAL_OVERRIDE_KEY)
default_override = PEDAL_OVERRIDE_CHOICES[PedalOverride.SPEED_REACHED]
valid_override = readable_override and (raw_override is None or raw_override in PEDAL_OVERRIDE_BYTES)
rows.append(FeatureRow(PEDAL_OVERRIDE_KEY, 'Gas pedal override',
default_override if raw_override is None else PEDAL_OVERRIDE_CHOICES[int(raw_override)] if valid_override else 'Invalid',
raw_override, PEDAL_OVERRIDE_CHOICES if valid_override else ('Off',),
available=allowed and readable(PEDAL_OVERRIDE_KEY), default_value=default_override,
repair_value='' if valid_override else 'Off',
reason='Choose what cruise holds after you press the gas past the adjusted speed limit'))
return rows
@@ -565,7 +565,7 @@ class AppearanceSettingsTests(unittest.TestCase):
UnifiedSpeedWidget(fonts).render(rl.Rectangle(30, 30, 1800, 1020), base)
card.assert_not_called()
from openpilot.starpilot.ui.tests.test_unified_speed_native import foreground_calls
self.assertEqual(foreground_calls(fonts.draw)[0].args[3:5], (192, 90))
self.assertEqual(foreground_calls(fonts.draw)[0].args[3:5], (192, 89))
for profile in (Profile.LARGE, Profile.COMPACT):
view = onroad.OnroadView.__new__(onroad.OnroadView)
view.personality = Mock()
@@ -85,7 +85,7 @@ def test_large_sign_is_secondary_to_set_speed_at_the_saved_position():
current = sample_state('engaged', document)
factor = 3.6 if metric else 2.2369362921
observation = replace(current.speed_limit, speed_limit_mps=120 / factor,
presentation_adjusted_limit_mps=130 / factor)
presentation_adjusted_limit_mps=130 / factor, effective_cluster_target_mps=130 / factor)
current = replace(current, metric=metric, cruise_kph=value / factor * 3.6 if value else None,
speed_limit=observation)
calls = []