AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Module UHF RFM69

Description détaillée

Ce module permet de gérer la transmission avec des modules sans fil RFM69 de HopeRF (http://www.hoperf.com/rf_transceiver/modules/RFM69W.html).
La plateforme doit disposer d'un GPIO.

Graphe de collaboration de Module UHF RFM69:

Structures de données

class  xRf69
 Classe permettant de manipuler une liaison RFM69. Plus de détails...
 

Fonctions

bool bRf69isHighPower (const xRf69 *rf)
 Indique si le mode haute puissance d'émission est activé Plus de détails...
 
bool bRf69isPromiscuous (const xRf69 *rf)
 Lecture du mode promiscuité Plus de détails...
 
int iRf69AckReceived (xRf69 *rf, uint8_t fromNodeId)
 Vérifie la réception d'un ACK. Plus de détails...
 
int iRf69AckRequested (const xRf69 *rf)
 Indique si le dernier paquet reçu nécessite un ACK (paquet non-broadcast) Plus de détails...
 
int iRf69CanSend (xRf69 *rf)
 Vérifie si on peut émettre Si oui, passe en mode StandBy. Plus de détails...
 
int iRf69Close (xRf69 *rf)
 Close the input-output layer. Plus de détails...
 
int iRf69DataLength (const xRf69 *rf)
 Nombre d'octets du dernier message reçu. Plus de détails...
 
int iRf69isEncrypted (const xRf69 *rf)
 Indique si la transmission est cryptée. Plus de détails...
 
int iRf69NetworkId (const xRf69 *rf)
 Lecture de notre réseau. Plus de détails...
 
int iRf69NodeId (const xRf69 *rf)
 Lecture de notre identifiant. Plus de détails...
 
int iRf69Open (xRf69 *rf, eRf69Band eBand, uint8_t ucId, uint8_t ucNetId)
 
int iRf69PowerLevel (const xRf69 *rf)
 Lecture de la puissance d'émission. Plus de détails...
 
int iRf69RcCalibration (const xRf69 *rf)
 Calibrage de l'oscilateur RC interne. Plus de détails...
 
int iRf69ReceiveDone (xRf69 *rf)
 Vérifie si un paquet a été reçu. Plus de détails...
 
int iRf69Rssi (const xRf69 *rf, bool bForceTrigger)
 Lecture du niveau de réception. Plus de détails...
 
int iRf69Send (xRf69 *rf, uint8_t toAddress, const void *tx_buffer, uint8_t tx_len, bool bRequestACK)
 Transmission d'un paquet. Plus de détails...
 
int iRf69SendAck (xRf69 *rf, const void *tx_buffer, uint8_t tx_len)
 Envoi d'un paquet ACK suite à demande AckRequested. Plus de détails...
 
int iRf69SenderId (xRf69 *rf)
 Adresse de l'émetteur du dernier message reçu. Plus de détails...
 
int iRf69SendWithRetry (xRf69 *rf, uint8_t toAddress, const void *tx_buffer, uint8_t tx_len, uint8_t retries, int retryWaitTime)
 Envoi d'un paquet avec répétition. Plus de détails...
 
int iRf69SetEncryptKey (xRf69 *rf, const char *sKey)
 Modification de la clé d'encryptage. Plus de détails...
 
int iRf69SetFrequency (xRf69 *rf, long lFreq)
 Modification de la fréquence d'émission/réception. Plus de détails...
 
int iRf69SetHighPower (xRf69 *rf, bool bOn)
 Modification du mode haute puissance d'émission. Plus de détails...
 
int iRf69SetNetworkId (const xRf69 *rf, uint8_t ucNetId)
 Modification de notre réseau. Plus de détails...
 
int iRf69SetNodeId (xRf69 *rf, uint8_t ucNodeId)
 Modification de notre identifiant. Plus de détails...
 
int iRf69SetPowerLevel (xRf69 *rf, int level)
 Modification de la puissance d'émission. Plus de détails...
 
int iRf69SetPromiscuous (xRf69 *rf, bool bOn)
 Modification du mode promiscuité Plus de détails...
 
int iRf69Sleep (xRf69 *rf)
 Passage en mode sommeil. Plus de détails...
 
int iRf69TargetId (xRf69 *rf)
 Adresse du destinataire du dernier message reçu. Plus de détails...
 
int iRf69Temperature (xRf69 *rf, int iCalFactor)
 Lecture de la température du capteur 8 bits embarqué Plus de détails...
 
int iRf69WaitAckReceived (xRf69 *rf, uint8_t fromNodeId, int timeout)
 Attente de la réception d'un ACK. Plus de détails...
 
long lRf69Frequency (const xRf69 *rf)
 Lecture de la fréquence d'émission/réception. Plus de détails...
 
const char * sRf69Data (const xRf69 *rf)
 Données utiles (sans en-tête) du dernier message reçu. Plus de détails...
 
void vRf69Delete (xRf69 *rf)
 Destruction d'une liaison LiveEz. Plus de détails...
 
xRf69xRf69New (int iBus, int iDevice, int iIrqPin)
 Création d'un objet Rfm69. Plus de détails...
 

Macros

#define RF69_BROADCAST_ADDR   255
 Adresse d'appel général (broadcast)
 

Définitions de type

typedef struct xRf69 xRf69
 

Énumérations

enum  eRf69Band {
  eRf69Band315Mhz = 31, eRf69Band433Mhz = 43, eRf69Band868Mhz = 86, eRf69Band915Mhz = 91,
  eRf69BandUnknown = -1
}
 Bande de fréquence.
 

Documentation des fonctions

bool bRf69isHighPower ( const xRf69 rf)

Indique si le mode haute puissance d'émission est activé

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
true, false, valeur négative si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
bool bRf69isPromiscuous ( const xRf69 rf)

Lecture du mode promiscuité

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
true, false, valeur négative si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69AckReceived ( xRf69 rf,
uint8_t  fromNodeId 
)

Vérifie la réception d'un ACK.

Vérifie la réception d'un ACK en réponse à l'envoi d'un paquet avec demande d'ACK.
Devrait être scruté immédiatement après l'envoi d'un paquet avec demande d'ACK.

Paramètres
rfpointeur sur l'objet xRf69
fromNodeIdAdresse du noeud dont on attend la réponse
Renvoie
true si Ack reçu, valeur négative si erreur
int iRf69AckRequested ( const xRf69 rf)

Indique si le dernier paquet reçu nécessite un ACK (paquet non-broadcast)

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
true, false, valeur négative si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69CanSend ( xRf69 rf)

Vérifie si on peut émettre Si oui, passe en mode StandBy.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
true prêt à émettre, false timeout, valeur négative si erreur
Exemples:
net/rf69/ping/demo_rf69_ping.c.
int iRf69Close ( xRf69 rf)

Close the input-output layer.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
0, valeur négative si erreur
int iRf69DataLength ( const xRf69 rf)

Nombre d'octets du dernier message reçu.

Les données sont disponibles jusqu'au prochain appel à iRf69ReceiveDone() ou jusqu'à l'envoi d'un paquet.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
Nombre d'octets de données utiles (sans en-tête), -1 si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69isEncrypted ( const xRf69 rf)

Indique si la transmission est cryptée.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
true, false, valeur négative si erreur
int iRf69NetworkId ( const xRf69 rf)

Lecture de notre réseau.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
identifiant de notre réseau, valeur négative si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69NodeId ( const xRf69 rf)

Lecture de notre identifiant.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
identifiant, valeur négative si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69Open ( xRf69 rf,
eRf69Band  eBand,
uint8_t  ucId,
uint8_t  ucNetId 
)
Paramètres
rfpointeur sur l'objet xRf69
eBand
ucId
ucNetId
Renvoie
0, valeur négative si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69PowerLevel ( const xRf69 rf)

Lecture de la puissance d'émission.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
puissance relative (0 à 31 dBm)
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69RcCalibration ( const xRf69 rf)

Calibrage de l'oscilateur RC interne.

Cet oscillateur est calibré automatiquement au démarrage de l'alimentation, Cette fonction est utile pour une utilisation sur une plage de température plus large ou si le module est démarré sur une longue période (pour corriger le glissement).

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
0, valeur négative si erreur
int iRf69ReceiveDone ( xRf69 rf)

Vérifie si un paquet a été reçu.

Si non, active la réception, si oui passe en mode StandBy.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
true, false, valeur négative si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69Rssi ( const xRf69 rf,
bool  bForceTrigger 
)

Lecture du niveau de réception.

Cette fonction retourne le niveau de réception en dBm

Paramètres
rfpointeur sur l'objet xRf69
bForceTriggerforce le module à effectuer la mesure, si false, c'est le niveau de réception correspondant à la dernière réception qui est lu.
Renvoie
Le niveau de réception en dBm, INT_MAX si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69Send ( xRf69 rf,
uint8_t  toAddress,
const void *  tx_buffer,
uint8_t  tx_len,
bool  bRequestACK 
)

Transmission d'un paquet.

Paramètres
rfpointeur sur l'objet xRf69
toAddressdestinataire ou RF69_BROADCAST_ADDR
tx_bufferdonnées à transmettre
tx_lennombre d'octets des données
bRequestACKdemande d'ACK
Renvoie
true trame envoyée, false timeout, valeur négative si erreur
Exemples:
net/rf69/ping/demo_rf69_ping.c.
int iRf69SendAck ( xRf69 rf,
const void *  tx_buffer,
uint8_t  tx_len 
)

Envoi d'un paquet ACK suite à demande AckRequested.

Devrait être appelé immédiatement après réception d'un paquet avec demande d'ACK.

Paramètres
rfpointeur sur l'objet xRf69
tx_bufferdonnées à transmettre dans la réponse (NULL si inutile)
tx_lennombre d'octets de données (0 si inutile)
Renvoie
true Ok, false timeout, valeur négative si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69SenderId ( xRf69 rf)

Adresse de l'émetteur du dernier message reçu.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
Adresse de l'émetteur comme un unsigned int, -1 si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69SendWithRetry ( xRf69 rf,
uint8_t  toAddress,
const void *  tx_buffer,
uint8_t  tx_len,
uint8_t  retries,
int  retryWaitTime 
)

