Gobot RPC Stack
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
#pragma once
|
||||
#include "mcp2521_toplevel.hpp"
|
||||
|
||||
typedef void (*rx_handler)(uint8_t *data, uint8_t length, void *arg);
|
||||
|
||||
enum CANTP_FRAME_TYPE {
|
||||
SINGLE_FRAME = 0b00,
|
||||
FIRST_FRAME = 0b01,
|
||||
CONSECUTIVE_FRAME = 0b10,
|
||||
FLOW_CONTROL = 0b11
|
||||
};
|
||||
|
||||
enum CANTP_FLOW_STATUS {
|
||||
CLEAR_TO_SEND = 0b0000,
|
||||
WAIT = 0b0001,
|
||||
OVERLOAD = 0b0010
|
||||
};
|
||||
|
||||
enum CAN_MULTI_FRAME_STATES {
|
||||
WAITING_FOR_FIRST_FRAME,
|
||||
WAITING_FOR_CONSECUTIVE_FRAME,
|
||||
}
|
||||
|
||||
class SocketCANTP {
|
||||
private:
|
||||
rx_handler userHandler;
|
||||
void *userArg;
|
||||
|
||||
MCP2521 *mcp2521;
|
||||
uint32_t address;
|
||||
bool is_extended;
|
||||
|
||||
uint8_t rxBuffer[4096];
|
||||
uint8_t txBuffer[4096];
|
||||
|
||||
size_t rxLength;
|
||||
|
||||
int consecitonFrameCounter;
|
||||
uint8_t blockSizes;
|
||||
|
||||
protected:
|
||||
void sendFlowControl(CANTP_FLOW_STATUS status, uint8_t blockSize, uint8_t separationTime);
|
||||
|
||||
public:
|
||||
SocketCANTP(MCP2521 *mcp2521, uint32_t address, bool is_extended, uint8_t blockSizes);
|
||||
|
||||
void send(uint8_t *data, uint8_t length);
|
||||
void register_rx_handler(rx_handler handler, void *arg);
|
||||
|
||||
void onRxHandler();
|
||||
}
|
||||
Reference in New Issue
Block a user