Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include "RF24.h"
- char radioNumber = '*';
- char clients[3] = {'b','0','e'};
- RF24 radio(7,8);
- #define PIPE_RX 0xF0F0F0F0D2LL
- #define PIPE_TX 0xF0F0F0F0E1LL
- char PROTOCOL_ID = 'H';
- char response[32];
- String encapsulate(String message, char destiny)
- {
- String response;
- response += PROTOCOL_ID;
- response += destiny;
- response += radioNumber;
- response += message;
- return response;
- }
- void send(String package)
- {
- radio.stopListening();
- delay(50);
- radio.startWrite(package.c_str(), package.length(), false);
- delay(50);
- radio.startListening();
- }
- void route()
- {
- String package;
- Serial.println("Recebendo para rotear");
- while(radio.available())
- {
- radio.read(&response, sizeof(response));
- }
- if (response[0] != '\0'){
- Serial.println(response);
- package = response;
- if(response[0] == PROTOCOL_ID){
- send(package);
- Serial.print("Roteei: ");
- Serial.println(package);
- }else{
- Serial.println("pacote de outra rede");
- }
- response[0] = '\0';
- }
- }
- bool received(){
- radio.startListening();
- unsigned long startListenTime = millis();
- while(!radio.available()){
- if((millis() - startListenTime) > 3000){
- Serial.println("Timeout");
- return false;
- }
- }
- return true;
- }
- void testCarrier(){
- do {
- radio.startListening();
- delay(128);
- radio.stopListening();
- } while(radio.testCarrier());
- }
- void tokenRing(){
- for(int i = 0; i < 3; i++){
- String package = encapsulate("a", clients[i]);
- Serial.println(package);
- for(int tries = 0; tries < 3; tries++){
- testCarrier();
- send(package);
- if(received()){
- route();
- break;
- }
- }
- }
- Serial.println("---------------------------------------------------------");
- }
- void setup() {
- Serial.begin(115200);
- radio.begin();
- radio.setPALevel(RF24_PA_HIGH);
- radio.setAutoAck(false);
- radio.openWritingPipe(PIPE_TX);
- radio.openReadingPipe(1, PIPE_RX);
- }
- void loop() {
- tokenRing();
- delay(5000);
- }//loop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement