📄 setup.c
字号:
ALIGN_LEFT,
STAT_COLOR,
POS3_STAT_LOC,
NO_PARENT,
static_user_op,
},
(void *)S_AUDIO
};
const MS_STATIC menu_lng_stat = {
{
0,
ALIGN_LEFT,
STAT_COLOR,
POS4_STAT_LOC,
NO_PARENT,
static_user_op,
},
(void *)S_DVD_MENU
};
const MS_STATIC osd_enable_stat = {
{
0,
ALIGN_LEFT,
STAT_COLOR,
OSD_STAT_LOC,
NO_PARENT,
static_user_op,
},
(void *)S_OSD
};
#ifdef D_USE_CLOSE_BUTTON
const MS_BUTTON close_btn = {
{
{MS_HOT_SPOT,
ALIGN_CENTER,
BUTTON_COLOR,
{248, 260, 100, OPTION_HEIGHT},
NO_PARENT,
button_user_op},
(void *)S_CLOSE},
close_dialog_box
};
#endif // D_USE_CLOSE_BUTTON
const MS_BUTTON lng_btn = {
{
{MS_HOT_SPOT,
ALIGN_CENTER,
BAR_COLOR,
#if D_NO_6CHANNEL_OUTPUT
{0,2,156,OPTION_HEIGHT},
#else
{0,2,120,OPTION_HEIGHT},
#endif
NO_PARENT,
button_user_op},
(void *)S_LANGUAGE},
open_language
};
const MS_BUTTON vid_btn = {
{
{MS_HOT_SPOT,
ALIGN_CENTER,
BAR_COLOR,
#if D_NO_6CHANNEL_OUTPUT
{156,2,156,OPTION_HEIGHT},
#else
{120,2,120,OPTION_HEIGHT},
#endif
NO_PARENT,
button_user_op},
(void *)S_VIDEO},
open_video
};
const MS_BUTTON aud_btn = {
{
{MS_HOT_SPOT,
ALIGN_CENTER,
BAR_COLOR,
#if D_NO_6CHANNEL_OUTPUT
{312,2,156,OPTION_HEIGHT},
#else
{240,2,120,OPTION_HEIGHT},
#endif
NO_PARENT,
button_user_op},
(void *)S_AUDIO},
open_audio
};
#ifndef D_NO_6CHANNEL_OUTPUT
const MS_BUTTON more_aud_btn = {
{
{MS_HOT_SPOT,
ALIGN_CENTER,
BAR_COLOR,
{360,2,120,OPTION_HEIGHT},
NO_PARENT,
button_user_op},
(void *)S_MORE_AUDIO},
open_more_audio
};
#endif
const MS_BUTTON par_btn = {
{
{MS_HOT_SPOT,
ALIGN_CENTER,
BAR_COLOR,
#if D_NO_6CHANNEL_OUTPUT
{468,2,132,OPTION_HEIGHT},
#else
{500,2,120,OPTION_HEIGHT},
#endif
NO_PARENT,
button_user_op},
(void *)S_PARENTAL_CONTROL},
open_parental
};
#ifdef D_ENABLE_SETUP_RESTORE_SETTING
static void restore_setting_action()
{
#ifdef _DEBUG
dbouts("\nRestore setting");
#endif
PS_RestoreFactoryDefault();
g_power_state = POWER_SEQUENCE_ON_REQUESTED;
cpu_soft_reset();
}
#endif // D_ENABLE_SETUP_RESTORE_SETTING
void password_adjusted( WORD wPassword )
{
#ifdef NO_C_STDLIB
rtouts("( "); rtoutwx(wPassword); rtouts(" )\n");
#endif
if ( IS_UNLOCKED )
{
rtouts("\nUnlocked... ");
// display the unlocked status and
// grant access to the rating level
MS_hide((MS_WIDGET *) &lock_stat, dialog_box);
MS_display((MS_WIDGET *) &unlock_stat.widget);
SET_SELECTABLE(choice2);
}
else // IS_UNLOCKED
{
// if locked, display the status, and
// prevent access to the rating level
MS_hide((MS_WIDGET *) &unlock_stat, dialog_box);
MS_display((MS_WIDGET *) &lock_stat.widget);
SET_NONSELECTABLE(choice2);
} // IS_UNLOCKED
}
void pas_par_action(char *s)
{
long lPassword;
DWORD d_Cmd;
BOOL bIsTooShort = FALSE;
#ifdef NO_C_STDLIB
rtouts("\nPassword is "); rtouts(s);
#endif
{
unsigned char ucIndex;
for ( ucIndex = 0; ucIndex < 4; ucIndex++ )
{
if ( !isDigit(s[ucIndex]) )
{
bIsTooShort = TRUE;
#ifdef NO_C_STDLIB
rtouts("\nToo short (must be 4 digits)!");
#endif
break;
}
}
}
// Must convert here because the MS_UOP_CLEAR will clear s
text_to_num(s, &lPassword);
((MS_WIDGET *) mspwPassword)->user_op( (MS_WIDGET *) mspwPassword, MS_UOP_CLEAR, 1);
if ( bIsTooShort )
return;
//
// Now we know we have a valid password
//
#ifdef NO_C_STDLIB
rtouts(" ( "); rtoutl(lPassword); rtouts(" )\n");
#endif
if ( IS_UNLOCKED )
{
// If unlocked, we set the new password and lock, then
// display the locked status and
// prevent access to the rating level
rtouts("\nLocking... ");
#ifdef D_FORGET_PASSWORD
gps->parental_password = (WORD) lPassword;
#else
d_Cmd = (((DWORD)PS_UPDATE_PARENTAL_PASSWORD)<<16) + (DWORD)lPassword;
ie_send_ex(IE_CORE_UPDATE_PS, (void *) d_Cmd);
#endif // 1
password_adjusted((WORD) lPassword);
}
else // IS_UNLOCKED
{
// if locked, we check if the entered password matches the stored password,
// and if so, set the password to INVALID_PASSWORD, unlock, then display
// the unlocked status, and grant access to the rating level
BOOL bMatch;
bMatch = PASSWORD_MATCHES(lPassword);
if ( bMatch )
{
rtouts("\nUnlocking... ");
#ifdef D_FORGET_PASSWORD
#else
d_Cmd = (((DWORD)PS_UPDATE_PARENTAL_PASSWORD)<<16) + (DWORD)INITIAL_PASSWORD;
ie_send_ex(IE_CORE_UPDATE_PS, (void *) d_Cmd);
#endif // D_FORGET_PASSWORD
password_adjusted((WORD) INITIAL_PASSWORD);
}
} // IS_UNLOCKED
}
#ifdef D_NO_LVL_DEFAULT
#else
void lvl_par_choice(MS_CHOICE *msChoice)
{
int iChoice;
#if 1
switch ( gps->parental_level )
{
case PARENTAL_LEVEL_1:
iChoice = ITEMNUM_LEVEL_KID_SAFE;
break;
case PARENTAL_LEVEL_2:
iChoice = ITEMNUM_LEVEL_G;
break;
case PARENTAL_LEVEL_3:
iChoice = ITEMNUM_LEVEL_PG;
break;
case PARENTAL_LEVEL_4:
iChoice = ITEMNUM_LEVEL_PG_13;
break;
case PARENTAL_LEVEL_5:
iChoice = ITEMNUM_LEVEL_PG_R;
break;
case PARENTAL_LEVEL_6:
iChoice = ITEMNUM_LEVEL_R;
break;
case PARENTAL_LEVEL_7:
iChoice = ITEMNUM_LEVEL_NC_17;
break;
case PARENTAL_LEVEL_8:
case PARENTAL_LEVEL_NONE:
// Fall through
default:
iChoice = ITEMNUM_LEVEL_ADULT;
break;
}
#else
iChoice = gps->parental_level - 1;
#endif // DISABLE
msChoice->current_choice = iChoice;
}
#endif // D_NO_LVL_DEFAULT
void lvl_par_action(int num)
{
#ifdef D_NO_PARENTAL_ACTION
printf("Parental level %d\n",num);
#else
DWORD d_Cmd;
int iRating[] = { PARENTAL_LEVEL_1, PARENTAL_LEVEL_2, PARENTAL_LEVEL_3, PARENTAL_LEVEL_4,
PARENTAL_LEVEL_5, PARENTAL_LEVEL_6, PARENTAL_LEVEL_7, PARENTAL_LEVEL_8 };
printf("Parental level %d\n",num);
dbouti(num);
num = iRating[num];
d_Cmd = (((DWORD)PS_UPDATE_PARENTAL_LEVEL)<<16) + (DWORD)num;
ie_send_ex(IE_CORE_UPDATE_PS, (void *) d_Cmd);
#endif // D_NO_PARENTAL_ACTION
}
//
// Analog choice handling
//
#ifdef D_NO_AC3_ANALOG_DEFAULT
#else
void ac3_analog_choice(MS_CHOICE *msChoice)
{
int iChoice;
int iAC3Analog = PS_GET_ANALOG_AUDIO_SETTING(AUDIO_STREAM_AC3);
switch ( iAC3Analog )
{
#ifndef D_NO_2CHANNEL_OUTPUT
case ANALOG_AUDIO_2CH:
iChoice = ITEMNUM_2CH;
break;
#else
#endif
#ifndef D_NO_6CHANNEL_OUTPUT
case ANALOG_AUDIO_6CH:
iChoice = ITEMNUM_6CH;
break;
#else
#endif
case NO_ANALOG_AUDIO:
// Fall through
default:
iChoice = ITEMNUM_AOUT_OFF;
break;
}
msChoice->current_choice = iChoice;
}
#endif // D_NO_AC3_ANALOG_DEFAULT
#define FORCE_CHOICE(_action_, _itemNum_, _choice_) \
_action_( _itemNum_ ); \
_choice_->current_choice = _itemNum_; \
_choice_->widget.user_op(&_choice_->widget,MS_UOP_DISPLAY,0);
void ac3_analog_action(int num)
{
#ifdef D_UNHOOK_AC3_ANALOG
printf("AC3 analog is %d\n",num);
#else
DWORD d_Cmd;
#ifdef D_NO_2CHANNEL_OUTPUT
int iAC3Analog[] = { ANALOG_AUDIO_6CH, NO_ANALOG_AUDIO };
#endif
#ifdef D_NO_6CHANNEL_OUTPUT
int iAC3Analog[] = { ANALOG_AUDIO_2CH, NO_ANALOG_AUDIO };
#endif
#if D_NO_2CHANNEL_OUTPUT|D_NO_6CHANNEL_OUTPUT
#else
int iAC3Analog[] = { ANALOG_AUDIO_2CH, ANALOG_AUDIO_6CH, NO_ANALOG_AUDIO };
#endif
dbouts("\nDigital Output AC3 Settings");
dbouti( num );
PS_SET_ANALOG_AUDIO_SETTING(AUDIO_STREAM_AC3,iAC3Analog[num]);
d_Cmd = (((DWORD)PS_UPDATE_ANALOG_SETTINGS_LSB)<<16) + (gps->analog_setting&0xFFFFL);
ie_send_ex(IE_CORE_UPDATE_PS, (void *)d_Cmd);
#ifdef D20_BOARD
#if D_NO_6CHANNEL_OUTPUT|D_NO_2CHANNEL_OUTPUT
#else
if ( (num == ITEMNUM_6CH) && (choice5->current_choice != ITEMNUM_DOUT_OFF) )
{
#ifdef D_NO_FORCE_CHOICE_MACRO
// set Digital settings to Off
ac3_digital_action( ITEMNUM_DOUT_OFF );
choice5->current_choice = ITEMNUM_DOUT_OFF;
choice5->widget.user_op(&choice5->widget,MS_UOP_DISPLAY,0);
#else
FORCE_CHOICE( ac3_digital_action, ITEMNUM_DOUT_OFF, choice5 );
#endif // TEST_MACRO
}
#endif // D20_BOARD
#endif //D_NO_6CHANNEL_OUTPUT|D_NO_2CHANNEL_OUTPUT
#endif // D_UNHOOK_AC3_ANALOG
}
#ifdef D_NO_MPEG_ANALOG_DEFAULT
#else
void mpeg_analog_choice(MS_CHOICE *msChoice)
{
int iChoice;
int iMPEGAnalog = PS_GET_ANALOG_AUDIO_SETTING(AUDIO_STREAM_MPEG);
switch ( iMPEGAnalog )
{
#ifndef D_NO_2CHANNEL_OUTPUT
case ANALOG_AUDIO_2CH:
iChoice = ITEMNUM_2CH;
break;
#else
#endif
#ifndef D_NO_6CHANNEL_OUTPUT
case ANALOG_AUDIO_6CH:
iChoice = ITEMNUM_6CH;
break;
#else
#endif
case NO_ANALOG_AUDIO:
// Fall through
default:
iChoice = ITEMNUM_AOUT_OFF;
break;
}
msChoice->current_choice = iChoice;
}
#endif // D_NO_MPEG_ANALOG_DEFAULT
void mpeg_analog_action(int num)
{
#ifdef D_UNHOOK_MPEG_ANALOG
printf("MPEG analog is %d\n",num);
#else
DWORD d_Cmd;
#ifdef D_NO_2CHANNEL_OUTPUT
int iMPEGAnalog[] = { ANALOG_AUDIO_6CH, NO_ANALOG_AUDIO };
#endif
#ifdef D_NO_6CHANNEL_OUTPUT
int iMPEGAnalog[] = { ANALOG_AUDIO_2CH, NO_ANALOG_AUDIO };
#endif
#if D_NO_2CHANNEL_OUTPUT|D_NO_6CHANNEL_OUTPUT
#else
int iMPEGAnalog[] = { ANALOG_AUDIO_2CH, ANALOG_AUDIO_6CH, NO_ANALOG_AUDIO };
#endif
dbouts("\nAnalog Output MPEG Settings");
dbouti( num );
num = iMPEGAnalog[ num ];
PS_SET_ANALOG_AUDIO_SETTING(AUDIO_STREAM_MPEG,num);
d_Cmd = (((DWORD)PS_UPDATE_ANALOG_SETTINGS_LSB)<<16) + (gps->analog_setting&0xFFFFL);
ie_send_ex(IE_CORE_UPDATE_PS, (void *)d_Cmd);
#endif // D_UNHOOK_MPEG_ANALOG
}
#ifdef D_NO_MP3_ANALOG_DEFAULT
#else
void mp3_analog_choice(MS_CHOICE *msChoice)
{
int iChoice;
int iMP3Analog = PS_GET_ANALOG_AUDIO_SETTING(AUDIO_STREAM_MP3);
switch ( iMP3Analog )
{
case ANALOG_AUDIO_2CH:
iChoice = ITEMNUM_MP3_PCM;
break;
case NO_ANALOG_AUDIO:
// Fall through
default:
// REMINDER should be _OFF
iChoice = ITEMNUM_MP3_OFF;
break;
}
msChoice->current_choice = iChoice;
}
#endif // D_NO_MP3_ANALOG_DEFAULT
void mp3_analog_action(int num)
{
#ifdef D_UNHOOK_MP3_ANALOG
printf("MP3 analog is %d\n",num);
#else
DWORD d_Cmd;
int iMP3Analog[] = { ANALOG_AUDIO_2CH, NO_ANALOG_AUDIO };
dbouts("\nAnalog Output MP3 Settings: ");
dbouti( num );
num = iMP3Analog[ num ];
PS_SET_ANALOG_AUDIO_SETTING(AUDIO_STREAM_MP3,num);
d_Cmd = (((DWORD)PS_UPDATE_ANALOG_SETTINGS_LSB)<<16) + (gps->analog_setting&0xFFFFL);
ie_send_ex(IE_CORE_UPDATE_PS, (void *)d_Cmd);
#endif // D_UNHOOK_MP3_ANALOG
}
#if (defined(D30_BOARD) || defined(D50_BOARD))
#ifdef D_NO_DTS_ANALOG_DEFAULT
#else
void dts_analog_choice(MS_CHOICE *msChoice)
{
int iChoice;
int iDTSAnalog = PS_GET_ANALOG_AUDIO_SETTING(AUDIO_STREAM_DTS);
switch ( iDTSAnalog )
{
#ifndef DTS_DISABLE
#ifndef D_NO_2CHANNEL_OUTPUT
case ANALOG_AUDIO_2CH:
iChoice = ITEMNUM_2CH;
break;
#else
#endif
#ifndef D_NO_6CHANNEL_OUTPUT
case ANALOG_AUDIO_6CH:
iChoice = ITEMNUM_6CH;
break;
#else
#endif
#endif //DTS_DISABLE
case NO_ANALOG_AUDIO:
// Fall through
default:
iChoice = ITEMNUM_AOUT_OFF;
break;
}
msChoice->current_choice = iChoice;
}
#endif // D_NO_DTS_ANALOG_DEFAULT
void dts_analog_action(int num)
{
#ifdef D_UNHOOK_DTS_ANALOG
printf("DTS analog is %d\n",num);
#else
DWORD d_Cmd;
#ifndef DTS_DISABLE
#ifdef D_NO_2CHANNEL_OUTPUT
int iDTSAnalog[] = { ANALOG_AUDIO_6CH, NO_ANALOG_AUDIO };
#endif
#ifdef D_NO_6CHANNEL_OUTPUT
int iDTSAnalog[] = { ANALOG_AUDIO_2CH, NO_ANALOG_AUDIO };
#endif
#if D_NO_2CHANNEL_OUTPUT|D_NO_6CHANNEL_OUTPUT
#else
int iDTSAnalog[] = { ANALOG_AUDIO_2CH, ANALOG_AUDIO_6CH, NO_ANALOG_AUDIO };
#endif
#else //DTS_DISABLE
int iDTSAnalog[] = { NO_ANALOG_AUDIO, NO_ANALOG_AUDIO };
#endif //DTS_DISABLE
dbouts("\nAnalog Output DTS Settings");
dbouti( num );
num = iDTSAnalog[ num ];
PS_SET_ANALOG_AUDIO_SETTING(AUDIO_STREAM_DTS,num);
d_Cmd = (((DWORD)PS_UPDATE_ANALOG_SETTINGS_LSB)<<16) + (gps->analog_setting&0xFFFFL);
ie_send_ex(IE_CORE_UPDATE_PS, (void *)d_Cmd);
if ( (num != NO_ANALOG_AUDIO) && (choice6->current_choice == ITEMNUM_RAW) )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -