Samskipti á milli rpi og stm kominn í lag send can skilaboð með filter

This commit is contained in:
2026-10-18 14:30:08 +00:00
parent e9f9a6d15c
commit 15f288fd7c
5 changed files with 207 additions and 5 deletions
+26
View File
@@ -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
+29
View File
@@ -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