SysIo  1.9.0
Embedded Library and tools
Module UHF RFM69

Detailed Description

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 bus SPI et de la gestion des interruptions.

Classes

class  xRf69
 Classe permettant de manipuler une liaison RFM69. More...
 

Functions

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

Macros

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

Typedefs

typedef struct xRf69 xRf69
 

Enumerations

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

Function Documentation

bool bRf69isHighPower ( xRf69 rf)

#include <rf69.h>

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

Parameters
rfpointeur sur l'objet xRf69
Returns
true, false, valeur négative si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
bool bRf69isPromiscuous ( xRf69 rf)

#include <rf69.h>

Lecture du mode promiscuité

Parameters
rfpointeur sur l'objet xRf69
Returns
true, false, valeur négative si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69AckReceived ( xRf69 rf,
uint8_t  fromNodeId 
)

#include <rf69.h>

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.

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

#include <rf69.h>

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

Parameters
rfpointeur sur l'objet xRf69
Returns
true, false, valeur négative si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69CanSend ( xRf69 rf)

#include <rf69.h>

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

Parameters
rfpointeur sur l'objet xRf69
Returns
true prêt à émettre, false timeout, valeur négative si erreur
Examples:
spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69Close ( xRf69 rf)

#include <rf69.h>

Close the input-output layer.

Parameters
rfpointeur sur l'objet xRf69
Returns
0, valeur négative si erreur
int iRf69DataLength ( xRf69 rf)

#include <rf69.h>

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.

Parameters
rfpointeur sur l'objet xRf69
Returns
Nombre d'octets de données utiles (sans en-tête), -1 si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69isEncrypted ( xRf69 rf)

#include <rf69.h>

Indique si la transmission est cryptée.

Parameters
rfpointeur sur l'objet xRf69
Returns
true, false, valeur négative si erreur
int iRf69NetworkId ( xRf69 rf)

#include <rf69.h>

Lecture de notre réseau.

Parameters
rfpointeur sur l'objet xRf69
Returns
identifiant de notre réseau, valeur négative si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69NodeId ( xRf69 rf)

#include <rf69.h>

Lecture de notre identifiant.

Parameters
rfpointeur sur l'objet xRf69
Returns
identifiant, valeur négative si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69Open ( xRf69 rf,
eRf69Band  eBand,
uint8_t  ucId,
uint8_t  ucNetId 
)

#include <rf69.h>

Parameters
rfpointeur sur l'objet xRf69
eBand
ucId
ucNetId
Returns
0, valeur négative si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69PowerLevel ( xRf69 rf)

#include <rf69.h>

Lecture de la puissance d'émission.

Parameters
rfpointeur sur l'objet xRf69
Returns
puissance relative (0 à 31 dBm)
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69RcCalibration ( xRf69 rf)

#include <rf69.h>

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).

Parameters
rfpointeur sur l'objet xRf69
Returns
0, valeur négative si erreur
int iRf69ReceiveDone ( xRf69 rf)

#include <rf69.h>

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

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

Parameters
rfpointeur sur l'objet xRf69
Returns
true, false, valeur négative si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69Rssi ( xRf69 rf,
bool  bForceTrigger 
)

#include <rf69.h>

Lecture du niveau de réception.

Cette fonction retourne le niveau de réception en dBm

Parameters
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.
Returns
Le niveau de réception en dBm, INT_MAX si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69Send ( xRf69 rf,
uint8_t  toAddress,
const void *  tx_buffer,
uint8_t  tx_len,
bool  bRequestACK 
)

#include <rf69.h>

Transmission d'un paquet.

Parameters
rfpointeur sur l'objet xRf69
toAddressdestinataire ou RF69_BROADCAST_ADDR
tx_bufferdonnées à transmettre
tx_lennombre d'octets des données
bRequestACKdemande d'ACK
Returns
true trame envoyée, false timeout, valeur négative si erreur
Examples:
spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69SendAck ( xRf69 rf,
const void *  tx_buffer,
uint8_t  tx_len 
)

#include <rf69.h>

Envoi d'un paquet ACK suite à demande AckRequested.

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

Parameters
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)
Returns
true Ok, false timeout, valeur négative si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69SenderId ( xRf69 rf)

