void displayInfo() { Switch_t *swtch; unsigned int i, count, lines; SENSORS_PER_LINE = RIGHT_HALF / 10; lines = SENSORS_PER_LINE; lines = (TRAIN_SWITCH_COUNT / lines) + (TRAIN_SWITCH_COUNT % lines); count = TRAIN_SWITCH_COUNT; kdebug("Debugging Enabled...\r\nNumber of Debug Lines: %d", lines); kprintf("====Switches===" MOVE_TO_COL CHANGE_COLOR "Train Calibration:" CHANGE_COLOR "\r\n" MOVE_TO_COL "| Train | Velocity | Landmark | Distance (mm) | Next Landmark | ETA (ticks) | ATA (ticks) | Resv | " MOVE_TO_COL, RIGHT_HALF + 5, YELLOW, 0, RIGHT_HALF + 5, 0); while (count > 0) { for (i = 0; i < MIN(count, SENSORS_PER_LINE); ++i) { if (count <= 4) { swtch = getSwitch(MULTI_SWITCH_OFFSET + (TRAIN_SWITCH_COUNT - count + i + 1)); } else { swtch = getSwitch(TRAIN_SWITCH_COUNT - count + i + 1); if (swtch->id < 10) { kputstr("00"); } else if (swtch->id < 100) { kputstr("0"); } } kprintf("%d: %c ", swtch->id, SWITCH_CHAR(swtch->state)); } count -= MIN(SENSORS_PER_LINE, count); kputstr(NEW_LINE); } kputstr("\r\n====Sensors====\r\n\r\n\r\n"); kprintf(SAVE_CURSOR SET_SCROLL RESTORE_CURSOR, TERM_OFFSET + lines + 4, TERMINAL_HEIGHT); TERM_BOTTOM = TERM_OFFSET + lines + 4; }
void kputnbr(int n) { char buff[21]; int i; i = 0; if (n < 0) { n = -n; buff[i++] = '-'; } do { buff[i] = n % 10 + '0'; n = n / 10; i++; } while (n != 0); buff[i] = 0; if (buff[0] == '-') krevstr(buff + 1); else krevstr(buff); kputstr(buff); }
void initDebug() { initCalibration(); kprintf(HIDE_CURSOR ERASE_SCREEN CHANGE_COLOR, 0); kprintf(SET_COLS_132 "\033[7;%dh", TERMINAL_WIDTH); #if DEBUG unsigned int i; kprintf(MOVE_CURSOR, BOTTOM_HALF, 0); /* print seperator for debug/command halves */ for (i = 0; i < TERMINAL_WIDTH; ++i) { kputstr("="); } kprintf(MOVE_CURSOR, TOP_HALF, 0); kprintf(SET_SCROLL, BOTTOM_HALF + 1, TERMINAL_HEIGHT); kprintf(MOVE_CURSOR, BOTTOM_HALF + 1, 0); TERM_OFFSET = BOTTOM_HALF; #else TERM_OFFSET = TOP_HALF; kprintf(MOVE_CURSOR, TOP_HALF, 0); #endif kputstr("\033[37mCS452 Real-Time Microkernel (Version 0.2.0) \n" "Copyright <c> Max Chen (mqchen), Ford Peprah (hkpeprah). All rights reserved.\033[0m \n" "\033[32mTime: \033[35mCPU Idle:\033[0m\r\n\r\n"); TERM_OFFSET += 5; }
int kputoct(WORD w) { char buff[7]; itoo(w, buff); return kputstr(buff,6); }