Il est possible de modifier la puissance d'emission, l'adresse du noeud destinataire, l'activation du mode promiscuité.
Voilà un exemple d'affichage :
RFM69 Ping Demo **
----------- Menu -----------
[space]: start/stop Tx
p: toggle promiscous
t: change target node
w: change power level
Frf: 868000 kHz - Power Level: 0 dBm - Promiscuous: 1
Own address: [1]
Transmitting data on network 1 to node [10]...
T[1]>[10] 'Hello 0' > Ack [RSSI = -28]
T[1]>[10] 'Hello 1' > Ack [RSSI = -28]
....
tTarget ID (255 for broadcast)? 255
Frf: 868000 kHz - Power Level: 0 dBm - Promiscuous: 1
Own address: [1]
Transmitting data on network 1 to node [255]...
T[1]>[255] 'Hello 16' >
#include <avrio/delay.h>
#include <avrio/rf69.h>
#include <avrio/tc.h>
#include <avrio/assert.h>
#include <avr/pgmspace.h>
#include <string.h>
#define BAUDRATE 115200
#define PORT "tty0"
#define DIO0_IRQ INT0 // Interruption utilisée pour DIO0 (IO2 sur Arduino)
#define MYNODE_ID 1 // Adresse de notre module
#define TARGET_ID 10 // Adresse du module destinataire de nos messages
#define NET_ID 1 // Numéro de notre réseau
int
main (void) {
int ret, c;
int src, target, level, net;
bool bPrintStat = true;
bool bTxOn = true;
bool bPromiscuous = true;
stdout = serial_port;
stderr = serial_port;
stdin = serial_port;
printf_P (PSTR ("\n\n** RFM69 Ping Demo **\n"
"----------- Menu -----------\n"
"[space]: start/stop Tx\n"
" p: toggle promiscous\n"
" t: change target node\n"
" w: change power level\n"));
ret =
iRf69Open (rf, eRf69Band868Mhz, MYNODE_ID, NET_ID);
target = TARGET_ID;
for (;;) {
c = getchar();
switch (c) {
case ' ':
bTxOn = ! bTxOn;
printf_P (PSTR ("\nTx %s\n"), bTxOn ? "On" : "Off");
break;
case 'p':
bPromiscuous = ! bPromiscuous;
printf_P (PSTR ("\nPromiscuous %s\n"), bPromiscuous ? "On" : "Off");
break;
case 't':
do {
scanf ("%d", &ret);
}
while ( (ret < 1) || (ret > 255));
target = ret;
bPrintStat = true;
break;
case 'w':
do {
scanf ("%d", &ret);
}
while ( (ret < -18) || (ret > 13));
level = ret + 18;
bPrintStat = true;
break;
default:
break;
}
}
if (bPrintStat) {
if (ret) {
level = level / 2 + 5;
}
else {
level -= 18;
}
printf_P (PSTR ("\nFrf: %lu kHz - Power Level: %d dBm - Promiscuous: %d\n"
"Own address: [%d]\n"
"Transmitting data on network %d to node [%d]...\n"),
frf / 1000, level, bPromiscuous, src, net, target);
bPrintStat = false;
}
if (bTxOn) {
if (ret == true) {
static int count;
char msg[20];
snprintf_P (msg, sizeof (msg), PSTR ("Hello %d"), count++);
printf_P (PSTR ("\nT[%d]>[%d] '%s' > "), src, target, msg);
int rssi;
if (ret == true) {
}
switch (ret) {
case false:
printf_P (PSTR ("Timeout"));
break;
case true:
printf_P (PSTR ("Ack"));
break;
default:
printf_P (PSTR ("Error %d"), ret);
break;
}
printf_P (PSTR (" [RSSI = %d]"), rssi);
}
}
}
if (ret == true) {
}
if (ret == true) {
printf_P (PSTR (" > Ack"));
}
printf_P (PSTR (" [RSSI = %d]\n"), rssi);
}
}
return 0;
}