Samskipti á milli rpi og stm kominn í lag send can skilaboð með filter
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
#ifndef CAN_BUS_H
|
||||
#define CAN_BUS_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// Rammategund CANopen-lagsins. Óháð Zephyr: engin dlc, engin flags.
|
||||
// CANopen notar bara 11-bita staðlað ID
|
||||
struct CanFrame
|
||||
{
|
||||
uint16_t id;
|
||||
uint8_t len; // Fjöldi bytes 0-8
|
||||
uint8_t data[8];
|
||||
};
|
||||
|
||||
// Það eina sem CANopen-lagið veit um CAN-businn
|
||||
// Móttaka er ekki hér: main loop sækir ramma og gefur CanopenNode::process()
|
||||
class CanBus
|
||||
{
|
||||
public:
|
||||
virtual ~CanBus() {}
|
||||
|
||||
// Skilar false ef ekki tókst að setja rammann í sendibiðröð
|
||||
virtual bool send(const CanFrame &frame) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,29 @@
|
||||
#ifndef ZEPHYR_CAN_BUS_H
|
||||
#define ZEPHYR_CAN_BUS_H
|
||||
|
||||
#include <zephyr/device.h>
|
||||
|
||||
#include "can_bus.h"
|
||||
|
||||
// Útfærsla á CanBus með Zephyr CAN-drivernum.
|
||||
// Eini staðurinn þar sem CAN-rammar fara á milli Zephyr og okkar sniðs.
|
||||
|
||||
class ZephyrCanBus : public CanBus
|
||||
{
|
||||
private:
|
||||
const struct device *dev;
|
||||
|
||||
public:
|
||||
ZephyrCanBus();
|
||||
|
||||
// Bitrate, síur og ræsing. Skilar 0 eða neikvæðum villukóða
|
||||
int begin();
|
||||
|
||||
bool send(const CanFrame &frame) override;
|
||||
|
||||
// Sækir einn ramma úr móttökubiðröðinni án þess að bíða
|
||||
// Skilar true ef rammi var til. Ekki hluti af CanBus
|
||||
bool receive(CanFrame &out);
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user