Little a refactor, as a treat
This commit is contained in:
parent
41abc005cd
commit
98bb4e5308
1 changed files with 18 additions and 13 deletions
|
@ -44,6 +44,23 @@ static hexagram_schedule_slot table[] = {
|
|||
{ 0, NULL, {} }
|
||||
};
|
||||
|
||||
static void table_update(hexagram_schedule_slot *table,
|
||||
hexagram_telemetry_dash_packet *packet) {
|
||||
float speed_ms = sqrt(powf(packet->velocity.x, 2)
|
||||
+ powf(packet->velocity.z, 2));
|
||||
|
||||
uint16_t engine_rpm = (uint16_t)(packet->engine_rpm.current * 4),
|
||||
speed_rps = (uint16_t)(speed_ms * 2.0);
|
||||
|
||||
/* Engine speed */
|
||||
table[0].frame.data[3] = (engine_rpm & 0xff00) >> 8;
|
||||
table[0].frame.data[2] = engine_rpm & 0x00ff;
|
||||
|
||||
/* Vehicle speed */
|
||||
table[3].frame.data[1] = (speed_rps & 0xff00) >> 8;
|
||||
table[3].frame.data[2] = speed_rps & 0x00ff;
|
||||
}
|
||||
|
||||
int hexagram_main_dash2can(int argc, char **argv) {
|
||||
int sock;
|
||||
|
||||
|
@ -100,25 +117,13 @@ int hexagram_main_dash2can(int argc, char **argv) {
|
|||
hexagram_telemetry_dash_packet packet;
|
||||
ssize_t len;
|
||||
|
||||
float speed_ms = sqrt(powf(packet.velocity.x, 2)
|
||||
+ powf(packet.velocity.z, 2));
|
||||
|
||||
uint16_t engine_rpm = (uint16_t)(packet.engine_rpm.current * 4),
|
||||
speed_rps = (uint16_t)(speed_ms * 2.0);
|
||||
|
||||
if ((len = recv(sock, &packet, sizeof(packet), 0)) < 0) {
|
||||
goto error_io;
|
||||
} else if (len != (ssize_t)sizeof(packet)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Engine speed */
|
||||
table[0].frame.data[3] = (engine_rpm & 0xff00) >> 8;
|
||||
table[0].frame.data[2] = engine_rpm & 0x00ff;
|
||||
|
||||
/* Vehicle speed */
|
||||
table[3].frame.data[1] = (speed_rps & 0xff00) >> 8;
|
||||
table[3].frame.data[2] = speed_rps & 0x00ff;
|
||||
table_update(table, &packet);
|
||||
}
|
||||
|
||||
hexagram_schedule_destroy(schedule);
|
||||
|
|
Loading…
Add table
Reference in a new issue