TP-reseaux-locaux/DecaDuinoSender/DecaDuinoSender.ino
2023-06-20 20:50:12 +02:00

102 lines
2.3 KiB
C++
Executable file

// DecaDuinoSender
// Ce croquis est un exemple d'utilisation de la librairie DecaDuino
// Il permet d'envoyer des messages avec l'interface UWB
// by Adrien van den Bossche <vandenbo@univ-tlse2.fr>
// Ce croquis fait partir du projet DecaDuino (cf. fichier DecaDuino LICENCE)
#include <SPI.h>
#include <DecaDuino.h>
#define MAX_FRAME_LEN 120
#//define MY_ADDR 34
DecaDuino decaduino; //Interface radio UWB
uint8_t txData[MAX_FRAME_LEN]; // buffer des données émises (tableau d'octets)
uint16_t txLen; // nombre d'octets émis <= MAC_FRAME_LEN
uint8_t txFrames; // nb de trames émises module 255
uint8_t T_trame; // durée emission trame
uint8_t W; // taille de la fenêtre
uint8_t k; // aléatoire
void setup()
{
//Sélection de la LED interne connectée au pin 13 de la carte
pinMode(13, OUTPUT);
Serial.begin(115200); // Init Serial port speed
SPI.setSCK(14); // Set SPI clock pin (pin 14 on DecaWiNo board)
// Initialisation de DecaDuino
if ( !decaduino.init() ) {
// LED 13 clignotte si init échoue
Serial.println("decaduino init failed");
while(1) { digitalWrite(13, HIGH); delay(50); digitalWrite(13, LOW); delay(50); }
}
txFrames = 1;
//On attend 5s avant d'emettre
delay(5000);
T_trame = 100; // ms
W = 8; // taille
}
void loop()
{
// On allume la LED interne sur le port 13
digitalWrite(13, HIGH);
// Taille des données
txLen = 10;
// sélection du canal
txData[0] = 22;
// envoie du numéro de trame
txData[1] = txFrames;
// Creation de donnees fictives dans txData
for (int i=2; i<txLen; i++) {
txData[i] = 0;
}
// Envoi de la trame
decaduino.pdDataRequest(txData, txLen);
// On attend que la trame soit émise
while ( !decaduino.hasTxSucceeded() );
// Log du nb de trames émises
digitalWrite(13, LOW);
Serial.print(" txFrames |");
Serial.print(txFrames++);
Serial.print("| ");
Serial.print(" txLen |");
Serial.print(txLen);
Serial.print("| ");
Serial.print(" txData: |");
for (int i=0; i<txLen; i++) {
Serial.print(txData[i], HEX);
if (i != txLen - 1) {
Serial.print("-");
}
}
Serial.print("| ");
//k = random(W);
//Serial.print(" k |");
//Serial.print(k);
//Serial.print("| ");
Serial.println();
// Attente de T_trame * k secondes
//delay(k*T_trame);
delay(100);
}