![]() |
SysIo
1.9.0
Embedded Library and tools
|
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... | |
xRf69 * | xRf69New (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. | |
bool bRf69isHighPower | ( | xRf69 * | rf | ) |
#include <rf69.h>
Indique si le mode haute puissance d'émission est activé
rf | pointeur sur l'objet xRf69 |
bool bRf69isPromiscuous | ( | xRf69 * | rf | ) |
#include <rf69.h>
Lecture du mode promiscuité
rf | pointeur sur l'objet xRf69 |
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.
rf | pointeur sur l'objet xRf69 |
fromNodeId | Adresse du noeud dont on attend la réponse |
int iRf69AckRequested | ( | xRf69 * | rf | ) |
#include <rf69.h>
Indique si le dernier paquet reçu nécessite un ACK (paquet non-broadcast)
rf | pointeur sur l'objet xRf69 |
int iRf69CanSend | ( | xRf69 * | rf | ) |
#include <rf69.h>
Vérifie si on peut émettre Si oui, passe en mode StandBy.
rf | pointeur sur l'objet xRf69 |
int iRf69Close | ( | xRf69 * | rf | ) |
#include <rf69.h>
Close the input-output layer.
rf | pointeur sur l'objet xRf69 |
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.
rf | pointeur sur l'objet xRf69 |
int iRf69isEncrypted | ( | xRf69 * | rf | ) |
#include <rf69.h>
Indique si la transmission est cryptée.
rf | pointeur sur l'objet xRf69 |
int iRf69NetworkId | ( | xRf69 * | rf | ) |
#include <rf69.h>
Lecture de notre réseau.
rf | pointeur sur l'objet xRf69 |
int iRf69NodeId | ( | xRf69 * | rf | ) |
#include <rf69.h>
Lecture de notre identifiant.
rf | pointeur sur l'objet xRf69 |
#include <rf69.h>
rf | pointeur sur l'objet xRf69 |
eBand | |
ucId | |
ucNetId |
int iRf69PowerLevel | ( | xRf69 * | rf | ) |
#include <rf69.h>
Lecture de la puissance d'émission.
rf | pointeur sur l'objet xRf69 |
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).
rf | pointeur sur l'objet xRf69 |
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.
rf | pointeur sur l'objet xRf69 |
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
rf | pointeur sur l'objet xRf69 |
bForceTrigger | force le module à effectuer la mesure, si false, c'est le niveau de réception correspondant à la dernière réception qui est lu. |
int iRf69Send | ( | xRf69 * | rf, |
uint8_t | toAddress, | ||
const void * | tx_buffer, | ||
uint8_t | tx_len, | ||
bool | bRequestACK | ||
) |
#include <rf69.h>
Transmission d'un paquet.
rf | pointeur sur l'objet xRf69 |
toAddress | destinataire ou RF69_BROADCAST_ADDR |
tx_buffer | données à transmettre |
tx_len | nombre d'octets des données |
bRequestACK | demande d'ACK |
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.
rf | pointeur sur l'objet xRf69 |
tx_buffer | données à transmettre dans la réponse (NULL si inutile) |
tx_len | nombre d'octets de données (0 si inutile) |
int iRf69SenderId | ( | xRf69 * | rf | ) |
#include <rf69.h>
Adresse de l'émetteur du dernier message reçu.
rf | pointeur sur l'objet xRf69 |
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
rf | pointeur sur l'objet xRf69 |
toAddress | |
tx_buffer | |
tx_len | |
retries | |
retryWaitTime |
int iRf69SetDioMapping | ( | xRf69 * | rf, |
uint8_t | dio, | ||
uint8_t | map | ||
) |
#include <rf69.h>
Modification du mapping d'une broche DIO.
rf | pointeur sur l'objet xRf69 |
dio | numéro de broche à modifier (1,2,3,5). Le mapping de la broche DIO0 ne peut pas être modifié. |
map | configuration de mapping choisie conformémement au tableau 22, page 48 du datasheet. |
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é.
rf | pointeur sur l'objet xRf69 |
sKey | clé de cryptage doit avoir 16 caractères de long, mettre NULL pour désactiver le cryptage. |
int iRf69SetFrequency | ( | xRf69 * | rf, |
long | lFreq | ||
) |
#include <rf69.h>
Modification de la fréquence d'émission/réception.
rf | pointeur sur l'objet xRf69 |
lFreq | fréquence en Hz |
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.
rf | pointeur sur l'objet xRf69 |
bOn | nouvel état |
int iRf69SetNetworkId | ( | xRf69 * | rf, |
uint8_t | ucNetId | ||
) |
#include <rf69.h>
Modification de notre réseau.
rf | pointeur sur l'objet xRf69 |
ucNetId | identifiant du nouveau réseau |
int iRf69SetNodeId | ( | xRf69 * | rf, |
uint8_t | ucNodeId | ||
) |
#include <rf69.h>
Modification de notre identifiant.
rf | pointeur sur l'objet xRf69 |
ucNodeId | nouvel identifiant |
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).
rf | pointeur sur l'objet xRf69 |
level | nouvelle puissance relative (0 à 31 dBm) |
int iRf69SetPromiscuous | ( | xRf69 * | rf, |
bool | bOn | ||
) |
#include <rf69.h>
Modification du mode promiscuité
rf | pointeur sur l'objet xRf69 |
bOn | false réception des seuls paquets correspondant à notre adresse ou au broadcast, true réception de tous les paquets. |
int iRf69Sleep | ( | xRf69 * | rf | ) |
#include <rf69.h>
Passage en mode sommeil.
Afin d'économiser de l'énergie, un appel à iRf69ReceiveDone() réveille le module.
rf | pointeur sur l'objet xRf69 |
int iRf69TargetId | ( | xRf69 * | rf | ) |
#include <rf69.h>
Adresse du destinataire du dernier message reçu.
rf | pointeur sur l'objet xRf69 |
int iRf69Temperature | ( | xRf69 * | rf, |
int | iCalFactor | ||
) |
#include <rf69.h>
Lecture de la température du capteur 8 bits embarqué
rf | pointeur sur l'objet xRf69 |
iCalFactor | correction de zéro (suite à étalonnage) |
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.
rf | pointeur sur l'objet xRf69 |
fromNodeId | Adresse du noeud dont on attend la réponse |
long lRf69Frequency | ( | xRf69 * | rf | ) |
#include <rf69.h>
Lecture de la fréquence d'émission/réception.
rf | pointeur sur l'objet xRf69 |
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.
rf | pointeur sur l'objet xRf69 |
void vRf69Delete | ( | xRf69 * | rf | ) |
xRf69* xRf69New | ( | int | iBus, |
int | iDevice, | ||
int | iIrqPin | ||
) |
#include <rf69.h>
Création d'un objet Rfm69.
iBus | |
iDevice | |
iIrqPin |