mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-08 05:23:41 +08:00
22a8575199
Keep official openpilot ancestry and dependency licenses. Store resources directly in Git, remove LFS setup requirements, and leave the downloadable big model outside the source tree.
97 lines
2.3 KiB
C
97 lines
2.3 KiB
C
#pragma once
|
|
|
|
#include "board/config.h"
|
|
#include "board/body/body.h"
|
|
|
|
void comms_endpoint2_write(const uint8_t *data, uint32_t len) {
|
|
UNUSED(data);
|
|
UNUSED(len);
|
|
}
|
|
|
|
int comms_control_handler(ControlPacket_t *req, uint8_t *resp) {
|
|
unsigned int resp_len = 0;
|
|
|
|
switch (req->request) {
|
|
// **** 0xb6: read debug logs
|
|
case 0xb6:
|
|
while ((resp_len < req->length) && (resp_len < USBPACKET_MAX_SIZE) && debug_get_char((char*)&resp[resp_len])) {
|
|
++resp_len;
|
|
}
|
|
break;
|
|
// **** 0xc1: get hardware type
|
|
case 0xc1:
|
|
resp[0] = hw_type;
|
|
resp_len = 1;
|
|
break;
|
|
|
|
// **** 0xd1: enter bootloader mode
|
|
case 0xd1:
|
|
switch (req->param1) {
|
|
case 0:
|
|
print("-> entering bootloader\n");
|
|
enter_bootloader_mode = ENTER_BOOTLOADER_MAGIC;
|
|
NVIC_SystemReset();
|
|
break;
|
|
case 1:
|
|
print("-> entering softloader\n");
|
|
enter_bootloader_mode = ENTER_SOFTLOADER_MAGIC;
|
|
NVIC_SystemReset();
|
|
break;
|
|
default:
|
|
print("Bootloader mode invalid\n");
|
|
break;
|
|
}
|
|
break;
|
|
|
|
// **** 0xd3/0xd4: signature bytes
|
|
case 0xd3:
|
|
case 0xd4: {
|
|
uint8_t offset = (req->request == 0xd3) ? 0U : 64U;
|
|
resp_len = 64U;
|
|
char *code = (char *)_app_start;
|
|
int code_len = _app_start[0];
|
|
(void)memcpy(resp, &code[code_len + offset], resp_len);
|
|
break;
|
|
}
|
|
|
|
// **** 0xd6: get version
|
|
case 0xd6:
|
|
(void)memcpy(resp, gitversion, sizeof(gitversion));
|
|
resp_len = sizeof(gitversion) - 1U;
|
|
break;
|
|
|
|
// **** 0xd8: reset ST
|
|
case 0xd8:
|
|
NVIC_SystemReset();
|
|
break;
|
|
|
|
// **** 0xdd: get healthpacket and CANPacket version hashes
|
|
case 0xdd: {
|
|
uint32_t versions[2] = {HEALTH_PACKET_VERSION, CAN_PACKET_VERSION_HASH};
|
|
(void)memcpy(resp, (uint8_t *)versions, sizeof(versions));
|
|
resp_len = sizeof(versions);
|
|
break;
|
|
}
|
|
|
|
// **** 0xb3: set motor speeds
|
|
case 0xb3:
|
|
rpm_left = (int16_t)req->param1;
|
|
rpm_right = (int16_t)req->param2;
|
|
break;
|
|
|
|
// **** 0xb4: enable/disable motors
|
|
case 0xb4:
|
|
enable_motors = (req->param1 == 1U);
|
|
if (enable_motors == 0) {
|
|
rpm_left = 0;
|
|
rpm_right = 0;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
// Ignore unhandled requests
|
|
break;
|
|
}
|
|
return resp_len;
|
|
}
|