Envoi d'un paquet avec répétition.

to increase the chance of getting a packet across, call this function instead of send and it handles all the ACK requesting/retrying for you :) The only twist is that you have to manually listen to ACK requests on the other side and send back the ACKs The reason for the semi-automaton is that the lib is interrupt driven and requires user action to read the received data and decide what to do with it replies usually take only 5..8ms at 50kbps@915MHz

Paramètres
rfpointeur sur l'objet xRf69
toAddress
tx_buffer
tx_len
retries
retryWaitTime
Renvoie
true trame envoyée, false timeout, valeur négative si erreur
int iRf69SetEncryptKey ( xRf69 rf,
const char *  sKey 
)

Modification de la clé d'encryptage.

Tous les noeuds du réseau doivent utiliser la même clé.

Paramètres
rfpointeur sur l'objet xRf69
sKeyclé de cryptage doit avoir 16 caractères de long, mettre NULL pour désactiver le cryptage.
Renvoie
0, valeur négative si erreur
int iRf69SetFrequency ( xRf69 rf,
long  lFreq 
)

Modification de la fréquence d'émission/réception.

Paramètres
rfpointeur sur l'objet xRf69
lFreqfréquence en Hz
Renvoie
0, valeur négative si erreur
int iRf69SetHighPower ( xRf69 rf,
bool  bOn 
)

