138 lines
3.9 KiB
C
138 lines
3.9 KiB
C
#include "can_parsing.h"
|
|
|
|
/* 比亚迪一代 */
|
|
void can_byd_01_parsing(uint32_t id, uint8_t *data, uint8_t *door_front, uint8_t *door_back, uint8_t *turn_left, uint8_t *turn_right, uint8_t *reversing)
|
|
{
|
|
switch (id)
|
|
{
|
|
case 0x18FED925:
|
|
/* 右转向 */
|
|
*turn_right = (data[1] >> 2 & 0x03) == 0x01 ? 0 : 1;
|
|
/* 左转向 */
|
|
*turn_left = (data[1] >> 4 & 0x03) == 0x01 ? 0 : 1;
|
|
/* 前门 */
|
|
*door_front = (data[5] >> 4 & 0x03) == 0x01 ? 0 : 1;
|
|
/* 中门 */
|
|
*door_back = (data[5] >> 6 & 0x03) == 0x01 ? 0 : 1;
|
|
break;
|
|
|
|
case 0x18F00503:
|
|
/* 当前档位 */
|
|
*reversing = data[3] == 0x7C ? 0 : 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
void can_byd_02_parsing(uint32_t id, uint8_t *data, uint8_t *door_front, uint8_t *door_back, uint8_t *turn_left, uint8_t *turn_right, uint8_t *reversing)
|
|
{
|
|
switch (id)
|
|
{
|
|
|
|
case 0x18FDA589:
|
|
/* 前门 */
|
|
*door_front = (data[0] >> 4 & 0x03) == 0x01 ? 0 : 1;
|
|
/* 中门 */
|
|
*door_back = (data[0] >> 6 & 0x03) == 0x01 ? 0 : 1;
|
|
break;
|
|
|
|
case 0x18FE419B:
|
|
/* 左转向 */
|
|
*turn_left = (data[0] & 0x03) == 0x01 ? 0 : 1;
|
|
/* 右转向 */
|
|
*turn_right = (data[0] >> 2 & 0x03) == 0x01 ? 0 : 1;
|
|
break;
|
|
|
|
case 0x18F00503:
|
|
/* 当前档位 */
|
|
*reversing = data[3] == 0x7C ? 0 : 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
void can_yutong_parsing(uint32_t id, uint8_t *data, uint8_t *door_front, uint8_t *door_back, uint8_t *turn_left, uint8_t *turn_right, uint8_t *reversing)
|
|
{
|
|
switch (id)
|
|
{
|
|
case 0x18A70017:
|
|
/* 倒车 */
|
|
*reversing = (data[2] >> 2 & 0x03) == 0x01 ? 0 : 1;
|
|
/* 前门 */
|
|
*door_front = (data[2] >> 4 & 0x03) == 0x01 ? 0 : 1;
|
|
/* 中门 */
|
|
*door_back = (data[2] >> 6 & 0x03) == 0x01 ? 0 : 1;
|
|
/* 左转向 */
|
|
*turn_left = (data[4] & 0x03) == 0x01 ? 0 : 1;
|
|
/* 右转向 */
|
|
*turn_right = (data[4] >> 2 & 0x03) == 0x01 ? 0 : 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
void can_jinlong_parsing(uint32_t id, uint8_t *data, uint8_t *door_front, uint8_t *door_back, uint8_t *turn_left, uint8_t *turn_right, uint8_t *reversing)
|
|
{
|
|
switch (id)
|
|
{
|
|
//case 0x18F0B117:
|
|
// /* 左转向 */
|
|
// *turn_left = (data[1] & 0x01) == 0x01 ? 0 : 1;
|
|
// /* 右转向 */
|
|
// *turn_right = (data[1] >> 1 & 0x01) == 0x01 ? 0 : 1;
|
|
|
|
// /* 前门 */
|
|
// if ((data[2] & 0x01) == 0x01)
|
|
// *door_front = 0;
|
|
// if ((data[2] >> 1 & 0x01) == 0x01)
|
|
// *door_front = 1;
|
|
|
|
// /* 中门 */
|
|
// if ((data[2] >> 2 & 0x01) == 0x01)
|
|
// *door_back = 0;
|
|
// if ((data[2] >> 3 & 0x01) == 0x01)
|
|
// *door_back = 1;
|
|
// break;
|
|
|
|
//case 0x18F0BA17:
|
|
// /* 倒车 */
|
|
// *reversing = data[7] == 0xDF ? 0 : 1;
|
|
// break;
|
|
|
|
case 0x18F40117:
|
|
/* 左转向 */
|
|
*turn_left = (data[1] >> 6 & 0x01) == 0x01 ? 0 : 1;
|
|
/* 右转向 */
|
|
*turn_right = (data[1] >> 7 & 0x01) == 0x01 ? 0 : 1;
|
|
/* 前门 */
|
|
*door_front = (data[0] >> 1 & 0x01) == 0x01 ? 0 : 1;
|
|
/* 后门 */
|
|
*door_back = (data[0] & 0x01) == 0x01 ? 0 : 1;
|
|
break;
|
|
|
|
case 0x18F101D0:
|
|
/* 倒车 */
|
|
*reversing = data[3] & 0x07 ? 0 : 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
void can_ankai_parsing(uint32_t id, uint8_t *data, uint8_t *door_front, uint8_t *door_back, uint8_t *turn_left, uint8_t *turn_right, uint8_t *reversing)
|
|
{
|
|
switch (id)
|
|
{
|
|
case 0x18FFD117:
|
|
/* 倒车 */
|
|
*reversing = (data[0] & 0x01) == 0x01 ? 0 : 1;
|
|
/* 右前门 */
|
|
*door_front = (data[0] >> 5 & 0x01) == 0x01 ? 0 : 1;
|
|
/* 右后门 */
|
|
*door_back = (data[0] >> 7 & 0x01) == 0x01 ? 0 : 1;
|
|
|
|
/* 左转向 */
|
|
*turn_left = (data[1] >> 2 & 0x01) == 0x01 ? 0 : 1;
|
|
/* 右转向 */
|
|
*turn_right = (data[1] >> 3 & 0x01) == 0x01 ? 0 : 1;
|
|
|
|
break;
|
|
}
|
|
}
|