static void proc_rec_opt(Telnet telnet, int cmd, int option) { const struct Opt *const *o; log_option(telnet, "server", cmd, option); for (o = opts; *o; o++) { if ((*o)->option == option && (*o)->ack == cmd) { switch (telnet->opt_states[(*o)->index]) { case REQUESTED: telnet->opt_states[(*o)->index] = ACTIVE; activate_option(telnet, *o); break; case ACTIVE: break; case INACTIVE: telnet->opt_states[(*o)->index] = ACTIVE; send_opt(telnet, (*o)->send, option); activate_option(telnet, *o); break; case REALLY_INACTIVE: send_opt(telnet, (*o)->nsend, option); break; } return; } else if ((*o)->option == option && (*o)->nak == cmd) { switch (telnet->opt_states[(*o)->index]) { case REQUESTED: telnet->opt_states[(*o)->index] = INACTIVE; refused_option(telnet, *o); break; case ACTIVE: telnet->opt_states[(*o)->index] = INACTIVE; send_opt(telnet, (*o)->nsend, option); option_side_effects(telnet, *o, 0); break; case INACTIVE: case REALLY_INACTIVE: break; } return; } } /* * If we reach here, the option was one we weren't prepared to * cope with. If the request was positive (WILL or DO), we send * a negative ack to indicate refusal. If the request was * negative (WONT / DONT), we must do nothing. */ if (cmd == WILL || cmd == DO) send_opt(telnet, (cmd == WILL ? DONT : WONT), option); }
void configuration( void ) { dont_exit_configure=1; int cur_off=0,disp_off=0; int redraw=1; SYSCONF_Init(); if (SYSCONF_GetLength("IPL.SADR") != SADR_LENGTH) { printf("IPL.SADR Length Incorrect. %d", SYSCONF_GetLength("IPL.SADR")); sleep(5); return;} int ret = SYSCONF_Get("IPL.SADR", sadr, SADR_LENGTH); if (ret < 0 ) { printf("SYSCONF_Get IPL.SADR %d", ret); sleep(5); return;} country = sadr[0]; while(dont_exit_configure) { WPAD_ScanPads(); PAD_ScanPads(); u32 WPAD_Pressed; u32 WPAD1_Pressed = WPAD_ButtonsDown(0); u32 WPAD2_Pressed = WPAD_ButtonsDown(1); u32 WPAD3_Pressed = WPAD_ButtonsDown(2); u32 WPAD4_Pressed = WPAD_ButtonsDown(3); u32 PAD_Pressed; u32 PAD1_Pressed = PAD_ButtonsDown(0); u32 PAD2_Pressed = PAD_ButtonsDown(1); u32 PAD3_Pressed = PAD_ButtonsDown(2); u32 PAD4_Pressed = PAD_ButtonsDown(3); WPAD_Pressed = WPAD1_Pressed | WPAD2_Pressed | WPAD3_Pressed | WPAD4_Pressed; PAD_Pressed = PAD1_Pressed | PAD2_Pressed | PAD3_Pressed | PAD4_Pressed ; if((WPAD_Pressed & WPAD_BUTTON_A) || (PAD_Pressed & PAD_BUTTON_A)) activate_option(cur_off); if((WPAD_Pressed & WPAD_BUTTON_B) || (PAD_Pressed & PAD_BUTTON_B)) cur_off=EXIT_OFFSET; if((WPAD_Pressed & WPAD_BUTTON_DOWN) || (PAD_Pressed & PAD_BUTTON_DOWN)) cur_off++; if((WPAD_Pressed & WPAD_BUTTON_UP) || (PAD_Pressed & PAD_BUTTON_UP)) cur_off--; if((WPAD_Pressed & WPAD_BUTTON_LEFT) || (PAD_Pressed & PAD_BUTTON_LEFT)) decrease_option(cur_off); if((WPAD_Pressed & WPAD_BUTTON_RIGHT) || (PAD_Pressed & PAD_BUTTON_RIGHT)) increase_option(cur_off); if((WPAD_ANY_BUTTON(WPAD_Pressed)) || PAD_ANY_BUTTON(PAD_Pressed)) redraw=1; if(cur_off>MENU_OPTIONS) cur_off=0; if(cur_off<0) cur_off=MENU_OPTIONS; if( redraw ) { u8 *nickname=(u8*)memalign(32, 128); SYSCONF_GetNickName(nickname); printf("\x1b[%d;0H %s%s\n\n", CONFIG_MENU_H, CONSOLE_NICKNAME[language_setting], nickname); free(nickname); // printf("%s:\n", REGION_INFO[language_setting]); printf(" %s< %s >\n", LANGUAGE[language_setting], lang[SYSCONF_GetLanguage()]); printf(" %s< %s >\n", WIIMU_LANGUAGE[language_setting], lang[language_setting]); printf(" %s< %s >\n", REGION[language_setting], region[SYSCONF_GetRegion()]); printf(" %s[ %s ]\n", AREA[language_setting], area[SYSCONF_GetArea()]); printf(" %s< %u >\n\n", SHOP_AREA[language_setting], country); // printf("%s:\n", VIDEO_INFO[language_setting]); printf(" %s< %s >\n", VIDEO_MODE[language_setting], video[SYSCONF_GetVideo()]); printf(" %s< %s >\n", EURRGB[language_setting], SYSCONF_GetEuRGB60()==0? ON_MESSAGE[language_setting] : OFF_MESSAGE[language_setting] ); printf(" %s< %s >\n", PROGRESSIVE[language_setting], SYSCONF_GetProgressiveScan()==0? ON_MESSAGE[language_setting] : OFF_MESSAGE[language_setting] ); printf(" %s< %s >\n", ASPECT_RATIO[language_setting], SYSCONF_GetAspectRatio()==0? "4:3" : "16:9" ); printf(" %s< %s >\n\n", SCREEN_SAVER[language_setting], SYSCONF_GetScreenSaverMode()==0? ON_MESSAGE[language_setting] : OFF_MESSAGE[language_setting] ); // printf("%s:\n", AUDIO_INFO[language_setting]); printf(" %s< %s >\n\n", SOUND[language_setting], sound[SYSCONF_GetSoundMode()]); // printf("%s:\n", WIIMOTE_INFO[language_setting]); printf(" %s< %d >\n", IR_SENSITIVITY[language_setting], SYSCONF_GetIRSensitivity()); printf(" %s< %s >\n", SENSORBAR_POSITION[language_setting], sensorbar[SYSCONF_GetSensorBarPosition()]); printf(" %s< %s >\n", SPEAKER_VOLUME[language_setting], speaker_volumes[raw_to_bar[SYSCONF_GetPadSpeakerVolume()]]); printf(" %s< %s >\n\n", MOTOR_MODE[language_setting], SYSCONF_GetPadMotorMode()==0? ON_MESSAGE[language_setting] : OFF_MESSAGE[language_setting] );; printf("%s\n", PARENTAL_INFO[language_setting]); s8 *pw=(s8*)memalign(32, 128); s8 *answer=(s8*)memalign(32, 128); if(SYSCONF_GetParentalPassword(pw)>=0) printf(" %s%s\n", PARENTAL_PASSWORD[language_setting], pw); else printf(" %s<Not Set>\n", PARENTAL_PASSWORD[language_setting]); if(SYSCONF_GetParentalAnswer(answer)>=0) printf(" %s%s\n\n", PARENTAL_ANSWER[language_setting], answer); else printf(" %s<Not Set>\n\n", PARENTAL_ANSWER[language_setting]); free(pw); free(answer); printf(" %s\n", SAVE[language_setting]); printf(" %s\n", EXIT[language_setting]); disp_off=cur_off; if(cur_off>=REGION_INFO_OFFSET) disp_off+=1; if(cur_off>=VIDEO_INFO_OFFSET) disp_off+=1; if(cur_off>=AUDIO_INFO_OFFSET) disp_off+=1; if(cur_off>=WIIMOTE_INFO_OFFSET) disp_off+=1; if(cur_off>=PARENTAL_INFO_OFFSET) disp_off+=2; if(cur_off>=QUIT_OFFSET) disp_off+=1; printf("\x1b[%d;0H*", CONFIG_MENU_H+disp_off); redraw=0; } VIDEO_WaitVSync(); } VIDEO_WaitVSync(); return; }