projet crepp_git/crepp-projects/station-meteo/firmware/receiver/v1.0 · branche main
main_old.cpp Voir sur GitLab
// #include <Arduino.h>
// #include "WS_NRF24.hpp"

// #include "drivers/LED_Handler.h"
// #include "WS_Data.hpp"

// #define RECEIVER
// using namespace crepp::drivers;

// LED_Handler led;

// WS_NRF24 nrf24(20,21, 0xFF00FF00FF);

// static void queueAckPayload(uint16_t counter) {
//     Serial.print(F("Queue ACK payload: "));
//     int mode = counter % 4;
//     if (mode == 0) {
//         Acknowledgement ack;
//         ack.dataType = END_OF_COMMUNICATION;
//         nrf24.setAckPayloadStruct(1, ack);
//         Serial.println(F("END_OF_COMMUNICATION"));
//     } else if(mode == 1) {
//         Request_Settings reqAck;
//         reqAck.dataType = REQUEST_SETTINGS;
//         reqAck.indexCommand = GET_VOLTAGE;
//         reqAck.indexSequence = 10;
//         nrf24.setAckPayloadStruct(1, reqAck);
//         Serial.println(F("REQUEST_SETTINGS"));
//     }
//     else if(mode == 2) {
//         Settings settingsAck;
//         settingsAck.dataType = SET_SETTINGS;
//         settingsAck.indexCommand = SET_SEND_INTERVAL;
//         settingsAck.indexSequence = 20;
//         settingsAck.settingValue = 2; // Example: set send interval to 5000ms
//         nrf24.setAckPayloadStruct(1, settingsAck);
//         Serial.println(F("SET_SETTINGS"));
//     }
//     else if(mode == 3) {
//         Settings settingsAck;
//         settingsAck.dataType = SET_SETTINGS;
//         settingsAck.indexCommand = CALIBRATE_TIME;
//         settingsAck.indexSequence = 0;
//         settingsAck.settingValue = 0; // Example: set send interval to 5000ms
//         nrf24.setAckPayloadStruct(1, settingsAck);
//         Serial.println(F("SET_SETTINGS"));
//     }
// }

// void setup() {
//     Serial.begin(9600);

//     led.begin();
//     led.setBrightness(50);
//     led.startRainbow(20);

    
//     // DEBUG: Print struct sizes
//     Serial.print(F("sizeof(Weather_Data) = ")); Serial.println(sizeof(Weather_Data));
//     Serial.print(F("sizeof(Request_Settings) = ")); Serial.println(sizeof(Request_Settings));
//     Serial.print(F("sizeof(Settings) = ")); Serial.println(sizeof(Settings));
  

//     bool status_NRF24 = nrf24.beginReceiver(108);
//     Serial.print(F("NRF24 Receiver status: ")); Serial.println(status_NRF24);
//     delay(5000);
//     queueAckPayload(0);


//     delay(100);
  
//     delay(2000);

//     if(status_NRF24) Serial.println("NRF24 : OK");

// }

// void loop() 
// {
//     static uint16_t counter = 0;
//     uint8_t buffer[32];

//     led.update();

//     if (nrf24.readData(buffer, 32)) {
//         Serial.println(F("\n========== DATA RECEIVED =========="));
        
//         // DEBUG: Print raw bytes
//         Serial.print(F("Raw bytes: "));
//         for (uint8_t i = 0; i < 15; i++) {
//             if (buffer[i] < 0x10) Serial.print(F("0"));
//             Serial.print(buffer[i], HEX);
//             Serial.print(F(" "));
//         }
//         Serial.println();
        
//         // Lire le type depuis le premier octet
//         Data_Type type = static_cast<Data_Type>(buffer[0]);


//         switch(type) {
//             case SEND_WEATHER_DATA: {
//                 Weather_Data data;
//                 memcpy(&data, buffer, sizeof(Weather_Data));
//                 Serial.println(F("Weather Data received"));

//                 Serial.print(F("Temperature:    ")); Serial.print(data.temperature/10.0); Serial.println(F(" °C"));
//                 Serial.print(F("Humidity:       ")); Serial.print(data.humidity/10.0); Serial.println(F(" %"));
//                 Serial.print(F("Pressure:       ")); Serial.print(data.pressure/10.0); Serial.println(F(" hPa"));
//                 Serial.print(F("Wind Speed:     ")); Serial.print(data.windSpeed); Serial.println(F(" ticks/5s"));
//                 Serial.print(F("Wind Direction: ")); Serial.print(data.windDirection); Serial.println(F(" (analog value)"));
//                 Serial.print(F("Raining Level:  ")); Serial.print(data.rainingLevel); Serial.println(F(" ticks"));
//                 Serial.print(F("Hours since reboot: ")); Serial.println(data.hoursSinceReboot);

//                 break;
//             }

//             case SEND_SETTINGS: {
//                 Settings settings;
//                 memcpy(&settings, buffer, sizeof(Settings));
//                 Serial.println(F("Settings Data received"));
//                 Serial.print(F("Command: ")); Serial.println(settings.indexCommand);
//                 Serial.print(F("Sequence: ")); Serial.println(settings.indexSequence);
//                 Serial.print(F("Value: ")); Serial.println(settings.settingValue);
//                 break;
//             }
//             default:
//                 Serial.print(F("Unknown type received: "));
//                 Serial.println(buffer[0]);

//                 break;
//         }

//         // Envoyer ACK dynamique
//         Serial.println(F("Sending ACK... "));
//         counter++;
//         queueAckPayload(counter);
//         Serial.println(F("========== END DATA ==========\n"));

//         // Optional: clear IRQ flags without restarting the radio state machine
//         //nrf24.clearRxInterrupt();

//         delay(1000);
//     }
//     delay(10);
// }