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

📄 appstest.c

📁 GM5621原代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                  {
                     if(Bp_OcmAddr[cnt] != Bp_SubAddr[cnt])
                        result = 1;
                  }
                  if(result)
                  {
                     gm_Print("%d bits is ERROR",B_NumberOfBits);
                  }
                  else
                  {
                     gm_Print("%d bits is OK",B_NumberOfBits);
                  }
                  gm_WriteRegByte(BP0_CTRL + B_NumberOfBreakpoint * 6, 0);
               }
            }
         }
            break;

         case Func56 : // print current version of firmware
            PrintVersion();
            break;
      #endif //PHOENIX

      #ifdef ENABLE_CACHE_APPSTEST
         case Func58: // spi test
            spiTest((WORD) DebugParam[0]);
            break;
      #endif //ENABLE_CACHE_APPSTEST

      #if NVRAM_USE_FLASH
         case Func60:
            SpiFlashReadWriteStatusRegister((BYTE)DebugParam[0], (BYTE)DebugParam[1]);
            break;
      #endif

      #if (WB_MAJOR >= 4)
         case 245:
         {
            // BYTE ROM* Bp_Data;
            // InitIRDriver(Bp_Data);
            WORD W_IrKey;
            BYTE count;
            count=0;
            while (1)
            {

               W_IrKey = gm_GetIrKey();
               if (W_IrKey)
               {
                  gm_Print("GetIRKey= 0x%x", W_IrKey);
                  count++;
               }
               gm_Delay10ms(10);
               if (count==5)
                  break;
            }
         }
            break;
      #endif
         case 198:
			{
				BYTE flag,scan_flag;
				WORD W_Offset,W_Ori_Offset;
				WORD i,count,x;
				W_Ori_Offset=W_Offset=gm_ReadRegWord(VF_START_OFFSET);
				gm_Print("-----Orignial_VF_START_OFFSET=0x%x",W_Offset);
				//	while()
				//	{
				count=0;
				scan_flag=gmd_FALSE;
				x=10;
				for(i=1;i<=(1<<13);i++)
				{
					gm_WriteRegByte(DISPLAY_STATUS, BUFFER_OVERRUN);
					gm_WaitInputVSyncMain(2);
					flag=gm_ReadRegByte(DISPLAY_STATUS)& BUFFER_OVERRUN;
					if(flag)
					{
						if(scan_flag)
							x--;
						if(!x)
							break;
//						gm_Print("-----------------LineBufferOverFlag is Set---------------",0);
						if (W_Ori_Offset>=i)
								W_Offset=W_Ori_Offset-i;
							else
								W_Offset=(1<<13)-i+ W_Ori_Offset;

						gm_Print("0x%x", W_Offset);
						gm_WriteRegWord(VF_START_OFFSET, W_Offset);
					}
					else
					{
						scan_flag=gmd_TRUE;
						gm_Print("******Good VF_START_OFFSET=0x%x", W_Offset);
						count++;
						if (W_Ori_Offset>=i)
								W_Offset=W_Ori_Offset-i;
							else
								W_Offset=(1<<13)-i+ W_Ori_Offset;

						gm_Print("0x%x", W_Offset);
						gm_WriteRegWord(VF_START_OFFSET, W_Offset);

						
//						break;
					}
					
				}
						gm_Print("######End of Scan#######",0);
						gm_Print("      Good Range=%d",count);

						break;
		  	}



      #if (USE_VPORT && USE_GSEL_DRVR_MODEL)
         case 199:
            gm_I2cInit_SW(0, DEV_GPIO_SCL, DEV_GPIO_SDA);
            gm_AddDriver(DEV_VID_FUNC_ENTRY,DEV_VIDEO_DECODER);
            gm_CallDriver(DEV_VIDEO_DECODER,gmd_VID_PWR_UP,NULL_PTR,NULL_PTR);
            gm_CallDriver(DEV_VIDEO_DECODER,gmd_VID_SET_MODE,VDD_MODE_INIT, NULL_PTR);
            break;

         case 200:
            AckHandler = gmd_FALSE;
            gm_CommsSendReply( (gmt_MsgStruct *)&AckPkt, comm_use);
            msgx("199 VideoDecoder CallDriver add and initialize",0);
            msgx("200 Display Video Decoder related funtions",0);
            msgx("201 I2C Read Byte: <Addr>",0);
            msgx("202 I2C Write Byte: <Addr> <Byte data> <0>",0);
            msgx("203 Power UP and Reset VID",0);
            msgx("204 Power Down VID",0);
            msgx("205 Wirte I2C Initial Table",0);
            msgx("206 Setup Input Port <Value 0:CVBS 1:SVIDEO>",0);
            msgx("207 VideoDecoder : Get Video Status",0);
            // msgx("209 VideoDecoder : Setup input port <Value 0:CVBS 1:SVIDEO> and then Get Status",0);
            // msgx("210 SAA7119 : Dump All Registers",0);
            break;

         case 201:
            msg("0x%x",(WORD)gm_CallDriver(DEV_VIDEO_DECODER,gmd_VID_RAW_READ,(WORD)DebugParam[0],NULL_PTR));
            break;

         case 202:
            gm_CallDriver(DEV_VIDEO_DECODER,gmd_VID_RAW_WRITE,(WORD)DebugParam[0],(WORD)DebugParam[1]);
            break;

         case 203:
            gm_CallDriver(DEV_VIDEO_DECODER,gmd_VID_PWR_UP,NULL_PTR,NULL_PTR);
            break;

         case 204:
            gm_CallDriver(DEV_VIDEO_DECODER,gmd_VID_PWR_DOWN,NULL_PTR,NULL_PTR);
            break;

         case 205:
            gm_CallDriver(DEV_VIDEO_DECODER,gmd_VID_SET_MODE,VDD_MODE_INIT, NULL_PTR);
            break;

         case 206:
            gm_CallDriver(DEV_VIDEO_DECODER,gmd_VID_SET_INPUT,(WORD)DebugParam[0],NULL_PTR);
            break;

         case 207:
            msg("Return =%x <0=Sync Lock, 3=No Sync>",(WORD)gm_CallDriver(DEV_VIDEO_DECODER,gmd_VID_GET_STATUS,NULL_PTR,NULL_PTR));
            break;
