⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup.c

📁 Zoran VP2K731 DVD源代码,极具参考价值!
💻 C
📖 第 1 页 / 共 5 页
字号:
	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 + -