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

📄 app_dol2function.c

📁 台湾凌阳方案300万数码相机源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
      L2_ReadBYWindow((UCHAR)ArgBuf[0], &sstmp0);
    break;

    case 0x34:
      L2_ConfigAFWindow((USHORT)ArgBuf[0], (USHORT)ArgBuf[1], (USHORT)ArgBuf[2],
                        (USHORT)ArgBuf[3]);
    break;

    case 0x35:
      L2_ReadAFWindow(&stmp0);
    break;

    case 0x36:
      L2_ConfigOB((USHORT)ArgBuf[0], (USHORT)ArgBuf[1], (UCHAR)ArgBuf[2],
                  (UCHAR)ArgBuf[3], (USHORT)ArgBuf[4]);
    break;

    case 0x37:
      L2_ReadAutoOB(&stmp0);
    break;

    case 0x38:
      L2_ConfigSPW((UCHAR)ArgBuf[0], (UCHAR)ArgBuf[1], (UCHAR)ArgBuf[2],
                   (UCHAR)ArgBuf[3], (UCHAR)ArgBuf[4], (UCHAR)ArgBuf[5],
                   (UCHAR)ArgBuf[6]);
    break;

    case 0x39:
      L2_ReadSPW((UCHAR)ArgBuf[0], &ltmp0, &tmp0, &tmp1, &tmp2);
    break;

//segament A
    case 0xA0:
       L2_InitCDSP((UCHAR)ArgBuf[0]);
    break;

    case 0xA1:
      L2_DoCDSP((ULONG)ArgBuf[0], (USHORT)ArgBuf[1], (USHORT)ArgBuf[2],
                (ULONG)ArgBuf[3], (USHORT)ArgBuf[4], (USHORT)ArgBuf[5],
                (UCHAR)ArgBuf[6], (UCHAR)ArgBuf[7]);
    break;

#ifdef TestModeEn

    case 0xA2:
      L2_TestCDSP((UCHAR)ArgBuf[0]);
    break;

#endif

    case 0xA3:
      L2_SetSignalGen((UCHAR)ArgBuf[0], (UCHAR)ArgBuf[1]);
    break;

    case 0xA4:
      L2_SetMenuBar((UCHAR)ArgBuf[0], (USHORT)ArgBuf[1], (USHORT)ArgBuf[2],
                    (USHORT)ArgBuf[3], (USHORT)ArgBuf[4]);
    break;

    case 0xA5:
      L2_SetYlut((UCHAR)ArgBuf[0], (UCHAR)ArgBuf[1], (UCHAR)ArgBuf[2],
                 (UCHAR)ArgBuf[3], (UCHAR)ArgBuf[4], (UCHAR)ArgBuf[5],
                 (UCHAR)ArgBuf[6], (UCHAR)ArgBuf[7], (UCHAR)ArgBuf[8],
                 (UCHAR)ArgBuf[9], (UCHAR)ArgBuf[10], (UCHAR)ArgBuf[11],
                 (UCHAR)ArgBuf[12], (UCHAR)ArgBuf[13], (UCHAR)ArgBuf[14],
                 (UCHAR)ArgBuf[15], 0xfe);
    break;

    case 0xA6:
    {
      tmpfac[0] = 1;
      tmpfac[1] = -1;
      tmpfac[2] = 2;
      tmpfac[3] = -2;
      tmpfac[4] = 3;
      tmpfac[5] = -3;
      tmpfac[6] = 4;
      tmpfac[7] = -4;
      tmpfac[8] = -1;
      tmpfac[9] = 1;
      tmpfac[10] = -2;
      tmpfac[11] = 2;
      tmpfac[12] = -8;
      tmpfac[13] = 3;
      tmpfac[14] = -4;
      tmpfac[15] = 4;
      tmpfac[16] = 1;
      tmpfac[17] = 16;
      tmpfac[18] = 2;
      tmpfac[19] = 2;
      tmpfac[20] = 3;
      tmpfac[21] = 3;
      tmpfac[22] = 4;
      tmpfac[23] = 4;
      tmpfac[24] = -1;

      L2_SetHorFilt(tmpfac, (UCHAR)ArgBuf[0]);
    }
    break;

    case 0xA7:
    {
      tmpfac[0] = 1;
      tmpfac[1] = 1;
      tmpfac[2] = 2;
      tmpfac[3] = 2;
      tmpfac[4] = 3;
      tmpfac[5] = 3;
      tmpfac[6] = 4;
      tmpfac[7] = 4;
      tmpfac[8] = -1;
      tmpfac[9] = -1;
      tmpfac[10] = -8;
      tmpfac[11] = -8;
      tmpfac[12] = -16;
      tmpfac[13] = -16;
      tmpfac[14] = 16;
      tmpfac[15] = 4;
      tmpfac[16] = 1;
      tmpfac[17] = -1;
      tmpfac[18] = 2;
      tmpfac[19] = -2;
      tmpfac[20] = 3;
      tmpfac[21] = -3;
      tmpfac[22] = 4;
      tmpfac[23] = -4;
      tmpfac[24] = 1;

      L2_SetVerFilt(tmpfac, (UCHAR)ArgBuf[0]);
    }
    break;

    case 0xA8:
      L2_DoCDSP2((ULONG)ArgBuf[0], (USHORT)ArgBuf[1], (USHORT)ArgBuf[2],
                (ULONG)ArgBuf[3], (USHORT)ArgBuf[4], (USHORT)ArgBuf[5],
                (UCHAR)ArgBuf[6], (UCHAR)ArgBuf[7], (ULONG)ArgBuf[8]);
    break;

