avr-fw-modules/core/include/rb2/instance.h

62 lines
938 B
C
Executable File

#pragma once
#include <stdint.h>
#include <stdio.h>
#include <util/list.h>
#include <sys/spinlock.h>
/***********************************
rb2/instance.h
RegisteredBus2
Paketorientierte Kommunikation via Serielle Verbindungen mit Adressierung
***********************************/
struct _rb2_instance
{
uint8_t ax; // Achsnummer dieses Endpunktes
uint16_t idmask; // 0x02 Maske aller eigenen IDs
uint8_t enabled:1; // 0x04 Endpunkt ist aktiv
uint8_t ringmaster:1; // Dieser Knoten ist der Master des RING-BUS
uint8_t reserve:6;
uint8_t axes; // Anzahl angeschlossener Achsen
struct {
spinlock_t lock;
list_t list; //
RB2_LINK *ringlink;
} links;
avrWAIT ident_timeout;
uint32_t timeout;
struct {
spinlock_t sl_router;
spinlock_t sl_pending;
volatile list_t router;
volatile list_t pending;
} queues;
list_t proxy;
struct {
THREAD *router;
} threads;
};