Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
4.5 kB
3
Indexable
Never
#include "_433PTT.h"
#include <EEPROM.h>
#include "WiFi.h"
#include "ESPAsyncWebServer.h"
#include "SPIFFS.h"   //library for reading file
#include <ArduinoJson.h> //library for formating as JSON - version 5.13

#define EPROMSIZE 512              // Size of EEPROM in your Arduino chip. For ESP32 it is Flash simulated so very slow

AsyncWebServer server(80);
StaticJsonBuffer<200> jsonBuffer;
String jsonString;
_433PTT tool;
void setupAPMode() {
  const char* ssid = "433PTT"; // Set the name of the access point
  const char* password = "12345678"; // Set the password for the access point
  WiFi.softAP(ssid, password); // Set the ESP32 to AP mode with the specified SSID and password
  Serial.print("Access point IP address: ");
  Serial.println(WiFi.softAPIP()); // Print the IP address of the access point
}

void handleGetView(AsyncWebServerRequest *request) {
  jsonBuffer.clear();
  JsonObject& object = jsonBuffer.createObject();
  // {
  //   "hello": "world";
  // }
  object["hello"] = "world";
  String response;
  object.printTo(response);
  request->send(200, "application/json", response);
}

// example data to post:
// {
//   "key1": "value1",
//   "key2": "value2"
// }
void handlePostBodySend(AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total){
      DynamicJsonBuffer jsonDynamicBuffer;
      JsonObject& root = jsonDynamicBuffer.parseObject((const char*)data);
      if (root.success()) {
        if (root.containsKey("key1")) {
          Serial.println(root["key"].asString());
        }
        if (root.containsKey("key2")) {
          Serial.println(root["key2"].asString());
        }
        request->send(200, "text/plain", "");
      } else {
        request->send(404, "text/plain", "");
      }
  }

void setUpRoutes(){
  if(!SPIFFS.begin(true)){
    Serial.println("An Error has occurred while mounting SPIFFS");
    return;
  }

  DefaultHeaders::Instance().addHeader("Access-Control-Allow-Origin", "*");
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/main.html", String(), false);
  });
  server.on("/styles.css", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/styles.css", "text/css");
  });
  server.on("/main.js", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/main.js", "application/javascript");
  });

  server.on("/on", HTTP_GET, handleGetView);

  server.on("/postDataRF", HTTP_POST, [](AsyncWebServerRequest *request){},NULL, handlePostBodySend);

  server.begin();
}
void setup() {
  Serial.begin(9600); //define frequency of serial monitor
  Serial.println("successfully");
  setupAPMode();
  setUpRoutes();
  EEPROM.begin(EPROMSIZE);
  if (tool.getConnectionStatus()) {  // Check the CC1101 Spi connection.
      Serial.println(F("Connection OK\n\r"));
  } else {
      Serial.println(F("Connection Error\n\r"));
  };
  tool.init();
  tool.changeState(IDLE_STATE);
}

void handle_RX_State(){
  if(tool.getDriver()==RCSWITCH_DRIVER){
    if(tool.getState()!=SCAN_STATE && tool.getState()!=RX_STATE ){
      tool.RCSwitch_SetRX();
    }

    if(tool.RCSwitch_available()){
      tool.receiveRF_RCSwitch();
      //TODO: DATA TO FE
      // tool.RCSwitch_Received_Value
      // tool.RCSwitch_Received_Bitlength
      // tool.RCSwitch_Received_Protocol
      // tool.RCSwitch_RSSI
    }
  }
  else if(tool.getDriver()==ELECHOUSE_CC1101_DRIVER){
    
    if(tool.getState()!=SCAN_STATE && tool.getState()!=RX_STATE ){
      tool.ELECHOUSE_CC1101_SetRX();
    }
    
    if(tool.ELECHOUSE_CC1101_DRIVER_CheckReceiveFlag()){
      tool.ELECHOUSE_CC1101_DRIVER_RX();
      //TODO: DATA TO FE 
      // tool.ccreceivingbuffer
      // tool.textbuffer
    }
  }
}
void handle_Scan_State(){
  float start_Frequency;
  float increasement;
  tool.getRSSIcc1101(start_Frequency, increasement);
  //TODO: DATA TO FE
  // tool.RSSIScanData[i];
}
void embedded_app(){

    switch(tool.getState()){
    case IDLE_STATE:

    break;
    case TX_STATE:
      // char* send_buffer;
      //  char* send_buffer = "A123";
      // tool.ELECHOUSE_CC1101_DRIVER_TX(send_buffer);

    break;
    case RX_STATE:
      handle_RX_State();

    break;
    case SCAN_STATE:
      handle_Scan_State();
    break;
    case JAMMING_STATE:
      tool.signalJamming();
    break;
    default:
    break;
  }
}
void loop() {
  embedded_app();
}