UartTxd.c
上传用户:caisangzi8
上传日期:2013-10-25
资源大小:15756k
文件大小:41k
源码类别:

DVD

开发平台:

C/C++

  1. //Kenny 2002/7/16 for UART to communicate with external MCU
  2. #include "global.h"
  3. #include "uart.h"
  4. #include "uartfifo.h"
  5. #include "osd.h"
  6. #include "iop.h"
  7. #include "setup.h"
  8. #include "UartTxd.h"
  9. #include "func.h"
  10. #include "user_init.h"
  11. //#define OSD_DBG_TXD
  12. //#define UART_DBG_TXD
  13. /////////////////////////////////////////////////////////////
  14. // Maybe software UART would be used to communicate with 8051.
  15. // Now I use it to print debug message.
  16. #ifdef SOFT_UART_OUT
  17. extern int PutSoftUartChar(BYTE *, int);
  18. extern int GetSoftUartChar(BYTE *, int);
  19. #define PutString(x, y) PutSoftUartChar(x, y)
  20. #define GetString(x, y) GetSoftUartChar(x, y)
  21. #else
  22. #define PutString(x, y) 0
  23. #define PutString(x, y) 0
  24. #endif
  25. //////////////////////////////////////////////////////
  26. #ifdef SERVO_UART
  27. extern UINT8 gcRS232Data[5];
  28. extern UINT8 gwWPtr;
  29. extern UINT8 cReveiveRs232,cTranRs232;
  30. void reset_uart_servo(void)
  31. {
  32.     UART1_set_baudrate(UART_BAUD_88200);
  33.     //UART1_set_baudrate(UART_BAUD_44100);
  34. }
  35. extern void RS232SevoLink(UINT8 cmd);
  36. int pollingUARTServo(void)
  37. {
  38. #if 0
  39. if ( cTranRs232==1 )
  40. {
  41.      cTranRs232 = 0;
  42.          gcParam0 = 0x00;//UL_BYTE3(dwTargetPBA);
  43.          gcParam1 = 0x0a;//UL_BYTE2(dwTargetPBA);
  44.          gcParam2 = 0x00;//UL_BYTE1(dwTargetPBA);
  45.          gcParam3 = 0x00;//UL_BYTE0(dwTargetPBA);
  46.  
  47.  //RS232SevoLink(55);  // Start-Up
  48.  RS232SevoLink(11);  // Seek
  49.  return 0;
  50. }
  51. #endif
  52.   while (UART1_rx_rdy())
  53.   {
  54.       gcRS232Data[gwWPtr] = (regs0->uart1_data);
  55.   //printf("Rcv : %xn",gcRS232Data[gwWPtr]);
  56.   //io_write("R");  
  57.   if (gwWPtr >= 2)
  58.   {
  59. cReveiveRs232 = 1;
  60. gwWPtr = 0;
  61. //io_write("U2n");  
  62.   }
  63.   else
  64.   {
  65. cReveiveRs232 = 0;
  66.     gwWPtr ++;
  67.   }
  68.   }
  69. return 0;
  70. }
  71. #endif   
  72. #ifdef SUPPORT_UART_COMMAND
  73. #ifndef NEW_UART_COMMAND   //CONTROL VALUE
  74. int nInputLevel = 0;
  75. BYTE aryCommandBuf[UART_REV_MAX_BYTE];
  76. BYTE aryTXDBuf[UART_TXD_MAX_BYTE];
  77. int nCommandIndex = 0;
  78. int nCommandSize;
  79. // for sending
  80. #ifdef UART_DBG_TXD
  81. BYTE aryDbgBuf[UART_REV_MAX_BYTE];
  82. #endif
  83. // temporary initialize some global variables here. The values should be set from 51
  84. BYTE nCurrentDVDMode = MODE_DVD;
  85. BYTE nCurrentVolMode = VOL_MODE_MAIN;
  86. BYTE nMainVol = 8;
  87. BYTE nFrontVol = 8;
  88. BYTE nCenterVol = 8;
  89. BYTE nRearVol = 8;
  90. int nMainLRBalance = 0;
  91. int nSurLRBalance = 0;
  92. BYTE nQSEffect = 4;
  93. BYTE nTreble = 8;
  94. BYTE nBass = 8;
  95. #else    //NEW UART CONTROL VALUE
  96. int nInputLevel = 0;
  97. BYTE aryCommandBuf[UART_REV_MAX_BYTE];
  98. BYTE aryTXDBuf[UART_TXD_MAX_BYTE];
  99. int nCommandIndex = 0;
  100. int nCommandSize;
  101. // for sending
  102. #ifdef UART_DBG_TXD
  103. BYTE aryDbgBuf[UART_REV_MAX_BYTE];
  104. #endif
  105. // temporary initialize some global variables here. The values should be set from 51
  106. BYTE nCurrentDVDMode = MODE_DVD;
  107. BYTE nCurrentVolMode = VOL_MODE_MAIN;
  108. BYTE nMainVol = MAINVOL;
  109. int  nFrontVol = FRONTVOL;
  110. int  nCenterVol = CENTERVOL;
  111. int  nRearVol = REARVOL;
  112. int  nSubwooferVol=SUBWOOFERVOL;
  113. int nMainBalance_L= MAINBALANCE_L;
  114. int nMainBalance_R= MAINBALANCE_R;
  115. int nSurBalance_L= SURBALANCE_L;
  116. int nSurBalance_R= SURBALANCE_R;
  117. BYTE nQSEffect = QSEFFECT;
  118. int nTreble = TREBLEVOL;
  119. int nBass = BASSVOL;
  120. #endif       //END IF DEFINE VALUE
  121. void uart_io_write_wait(const char *s);
  122. #define hex2asc(x) (((x)>=10)?(x)+'A'-10:(x)+'0')
  123. char asc2hex(char c)
  124. {
  125.     if ((c >= '0') && (c < '9' + 1))
  126.         return c - '0';
  127.     if ((c >= 'A') && (c < 'F' + 1))
  128.         return c - 'A' + 10;
  129.     if ((c >= 'a') && (c < 'f' + 1))
  130.         return c - 'a' + 10;
  131.     return 0;
  132. }
  133. void uart_io_write_wait(const char *s)
  134. {
  135.     int  c;
  136.     while ((c = *s++) != 0)
  137.     {
  138.         IO_PUTC_WAIT(c);
  139.     }
  140. }
  141. #define UART_PUTS(s...) 
  142. do { 
  143.    psprintf(linebuf, ##s); uart_io_write_wait(linebuf); 
  144. } while (0)
  145. #define TO_8051_PUTS(s...) 
  146. do { 
  147.    psprintf(linebuf, "X %s",##s); uart_io_write_wait(linebuf); 
  148. } while (0)
  149. void putdec(char c)
  150. {
  151.     if (c >= 100)
  152.     {
  153.         UART_PUTC(hex2asc(c / 100));
  154.         c = c % 100;
  155.     }
  156.     if (c >= 10)
  157.     {
  158.         UART_PUTC(hex2asc(c / 10));
  159.         c = c % 10;
  160.     }
  161.     else
  162.         UART_PUTC('0');
  163.     UART_PUTC(hex2asc(c));
  164. }
  165. void puthex(BYTE b)
  166. {
  167.     UART_PUTS(" 0x");
  168. UART_PUTC(hex2asc(b >> 4));
  169. UART_PUTC(hex2asc(b & 0xF));
  170. UART_PUTC(' ');
  171. }
  172. void reset_uart(void)
  173. {
  174.     //UART1_set_baudrate(UART_BAUD_115200);
  175.     UART1_set_baudrate(UART_BAUD_9600);
  176. }
  177. void Inform_MCUOK(void)
  178. {// send power-on command to 8051
  179. //BYTE i;           //we send 10 times
  180. // for(i=0;i<5;i++)
  181.     // {  
  182. UART_PUTC_EXACT(COMMAND_START);
  183. UART_PUTC_EXACT(POWER_ON);
  184. UART_PUTC_EXACT(POWER_ON_OK);
  185. UART_PUTC_EXACT(COMMAND_END);     
  186. //delay_1ms(10);
  187.     //} 
  188. int pollingUART51(void)
  189. {
  190.     while (!IsUARTRxEmpty())
  191.     {
  192.         BYTE c = UART_GETC();
  193.         PutString(&c, 1);
  194.         switch (nInputLevel)
  195.         {
  196.         case 0:
  197.             if (COMMAND_START == c)
  198.             {
  199.                 nInputLevel = 1;
  200.                 nCommandIndex = 0;
  201.                 nCommandSize = 0;
  202.             }
  203.             break;
  204.         case 1:
  205.             if ((COMMAND_END == c) || (nCommandIndex >= UART_REV_MAX_BYTE))
  206.             {
  207.                 nInputLevel = 0;
  208.                 nCommandSize = nCommandIndex;
  209.                 return 1;
  210.             }
  211.             else
  212.                 aryCommandBuf[nCommandIndex++] = c;
  213.         default:
  214.             break;
  215.         }
  216.     }
  217.     return 0;
  218. }
  219. void do_uart_command(void)
  220. {
  221.     int i;
  222. #ifdef UART_DBG_TXD
  223.     PutString("nrEXC--", 7);
  224. #endif
  225. #ifdef UART_DBG_TXD
  226.     for (i = 0; i < nCommandSize; i++)
  227.     {
  228.         puthex(aryCommandBuf[i]);
  229.         PutString(" ", 1);
  230.     }
  231.     PutString("nr", 2);
  232. #endif
  233. #ifdef OSD_DBG_TXD
  234. /*
  235.     for (i = nCommandSize; i < UART_REV_MAX_BYTE; i++)
  236. aryCommandBuf[i] = 0;
  237.     
  238.   if((aryCommandBuf[0] == 0x01) && (aryCommandBuf[1] == 0x02) && (aryCommandBuf[2] == 0x03) && (aryCommandBuf[3] == 0x04) && 
  239.   (aryCommandBuf[4] == 0x05) && (aryCommandBuf[5] == 0x06) && (aryCommandBuf[6] == 0x07) && (aryCommandBuf[7] == 0x08) && 
  240.   (aryCommandBuf[8] == 0x09) && (aryCommandBuf[9] == 0x0a) && (aryCommandBuf[10] == 0x0b) && (aryCommandBuf[11] == 0x0c) &&
  241.   (aryCommandBuf[12] == 0x0d) && (aryCommandBuf[13] == 0x0e) && (aryCommandBuf[14] == 0x0f))
  242.   {
  243.   //psprintf(RegionValStr[REGION1],"EXC %02x:%02x:%02x:%02x:%02x",aryCommandBuf[1],aryCommandBuf[2],aryCommandBuf[3],aryCommandBuf[4],aryCommandBuf[5]);
  244.   psprintf(RegionValStr[REGION1], "OK");
  245.   PrintOsdMsg(STR_OS_SPACE,REGION1, 1, 1);
  246.   }
  247.   else
  248.   {
  249.   //psprintf(RegionValStr[REGION1],"EXC %02x:%02x:%02x:%02x:%02x",aryCommandBuf[1],aryCommandBuf[2],aryCommandBuf[3],aryCommandBuf[4],aryCommandBuf[5]);
  250.   psprintf(RegionValStr[REGION1], "NG");
  251.   PrintOsdMsg(STR_OS_SPACE,REGION1, 1, 1);
  252.   }
  253. */
  254. #endif
  255.     switch (aryCommandBuf[0])
  256.     {
  257.     case DIGI_ELEC_VAL:
  258.         // show aryCommandBuf[1] (volume value) on VFD for 3 seconds
  259.         nCurrentVolMode=VOL_MODE_MAIN;
  260.         nMainVol = aryCommandBuf[1];
  261.         psprintf(RegionValStr[REGION1], "MAIN VOL %d",aryCommandBuf[1]);
  262.         PrintOsdMsg(STR_OS_SPACE, REGION1, 2, 1);
  263.         do_updata_vfd_vol();
  264.         break;
  265.     case ELEC_VOL:
  266.         // get aryCommandBuf[1] (TOTAL_VOL), aryCommandBuf[2] (FRONT_VOL), aryCommandBuf[3] (CENT_VOL),
  267.         // aryCommandBuf[4] (REAR_VOL), aryCommandBuf[5] (FRONT_BALANCE), aryCommandBuf[6] (READ_BALANCE),
  268.         // aryCommandBuf[7] (QS_EFFECT), aryCommandBuf[8] (TREBLE_EFFECT), aryCommandBuf[9] (BASS_EFFECT)
  269.         nMainVol = aryCommandBuf[1];
  270. #ifndef  NEW_UART_COMMAND  
  271.         nFrontVol = aryCommandBuf[2];
  272.         nCenterVol = aryCommandBuf[3];
  273.         nRearVol = aryCommandBuf[4];
  274.         nMainLRBalance = aryCommandBuf[5];
  275.         nSurLRBalance = aryCommandBuf[6];
  276.         nQSEffect = aryCommandBuf[7];
  277.         nTreble = aryCommandBuf[8];
  278.         nBass = aryCommandBuf[9];
  279. #else
  280.         if(aryCommandBuf[2]&0x80)
  281. nFrontVol=(0-(aryCommandBuf[2]&0x0f));
  282.         else
  283. nFrontVol=((aryCommandBuf[2]&0x0f));
  284.         if(aryCommandBuf[3]&0x80)
  285. nCenterVol=(0-(aryCommandBuf[3]&0x0f));
  286.         else
  287. nCenterVol=((aryCommandBuf[3]&0x0f));
  288.         if(aryCommandBuf[4]&0x80)
  289. nRearVol=(0-(aryCommandBuf[4]&0x0f));
  290.         else
  291. nRearVol=((aryCommandBuf[4]&0x0f));   
  292.         
  293.         if(aryCommandBuf[5]&0x80)
  294. nSubwooferVol= (0-(aryCommandBuf[5]&0x0f));
  295.         else
  296. nSubwooferVol= (aryCommandBuf[5]&0x0f);
  297.         if(aryCommandBuf[6]&0x80)
  298. nMainBalance_L= (0-(aryCommandBuf[6]&0x0f));
  299.         else
  300. nMainBalance_L= (aryCommandBuf[6]&0x0f);
  301.         if(aryCommandBuf[7]&0x80)
  302. nMainBalance_R= (0-(aryCommandBuf[7]&0x0f));
  303.         else
  304. nMainBalance_R= (aryCommandBuf[7]&0x0f);
  305.         if(aryCommandBuf[8]&0x80)
  306. nSurBalance_L= (0-(aryCommandBuf[8]&0x0f));
  307.         else
  308. nSurBalance_L= (aryCommandBuf[8]&0x0f);
  309.         if(aryCommandBuf[9]&0x80)
  310. nSurBalance_R= (0-(aryCommandBuf[9]&0x0f));
  311.         else
  312. nSurBalance_R= (aryCommandBuf[9]&0x0f);
  313.         nQSEffect = aryCommandBuf[10];
  314.         if(aryCommandBuf[11]&0x80)
  315. nTreble=(0-(aryCommandBuf[11]&0x0f));
  316.         else
  317. nTreble = (aryCommandBuf[11]&0x0f);
  318.         if(aryCommandBuf[12]&0x80)
  319. nBass=(0-(aryCommandBuf[12]));
  320.         else
  321. nBass = (aryCommandBuf[12]&0x0f);
  322. #endif
  323. #if 1
  324.         psprintf(RegionValStr[REGION3], "%d %d %d %d %d %d %d %d %d %d %d %d",
  325. nMainVol, nFrontVol, nCenterVol,
  326. nRearVol, nSubwooferVol, nMainBalance_L,
  327. nMainBalance_R, nSurBalance_L, nSurBalance_R,
  328. nQSEffect,nTreble,nBass);
  329.         PrintOsdMsg(STR_OS_SPACE, REGION3, 2, 1);
  330. #endif
  331.         break;
  332.     default:
  333.         break;
  334.     }
  335. }
  336. #ifndef NEW_UART_COMMAND
  337. void IRSwitchMode()
  338. {
  339.     BYTE bModeChanged = 0;
  340.     if (action_click)
  341.     {
  342.         bModeChanged = 1;
  343.         if (MODE_DVD == nCurrentDVDMode)
  344.             nCurrentDVDMode = MODE_AV1;
  345.         else
  346.             nCurrentDVDMode++;
  347.     }
  348.     switch (nCurrentDVDMode)
  349.     {
  350.     case MODE_AV1:
  351.         psprintf(RegionValStr[REGION1], "AV1 MODE");
  352.         // send mode command to 8051
  353.         if (bModeChanged)
  354.         {
  355.             UART_PUTC_EXACT(COMMAND_START);
  356.             UART_PUTC_EXACT(AV_MODE);
  357.             UART_PUTC_EXACT(AV1_MODE);
  358.             UART_PUTC_EXACT(COMMAND_END);
  359. //            aryDbgBuf[0] = COMMAND_START;
  360. //            aryDbgBuf[1] = AV_MODE;
  361. //            aryDbgBuf[2] = AV1_MODE;
  362. //            aryDbgBuf[3] = COMMAND_END;
  363. //            PutString(aryDbgBuf, 4);
  364. #ifdef OSD_DBG_TXD
  365.             psprintf(RegionValStr[REGION3], "SEND 8051 AV1_MODE");
  366.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  367. #endif
  368.         }
  369.         break;
  370.     case MODE_AV2:
  371.         psprintf(RegionValStr[REGION1], "AV2 MODE");
  372.         // send mode command to 8051
  373.         if (bModeChanged)
  374.         {
  375.             UART_PUTC_EXACT(COMMAND_START);
  376.             UART_PUTC_EXACT(AV_MODE);
  377.             UART_PUTC_EXACT(AV2_MODE);
  378.             UART_PUTC_EXACT(COMMAND_END);
  379. #ifdef OSD_DBG_TXD
  380.             psprintf(RegionValStr[REGION3], "SEND 8051 AV2_MODE");
  381.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  382. #endif
  383.         }
  384.         break;
  385.     case MODE_TUNER:
  386.         psprintf(RegionValStr[REGION1], "TUNER MODE");
  387.         // send mode command to 8051
  388.         if (bModeChanged)
  389.         {
  390.             UART_PUTC_EXACT(COMMAND_START);
  391.             UART_PUTC_EXACT(AV_MODE);
  392.             UART_PUTC_EXACT(TUNER_MODE);
  393.             UART_PUTC_EXACT(COMMAND_END);
  394. #ifdef OSD_DBG_TXD
  395.             psprintf(RegionValStr[REGION3], "SEND 8051 TUNER_MODE");
  396.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  397. #endif
  398.         }
  399.         break;
  400.     case MODE_DVD:
  401.         psprintf(RegionValStr[REGION1], "DVD MODE");
  402.         // send mode command to 8051
  403.         if (bModeChanged)
  404.         {
  405.             UART_PUTC_EXACT(COMMAND_START);
  406.             UART_PUTC_EXACT(AV_MODE);
  407.             UART_PUTC_EXACT(DVD_MODE);
  408.             UART_PUTC_EXACT(COMMAND_END);
  409. #ifdef OSD_DBG_TXD
  410.             psprintf(RegionValStr[REGION3], "SEND 8051 DVD_MODE");
  411.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  412. #endif
  413.         }
  414.         break;
  415.     default:
  416.         return;
  417.     }
  418.     PrintOsdMsg(STR_OS_SPACE, REGION1, 3, 1);
  419. }
  420. void IRSwitchVolMode()
  421. {
  422.     BYTE bModeChanged = 0;
  423.     if (action_click)
  424.     {
  425.         bModeChanged = 1;
  426.         if (VOL_MODE_BASS == nCurrentVolMode)
  427.             nCurrentVolMode = VOL_MODE_MAIN;
  428.         else
  429.             nCurrentVolMode++;
  430.     }
  431.     switch (nCurrentVolMode)
  432.     {
  433.     case VOL_MODE_MAIN:
  434.         psprintf(RegionValStr[REGION1], "VOLUME MODE MAIN: %d", nMainVol);
  435.         break;
  436.     case VOL_MODE_FRONT:
  437.         psprintf(RegionValStr[REGION1], "VOLUME MODE FRONT: %d", nFrontVol);
  438.         break;
  439.     case VOL_MODE_CENTER:
  440.         psprintf(RegionValStr[REGION1], "VOLUME MODE CENTER: %d", nCenterVol);
  441.         break;
  442.     case VOL_MODE_REAR:
  443.         psprintf(RegionValStr[REGION1], "VOLUME MODE REAR: %d", nRearVol);
  444.         break;
  445.     case VOL_MODE_MAIN_LR_BALANCE:
  446.         psprintf(RegionValStr[REGION1], "MAIN_LR_BALANCE: %d", nMainLRBalance);
  447.         break;
  448.     case VOL_MODE_SUR_LR_BALANCE:
  449.         psprintf(RegionValStr[REGION1], "SUR_LR_BALANCE: %d", nSurLRBalance);
  450.         break;
  451.     case VOL_MODE_QS_EFFECT:
  452.         psprintf(RegionValStr[REGION1], "QS EFFECT: %d", nQSEffect);
  453.         break;
  454.     case VOL_MODE_TREBLE:
  455.         psprintf(RegionValStr[REGION1], "TREBLE: %d", nTreble);
  456.         break;
  457.     case VOL_MODE_BASS:
  458.         psprintf(RegionValStr[REGION1], "BASS: %d", nBass);
  459.         break;
  460.     default:
  461.         return;
  462.     }
  463.     PrintOsdMsg(STR_OS_SPACE, REGION1, 3, 1);
  464. }
  465. void IRAdjustVol(int nUpOrDown) // 1:up, 0:down
  466. {
  467.     BYTE bVolChanged = 0;
  468.     if (action_click)
  469.         bVolChanged = 1;
  470.     switch (nCurrentVolMode)
  471.     {
  472.     case VOL_MODE_MAIN:
  473.         if (bVolChanged)
  474.         {
  475.             if ((1 == nUpOrDown) && (nMainVol < VOL_MAX))
  476.                 nMainVol++;
  477.             else if ((0 == nUpOrDown) && (nMainVol > VOL_MIN))
  478.                 nMainVol--;
  479.             else
  480.                 break;
  481.             // send volume change command to 8051
  482.             UART_PUTC_EXACT(COMMAND_START);
  483.             UART_PUTC_EXACT(TOTAL_VOL);
  484.             UART_PUTC_EXACT(nMainVol);
  485.             UART_PUTC_EXACT(COMMAND_END);
  486. #ifdef OSD_DBG_TXD
  487.             psprintf(RegionValStr[REGION3], "SEND 8051 MAIN VOL: -%d", nMainVol);
  488.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  489. #endif
  490.         }
  491.         psprintf(RegionValStr[REGION1], "VOLUME MODE MAIN: -%d", nMainVol);
  492.         break;
  493.     case VOL_MODE_FRONT:
  494.         if (bVolChanged)
  495.         {
  496.             if ((1 == nUpOrDown) && (nFrontVol < VOL_MAX))
  497.                 nFrontVol++;
  498.             else if ((0 == nUpOrDown) && (nFrontVol > VOL_MIN))
  499.                 nFrontVol--;
  500.             else
  501.                 break;
  502.             // send volume change command to 8051
  503.             UART_PUTC_EXACT(COMMAND_START);
  504.             UART_PUTC_EXACT(FRONT_VOL);
  505.             UART_PUTC_EXACT(nFrontVol);
  506.             UART_PUTC_EXACT(COMMAND_END);
  507. #ifdef OSD_DBG_TXD
  508.             psprintf(RegionValStr[REGION3], "SEND 8051 FRONT VOL: -%d", nFrontVol);
  509.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  510. #endif
  511.         }
  512.         psprintf(RegionValStr[REGION1], "VOLUME MODE FRONT: -%d", nFrontVol);
  513.         break;
  514.     case VOL_MODE_CENTER:
  515.         if (bVolChanged)
  516.         {
  517.             if ((1 == nUpOrDown) && (nCenterVol < VOL_MAX))
  518.                 nCenterVol++;
  519.             else if ((0 == nUpOrDown) && (nCenterVol > VOL_MIN))
  520.                 nCenterVol--;
  521.             else
  522.                 break;
  523.             // send volume change command to 8051
  524.             UART_PUTC_EXACT(COMMAND_START);
  525.             UART_PUTC_EXACT(CENT_VOL);
  526.             UART_PUTC_EXACT(nCenterVol);
  527.             UART_PUTC_EXACT(COMMAND_END);
  528. #ifdef OSD_DBG_TXD
  529.             psprintf(RegionValStr[REGION3], "SEND 8051 CENTER VOL: -%d", nCenterVol);
  530.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  531. #endif
  532.         }
  533.         psprintf(RegionValStr[REGION1], "VOLUME MODE CENTER: -%d", nCenterVol);
  534.         break;
  535.     case VOL_MODE_REAR:
  536.         if (bVolChanged)
  537.         {
  538.             if ((1 == nUpOrDown) && (nRearVol < VOL_MAX))
  539.                 nRearVol++;
  540.             else if ((0 == nUpOrDown) && (nRearVol > VOL_MIN))
  541.                 nRearVol--;
  542.             else
  543.                 break;
  544.             // send volume change command to 8051
  545.             UART_PUTC_EXACT(COMMAND_START);
  546.             UART_PUTC_EXACT(REAR_VOL);
  547.             UART_PUTC_EXACT(nRearVol);
  548.             UART_PUTC_EXACT(COMMAND_END);
  549. #ifdef OSD_DBG_TXD
  550.             psprintf(RegionValStr[REGION3], "SEND 8051 REAR VOL: -%d", nRearVol);
  551.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  552. #endif
  553.         }
  554.         psprintf(RegionValStr[REGION1], "VOLUME MODE REAR: -%d", nRearVol);
  555.         break;
  556.     case VOL_MODE_MAIN_LR_BALANCE:
  557.         if (bVolChanged)
  558.         {
  559.             if ((1 == nUpOrDown) && (nMainLRBalance < BALANCE_MAX))
  560.                 nMainLRBalance++;
  561.             else if ((0 == nUpOrDown) && (nMainLRBalance > BALANCE_MIN))
  562.                 nMainLRBalance--;
  563.             else
  564.                 break;
  565.             // send volume change command to 8051
  566.             UART_PUTC_EXACT(COMMAND_START);
  567.             UART_PUTC_EXACT(FRONT_BALANCE);
  568.             switch (nMainLRBalance)
  569.             {
  570.             case -1:
  571.                 UART_PUTC_EXACT(0x81);
  572.                 break;
  573.             case -2:
  574.                 UART_PUTC_EXACT(0x82);
  575.                 break;
  576.             case -3:
  577.                 UART_PUTC_EXACT(0x83);
  578.                 break;
  579.             default:
  580.                 UART_PUTC_EXACT((BYTE)nMainLRBalance);
  581.                 break;
  582.             }
  583.             UART_PUTC_EXACT(COMMAND_END);
  584. #ifdef OSD_DBG_TXD
  585.             psprintf(RegionValStr[REGION3], "SEND 8051 FRONT LR BAL: %d", nMainLRBalance);
  586.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  587. #endif
  588.         }
  589.         psprintf(RegionValStr[REGION1], "MAIN_LR_BALANCE: %d", nMainLRBalance);
  590.         break;
  591.     case VOL_MODE_SUR_LR_BALANCE:
  592.         if (bVolChanged)
  593.         {
  594.             if ((1 == nUpOrDown) && (nSurLRBalance < BALANCE_MAX))
  595.                 nSurLRBalance++;
  596.             else if ((0 == nUpOrDown) && (nSurLRBalance > BALANCE_MIN))
  597.                 nSurLRBalance--;
  598.             else
  599.                 break;
  600.             // send volume change command to 8051
  601.             UART_PUTC_EXACT(COMMAND_START);
  602.             UART_PUTC_EXACT(REAR_BALANCE);
  603.             switch (nSurLRBalance)
  604.             {
  605.             case -1:
  606.                 UART_PUTC_EXACT(0x81);
  607.                 break;
  608.             case -2:
  609.                 UART_PUTC_EXACT(0x82);
  610.                 break;
  611.             case -3:
  612.                 UART_PUTC_EXACT(0x83);
  613.                 break;
  614.             default:
  615.                 UART_PUTC_EXACT((BYTE)nSurLRBalance);
  616.                 break;
  617.             }
  618.             UART_PUTC_EXACT(COMMAND_END);
  619. #ifdef OSD_DBG_TXD
  620.             psprintf(RegionValStr[REGION3], "SEND 8051 SUR LR BAL: %d", nSurLRBalance);
  621.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  622. #endif
  623.         }
  624.         psprintf(RegionValStr[REGION1], "SUR_LR_BALANCE: %d", nSurLRBalance);
  625.         break;
  626.     case VOL_MODE_QS_EFFECT:
  627.         if (bVolChanged)
  628.         {
  629.             if ((1 == nUpOrDown) && (nQSEffect < QS_MAX))
  630.                 nQSEffect++;
  631.             else if ((0 == nUpOrDown) && (nQSEffect > QS_MIN))
  632.                 nQSEffect--;
  633.             else
  634.                 break;
  635.             // send volume change command to 8051
  636.             UART_PUTC_EXACT(COMMAND_START);
  637.             UART_PUTC_EXACT(QS_EFFECT);
  638.             UART_PUTC_EXACT(nQSEffect);
  639.             UART_PUTC_EXACT(COMMAND_END);
  640. #ifdef OSD_DBG_TXD
  641.             psprintf(RegionValStr[REGION3], "SEND 8051 QS: %d", nQSEffect);
  642.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  643. #endif
  644.         }
  645.         psprintf(RegionValStr[REGION1], "QS EFFECT: %d", nQSEffect);
  646.         break;
  647.     case VOL_MODE_TREBLE:
  648.         if (bVolChanged)
  649.         {
  650.             if ((1 == nUpOrDown) && (nTreble < VOL_MAX))
  651.                 nTreble++;
  652.             else if ((0 == nUpOrDown) && (nTreble > VOL_MIN))
  653.                 nTreble--;
  654.             else
  655.                 break;
  656.             // send volume change command to 8051
  657.             UART_PUTC_EXACT(COMMAND_START);
  658.             UART_PUTC_EXACT(TREBLE_EFFECT);
  659.             UART_PUTC_EXACT(nTreble);
  660.             UART_PUTC_EXACT(COMMAND_END);
  661. #ifdef OSD_DBG_TXD
  662.             psprintf(RegionValStr[REGION3], "SEND 8051 TREBLE: %d", nTreble);
  663.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  664. #endif
  665.         }
  666.         psprintf(RegionValStr[REGION1], "TREBLE: %d", nTreble);
  667.         break;
  668.     case VOL_MODE_BASS:
  669.         if (bVolChanged)
  670.         {
  671.             if ((1 == nUpOrDown) && (nBass < VOL_MAX))
  672.                 nBass++;
  673.             else if ((0 == nUpOrDown) && (nBass > VOL_MIN))
  674.                 nBass--;
  675.             else
  676.                 break;
  677.             // send volume change command to 8051
  678.             UART_PUTC_EXACT(COMMAND_START);
  679.             UART_PUTC_EXACT(BASS_EFFECT);
  680.             UART_PUTC_EXACT(nBass);
  681.             UART_PUTC_EXACT(COMMAND_END);
  682. #ifdef OSD_DBG_TXD
  683.             psprintf(RegionValStr[REGION3], "SEND 8051 BASS: %d", nBass);
  684.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  685. #endif
  686.         }
  687.         psprintf(RegionValStr[REGION1], "BASS: %d", nBass);
  688.         break;
  689.     default:
  690.         return;
  691.     }
  692.     PrintOsdMsg(STR_OS_SPACE, REGION1, 3, 1);
  693. }
  694. #else   //FOR NEW UART COMMAND
  695. void IRSwitchMode()
  696. {
  697.     //BYTE bModeChanged = 0;
  698. /* if (action_click)
  699.     {
  700. bModeChanged = 1;
  701. if (MODE_DVD == nCurrentDVDMode)
  702. nCurrentDVDMode = MODE_AV1;
  703. else
  704. nCurrentDVDMode++;
  705.     }
  706. */
  707.     switch (nCurrentDVDMode)
  708.     {
  709.     case MODE_AV1:
  710.         psprintf(RegionValStr[REGION1], "AV1 MODE");
  711.         // send mode command to 8051
  712.         //if (bModeChanged)
  713.         {
  714.             UART_PUTC_EXACT(COMMAND_START);
  715.             UART_PUTC_EXACT(AV1_MODE);
  716.             UART_PUTC_EXACT(AV1_MODE_D);
  717.             UART_PUTC_EXACT(COMMAND_END);
  718. //            aryDbgBuf[0] = COMMAND_START;
  719. //            aryDbgBuf[1] = AV_MODE;
  720. //            aryDbgBuf[2] = AV1_MODE;
  721. //            aryDbgBuf[3] = COMMAND_END;
  722. //            PutString(aryDbgBuf, 4);
  723. #ifdef OSD_DBG_TXD
  724.             psprintf(RegionValStr[REGION3], "SEND 8051 AV1_MODE");
  725.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  726. #endif
  727.         }
  728.         break;
  729.     case MODE_AV2:
  730.         psprintf(RegionValStr[REGION1], "AV2 MODE");
  731.         // send mode command to 8051
  732.         //if (bModeChanged)
  733.         {
  734.             UART_PUTC_EXACT(COMMAND_START);
  735.             UART_PUTC_EXACT(AV2_MODE);
  736.             UART_PUTC_EXACT(AV2_MODE_D);
  737.             UART_PUTC_EXACT(COMMAND_END);
  738. #ifdef OSD_DBG_TXD
  739.             psprintf(RegionValStr[REGION3], "SEND 8051 AV2_MODE");
  740.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  741. #endif
  742.         }
  743.         break;
  744.     case MODE_TUNER:
  745.         psprintf(RegionValStr[REGION1], "TUNER MODE");
  746.         // send mode command to 8051
  747. // if (bModeChanged)
  748.         {
  749.             UART_PUTC_EXACT(COMMAND_START);
  750.             UART_PUTC_EXACT(TUNER_MODE);
  751.             UART_PUTC_EXACT(TUNER_MODE_D);
  752.             UART_PUTC_EXACT(COMMAND_END);
  753. #ifdef OSD_DBG_TXD
  754.             psprintf(RegionValStr[REGION3], "SEND 8051 TUNER_MODE");
  755.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  756. #endif
  757.         }
  758.         break;
  759.     case MODE_DVD:
  760.         psprintf(RegionValStr[REGION1], "DVD MODE");
  761.         // send mode command to 8051
  762.         //if (bModeChanged)
  763.         {
  764.             UART_PUTC_EXACT(COMMAND_START);
  765.             UART_PUTC_EXACT(DVD_MODE);
  766.             UART_PUTC_EXACT(DVD_MODE_D);
  767.             UART_PUTC_EXACT(COMMAND_END);
  768. #ifdef OSD_DBG_TXD
  769.             psprintf(RegionValStr[REGION3], "SEND 8051 DVD_MODE");
  770.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  771. #endif
  772.         }
  773.         break;
  774.     default:
  775.         return;
  776.     }
  777.     PrintOsdMsg(STR_OS_SPACE, REGION1, 2, 1);
  778. }
  779. void IRSwitchVolMode()
  780. {
  781.     //BYTE bModeChanged = 0;
  782.     /*if (action_click)
  783.     {
  784. bModeChanged = 1;
  785. if (VOL_MODE_BASS == nCurrentVolMode)
  786. nCurrentVolMode = VOL_MODE_MAIN;
  787. else
  788. nCurrentVolMode++;
  789.     }
  790.     */
  791.     switch (nCurrentVolMode)
  792.     {
  793.     case VOL_MODE_MAIN:
  794.         psprintf(RegionValStr[REGION1], "MAIN VOL: %dDB", nMainVol);
  795.         break;
  796.     case VOL_MODE_FRONT:
  797.         psprintf(RegionValStr[REGION1], "FRONT VOL: %dDB", nFrontVol);
  798.         break;
  799.     case VOL_MODE_CENTER:
  800.         psprintf(RegionValStr[REGION1], "CENTER VOL: %dDB", nCenterVol);
  801.         break;
  802.     case VOL_MODE_REAR:
  803.         psprintf(RegionValStr[REGION1], "REAR VOL: %dDB", nRearVol);
  804.         break;
  805.     case VOL_MODE_SUBWOOFER:
  806.         psprintf(RegionValStr[REGION1],"SW VOL: %dDB",nSubwooferVol);
  807.         break ;
  808.     case VOL_MODE_MAIN_BALANCE_L:
  809.         psprintf(RegionValStr[REGION1], "BALANCE FL VOL: %dDB", nMainBalance_L);
  810.         break;
  811.     case VOL_MODE_MAIN_BALANCE_R:
  812.         psprintf(RegionValStr[REGION1], "BALANCE FR VOL: %dDB", nMainBalance_R);
  813.         break;
  814.     case VOL_MODE_SUR_BALANCE_L:
  815.         psprintf(RegionValStr[REGION1], "BALANCE SL VOL: %dDB", nSurBalance_L);
  816.         break;
  817.     case VOL_MODE_SUR_BALANCE_R:
  818.         psprintf(RegionValStr[REGION1], "BALANCE SR VOL: %dDB", nSurBalance_R);
  819.         break;
  820.     case VOL_MODE_QS_EFFECT:
  821.         psprintf(RegionValStr[REGION1], "QSOUND: %d", nQSEffect);
  822.         break;
  823.     case VOL_MODE_TREBLE:
  824.         psprintf(RegionValStr[REGION1], "TREBLE VOL: %dDB", 2*nTreble);
  825.         break;
  826.     case VOL_MODE_BASS:
  827.         psprintf(RegionValStr[REGION1], "BASS VOL: %dDB", 2*nBass);
  828.         break;
  829.     default:
  830.         return;
  831.     }
  832.     PrintOsdMsg(STR_OS_SPACE, REGION1, 2, 1);
  833.     do_updata_vfd_vol();
  834. }
  835. void IRAdjustVol(int nUpOrDown) // 1:up, 0:down
  836. {
  837.     BYTE bVolChanged = 0;
  838.     if (action_click||timeout_vfd)
  839.         bVolChanged = 1;
  840.     switch (nCurrentVolMode)
  841.     {
  842.     case VOL_MODE_MAIN:
  843.         if (bVolChanged)
  844.         {
  845.             if ((1 == nUpOrDown) && (nMainVol < VOL_MAX))
  846.                 nMainVol++;
  847.             else if ((0 == nUpOrDown) && (nMainVol > VOL_MIN))
  848.                 nMainVol--;
  849.             else
  850.                 break;
  851.             // send volume change command to 8051
  852.             UART_PUTC_EXACT(COMMAND_START);
  853.             UART_PUTC_EXACT(TOTAL_VOL);
  854.             UART_PUTC_EXACT(nMainVol);
  855.             UART_PUTC_EXACT(COMMAND_END);
  856. #ifdef OSD_DBG_TXD
  857.             psprintf(RegionValStr[REGION3], "SEND 8051 MAIN VOL: %d", nMainVol);
  858.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  859. #endif
  860.         }
  861.         psprintf(RegionValStr[REGION1], "MAIN VOL: %dDB", nMainVol);
  862.         break;
  863.     case VOL_MODE_FRONT:
  864.         if (bVolChanged)
  865.         {
  866.             if ((1 == nUpOrDown) && (nFrontVol < VOL_ADJUST_MAN))
  867.                 nFrontVol++;
  868.             else if ((0 == nUpOrDown) && (nFrontVol > VOL_ADJUST_MIN))
  869.                 nFrontVol--;
  870.             else
  871.                 break;
  872.             // send volume change command to 8051
  873.             UART_PUTC_EXACT(COMMAND_START);
  874.             UART_PUTC_EXACT(FRONT_VOL);
  875.             switch(nFrontVol)
  876. {
  877. case -6 :
  878. UART_PUTC_EXACT(0x86);
  879. break ;
  880. case -5 :
  881. UART_PUTC_EXACT(0x85);
  882. break ;
  883. case -4 :
  884. UART_PUTC_EXACT(0x84);
  885. break ;
  886. case -3 :
  887. UART_PUTC_EXACT(0x83);
  888. break ;
  889. case -2 :
  890. UART_PUTC_EXACT(0x82);
  891. break ;
  892. case -1 :
  893. UART_PUTC_EXACT(0x81);
  894. break ;
  895. default :
  896. UART_PUTC_EXACT((BYTE)(nFrontVol));
  897. break ; 
  898. }
  899.             //UART_PUTC_EXACT(nFrontVol);
  900.             UART_PUTC_EXACT(COMMAND_END);
  901. #ifdef OSD_DBG_TXD
  902.             psprintf(RegionValStr[REGION3], "SEND 8051 FRONT VOL: %d", nFrontVol);
  903.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  904. #endif
  905.         }
  906.         psprintf(RegionValStr[REGION1], "FRONT VOL: %dDB", nFrontVol);
  907.         break;
  908.     case VOL_MODE_CENTER:
  909.         if (bVolChanged)
  910.         {
  911.             if ((1 == nUpOrDown) && (nCenterVol < VOL_ADJUST_MAN))
  912.                 nCenterVol++;
  913.             else if ((0 == nUpOrDown) && (nCenterVol > VOL_ADJUST_MIN))
  914.                 nCenterVol--;
  915.             else
  916.                 break;
  917.             // send volume change command to 8051
  918.             UART_PUTC_EXACT(COMMAND_START);
  919.             UART_PUTC_EXACT(CENT_VOL);
  920.             switch(nCenterVol)
  921. {
  922. case -6 :
  923. UART_PUTC_EXACT(0x86);
  924. break ;
  925. case -5 :
  926. UART_PUTC_EXACT(0x85);
  927. break ;
  928. case -4 :
  929. UART_PUTC_EXACT(0x84);
  930. break ;
  931. case -3 :
  932. UART_PUTC_EXACT(0x83);
  933. break ;
  934. case -2 :
  935. UART_PUTC_EXACT(0x82);
  936. break ;
  937. case -1 :
  938. UART_PUTC_EXACT(0x81);
  939. break ;
  940. default :
  941. UART_PUTC_EXACT((BYTE)(nCenterVol));
  942. break ; 
  943. }
  944.             UART_PUTC_EXACT(COMMAND_END);
  945. #ifdef OSD_DBG_TXD
  946.             psprintf(RegionValStr[REGION3], "SEND 8051 CENTER VOL: %d", nCenterVol);
  947.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  948. #endif
  949.         }
  950.         psprintf(RegionValStr[REGION1], "CENTER VOL: %dDB", nCenterVol);
  951.         break;
  952.     case VOL_MODE_REAR:
  953.         if (bVolChanged)
  954.         {
  955.             if ((1 == nUpOrDown) && (nRearVol < VOL_ADJUST_MAN))
  956.                 nRearVol++;
  957.             else if ((0 == nUpOrDown) && (nRearVol > VOL_ADJUST_MIN))
  958.                 nRearVol--;
  959.             else
  960.                 break;
  961.             // send volume change command to 8051
  962.             UART_PUTC_EXACT(COMMAND_START);
  963.             UART_PUTC_EXACT(REAR_VOL);
  964.             switch(nRearVol)
  965. {
  966. case -6 :
  967. UART_PUTC_EXACT(0x86);
  968. break ;
  969. case -5 :
  970. UART_PUTC_EXACT(0x85);
  971. break ;
  972. case -4 :
  973. UART_PUTC_EXACT(0x84);
  974. break ;
  975. case -3 :
  976. UART_PUTC_EXACT(0x83);
  977. break ;
  978. case -2 :
  979. UART_PUTC_EXACT(0x82);
  980. break ;
  981. case -1 :
  982. UART_PUTC_EXACT(0x81);
  983. break ;
  984. default :
  985. UART_PUTC_EXACT((BYTE)(nRearVol));
  986. break ; 
  987. }
  988.             UART_PUTC_EXACT(COMMAND_END);
  989. #ifdef OSD_DBG_TXD
  990.             psprintf(RegionValStr[REGION3], "SEND 8051 REAR VOL: %d", nRearVol);
  991.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  992. #endif
  993.         }
  994.         psprintf(RegionValStr[REGION1], "REAR VOL: %dDB", nRearVol);
  995.         break;
  996. case VOL_MODE_SUBWOOFER:
  997.         if (bVolChanged)
  998.         {
  999.             if ((1 == nUpOrDown) && (nSubwooferVol < VOL_ADJUST_MAN))
  1000.                 nSubwooferVol++;
  1001.             else if ((0 == nUpOrDown) && (nSubwooferVol > VOL_ADJUST_MIN))
  1002.                 nSubwooferVol--;
  1003.             else
  1004.                 break;
  1005.             // send volume change command to 8051
  1006.             UART_PUTC_EXACT(COMMAND_START);
  1007.             UART_PUTC_EXACT(SUBWOOFER_VOL);
  1008.             switch(nSubwooferVol)
  1009. {
  1010. case -6 :
  1011. UART_PUTC_EXACT(0x86);
  1012. break ;
  1013. case -5 :
  1014. UART_PUTC_EXACT(0x85);
  1015. break ;
  1016. case -4 :
  1017. UART_PUTC_EXACT(0x84);
  1018. break ;
  1019. case -3 :
  1020. UART_PUTC_EXACT(0x83);
  1021. break ;
  1022. case -2 :
  1023. UART_PUTC_EXACT(0x82);
  1024. break ;
  1025. case -1 :
  1026. UART_PUTC_EXACT(0x81);
  1027. break ;
  1028. default :
  1029. UART_PUTC_EXACT((BYTE)(nSubwooferVol));
  1030. break ; 
  1031. }
  1032.             UART_PUTC_EXACT(COMMAND_END);
  1033. #ifdef OSD_DBG_TXD
  1034.             psprintf(RegionValStr[REGION3], "SEND 8051 SW VOL: %d", nSubwooferVol);
  1035.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  1036. #endif
  1037.         }
  1038.         psprintf(RegionValStr[REGION1], "SW VOL: %dDB", nSubwooferVol);
  1039.         break;
  1040.     case VOL_MODE_MAIN_BALANCE_L:
  1041.         if (bVolChanged)
  1042.         {
  1043.             if ((1 == nUpOrDown) && (nMainBalance_L < BALANCE_MAX))
  1044.                 nMainBalance_L++;
  1045.             else if ((0 == nUpOrDown) && (nMainBalance_L > BALANCE_MIN))
  1046.                 nMainBalance_L--;
  1047.             else
  1048.                 break;
  1049.             // send volume change command to 8051
  1050.             UART_PUTC_EXACT(COMMAND_START);
  1051.             UART_PUTC_EXACT(FRONT_BALANCE_L);
  1052.             switch (nMainBalance_L)
  1053.             {
  1054.             case -1:
  1055.                 UART_PUTC_EXACT(0x81);
  1056.                 break;
  1057.             case -2:
  1058.                 UART_PUTC_EXACT(0x82);
  1059.                 break;
  1060.             case -3:
  1061.                 UART_PUTC_EXACT(0x83);
  1062.                 break;
  1063.             default:
  1064.                 UART_PUTC_EXACT((BYTE)nMainBalance_L);
  1065.                 break;
  1066.             }
  1067.             UART_PUTC_EXACT(COMMAND_END);
  1068. #ifdef OSD_DBG_TXD
  1069.             psprintf(RegionValStr[REGION3], "SEND 8051 FRONT BAL L: %d", nMainBalance_L);
  1070.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  1071. #endif
  1072.         }
  1073.         psprintf(RegionValStr[REGION1], "BALANCE FL VOL: %dDB", nMainBalance_L);
  1074.         break;
  1075.     case VOL_MODE_MAIN_BALANCE_R:
  1076.         if (bVolChanged)
  1077.         {
  1078.             if ((1 == nUpOrDown) && (nMainBalance_R < BALANCE_MAX))
  1079.                 nMainBalance_R++;
  1080.             else if ((0 == nUpOrDown) && (nMainBalance_R > BALANCE_MIN))
  1081.                 nMainBalance_R--;
  1082.             else
  1083.                 break;
  1084.             // send volume change command to 8051
  1085.             UART_PUTC_EXACT(COMMAND_START);
  1086.             UART_PUTC_EXACT(FRONT_BALANCE_R);
  1087.             switch (nMainBalance_R)
  1088.             {
  1089.             case -1:
  1090.                 UART_PUTC_EXACT(0x81);
  1091.                 break;
  1092.             case -2:
  1093.                 UART_PUTC_EXACT(0x82);
  1094.                 break;
  1095.             case -3:
  1096.                 UART_PUTC_EXACT(0x83);
  1097.                 break;
  1098.             default:
  1099.                 UART_PUTC_EXACT((BYTE)nMainBalance_R);
  1100.                 break;
  1101.             }
  1102.             UART_PUTC_EXACT(COMMAND_END);
  1103. #ifdef OSD_DBG_TXD
  1104.             psprintf(RegionValStr[REGION3], "SEND 8051 FRONT BAL R: %d", nMainBalance_R);
  1105.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  1106. #endif
  1107.         }
  1108.         psprintf(RegionValStr[REGION1], "BALANCE FR VOL: %dDB", nMainBalance_R);
  1109.         break;
  1110.         
  1111.     case VOL_MODE_SUR_BALANCE_L:
  1112.         if (bVolChanged)
  1113.         {
  1114.             if ((1 == nUpOrDown) && (nSurBalance_L < BALANCE_MAX))
  1115.                 nSurBalance_L++;
  1116.             else if ((0 == nUpOrDown) && (nSurBalance_L > BALANCE_MIN))
  1117.                 nSurBalance_L--;
  1118.             else
  1119.                 break;
  1120.             // send volume change command to 8051
  1121.             UART_PUTC_EXACT(COMMAND_START);
  1122.             UART_PUTC_EXACT(REAR_BALANCE_L);
  1123.             switch (nSurBalance_L)
  1124.             {
  1125.             case -1:
  1126.                 UART_PUTC_EXACT(0x81);
  1127.                 break;
  1128.             case -2:
  1129.                 UART_PUTC_EXACT(0x82);
  1130.                 break;
  1131.             case -3:
  1132.                 UART_PUTC_EXACT(0x83);
  1133.                 break;
  1134.             default:
  1135.                 UART_PUTC_EXACT((BYTE)nSurBalance_L);
  1136.                 break;
  1137.             }
  1138.             UART_PUTC_EXACT(COMMAND_END);
  1139. #ifdef OSD_DBG_TXD
  1140.             psprintf(RegionValStr[REGION3], "SEND 8051 SUR BAL L: %d", nSurBalance_L);
  1141.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  1142. #endif
  1143.         }
  1144.         psprintf(RegionValStr[REGION1], "BALANCE SL VOL: %dDB", nSurBalance_L);
  1145.         break;
  1146.     case VOL_MODE_SUR_BALANCE_R:
  1147.         if (bVolChanged)
  1148.         {
  1149.             if ((1 == nUpOrDown) && (nSurBalance_R < BALANCE_MAX))
  1150.                 nSurBalance_R++;
  1151.             else if ((0 == nUpOrDown) && (nSurBalance_R > BALANCE_MIN))
  1152.                 nSurBalance_R--;
  1153.             else
  1154.                 break;
  1155.             // send volume change command to 8051
  1156.             UART_PUTC_EXACT(COMMAND_START);
  1157.             UART_PUTC_EXACT(REAR_BALANCE_R);
  1158.             switch (nSurBalance_R)
  1159.             {
  1160.             case -1:
  1161.                 UART_PUTC_EXACT(0x81);
  1162.                 break;
  1163.             case -2:
  1164.                 UART_PUTC_EXACT(0x82);
  1165.                 break;
  1166.             case -3:
  1167.                 UART_PUTC_EXACT(0x83);
  1168.                 break;
  1169.             default:
  1170.                 UART_PUTC_EXACT((BYTE)nSurBalance_R);
  1171.                 break;
  1172.             }
  1173.             UART_PUTC_EXACT(COMMAND_END);
  1174. #ifdef OSD_DBG_TXD
  1175.             psprintf(RegionValStr[REGION3], "SEND 8051 SUR BAL R: %d", nSurBalance_R);
  1176.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  1177. #endif
  1178.         }
  1179.         psprintf(RegionValStr[REGION1], "BALANCE SR VOL: %dDB", nSurBalance_R);
  1180.         break;
  1181.     case VOL_MODE_QS_EFFECT:
  1182.         if (bVolChanged)
  1183.         {
  1184.             if ((1 == nUpOrDown) && (nQSEffect < QS_MAX))
  1185.                 nQSEffect++;
  1186.             //else if ((0 == nUpOrDown) && (nQSEffect > QS_MIN))
  1187. //  nQSEffect--;
  1188.             else
  1189.                 nQSEffect=QS_MIN;
  1190. //break;
  1191.             // send volume change command to 8051
  1192.             UART_PUTC_EXACT(COMMAND_START);
  1193.             UART_PUTC_EXACT(QS_EFFECT);
  1194.             UART_PUTC_EXACT(nQSEffect);
  1195.             UART_PUTC_EXACT(COMMAND_END);
  1196. #ifdef OSD_DBG_TXD
  1197.             psprintf(RegionValStr[REGION3], "SEND 8051 QS: %d", nQSEffect);
  1198.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  1199. #endif
  1200.         }
  1201.         psprintf(RegionValStr[REGION1], "QSOUND: %d", nQSEffect);
  1202.         break;
  1203.     case VOL_MODE_TREBLE:
  1204.         if (bVolChanged)
  1205.         {
  1206.             if ((1 == nUpOrDown) && (nTreble < VOL_ADJUST_MAN-1))
  1207.                 nTreble++;
  1208.             else if ((0 == nUpOrDown) && (nTreble > VOL_ADJUST_MIN+1))
  1209.                 nTreble--;
  1210.             else
  1211.                 break;
  1212.             // send volume change command to 8051
  1213.             UART_PUTC_EXACT(COMMAND_START);
  1214.             UART_PUTC_EXACT(TREBLE_EFFECT);
  1215.             switch (nTreble)
  1216.             {
  1217.             case -1:
  1218.                 UART_PUTC_EXACT(0x81);
  1219.                 break;
  1220.             case -2:
  1221.                 UART_PUTC_EXACT(0x82);
  1222.                 break;
  1223.             case -3:
  1224.                 UART_PUTC_EXACT(0x83);
  1225.                 break;
  1226.             case -4:
  1227.                 UART_PUTC_EXACT(0x84);
  1228.                 break;
  1229.             case -5:
  1230.                 UART_PUTC_EXACT(0x85);
  1231.                 break;
  1232.             default:
  1233.                 UART_PUTC_EXACT((BYTE)nTreble);
  1234.                 break;
  1235.             }
  1236.             UART_PUTC_EXACT(COMMAND_END);
  1237. #ifdef OSD_DBG_TXD
  1238.             psprintf(RegionValStr[REGION3], "SEND 8051 TREBLE: %d", nTreble);
  1239.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  1240. #endif
  1241.         }
  1242.         psprintf(RegionValStr[REGION1], "TREBLE VOL: %dDB", 2*nTreble);
  1243.         break;
  1244.     case VOL_MODE_BASS:
  1245.         if (bVolChanged)
  1246.         {
  1247.             if ((1 == nUpOrDown) && (nBass < VOL_ADJUST_MAN-1))
  1248.                 nBass++;
  1249.             else if ((0 == nUpOrDown) && (nBass > VOL_ADJUST_MIN+1))
  1250.                 nBass--;
  1251.             else
  1252.                 break;
  1253.             // send volume change command to 8051
  1254.             UART_PUTC_EXACT(COMMAND_START);
  1255.             UART_PUTC_EXACT(BASS_EFFECT);
  1256.             switch (nBass)
  1257.             {
  1258.             case -1:
  1259.                 UART_PUTC_EXACT(0x81);
  1260.                 break;
  1261.             case -2:
  1262.                 UART_PUTC_EXACT(0x82);
  1263.                 break;
  1264.             case -3:
  1265.                 UART_PUTC_EXACT(0x83);
  1266.                 break;
  1267.             case -4:
  1268.                 UART_PUTC_EXACT(0x84);
  1269.                 break ;
  1270.             case -5:
  1271.                 UART_PUTC_EXACT(0x85);
  1272.             default:
  1273.                 UART_PUTC_EXACT((BYTE)nBass);
  1274.                 break;
  1275.             }
  1276.             UART_PUTC_EXACT(COMMAND_END);
  1277. #ifdef OSD_DBG_TXD
  1278.             psprintf(RegionValStr[REGION3], "SEND 8051 BASS: %d", nBass);
  1279.             PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  1280. #endif
  1281.         }
  1282.         psprintf(RegionValStr[REGION1], "BASS VOL: %dDB", 2*nBass);
  1283.         break;
  1284.     default:
  1285.         return;
  1286.     }
  1287.     PrintOsdMsg(STR_OS_SPACE, REGION1, 2, 1);
  1288.     do_updata_vfd_vol();
  1289. }
  1290. void Set_Default_Vol(void)
  1291. {
  1292. nCurrentDVDMode=MODE_DVD;
  1293. nCurrentVolMode=VOL_MODE_MAIN;
  1294. nMainVol=MAINVOL;
  1295. nFrontVol=FRONTVOL;
  1296. nCenterVol=CENTERVOL;
  1297. nRearVol=REARVOL;
  1298. nSubwooferVol=SUBWOOFERVOL;
  1299. nMainBalance_L=MAINBALANCE_L;
  1300. nMainBalance_R=MAINBALANCE_R;
  1301. nSurBalance_L=SURBALANCE_L;
  1302. nSurBalance_R=SURBALANCE_R;
  1303. nQSEffect=QSEFFECT;
  1304. nTreble=TREBLEVOL;
  1305. nBass=BASSVOL;
  1306. UART_PUTC_EXACT(COMMAND_START);
  1307. UART_PUTC_EXACT(VOL_DEFAULT);
  1308. UART_PUTC_EXACT(VOL_DEFAULT_D);
  1309. UART_PUTC_EXACT(COMMAND_END);
  1310. psprintf(RegionValStr[REGION1], "SETUP DEFAULT VOL");
  1311. PrintOsdMsg(STR_OS_SPACE, REGION1, 2, 1);
  1312. do_updata_vfd_vol();
  1313. }
  1314. #endif //NEW UART COMMAND FOR FUSS
  1315. #endif