nshell/src/main.c

99 lines
3.4 KiB
C

#include <gint/display.h>
#include <gint/gint.h>
#include <gint/keyboard.h>
#include <gint/timer.h>
#include "battery.h"
#include "term.h"
#include "ui.h"
#include <stdio.h>
static char *LOREM_IPSUM =
"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\nNam vitae purus dolor.\nPraesent in ex tempus, auctor velit at, "
"vulputate sapien.\nAenean semper, dui vitae iaculis mattis, odio libero aliquet elit, nec tempor nisl turpis vel arcu.\n"
"Vestibulum eleifend maximus enim at sollicitudin.\nNulla eu commodo justo.\nUt vitae pellentesque erat.\nDuis magna nisl, "
"eleifend ac massa at, blandit sollicitudin ipsum.\nIntegint_world_swrdum et malesuada fames ac ante ipsum primis in "
"faucibus.\n"
"Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.\nUt at libero in turpis porttitor "
"viverra.\nUt eu pellentesque purus.\nVestibulum aliquet facilisis ante, eget volutpat metus.\nCras semper lacus ac mauris "
"imperdiet, vel egestas est luctus.\nAliquam elit enim, dignissim nec enim vel, consequat ullamcorper libero.\nPellentesque "
"at "
"iaculis lctus.\nPraesent sed velit at tellus hendrerit mattis eu nec velit.\nPhasellus eu quam nec nisi mattis elementum "
"quis "
"nec enim.\nNulla efficitur turpis id tempus ultricies.\nPellentesque semper lacinia mi vitae feugiat.\nVestibulum leo nisi, "
"pretium quis felis non, mattis varius risus.\n"
"Suspendisse porttitor purus lacinia ante euismod, ut eleifend massa fermentum.\nProin pretium elementum massa, at efficitur "
"risus iaculis sed.";
static volatile int key_poll_timeout;
static int callback_keypoll(void) {
key_poll_timeout = 0;
return TIMER_STOP;
}
int main(void) {
int tick_ctr = 0;
int shift_state = 0;
int alpha_state = 0;
int off_state = 0;
set_statusbar(tick_ctr, shift_state, alpha_state, get_battery_voltage());
set_menubar();
tgrid_display();
while (1) {
const int timer = timer_configure(TIMER_ANY, 20000, GINT_CALL(callback_keypoll));
key_poll_timeout = 1;
key_event_t kev = getkey_opt(GETKEY_NONE, &key_poll_timeout);
timer_start(timer);
if (kev.type == KEYEV_DOWN) {
if (off_state) {
if (kev.key == KEY_ACON) {
off_state = 0;
} else {
continue;
}
}
if (kev.key == KEY_SHIFT)
shift_state = !shift_state;
if (kev.key == KEY_ALPHA)
alpha_state = !alpha_state;
if (kev.key == KEY_ACON && shift_state) {
off_state = 1;
dclear(C_BLACK);
dupdate();
shift_state = 0;
alpha_state = 0;
continue;
}
if (kev.key == KEY_MENU && !shift_state && !alpha_state) {
// TODO: print pause menu
gint_osmenu();
}
term_scroll_down();
char buf[128];
sprintf(buf, "tick_ctr=%d key=0x%x mod=%d shift=%d alpha=%d\n", tick_ctr, kev.key, kev.mod, kev.shift, kev.alpha);
tgrid_sets(UNS_TERM_ROWS - 2, 0, C_WHITE, C_BLACK, buf);
set_statusbar(tick_ctr, shift_state, alpha_state, get_battery_voltage());
set_menubar();
tgrid_display();
tick_ctr++;
}
}
return 1;
}