62 lines
938 B
C
Executable file
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;
|
|
|
|
};
|
|
|
|
|
|
|
|
|