AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Liaison AX25

Description détaillée

Ce module gère la couche liaison d'un réseau AX25 et premet l'envoi et la réception de trames.
Ce module a été conçu pour être indépendant de la couche physique qui sera fournie au moudule au moment de l'initialisation sous forme de fichiers.

Graphe de collaboration de Liaison AX25:

Modules

 Configuration
 

Structures de données

struct  xAx25
 
struct  xAx25Frame
 
struct  xAx25Node
 

Fonctions

void vAx25Init (struct xAx25 *ax25, FILE *fin, FILE *fout, vAx25CallBack hook)
 
void vAx25Poll (struct xAx25 *ax25)
 
void vAx25Print (FILE *f, const xAx25Frame *msg)
 
void vAx25SendVia (struct xAx25 *ax25, const xAx25Node *path, size_t path_len, const void *_buf, size_t len)
 

Macros

#define AX25_CALL(str, id)   {.call = (str), .ssid = (id) }
 
#define AX25_CTRL_UI   0x03
 
#define AX25_MAX_RPT   8
 
#define AX25_MIN_FRAME_LEN   18
 
#define AX25_PATH(dst, src, ...)   { dst, src, ## __VA_ARGS__ }
 
#define AX25_PID_NOLAYER3   0xF0
 
#define vAx25Send(ax25, dst, src, buf, len)   vAx25SendVia(ax25, ({static xAx25Node __path[]={dst, src}; __path;}), 2, buf, len)
 

Définitions de type

typedef void(* vAx25CallBack) (struct xAx25Frame *msg)
 
typedef struct xAx25 xAx25
 
typedef struct xAx25Frame xAx25Frame
 
typedef struct xAx25Node xAx25Node
 

Documentation des macros

#define AX25_CALL (   str,
  id 
)    {.call = (str), .ssid = (id) }

Permet la création d'une structure xAx25Node

Paramètres
strindicatif de la station au maximum 6 caractères.
idssid identifiant de sous-station.
Exemples:
aprs/demo_aprs.c, et net/aprs/demo_aprs.c.

Définition à la ligne 89 du fichier ax25.h.

#define AX25_CTRL_UI   0x03

Identifiant contrôle d'une trame UI Le module gère uniquement ce type de trame

Définition à la ligne 70 du fichier ax25.h.

#define AX25_MAX_RPT   8

Nombre maximal de répéteurs dans une trame AX25

Définition à la ligne 81 du fichier ax25.h.

#define AX25_MIN_FRAME_LEN   18

Taille minimale d'une trame AX25

Définition à la ligne 64 du fichier ax25.h.

#define AX25_PATH (   dst,
  src,
  ... 
)    { dst, src, ## __VA_ARGS__ }

Permet la création d'un chemin Un chemin AX25 est constitué d'une destination, d'une source et de répéteurs éventuels (entre 0 et )

Paramètres
dstdestination du chemin,
Voir également
AX25_CALL
Paramètres
srcsource du chemin,
Voir également
AX25_CALL

Des répéteurs optionnels peuvent être ajoutés à la suite.

Cette macro permet de déclarer facilement un chemin pour le fournir à la fonction vAx25SendVia() :

1 xAx25Node path[] = AX25_PATH(AX25_CALL("abcdef", 0), AX25_CALL("ghjklm", 0), AX25_CALL("wide1", 1), AX25_CALL("wide2", 2));
Exemples:
aprs/demo_aprs.c, et net/aprs/demo_aprs.c.

Définition à la ligne 106 du fichier ax25.h.

#define AX25_PID_NOLAYER3   0xF0

Identifiant protocole sans couche 3 Le module gère uniquement ce type de trame

Définition à la ligne 76 du fichier ax25.h.

#define vAx25Send (   ax25,
  dst,
  src,
  buf,
  len 
)    vAx25SendVia(ax25, ({static xAx25Node __path[]={dst, src}; __path;}), 2, buf, len)

Envoie une trame AX25

Paramètres
ax25Objet Ax25 à utiliser
dstdestination de la trame,
Voir également
AX25_CALL
Paramètres
srcsource de la trame,
Voir également
AX25_CALL
Paramètres
bufbuffer contenant les informations (payload).
lennombre d'octets du payload.
Voir également
vAx25SendVia() pour l'envoi avec répéteurs.

Définition à la ligne 118 du fichier ax25.h.

Documentation des définitions de type

typedef void(* vAx25CallBack) (struct xAx25Frame *msg)

Fonction gérant la réception de trame

Définition à la ligne 128 du fichier ax25.h.

typedef struct xAx25 xAx25

Objet Ax25 Cet objet encapsule toutes les informations nécessaires à la gestion de la réception et de la transmission.

typedef struct xAx25Frame xAx25Frame

Trame AX25

typedef struct xAx25Node xAx25Node

Station AX25

Documentation des fonctions

void vAx25Init ( struct xAx25 ax25,
FILE *  fin,
FILE *  fout,
vAx25CallBack  hook 
)

Intialise l'objet Ax25

Paramètres
ax25Objet à initialiser
finPointeur sur le fichier d'entrée de la couche physique
foutPointeur sur le fichier de sortie de la couche physique
hookFonction exécutée à la réception d'une trame (callback)
Exemples:
aprs/demo_aprs.c, et net/aprs/demo_aprs.c.
void vAx25Poll ( struct xAx25 ax25)

Vérifies si une trame AX25 peut être traiter.

Cette fonction lit les octets sur le media d'entrée à la recherche de trames AX25.
Si une tame est trouvée, elle est décodée et passée à la fonction de gestion de réception (callback).
Cette fonction doit être appelée le plus souvent possible dans la boucle du programme principal.
Cette fonction peut être bloquante si aucun octet n'est reçu et si le media utilisé en entrée est configuré en mode bloquant.

Paramètres
ax25Objet Ax25 utilisé
Exemples:
aprs/demo_aprs.c, et net/aprs/demo_aprs.c.
void vAx25Print ( FILE *  f,
const xAx25Frame msg 
)

Affiche une trame AX25 au format TNC-2

Paramètres
fFichier à utiliser pour l'affichage
msgTrame à afficher
Exemples:
aprs/demo_aprs.c, et net/aprs/demo_aprs.c.
void vAx25SendVia ( struct xAx25 ax25,
const xAx25Node path,
size_t  path_len,
const void *  _buf,
size_t  len 
)

Envoi d'une trame par un chemin spécifique

Paramètres
ax25Objet Ax25 utilisé
pathTableau de stations utilisé comme chemin,
Voir également
AX25_PATH
Paramètres
path_lenNombre de station dans le path
_bufBuffer contenant les informations à transmettre (payload)
lenNombre d'octets du payload.
Exemples:
aprs/demo_aprs.c, et net/aprs/demo_aprs.c.