Locking the car will shutdown the system

This commit is contained in:
2024-05-21 22:17:47 +02:00
parent 1d7ad7dc31
commit 04c5eb047e
4 changed files with 75 additions and 3 deletions

View File

@@ -9,6 +9,7 @@
#include "usb.pb.h"
#include "version_info.h"
#include "ulog.h"
#include "BSP_POWER.h"
// Define thread flags
#define FLAG_FDCAN_RX_FIFO0 (1<<0)
#define FLAG_FDCAN_RX_FIFO1 (1<<1)
@@ -140,10 +141,20 @@ void byteToHex(uint8_t byte, char * hex) {
void CarCanTask_func(void *argument) {
// for testing accept all messages from the car can bus
// put unkown messages in fifo 0
if (HAL_FDCAN_ConfigGlobalFilter(&hfdcan2, FDCAN_ACCEPT_IN_RX_FIFO0, FDCAN_ACCEPT_IN_RX_FIFO0, FDCAN_REJECT_REMOTE, FDCAN_REJECT_REMOTE) != HAL_OK) {
Error_Handler();
}
FDCAN_FilterTypeDef sFilterConfig;
sFilterConfig.IdType = FDCAN_STANDARD_ID;
sFilterConfig.FilterIndex = 0;
sFilterConfig.FilterType = CLS_BSP_CAN_FILTER_LIST;
sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO1;
sFilterConfig.FilterID1 = 0x391;
sFilterConfig.FilterID2 = 0x395;
HAL_FDCAN_ConfigFilter(&hfdcan2, &sFilterConfig);
/* Start the FDCAN module */
if (HAL_FDCAN_Start(&hfdcan2) != HAL_OK){
Error_Handler();
@@ -166,7 +177,7 @@ void CarCanTask_func(void *argument) {
} else {
// do something with the can data
last_car_message_time = osKernelGetTickCount();
//last_car_message_time = osKernelGetTickCount();
char msg[17] = {0};
switch (RxHeader.DataLength)
@@ -230,7 +241,7 @@ void CarCanTask_func(void *argument) {
break;
}
ULOG_DEBUG("Car MSG: %x, %d %s", RxHeader.Identifier, RxHeader.DataLength, msg);
ULOG_DEBUG("Car MSG: %x, %d %s", RxHeader.Identifier,CLS_BSP_DLC_ToBytes(RxHeader.DataLength) , msg);
}
}
@@ -240,7 +251,39 @@ void CarCanTask_func(void *argument) {
} else {
// do something with the can data
last_car_message_time = osKernelGetTickCount();
ULOG_DEBUG("Car LOCK MSG: %x, %d", RxHeader.Identifier, CLS_BSP_DLC_ToBytes(RxHeader.DataLength));
if(RxHeader.Identifier == 0x391) {
if (RxData[1] == 4)
{
// car was unlocked
last_car_message_time = osKernelGetTickCount();
}
if (RxData[1] == 80)
{
// car was locked
BSP_POWER_EnterStandby();
}
}
if (RxHeader.Identifier == 0x395) {
// send the unlock message to the car
if ((RxData[0] & 0x0F) == 0x01) {
// car was unlocked
last_car_message_time = osKernelGetTickCount();
}
if ((RxData[0] & 0x0F) == 0x02) {
// car was locked
BSP_POWER_EnterStandby();
}
}
}
}