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