Skip to content

Commit 3d4325e

Browse files
committed
save
1 parent 0c7ad2d commit 3d4325e

File tree

4 files changed

+49
-35
lines changed

4 files changed

+49
-35
lines changed

Telemetry-Main/BT817Q/layouts.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,5 +205,6 @@ void Layouts::drawStandardLayout2(Faults faults, uint8_t speed, uint8_t soc,
205205
drawRect(Point{643, 127}, Point{666, 310}, mid_gray);
206206
uint16_t brake_bar_h = (310 - floor(183 * brake_demand));
207207
drawRect(Point{643, brake_bar_h}, Point{666, 310}, red);
208+
// drawRect(Point{643, static_cast<uint16_t>(brake_demand)}, Point{666, 310}, red);
208209
endFrame();
209210
}

Telemetry-Main/VehicleStateManager.cpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@
77
#include "CANProtocol.hpp"
88
#include "mbed.h"
99

10-
VehicleStateManager::VehicleStateManager(MbedCAN* mbedCAN)
11-
: _mbedCAN(mbedCAN)
10+
VehicleStateManager::VehicleStateManager(
11+
MbedCAN* mbedCAN,
12+
PinName steering_sensor,
13+
PinName brake_sensor_f,
14+
PinName brake_sensor_r
15+
) : _mbedCAN(mbedCAN), _steering_sensor(steering_sensor), _brake_sensor_f(brake_sensor_r), _brake_sensor_r(brake_sensor_r)
1216
{
1317
_vehicleState = {};
1418

@@ -19,16 +23,19 @@ void VehicleStateManager::update() {
1923
// printf("Updating CAN\n");
2024
processCANMessage();
2125
updateLapTime();
26+
readSensorValues();
27+
}
28+
29+
void VehicleStateManager::readSensorValues() {
30+
_vehicleState.steering_sensor = _steering_sensor.read_u16();
31+
_vehicleState.brake_sensor_f = _brake_sensor_f.read_u16();
32+
_vehicleState.brake_sensor_r = _brake_sensor_r.read_u16();
2233
}
2334

2435
void VehicleStateManager::processCANMessage() {
2536
if (!_mbedCAN || !_mbedCAN->isReady()) { return; }
26-
// printf("Here\n");
2737
CANMessage msg;
28-
// int processed = 0;
29-
while ((_mbedCAN->read(msg))) {
30-
// printf("%x\n", msg.id);
31-
// processed++;
38+
while (_mbedCAN->read(msg)) {
3239
switch (msg.id) {
3340
// ACC Message
3441
case CAN_ID::ACC_STATUS: {

Telemetry-Main/VehicleStateManager.hpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#endif
2121

2222
struct VehicleState {
23+
// ---- FROM CAN BUS ----
2324
// ACC
2425
ACC_STATUS_t accStatus;
2526
ACC_SEG_VOLTS_t accSegVolts[5];
@@ -46,12 +47,23 @@ struct VehicleState {
4647
VDM_DATE_TIME_t vdmDateTime;
4748
VDM_ACCELERATION_t vdmAcceleration;
4849
VDM_YAW_RATE_t vdmYawRate;
50+
51+
// ---- FROM NUCLEO PINS ----
52+
uint16_t steering_sensor;
53+
uint16_t brake_sensor_f;
54+
uint16_t brake_sensor_r;
55+
4956
};
5057

5158
class VehicleStateManager {
5259

5360
public:
54-
explicit VehicleStateManager(MbedCAN* mbedCAN);
61+
explicit VehicleStateManager(
62+
MbedCAN* mbedCAN,
63+
PinName steering_sensor,
64+
PinName brake_sensor_f,
65+
PinName brake_sensor_r
66+
);
5567

5668
VehicleState getState() const;
5769
void update();
@@ -60,13 +72,18 @@ class VehicleStateManager {
6072

6173
private:
6274
MbedCAN* _mbedCAN;
75+
AnalogIn _steering_sensor;
76+
AnalogIn _brake_sensor_f;
77+
AnalogIn _brake_sensor_r;
6378

6479
VehicleState _vehicleState;
80+
6581
char _lapTime[16];
6682
Timer _lapTimer;
6783

6884
void processCANMessage();
6985
void updateLapTime();
86+
void readSensorValues();
7087
};
7188

72-
#endif // VEHICLE_STATE_MANAGER_HPP
89+
#endif // VEHICLE_STATE_MANAGER_HPP

Telemetry-Main/main.cpp

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ SPI spi(PA_7, PA_6, PA_5);
3434
XBeeRadio radio(spi, cs, spi_attn);
3535
auto mbed_can = CAN(PB_8, PB_9, 500000);
3636
auto can = MbedCAN(mbed_can);
37-
auto vsm = VehicleStateManager(&can);
37+
auto vsm = VehicleStateManager(&can, PC_5, PC_1, PC_0);
3838

3939
// Default DASH parameters
4040
Layouts::StandardLayoutParams params = {
@@ -69,39 +69,33 @@ void update_sd() {
6969
// printf("SD!\n");
7070
}
7171
void update_dash() {
72-
// printf("DASH!\n");
7372
const VehicleState vsm_state = vsm.getState();
74-
int8_t total_temp = 0;
73+
// int8_t total_temp = 0;
7574
uint8_t max_temp = 0;
7675
for (auto [TEMPS_CELL0, TEMPS_CELL1, TEMPS_CELL2, TEMPS_CELL3, TEMPS_CELL4,TEMPS_CELL5] : vsm_state.accSegTemps) {
77-
total_temp += (TEMPS_CELL0 + TEMPS_CELL1 + TEMPS_CELL2 + TEMPS_CELL3 + TEMPS_CELL4 + TEMPS_CELL5);
76+
// total_temp += (TEMPS_CELL0 + TEMPS_CELL1 + TEMPS_CELL2 + TEMPS_CELL3 + TEMPS_CELL4 + TEMPS_CELL5);
7877
max_temp = max( TEMPS_CELL0, max(TEMPS_CELL1, max(TEMPS_CELL2, max(TEMPS_CELL3, max(TEMPS_CELL4, TEMPS_CELL5)))));
7978
}
8079
params = {
8180
.faults =
8281
Faults{false, static_cast<bool>(vsm_state.accStatus.PRECHARGE_DONE),
8382
static_cast<bool>(vsm_state.accStatus.SHUTDOWN_STATE)},
84-
// .speed = static_cast<uint8_t>(vsm_state.vdmGpsData.SPEED / 100),
85-
.speed = static_cast<uint8_t>(vsm_state.etcStatus.PEDAL_TRAVEL),
83+
.speed = static_cast<uint8_t>(vsm_state.smeThrottleDemand.TORQUE_DEMAND / 327.68),
8684
.soc = vsm_state.accPower.SOC,
8785
.acc_temp = max_temp,
8886
.ctrl_tmp = vsm_state.smeTemp.CONTROLLER_TEMP,
8987
.mtr_tmp = vsm_state.smeTemp.MOTOR_TEMP,
9088
.mtr_volt = static_cast<float>(vsm_state.accPower.PACK_VOLTAGE / 100.0),
9189
.glv = static_cast<float>(vsm_state.pdbPowerA.GLV_VOLTAGE),
92-
.brake_balance = 50,
93-
// .throttle_demand =
94-
// static_cast<float>(static_cast<float>(vsm_state.smeThrottleDemand.TORQUE_DEMAND)/30000.0),
95-
.throttle_demand = static_cast<float>(vsm_state.etcStatus.PEDAL_TRAVEL),
96-
.brake_demand = static_cast<float>(
97-
((static_cast<float>(vsm_state.etcStatus.BRAKE_SENSE_VOLTAGE) /
98-
1000.0) -
99-
0.5) /
100-
4),
90+
.brake_balance = static_cast<float>(vsm_state.brake_sensor_f) / (vsm_state.brake_sensor_f + vsm_state.brake_sensor_r),
91+
.throttle_demand = static_cast<float>(vsm_state.smeThrottleDemand.TORQUE_DEMAND/32768.0),
92+
// .throttle_demand = static_cast<float>(vsm_state.etcStatus.PEDAL_TRAVEL),
93+
.brake_demand = static_cast<float>(((vsm_state.etcStatus.BRAKE_SENSE_VOLTAGE / 1000.0) - 0.5) / 4),
10194
.time = chrono::milliseconds(0),
10295
.delta_time_seconds = 0.01,
103-
.rtds = false,
104-
.rpm = vsm_state.smeTrqSpd.SPEED};
96+
.rtds = static_cast<bool>(vsm_state.etcStatus.RTDS),
97+
.rpm = vsm_state.smeTrqSpd.SPEED,
98+
};
10599
// params.speed++;
106100
eve.drawStandardLayout2(params);
107101
}
@@ -153,9 +147,6 @@ int main() {
153147
}
154148

155149
x++;
156-
// Remember to read f and r brake pressure
157-
158-
159150
// if (state.radio_event) {
160151
// state.radio_event = false;
161152
// if (state.radio_on) {
@@ -175,14 +166,12 @@ int main() {
175166
// update_dash();
176167
// state.dash_event = false;
177168
// }
178-
// printf("Time: %f\n", t.elapsed_time().count()/1.0);
179-
// t.reset();
180-
// update_dash();
181-
// printf("\tDash: %f\n", t.elapsed_time().count()/1.0);
182-
if (x>7000) {
183-
// printf("Time: %f\n", t.elapsed_time().count()/1.0);
169+
if (x>5000) {
170+
printf("Time: %f\n", t.elapsed_time().count()/1.0);
184171
t.reset();
172+
185173
update_dash();
174+
186175
// eve.drawStandardLayout2(p);
187176
printf("\tDash: %.3fms\n", t.elapsed_time().count()/1000.0);
188177

0 commit comments

Comments
 (0)