Debugger::Debugger() { setObjectName("debugger"); setWindowTitle("Debugger"); setGeometryString(&config().geometry.debugger); application.windowList.append(this); layout = new QHBoxLayout; layout->setMargin(Style::WindowMargin); layout->setSpacing(Style::WidgetSpacing); setLayout(layout); menu = new QMenuBar; layout->setMenuBar(menu); menu_tools = menu->addMenu("Tools"); menu_tools_disassembler = menu_tools->addAction("Disassembler ..."); menu_tools_breakpoint = menu_tools->addAction("Breakpoint Editor ..."); menu_tools_memory = menu_tools->addAction("Memory Editor ..."); menu_tools_propertiesViewer = menu_tools->addAction("Properties Viewer ..."); menu_ppu = menu->addMenu("S-PPU"); menu_ppu_vramViewer = menu_ppu->addAction("Video RAM Viewer ..."); menu_ppu_oamViewer = menu_ppu->addAction("Sprite Viewer ..."); menu_ppu_cgramViewer = menu_ppu->addAction("Palette Viewer ..."); menu_misc = menu->addMenu("Misc"); menu_misc_clear = menu_misc->addAction("Clear Console"); menu_misc_options = menu_misc->addAction("Options ..."); console = new QTextEdit; console->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); console->setReadOnly(true); console->setFont(QFont(Style::Monospace)); console->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); console->setMinimumWidth((92 + 4) * console->fontMetrics().width(' ')); console->setMinimumHeight((25 + 1) * console->fontMetrics().height()); layout->addWidget(console); controlLayout = new QVBoxLayout; controlLayout->setSpacing(0); layout->addLayout(controlLayout); commandLayout = new QHBoxLayout; controlLayout->addLayout(commandLayout); // TODO: icons/hotkeys instead of text runBreak = new QToolButton; runBreak->setText("Brk"); commandLayout->addWidget(runBreak); commandLayout->addSpacing(Style::WidgetSpacing); stepInstruction = new QToolButton; stepInstruction->setText("Step"); commandLayout->addWidget(stepInstruction); stepOver = new QToolButton; stepOver->setText("Over"); commandLayout->addWidget(stepOver); stepOut = new QToolButton; stepOut->setText("Out"); commandLayout->addWidget(stepOut); controlLayout->addSpacing(Style::WidgetSpacing); stepCPU = new QCheckBox("Step S-CPU"); stepCPU->setChecked(true); controlLayout->addWidget(stepCPU); stepSMP = new QCheckBox("Step S-SMP"); controlLayout->addWidget(stepSMP); stepSA1 = new QCheckBox("Step SA-1"); controlLayout->addWidget(stepSA1); stepSFX = new QCheckBox("Step SuperFX"); controlLayout->addWidget(stepSFX); controlLayout->addSpacing(Style::WidgetSpacing); traceCPU = new QCheckBox("Trace S-CPU opcodes"); controlLayout->addWidget(traceCPU); traceSMP = new QCheckBox("Trace S-SMP opcodes"); controlLayout->addWidget(traceSMP); traceSA1 = new QCheckBox("Trace SA-1 opcodes"); controlLayout->addWidget(traceSA1); traceSFX = new QCheckBox("Trace SuperFX opcodes"); controlLayout->addWidget(traceSFX); traceMask = new QCheckBox("Enable trace mask"); controlLayout->addWidget(traceMask); spacer = new QWidget; spacer->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding); controlLayout->addWidget(spacer); tracer = new Tracer; disassembler = new Disassembler; breakpointEditor = new BreakpointEditor; memoryEditor = new MemoryEditor; propertiesViewer = new PropertiesViewer; vramViewer = new VramViewer; oamViewer = new OamViewer; cgramViewer = new CgramViewer; debuggerOptions = new DebuggerOptions; connect(menu_tools_disassembler, SIGNAL(triggered()), disassembler, SLOT(show())); connect(menu_tools_breakpoint, SIGNAL(triggered()), breakpointEditor, SLOT(show())); connect(menu_tools_memory, SIGNAL(triggered()), memoryEditor, SLOT(show())); connect(menu_tools_propertiesViewer, SIGNAL(triggered()), propertiesViewer, SLOT(show())); connect(menu_ppu_vramViewer, SIGNAL(triggered()), vramViewer, SLOT(show())); connect(menu_ppu_oamViewer, SIGNAL(triggered()), oamViewer, SLOT(show())); connect(menu_ppu_cgramViewer, SIGNAL(triggered()), cgramViewer, SLOT(show())); connect(menu_misc_clear, SIGNAL(triggered()), this, SLOT(clear())); connect(menu_misc_options, SIGNAL(triggered()), debuggerOptions, SLOT(show())); connect(runBreak, SIGNAL(released()), this, SLOT(toggleRunStatus())); connect(stepInstruction, SIGNAL(released()), this, SLOT(stepAction())); connect(stepOver, SIGNAL(released()), this, SLOT(stepOverAction())); connect(stepOut, SIGNAL(released()), this, SLOT(stepOutAction())); connect(stepCPU, SIGNAL(released()), this, SLOT(synchronize())); connect(stepSMP, SIGNAL(released()), this, SLOT(synchronize())); connect(stepSA1, SIGNAL(released()), this, SLOT(synchronize())); connect(stepSFX, SIGNAL(released()), this, SLOT(synchronize())); connect(traceCPU, SIGNAL(stateChanged(int)), tracer, SLOT(setCpuTraceState(int))); connect(traceSMP, SIGNAL(stateChanged(int)), tracer, SLOT(setSmpTraceState(int))); connect(traceSA1, SIGNAL(stateChanged(int)), tracer, SLOT(setSa1TraceState(int))); connect(traceSFX, SIGNAL(stateChanged(int)), tracer, SLOT(setSfxTraceState(int))); connect(traceMask, SIGNAL(stateChanged(int)), tracer, SLOT(setTraceMaskState(int))); frameCounter = 0; synchronize(); resize(855, 425); }
int main(void) { //RTOS initialization halInit(); chSysInit(); palSetPad(GPIOG, GPIOG_LED4_RED); //modules and peripherals initialization dcmInit(); pcm9685Init(); max11628Init(); max7317Init(); lcdInit(); fieldInit(); posInit(position_computed_hook); trajectoryInit(); asservInit(); mecaInit(); //stepInit(); //usirInit(); pathfinderInit(); //gyroInit(); stratInit(); lcdPrintln(LCD_WARNING, "Start: robot principal"); while(0) { while((max7317Read() & (1 << IO_SWITCH_BACK_LEFT))) { chThdSleepMilliseconds(100); } lcdPrintln(LCD_INFO, "Click !"); stepAction(STEP_ACTION_TAKE_RIGHT); stepWait(); lcdPrintln(LCD_INFO, "Done !"); while(!(max7317Read() & (1 << IO_SWITCH_BACK_LEFT))) { chThdSleepMilliseconds(100); } } lcdPrintln(LCD_INFO, "Attente tirette (mise en place)"); while(!(max7317Read() & (1 << IO_SWITCH_STARTUP))) { chThdSleepMilliseconds(100); } lcdPrintln(LCD_INFO, "Attente du depart"); while(max7317Read() & (1 << IO_SWITCH_STARTUP)) { chThdSleepMilliseconds(100); } stratStart(); //chThdSleepMilliseconds(3000); // dcmSetWidth(0, 500); // dcmSetWidth(1, -500); //while (true) //{ // lcdPrintln(LCD_INFO,"l %ld, r %ld", posGetLeftTick(), posGetRightTick()); // chThdSleepMilliseconds(500); //} //int i = 0; //int d = 400; //while (true) //{ // lcdPrintln(LCD_INFO, "tour: %d", i); // i += 1; // TRAJECTORY_XY_MM(d, 0); // TRAJECTORY_XY_MM(d, d); // TRAJECTORY_XY_MM(0, d); // TRAJECTORY_XY_MM(0, 0); // trajectoryWait(); //} while(true) { chThdSleepMilliseconds(3000); } }