openpilot v0.2.7 release
parent
6c3afeec0f
commit
c6ba5dc539
|
@ -20,7 +20,7 @@ Supported Cars
|
|||
- Acura ILX 2016 with AcuraWatch Plus
|
||||
- Limitations: Due to use of the cruise control for gas, it can only be enabled above 25 mph
|
||||
|
||||
- Honda Civic 2016 Touring Edition
|
||||
- Honda Civic 2016 with Honda Sensing
|
||||
- Limitations: Due to limitations in steering firmware, steering is disabled below 18 mph
|
||||
|
||||
Directory structure
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
Version 0.2.7 (2017-02-08)
|
||||
===========================
|
||||
* Better performance and pictures at night
|
||||
* Fix ptr alignment issue in boardd
|
||||
* Fix brake error light, fix crash if too cold
|
||||
|
||||
Version 0.2.6 (2017-01-31)
|
||||
===========================
|
||||
* Fix bug in visiond model execution
|
||||
|
|
|
@ -280,12 +280,12 @@ void cereal_set_CanData(const struct cereal_CanData *s, cereal_CanData_list l, i
|
|||
|
||||
cereal_ThermalData_ptr cereal_new_ThermalData(struct capn_segment *s) {
|
||||
cereal_ThermalData_ptr p;
|
||||
p.p = capn_new_struct(s, 24, 0);
|
||||
p.p = capn_new_struct(s, 24, 1);
|
||||
return p;
|
||||
}
|
||||
cereal_ThermalData_list cereal_new_ThermalData_list(struct capn_segment *s, int len) {
|
||||
cereal_ThermalData_list p;
|
||||
p.p = capn_new_list(s, len, 24, 0);
|
||||
p.p = capn_new_list(s, len, 24, 1);
|
||||
return p;
|
||||
}
|
||||
void cereal_read_ThermalData(struct cereal_ThermalData *s, cereal_ThermalData_ptr p) {
|
||||
|
@ -299,6 +299,7 @@ void cereal_read_ThermalData(struct cereal_ThermalData *s, cereal_ThermalData_pt
|
|||
s->bat = capn_read32(p.p, 12);
|
||||
s->freeSpace = capn_to_f32(capn_read32(p.p, 16));
|
||||
s->batteryPercent = (int16_t) ((int16_t)capn_read16(p.p, 20));
|
||||
s->batteryStatus = capn_get_text(p.p, 0, capn_val0);
|
||||
}
|
||||
void cereal_write_ThermalData(const struct cereal_ThermalData *s, cereal_ThermalData_ptr p) {
|
||||
capn_resolve(&p.p);
|
||||
|
@ -311,6 +312,7 @@ void cereal_write_ThermalData(const struct cereal_ThermalData *s, cereal_Thermal
|
|||
capn_write32(p.p, 12, s->bat);
|
||||
capn_write32(p.p, 16, capn_from_f32(s->freeSpace));
|
||||
capn_write16(p.p, 20, (uint16_t) (s->batteryPercent));
|
||||
capn_set_text(p.p, 0, s->batteryStatus);
|
||||
}
|
||||
void cereal_get_ThermalData(struct cereal_ThermalData *s, cereal_ThermalData_list l, int i) {
|
||||
cereal_ThermalData_ptr p;
|
||||
|
@ -1018,7 +1020,8 @@ void cereal_read_Event(struct cereal_Event *s, cereal_Event_ptr p) {
|
|||
case cereal_Event_androidLogEntry:
|
||||
case cereal_Event_gpsLocation:
|
||||
case cereal_Event_carState:
|
||||
s->carState.p = capn_getp(p.p, 0, 0);
|
||||
case cereal_Event_carControl:
|
||||
s->carControl.p = capn_getp(p.p, 0, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -1053,7 +1056,8 @@ void cereal_write_Event(const struct cereal_Event *s, cereal_Event_ptr p) {
|
|||
case cereal_Event_androidLogEntry:
|
||||
case cereal_Event_gpsLocation:
|
||||
case cereal_Event_carState:
|
||||
capn_setp(p.p, 0, s->carState.p);
|
||||
case cereal_Event_carControl:
|
||||
capn_setp(p.p, 0, s->carControl.p);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -224,13 +224,14 @@ struct cereal_ThermalData {
|
|||
uint32_t bat;
|
||||
float freeSpace;
|
||||
int16_t batteryPercent;
|
||||
capn_text batteryStatus;
|
||||
};
|
||||
|
||||
static const size_t cereal_ThermalData_word_count = 3;
|
||||
|
||||
static const size_t cereal_ThermalData_pointer_count = 0;
|
||||
static const size_t cereal_ThermalData_pointer_count = 1;
|
||||
|
||||
static const size_t cereal_ThermalData_struct_bytes_count = 24;
|
||||
static const size_t cereal_ThermalData_struct_bytes_count = 32;
|
||||
|
||||
struct cereal_HealthData {
|
||||
uint32_t voltage;
|
||||
|
@ -509,7 +510,8 @@ enum cereal_Event_which {
|
|||
cereal_Event_liveCalibration = 18,
|
||||
cereal_Event_androidLogEntry = 19,
|
||||
cereal_Event_gpsLocation = 20,
|
||||
cereal_Event_carState = 21
|
||||
cereal_Event_carState = 21,
|
||||
cereal_Event_carControl = 22
|
||||
};
|
||||
|
||||
struct cereal_Event {
|
||||
|
@ -538,6 +540,7 @@ struct cereal_Event {
|
|||
cereal_AndroidLogEntry_ptr androidLogEntry;
|
||||
cereal_GpsLocationData_ptr gpsLocation;
|
||||
cereal_CarState_ptr carState;
|
||||
cereal_CarControl_ptr carControl;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -862,87 +862,94 @@ const ::capnp::_::RawSchema s_8785009a964c7c59 = {
|
|||
0, 4, i_8785009a964c7c59, nullptr, nullptr, { &s_8785009a964c7c59, nullptr, nullptr, 0, 0, nullptr }
|
||||
};
|
||||
#endif // !CAPNP_LITE
|
||||
static const ::capnp::_::AlignedData<154> b_8d8231a40b7fe6e0 = {
|
||||
static const ::capnp::_::AlignedData<170> b_8d8231a40b7fe6e0 = {
|
||||
{ 0, 0, 0, 0, 5, 0, 6, 0,
|
||||
224, 230, 127, 11, 164, 49, 130, 141,
|
||||
10, 0, 0, 0, 1, 0, 3, 0,
|
||||
91, 40, 164, 37, 126, 241, 177, 243,
|
||||
0, 0, 7, 0, 0, 0, 0, 0,
|
||||
1, 0, 7, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
21, 0, 0, 0, 178, 0, 0, 0,
|
||||
29, 0, 0, 0, 7, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
25, 0, 0, 0, 255, 1, 0, 0,
|
||||
25, 0, 0, 0, 55, 2, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
108, 111, 103, 46, 99, 97, 112, 110,
|
||||
112, 58, 84, 104, 101, 114, 109, 97,
|
||||
108, 68, 97, 116, 97, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 0, 1, 0,
|
||||
36, 0, 0, 0, 3, 0, 4, 0,
|
||||
40, 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,
|
||||
237, 0, 0, 0, 42, 0, 0, 0,
|
||||
9, 1, 0, 0, 42, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
232, 0, 0, 0, 3, 0, 1, 0,
|
||||
244, 0, 0, 0, 2, 0, 1, 0,
|
||||
4, 1, 0, 0, 3, 0, 1, 0,
|
||||
16, 1, 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,
|
||||
241, 0, 0, 0, 42, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
236, 0, 0, 0, 3, 0, 1, 0,
|
||||
248, 0, 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,
|
||||
245, 0, 0, 0, 42, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
240, 0, 0, 0, 3, 0, 1, 0,
|
||||
252, 0, 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,
|
||||
249, 0, 0, 0, 42, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
244, 0, 0, 0, 3, 0, 1, 0,
|
||||
0, 1, 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,
|
||||
253, 0, 0, 0, 34, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
248, 0, 0, 0, 3, 0, 1, 0,
|
||||
4, 1, 0, 0, 2, 0, 1, 0,
|
||||
5, 0, 0, 0, 5, 0, 0, 0,
|
||||
0, 0, 1, 0, 5, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
1, 1, 0, 0, 34, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
252, 0, 0, 0, 3, 0, 1, 0,
|
||||
8, 1, 0, 0, 2, 0, 1, 0,
|
||||
6, 0, 0, 0, 3, 0, 0, 0,
|
||||
0, 0, 1, 0, 6, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
5, 1, 0, 0, 34, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 1, 0, 0, 3, 0, 1, 0,
|
||||
12, 1, 0, 0, 2, 0, 1, 0,
|
||||
7, 0, 0, 0, 4, 0, 0, 0,
|
||||
0, 0, 1, 0, 7, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
9, 1, 0, 0, 82, 0, 0, 0,
|
||||
13, 1, 0, 0, 42, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
8, 1, 0, 0, 3, 0, 1, 0,
|
||||
20, 1, 0, 0, 2, 0, 1, 0,
|
||||
8, 0, 0, 0, 10, 0, 0, 0,
|
||||
0, 0, 1, 0, 8, 0, 0, 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,
|
||||
17, 1, 0, 0, 122, 0, 0, 0,
|
||||
17, 1, 0, 0, 42, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
12, 1, 0, 0, 3, 0, 1, 0,
|
||||
24, 1, 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,
|
||||
21, 1, 0, 0, 42, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
16, 1, 0, 0, 3, 0, 1, 0,
|
||||
28, 1, 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,
|
||||
25, 1, 0, 0, 34, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
20, 1, 0, 0, 3, 0, 1, 0,
|
||||
32, 1, 0, 0, 2, 0, 1, 0,
|
||||
5, 0, 0, 0, 5, 0, 0, 0,
|
||||
0, 0, 1, 0, 5, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
29, 1, 0, 0, 34, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
24, 1, 0, 0, 3, 0, 1, 0,
|
||||
36, 1, 0, 0, 2, 0, 1, 0,
|
||||
6, 0, 0, 0, 3, 0, 0, 0,
|
||||
0, 0, 1, 0, 6, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
33, 1, 0, 0, 34, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
28, 1, 0, 0, 3, 0, 1, 0,
|
||||
40, 1, 0, 0, 2, 0, 1, 0,
|
||||
7, 0, 0, 0, 4, 0, 0, 0,
|
||||
0, 0, 1, 0, 7, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
37, 1, 0, 0, 82, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
36, 1, 0, 0, 3, 0, 1, 0,
|
||||
48, 1, 0, 0, 2, 0, 1, 0,
|
||||
8, 0, 0, 0, 10, 0, 0, 0,
|
||||
0, 0, 1, 0, 8, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
45, 1, 0, 0, 122, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
44, 1, 0, 0, 3, 0, 1, 0,
|
||||
56, 1, 0, 0, 2, 0, 1, 0,
|
||||
9, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 9, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
53, 1, 0, 0, 114, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
52, 1, 0, 0, 3, 0, 1, 0,
|
||||
64, 1, 0, 0, 2, 0, 1, 0,
|
||||
99, 112, 117, 48, 0, 0, 0, 0,
|
||||
7, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
|
@ -1015,16 +1022,25 @@ static const ::capnp::_::AlignedData<154> b_8d8231a40b7fe6e0 = {
|
|||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
98, 97, 116, 116, 101, 114, 121, 83,
|
||||
116, 97, 116, 117, 115, 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,
|
||||
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, }
|
||||
};
|
||||
::capnp::word const* const bp_8d8231a40b7fe6e0 = b_8d8231a40b7fe6e0.words;
|
||||
#if !CAPNP_LITE
|
||||
static const uint16_t m_8d8231a40b7fe6e0[] = {6, 8, 0, 1, 2, 3, 7, 5, 4};
|
||||
static const uint16_t i_8d8231a40b7fe6e0[] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
|
||||
static const uint16_t m_8d8231a40b7fe6e0[] = {6, 8, 9, 0, 1, 2, 3, 7, 5, 4};
|
||||
static const uint16_t i_8d8231a40b7fe6e0[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
|
||||
const ::capnp::_::RawSchema s_8d8231a40b7fe6e0 = {
|
||||
0x8d8231a40b7fe6e0, b_8d8231a40b7fe6e0.words, 154, nullptr, m_8d8231a40b7fe6e0,
|
||||
0, 9, i_8d8231a40b7fe6e0, nullptr, nullptr, { &s_8d8231a40b7fe6e0, nullptr, nullptr, 0, 0, nullptr }
|
||||
0x8d8231a40b7fe6e0, b_8d8231a40b7fe6e0.words, 170, nullptr, m_8d8231a40b7fe6e0,
|
||||
0, 10, i_8d8231a40b7fe6e0, nullptr, nullptr, { &s_8d8231a40b7fe6e0, nullptr, nullptr, 0, 0, nullptr }
|
||||
};
|
||||
#endif // !CAPNP_LITE
|
||||
static const ::capnp::_::AlignedData<112> b_cfa2b0c2c82af1e4 = {
|
||||
|
@ -3339,184 +3355,191 @@ const ::capnp::_::RawSchema s_9811e1f38f62f2d1 = {
|
|||
0, 2, i_9811e1f38f62f2d1, nullptr, nullptr, { &s_9811e1f38f62f2d1, nullptr, nullptr, 0, 0, nullptr }
|
||||
};
|
||||
#endif // !CAPNP_LITE
|
||||
static const ::capnp::_::AlignedData<398> b_d314cfd957229c11 = {
|
||||
static const ::capnp::_::AlignedData<414> b_d314cfd957229c11 = {
|
||||
{ 0, 0, 0, 0, 5, 0, 6, 0,
|
||||
17, 156, 34, 87, 217, 207, 20, 211,
|
||||
10, 0, 0, 0, 1, 0, 2, 0,
|
||||
91, 40, 164, 37, 126, 241, 177, 243,
|
||||
1, 0, 7, 0, 0, 0, 22, 0,
|
||||
1, 0, 7, 0, 0, 0, 23, 0,
|
||||
4, 0, 0, 0, 0, 0, 0, 0,
|
||||
21, 0, 0, 0, 130, 0, 0, 0,
|
||||
25, 0, 0, 0, 7, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
21, 0, 0, 0, 15, 5, 0, 0,
|
||||
21, 0, 0, 0, 71, 5, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
108, 111, 103, 46, 99, 97, 112, 110,
|
||||
112, 58, 69, 118, 101, 110, 116, 0,
|
||||
0, 0, 0, 0, 1, 0, 1, 0,
|
||||
92, 0, 0, 0, 3, 0, 4, 0,
|
||||
96, 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,
|
||||
117, 2, 0, 0, 98, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
116, 2, 0, 0, 3, 0, 1, 0,
|
||||
128, 2, 0, 0, 2, 0, 1, 0,
|
||||
1, 0, 255, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
125, 2, 0, 0, 74, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
124, 2, 0, 0, 3, 0, 1, 0,
|
||||
136, 2, 0, 0, 2, 0, 1, 0,
|
||||
2, 0, 254, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
133, 2, 0, 0, 50, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
128, 2, 0, 0, 3, 0, 1, 0,
|
||||
140, 2, 0, 0, 2, 0, 1, 0,
|
||||
3, 0, 253, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
137, 2, 0, 0, 66, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
132, 2, 0, 0, 3, 0, 1, 0,
|
||||
144, 2, 0, 0, 2, 0, 1, 0,
|
||||
4, 0, 252, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
141, 2, 0, 0, 178, 0, 0, 0,
|
||||
145, 2, 0, 0, 98, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
144, 2, 0, 0, 3, 0, 1, 0,
|
||||
156, 2, 0, 0, 2, 0, 1, 0,
|
||||
5, 0, 251, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 5, 0, 0, 0,
|
||||
1, 0, 255, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
153, 2, 0, 0, 34, 0, 0, 0,
|
||||
153, 2, 0, 0, 74, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
148, 2, 0, 0, 3, 0, 1, 0,
|
||||
176, 2, 0, 0, 2, 0, 1, 0,
|
||||
6, 0, 250, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 6, 0, 0, 0,
|
||||
152, 2, 0, 0, 3, 0, 1, 0,
|
||||
164, 2, 0, 0, 2, 0, 1, 0,
|
||||
2, 0, 254, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
173, 2, 0, 0, 66, 0, 0, 0,
|
||||
161, 2, 0, 0, 50, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
168, 2, 0, 0, 3, 0, 1, 0,
|
||||
180, 2, 0, 0, 2, 0, 1, 0,
|
||||
7, 0, 249, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 7, 0, 0, 0,
|
||||
156, 2, 0, 0, 3, 0, 1, 0,
|
||||
168, 2, 0, 0, 2, 0, 1, 0,
|
||||
3, 0, 253, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
177, 2, 0, 0, 66, 0, 0, 0,
|
||||
165, 2, 0, 0, 66, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
160, 2, 0, 0, 3, 0, 1, 0,
|
||||
172, 2, 0, 0, 2, 0, 1, 0,
|
||||
4, 0, 252, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
169, 2, 0, 0, 178, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
172, 2, 0, 0, 3, 0, 1, 0,
|
||||
184, 2, 0, 0, 2, 0, 1, 0,
|
||||
5, 0, 251, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 5, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
181, 2, 0, 0, 34, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
176, 2, 0, 0, 3, 0, 1, 0,
|
||||
204, 2, 0, 0, 2, 0, 1, 0,
|
||||
6, 0, 250, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 6, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
201, 2, 0, 0, 66, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
196, 2, 0, 0, 3, 0, 1, 0,
|
||||
208, 2, 0, 0, 2, 0, 1, 0,
|
||||
7, 0, 249, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 7, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
205, 2, 0, 0, 66, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
200, 2, 0, 0, 3, 0, 1, 0,
|
||||
212, 2, 0, 0, 2, 0, 1, 0,
|
||||
8, 0, 248, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 8, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
181, 2, 0, 0, 162, 0, 0, 0,
|
||||
209, 2, 0, 0, 162, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
184, 2, 0, 0, 3, 0, 1, 0,
|
||||
212, 2, 0, 0, 2, 0, 1, 0,
|
||||
212, 2, 0, 0, 3, 0, 1, 0,
|
||||
240, 2, 0, 0, 2, 0, 1, 0,
|
||||
9, 0, 247, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 9, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
209, 2, 0, 0, 50, 0, 0, 0,
|
||||
237, 2, 0, 0, 50, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
204, 2, 0, 0, 3, 0, 1, 0,
|
||||
216, 2, 0, 0, 2, 0, 1, 0,
|
||||
232, 2, 0, 0, 3, 0, 1, 0,
|
||||
244, 2, 0, 0, 2, 0, 1, 0,
|
||||
10, 0, 246, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 10, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
213, 2, 0, 0, 74, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
212, 2, 0, 0, 3, 0, 1, 0,
|
||||
224, 2, 0, 0, 2, 0, 1, 0,
|
||||
11, 0, 245, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 11, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
221, 2, 0, 0, 106, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
220, 2, 0, 0, 3, 0, 1, 0,
|
||||
248, 2, 0, 0, 2, 0, 1, 0,
|
||||
12, 0, 244, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 12, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
245, 2, 0, 0, 58, 0, 0, 0,
|
||||
241, 2, 0, 0, 74, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
240, 2, 0, 0, 3, 0, 1, 0,
|
||||
252, 2, 0, 0, 2, 0, 1, 0,
|
||||
11, 0, 245, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 11, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
249, 2, 0, 0, 106, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
248, 2, 0, 0, 3, 0, 1, 0,
|
||||
20, 3, 0, 0, 2, 0, 1, 0,
|
||||
12, 0, 244, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 12, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
17, 3, 0, 0, 58, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
12, 3, 0, 0, 3, 0, 1, 0,
|
||||
24, 3, 0, 0, 2, 0, 1, 0,
|
||||
13, 0, 243, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 13, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
249, 2, 0, 0, 58, 0, 0, 0,
|
||||
21, 3, 0, 0, 58, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
244, 2, 0, 0, 3, 0, 1, 0,
|
||||
0, 3, 0, 0, 2, 0, 1, 0,
|
||||
16, 3, 0, 0, 3, 0, 1, 0,
|
||||
28, 3, 0, 0, 2, 0, 1, 0,
|
||||
14, 0, 242, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 14, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
253, 2, 0, 0, 138, 0, 0, 0,
|
||||
25, 3, 0, 0, 138, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 3, 0, 0, 3, 0, 1, 0,
|
||||
12, 3, 0, 0, 2, 0, 1, 0,
|
||||
28, 3, 0, 0, 3, 0, 1, 0,
|
||||
40, 3, 0, 0, 2, 0, 1, 0,
|
||||
15, 0, 241, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 15, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
9, 3, 0, 0, 82, 0, 0, 0,
|
||||
37, 3, 0, 0, 82, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
8, 3, 0, 0, 3, 0, 1, 0,
|
||||
20, 3, 0, 0, 2, 0, 1, 0,
|
||||
36, 3, 0, 0, 3, 0, 1, 0,
|
||||
48, 3, 0, 0, 2, 0, 1, 0,
|
||||
16, 0, 240, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
17, 3, 0, 0, 90, 0, 0, 0,
|
||||
45, 3, 0, 0, 90, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
16, 3, 0, 0, 3, 0, 1, 0,
|
||||
44, 3, 0, 0, 2, 0, 1, 0,
|
||||
44, 3, 0, 0, 3, 0, 1, 0,
|
||||
72, 3, 0, 0, 2, 0, 1, 0,
|
||||
17, 0, 239, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 17, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
41, 3, 0, 0, 66, 0, 0, 0,
|
||||
69, 3, 0, 0, 66, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
36, 3, 0, 0, 3, 0, 1, 0,
|
||||
64, 3, 0, 0, 2, 0, 1, 0,
|
||||
64, 3, 0, 0, 3, 0, 1, 0,
|
||||
92, 3, 0, 0, 2, 0, 1, 0,
|
||||
18, 0, 238, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 18, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
61, 3, 0, 0, 90, 0, 0, 0,
|
||||
89, 3, 0, 0, 90, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
60, 3, 0, 0, 3, 0, 1, 0,
|
||||
72, 3, 0, 0, 2, 0, 1, 0,
|
||||
88, 3, 0, 0, 3, 0, 1, 0,
|
||||
100, 3, 0, 0, 2, 0, 1, 0,
|
||||
19, 0, 237, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 19, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
69, 3, 0, 0, 130, 0, 0, 0,
|
||||
97, 3, 0, 0, 130, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
68, 3, 0, 0, 3, 0, 1, 0,
|
||||
80, 3, 0, 0, 2, 0, 1, 0,
|
||||
96, 3, 0, 0, 3, 0, 1, 0,
|
||||
108, 3, 0, 0, 2, 0, 1, 0,
|
||||
20, 0, 236, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 20, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
77, 3, 0, 0, 130, 0, 0, 0,
|
||||
105, 3, 0, 0, 130, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
76, 3, 0, 0, 3, 0, 1, 0,
|
||||
88, 3, 0, 0, 2, 0, 1, 0,
|
||||
104, 3, 0, 0, 3, 0, 1, 0,
|
||||
116, 3, 0, 0, 2, 0, 1, 0,
|
||||
21, 0, 235, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 21, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
85, 3, 0, 0, 98, 0, 0, 0,
|
||||
113, 3, 0, 0, 98, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
84, 3, 0, 0, 3, 0, 1, 0,
|
||||
96, 3, 0, 0, 2, 0, 1, 0,
|
||||
112, 3, 0, 0, 3, 0, 1, 0,
|
||||
124, 3, 0, 0, 2, 0, 1, 0,
|
||||
22, 0, 234, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 22, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
93, 3, 0, 0, 74, 0, 0, 0,
|
||||
121, 3, 0, 0, 74, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
92, 3, 0, 0, 3, 0, 1, 0,
|
||||
104, 3, 0, 0, 2, 0, 1, 0,
|
||||
120, 3, 0, 0, 3, 0, 1, 0,
|
||||
132, 3, 0, 0, 2, 0, 1, 0,
|
||||
23, 0, 233, 255, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 23, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
129, 3, 0, 0, 90, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
128, 3, 0, 0, 3, 0, 1, 0,
|
||||
140, 3, 0, 0, 2, 0, 1, 0,
|
||||
108, 111, 103, 77, 111, 110, 111, 84,
|
||||
105, 109, 101, 0, 0, 0, 0, 0,
|
||||
9, 0, 0, 0, 0, 0, 0, 0,
|
||||
|
@ -3735,6 +3758,15 @@ static const ::capnp::_::AlignedData<398> b_d314cfd957229c11 = {
|
|||
60, 144, 82, 224, 9, 250, 164, 157,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
16, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
99, 97, 114, 67, 111, 110, 116, 114,
|
||||
111, 108, 0, 0, 0, 0, 0, 0,
|
||||
16, 0, 0, 0, 0, 0, 0, 0,
|
||||
175, 20, 184, 154, 4, 41, 136, 247,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
16, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, }
|
||||
|
@ -3761,12 +3793,13 @@ static const ::capnp::_::RawSchema* const d_d314cfd957229c11[] = {
|
|||
&s_e946524859add50e,
|
||||
&s_ea0245f695ae0a33,
|
||||
&s_ea095da1894f7d85,
|
||||
&s_f78829049ab814af,
|
||||
};
|
||||
static const uint16_t m_d314cfd957229c11[] = {20, 5, 22, 15, 10, 2, 21, 3, 12, 1, 7, 13, 19, 8, 16, 14, 18, 0, 9, 17, 4, 11, 6};
|
||||
static const uint16_t i_d314cfd957229c11[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0};
|
||||
static const uint16_t m_d314cfd957229c11[] = {20, 5, 23, 22, 15, 10, 2, 21, 3, 12, 1, 7, 13, 19, 8, 16, 14, 18, 0, 9, 17, 4, 11, 6};
|
||||
static const uint16_t i_d314cfd957229c11[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0};
|
||||
const ::capnp::_::RawSchema s_d314cfd957229c11 = {
|
||||
0xd314cfd957229c11, b_d314cfd957229c11.words, 398, d_d314cfd957229c11, m_d314cfd957229c11,
|
||||
19, 23, i_d314cfd957229c11, nullptr, nullptr, { &s_d314cfd957229c11, nullptr, nullptr, 0, 0, nullptr }
|
||||
0xd314cfd957229c11, b_d314cfd957229c11.words, 414, d_d314cfd957229c11, m_d314cfd957229c11,
|
||||
20, 24, i_d314cfd957229c11, nullptr, nullptr, { &s_d314cfd957229c11, nullptr, nullptr, 0, 0, nullptr }
|
||||
};
|
||||
#endif // !CAPNP_LITE
|
||||
} // namespace schemas
|
||||
|
|
|
@ -185,7 +185,7 @@ struct ThermalData {
|
|||
class Pipeline;
|
||||
|
||||
struct _capnpPrivate {
|
||||
CAPNP_DECLARE_STRUCT_HEADER(8d8231a40b7fe6e0, 3, 0)
|
||||
CAPNP_DECLARE_STRUCT_HEADER(8d8231a40b7fe6e0, 3, 1)
|
||||
#if !CAPNP_LITE
|
||||
static constexpr ::capnp::_::RawBrandedSchema const* brand = &schema->defaultBrand;
|
||||
#endif // !CAPNP_LITE
|
||||
|
@ -467,6 +467,7 @@ struct Event {
|
|||
ANDROID_LOG_ENTRY,
|
||||
GPS_LOCATION,
|
||||
CAR_STATE,
|
||||
CAR_CONTROL,
|
||||
};
|
||||
|
||||
struct _capnpPrivate {
|
||||
|
@ -1258,6 +1259,9 @@ public:
|
|||
|
||||
inline ::int16_t getBatteryPercent() const;
|
||||
|
||||
inline bool hasBatteryStatus() const;
|
||||
inline ::capnp::Text::Reader getBatteryStatus() const;
|
||||
|
||||
private:
|
||||
::capnp::_::StructReader _reader;
|
||||
template <typename, ::capnp::Kind>
|
||||
|
@ -1313,6 +1317,13 @@ public:
|
|||
inline ::int16_t getBatteryPercent();
|
||||
inline void setBatteryPercent( ::int16_t value);
|
||||
|
||||
inline bool hasBatteryStatus();
|
||||
inline ::capnp::Text::Builder getBatteryStatus();
|
||||
inline void setBatteryStatus( ::capnp::Text::Reader value);
|
||||
inline ::capnp::Text::Builder initBatteryStatus(unsigned int size);
|
||||
inline void adoptBatteryStatus(::capnp::Orphan< ::capnp::Text>&& value);
|
||||
inline ::capnp::Orphan< ::capnp::Text> disownBatteryStatus();
|
||||
|
||||
private:
|
||||
::capnp::_::StructBuilder _builder;
|
||||
template <typename, ::capnp::Kind>
|
||||
|
@ -3285,6 +3296,10 @@ public:
|
|||
inline bool hasCarState() const;
|
||||
inline ::cereal::CarState::Reader getCarState() const;
|
||||
|
||||
inline bool isCarControl() const;
|
||||
inline bool hasCarControl() const;
|
||||
inline ::cereal::CarControl::Reader getCarControl() const;
|
||||
|
||||
private:
|
||||
::capnp::_::StructReader _reader;
|
||||
template <typename, ::capnp::Kind>
|
||||
|
@ -3493,6 +3508,14 @@ public:
|
|||
inline void adoptCarState(::capnp::Orphan< ::cereal::CarState>&& value);
|
||||
inline ::capnp::Orphan< ::cereal::CarState> disownCarState();
|
||||
|
||||
inline bool isCarControl();
|
||||
inline bool hasCarControl();
|
||||
inline ::cereal::CarControl::Builder getCarControl();
|
||||
inline void setCarControl( ::cereal::CarControl::Reader value);
|
||||
inline ::cereal::CarControl::Builder initCarControl();
|
||||
inline void adoptCarControl(::capnp::Orphan< ::cereal::CarControl>&& value);
|
||||
inline ::capnp::Orphan< ::cereal::CarControl> disownCarControl();
|
||||
|
||||
private:
|
||||
::capnp::_::StructBuilder _builder;
|
||||
template <typename, ::capnp::Kind>
|
||||
|
@ -4444,6 +4467,38 @@ inline void ThermalData::Builder::setBatteryPercent( ::int16_t value) {
|
|||
10 * ::capnp::ELEMENTS, value);
|
||||
}
|
||||
|
||||
inline bool ThermalData::Reader::hasBatteryStatus() const {
|
||||
return !_reader.getPointerField(0 * ::capnp::POINTERS).isNull();
|
||||
}
|
||||
inline bool ThermalData::Builder::hasBatteryStatus() {
|
||||
return !_builder.getPointerField(0 * ::capnp::POINTERS).isNull();
|
||||
}
|
||||
inline ::capnp::Text::Reader ThermalData::Reader::getBatteryStatus() const {
|
||||
return ::capnp::_::PointerHelpers< ::capnp::Text>::get(
|
||||
_reader.getPointerField(0 * ::capnp::POINTERS));
|
||||
}
|
||||
inline ::capnp::Text::Builder ThermalData::Builder::getBatteryStatus() {
|
||||
return ::capnp::_::PointerHelpers< ::capnp::Text>::get(
|
||||
_builder.getPointerField(0 * ::capnp::POINTERS));
|
||||
}
|
||||
inline void ThermalData::Builder::setBatteryStatus( ::capnp::Text::Reader value) {
|
||||
::capnp::_::PointerHelpers< ::capnp::Text>::set(
|
||||
_builder.getPointerField(0 * ::capnp::POINTERS), value);
|
||||
}
|
||||
inline ::capnp::Text::Builder ThermalData::Builder::initBatteryStatus(unsigned int size) {
|
||||
return ::capnp::_::PointerHelpers< ::capnp::Text>::init(
|
||||
_builder.getPointerField(0 * ::capnp::POINTERS), size);
|
||||
}
|
||||
inline void ThermalData::Builder::adoptBatteryStatus(
|
||||
::capnp::Orphan< ::capnp::Text>&& value) {
|
||||
::capnp::_::PointerHelpers< ::capnp::Text>::adopt(
|
||||
_builder.getPointerField(0 * ::capnp::POINTERS), kj::mv(value));
|
||||
}
|
||||
inline ::capnp::Orphan< ::capnp::Text> ThermalData::Builder::disownBatteryStatus() {
|
||||
return ::capnp::_::PointerHelpers< ::capnp::Text>::disown(
|
||||
_builder.getPointerField(0 * ::capnp::POINTERS));
|
||||
}
|
||||
|
||||
inline ::uint32_t HealthData::Reader::getVoltage() const {
|
||||
return _reader.getDataField< ::uint32_t>(
|
||||
0 * ::capnp::ELEMENTS);
|
||||
|
@ -7702,6 +7757,58 @@ inline ::capnp::Orphan< ::cereal::CarState> Event::Builder::disownCarState() {
|
|||
_builder.getPointerField(0 * ::capnp::POINTERS));
|
||||
}
|
||||
|
||||
inline bool Event::Reader::isCarControl() const {
|
||||
return which() == Event::CAR_CONTROL;
|
||||
}
|
||||
inline bool Event::Builder::isCarControl() {
|
||||
return which() == Event::CAR_CONTROL;
|
||||
}
|
||||
inline bool Event::Reader::hasCarControl() const {
|
||||
if (which() != Event::CAR_CONTROL) return false;
|
||||
return !_reader.getPointerField(0 * ::capnp::POINTERS).isNull();
|
||||
}
|
||||
inline bool Event::Builder::hasCarControl() {
|
||||
if (which() != Event::CAR_CONTROL) return false;
|
||||
return !_builder.getPointerField(0 * ::capnp::POINTERS).isNull();
|
||||
}
|
||||
inline ::cereal::CarControl::Reader Event::Reader::getCarControl() const {
|
||||
KJ_IREQUIRE(which() == Event::CAR_CONTROL,
|
||||
"Must check which() before get()ing a union member.");
|
||||
return ::capnp::_::PointerHelpers< ::cereal::CarControl>::get(
|
||||
_reader.getPointerField(0 * ::capnp::POINTERS));
|
||||
}
|
||||
inline ::cereal::CarControl::Builder Event::Builder::getCarControl() {
|
||||
KJ_IREQUIRE(which() == Event::CAR_CONTROL,
|
||||
"Must check which() before get()ing a union member.");
|
||||
return ::capnp::_::PointerHelpers< ::cereal::CarControl>::get(
|
||||
_builder.getPointerField(0 * ::capnp::POINTERS));
|
||||
}
|
||||
inline void Event::Builder::setCarControl( ::cereal::CarControl::Reader value) {
|
||||
_builder.setDataField<Event::Which>(
|
||||
4 * ::capnp::ELEMENTS, Event::CAR_CONTROL);
|
||||
::capnp::_::PointerHelpers< ::cereal::CarControl>::set(
|
||||
_builder.getPointerField(0 * ::capnp::POINTERS), value);
|
||||
}
|
||||
inline ::cereal::CarControl::Builder Event::Builder::initCarControl() {
|
||||
_builder.setDataField<Event::Which>(
|
||||
4 * ::capnp::ELEMENTS, Event::CAR_CONTROL);
|
||||
return ::capnp::_::PointerHelpers< ::cereal::CarControl>::init(
|
||||
_builder.getPointerField(0 * ::capnp::POINTERS));
|
||||
}
|
||||
inline void Event::Builder::adoptCarControl(
|
||||
::capnp::Orphan< ::cereal::CarControl>&& value) {
|
||||
_builder.setDataField<Event::Which>(
|
||||
4 * ::capnp::ELEMENTS, Event::CAR_CONTROL);
|
||||
::capnp::_::PointerHelpers< ::cereal::CarControl>::adopt(
|
||||
_builder.getPointerField(0 * ::capnp::POINTERS), kj::mv(value));
|
||||
}
|
||||
inline ::capnp::Orphan< ::cereal::CarControl> Event::Builder::disownCarControl() {
|
||||
KJ_IREQUIRE(which() == Event::CAR_CONTROL,
|
||||
"Must check which() before get()ing a union member.");
|
||||
return ::capnp::_::PointerHelpers< ::cereal::CarControl>::disown(
|
||||
_builder.getPointerField(0 * ::capnp::POINTERS));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif // CAPNP_INCLUDED_f3b1f17e25a4285b_
|
||||
|
|
|
@ -103,6 +103,7 @@ struct ThermalData {
|
|||
# not thermal
|
||||
freeSpace @7 :Float32;
|
||||
batteryPercent @8 :Int16;
|
||||
batteryStatus @9: Text;
|
||||
}
|
||||
|
||||
struct HealthData {
|
||||
|
@ -313,5 +314,6 @@ struct Event {
|
|||
androidLogEntry @20 :AndroidLogEntry;
|
||||
gpsLocation @21 :GpsLocationData;
|
||||
carState @22 :Car.CarState;
|
||||
carControl @23 :Car.CarControl;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ class Ratekeeper(object):
|
|||
remaining = self._next_frame_time - sec_since_boot()
|
||||
self._next_frame_time += self._interval
|
||||
if remaining < -self._print_delay_threshold:
|
||||
print(self._process_name, "lagging by", round(-remaining * 1000, 2), "ms")
|
||||
print("%s lagging by %.2f ms" % (self._process_name, -remaining * 1000))
|
||||
lagged = True
|
||||
self._frame += 1
|
||||
self._remaining = remaining
|
||||
|
|
|
@ -34,6 +34,8 @@ service_list = {
|
|||
"liveCalibration": Service(8019, True),
|
||||
"androidLog": Service(8020, True),
|
||||
"carState": Service(8021, True),
|
||||
# 8022 is reserved for sshd
|
||||
"carControl": Service(8023, True),
|
||||
}
|
||||
|
||||
# manager -- base process to manage starting and stopping of all others
|
||||
|
@ -57,7 +59,7 @@ service_list = {
|
|||
|
||||
# controlsd -- actually drives the car
|
||||
# subscribes: can, thermal, model, live20
|
||||
# publishes: carState, sendcan, live100
|
||||
# publishes: carState, carControl, sendcan, live100
|
||||
|
||||
# radard -- processes the radar data
|
||||
# subscribes: can, live100, model
|
||||
|
|
|
@ -177,8 +177,10 @@ void can_send(void *s) {
|
|||
err = zmq_msg_recv(&msg, s, 0);
|
||||
assert(err >= 0);
|
||||
|
||||
// format for board
|
||||
auto amsg = kj::arrayPtr((const capnp::word*)zmq_msg_data(&msg), zmq_msg_size(&msg));
|
||||
// format for board, make copy due to alignment issues, will be freed on out of scope
|
||||
auto amsg = kj::heapArray<capnp::word>((zmq_msg_size(&msg) / sizeof(capnp::word)) + 1);
|
||||
memcpy(amsg.begin(), zmq_msg_data(&msg), zmq_msg_size(&msg));
|
||||
|
||||
capnp::FlatArrayMessageReader cmsg(amsg);
|
||||
cereal::Event::Reader event = cmsg.getRoot<cereal::Event>();
|
||||
int msg_count = event.getCan().size();
|
||||
|
|
|
@ -90,7 +90,7 @@ class CarController(object):
|
|||
#print chime, alert_id, hud_alert
|
||||
fcw_display, steer_required, acc_alert = process_hud_alert(hud_alert)
|
||||
|
||||
hud = HUDData(int(pcm_accel), int(hud_v_cruise), 0x41, hud_car,
|
||||
hud = HUDData(int(pcm_accel), int(hud_v_cruise), 0x01, hud_car,
|
||||
0xc1, 0x41, hud_lanes + steer_required,
|
||||
int(snd_beep), 0x48, (snd_chime << 5) + fcw_display, acc_alert)
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
const char *openpilot_version = "0.2.6";
|
||||
const char *openpilot_version = "0.2.7";
|
||||
|
|
|
@ -39,6 +39,7 @@ def controlsd_thread(gctx, rate=100): #rate in Hz
|
|||
context = zmq.Context()
|
||||
live100 = messaging.pub_sock(context, service_list['live100'].port)
|
||||
carstate = messaging.pub_sock(context, service_list['carState'].port)
|
||||
carcontrol = messaging.pub_sock(context, service_list['carControl'].port)
|
||||
|
||||
thermal = messaging.sub_sock(context, service_list['thermal'].port)
|
||||
live20 = messaging.sub_sock(context, service_list['live20'].port)
|
||||
|
@ -297,6 +298,12 @@ def controlsd_thread(gctx, rate=100): #rate in Hz
|
|||
if not CI.apply(CC):
|
||||
AM.add("controlsFailed", enabled)
|
||||
|
||||
# broadcast carControl
|
||||
cc_send = messaging.new_message()
|
||||
cc_send.init('carControl')
|
||||
cc_send.carControl = CC # copy?
|
||||
carcontrol.send(cc_send.to_bytes())
|
||||
|
||||
prof.checkpoint("CarControl")
|
||||
|
||||
# ***** publish state to logger *****
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from cereal import car
|
||||
from selfdrive.swaglog import cloudlog
|
||||
|
||||
class ET:
|
||||
ENABLE = 0
|
||||
|
@ -24,7 +25,7 @@ class alert(object):
|
|||
tst = car.CarControl.new_message()
|
||||
tst.hudControl.visualAlert = self.visual_alert
|
||||
tst.hudControl.audibleAlert = self.audible_alert
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return self.alert_text_1 + "/" + self.alert_text_2 + " " + str(self.alert_type) + " " + str(self.visual_alert) + " " + str(self.audible_alert)
|
||||
|
||||
|
@ -74,7 +75,8 @@ class AlertManager(object):
|
|||
return len(self.activealerts) > 0 and self.activealerts[0].alert_type >= ET.IMMEDIATE_DISABLE
|
||||
|
||||
def add(self, alert_type, enabled = True):
|
||||
this_alert = self.alerts[str(alert_type)]
|
||||
alert_type = str(alert_type)
|
||||
this_alert = self.alerts[alert_type]
|
||||
|
||||
# downgrade the alert if we aren't enabled
|
||||
if not enabled and this_alert.alert_type > ET.NO_ENTRY:
|
||||
|
@ -84,6 +86,12 @@ class AlertManager(object):
|
|||
if enabled and this_alert.alert_type < ET.WARNING:
|
||||
return
|
||||
|
||||
# if new alert is different, log it
|
||||
if self.current_alert is None or self.current_alert.alert_text_2 != this_alert.alert_text_2:
|
||||
cloudlog.event('alert_add',
|
||||
alert_type=alert_type,
|
||||
enabled=enabled)
|
||||
|
||||
self.activealerts.append(this_alert)
|
||||
self.activealerts.sort()
|
||||
|
||||
|
@ -110,6 +118,10 @@ class AlertManager(object):
|
|||
alert_text_1 = self.current_alert.alert_text_1
|
||||
alert_text_2 = self.current_alert.alert_text_2
|
||||
|
||||
# disable current alert
|
||||
if self.alert_start_time + max(self.current_alert.duration_sound, self.current_alert.duration_hud_alert, self.current_alert.duration_text) < cur_time:
|
||||
self.current_alert = None
|
||||
|
||||
# reset
|
||||
self.activealerts = []
|
||||
|
||||
|
|
|
@ -211,6 +211,8 @@ def manager_thread():
|
|||
msg.thermal.freeSpace = avail
|
||||
with open("/sys/class/power_supply/battery/capacity") as f:
|
||||
msg.thermal.batteryPercent = int(f.read())
|
||||
with open("/sys/class/power_supply/battery/status") as f:
|
||||
msg.thermal.batteryStatus = f.read().strip()
|
||||
thermal_sock.send(msg.to_bytes())
|
||||
print msg
|
||||
|
||||
|
@ -242,6 +244,10 @@ def manager_thread():
|
|||
for p in car_started_processes:
|
||||
kill_managed_process(p)
|
||||
|
||||
# shutdown if the battery gets lower than 10%, we aren't running, and we are discharging
|
||||
if msg.thermal.batteryPercent < 5 and msg.thermal.batteryStatus == "Discharging":
|
||||
os.system('LD_LIBRARY_PATH="" svc power shutdown')
|
||||
|
||||
# check the status of all processes, did any of them die?
|
||||
for p in running:
|
||||
cloudlog.debug(" running %s %s" % (p, running[p]))
|
||||
|
|
|
@ -3,7 +3,7 @@ import selfdrive.messaging as messaging
|
|||
|
||||
def read_tz(x):
|
||||
with open("/sys/devices/virtual/thermal/thermal_zone%d/temp" % x) as f:
|
||||
ret = int(f.read())
|
||||
ret = max(0, int(f.read()))
|
||||
return ret
|
||||
|
||||
def read_thermal():
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue