Did stuff
This commit is contained in:
43
common-libaries/gobot_rpc/gobot_rpc_receiver.cpp
Normal file
43
common-libaries/gobot_rpc/gobot_rpc_receiver.cpp
Normal file
@@ -0,0 +1,43 @@
|
||||
#include <string.h>
|
||||
#include "gobot_rpc.hpp"
|
||||
#include "sm.hpp"
|
||||
#include "protocol_spec.hpp"
|
||||
|
||||
#include "freertos/FreeRTOS.h"
|
||||
|
||||
GobotRPCReciver::GobotRPCReciver(MCP2521 * can_interface) {
|
||||
this->can_interface = can_interface;
|
||||
this->state_mashine = GobotRPCStateMashine();
|
||||
|
||||
can_interface->register_rx0_handler(onRX0_GoboRPC, can_interface);
|
||||
}
|
||||
|
||||
|
||||
void onRX0_GoboRPC(void *arg) {
|
||||
GobotRPCReciver *rpc_socket = (GobotRPCReciver *)arg;
|
||||
rpc_socket->onRX();
|
||||
}
|
||||
|
||||
void GobotRPCReciver::onRX() {
|
||||
rx_info info = can_interface->get_rx_id(MCP2521_RX_BUFFER::RXB0);
|
||||
uint8_t data[8];
|
||||
|
||||
can_interface->read_rx_buf(MCP2521_RX_BUFFER::RXB0, MCP2521_BUFFER_TYPE::DATA, data, info.length);
|
||||
|
||||
RPCFrame frame;
|
||||
memcpy(((char *)data) + 1, (char *)frame.data, 7);
|
||||
frame.header = (RPCHeader)(data[0]);
|
||||
|
||||
SMResult smResult;
|
||||
state_mashine.submitFrame(&frame, &smResult);
|
||||
|
||||
if(smResult.done) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void GobotRPCReciver::registerOnDoneFrameHandler(GobotRPCHandler_t handler, void * arg) {
|
||||
onDoneFrameHandler = handler;
|
||||
argOnDoneFrameHandler = arg;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user