PS.c
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:41k
源码类别:

DVD

开发平台:

Others

  1. /****************************************************************************************
  2.  *  Copyright (c) 2002 ZORAN Corporation, All Rights Reserved
  3.  *  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
  4.  *
  5.  *  File: $Workfile: PS.c $             
  6.  *
  7.  * Description: 
  8.  * ============
  9.  * 
  10.  * 
  11.  * Log:
  12.  * ====
  13.  * $Revision: 114 $
  14.  * Last Modified by $Author: Fwang $ at $Modtime: 04-04-02 14:51 $ 
  15.  ****************************************************************************************
  16.  * Updates:
  17.  ****************************************************************************************
  18.  * $Log: /I76/I76_Common/I76_Reference/Playcore/PS/PS.c $
  19.  * 
  20.  * 114   04-04-02 15:01 Fwang
  21.  * Fix green screen by MPP.
  22.  * 
  23.  * 113   04-04-02 14:18 Billt
  24.  * merge some new elements
  25.  * 
  26.  * 112   3/25/04 11:37p Johnk
  27.  * inserted the stillmode interpolation
  28.  * 
  29.  * 111   3/16/04 11:07p Johnk
  30.  * Merged the latest code of S1 function 
  31.  * 
  32.  * 110   3/12/04 5:45p Johnk
  33.  * Merged EZVIEW function - inserted EZVIEW_ENABLE macro
  34.  * 
  35.  * 109   04-03-10 10:51 Chaol
  36.  * change prototype of DEC_get_spectrum_analyzer
  37.  * 
  38.  * 108   04-03-09 20:32 Chaol
  39.  * add VE & Melody support, and code clean
  40.  * 
  41.  * 107   04-03-05 16:46 Jerryc
  42.  * 
  43.  * 106   04-03-02 16:43 Chaol
  44.  * remove gtps.mMuteSPDIF
  45.  * 
  46.  * 105   04-03-02 13:20 Chaol
  47.  * add spectrum analyzer and graphic equalizer support
  48.  * 
  49.  * 104   04-02-24 12:04 Janeg
  50.  * Improve EZVIEW implementation.
  51.  * 
  52.  * 103   2/20/04 6:22p Glenl
  53.  * Merged S1 code
  54.  * 
  55.  * 102   2/10/04 7:48p Chaol
  56.  * add karaoke support
  57.  * 
  58.  * 101   28/01/04 9:31 Rinata
  59.  * add downmix_volume gps parameter for headphones volume
  60.  * 
  61.  * 100   1/16/04 11:12a Fwang
  62.  * Add PS_UPDATE_TV_SHAPE.
  63.  * 
  64.  * 99    1/14/04 9:54a Chaol
  65.  * code clear
  66.  * 
  67.  * 98    1/13/04 12:11 Hamadk
  68.  * Merged with CES DB
  69.  * 
  70.  * 97    12/18/03 12:14p Leslie
  71.  * Remove INTERPOLATION_CONTROL on I76
  72.  * 
  73.  * 96    11/28/03 5:52p Fwang
  74.  * Implement manual scaling and clean code.
  75.  * 
  76.  * 95    11/28/03 5:06p Chaol
  77.  * remove D_DYNAMIC_COMPRESSION_SETTING and change down sample
  78.  * 
  79.  * 94    11/13/03 4:18p Leonh
  80.  * Angieh:Add support for Priority Content.
  81.  * 
  82.  * 93    10/22/03 11:29a Chaol
  83.  * change gps->ucDRCCtrl from BYTE to WORD
  84.  * 
  85.  * 92    10/15/03 8:47a Leslie
  86.  * Remove Karaoke Recording
  87.  * Re-Order gtps
  88.  * Code cleanup
  89.  * 
  90.  * 91    12/10/03 12:33 Rinata
  91.  * On PS_UPDATE_MUTE_SETTING reset also spdif mute parameter
  92.  * 
  93.  * 90    9/29/03 12:02p Chaol
  94.  * code clear & rewrite
  95.  * 
  96.  * 89    9/23/03 6:40p Chaol
  97.  * checkin in stage4
  98.  * 
  99.  ****************************************************************************************/
  100. #include "Config.h" // Global Configuration - do not remove!
  101. #ifdef _DEBUG
  102. #undef IFTRACE
  103. #define IFTRACE if (gTraceCore) 
  104. #include "DebugDbgMain.h"
  105. #endif
  106. #include "Decoderdecoder.h"
  107. #include "PlaycorePSps.h"
  108. #include "eeprom.h"
  109. #include "PlaycoreCoremaincoregdef.h"
  110. #include "PlaycoreCoremaincoremain.h"
  111. #ifdef SAVE_TVSTANDARD_ONLY_IN_SETUPMENU //BT030619
  112. #include "UIMenu_sysMS_LIB.h"
  113. #endif
  114. //#include "v186t.h"
  115. #include <embedded.h>
  116. #ifdef TV_GUARDIAN_ENABLE
  117. #include "PlaycoreTVGtvgapi.h"
  118. #endif
  119. #include "DecoderAudioSetting.h"
  120. #include "io_hal_api.h"
  121. #ifdef SUPPORT_FLASH_CARD
  122. #include "driveFE_Manager.h"
  123. #endif // SUPPORT_FLASH_CARD
  124. //Function prototype
  125. #define NV_CHECKSUM_ADDR (sizeof(NV_STORAGE)-1)
  126. static NV_STORAGE g_nv_storage;
  127. NV_SETTINGS *gps = &g_nv_storage.settings;
  128. #ifdef USE_JOG
  129. BYTE b_vol_change = FALSE;
  130. extern BYTE g_is_saving_vol;
  131. #endif
  132. /* <<< ZORAN SH0111: Added global variable for External karaoke */
  133. /* >>> */
  134. /* Global Temporary Player Settings = Wanted settings */
  135. TEMP_SETTINGS gtps = {
  136. 0, //Karaoke Echo Delay
  137. 0, //Karaoke Key Shift
  138. EFFECT3D_SETTING_OFF,
  139. KARAOKE_SETTING_OFF,
  140. PARTNER_SETTING_OFF,
  141. DMM_SETTING_NORMAL,
  142. KAR_AC3_SETTING_NOVOCAL,
  143. KAR_AC3_MELODY_SETTING_OFF,
  144. VOICE_CANCEL_SETTING_OFF,
  145. MUTE_SETTING_OFF,
  146. #ifdef SPECTRUM_EQUALIZER
  147. GRAPHIC_EQUALIZER_OFF,
  148. #endif
  149. #ifdef AUTO_SLEEP
  150.     STANDBY_OFF,
  151. #endif
  152. #ifdef D_ENABLE_HEADPHONE_DETECT
  153. HEADPHONE_PLUG_OUT
  154. #endif
  155. #ifdef AUDIO_IN_SUPPORT
  156. AUDIO_IN_MODE_OFF,
  157. #endif
  158. };  /* Global Temporary Player Settings */
  159. /* Global Current States  */
  160. //ZCH, Sean07102003
  161. #ifdef D_CONTROL_6_CHANNEL_VOLUME
  162. CURRENT_STATES gcst = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  163. #else
  164. CURRENT_STATES gcst = {0,0,0,0,0,0,0,0,0,0,0,0,0};
  165. #endif //D_CONTROL_6_CHANNEL_VOLUME
  166. #ifdef STORE_PS_DATA_IN_FLASH
  167. #define MK_FP(seg,ofs) ((void __seg *)(seg) + (void __near *)(ofs))
  168. #define FLASH_OFFSET 0x4000
  169. #define PS_FLASH_START_ADDR MK_FP(PS_SEG, 0)
  170. extern void _initCommand(void);
  171. extern void Erase_One_Sector(unsigned short far *fp_SectorAddress);
  172. unsigned short huge *PS_FLASH_POINTER = PS_FLASH_START_ADDR;
  173. #endif
  174. #ifdef SPECTRUM_EQUALIZER
  175. BYTE sa_value[EQUALIZER_BANDGAIN_SZ] = {0, 0, 0, 0, 0,0};
  176. #endif
  177. #define GLB_NV_STORAGE g_nv_storage
  178. extern CONST NV_SETTINGS g_default_factory_settings; /* must be defined in customer file */
  179. extern BOOL CheckAddressWritable(unsigned short far *dwfpAddress);;
  180. static BYTE ps_compute_check_sum( void )
  181. {
  182. int i;
  183. BYTE checksum=0;
  184. for (i=0; i< sizeof(NV_SETTINGS); i++) 
  185. {
  186. checksum += GLB_NV_STORAGE.data[i];
  187. }
  188. return checksum^0xFF;
  189. }
  190. #ifdef STORE_PS_DATA_IN_FLASH
  191. void PS_NVM_Save(BOOL bUpdateFlash)
  192. {
  193. BYTE buff[2];
  194. unsigned short far *fp_uDestAddr;
  195. int i;
  196. GLB_NV_STORAGE.data[NV_CHECKSUM_ADDR] = ps_compute_check_sum();
  197. if (bUpdateFlash)
  198. {
  199. for( i = 0; i < sizeof(GLB_NV_STORAGE); i=i+2 ){
  200. buff[0] = GLB_NV_STORAGE.data[i];
  201. buff[1] = GLB_NV_STORAGE.data[i+1];
  202. fp_uDestAddr = MK_FP( PS_SEG, i );
  203. Nor_Write((unsigned short huge *)fp_uDestAddr, (unsigned char far *)buff, 2);
  204. }
  205. }else
  206. {
  207. for( i = 0; i < sizeof(GLB_NV_STORAGE); i=i+2 ){
  208. buff[0] = GLB_NV_STORAGE.data[i];
  209. buff[1] = GLB_NV_STORAGE.data[i+1];
  210. PS_FLASH_POINTER[i>>1] = (( buff[1] << 8 ) & 0xff00) | buff[0];//UPdate inside SRAM in PDREMOTE_DEBUG mode
  211. }
  212. }
  213. }
  214. #endif
  215. // ====================================================================
  216. void PS_Save( void )
  217. {
  218. int i;
  219. #ifdef DONOT_SAVE_TVSTANDARD
  220. BYTE pre_tv_standard = gps->tv_standard;
  221. gps->tv_standard = g_default_factory_settings.tv_standard;
  222. #endif
  223. // Write from first EPROM address until last param to save
  224. GLB_NV_STORAGE.data[NV_CHECKSUM_ADDR] = ps_compute_check_sum();
  225. #ifdef STORE_PS_DATA_IN_FLASH
  226. #ifdef _DEBUG
  227. dbg_printf(("Beforen"));
  228. for ( i = 0; i < sizeof(GLB_NV_STORAGE); i ++ )
  229. dbg_printf((" %02x", GLB_NV_STORAGE.data[i]));
  230. dbg_printf(("n"));
  231. dbg_printf(("Data in %08x:n", (DWORD)PS_FLASH_START_ADDR));
  232. for ( i = 0 ; i <  sizeof(GLB_NV_STORAGE); i = i+2)
  233. dbg_printf((" %04x", PS_FLASH_POINTER[i>>1]));
  234. dbg_printf(("n"));
  235. #endif//_DEBUG
  236. core_save_NVM_setting_In_Flash((unsigned short far *)PS_FLASH_START_ADDR);
  237. #ifdef _DEBUG
  238. dbg_printf(("Aftern"));
  239. for ( i = 0 ; i <  sizeof(GLB_NV_STORAGE); i = i+2)
  240. dbg_printf((" %04x", PS_FLASH_POINTER[i>>1]));
  241. dbg_printf(("n"));
  242. #endif//_DEBUG
  243. #else
  244. eeprom_write( PS_OFFSET_ADDR,&(GLB_NV_STORAGE.data[0]), sizeof(NV_STORAGE) );
  245. #endif//STORE_PS_DATA_IN_FLASH
  246. #ifdef DONOT_SAVE_TVSTANDARD
  247. gps->tv_standard = pre_tv_standard;
  248. #endif
  249. }
  250. void PS_RestoreFactoryDefault( void )
  251. {
  252. GLB_NV_STORAGE.settings = g_default_factory_settings; /* copy factory default */
  253. #ifndef _DEBUG_VERILOG
  254. PS_Save(); /* .. and save to NVRAM */
  255. #endif
  256. }
  257. void PS_Restore( void )
  258. {
  259. BYTE checksum;
  260. #ifdef STORE_PS_DATA_IN_FLASH
  261. {
  262. int i;
  263. for( i = 0; i < sizeof(GLB_NV_STORAGE); i=i+2 ){
  264. GLB_NV_STORAGE.data[i+1] = PS_FLASH_POINTER[i>>1]>>8 ;
  265. GLB_NV_STORAGE.data[i] = PS_FLASH_POINTER[i>>1] & 0x00ff ;
  266. }
  267. }
  268. #else
  269. eeprom_read( PS_OFFSET_ADDR,&(GLB_NV_STORAGE.data[0]), sizeof(NV_STORAGE) );
  270. #endif//STORE_PS_DATA_IN_FLASH
  271. if (GLB_NV_STORAGE.data[NV_CHECKSUM_ADDR] != (checksum = ps_compute_check_sum())){
  272. dbg_printf(("szof(NV_STORAGE)=%d, szof(NV_SETTINGS)=%dn", sizeof(NV_STORAGE), sizeof(NV_SETTINGS) ));
  273. dbg_printf(("NVRAM checksum error, restore factory default (%d!=%d)!n",
  274. (int) GLB_NV_STORAGE.data[NV_CHECKSUM_ADDR],(int) checksum));
  275. PS_RestoreFactoryDefault();
  276. }
  277. //<<<LX072502
  278. IFDEF(Decoder_Macro.bNOT_STORE_VIDEO_BE_EE_VALUE)
  279. #ifdef VIDEO_ENHANCED_SLIDER
  280. gps->be_ctrl = NUM_BRIGHTNESS_SLIDER_STEPS/2;
  281. gps->ee_ctrl = NUM_EDGE_SLIDER_STEPS/2;
  282. #else
  283. gps->be_ctrl = 8;
  284. gps->ee_ctrl = 8;
  285. #endif
  286. ENDIF
  287. //LX072502>>>
  288. //<<<ML 061203 added
  289. IFDEF(Decoder_Macro.bRgbonly)
  290. gps->vid_out = VID_OUT_RGB;
  291. ENDIF
  292. //>>>ML 061203 added
  293. #ifndef D_DEFUALT_VOLUME_MIDDLE//tecobest gxd 20051024
  294. //<<<RL080802  Default Max Volume
  295.     gps->volume = HW_MAX_VOLUME  ;
  296. //RL080802>>>
  297. #else
  298. //Default Max Volume
  299. gps->volume = HW_MAX_VOLUME/2;
  300. #endif
  301. #ifdef NOT_SAVER_WORKMODE
  302. gps->TunerWorkmode = (BYTE) 0;
  303. #endif
  304. #ifndef SMART_NAVI_MENU_SETTING
  305. gps->smart_navi == SMART_NAVI_MENU_ON;      //to avoid the situation that not define smart menu switch and set off in factory default  
  306. #endif
  307. #ifdef I77_COMPANION_CHIP
  308. if (gps->hd_jpeg_mode_preference == SD_JPEG_MODE)
  309. gps->hd_vid_out_mode = HD_NTSC_IN_OUT_480P;
  310. else
  311. gps->hd_vid_out_mode = HD_NTSC_IN_OUT_720P;
  312. #endif
  313. #ifdef USE_JOG
  314. if (gps->main_volume > 60) //add by wl082304 for KXD's request
  315. gps->main_volume = 60; //add by wl082304 for KXD's request
  316. #endif
  317. }
  318. /***********
  319. Update global settings and save value in NVRAM if necessary
  320. ************/
  321. void PS_Update(DWORD param)
  322. {
  323. BOOL save_change = FALSE;
  324. WORD value;
  325. value = (WORD)(param&0xFFFF);
  326. switch((WORD)(param>>16)) 
  327. {
  328. #ifdef I77_COMPANION_CHIP
  329. case PS_UPDATE_HD_VID_OUT:
  330. gps->hd_vid_out_mode = (BYTE)(value);
  331. #ifdef I77_BRAIN_STORM
  332. if( gps->hd_jpeg_mode_preference == SD_JPEG_MODE )
  333. gcst.hd_jpeg_mode_preference = SD_JPEG_MODE;
  334. else
  335. {
  336. switch(gps->hd_vid_out_mode)
  337. {
  338. case HD_NTSC_IN_OUT_720P:
  339. case HD_NTSC_IN_OUT_1080I:
  340. case HD_NTSC_IN_OUT_1024X768:
  341. case HD_NTSC_IN_OUT_1360X768:
  342. gcst.hd_jpeg_mode_preference = gps->hd_vid_out_mode;
  343. break;
  344. default:
  345. gcst.hd_jpeg_mode_preference = SD_JPEG_MODE;
  346. break;
  347. }
  348. }
  349. gps->lastest_hdmi_mode.output_resolution = (BYTE)value;
  350. #endif//I77_BRAIN_STORM
  351. save_change = TRUE;
  352. break;
  353. // <<< SEC CH.KO050204 : DVI mode selection between SMPTE and CEA-861
  354. #if defined(EXINO2) && defined(D_ENABLE_DVI_OUTPUT)
  355. case PS_UPDATE_DVI_OUT_MODE: 
  356. gps->dvi_out_mode = (BYTE)(value);
  357. save_change = TRUE;
  358. break;
  359. #endif 
  360. // SEC CH.KO050204 >>>
  361. case PS_UPDATE_HD_COMPONENT_OUT:
  362. gps->hd_component_out = (BYTE)(value);
  363. break;
  364. #endif
  365. #if D_SUPPORT_SACD
  366. case PS_UPDATE_SACDLAYER_SETTING :
  367. dbg_printf(("nI_PS_Update - sacd layer preference : %il",value));
  368. gps->playCDLayerOfSACD = (BYTE)(value);
  369. save_change = TRUE;
  370. break;
  371. #endif
  372. case PS_UPDATE_PROLOGIC_SETTING :
  373. dbg_printf(("nI_PS_Update - Prologic : %il",value));
  374. gps->prologic = (BYTE)(value);
  375. save_change = TRUE;
  376. break;
  377. case PS_UPDATE_DMM_SETTING :
  378. dbg_printf(("nI_PS_Update - DMM : %il",value));
  379. gtps.mDMM = (BYTE)(value);
  380. break;
  381. case PS_UPDATE_KARAOKE_SETTING :
  382. dbg_printf(("nI_PS_Update - Karaoke : %il",value));
  383. gtps.mKaraoke = (BYTE)(value);
  384. gcst.mPartner = VP_DEACTIVATED;
  385. #ifdef SPECTRUM_EQUALIZER
  386. gtps.mGeMode = GRAPHIC_EQUALIZER_OFF;
  387. #endif
  388. break;
  389. case PS_UPDATE_PARTNER_SETTING :
  390. dbg_printf(("nI_PS_Update - Partner : %il",value));
  391. gtps.mPartner = (BYTE)(value);
  392. gcst.mPartner = VP_DEACTIVATED; 
  393. break;
  394. case PS_UPDATE_PARTNER_STATE :
  395. dbg_printf(("nI_PS_Update - Partner State : %il",value));
  396. gcst.mPartner = (BYTE)(value);
  397. break;
  398. case PS_UPDATE_KARECHODELAY_SETTING :
  399. dbg_printf(("nI_PS_Update - Echo Scale : %il",value));
  400. gtps.mKarEchoDelay = (WORD) (value);
  401. break;
  402. case PS_UPDATE_KARKEYSHIFT_SETTING :
  403. dbg_printf(("nI_PS_Update - Key Shift : %il",value));
  404. gtps.mKarKeyShift = (BYTE)(value);
  405. break;
  406. case PS_UPDATE_KAR_AC3_VOCAL_SETTING :
  407. dbg_printf(("nI_PS_Update - AC3 Vocal : %il",value)); 
  408. gtps.mAC3KarVocal = (BYTE)(value);
  409. break;
  410. case PS_UPDATE_KAR_AC3_MEL_SETTING :
  411. dbg_printf(("nI_PS_Update - AC3 Melody : %il",value));;
  412. gtps.mAC3KarMel = (BYTE)(value);
  413. break;
  414. case PS_UPDATE_VOICE_CANCEL_SETTING :
  415. dbg_printf(("nI_PS_Update - Voice Cancel : %il",value));;
  416. gtps.mVoiceCanel = (BYTE)(value);
  417. break;
  418. case PS_UPDATE_3DEFFECT_SETTING :
  419. dbg_printf(("nI_PS_Update - 3D Effect : %il",value)); 
  420. gtps.m3dEffect = (BYTE)(value);
  421. #ifdef SPECTRUM_EQUALIZER
  422. gtps.mGeMode= GRAPHIC_EQUALIZER_OFF;
  423. #endif
  424. break;
  425. case PS_UPDATE_DIGITAL_SETTINGS :
  426. dbg_printf(("nI_PS_Update - Digital Output LSB : %il",value));
  427. gps->digital_setting = (gps->digital_setting&0xFFFF) | (value);
  428. save_change = TRUE;
  429. break;
  430. case PS_UPDATE_MUTE_SETTING :
  431. dbg_printf(("nI_PS_Update - Audio Mute : %il",value));
  432. gtps.mMute = (BYTE)(value);
  433. break;
  434. case PS_UPDATE_VOLUME_SETTING :
  435. dbg_printf(("nI_PS_Update - Volume : %il",value)); 
  436. gps->volume = (WORD)(value);
  437. // save_change = TRUE; // ZRN SH0626:must not be saved
  438. break;
  439. case PS_UPDATE_DOWNMIX_VOLUME_SETTING:
  440. dbg_printf(("nI_PS_Update - Downmix Volume : %il",value)); 
  441. gps->downmix_volume = (WORD)(value);
  442. break;
  443. case PS_UPDATE_TV_STANDARD:
  444. dbg_printf(("nI_PS_Update - TV Standard : %il",value)); 
  445. gps->tv_standard = (BYTE) (value);
  446. #ifdef SAVE_TVSTANDARD_ONLY_IN_SETUPMENU //BT030619
  447. if( g_ui_active_menu_id == SETUP_MENU_ID)
  448. save_change = TRUE;
  449. //else
  450. //save_change = FALSE;
  451. #else
  452. save_change = TRUE;
  453. #endif //SAVE_TVSTANDARD_ONLY_IN_SETUPMENU
  454. break;
  455. #ifdef DVD_AUDIO_SUPPORT
  456. case PS_UPDATE_A_V_PRIORITY:
  457. dbg_printf(("nI_PS_Update - Audio/Video priority : %il",value)); 
  458. gps->dvd_a_v_preference=(BYTE)value;
  459. save_change = TRUE;
  460. break;
  461. #endif
  462. #ifdef I77_COMPANION_CHIP //einav
  463. case PS_UPDATE_HD_JPEG_MODE_PRIORITY:
  464. gps->hd_jpeg_mode_preference=(BYTE)value;
  465. #ifdef I77_BRAIN_STORM
  466. if( gps->hd_jpeg_mode_preference == SD_JPEG_MODE )
  467. gcst.hd_jpeg_mode_preference = SD_JPEG_MODE;
  468. else
  469. {
  470. BYTE resolution;
  471. resolution = I77_GetResolution();
  472. switch(resolution)
  473. {
  474. case HD_NTSC_IN_OUT_720P:
  475. case HD_NTSC_IN_OUT_1080I:
  476. case HD_NTSC_IN_OUT_1024X768:
  477. case HD_NTSC_IN_OUT_1360X768:
  478. gcst.hd_jpeg_mode_preference = resolution;
  479. break;
  480. default:
  481. gcst.hd_jpeg_mode_preference = SD_JPEG_MODE;
  482. break;
  483. }
  484. }
  485. #endif//I77_BRAIN_STORM
  486. save_change = TRUE;
  487. break;
  488. #ifdef I77_BRAIN_STORM
  489. case PS_UPDATE_HD_LOCK_MODE:
  490. gps->hd_lock_mode = (BYTE)value;
  491. save_change = TRUE;
  492. break;
  493. case PS_UPDATE_HD_COLOR_SPACE:
  494. {
  495. BYTE outputResolution = I77_GetResolution();
  496. gps->lastest_hdmi_mode.color_space = (BYTE)value;
  497. _loadInfoFrames((BYTE)value, outputResolution,FALSE);
  498. }
  499. save_change = TRUE;
  500. break;
  501. #endif//I77_BRAIN_STORM
  502. #endif //I76_COMPANION_CHIP
  503. case PS_UPDATE_PROG_INTER_SETTING:
  504. //<<<Roger add to save PSO mode,020624
  505. gps->prog_inter_select = (BYTE) (value&0xFF);
  506. gps->pso_mode=(BYTE)((value>>8) &0xFF);
  507. //>>>
  508. save_change = TRUE;
  509. break;
  510. #ifdef A_SD340E 
  511. #ifdef USE_I64_TV_SHAPE_SETTING
  512. case PS_UPDATE_USER_TV_SHAPE:
  513. dbg_printf(("nI_PS_Update - USER TV Shape: %d", (BYTE)value));
  514. #ifdef D_SCART_OUTPUT
  515. if ( PS_USER_TV169 == (value&0xff) )
  516. ScartLL_VMOD(SCART_VMOD_16V9);
  517. else
  518. ScartLL_VMOD(SCART_VMOD_4V3);
  519. #endif
  520. gps->user_tv_shape= (BYTE) value;
  521. switch(gps->user_tv_shape)
  522. {
  523. case PS_USER_TV43PS:
  524. gps->tv_shape= (BYTE)PS_TV43;
  525. gps->view_mode = (BYTE)VIEW_MODE_PAN_SCAN;
  526. break;
  527. case PS_USER_TV43LB:
  528. gps->tv_shape= (BYTE)PS_TV43;
  529. gps->view_mode = (BYTE)VIEW_MODE_AUTO_FIT;
  530. break;
  531. case PS_USER_TV169:
  532. gps->tv_shape= (BYTE)PS_TV169;
  533. gps->view_mode = (BYTE)VIEW_MODE_FILL;
  534. break;
  535. }
  536.         save_change = TRUE;
  537.         break;
  538. #endif
  539. #endif
  540. case PS_UPDATE_TV_SHAPE:
  541. dbg_printf(("nI_PS_Update - TV Shape: %d", (BYTE)value));
  542. #ifdef D_SCART_OUTPUT //BT012603: added
  543. if ( PS_TV169 == (value&0xff) )
  544. ScartLL_VMOD(SCART_VMOD_16V9);
  545. else
  546. ScartLL_VMOD(SCART_VMOD_4V3);
  547. #endif //D_SCART_OUTPUT //BT012603: added
  548. gps->tv_shape= (BYTE) value;
  549.         save_change = TRUE;
  550. break;
  551. case PS_UPDATE_VIEW_MODE:
  552. dbg_printf(("nI_PS_Update - Screen Mode : %il",value)); 
  553. gps->view_mode= (BYTE) (value);
  554. save_change = TRUE;
  555. break;
  556. case PS_UPDATE_VID_OUT:
  557. dbg_printf(("nI_PS_Update - Video output Mode : %il",value));
  558. #ifdef D_SCART_OUTPUT //BT012603: added
  559. if ( VID_OUT_RGB == (value&0xff) )
  560. ScartLL_VFMD(SCART_VFMD_RGB);
  561. else
  562. ScartLL_VFMD(SCART_VFMD_CVBS);
  563. #endif //D_SCART_OUTPUT //BT012603: added
  564. gps->vid_out = (BYTE) (value);
  565. save_change = TRUE;
  566. break;
  567. #ifdef SWITCH_BETWEEN_PSO_AND_NON_PSO //billt_0402_2004
  568. case PS_UPDATE_PREV_VID:
  569. gps->prev_vid_out = (BYTE) (value);
  570. save_change = TRUE;
  571. break;
  572. #endif
  573. case PS_UPDATE_BE_CTRL_SETTING:
  574. dbg_printf(("nI_PS_Update - BE  Control : %i",value));
  575. gps->be_ctrl = (BYTE)(value);
  576. IFNDEF(Decoder_Macro.bNOT_STORE_VIDEO_BE_EE_VALUE)
  577. save_change = TRUE;
  578. ENDIF
  579. break;
  580. case PS_UPDATE_EE_CTRL_SETTING:
  581. dbg_printf(("nI_PS_Update - EE Control : %i",value));
  582. gps->ee_ctrl = (BYTE)(value);
  583. IFNDEF(Decoder_Macro.bNOT_STORE_VIDEO_BE_EE_VALUE)
  584. save_change = TRUE;
  585. ENDIF
  586. break;
  587. #ifdef SUPPORT_CAPTURE_LOGO
  588. case PS_UPDATE_DISP_LOGO_SETTING:
  589. dbg_printf(("nI_PS_Update - disply logo : %il",value));
  590. gps->disp_logo = (BYTE)(value);
  591. save_change = TRUE;
  592. break;
  593. case PS_UPDATE_CAPTURE_LOGO_SIZE:
  594. dbg_printf(("nI_PS_Update - capture logo size: %il",value));
  595. gps->captureLogoKWords = (WORD)(value);
  596. save_change = TRUE;
  597. break;
  598. case PS_UPDATE_CL_AR_SETTING:
  599. dbg_printf(("nI_PS_Update - capture logo size: %il",value));
  600. gps->cl_AR = (BYTE)(value);
  601. save_change = TRUE;
  602. break;
  603. case PS_UPDATE_CL_OUTSCALLING_SETTING:
  604. dbg_printf(("nI_PS_Update - capture logo size: %il",value));
  605. gps->cl_OutScalling = (BYTE)(value);
  606. save_change = TRUE;
  607. break;
  608. case PS_UPDATE_WAIT_FOR_CAPTURE_LOGO_READY:
  609. sig_sem(SEM_READY_FOR_CL_ID);
  610. wai_sem(SEM_CL_FINISHED_ID);
  611. break;
  612. #endif //SUPPORT_CAPTURE_LOGO
  613. case PS_UPDATE_JPG_VIEW_SETTING:
  614. #ifdef D_ENABLE_SETUP_JPG_SIZE //DM1015 enable setup the option for JPG view,original/full screen size.
  615. dbg_printf(("nI_PS_Update - JPG View Control : %il",value)); 
  616. gps->jpg_size = (BYTE)(value);
  617. save_change = TRUE;
  618. #endif //D_ENABLE_SETUP_JPG_SIZE
  619. break;
  620. case PS_UPDATE_JPG_INTERVAL_SETTING:
  621. #ifdef D_ENABLE_SETUP_JPG_INTERVAL
  622. dbg_printf(("nI_PS_Update - JPG Interval Control : %il",value)); 
  623. gps->jpg_interval = (BYTE)(value);
  624. save_change = TRUE;
  625. #endif
  626. break;
  627. case PS_UPDATE_PARENTAL_LEVEL:
  628. dbg_printf(("nI_PS_Update - Parental level : %il",value)); 
  629. gps->parental_level = (BYTE)(value);
  630. save_change = TRUE;
  631. break;
  632. case PS_UPDATE_PARENTAL_PASSWORD:
  633. dbg_printf(("nI_PS_Update - Parental password : %il",value));
  634. #if defined(EXINO2) && defined(D_USE_CUSTOMER_RESERVED_SETTING)   // SEC CH.KO041604
  635. gps->customer_reserved |= B_CUSTOMER_PREVIOUSLY_SET_PASSWORD;
  636.                 //Reset parental paswword saved
  637. if ( value == INITIAL_PASSWORD )
  638. gps->parental_password_saved = gps->parental_password;
  639. #endif 
  640. gps->parental_password = (WORD) value;
  641. save_change = TRUE;
  642. break;
  643. case PS_UPDATE_DVD_MENU_LANGUAGE:
  644. dbg_printf(("nI_PS_Update - DVD menu language : %il",value)); 
  645. gps->dvd_menu_language = (WORD)(value);
  646. save_change = TRUE;
  647. break;
  648. case PS_UPDATE_AUDIO_LANGUAGE:
  649. dbg_printf(("nI_PS_Update - Audio language : %il",value));
  650. gps->audio_language = (WORD)(value);
  651. save_change = TRUE;
  652. break;
  653. case PS_UPDATE_SUBTITLE_LANGUAGE:
  654. dbg_printf(("nI_PS_Update - Subtitle language : %il",value)); 
  655. gps->subtitle_language = (WORD)(value);
  656. save_change = TRUE;
  657. break;
  658. #ifdef D_AUX_SUBTITLE_SELECT
  659. case PS_UPDATE_AUX_SUBTITLE:
  660. dbg_printf(("nI_PS_Update - Subtitle language : %il",value)); 
  661. gps->aux_subtitle = (BYTE)(value);
  662. save_change = TRUE;
  663. break;
  664. #endif
  665. #ifdef D_LANGUAGE_OTHERS
  666. case PS_UPDATE_SUBTITLE_OTHERS_LANGUAGE:
  667. dbg_printf(("nI_PS_Update - Subtitle Others language : %il",value));
  668. gps->subtitle_others_language = (WORD)(value);
  669. save_change = TRUE;
  670. break;
  671. case PS_UPDATE_AUDIO_OTHERS_LANGUAGE:
  672. dbg_printf(("nI_PS_Update - Audio Others language : %il",value));
  673. gps->audio_others_language = (WORD)(value);
  674. save_change = TRUE;
  675. break;
  676. case PS_UPDATE_DVD_MENU_OTHERS_LANGUAGE:
  677. dbg_printf(("nI_PS_Update - Menu Others language : %il",value));
  678. gps->menu_others_language = (WORD)(value);
  679. save_change = TRUE;
  680. break;
  681. #endif
  682. #ifdef VIRTUAL_SURROUND_ENABLE
  683. case PS_UPDATE_VITUAL_SURROUND_EFFECT:
  684. dbg_printf(("nI_PS_Update - VIRTUAL SURROUND : %il",value));
  685. gps->threeD_effect = (BYTE)(value);
  686. gtps.m3dEffect = (BYTE)(value);
  687. save_change = TRUE;
  688.       break;
  689. #endif
  690. #ifdef D_VIDEO_HD_COM_SETTING
  691. case PS_UPDATE_VIDEO_HD_COM:
  692. dbg_printf(("nI_PS_Update - VIDEO HD COM : %il",value));
  693. gps->video_hd_com = (BYTE)(value);
  694. save_change = TRUE;
  695. break;
  696. #endif
  697. #ifdef D_AUDIO_DOWNMIX_MODE_SETTING
  698. case PS_UPDATE_DOWNMIX_MODE_SETTING:
  699. dbg_printf(("nI_PS_Update - DOWNMIX MODE : %il",value));
  700. gps->downmix_mode = (BYTE)(value);
  701. save_change = TRUE;
  702. break;
  703. #endif
  704. #ifdef D_AUTO_STANDBY_SETTING
  705. case PS_UPDATE_AUTO_STANDBY_SETTING:
  706. dbg_printf(("nI_PS_Update - AUTO STANDBY : %il",value));
  707. gps->auto_standy_enable = (BYTE)(value);
  708. save_change = TRUE;
  709. break;
  710. #endif
  711. case PS_UPDATE_OSD_MENU_LANGUAGE:
  712. dbg_printf(("nI_PS_Update - OSD menu language : %il",value)); 
  713. gps->osd_menu_language = (WORD)(value);
  714. save_change = TRUE;
  715. break;
  716. #ifdef SPECTRUM_EQUALIZER
  717. case PS_UPDATE_GRAPHIC_EQUALIZER_MODE:
  718. gtps.mGeMode = (BYTE) value;
  719. break;
  720. #endif
  721. #ifdef SPECTRUM_EQUALIZER
  722. case PS_UPDATE_SPECTRUM_ANALYZER:
  723. DEC_get_spectrum_analyzer( sa_value);
  724. break;
  725. #endif
  726. //Zoran Dm0105 Enable user change the region code in special case!
  727. case PS_UPDATE_REGION_CODE:
  728. dbg_printf(("nI_PS_Update - Region Code : %il",value)); 
  729. gps->region_code = (BYTE)(value);
  730. save_change = TRUE;
  731. break;
  732. //DM0105
  733. //#ifdef VCD_SELECTION_ENABLE
  734.     case PS_UPDATE_VCD_PLAYABLE_MODE:
  735. dbg_printf(("nI_PS_Update - Macrovision Mode : %il",value));
  736. gps->vcd_playable_mode = (WORD)(value);
  737. save_change = TRUE;
  738. break;   
  739. //#endif
  740. // <<<<<FW0310 Add macrovision switch
  741. #ifdef MACROVISION_SELECTION_ENABLE//ZORAN LX0327: merge from ZCH
  742.     case PS_UPDATE_MACROVISION_MODE:
  743. dbg_printf(("nI_PS_Update - Macrovision Mode : %il",value));
  744. gps->macrovision_mode = (WORD)(value);
  745. save_change = TRUE;
  746. break;   
  747. #endif //MACROVISION_SELECTION_ENABLE
  748. // FW0310 >>>>>>>>>>
  749. #ifdef D_USE_CUSTOMER_RESERVED_SETTING
  750.     case PS_UPDATE_CUSTOMER_RESERVED:
  751. dbg_printf(("nI_PS_Update - Customer Reserved : %02x",value)); 
  752. gps->customer_reserved = (BYTE) value;
  753. if ( value & B_CUSTOMER_PREVIOUSLY_POWERED_ON )
  754.   save_change = TRUE;
  755. else
  756.   PS_RestoreFactoryDefault();
  757. break;   
  758. #endif // D_USE_CUSTOMER_RESERVED_SETTING
  759.     case PS_UPDATE_TO_FACTORY_SETTING:
  760. {
  761. #ifdef K1_WL
  762. extern void cpu_hardware_reset(void);
  763. #endif
  764. #ifndef RESET_REGION_CODE
  765. BYTE pre_region_code = gps->region_code;
  766. #endif
  767. WORD pre_parental_password = gps->parental_password;
  768. BYTE pre_parental_level = gps->parental_level;
  769. BYTE pre_vcd_playable_mode = gps->vcd_playable_mode;
  770. #ifdef TUNER_ENABLE
  771. WORD pradio_index[MAX_FM_STATION];
  772. BYTE  Pre_station_index=gps->CurrentFMStationIndex; 
  773. WORD  Pre_CurrentFrequency=    gps->CurrentFrequency;
  774. int i;
  775. #endif
  776. #ifdef  AVI_DRM_SUPPORT
  777.     BYTE drmmemoryPacked_Temp[PACKED_ALLOCATION_BYTES];
  778. memcpy(drmmemoryPacked_Temp,& gps->drmmemoryPacked, PACKED_ALLOCATION_BYTES);
  779. #endif
  780. OSD_TurnOff();//tecobest gxd 20050916在Setup中设定Reset后,Setup菜单取消后会出现MP3/MPEG4菜单,
  781. #ifdef TUNER_ENABLE
  782. for(i=0;i<MAX_FM_STATION;i++)
  783. pradio_index[i]=gps->FMRadioStations[i];
  784. #endif
  785. dbg_printf(("nI_PS_Update - Restore factory settings")); 
  786. PS_RestoreFactoryDefault();
  787. #ifndef RESET_REGION_CODE
  788. gps->region_code = pre_region_code;
  789. #endif
  790. gps->parental_password = pre_parental_password;
  791. gps->parental_level = pre_parental_level;
  792. gps->vcd_playable_mode = pre_vcd_playable_mode;
  793. #ifdef  AVI_DRM_SUPPORT
  794. memcpy(&gps->drmmemoryPacked,drmmemoryPacked_Temp,  PACKED_ALLOCATION_BYTES);
  795. #endif
  796. #ifdef TUNER_ENABLE
  797. for(i=0;i<MAX_FM_STATION;i++)
  798. gps->FMRadioStations[i]=pradio_index[i];
  799. gps->CurrentFMStationIndex=Pre_station_index;
  800. gps->CurrentFrequency=Pre_CurrentFrequency;
  801. #endif
  802. PS_Save();
  803. #ifdef DEFAULT_POWER_OFF_STATE
  804. g_power_state = POWER_SEQUENCE_ON_REQUESTED;
  805. #endif
  806. #ifdef INTERNAL_MEM_CARD_READER
  807. if( IS_PLAYING_CARD )
  808. FcuTerminate();
  809. #endif // INTERNAL_MEM_CARD_READER
  810. #ifdef D_SOFT_RESET
  811. cpu_soft_reset();
  812. #else
  813. cpu_hardware_reset();
  814. #endif
  815. }
  816. break;   
  817. // <<< ZORAN SH0613:Support Front Display setting
  818. #ifdef D_FRONT_DISPLAY_SETTING
  819. case PS_UPDATE_FRONT_DISPLAY_SETTING:
  820. dbg_printf(("nI_PS_Update - Front Display setting : %04x",value));
  821. gps->frontDisplay = (BYTE) value;
  822. save_change = TRUE; // ZRN SH0626:must be saved
  823. break;
  824. #endif // D_FRONT_DISPLAY_SETTING
  825. // ZORAN CDE0613 >>>
  826. #if defined(D_STILL_MODE_INTERPOLATION_ENABLED) //ZKR JK0325
  827. case PS_UPDATE_STILL_MODE_INTERPOLATION:
  828. dbg_printf(("nI_PS_Update - Still Mode Interpolation : %04x",value)); 
  829. //tr_printf(("nI_PS_Update - Still Mode Interpolation : %04x",value)); 
  830. gps->still_mode_interpol = (BYTE) value;
  831. save_change = TRUE;
  832. break;
  833. #endif
  834. // <<< ZRN SH0731:Added Black Level setting for Internal Video Encoder (CVE)
  835. #ifdef D_CVE_BLACKLEVEL_SETTING
  836. case PS_UPDATE_CVE_BLACKLEVEL_SETTING:
  837. dbg_printf(("nI_PS_Update - CVE BlackLevel : %04x",value)); 
  838. gps->cve_blacklevel = (BOOL) value;
  839. save_change = TRUE;
  840. break;
  841. #endif
  842. // >>>
  843. #ifdef PS_UPDATE_TVG_MODE
  844. case PS_UPDATE_TVG_MODE:
  845. dbg_printf(("set tvg mode to be: %iln",value));
  846. PS_Set_TVG_Mode_Value((BYTE)value);
  847. break;
  848. #endif
  849. #ifdef TV_GUARDIAN_ENABLE
  850. case PS_UPDATE_TVG_CC:
  851. dbg_printf(("set tvg cc to be: %iln",value));
  852. PS_Set_TVG_CC_Value((BYTE)value);
  853. save_change = TRUE;
  854. break;
  855. #endif
  856. #ifdef TV_GUARDIAN_ENABLE
  857. case PS_UPDATE_TVG_CC_CHANNEL:
  858. dbg_printf(("set tvg cc to be: %iln",value));
  859. PS_Set_TVG_CC_Channel_Value((BYTE)value);
  860. save_change = TRUE;
  861. break;
  862. #endif
  863. case PS_UPDATE_OSD_SWITCHER:
  864. dbg_printf(("set osd switcher to: %iln",value));
  865. gps->osd_onoff = (BOOL)(value);
  866. save_change = TRUE;
  867. break;
  868. case PS_UPDATE_SCREEN_SAVER_ENABLE: //DM092502 For screen save on off
  869. #ifdef SCREEN_SAVER_SELECTION
  870. dbg_printf(("set screen saver switcher to: %iln",value));
  871. gps->screen_saver_enable = (BYTE)(value);
  872. save_change = TRUE;
  873. #endif
  874. break;
  875. case PS_UPDATE_BG_SELECT:
  876. #ifdef BACKGROUND_SELECTABLE
  877. dbg_printf(("set bg to be: %02xn", value));
  878. gps->ucBackGroundSelect = (BYTE)value;
  879. save_change = TRUE;
  880. #endif
  881. break;
  882. case PS_UPDATE_DRC_CONTROL:
  883. gps->ucDRCCtrl = (WORD)value;
  884. save_change = TRUE;
  885. break;
  886. #ifdef MULTIPLE_3D_EFFECT_CHOICE
  887. case PS_UPDATE_3D_EFFECT:
  888. gps->uc3DEffect = (BYTE)value;
  889. save_change = TRUE;
  890. break;
  891. #endif
  892. #ifdef D_ENABLE_SETUP_CNTRCTRL
  893. case PS_UPDATE_CNTR_CTRL:
  894. gps->cntr_speaker_ctrl = (BYTE)value;
  895. save_change = TRUE;
  896. break;
  897. #endif
  898. #ifdef D_ENABLE_SETUP_REARCTRL
  899. case PS_UPDATE_REAR_CTRL:
  900. gps->rear_speaker_ctrl = (BYTE)value;
  901. save_change = TRUE;
  902. break;
  903. #endif
  904. case PS_UPDATE_PANORAMA:
  905. gps->Panorama = (BYTE)value;
  906. save_change = TRUE;
  907. break;
  908. case PS_UPDATE_DEC_MODE:
  909. AS_Set_Enhancement_Mode( (BYTE)value );
  910. save_change = TRUE;
  911. break;
  912. case PS_UPDATE_AIN_PRLGII_MODE:
  913. #ifdef AUX_IN_ENABLE
  914. gps->ain_mode = (BYTE)value;
  915. save_change = TRUE;
  916. #endif
  917. break;
  918. case PS_UPDATE_MUSIC_MODE:
  919. gps->Hall_effect = (BYTE)value;
  920. save_change = TRUE;
  921. break;
  922. case PS_UPDATE_DIMENSION_CTRL:
  923. gps->Dimension_ctrl = (BYTE)value;
  924. save_change = TRUE;
  925. break;
  926. case PS_UPDATE_CENTER_WIDTH_CTRL:
  927. gps->Center_width_ctrl = (BYTE)value;
  928. save_change = TRUE;
  929.     break;
  930. #ifdef D_ENABLE_DOWN_SAMPLING
  931. case PS_UPDATE_DOWN_SAMPLING_SETTING:
  932.      gps->downsampling_setting = (BYTE) value;
  933.          save_change = TRUE;
  934.     break;
  935. #endif
  936. #ifdef ANGLE_MARK_SETTING
  937. case PS_UPDATE_ANGLE_MARK_SETTING:
  938. gps->angle_mark = (BYTE) value;
  939. tr_printf(("Set Angle Mark to be %04xn", value));
  940. save_change = TRUE;
  941. break;
  942. #endif
  943. #ifdef SMART_NAVI_MENU_SETTING
  944. case PS_UPDATE_SMART_NAVI_SETTING:
  945. gps->smart_navi = (BYTE) value;
  946. tr_printf(("Set Smart Navi Menu to be %02xn", value));
  947. save_change = TRUE;
  948. break;
  949. #endif
  950.    
  951. #ifdef FOUR_LEVEL_TRANSPARENCY //BT030703
  952. case PS_UPDATE_TRANSPARENCY_LEVEL:
  953. if ( PS_GET_TRANSPARENCY_LEVEL != (BYTE)value )
  954. save_change = TRUE;
  955. gps->menuTrans = (BYTE) value;
  956. tr_printf(("Set Setup Menu Trans to be %02xn", value));
  957. break;
  958. #endif
  959. #ifdef TUNER_ENABLE
  960. //#ifdef SAVE_STEREO_MONO_MODE
  961. case PS_STEREO_MONO:
  962. gps->CurrentStereoMono= (BYTE)(value);
  963. save_change = TRUE;
  964. break;
  965. //#endif
  966.     case PS_UPDATE_TUNER_WORKMODE:
  967. dbg_printf(("nI_PS_Update - Tuner work mode : %il",(BYTE) value)); 
  968. gps->TunerWorkmode = (BYTE) value;
  969. #ifndef NOT_SAVER_WORKMODE
  970. save_change = TRUE;
  971. #endif
  972. break;  
  973.     case PS_UPDATE_AMFM_FLAG:
  974. dbg_printf(("nI_PS_Update - AM_FM : %il",(BYTE) value)); 
  975. gps->bAmFm = (BYTE) value;
  976.         save_change = TRUE;
  977. break;   
  978. #if  1   //KISENSE_PRE
  979.     case PS_UPDATE_PRETUN_FLAG:
  980. dbg_printf(("nI_PS_Update - PRE_TUN : %il",(BYTE) value)); 
  981. gps->CurrentPretunStation = (BYTE) value;
  982.         save_change = TRUE;
  983. break;   
  984. #endif
  985. case PS_UPDATE_FMSTATION_TOTALNUM:
  986. dbg_printf(("nI_PS_Update - Total FM station numbers : %il",(BYTE) value)); 
  987. gps->TotalFMStationNum = (BYTE) value;
  988.         save_change = TRUE;
  989. break;
  990. case PS_UPDATE_AMSTATION_TOTALNUM:
  991. dbg_printf(("nI_PS_Update - Total AM station numbers : %il",(BYTE) value)); 
  992. gps->TotalAMStationNum = (BYTE) value;
  993.         save_change = TRUE;
  994. break;
  995. case PS_UPDATE_FMSTATION_CURNUM:
  996. dbg_printf(("nI_PS_Update - Current FM station index : %il",(BYTE) value)); 
  997. gps->CurrentFMStationIndex = (BYTE) value;
  998.         save_change = TRUE;
  999. break;
  1000. case PS_UPDATE_AMSTATION_CURNUM:
  1001. dbg_printf(("nI_PS_Update - Current AM station index : %il",(BYTE) value)); 
  1002. #if 0 //STATION_50
  1003. gps->CurrentAMStationIndex = (BYTE) value;
  1004.          save_change = TRUE;
  1005. #else
  1006. gps->CurrentFMStationIndex = (BYTE) value;
  1007.          save_change = TRUE;
  1008. #endif
  1009. break;
  1010. case PS_UPDATE_FMSTATION_FREQUENCY:
  1011. dbg_printf(("nI_PS_Update - Current FM station frequency : %il",(BYTE) value)); 
  1012. gps->FMRadioStations[gps->CurrentFMStationIndex] = (WORD) value;
  1013.         save_change = TRUE;
  1014. break;
  1015. case PS_UPDATE_AMSTATION_FREQUENCY:
  1016. dbg_printf(("nI_PS_Update - Current AM station frequency : %il",(BYTE) value)); 
  1017. #if 0 //STATION_50
  1018. gps->AMRadioStations[gps->CurrentAMStationIndex] = (WORD) value;
  1019.          save_change = TRUE;
  1020. #else
  1021. gps->FMRadioStations[gps->CurrentFMStationIndex] = (WORD) value;
  1022.          save_change = TRUE;
  1023. #endif
  1024. break;
  1025. case PS_UPDATE_FREQUENCY:
  1026. dbg_printf(("nI_PS_Update - Current FM station frequency : %il",(BYTE) value)); 
  1027. gps->CurrentFrequency = (WORD) value;
  1028.          save_change = TRUE;
  1029. break;
  1030. case PS_UPDATE_ONE_FMSTATION_FREQUENCY:
  1031.         save_change = TRUE;
  1032. break;
  1033. case PS_UPDATE_ONE_AMSTATION_FREQUENCY:
  1034.         save_change = TRUE;
  1035. break;
  1036. case PS_CLEAR_ALL_AM_STATION_PARAM:
  1037. {
  1038. dbg_printf(("nI_PS_Update - Clear all AM radio station param"));
  1039. gps->TotalAMStationNum = 0;
  1040. gps->CurrentAMStationIndex = 0;
  1041. // for(StationIndex = 0; StationIndex < MAX_AM_STATION; StationIndex++)
  1042. // gps->AMRadioStations[StationIndex] = 0;
  1043. // save_change = TRUE;
  1044. }
  1045. break;
  1046. case PS_CLEAR_ALL_FM_STATION_PARAM:
  1047. {
  1048. dbg_printf(("nI_PS_Update - Clear all FM radio station param"));
  1049. gps->TotalFMStationNum = 0;
  1050. gps->CurrentFMStationIndex = 0;
  1051. // for(StationIndex = 0; StationIndex < MAX_FM_STATION; StationIndex++)
  1052. // gps->FMRadioStations[StationIndex] = 0;
  1053. // save_change = TRUE;
  1054. }
  1055. break;
  1056. #endif
  1057. #ifdef DIGITAL_AMPLIFIER_ENABLE
  1058. case PS_UPDATE_AMPLIFIER_VOLUME:  
  1059. gps->ChannelVolume[(BYTE)((value>>12)&0x0F)] = (BYTE)(value&0xFF);
  1060. #ifdef ENABLE_DAC_VOLUME_CONTROL
  1061.    if(!((value>>12)&0x0F))   
  1062. AUDIODAC_VOL_CONTROL(value&0xFF);// add to control the audio dac volume
  1063. #endif
  1064.         save_change = TRUE;
  1065. break;
  1066. case PS_UPDATE_SOUND_EFFECT:
  1067. dbg_printf(("nI_PS_Update - Current sound effect : %il",(BYTE) value)); 
  1068. gps->SoundEffect = (BYTE) value;
  1069.         save_change = TRUE;
  1070. break;
  1071. case PS_UPDATE_BASE_SET:
  1072. dbg_printf(("nI_PS_Update - Current base set : %il",(BYTE) value)); 
  1073. gps->BaseSet = (BYTE) value;
  1074.         save_change = TRUE;
  1075. break;
  1076. case PS_UPDATE_BASE_TONE:
  1077. dbg_printf(("nI_PS_Update - Current base tone : %il",(BYTE) value)); 
  1078. gps->BaseTone = (BYTE) value;
  1079.         save_change = TRUE;
  1080. break;
  1081. case PS_UPDATE_TREMBLE_TONE:
  1082. dbg_printf(("nI_PS_Update - Current tremble tone : %il",(BYTE) value)); 
  1083. gps->TrembleTone = (BYTE) value;
  1084.         save_change = TRUE;
  1085. break;
  1086. case PS_UPDATE_DRC_MODE:
  1087. dbg_printf(("nI_PS_Update - Current DRC mode : %il",(BYTE) value)); 
  1088. gps->DRCMode = (BYTE) value;
  1089.         save_change = TRUE;
  1090. break;
  1091. case PS_UPDATE_DRC_ATTACK_SPEED:
  1092. dbg_printf(("nI_PS_Update - Current attack speed : %il",(BYTE) value)); 
  1093. gps->DRCAttackSpeed = (BYTE) value;
  1094.         save_change = TRUE;
  1095. break;
  1096. case PS_UPDATE_DRC_RELEASE_SPEED:
  1097. dbg_printf(("nI_PS_Update - Current release speed : %il",(BYTE) value)); 
  1098. gps->DRCReleaseSpeed = (BYTE) value;
  1099.         save_change = TRUE;
  1100. break;
  1101. case PS_UPDATE_DRC_ATTACK_RANGE:
  1102. dbg_printf(("nI_PS_Update - Current attack threshold : %il",(BYTE) value)); 
  1103. gps->DRCAttackThreshold = (BYTE) value;
  1104.         save_change = TRUE;
  1105. break;
  1106. case PS_UPDATE_DRC_RELEASE_RANGE:
  1107. dbg_printf(("nI_PS_Update - Current attack threshold : %il",(BYTE) value)); 
  1108. gps->DRCReleaseThreshold = (BYTE) value;
  1109.         save_change = TRUE;
  1110. break;
  1111. #endif
  1112. #ifdef SPDIF_IN_CH_SELECT
  1113. case PS_UPDATE_DIGITAL_AUDIO_IN_CH:
  1114. dbg_printf(("nI_PS_Update - Current attack threshold : %il",(BYTE) value)); 
  1115. gps->dig_aud_in_chan= (BYTE) value;
  1116. save_change = TRUE;
  1117. break;
  1118. #endif
  1119. //ZCH, Sean07102003
  1120. #ifdef D_CONTROL_6_CHANNEL_VOLUME
  1121.    case PS_UPDATE_SEPARATE_VOLUME :
  1122. dbg_printf(("nI_PS_Update - Current channel volume : %il",(BYTE)value)); 
  1123. gps->separate_volume[((value >> 8) & 0xFF) % 6] = (value & 0xFF);
  1124. gcst.mSeparateVolumeFlag = 0x1;
  1125. save_change = TRUE;
  1126. break;
  1127. #endif //D_CONTROL_6_CHANNEL_VOLUME
  1128. case PS_UPDATE_BASS_MANAGEMENT:
  1129. dbg_printf(("nI_PS_Update - Bass Management : %d", (BYTE)value));
  1130. #if defined(D_SIMPLIFIED_AUDIO_SETUP)&&defined(D_ENABLE_SUBWOOFER_OPTION)
  1131. {
  1132. BYTE tempstore = (BYTE) value;
  1133. if(gps->BassManagement != tempstore)
  1134. {
  1135. gps->BassManagement = tempstore;
  1136. if (gps->SpeakersConfigIndex != gps->SpeakersConfigIndexBak)
  1137. {
  1138. gps->SpeakersConfigIndex = gps->SpeakersConfigIndexBak;
  1139. }
  1140.         save_change = TRUE;
  1141. }
  1142. else if (gps->SpeakersConfigIndex != SPEAKERS_DEFAULT_CONFIG)
  1143. {
  1144. gps->SpeakersConfigIndexBak = gps->SpeakersConfigIndex;
  1145.         save_change = TRUE;
  1146.     }
  1147. }
  1148. #else
  1149. gps->BassManagement = (BYTE) value;
  1150.         save_change = TRUE;
  1151. #endif
  1152. break;
  1153. //SeanLiu_0902_2004
  1154. #ifdef D_ENABLE_DOLBY_EX_SUPPORT
  1155. case PS_UPDATE_DOLBY_EX_SETTING :
  1156. dbg_printf(("nI_PS_Update -Dolby EX mode : %d", (BYTE)value));
  1157. gps->Dolby_EX_BS_Speakers = (BYTE) value;
  1158. save_change = TRUE;
  1159.  break;
  1160. #endif
  1161. //<<<SeanLiu_0902_2004
  1162. #ifdef EZVIEW_ENABLED // ZKR GL031204 : Changed the macro name.
  1163. case PS_UPDATE_EZVIEW_MODE:
  1164. dbg_printf(("nI_PS_Update - EZView Mode : %d", (BYTE)value));
  1165. gps->ezview_mode = (BYTE) value;
  1166.          save_change = TRUE;
  1167. break;
  1168. #endif
  1169. // <<< SEC CH.KO012203 : for rear, center speaker setting
  1170. #ifdef D_ENABLE_SPEAKER_SETUP
  1171. case PS_UPDATE_BASS_RECFG_SETTING:
  1172. gps->bass_configration = (BYTE)(value);
  1173. save_change = TRUE;
  1174. break;
  1175. case PS_UPDATE_CENTERSPK_SETTING:
  1176. gps->centerspk = (BYTE)(value);
  1177. save_change = TRUE;
  1178. break;
  1179. case PS_UPDATE_REARSPK_SETTING:
  1180. gps->rearspk = (BYTE)(value);
  1181. save_change = TRUE;
  1182. break;
  1183. case PS_UPDATE_SW_SETTING:
  1184. gps->subwoofer = (BYTE)(value);
  1185. save_change = TRUE;
  1186. break; 
  1187. #endif 
  1188. #ifdef MPP_SUPPORT
  1189. case PS_UPDATE_MPP_ENABLE:
  1190. gcst.mMPP_Enable = (value) ? TRUE : FALSE;
  1191. break;
  1192. #endif
  1193. #ifdef EXINO2  //ZKR ML:040604 Dts digital out  option.
  1194. #ifdef D_DIGITAL_DTS_OUT_OPTION
  1195. case PS_UPDATE_DIGITAL_OUT:
  1196. gps->dts_digital_out = (BYTE)value;
  1197. save_change = TRUE;
  1198. break;
  1199. #endif
  1200. #endif
  1201. #ifdef D_ENABLE_HEADPHONE_DETECT
  1202. case PS_UPDATE_HEADPHONE_SETTING :
  1203. gtps.mHeadPhone = (BYTE) value;
  1204. break;
  1205. #endif
  1206. #ifdef AVI_DRM_SUPPORT
  1207. case PS_UPDATE_DRM_MEMORY:
  1208. save_change = TRUE;
  1209. break;
  1210. #endif
  1211. #ifdef D_MEMORY_SETTING
  1212. case PS_UPDATE_MEMORY_SETTING:
  1213. gps->memory_mode = (BYTE) value;
  1214. save_change = TRUE;
  1215. break;
  1216. #endif
  1217. // <<< Glen.Lim.1024.2004
  1218. #ifdef D_AUTO_PLAY_MODE_SUPPORT
  1219. case PS_UPDATE_AUTO_PLAY_MODE:
  1220. gps->bAutoPlayMode = (BYTE)value;
  1221.          save_change = TRUE;
  1222. break;
  1223. #endif
  1224. // >>>
  1225. #ifdef D_SURROUND_PERFERENCE_SUPPORT
  1226. case PS_UPDATE_SURROUND_PERFERENCE:
  1227. gps->surround_perference = (BYTE)value;
  1228. save_change = TRUE;
  1229. break;
  1230. #endif
  1231. #ifdef D_CLOSE_CAPTION_SETTING
  1232. case PS_UPDATE_CLOSE_CAPTION_SETTING:
  1233. gps->close_caption_mode = (BYTE) value;
  1234. save_change = TRUE;
  1235. break;
  1236. #endif
  1237. #ifdef USE_JOG
  1238. case PS_UPDATE_MAIN_VOL_LEFT:
  1239. gps->left_volume = (BYTE) value;
  1240. b_vol_change = 1;
  1241. save_change = FALSE;
  1242. break;   
  1243. case PS_UPDATE_MAIN_VOL_RIGHT:
  1244. gps->right_volume = (BYTE) value;
  1245. b_vol_change = 1;
  1246. save_change = FALSE;
  1247. break;   
  1248. case PS_UPDATE_SUR_VOL_LEFT:
  1249. gps->sur_left_volume = (BYTE) value;
  1250. b_vol_change = 1;
  1251. save_change = FALSE;
  1252. break;   
  1253. case PS_UPDATE_SUR_VOL_RIGHT:
  1254. gps->sur_right_volume = (BYTE) value;
  1255. b_vol_change = 1;
  1256. save_change = FALSE;
  1257. break;   
  1258. case PS_UPDATE_CENTER_VOL:
  1259. gps->center_volume = (BYTE) value;
  1260. b_vol_change = 1;
  1261. save_change = FALSE;
  1262. break;   
  1263. case PS_UPDATE_SUB_VOL:
  1264. gps->sub_volume = (BYTE) value;
  1265. b_vol_change = 1;
  1266. save_change = FALSE;
  1267. break;   
  1268. case PS_UPDATE_MAIN_VOLUME:
  1269. gps->main_volume = (BYTE) value;
  1270. b_vol_change = 1;
  1271. /*
  1272. gps->left_volume = (BYTE) value;
  1273. gps->right_volume = (BYTE) value;
  1274. gps->sur_left_volume = (BYTE) value;
  1275. gps->sur_right_volume = (BYTE) value;
  1276. gps->center_volume = (BYTE) value;
  1277. gps->sub_volume = (BYTE) value;
  1278. */
  1279. save_change = FALSE;
  1280. break;   
  1281. case PS_UPDATE_ALL_VOLUME:
  1282. PS_Save();
  1283. b_vol_change = 0;
  1284. g_is_saving_vol = 0;
  1285. return;   
  1286. #endif
  1287. default :
  1288. dbg_printf(("nI_PS_Update - Unknown update commandn")); 
  1289. }
  1290. dbg_printf(("n"));
  1291. if (save_change){
  1292. PS_Save();
  1293. }
  1294. }
  1295. #ifdef TV_GUARDIAN_ENABLE
  1296. BYTE PS_Get_TVG_Mode_Value(void)
  1297. {
  1298. return ((gps->tvg_mode )&TVG_MODE_M);
  1299. }
  1300. BYTE PS_Get_TVG_CC_Value(void)
  1301. {
  1302. return ((((gps->tvg_mode)&TVG_CC_M)>>2)&0x03);
  1303. }
  1304. BYTE PS_Get_TVG_CC_Channel_Value(void)
  1305. {
  1306. return( ( ( ( gps->tvg_mode ) & TVG_CC_CHANNEL_M ) >> 4 ) & 0x03);
  1307. }
  1308. void PS_Set_TVG_Mode_Value(BYTE value)
  1309. {
  1310. gps->tvg_mode = ( gps->tvg_mode & ( ~TVG_MODE_M ) ) | value;
  1311. }
  1312. void PS_Set_TVG_CC_Value(BYTE value)
  1313. {
  1314. gps->tvg_mode = ( ( gps->tvg_mode ) & ( ~TVG_CC_M ) ) | ( ( value << 2 ) & TVG_CC_M );
  1315. }
  1316. void PS_Set_TVG_CC_Channel_Value(BYTE value)
  1317. {
  1318. gps->tvg_mode = ( ( gps->tvg_mode ) & ( ~TVG_CC_CHANNEL_M ) ) | ( ( value << 4 ) & TVG_CC_CHANNEL_M );
  1319. }
  1320. #endif
  1321. #ifdef AVI_DRM_SUPPORT
  1322. BOOL PS_LoadDrmMemory(unsigned char *data, unsigned int count)
  1323. {
  1324. memcpy(data, &gps->drmmemoryPacked[0], count);
  1325. return TRUE;
  1326. }
  1327. BOOL PS_SaveDrmMemory(unsigned char *data, unsigned int count)
  1328. {
  1329. memcpy(&gps->drmmemoryPacked[0], data, count);
  1330. return TRUE;
  1331. }
  1332. #endif
  1333. //Change the gps->** to function.
  1334. WORD PS_GetDVDMenuLanguage(void)
  1335. {
  1336. return gps->dvd_menu_language;
  1337. }
  1338. WORD PS_GetAudioLanguage(void)
  1339. {
  1340. return gps->audio_language;
  1341. }
  1342. WORD PS_GetSubtitleLanguage(void)
  1343. {
  1344. return gps->subtitle_language;
  1345. }
  1346. WORD PS_GetParentalCountry(void)
  1347. {
  1348. return gps->parental_country;
  1349. }
  1350. BYTE PS_GetRegionCode(void)
  1351. {
  1352. return gps->region_code;
  1353. }
  1354. BYTE PS_GetParentalLevel(void)
  1355. {
  1356. return gps->parental_level;
  1357. }
  1358. BYTE PS_GetTVStandard(void)
  1359. {
  1360. return gps->tv_standard;
  1361. }
  1362. // <<< Glen.Lim.1024.2004
  1363. #ifdef D_AUTO_PLAY_MODE_SUPPORT
  1364. BYTE PS_GetAutoPlayMode(void)
  1365. {
  1366. return gps->bAutoPlayMode;
  1367. }
  1368. #endif
  1369. // >>>
  1370. #ifdef D_SURROUND_PERFERENCE_SUPPORT
  1371. BYTE PS_GetSurroundPerferenceParam(void)
  1372. {
  1373. return gps->surround_perference;
  1374. }
  1375. #endif
  1376. BYTE PS_GetViewMode(void)
  1377. {
  1378. return gps->view_mode;
  1379. }
  1380. BYTE PS_GetTVShape(void)
  1381. {
  1382. return gps->tv_shape;
  1383. }
  1384. #ifdef EZVIEW_ENABLED 
  1385. BYTE PS_GetEzviewMode()
  1386. {
  1387. return gps->ezview_mode;
  1388. }
  1389. #endif
  1390. BYTE PS_GetVideoMode()
  1391. {
  1392. return gps->vid_out;
  1393. }