//segament F

    case 0xF0: //read all Y windows
      for(i=0;i<26;i++)
        L2_ReadAEWindow(i, &tmp0);
    break;

    case 0xF1: //read all RY windows
      for(i=0;i<26;i++)
        L2_ReadRYWindow(i, &sstmp0);
    break;

    case 0xF2: //read all BY windows
      for(i=0;i<26;i++)
        L2_ReadBYWindow(i, &sstmp0);
    break;

    case 0xF3: //read all regions in the special window
      for(i=0;i<4;i++)
        L2_ReadSPW(i, &ltmp0, &tmp0, &tmp1, &tmp2);
    break;

    default:
    break;
  }

  return L2K_SUCCESS;

}


//-----------------------------------------------------------------------------
//App_DoL2Function_FM
//-----------------------------------------------------------------------------
/*
routine description:
                Do specified FM L2 Function (06)
arguments:
                L2_FuncID       - L2 Function ID
                ArgBuf  - Pointer to the argument buffer

return value:
                0x00    - success

*/

UCHAR App_DoL2Function_FM(UCHAR L2_FuncID, ULONG *ArgBuf)
{
    UCHAR  ByteData;

#if (CFAIDE)
    USHORT WordData;
#endif

    //ULONG  LongData;
    switch (L2_FuncID)
     {
      case 0x00:
                L2_FlashMode((UCHAR)ArgBuf[0], (UCHAR)ArgBuf[1], (UCHAR)ArgBuf[2]);
                //PRINT_APP("L2 0600 finish\n");
                break;
      case 0x01:
                L2_ReadECC((UCHAR)ArgBuf[0], &ByteData);
                //PRINT_APP("L2 0601 finish\n");
                break;
      case 0x02:
                L2_ClearECC();
                //PRINT_APP("L2 0602 finish\n");
                break;
      case 0x03:
                L2_ECCMode((UCHAR)ArgBuf[0]);
                //PRINT_APP("L2 0603 finish\n");
                break;
      case 0x10:
                L2_NANDInit((UCHAR)ArgBuf[0] , (UCHAR)ArgBuf[1]);
                //PRINT_APP("L2 0610 finish\n");
                break;
      case 0x11:
                L2_NANDSendCmd((UCHAR)ArgBuf[0]);
                //PRINT_APP("L2 0611 finish\n");
                break;
      case 0x12:
                L2_NANDSendAddr((UCHAR)ArgBuf[0],(ULONG)ArgBuf[1]);
                //PRINT_APP("L2 0612 finish\n");
                break;
      case 0x13:
                L2_NANDCheckRdy(&ByteData);
                //PRINT_APP("L2 0613 finish\n");
                break;
      case 0x14:
                L2_NANDWritePort((UCHAR)ArgBuf[0]);
                //PRINT_APP("L2 0614 finish\n");
                break;
      case 0x15:
                L2_NANDReadPort(&ByteData);
                //PRINT_APP("L2 0615 finish\n");
                break;
      case 0x16:
                L2_NANDCompleteOperation();
                //PRINT_APP("L2 0616 finish\n");
                break;
#if (CFA)
      case 0x20:
                L2_CFInit((UCHAR)ArgBuf[0], (UCHAR)ArgBuf[1], (UCHAR)ArgBuf[2]);
                //PRINT_APP("L2 0620 finish\n");
                break;
      case 0x21:
                L2_CardDetect(&ByteData);
                //PRINT_APP("L2 0621 finish\n");
                break;
      case 0x22:
                L2_CFReset((UCHAR)ArgBuf[0]);
                //PRINT_APP("L2 0622 finish\n");
                break;
      case 0x23:
                L2_CFCheckRdy(&ByteData);
                //PRINT_APP("L2 0623 finish\n");
                break;
#endif
#if (CFAMEM)
      case 0x24:
                L2_CFSetMemA((UCHAR)ArgBuf[0] ,(UCHAR)ArgBuf[1]);
                //PRINT_APP("L2 0624 finish\n");
                break;
      case 0x25:
                L2_CFAttrMemRd((UCHAR)ArgBuf[0],(UCHAR)ArgBuf[1],&ByteData);
                //PRINT_APP("L2 0625 finish\n");
                break;
      case 0x26:
                L2_CFAttrMemWr((UCHAR)ArgBuf[0],(UCHAR)ArgBuf[1],(UCHAR)ArgBuf[2]);
                //PRINT_APP("L2 0626 finish\n");
                break;
      case 0x27:
                L2_CFComMemRd((UCHAR)ArgBuf[0],(UCHAR)ArgBuf[1],&ByteData);
                //PRINT_APP("L2 0627 finish\n");
                break;
      case 0x28:
                L2_CFComMemWr((UCHAR)ArgBuf[0],(UCHAR)ArgBuf[1],(UCHAR)ArgBuf[2]);
                //PRINT_APP("L2 0628 finish\n");
                break;
#endif
#if (CFAIDE)
      case 0x29:
                L2_CFCheckIRQ((UCHAR)ArgBuf[0],&ByteData);
                //PRINT_APP("L2 0629 finish\n");
                break;
      case 0x2a:
                L2_CFSetCsA((UCHAR)ArgBuf[0]);
                //PRINT_APP("L2 062A finish\n");
                break;
      case 0x2b:
                L2_CFSetWordCsAWr((UCHAR)ArgBuf[0], (USHORT)ArgBuf[1]);
                //PRINT_APP("L2 062B finish\n");
                break;
      case 0x2c:
                L2_CFSetWordCsARd((UCHAR)ArgBuf[0], &WordData);
                //PRINT_APP("L2 062C finish\n");
                break;
#endif
#ifdef TestModeEn
L2_FMGPIOOe(0, 0);
L2_FMGPIOOutput(0, 0);
L2_FMGPIOInput(0, 0);
 #if (SD)
      case 0x30:
L2_SDInit();
L2_SDConfig(0 ,0 );
L2_SDReset();
L2_SDBlockSize(0);
L2_SDTxCommand(0);
L2_SDRxResponse(0, 0 );
L2_SDReadRspBuf(0 , 0);
L2_SDRspBufState(0);
L2_SDDataBufState(0);
L2_SDReadCRC7(0);
L2_SDCheckCRC16(0);
L2_SDCardCRCStat(0);
L2_SDTimeOut(0);
L2_SDTxData();
L2_SDRxData();
L2_SDRxCRC();
L2_SDTxDummy();
L2_SDWaitIdle();
L2_SDCheckDat0(0);
L2_SDReadPort(0);
L2_SDWritePort(0);

	            break;
 #endif
#endif

#ifdef TestModeEn
      case 0xff:
                L2_TestFlash((UCHAR)ArgBuf[0]);
                break;
#endif
      default:
                break;
        }

                return L2K_SUCCESS;

}