Modification du mode haute puissance d'émission.

Disponible uniquement sur RFM69HW. Dans ce mode, la puissance d'émission varie entre 5 et 20 dBm, au lieu de -18 à 13 dBm.

Paramètres
rfpointeur sur l'objet xRf69
bOnnouvel état
Renvoie
0, valeur négative si erreur
int iRf69SetNetworkId ( const xRf69 rf,
uint8_t  ucNetId 
)

Modification de notre réseau.

Paramètres
rfpointeur sur l'objet xRf69
ucNetIdidentifiant du nouveau réseau
Renvoie
0, valeur négative si erreur
int iRf69SetNodeId ( xRf69 rf,
uint8_t  ucNodeId 
)

Modification de notre identifiant.

Paramètres
rfpointeur sur l'objet xRf69
ucNodeIdnouvel identifiant
Renvoie
0, valeur négative si erreur
int iRf69SetPowerLevel ( xRf69 rf,
int  level 
)

Modification de la puissance d'émission.

La puissance fournie est une puissance relative à la puissance de référence du module utilisé. Pour les modules ne disposant pas du mode haute puissance la puissance réelle varie entre -18 et 13 dBm pour une puissance relative entre 0 et 31 dBm (la puissance de référence est donc de -18 dBm).
Pour un module haute puissance (HW) avec iRf69SetHighPower() activé la puissance réelle varie entre 5 et 20 dBm pour une puissance relative entre 0 et 31 dBm (la puissance de référence est donc de 5 dBm avec un pas de 0.5 dBm).

