fome-fw/firmware/controllers/can/can_bench_test.cpp

45 lines
1.1 KiB
C++
Raw Normal View History

2022-09-29 20:01:06 -07:00
#include "pch.h"
#include "can_bench_test.h"
#include "can_msg_tx.h"
#define CAN_BENCH_HEADER 0x66
#define CAN_BENCH_GET_COUNT 0
#define CAN_BENCH_GET_SET 1
#define CAN_BENCH_GET_CLEAR 2
#if EFI_CAN_SUPPORT
2022-09-29 20:45:46 -07:00
static void setPin(const CANRxFrame& frame, int value) {
int index = frame.data8[1];
if (index >= getBoardMetaOutputsCount())
return;
Gpio pin = getBoardMetaOutputs()[index];
2022-09-29 21:08:26 -07:00
#if EFI_GPIO_HARDWARE && EFI_PROD_CODE
2022-09-29 20:45:46 -07:00
palWritePad(getHwPort("can_write", pin), getHwPin("can_write", pin), value);
2022-09-29 21:08:26 -07:00
#endif // EFI_GPIO_HARDWARE && EFI_PROD_CODE
2022-09-29 20:45:46 -07:00
}
2022-09-29 20:01:06 -07:00
void processCanBenchTest(const CANRxFrame& frame) {
if (CAN_EID(frame) != CAN_ECU_HW_META) {
return;
}
if (frame.data8[0] != CAN_BENCH_HEADER) {
return;
}
uint8_t command = frame.data8[1];
if (command == CAN_BENCH_GET_COUNT) {
2023-05-30 22:13:54 -07:00
CanTxMessage msg(CAN_ECU_HW_META + 1, 8);
2022-09-29 20:01:06 -07:00
msg[0] = CAN_BENCH_HEADER;
msg[1] = 0;
msg[2] = getBoardMetaOutputsCount();
2022-09-29 20:45:46 -07:00
} else if (command == CAN_BENCH_GET_SET) {
setPin(frame, 1);
} else if (command == CAN_BENCH_GET_CLEAR) {
setPin(frame, 0);
2022-09-29 20:01:06 -07:00
}
}
#endif // EFI_CAN_SUPPORT