Skip to content

Commit

Permalink
code cleaning
Browse files Browse the repository at this point in the history
  • Loading branch information
saleemhamo committed Mar 29, 2024
1 parent 7d58313 commit 905cdc3
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 57 deletions.
8 changes: 3 additions & 5 deletions include/main/MainSystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ class MainSystem {

std::atomic<bool> isTrafficLightRunningInNormalBehaviour;


void onCarsMotionDetected();

void onPedestriansMotionDetected();
Expand All @@ -60,13 +59,12 @@ class MainSystem {

void runTrafficLightsNormalBehaviour();

void turnCarsGreen();
void turnCarsTrafficLightGreen();

void turnPedestriansGreen();
void turnPedestriansTrafficLightGreen();

void turnAllRed();
void turnAllTrafficLightsRed();

// void resetTrafficLightTimer();
};

#endif // MAINSYSTEM_H
23 changes: 10 additions & 13 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,33 @@
#include "utils/Logger.h"
#include <iostream>
#include <string>
#include <chrono> // For std::chrono
#include <thread> // For std::this_thread

void init();
void initApplication();

// void close();
void closeApplication(MainSystem &mainSystem);

int main() {
init();
initApplication();

MainSystem mainSystem;
mainSystem.initialize();
mainSystem.runSystems();

// close();
closeApplication(mainSystem);
return 0;
}


void init() {
void initApplication() {
try {
Logger::init("app.log"); // Adjust the file name as needed
// Logger::logInfo("Application starting");
// The rest of your program
Logger::logInfo("Application starting");
} catch (const std::exception &e) {
std::cerr << "Failed to initialize logger: " << e.what() << std::endl;
}
}

// void close(MainSystem mainSystem) {
// mainSystem.shutdown();
// Logger::close();
// }
void closeApplication(MainSystem &mainSystem) {
mainSystem.shutdown();
Logger::close();
}
59 changes: 20 additions & 39 deletions src/main/MainSystem.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "main/MainSystem.h"
#include "utils/Logger.h"

MainSystem::MainSystem() : trafficLightState(OFF) {}

Expand Down Expand Up @@ -37,6 +38,7 @@ void MainSystem::shutdown() {
}

void MainSystem::onCarsMotionDetected() {
Logger::logInfo("Cars motion detected");
std::cout << "Cars motion detected" << std::endl;
if (trafficLightState != CARS_RED_PEDESTRIANS_GREEN) {
return; // Do Nothing
Expand All @@ -45,7 +47,7 @@ void MainSystem::onCarsMotionDetected() {
// State is CARS_RED_PEDESTRIANS_GREEN
checkingSystem.disableSensing();
disableTrafficLightsNormalBehaviour();
turnAllRed();
turnAllTrafficLightsRed();
warningSystem.activate();

// after 5 seconds
Expand All @@ -58,6 +60,7 @@ void MainSystem::onCarsMotionDetected() {
}

void MainSystem::onPedestriansMotionDetected() {
Logger::logInfo("Pedestrians motion detected");
std::cout << "Pedestrians motion detected" << std::endl;
if (trafficLightState != CARS_GREEN_PEDESTRIANS_RED) {
return; // Do Nothing
Expand All @@ -66,7 +69,7 @@ void MainSystem::onPedestriansMotionDetected() {
// State is CARS_GREEN_PEDESTRIANS_RED
checkingSystem.disableSensing();
disableTrafficLightsNormalBehaviour();
turnAllRed();
turnAllTrafficLightsRed();
warningSystem.activate();

// after 5 seconds
Expand Down Expand Up @@ -100,64 +103,42 @@ void MainSystem::disableTrafficLightsNormalBehaviour() {
pedestriansTrafficLightTimer.stopTimer();
}

void MainSystem::turnCarsGreen() {
std::cout << "turnCarsGreen called" << std::endl;
void MainSystem::turnCarsTrafficLightGreen() {
Logger::logInfo("turnCarsTrafficLightGreen called");
if (!isTrafficLightRunningInNormalBehaviour) {
return;
}
carsTrafficLight.turnGreen();
pedestriansTrafficLight.turnRed();
trafficLightState = CARS_GREEN_PEDESTRIANS_RED;
pedestriansTrafficLightTimer.setTimeout([this] { turnPedestriansGreen(); }, 5000);
std::cout << "turnCarsGreen finished" << std::endl;
pedestriansTrafficLightTimer.setTimeout([this] { turnPedestriansTrafficLightGreen(); }, 5000);
Logger::logInfo("turnCarsTrafficLightGreen finished");

}

void MainSystem::turnPedestriansGreen() {
std::cout << "turnPedestriansGreen called" << std::endl;
void MainSystem::turnPedestriansTrafficLightGreen() {
Logger::logInfo("turnPedestriansTrafficLightGreen called");
if (!isTrafficLightRunningInNormalBehaviour) {
return;
}
carsTrafficLight.turnRed();
pedestriansTrafficLight.turnGreen();
trafficLightState = CARS_RED_PEDESTRIANS_GREEN;
carsTrafficLightTimer.setTimeout([this] { turnCarsGreen(); }, 5000);
std::cout << "turnPedestriansGreen finished" << std::endl;
carsTrafficLightTimer.setTimeout([this] { turnCarsTrafficLightGreen(); }, 5000);
Logger::logInfo("turnPedestriansTrafficLightGreen finished");


}

void MainSystem::turnAllRed() {
std::cout << "turnAllRed called" << std::endl;
void MainSystem::turnAllTrafficLightsRed() {
Logger::logInfo("turnAllTrafficLightsRed called");
carsTrafficLight.turnRed();
pedestriansTrafficLight.turnRed();
trafficLightState = OFF;
}


void MainSystem::runTrafficLightsNormalBehaviour() {
std::cout << "runTrafficLightsNormalBehaviour called" << std::endl;
turnCarsGreen();
}


// Set initial states
// States:
// - CARS_RED_PED_GREEN
// - CARS_GREEN_PED_RED

// Scenario #1 -> CARS_RED_PED_GREEN -> monitor road -> when needed, turn all red and fire alarm.
// Scenario #2 -> CARS_RED_PED_GREEN -> timeout -> change state
// Scenario #3 -> CARS_GREEN_PED_RED -> monitor ped -> when needed, turn all red and fire alarm.
// Scenario #4 -> CARS_GREEN_PED_RED -> button pressed -> monitor road and decide
// Scenario #5 -> CARS_GREEN_PED_RED -> timeout -> change state


// set traffic lights
// start detection


// runTrafficLightsNormalBehaviour
// run what to check based on state ->
// CARS_RED_PED_GREEN -> check road only
// CARS_GREEN_PED_RED -> check pedestrians

// callback from road -> Scenario #1
Logger::logInfo("runTrafficLightsNormalBehaviour called");
turnCarsTrafficLightGreen();
}

0 comments on commit 905cdc3

Please sign in to comment.