| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #include "stdint.h"
- #include "string.h"
- #include "mod_candataprocess.h"
- #include "mod_spi.h"
- #include "sys_log.h"
- #include "sys_common.h"
- #include "hal_can.h"
- #define CAN_PAYLOAD_MAX_LEN 8
- #define SEND_CAN_BUF_MAX_LEN 64
- static uint8_t g_s_can_index;
- static uint8_t g_s_send_can_buf[SEND_CAN_BUF_MAX_LEN];
- int MOD_CanTransferData(uint8_t* data, uint8_t len)
- {
- uint8_t can_id_type = 0;
- uint32_t can_id = 0;
- uint8_t payload_len = 0;
- uint8_t payload[8] = {0};
- memset(payload, 0, 8);
- g_s_can_index = data[0];
- can_id_type = data[1];
- memcpy(&can_id, &data[2], 4);
- small_big_transfer32(&can_id);
- payload_len = data[6];
- memcpy(payload, &data[7], payload_len);
- DLOG_I("tx_can_data,index:%d,type:%d,can_id:0x%x,payload_len:%d,payload:%s", g_s_can_index, can_id_type, can_id, payload_len,
- SYS_Hex2str(payload, payload_len));
- return HAL_CanTxData(can_id_type, can_id, payload, payload_len);
- }
- void MOD_CanRxDataProcess(uint8_t* data, uint8_t data_len)
- {
- uint8_t can_id_type;
- uint32_t can_id;
- uint8_t can_payload_len;
- uint8_t can_payload_buf[8];
- uint8_t tmp_len = 0;
- can_id_type = data[0];
- memset(can_payload_buf, 0, 8);
- memcpy(&can_id, &data[1], 4);
- can_payload_len = data[5];
- memcpy(can_payload_buf, &data[6], can_payload_len);
- DLOG_I("rx_can_data,type:%d,can_id:0x%x,payload_len:%d,payload:%s",
- can_id_type,
- can_id,
- can_payload_len,
- SYS_Hex2str(can_payload_buf, can_payload_len));
- tmp_len = 0;
- g_s_send_can_buf[tmp_len] = TRANSFER_GET_CAN_RSP_CMD;
- tmp_len += 1;
- g_s_send_can_buf[tmp_len] = g_s_can_index;
- g_s_can_index ++;
- if (0x7D == g_s_can_index)
- {
- g_s_can_index = 0;
- }
- tmp_len += 1;
- g_s_send_can_buf[tmp_len] = can_id_type;
- tmp_len += 1;
- g_s_send_can_buf[tmp_len] = (can_id>>24)&0xFF;
- tmp_len += 1;
- g_s_send_can_buf[tmp_len] = (can_id>>16)&0xFF;
- tmp_len += 1;
- g_s_send_can_buf[tmp_len] = (can_id>>8)&0xFF;
- tmp_len += 1;
- g_s_send_can_buf[tmp_len] = can_id&0xFF;
- tmp_len += 1;
- g_s_send_can_buf[tmp_len] = can_payload_len;
- tmp_len += 1;
- memcpy(&g_s_send_can_buf[tmp_len], &can_payload_buf, can_payload_len);
- tmp_len += can_payload_len;
- MOD_SpiDataSend(BLE_CMD_TRANSFER, g_s_send_can_buf, tmp_len);
- }
|