/*
         case 209:
         {
            WORD i;
            gm_CallDriver(DEV_VIDEO_DECODER,gmd_VID_SET_INPUT,(WORD)DebugParam[0],NULL_PTR);
            do
            {
               i=(WORD)gm_CallDriver(DEV_VIDEO_DECODER,gmd_VID_GET_STATUS,NULL_PTR,NULL_PTR);
               msg("Return =%x <0=Sync Lock, 3=No Sync>",i);
         
            } while(i!=0);
         }
            break;
*/
         case 210:
         {
            BYTE regaddr;
            msg("Dump Video Decoder All Registers",0);
            for (regaddr=0;regaddr<255;regaddr++)
               msg("0x%x",(WORD)gm_CallDriver(DEV_VIDEO_DECODER,gmd_VID_RAW_READ,(WORD)regaddr,NULL_PTR));
            break;
         }
      #endif //(USE_VPORT && USE_GSEL_DRVR_MODEL)

      #if USE_AUDIO && USE_GSEL_DRVR_MODEL
         case 215:
            AckHandler = gmd_FALSE;
            gm_CommsSendReply( (gmt_MsgStruct *)&AckPkt, comm_use);
            msgx("215 Display Audio Decoder related funtions",0);
            msgx("216 Add Audio Gsel Driver and Initialize Audio Decoder",0);
            msgx("217 Audio Set Standby <Value 0:Standy off   1:Standby On>",0);
            msgx("218 Audio Set OutputMute <Value 0:UnMute  1:Mute>",0);
            msgx("219 Get Audio Mute Status: Ret<Value 0:UnMute  1:Mute>",0);
            msgx("220 Set Audio Volume <Value>",0);
            msgx("221 Get Audio Volume:  Ret <Value>",0);
            break;

         case 216:
            gm_AddDriver(DEV_AUD_FUNC_ENTRY,DEV_AUDIO_DECODER);
            gm_CallDriver(DEV_AUDIO_DECODER,gmd_AUD_SET_CONFIG,AUDIO_INIT,NULL_PTR);
            break;

         case 217:
            gm_CallDriver(DEV_AUDIO_DECODER,gmd_AUD_SET_STANDBY_ON,(WORD)DebugParam[0],NULL_PTR);
            break;

         case 218:
            gm_CallDriver(DEV_AUDIO_DECODER,gmd_AUD_SET_OUTPUT_MUTE,(WORD)DebugParam[0],NULL_PTR);
            break;

         case 219:
         {
            WORD ret;
            ret=(WORD)gm_CallDriver(DEV_AUDIO_DECODER,gmd_AUD_GET_OUTPUT_MUTE,NULL_PTR,NULL_PTR);
            if (ret)
               msg("Ret Status: Audio is Mute now",0);
            else
               msg("Ret Status: Audio is UnMute now",0);
         }
            break;

         case 220:
            gm_CallDriver(DEV_AUDIO_DECODER,gmd_AUD_SET_OUTPUT_VOLUME,(WORD)DebugParam[0],NULL_PTR);
            break;

         case 221:
            msg("0x%x",(WORD)gm_CallDriver(DEV_AUDIO_DECODER,gmd_AUD_GET_OUTPUT_VOLUME,NULL_PTR,NULL_PTR));
            break;
      #endif

      #ifdef USE_PIXCR_DEMO
         case 230:               // 32 bucket luminance histogram
            PixCrLumHist32x32((DWORD *)DebugParam[0]);      // Param1=buffer
            break;

         case 231:               // 32x30 regions of 32 bucket histograms, with analysis
            PixCrLumHist32x4x8((BYTE)DebugParam[0], (BYTE*)DebugParam[1]);    // Param2=threshold set, param3=buffer
            break;

         case 232:               // 32x30 regions of 4 bucket histograms
            PixCrLumHist4x8x32((BYTE *)DebugParam[0]);      // param1=buffer
            break;

         case 233:               // 32x30 regions of 32 bit luminance sums
            PixCrLumSum32x32((WORD *)DebugParam[0], (BYTE)DebugParam[1], (BYTE)DebugParam[2]);     // param1=buffer, param2=simthresh, param3=xtrascore
            break;

         case 234:               // edge enhancer
            PixCrEdgeEnhance();
            break;

         case 235:               // detect flesh
            PixCrFleshDetect();
            break;

         case 236:
         {
            DWORD Store;               // sum diff
            Store = PixCrSumDiff((BYTE)DebugParam[0]);
            gm_Print("%x", (WORD)(Store >> 16));
            gm_Print("%x", (WORD)(Store & 0xffff));
            break;
         }
      #endif

      #ifdef USE_LINEAR_LIGHTNESS
         case Func240:
            msg("Change Output Gamma",0);
            ChangeGamma((BYTE)DebugParam[0]);
            break;
      #endif

         case Func250:    // Do not remove these !!!
            msg("Track SDDS",0);
            if(AckHandler)
               gm_CommsSendReply( (gmt_MsgStruct *)&AckPkt, comm_use);
            gmp_TrackSDDS();
            break;

         case Func251:    // Do not remove these !!!
            msg("AutoGeometry",0);
            gmvb_IA_Debug =  (WORD)DebugParam[1];
            gmvb_AutoAdjMode = (WORD)DebugParam[0];
            gm_AutoGeometryMain((WORD)DebugParam[0]);
            break;

         case Func252:
            msg("Pixel Jitter",0);
            Pixel_Jitter(); // position
            break;

         case Func253:
            msg("Scanning Pixel",0);
            Pixel_Scan(); // position
            break;

         case Func254:
            msg("Measuring Pixel Noise",0);
            Pixel_Noise(); // position
            break;

         case Func255:
            msg("Grabbing Pixel",0);
            Pixel_Grab(); // position
            break;

         default:
            break;
         }
         
         break;
