forked from len0rd/rockbox
Plugin rework 2: (most) Compile-time keyboard configuration, for Ondio adaption. (all) Now using the default event handler, standard placement is now in switch() default case. (calendar, chip8) Fixed usb handling.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5295 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
7c2496d35a
commit
79afbafa66
7 changed files with 235 additions and 91 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* plugins common to both Player+Recorder model */
|
/* plugins common to all models */
|
||||||
battery_test.c
|
battery_test.c
|
||||||
favorites.c
|
favorites.c
|
||||||
firmware_flash.c
|
firmware_flash.c
|
||||||
|
@ -11,20 +11,24 @@ stopwatch.c
|
||||||
vbrfix.c
|
vbrfix.c
|
||||||
viewer.c
|
viewer.c
|
||||||
|
|
||||||
#ifdef HAVE_LCD_BITMAP /* recorder model only */
|
#ifdef HAVE_LCD_BITMAP /* Recorder/Ondio models only */
|
||||||
|
bounce.c
|
||||||
|
calculator.c
|
||||||
|
chip8.c
|
||||||
|
cube.c
|
||||||
grayscale.c
|
grayscale.c
|
||||||
jpeg.c
|
jpeg.c
|
||||||
rockblox.c
|
rockblox.c
|
||||||
snow.c
|
snow.c
|
||||||
video.c
|
video.c
|
||||||
|
|
||||||
|
#ifdef HAVE_RTC /* Recorder models only */
|
||||||
|
calendar.c
|
||||||
|
clock.c
|
||||||
|
#endif
|
||||||
|
|
||||||
#if CONFIG_KEYPAD != ONDIO_PAD
|
#if CONFIG_KEYPAD != ONDIO_PAD
|
||||||
/* gradually bring in the ones not working yet */
|
/* gradually bring in the ones not working yet */
|
||||||
bounce.c
|
|
||||||
calculator.c
|
|
||||||
calendar.c
|
|
||||||
chip8.c
|
|
||||||
clock.c
|
|
||||||
cube.c
|
|
||||||
flipit.c
|
flipit.c
|
||||||
mandelbrot.c
|
mandelbrot.c
|
||||||
minesweeper.c
|
minesweeper.c
|
||||||
|
|
|
@ -30,6 +30,17 @@
|
||||||
#define XSPEED 3
|
#define XSPEED 3
|
||||||
#define YADD -4
|
#define YADD -4
|
||||||
|
|
||||||
|
/* variable button definitions */
|
||||||
|
#if CONFIG_KEYPAD == RECORDER_PAD
|
||||||
|
#define BOUNCE_QUIT (BUTTON_OFF | BUTTON_REL)
|
||||||
|
#define BOUNCE_MODE (BUTTON_ON | BUTTON_REL)
|
||||||
|
|
||||||
|
#elif CONFIG_KEYPAD == ONDIO_PAD
|
||||||
|
#define BOUNCE_QUIT (BUTTON_OFF | BUTTON_REL)
|
||||||
|
#define BOUNCE_MODE (BUTTON_MENU | BUTTON_REL)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct plugin_api* rb;
|
static struct plugin_api* rb;
|
||||||
|
|
||||||
static unsigned char table[]={
|
static unsigned char table[]={
|
||||||
|
@ -172,6 +183,7 @@ struct counter values[]={
|
||||||
{"ydistt", -6},
|
{"ydistt", -6},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef HAVE_RTC
|
||||||
static unsigned char yminute[]={
|
static unsigned char yminute[]={
|
||||||
53,53,52,52,51,50,49,47,46,44,42,40,38,36,34,32,29,27,25,23,21,19,17,16,14,13,12,11,11,10,10,10,11,11,12,13,14,16,17,19,21,23,25,27,29,31,34,36,38,40,42,44,46,47,49,50,51,52,52,53,
|
53,53,52,52,51,50,49,47,46,44,42,40,38,36,34,32,29,27,25,23,21,19,17,16,14,13,12,11,11,10,10,10,11,11,12,13,14,16,17,19,21,23,25,27,29,31,34,36,38,40,42,44,46,47,49,50,51,52,52,53,
|
||||||
};
|
};
|
||||||
|
@ -218,6 +230,7 @@ static void addclock(void)
|
||||||
yminute[(i+1)%60]);
|
yminute[(i+1)%60]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif /* HAVE_RTC */
|
||||||
|
|
||||||
static int scrollit(void)
|
static int scrollit(void)
|
||||||
{
|
{
|
||||||
|
@ -236,10 +249,10 @@ static int scrollit(void)
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
b = rb->button_get_w_tmo(HZ/10);
|
b = rb->button_get_w_tmo(HZ/10);
|
||||||
if ( b == (BUTTON_OFF|BUTTON_REL) )
|
if ( b == BOUNCE_QUIT )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ( b == (BUTTON_ON|BUTTON_REL) )
|
if ( b == BOUNCE_MODE )
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if ( rb->default_event_handler(b) == SYS_USB_CONNECTED )
|
if ( rb->default_event_handler(b) == SYS_USB_CONNECTED )
|
||||||
|
@ -256,7 +269,9 @@ static int scrollit(void)
|
||||||
yy += YADD;
|
yy += YADD;
|
||||||
xx+= LCD_WIDTH/LETTERS_ON_SCREEN;
|
xx+= LCD_WIDTH/LETTERS_ON_SCREEN;
|
||||||
}
|
}
|
||||||
|
#ifdef HAVE_RTC
|
||||||
addclock();
|
addclock();
|
||||||
|
#endif
|
||||||
rb->lcd_update();
|
rb->lcd_update();
|
||||||
|
|
||||||
x-= XSPEED;
|
x-= XSPEED;
|
||||||
|
@ -293,10 +308,10 @@ static int loopit(void)
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
b = rb->button_get_w_tmo(HZ/10);
|
b = rb->button_get_w_tmo(HZ/10);
|
||||||
if ( b == (BUTTON_OFF|BUTTON_REL) )
|
if ( b == BOUNCE_QUIT )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ( b == (BUTTON_ON|BUTTON_REL) )
|
if ( b == BOUNCE_MODE )
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if ( rb->default_event_handler(b) == SYS_USB_CONNECTED )
|
if ( rb->default_event_handler(b) == SYS_USB_CONNECTED )
|
||||||
|
@ -309,7 +324,9 @@ static int loopit(void)
|
||||||
x+= speed[xsanke&15] + values[NUM_XADD].num;
|
x+= speed[xsanke&15] + values[NUM_XADD].num;
|
||||||
|
|
||||||
rb->lcd_clear_display();
|
rb->lcd_clear_display();
|
||||||
|
#ifdef HAVE_RTC
|
||||||
addclock();
|
addclock();
|
||||||
|
#endif
|
||||||
if(timeout) {
|
if(timeout) {
|
||||||
switch(b) {
|
switch(b) {
|
||||||
case BUTTON_LEFT:
|
case BUTTON_LEFT:
|
||||||
|
@ -402,7 +419,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
|
|
||||||
rb->lcd_setfont(FONT_UI);
|
rb->lcd_setfont(FONT_UI);
|
||||||
|
|
||||||
return h = 0 ? PLUGIN_OK : PLUGIN_USB_CONNECTED;
|
return (h == 0) ? PLUGIN_OK : PLUGIN_USB_CONNECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -104,6 +104,22 @@ F3: equal to "="
|
||||||
#define SIGN(x) ((x)<0?-1:1)
|
#define SIGN(x) ((x)<0?-1:1)
|
||||||
#define ABS(x) ((x)<0?-(x):(x))
|
#define ABS(x) ((x)<0?-(x):(x))
|
||||||
|
|
||||||
|
/* variable button definitions */
|
||||||
|
#if CONFIG_KEYPAD == RECORDER_PAD
|
||||||
|
#define CALCULATOR_QUIT BUTTON_OFF
|
||||||
|
#define CALCULATOR_INPUT BUTTON_PLAY
|
||||||
|
#define CALCULATOR_CALC BUTTON_F3
|
||||||
|
#define CALCULATOR_OPERATORS BUTTON_F2
|
||||||
|
#define CALCULATOR_CLEAR BUTTON_F1
|
||||||
|
|
||||||
|
#elif CONFIG_KEYPAD == ONDIO_PAD
|
||||||
|
#define CALCULATOR_QUIT BUTTON_OFF
|
||||||
|
#define CALCULATOR_INPUT_CALC_PRE BUTTON_MENU
|
||||||
|
#define CALCULATOR_INPUT (BUTTON_MENU | BUTTON_REL)
|
||||||
|
#define CALCULATOR_CALC (BUTTON_MENU | BUTTON_REPEAT)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct plugin_api* rb;
|
static struct plugin_api* rb;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -187,6 +203,7 @@ int m, n, prev_m, prev_n; /* position index for button */
|
||||||
#define CAL_BUTTON (m*5+n)
|
#define CAL_BUTTON (m*5+n)
|
||||||
|
|
||||||
int btn = BUTTON_NONE;
|
int btn = BUTTON_NONE;
|
||||||
|
int lastbtn = BUTTON_NONE;
|
||||||
|
|
||||||
/* Status of calculator */
|
/* Status of calculator */
|
||||||
enum {cal_normal, /* 0, normal status, display result */
|
enum {cal_normal, /* 0, normal status, display result */
|
||||||
|
@ -1090,7 +1107,7 @@ Handle buttons on basic screen
|
||||||
----------------------------------------------------------------------- */
|
----------------------------------------------------------------------- */
|
||||||
void basicButtonsProcess(void){
|
void basicButtonsProcess(void){
|
||||||
switch (btn) {
|
switch (btn) {
|
||||||
case BUTTON_PLAY:
|
case CALCULATOR_INPUT:
|
||||||
if (calStatus == cal_error && (CAL_BUTTON != btn_C) ) break;
|
if (calStatus == cal_error && (CAL_BUTTON != btn_C) ) break;
|
||||||
flashButton(CAL_BUTTON);
|
flashButton(CAL_BUTTON);
|
||||||
switch( CAL_BUTTON ){
|
switch( CAL_BUTTON ){
|
||||||
|
@ -1143,7 +1160,9 @@ void basicButtonsProcess(void){
|
||||||
case btn_add:
|
case btn_add:
|
||||||
if(!operInputted) {twoOperands(); operInputted = true;}
|
if(!operInputted) {twoOperands(); operInputted = true;}
|
||||||
oper = buttonChar[basicButtons][m][n][0];
|
oper = buttonChar[basicButtons][m][n][0];
|
||||||
case_BUTTON_F2: /* F2 shortkey entrance */
|
#ifdef CALCULATOR_OPERATORS
|
||||||
|
case_cycle_operators: /* F2 shortkey entrance */
|
||||||
|
#endif
|
||||||
calStatus = cal_normal;
|
calStatus = cal_normal;
|
||||||
formatResult();
|
formatResult();
|
||||||
operand = result;
|
operand = result;
|
||||||
|
@ -1159,7 +1178,8 @@ void basicButtonsProcess(void){
|
||||||
} /* switch (CAL_BUTTON) */
|
} /* switch (CAL_BUTTON) */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BUTTON_F2:
|
#ifdef CALCULATOR_OPERATORS
|
||||||
|
case CALCULATOR_OPERATORS:
|
||||||
if (calStatus == cal_error) break;
|
if (calStatus == cal_error) break;
|
||||||
if (!operInputted) {twoOperands(); operInputted = true;}
|
if (!operInputted) {twoOperands(); operInputted = true;}
|
||||||
switch (oper){
|
switch (oper){
|
||||||
|
@ -1169,9 +1189,11 @@ void basicButtonsProcess(void){
|
||||||
case '-': oper = '*'; flashButton(btn_time); break;
|
case '-': oper = '*'; flashButton(btn_time); break;
|
||||||
case '*': oper = '/'; flashButton(btn_div); break;
|
case '*': oper = '/'; flashButton(btn_div); break;
|
||||||
}
|
}
|
||||||
goto case_BUTTON_F2;
|
goto case_cycle_operators;
|
||||||
break;
|
break;
|
||||||
case BUTTON_F3:
|
#endif
|
||||||
|
|
||||||
|
case CALCULATOR_CALC:
|
||||||
if (calStatus == cal_error) break;
|
if (calStatus == cal_error) break;
|
||||||
flashButton(btn_equal);
|
flashButton(btn_equal);
|
||||||
goto case_btn_equal;
|
goto case_btn_equal;
|
||||||
|
@ -1186,7 +1208,7 @@ Handle buttons on scientific screen
|
||||||
----------------------------------------------------------------------- */
|
----------------------------------------------------------------------- */
|
||||||
void sciButtonsProcess(void){
|
void sciButtonsProcess(void){
|
||||||
switch (btn) {
|
switch (btn) {
|
||||||
case BUTTON_PLAY:
|
case CALCULATOR_INPUT:
|
||||||
if (calStatus == cal_error && (CAL_BUTTON != sci_sci) ) break;
|
if (calStatus == cal_error && (CAL_BUTTON != sci_sci) ) break;
|
||||||
flashButton(CAL_BUTTON);
|
flashButton(CAL_BUTTON);
|
||||||
switch( CAL_BUTTON ){
|
switch( CAL_BUTTON ){
|
||||||
|
@ -1225,7 +1247,8 @@ void sciButtonsProcess(void){
|
||||||
} /* switch (CAL_BUTTON) */
|
} /* switch (CAL_BUTTON) */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BUTTON_F2:
|
#ifdef CALCULATOR_OPERATORS
|
||||||
|
case CALCULATOR_OPERATORS:
|
||||||
if (calStatus == cal_error) break;
|
if (calStatus == cal_error) break;
|
||||||
if (!operInputted) {twoOperands(); operInputted = true;}
|
if (!operInputted) {twoOperands(); operInputted = true;}
|
||||||
switch (oper){
|
switch (oper){
|
||||||
|
@ -1240,7 +1263,9 @@ void sciButtonsProcess(void){
|
||||||
operand = result;
|
operand = result;
|
||||||
operandPower = power;
|
operandPower = power;
|
||||||
break;
|
break;
|
||||||
case BUTTON_F3:
|
#endif
|
||||||
|
|
||||||
|
case CALCULATOR_CALC:
|
||||||
if (calStatus == cal_error) break;
|
if (calStatus == cal_error) break;
|
||||||
formatResult();
|
formatResult();
|
||||||
calStatus = cal_normal;
|
calStatus = cal_normal;
|
||||||
|
@ -1268,9 +1293,16 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
while (calStatus != cal_exit ) {
|
while (calStatus != cal_exit ) {
|
||||||
btn = rb->button_get_w_tmo(HZ/2);
|
btn = rb->button_get_w_tmo(HZ/2);
|
||||||
switch (btn) {
|
switch (btn) {
|
||||||
case BUTTON_PLAY:
|
case CALCULATOR_INPUT:
|
||||||
case BUTTON_F2:
|
case CALCULATOR_CALC:
|
||||||
case BUTTON_F3:
|
#ifdef CALCULATOR_INPUT_CALC_PRE
|
||||||
|
if (lastbtn != CALCULATOR_INPUT_CALC_PRE)
|
||||||
|
break;
|
||||||
|
/* no unconditional break; here! */
|
||||||
|
#endif
|
||||||
|
#ifdef CALCULATOR_OPERATORS
|
||||||
|
case CALCULATOR_OPERATORS:
|
||||||
|
#endif
|
||||||
switch(buttonGroup){
|
switch(buttonGroup){
|
||||||
case basicButtons:
|
case basicButtons:
|
||||||
basicButtonsProcess();
|
basicButtonsProcess();
|
||||||
|
@ -1281,7 +1313,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BUTTON_F1:
|
#ifdef CALCULATOR_CLEAR
|
||||||
|
case CALCULATOR_CLEAR:
|
||||||
switch(calStatus){
|
switch(calStatus){
|
||||||
case cal_typing:
|
case cal_typing:
|
||||||
case cal_dotted:
|
case cal_dotted:
|
||||||
|
@ -1293,6 +1326,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
}
|
}
|
||||||
printResult();
|
printResult();
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case BUTTON_LEFT:
|
case BUTTON_LEFT:
|
||||||
case BUTTON_LEFT | BUTTON_REPEAT:
|
case BUTTON_LEFT | BUTTON_REPEAT:
|
||||||
|
@ -1304,7 +1338,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
case BUTTON_DOWN | BUTTON_REPEAT:
|
case BUTTON_DOWN | BUTTON_REPEAT:
|
||||||
moveButton();
|
moveButton();
|
||||||
break;
|
break;
|
||||||
case BUTTON_OFF:
|
case CALCULATOR_QUIT:
|
||||||
calStatus = cal_exit;
|
calStatus = cal_exit;
|
||||||
printResult();
|
printResult();
|
||||||
break;
|
break;
|
||||||
|
@ -1313,6 +1347,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
return PLUGIN_USB_CONNECTED;
|
return PLUGIN_USB_CONNECTED;
|
||||||
break;
|
break;
|
||||||
} /* switch (btn) */
|
} /* switch (btn) */
|
||||||
|
if (btn != BUTTON_NONE)
|
||||||
|
lastbtn = btn;
|
||||||
} /* while (calStatus != cal_exit ) */
|
} /* while (calStatus != cal_exit ) */
|
||||||
|
|
||||||
/* rb->splash(HZ*2, true, "Hello world!"); */
|
/* rb->splash(HZ*2, true, "Hello world!"); */
|
||||||
|
|
|
@ -592,6 +592,7 @@ static bool any_events(struct shown *shown, bool force)
|
||||||
if(rb->default_event_handler(button) == SYS_USB_CONNECTED)
|
if(rb->default_event_handler(button) == SYS_USB_CONNECTED)
|
||||||
been_in_usb_mode = true;
|
been_in_usb_mode = true;
|
||||||
show_lines(lines_displayed,shown);
|
show_lines(lines_displayed,shown);
|
||||||
|
rb->lcd_update();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -707,8 +708,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BUTTON_PLAY:
|
case BUTTON_PLAY:
|
||||||
if (any_events(&shown, true))
|
any_events(&shown, true);
|
||||||
rb->usb_screen();
|
|
||||||
draw_calendar(&shown);
|
draw_calendar(&shown);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,27 @@
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
#ifndef SIMULATOR /* not unless lcd_blit() is implemented and mp3_xx stubbed */
|
#ifndef SIMULATOR /* not unless lcd_blit() is implemented and mp3_xx stubbed */
|
||||||
|
|
||||||
|
/* variable button definitions */
|
||||||
|
#if CONFIG_KEYPAD == RECORDER_PAD /* only 9 out of 16 chip8 buttons */
|
||||||
|
#define CHIP8_KEY1 BUTTON_F1
|
||||||
|
#define CHIP8_KEY2 BUTTON_UP
|
||||||
|
#define CHIP8_KEY3 BUTTON_F3
|
||||||
|
#define CHIP8_KEY4 BUTTON_LEFT
|
||||||
|
#define CHIP8_KEY5 BUTTON_PLAY
|
||||||
|
#define CHIP8_KEY6 BUTTON_RIGHT
|
||||||
|
#define CHIP8_KEY7 BUTTON_F2
|
||||||
|
#define CHIP8_KEY8 BUTTON_DOWN
|
||||||
|
#define CHIP8_KEY9 BUTTON_ON
|
||||||
|
|
||||||
|
#elif CONFIG_KEYPAD == ONDIO_PAD /* even more limited */
|
||||||
|
#define CHIP8_KEY2 BUTTON_UP
|
||||||
|
#define CHIP8_KEY4 BUTTON_LEFT
|
||||||
|
#define CHIP8_KEY5 BUTTON_MENU
|
||||||
|
#define CHIP8_KEY6 BUTTON_RIGHT
|
||||||
|
#define CHIP8_KEY8 BUTTON_DOWN
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct plugin_api* rb; /* here is a global api struct pointer */
|
static struct plugin_api* rb; /* here is a global api struct pointer */
|
||||||
unsigned char lcd_framebuf[8][64]; /* frame buffer in hardware fomat */
|
unsigned char lcd_framebuf[8][64]; /* frame buffer in hardware fomat */
|
||||||
|
|
||||||
|
@ -407,33 +428,43 @@ static void chip8_update_display(void)
|
||||||
|
|
||||||
static void chip8_keyboard(void)
|
static void chip8_keyboard(void)
|
||||||
{
|
{
|
||||||
switch (rb->button_get(false))
|
int button = rb->button_get(false);
|
||||||
|
switch (button)
|
||||||
{
|
{
|
||||||
case BUTTON_OFF: /* Abort Emulator */
|
case BUTTON_OFF: /* Abort Emulator */
|
||||||
chip8_running = false;
|
chip8_running = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BUTTON_UP: chip8_keys[2] = 1; break;
|
case CHIP8_KEY2: chip8_keys[2] = 1; break;
|
||||||
case BUTTON_UP | BUTTON_REL: chip8_keys[2] = 0; break;
|
case CHIP8_KEY2 | BUTTON_REL: chip8_keys[2] = 0; break;
|
||||||
case BUTTON_LEFT: chip8_keys[4] = 1; break;
|
case CHIP8_KEY4: chip8_keys[4] = 1; break;
|
||||||
case BUTTON_LEFT | BUTTON_REL: chip8_keys[4] = 0; break;
|
case CHIP8_KEY4 | BUTTON_REL: chip8_keys[4] = 0; break;
|
||||||
case BUTTON_RIGHT: chip8_keys[6] = 1; break;
|
case CHIP8_KEY6: chip8_keys[6] = 1; break;
|
||||||
case BUTTON_RIGHT | BUTTON_REL: chip8_keys[6] = 0; break;
|
case CHIP8_KEY6 | BUTTON_REL: chip8_keys[6] = 0; break;
|
||||||
case BUTTON_DOWN: chip8_keys[8] = 1; break;
|
case CHIP8_KEY8: chip8_keys[8] = 1; break;
|
||||||
case BUTTON_DOWN | BUTTON_REL: chip8_keys[8] = 0; break;
|
case CHIP8_KEY8 | BUTTON_REL: chip8_keys[8] = 0; break;
|
||||||
case BUTTON_PLAY: chip8_keys[5] = 1; break;
|
case CHIP8_KEY5: chip8_keys[5] = 1; break;
|
||||||
case BUTTON_PLAY | BUTTON_REL: chip8_keys[5] = 0; break;
|
case CHIP8_KEY5 | BUTTON_REL: chip8_keys[5] = 0; break;
|
||||||
case BUTTON_F1: chip8_keys[1] = 1; break;
|
#ifdef CHIP8_KEY1
|
||||||
case BUTTON_F1 | BUTTON_REL: chip8_keys[1] = 0; break;
|
case CHIP8_KEY1: chip8_keys[1] = 1; break;
|
||||||
case BUTTON_F2: chip8_keys[7] = 1; break;
|
case CHIP8_KEY1 | BUTTON_REL: chip8_keys[1] = 0; break;
|
||||||
case BUTTON_F2 | BUTTON_REL: chip8_keys[7] = 0; break;
|
#endif
|
||||||
case BUTTON_F3: chip8_keys[3] = 1; break;
|
#ifdef CHIP8_KEY3
|
||||||
case BUTTON_F3 | BUTTON_REL: chip8_keys[3] = 0; break;
|
case CHIP8_KEY3: chip8_keys[3] = 1; break;
|
||||||
case BUTTON_ON: chip8_keys[9] = 1; break;
|
case CHIP8_KEY3 | BUTTON_REL: chip8_keys[3] = 0; break;
|
||||||
case BUTTON_ON | BUTTON_REL: chip8_keys[9] = 0; break;
|
#endif
|
||||||
|
#ifdef CHIP8_KEY7
|
||||||
|
case CHIP8_KEY7: chip8_keys[7] = 1; break;
|
||||||
|
case CHIP8_KEY7 | BUTTON_REL: chip8_keys[7] = 0; break;
|
||||||
|
#endif
|
||||||
|
#ifdef CHIP8_KEY9
|
||||||
|
case CHIP8_KEY9: chip8_keys[9] = 1; break;
|
||||||
|
case CHIP8_KEY9 | BUTTON_REL: chip8_keys[9] = 0; break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case SYS_USB_CONNECTED:
|
default:
|
||||||
chip8_running = false;
|
if (rb->default_event_handler(button) == SYS_USB_CONNECTED)
|
||||||
|
chip8_running = 2; /* indicates stopped because of USB */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -556,7 +587,7 @@ bool chip8_run(char* file)
|
||||||
}
|
}
|
||||||
|
|
||||||
chip8_reset();
|
chip8_reset();
|
||||||
while (chip8_running) chip8_execute();
|
while (chip8_running == 1) chip8_execute();
|
||||||
|
|
||||||
if (!is_playing)
|
if (!is_playing)
|
||||||
{ /* stop it if we used audio */
|
{ /* stop it if we used audio */
|
||||||
|
@ -592,7 +623,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* now go ahead and have fun! */
|
/* now go ahead and have fun! */
|
||||||
return chip8_run(filename) ? PLUGIN_OK : PLUGIN_ERROR;
|
if (chip8_run(filename))
|
||||||
|
if (chip8_running == 0)
|
||||||
|
return PLUGIN_OK;
|
||||||
|
else
|
||||||
|
return PLUGIN_USB_CONNECTED;
|
||||||
|
else
|
||||||
|
return PLUGIN_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* #ifndef SIMULATOR */
|
#endif /* #ifndef SIMULATOR */
|
||||||
|
|
|
@ -1276,11 +1276,27 @@ bool show_credits(void)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* Cleanup on plugin return
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
void cleanup(void *parameter)
|
||||||
|
{
|
||||||
|
(void)parameter; /* unused */
|
||||||
|
|
||||||
|
if(settings.save_mode == 1)
|
||||||
|
save_settings(true);
|
||||||
|
|
||||||
|
/* restore set backlight timeout */
|
||||||
|
rb->backlight_set_timeout(rb->global_settings->backlight_timeout);
|
||||||
|
}
|
||||||
|
|
||||||
/******************
|
/******************
|
||||||
* F1 Screen - HELP
|
* F1 Screen - HELP
|
||||||
*****************/
|
*****************/
|
||||||
bool f1_screen(void)
|
bool f1_screen(void)
|
||||||
{
|
{
|
||||||
|
int button;
|
||||||
int screen = 1;
|
int screen = 1;
|
||||||
done = false;
|
done = false;
|
||||||
|
|
||||||
|
@ -1401,7 +1417,8 @@ bool f1_screen(void)
|
||||||
|
|
||||||
rb->lcd_update();
|
rb->lcd_update();
|
||||||
|
|
||||||
switch(rb->button_get_w_tmo(HZ/4))
|
button = rb->button_get_w_tmo(HZ/4);
|
||||||
|
switch(button)
|
||||||
{
|
{
|
||||||
case BUTTON_F1: /* exit */
|
case BUTTON_F1: /* exit */
|
||||||
case BUTTON_OFF:
|
case BUTTON_OFF:
|
||||||
|
@ -1418,9 +1435,10 @@ bool f1_screen(void)
|
||||||
screen++;
|
screen++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SYS_USB_CONNECTED: /* leave for usb */
|
default:
|
||||||
|
if(rb->default_event_handler_ex(button, cleanup, NULL)
|
||||||
|
== SYS_USB_CONNECTED)
|
||||||
return PLUGIN_USB_CONNECTED;
|
return PLUGIN_USB_CONNECTED;
|
||||||
rb->usb_screen();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2546,6 +2564,8 @@ void counter_options(void)
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
{
|
{
|
||||||
|
int button;
|
||||||
|
|
||||||
/* time ints */
|
/* time ints */
|
||||||
int i;
|
int i;
|
||||||
int hour;
|
int hour;
|
||||||
|
@ -2802,16 +2822,11 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
/*************************
|
/*************************
|
||||||
* Scan for button presses
|
* Scan for button presses
|
||||||
************************/
|
************************/
|
||||||
switch (rb->button_get_w_tmo(HZ/10))
|
button = rb->button_get_w_tmo(HZ/10);
|
||||||
|
switch (button)
|
||||||
{
|
{
|
||||||
case BUTTON_OFF: /* save and exit */
|
case BUTTON_OFF: /* save and exit */
|
||||||
if(settings.save_mode == 1)
|
cleanup(NULL);
|
||||||
save_settings(true);
|
|
||||||
|
|
||||||
/* restore set backlight timeout */
|
|
||||||
rb->backlight_set_timeout(
|
|
||||||
rb->global_settings->backlight_timeout);
|
|
||||||
|
|
||||||
return PLUGIN_OK;
|
return PLUGIN_OK;
|
||||||
|
|
||||||
case BUTTON_ON | BUTTON_REL: /* credit roll */
|
case BUTTON_ON | BUTTON_REL: /* credit roll */
|
||||||
|
@ -2889,8 +2904,9 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
select_mode();
|
select_mode();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SYS_USB_CONNECTED: /* usb plugged? */
|
default:
|
||||||
rb->usb_screen();
|
if(rb->default_event_handler_ex(button, cleanup, NULL)
|
||||||
|
== SYS_USB_CONNECTED)
|
||||||
return PLUGIN_USB_CONNECTED;
|
return PLUGIN_USB_CONNECTED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,30 @@
|
||||||
/* Loops that the values are displayed */
|
/* Loops that the values are displayed */
|
||||||
#define DISP_TIME 30
|
#define DISP_TIME 30
|
||||||
|
|
||||||
|
/* variable button definitions */
|
||||||
|
#if CONFIG_KEYPAD == RECORDER_PAD
|
||||||
|
#define CUBE_QUIT (BUTTON_OFF | BUTTON_REL)
|
||||||
|
#define CUBE_X_INC BUTTON_RIGHT
|
||||||
|
#define CUBE_X_DEC BUTTON_LEFT
|
||||||
|
#define CUBE_Y_INC BUTTON_UP
|
||||||
|
#define CUBE_Y_DEC BUTTON_DOWN
|
||||||
|
#define CUBE_Z_INC BUTTON_F2
|
||||||
|
#define CUBE_Z_DEC BUTTON_F1
|
||||||
|
#define CUBE_HIGHSPEED BUTTON_PLAY
|
||||||
|
|
||||||
|
#elif CONFIG_KEYPAD == ONDIO_PAD
|
||||||
|
#define CUBE_QUIT (BUTTON_OFF | BUTTON_REL)
|
||||||
|
#define CUBE_X_INC BUTTON_RIGHT
|
||||||
|
#define CUBE_X_DEC BUTTON_LEFT
|
||||||
|
#define CUBE_Y_INC BUTTON_UP
|
||||||
|
#define CUBE_Y_DEC BUTTON_DOWN
|
||||||
|
#define CUBE_Z_INC (BUTTON_MENU | BUTTON_UP)
|
||||||
|
#define CUBE_Z_DEC (BUTTON_MENU | BUTTON_DOWN)
|
||||||
|
#define CUBE_HIGHSPEED_PRE BUTTON_MENU
|
||||||
|
#define CUBE_HIGHSPEED (BUTTON_MENU | BUTTON_REL)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
struct point_3D {
|
struct point_3D {
|
||||||
long x, y, z;
|
long x, y, z;
|
||||||
};
|
};
|
||||||
|
@ -230,6 +254,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
int t_disp=0;
|
int t_disp=0;
|
||||||
char buffer[30];
|
char buffer[30];
|
||||||
|
|
||||||
|
int button;
|
||||||
|
int lastbutton=0;
|
||||||
int xa=0;
|
int xa=0;
|
||||||
int ya=0;
|
int ya=0;
|
||||||
int za=0;
|
int za=0;
|
||||||
|
@ -282,56 +308,64 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
|
||||||
if (za<0)
|
if (za<0)
|
||||||
za+=360;
|
za+=360;
|
||||||
|
|
||||||
switch(rb->button_get(false))
|
button = rb->button_get(false);
|
||||||
|
switch(button)
|
||||||
{
|
{
|
||||||
case BUTTON_RIGHT:
|
case CUBE_X_INC:
|
||||||
xs+=1;
|
xs+=1;
|
||||||
if (xs>10)
|
if (xs>10)
|
||||||
xs=10;
|
xs=10;
|
||||||
t_disp=DISP_TIME;
|
t_disp=DISP_TIME;
|
||||||
break;
|
break;
|
||||||
case BUTTON_LEFT:
|
case CUBE_X_DEC:
|
||||||
xs-=1;
|
xs-=1;
|
||||||
if (xs<-10)
|
if (xs<-10)
|
||||||
xs=-10;
|
xs=-10;
|
||||||
t_disp=DISP_TIME;
|
t_disp=DISP_TIME;
|
||||||
break;
|
break;
|
||||||
case BUTTON_UP:
|
case CUBE_Y_INC:
|
||||||
ys+=1;
|
ys+=1;
|
||||||
if (ys>10)
|
if (ys>10)
|
||||||
ys=10;
|
ys=10;
|
||||||
t_disp=DISP_TIME;
|
t_disp=DISP_TIME;
|
||||||
break;
|
break;
|
||||||
case BUTTON_DOWN:
|
case CUBE_Y_DEC:
|
||||||
ys-=1;
|
ys-=1;
|
||||||
if (ys<-10)
|
if (ys<-10)
|
||||||
ys=-10;
|
ys=-10;
|
||||||
t_disp=DISP_TIME;
|
t_disp=DISP_TIME;
|
||||||
break;
|
break;
|
||||||
case BUTTON_F2:
|
case CUBE_Z_INC:
|
||||||
zs+=1;
|
zs+=1;
|
||||||
if (zs>10)
|
if (zs>10)
|
||||||
zs=10;
|
zs=10;
|
||||||
t_disp=DISP_TIME;
|
t_disp=DISP_TIME;
|
||||||
break;
|
break;
|
||||||
case BUTTON_F1:
|
case CUBE_Z_DEC:
|
||||||
zs-=1;
|
zs-=1;
|
||||||
if (zs<-10)
|
if (zs<-10)
|
||||||
zs=-10;
|
zs=-10;
|
||||||
t_disp=DISP_TIME;
|
t_disp=DISP_TIME;
|
||||||
break;
|
break;
|
||||||
case BUTTON_PLAY:
|
case CUBE_HIGHSPEED:
|
||||||
|
#ifdef CUBE_HIGHSPEED_PRE
|
||||||
|
if (lastbutton!=CUBE_HIGHSPEED_PRE)
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
highspeed=!highspeed;
|
highspeed=!highspeed;
|
||||||
t_disp=DISP_TIME;
|
t_disp=DISP_TIME;
|
||||||
break;
|
break;
|
||||||
case BUTTON_OFF|BUTTON_REL:
|
case CUBE_QUIT:
|
||||||
exit=1;
|
exit=1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SYS_USB_CONNECTED:
|
default:
|
||||||
rb->usb_screen();
|
if(rb->default_event_handler(button) == SYS_USB_CONNECTED)
|
||||||
return PLUGIN_USB_CONNECTED;
|
return PLUGIN_USB_CONNECTED;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
if (button!=BUTTON_NONE)
|
||||||
|
lastbutton=button;
|
||||||
}
|
}
|
||||||
|
|
||||||
return PLUGIN_OK;
|
return PLUGIN_OK;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue