remove all PS3 things and begin with ControllPad

This commit is contained in:
2023-03-30 22:20:28 +02:00
parent e4cdc5f98d
commit 33fe6916ed
16 changed files with 182 additions and 150 deletions
+7 -105
View File
@@ -17,13 +17,9 @@
#include "config.h"
#include <Ps3Controller.h>
#include <iostream>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP32Ping.h>
#include <BluetoothSerial.h>
#include <esp_bt_main.h>
#include "driveModi/driveManager.h"
#include "OutputBuf/outputBuf.h"
@@ -33,6 +29,7 @@
#include "debugMqtt.h"
#include "battery.h"
#include "debugTimes.h"
#include "controllPad.h"
#include "menu.h"
#include "menuAction.h"
@@ -53,21 +50,13 @@ LcdWrapper* lcdWrapper;
OutputBuf* outputBuf;
DebugMqtt* debugMqtt = nullptr;
Battery* mainBattery;
Ps3Controller* gamepad;
BluetoothSerial SerialBT;
ControllPad* controllPad;
bool wifiIsActive;
bool disconnectPs3 = false;
void configureController(void);
void callbackControllerAction(void);
void callbackControllerConnect(void);
void callbackControllerDisconnect(void);
void i2cScanner(void);
void makeMenu(void);
void restart(void);
void disconnectController(void);
void setup() {
@@ -77,6 +66,8 @@ void setup() {
char wifiIndicator = 'X';
mainBattery = new Battery(35, 692000, 218500);
controllPad = new ControllPad();
controllPad->setMenuControll(main_m);
Wire.begin(21, 19);
Wire.setClock(400000);
@@ -90,14 +81,6 @@ void setup() {
Network::setupMQTT();
wifiIsActive = Network::connectWifi();
if (wifiIsActive) {
// const char* remoteHost = "www.google.com";
// std::cout << "Pinging host: " << remoteHost << std::endl;
// if (Ping.ping(remoteHost))
// std::cout << "Ping successful..." << std::endl;
// else
// std::cout << "Ping failed. :/" << std::endl;
if (Network::checkMQTT()) {
DebugMqtt::init(Network::getMqttClient(), Loglevel::debug);
std::cout << "Activate additional output via MQTT..." << std::endl;
@@ -114,9 +97,7 @@ void setup() {
std::cout << "Welcome to Kleiax-Rover" << std::endl;
std::cout << "All actions from the main program run on Core -> " << xPortGetCoreID() << std::endl;
gamepad = new Ps3Controller;
driveManager = new DriveManager(&moveController, gamepad, wifiIsActive);
configureController();
driveManager = new DriveManager(&moveController, controllPad->getControllPadDataPtr(), wifiIsActive);
outputBuf->activateMqtt(false);
@@ -139,6 +120,7 @@ void loop() {
wifiTime.stopConsol("WiFi-Time", 10);
}
driveManager->loop();
controllPad->loop();
lcdWrapper->loop();
mainBattery->loop();
@@ -156,75 +138,6 @@ void loop() {
while (true);
}
if (disconnectPs3) {
DebugTimes disconnectPS3Time;
std::cout << "Disconnect PS3 Controller." << std::endl;
gamepad->end();
esp_bluedroid_disable();
esp_bluedroid_deinit();
configureController();
disconnectPs3 = false;
disconnectPS3Time.stopConsol("Ps3 Disconnect");
}
}
void configureController() {
gamepad->attach(callbackControllerAction);
gamepad->attachOnConnect(callbackControllerConnect);
gamepad->attachOnDisconnect(callbackControllerDisconnect);
std::cout << "\nReady to connect a PS3 Controller... \n";
gamepad->begin(CONTROLLER_MAC);
}
void callbackControllerAction() {
auto isDelayReached = [](bool reset = false) -> bool {
static uint32_t lastMillis = 0;
if (reset)
lastMillis = millis();
static const uint16_t delay = 100;
bool res = false;
if (millis() - lastMillis > delay)
res = true;
return res;
};
// Menu controlling
if (isDelayReached()) {
if (gamepad->data.button.up)
main_m->up();
else if (gamepad->data.button.down)
main_m->down();
else if (gamepad->data.button.left)
main_m->left();
else if (gamepad->data.button.right)
main_m->right();
else if (gamepad->data.button.circle)
main_m->yes();
else if (gamepad->data.button.cross)
main_m->no();
else if (gamepad->data.button.select)
std::cout << "main.cpp callbackControllerAction - Here we are!" << std::endl;
isDelayReached(true);
}
// This have to be stand here because it have to be run on the other Core
main_m->update();
}
void callbackControllerConnect() {
std::cout << "Controller connected to ESP32" << std::endl;
std::cout << "All actions from the Controller run on Core -> " << xPortGetCoreID() << std::endl;
main_m->printMenu();
}
void callbackControllerDisconnect() {
std::cout << "Controller disconnected..." << std::endl;
// gamepad->end();
}
void i2cScanner() {
@@ -274,7 +187,7 @@ void makeMenu() {
MenuAutopilot* auto_m = new MenuAutopilot(driveManager);
MenuTestMode* testM_m = new MenuTestMode(driveManager);
MenuGPS* gps_m = new MenuGPS(driveManager);
MenuSysteminformation* sys_m = new MenuSysteminformation(mainBattery, gamepad);
MenuSysteminformation* sys_m = new MenuSysteminformation(mainBattery);
MenuRoute* rout_m = new MenuRoute(driveManager->getNavigation()->getRoute());
// Set Menus on LCD
@@ -297,7 +210,6 @@ void makeMenu() {
MenuAction* gps_e = new MenuAction("GPS", gps_m);
MenuAction* pid_e = new MenuAction("PID", pid_m);
MenuAction* restart_e = new MenuAction("Restart", restart);
MenuAction* contr_e = new MenuAction("Remove PS3", disconnectController);
MenuAction* sys_e = new MenuAction("Systeminfo", sys_m);
MenuAction* rout_e = new MenuAction("Route", rout_m);
main_m->addEntry(mode_e);
@@ -305,7 +217,6 @@ void makeMenu() {
main_m->addEntry(rout_e);
main_m->addEntry(pid_e);
main_m->addEntry(sys_e);
main_m->addEntry(contr_e);
main_m->addEntry(restart_e);
// Entry for the mode Menu
@@ -344,12 +255,3 @@ void restart(void) {
lcdWrapper->print("Rebooting ...");
ESP.restart();
}
void disconnectController(void) {
disconnectPs3 = true;
lcdWrapper->clear();
lcdWrapper->setCursor(0, 0);
lcdWrapper->print("Controller is");
lcdWrapper->setCursor(0, 1);
lcdWrapper->print("disconnected.");
}