implement first real menu
This commit is contained in:
@ -8,20 +8,69 @@
|
|||||||
#include "user/demo/TextDemo.h"
|
#include "user/demo/TextDemo.h"
|
||||||
#include "user/demo/VBEdemo.h"
|
#include "user/demo/VBEdemo.h"
|
||||||
|
|
||||||
void MainMenu::run() {
|
void print_demo_menu() {
|
||||||
kout << "Main Menu" << endl;
|
kout << "Demo Menu, press number to start, 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;
|
||||||
|
}
|
||||||
|
|
||||||
// Demos
|
void MainMenu::run() {
|
||||||
// scheduler.ready(new TextDemo());
|
kout.clear();
|
||||||
// scheduler.ready(new PCSPKdemo(&PCSPK::aerodynamic));
|
print_demo_menu();
|
||||||
// scheduler.ready(new KeyboardDemo());
|
|
||||||
// scheduler.ready(new HeapDemo());
|
char input = '\0';
|
||||||
// scheduler.ready(new VBEdemo());
|
Thread* choosen_demo = NULL;
|
||||||
// scheduler.ready(new BlueScreenDemo());
|
while (true) {
|
||||||
scheduler.ready(new PreemptiveThreadDemo(3));
|
|
||||||
|
input = this->listener.waitForKeyEvent();
|
||||||
|
|
||||||
|
switch (input) {
|
||||||
|
case '1':
|
||||||
|
choosen_demo = new TextDemo();
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
choosen_demo = new PCSPKdemo(&PCSPK::aerodynamic);
|
||||||
|
break;
|
||||||
|
case '3':
|
||||||
|
choosen_demo = new KeyboardDemo();
|
||||||
|
break;
|
||||||
|
case '4':
|
||||||
|
choosen_demo = new HeapDemo();
|
||||||
|
break;
|
||||||
|
case '5':
|
||||||
|
choosen_demo = new VBEdemo();
|
||||||
|
break;
|
||||||
|
case '6':
|
||||||
|
choosen_demo = new BlueScreenDemo();
|
||||||
|
break;
|
||||||
|
case '7':
|
||||||
|
choosen_demo = new PreemptiveThreadDemo(3);
|
||||||
|
break;
|
||||||
|
case 'k':
|
||||||
|
if (choosen_demo != NULL) {
|
||||||
|
scheduler.kill(choosen_demo);
|
||||||
|
delete choosen_demo;
|
||||||
|
choosen_demo = NULL;
|
||||||
|
}
|
||||||
|
kout.clear();
|
||||||
|
print_demo_menu();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (choosen_demo != NULL) {
|
||||||
|
scheduler.ready(choosen_demo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Extra demos
|
// Extra demos
|
||||||
// scheduler.ready(new ArrayListDemo());
|
// scheduler.ready(new ArrayListDemo());
|
||||||
|
|
||||||
scheduler.exit();
|
scheduler.exit();
|
||||||
|
// This thread won't be deleted...
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user