#include <rf69.h>

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

Parameters
rfpointeur sur l'objet xRf69
Returns
Adresse de l'émetteur comme un unsigned int, -1 si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69SendWithRetry ( xRf69 rf,
uint8_t  toAddress,
const void *  tx_buffer,
uint8_t  tx_len,
uint8_t  retries,
int  retryWaitTime 
)

#include <rf69.h>

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

Parameters
rfpointeur sur l'objet xRf69
toAddress
tx_buffer
tx_len
retries
retryWaitTime
Returns
true trame envoyée, false timeout, valeur négative si erreur
int iRf69SetDioMapping ( xRf69 rf,
uint8_t  dio,
uint8_t  map 
)

#include <rf69.h>

Modification du mapping d'une broche DIO.

Parameters
rfpointeur sur l'objet xRf69
dionuméro de broche à modifier (1,2,3,5). Le mapping de la broche DIO0 ne peut pas être modifié.
mapconfiguration de mapping choisie conformémement au tableau 22, page 48 du datasheet.
Returns
0, valeur négative si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69SetEncryptKey ( xRf69 rf,
const char *  sKey 
)

#include <rf69.h>

Modification de la clé d'encryptage.

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

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

#include <rf69.h>

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

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

#include <rf69.h>

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.

Parameters
rfpointeur sur l'objet xRf69
bOnnouvel état
Returns
0, valeur négative si erreur
int iRf69SetNetworkId ( xRf69 rf,
uint8_t  ucNetId 
)

#include <rf69.h>

Modification de notre réseau.

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

#include <rf69.h>

Modification de notre identifiant.

Parameters
rfpointeur sur l'objet xRf69
ucNodeIdnouvel identifiant
Returns
0, valeur négative si erreur
int iRf69SetPowerLevel ( xRf69 rf,
int  level 
)

#include <rf69.h>

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).

Parameters
rfpointeur sur l'objet xRf69
levelnouvelle puissance relative (0 à 31 dBm)
Returns
0, valeur négative si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69SetPromiscuous ( xRf69 rf,
bool  bOn 
)

#include <rf69.h>

Modification du mode promiscuité

Parameters
rfpointeur sur l'objet xRf69
bOnfalse réception des seuls paquets correspondant à notre adresse ou au broadcast, true réception de tous les paquets.
Returns
0, valeur négative si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69Sleep ( xRf69 rf)

#include <rf69.h>

Passage en mode sommeil.

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

Parameters
rfpointeur sur l'objet xRf69
Returns
0, valeur négative si erreur
int iRf69TargetId ( xRf69 rf)

#include <rf69.h>

Adresse du destinataire du dernier message reçu.

Parameters
rfpointeur sur l'objet xRf69
Returns
Adresse du destinataire comme un unsigned int, -1 si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
int iRf69Temperature ( xRf69 rf,
int  iCalFactor 
)

#include <rf69.h>

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

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

#include <rf69.h>

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.

Parameters
rfpointeur sur l'objet xRf69
fromNodeIdAdresse du noeud dont on attend la réponse
Returns
true si Ack reçu, false, valeur négative si erreur
Examples:
spi/rf69-ping/sysio_demo_rf69_ping.c.
long lRf69Frequency ( xRf69 rf)

#include <rf69.h>

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

Parameters
rfpointeur sur l'objet xRf69
Returns
La fréquence en Hz, valeur négative si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
const char* sRf69Data ( xRf69 rf)

#include <rf69.h>

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

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

Parameters
rfpointeur sur l'objet xRf69
Returns
pointeur sur les données
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
void vRf69Delete ( xRf69 rf)

#include <rf69.h>

Destruction d'une liaison LiveEz.

Parameters
rfpointeur sur l'objet xRf69
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.
xRf69* xRf69New ( int  iBus,
int  iDevice,
int  iIrqPin 
)

#include <rf69.h>

Création d'un objet Rfm69.

Parameters
iBus
iDevice
iIrqPin
Returns
pointeur sur l'objet, NULL si erreur
Examples:
spi/rf69-gateway/sysio_demo_rf69_gateway.c, and spi/rf69-ping/sysio_demo_rf69_ping.c.