#include "user/MainMenu.h" #include "user/demo/ArrayDemo.h" #include "user/demo/BlueScreenDemo.h" #include "user/demo/HeapDemo.h" #include "user/demo/KeyboardDemo.h" #include "user/demo/PCSPKdemo.h" #include "user/demo/PreemptiveThreadDemo.h" #include "user/demo/SmartPointerDemo.h" #include "user/demo/StringDemo.h" #include "user/demo/TextDemo.h" #include "user/demo/VBEdemo.h" #include "user/demo/VectorDemo.h" void print_demo_menu() { kout.lock(); kout.clear(); kout << "Demo Menu, press number to start, k/K to kill:\n" << "1 - Text Demo\n" << "2 - PCSPK Demo\n" << "3 - Keyboard Demo\n" << "4 - Heap Demo\n" << "5 - VBE Demo\n" << "6 - Bluescreen Demo\n" << "7 - Preemption Demo\n" << endl; kout.unlock(); } void MainMenu::run() { print_demo_menu(); char input = '\0'; unsigned int running_demo = 0; while (running) { input = this->listener.waitForKeyEvent(); if ((input >= '0' && input <= '9') || input == '!') { switch (input) { case '1': running_demo = scheduler.ready(); break; case '2': running_demo = scheduler.ready(&PCSPK::aerodynamic); break; case '3': running_demo = scheduler.ready(); break; case '4': running_demo = scheduler.ready(); break; case '5': running_demo = scheduler.ready(); break; case '6': running_demo = scheduler.ready(); break; case '7': running_demo = scheduler.ready(3); break; case '8': running_demo = scheduler.ready(); break; case '9': running_demo = scheduler.ready(); break; case '0': running_demo = scheduler.ready(); break; case '!': running_demo = scheduler.ready(); break; } } else if (input == 'k') { scheduler.nice_kill(running_demo); // NOTE: If thread exits itself this will throw error print_demo_menu(); } else if (input == 'K') { scheduler.kill(running_demo); print_demo_menu(); } } scheduler.exit(); // This thread won't be deleted... }