Paramètres
rfpointeur sur l'objet xRf69
levelnouvelle puissance relative (0 à 31 dBm)
Renvoie
0, valeur négative si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69SetPromiscuous ( xRf69 rf,
bool  bOn 
)

Modification du mode promiscuité

Paramètres
rfpointeur sur l'objet xRf69
bOnfalse réception des seuls paquets correspondant à notre adresse ou au broadcast, true réception de tous les paquets.
Renvoie
0, valeur négative si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69Sleep ( xRf69 rf)

Passage en mode sommeil.

Afin d'économiser de l'énergie, un appel à iRf69ReceiveDone() réveille le module.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
0, valeur négative si erreur
int iRf69TargetId ( xRf69 rf)

Adresse du destinataire du dernier message reçu.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
Adresse du destinataire comme un unsigned int, -1 si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
int iRf69Temperature ( xRf69 rf,
int  iCalFactor 
)

Lecture de la température du capteur 8 bits embarqué

Paramètres
rfpointeur sur l'objet xRf69
iCalFactorcorrection de zéro (suite à étalonnage)
Renvoie
La température en °C, INT_MAX si erreur
int iRf69WaitAckReceived ( xRf69 rf,
uint8_t  fromNodeId,
int  timeout 
)

Attente de la réception d'un ACK.

Vérifie la réception d'un ACK en réponse à l'envoi d'un paquet avec demande d'ACK.
Devrait être utilisé immédiatement après l'envoi d'un paquet avec demande d'ACK.

Paramètres
rfpointeur sur l'objet xRf69
fromNodeIdAdresse du noeud dont on attend la réponse
Renvoie
true si Ack reçu, false, valeur négative si erreur
Exemples:
net/rf69/ping/demo_rf69_ping.c.
long lRf69Frequency ( const xRf69 rf)

Lecture de la fréquence d'émission/réception.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
La fréquence en Hz, valeur négative si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
const char* sRf69Data ( const xRf69 rf)

Données utiles (sans en-tête) du dernier message reçu.

Les données sont terminées par un octet nul.

Paramètres
rfpointeur sur l'objet xRf69
Renvoie
pointeur sur les données
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.
void vRf69Delete ( xRf69 rf)

Destruction d'une liaison LiveEz.

Paramètres
rfpointeur sur l'objet xRf69
xRf69* xRf69New ( int  iBus,
int  iDevice,
int  iIrqPin 
)

Création d'un objet Rfm69.

Paramètres
iBus
iDevice
iIrqPin
Renvoie
pointeur sur l'objet, NULL si erreur
Exemples:
net/rf69/gateway/demo_rf69_gateway.c, et net/rf69/ping/demo_rf69_ping.c.