static const Port::Mask MOSI = Port::Mask::P0;
static const Port::Mask MISO = Port::Mask::P1;
static const Port::Mask SCLK = Port::Mask::P2;
static const Port::Mask CS = Port::Mask::P7;
static const Port::Mask CLOCK_MASK = Port::Mask::P8;
static const uint8_t messages[][6] = {
"Hello",
"David",
"Katie"
};
void handle(const PropWare::ErrorCode err) {
if (err) {
while (1)
}
}
void read(MCP2515 &can, const MCP2515::BufferNumber bufferNumber) {
if (can.check_receive_buffer(bufferNumber)) {
uint8_t buffer[MCP2515::MAX_DATA_BYTES];
uint8_t bytesRead;
can.read_message(bufferNumber, &bytesRead, buffer);
pwOut <<
"Message: `" << (
const char *) buffer <<
"`\n";
} else {
}
}
const SPI spi(MOSI, MISO, SCLK);
MCP2515 can(spi, CS);
const Pin clock(CLOCK_MASK, Pin::Dir::OUT);
clock.start_hardware_pwm(8000000);
handle(can.start(MCP2515::BaudRate::BAUD_1000KBPS, MCP2515::Mode::LOOPBACK));
handle(can.set_mask(MCP2515::BufferNumber::BUFFER_0, PropWare::WORD_0));
handle(can.set_filter(MCP2515::FilterNumber::FILTER_0, 2));
pwOut <<
"Expected message received:\n";
handle(can.send_message(2, 6, messages[0]));
read(can, MCP2515::BufferNumber::BUFFER_0);
pwOut <<
"Message should _not_ be received!\n";
handle(can.send_message(3, 6, messages[1]));
read(can, MCP2515::BufferNumber::BUFFER_0);
pwOut <<
"Expected message received:\n";
handle(can.send_message(2, 6, messages[2]));
read(can, MCP2515::BufferNumber::BUFFER_0);
}