#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; } }