//-----------------------------------------------------------------------------
//App_DoL2Function_CPU
//-----------------------------------------------------------------------------
/*
routine description:
                Do specified CPU L2 Function
arguments:
                L2_FuncID       - L2 Function ID (05)
                ArgBuf  - Pointer to the argument buffer

return value:
                0x00    - success

*/

UCHAR App_DoL2Function_CPU(UCHAR L2_FuncID, ULONG *ArgBuf)
{
      UCHAR  ByteData;
      USHORT WordData;
//    ULONG  LongData;

      switch (L2_FuncID)
        {
      case 0x00:
                L2_InitCPU((UCHAR)ArgBuf[0]);
                //PRINT_APP("L2 0500 finish\n");
                break;
      case 0x01:
                L2_Set4KSRAMMode((UCHAR)ArgBuf[0]);
                //PRINT_APP("L2 0501 finish\n");
		        break;
	  case 0x02:
                L2_4KSRAMBufIdx((UCHAR)ArgBuf[0],(USHORT)ArgBuf[1],&WordData,&WordData);
                //PRINT_APP("L2 0502 finish\n");
				break;
	  case 0x03:
                L2_Write4KSRAMPort((UCHAR)ArgBuf[0]);
                //PRINT_APP("L2 0503 finish\n");
				break;
	  case 0x04:
                L2_Read4KSRAMPort(&ByteData);
                //PRINT_APP("L2 0504 finish\n");
                break;
      case 0x05:
                L2_DownloadROM((USHORT)ArgBuf[0], (ULONG)ArgBuf[1], (USHORT)ArgBuf[2]);
                //PRINT_APP("L2 0505 finish\n");
                break;

      #ifdef TestModeEn
      case 0xff:
                L2_TestCPU((UCHAR)ArgBuf[0]);
                break;
      #endif
      default:
                break;
                }

      return L2K_SUCCESS;


}


//-----------------------------------------------------------------------------
//App_DoL2Function_DMAC
//-----------------------------------------------------------------------------
/*
routine description:
                Do specified DMAC L2 Function
arguments:

⌨️ 快捷键说明

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