#endif   // !REMOVE_APPSTEST
      default :
         AckHandler = gmd_FALSE;
         gm_CommsSendReply( (gmt_MsgStruct *)&NackPkt, comm_use);
         break;
      }

      if(AckHandler)
        gm_CommsSendReply( (gmt_MsgStruct *)&AckPkt, comm_use);

      gm_Ddc2biHandler();
      gm_SerialHandler();
   }
}

//******************************************************************
// FUNCTION     :   NvramRd
// USAGE        :   Read an NVRAM byte
// DESCRIPTION  :   This function reads an NVRAM byte.
// INPUT        :   None
// OUTPUT       :   None
// GLOBALS      :   None
// USED_REGS    :   None
//******************************************************************
static void NvramRd(RdNvramCmd_t *CmdPtr, BYTE comm_use)
{
	gmt_MsgStruct *RdCmd;
	WORD NvramAddr;
	BYTE Length,Cmd;
	gmt_BLOCKINFO bi;

	RdCmd = (gmt_MsgStruct *)CmdPtr;

	Cmd 	  = CmdPtr->cmd;

	NvramAddr = GetWordFromBuffer(&CmdPtr->NvramAddr);

	if(NVRAM_Unlock == sizeof(UnlockSeq))
	{
		bi = gm_GetNVRAMBlockInfo((BYTE)NvramAddr,0x00);

		Length	  = bi.length;
		NvramAddr  = bi.address;

		RdCmd->cmd    = Cmd;
		RdCmd->len 	  = Length + 3;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -