You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.7 KiB
45 lines
1.7 KiB
//
|
|
// Created by zwsd
|
|
//
|
|
|
|
#pragma once
|
|
#include "project_configs.h"
|
|
#include "stm32basic/stm32basic.hpp"
|
|
#include "zscanprotocol/zscanprotocol.hpp"
|
|
|
|
typedef void (*zcanbus_on_rx_t)(uint8_t from, uint8_t to, uint8_t *packet, size_t len);
|
|
typedef void (*zcanbus_on_connected_t)(bool connected);
|
|
|
|
typedef struct {
|
|
public:
|
|
uint8_t aData[8]; /*8byte table*/
|
|
uint8_t datalen;
|
|
} stm32_can_packet_t;
|
|
|
|
typedef struct {
|
|
public:
|
|
uint16_t id;
|
|
CAN_RxHeaderTypeDef header;
|
|
uint8_t from;
|
|
uint8_t to;
|
|
stm32_can_packet_t canPacket[20]; // 用于接收can消息
|
|
uint8_t canPacketNum = 0;
|
|
bool dataIsReady;
|
|
} canrxbuffer_t;
|
|
|
|
void zcanbus_init(uint8_t deviceId);
|
|
void zcanbus_reglistener(zcanbus_on_rx_t rxlistener);
|
|
void zcanbus_reg_on_connected_listener(zcanbus_on_connected_t connectedlistener);
|
|
void zcanbus_schedule();
|
|
bool zcanbus_is_connected();
|
|
|
|
bool zcanbus_send_packet(uint8_t to, uint8_t *packet, size_t len);
|
|
bool zcanbus_send_packet(uint8_t to, uint8_t *packet, size_t len, int overtimems);
|
|
bool zcanbus_send_sub_packet(uint8_t to, int npacket, int packetIndex, uint8_t *packet, size_t len, int overtimems);
|
|
|
|
bool zcanbus_send_ack(iflytop::zscanprotocol::zcanbus_packet_t *rxpacket, uint8_t *param, size_t len);
|
|
bool zcanbus_send_ack(iflytop::zscanprotocol::zcanbus_packet_t *rxpacket, int32_t val);
|
|
bool zcanbus_send_ack(iflytop::zscanprotocol::zcanbus_packet_t *rxpacket, bool _val);
|
|
bool zcanbus_send_errorack(iflytop::zscanprotocol::zcanbus_packet_t *rxpacket, int32_t errcode);
|
|
bool zcanbus_send_report(uint16_t function_id, uint8_t *param, size_t len, int32_t overtime);
|
|
bool zcanbus_send_emergency_report(uint16_t function_id, uint8_t *param, size_t len, int32_t overtime);
|