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

📄 dosusr.c

📁 台湾凌阳方案300万数码相机源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
               index = index * 10 + (fdb[i] - 0x30);
          }

	  	//patch4.5.1@ada@Fix DCF file name filtering bug begin
	  	if (index == 0x0000)
	  	{
			return;
	  	}
	  	//patch4.5.1@ada@Fix DCF file name filtering bug end

		//patch4.5@ada@Duplicated file index in same DCF directory begin
		//Check if this file index is already doubled
		L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)index) - 1) * 10 + 2),K_SDRAM_Prefetch);
		L2_DRAMReadWord(&tmp1,&tmp2);

		if ((tmp1 == 0xff) && (tmp2 == 0xff))
		{
			return;
		}

          G_USR_SearchPreFileIndex = G_USR_SearchNowFileIndex;
		G_USR_TempSearchNowFileIndex = G_USR_SearchNowFileIndex;
		G_USR_TempLastFileIndex = G_USR_LastFileIndex;
		G_USR_TempLastJpgFileIndex = G_USR_LastJpgFileIndex;
		//patch4.5@ada@Duplicated file index in same DCF directory end

          G_USR_SearchNowFileIndex = index;
          G_USR_LastFileIndex = index;

          //patch4.4@ada@DPOF skip AVI & WAV begin

	   	//patch4.4.1@ada@Fix DPOF bug begin
          //G_USR_LastJpgFileIndex = index;
	   	//patch4.4.1@ada@Fix DPOF bug end

          //patch4.4@ada@DPOF skip AVI & WAV end

          if (G_USR_FileCount == 0)
          {
               G_USR_FirstFileIndex = G_USR_SearchNowFileIndex;
               //printf("G_USR_FirstFileIndex = %d\n",G_USR_FirstFileIndex);

               //patch4.2@ada@0527 for DCF
               //G_USR_Company_UpperSIG[0] = fdb[0];
               //G_USR_Company_UpperSIG[1] = fdb[1];
               //G_USR_Company_UpperSIG[2] = fdb[2];
               //G_USR_Company_UpperSIG[3] = fdb[3];

			//patch4.5@ada@Record DCF file name begin
               //if (fdb[0] >= 0x61)
               //{
               //     G_USR_Company_UpperSIG[0] = fdb[0] - 0x20;
               //     G_USR_Company_LowerSIG[0] = fdb[0];
               //}
               //else
               //{
               //     G_USR_Company_UpperSIG[0] = fdb[0];
               //     G_USR_Company_LowerSIG[0] = fdb[0] + 0x20;
               //}

               //if (fdb[1] >= 0x61)
               //{
               //     G_USR_Company_UpperSIG[1] = fdb[1] - 0x20;
               //     G_USR_Company_LowerSIG[1] = fdb[1];
               //}
               //else
               //{
               //     G_USR_Company_UpperSIG[1] = fdb[1];
               //     G_USR_Company_LowerSIG[1] = fdb[1] + 0x20;
               //}

               //if (fdb[2] >= 0x61)
               //{
               //     G_USR_Company_UpperSIG[2] = fdb[2] - 0x20;
               //     G_USR_Company_LowerSIG[2] = fdb[2];
               //}
               //else
               //{
               //     G_USR_Company_UpperSIG[2] = fdb[2];
               //     G_USR_Company_LowerSIG[2] = fdb[2] + 0x20;
               //}

               //if (fdb[3] >= 0x61)
               //{
               //     G_USR_Company_UpperSIG[3] = fdb[3] - 0x20;
               //     G_USR_Company_LowerSIG[3] = fdb[3];
               //}
               //else
               //{
               //     G_USR_Company_UpperSIG[3] = fdb[3];
               //     G_USR_Company_LowerSIG[3] = fdb[3] + 0x20;
               //}
			//patch4.5@ada@Record DCF file name end
        }

		//patch4.5@ada@Duplicated file index in same DCF directory begin
		else
		{
			L2_DRAMReadWord(&tmp1,&tmp2);
     	     L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)G_USR_SearchNowFileIndex) - 1) * 10),K_SDRAM_Prefetch);
			L2_DRAMReadWord(&tmp1,&tmp2);

			//Check if the file with same index already exist(FDB address > 0)
			if ((tmp1 > 0) || (tmp2 > 0))
			{
	          	L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)G_USR_SearchNowFileIndex) - 1) * 10 + 8),K_SDRAM_Prefetch);
				L2_DRAMReadWord(&tmp1,&tmp2);
				TempPreFileIndex = (USHORT)tmp1 | (((USHORT)tmp2) << 8);
				L2_DRAMReadWord(&tmp1,&tmp2);
				TempNextFileIndex = (USHORT)tmp1 | (((USHORT)tmp2) << 8);

				if (TempPreFileIndex > 0)
				{
					//Link to the next file index
	     	     	L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)TempPreFileIndex) - 1) * 10 + 9),K_SDRAM_NoPrefetch);
					L2_DRAMWriteWord((UCHAR)(TempNextFileIndex & 0x00ff),(UCHAR)((TempNextFileIndex & 0xff00) >> 8));
				}

				if (TempNextFileIndex > 0)
				{
					//Link to the previous file index
	     	     	L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)TempNextFileIndex) - 1) * 10 + 8),K_SDRAM_NoPrefetch);
					L2_DRAMWriteWord((UCHAR)(TempPreFileIndex & 0x00ff),(UCHAR)((TempPreFileIndex & 0xff00) >> 8));
				}

				if (G_USR_SearchNowFileIndex == G_USR_TempLastFileIndex)
				{
					G_USR_LastFileIndex = TempPreFileIndex;
				}
				else
				{
					G_USR_LastFileIndex = G_USR_TempLastFileIndex;
				}

				//Check if the first file index must be changed
				if (G_USR_SearchNowFileIndex == G_USR_FirstFileIndex)
				{
					//Search forward for G_USR_FirstFileIndex
		     	     L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)G_USR_FirstFileIndex) - 1) * 10 + 9),K_SDRAM_Prefetch);
					L2_DRAMReadWord(&tmp1,&tmp2);

					G_USR_FirstFileIndex = (USHORT)tmp1 | (((USHORT)tmp2) << 8);
				}

	          	L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)G_USR_SearchNowFileIndex) - 1) * 10 + 2),K_SDRAM_Prefetch);
				L2_DRAMReadWord(&tmp1,&tmp2);

				//Check if G_USR_FirstJpgFileIndex and G_USR_LastJpgFileIndex must be changed
		          if (tmp2 == K_USR_JPG_TYPE)
				{
					//Check if G_USR_FirstJpgFileIndex must be changed
					if (G_USR_SearchNowFileIndex == G_USR_FirstJpgFileIndex)
					{
						//Search forward
						do
						{
		     	     		L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)TempNextFileIndex) - 1) * 10 + 2),K_SDRAM_Prefetch);
							L2_DRAMReadWord(&tmp1,&tmp2);

							if (tmp2 == K_USR_JPG_TYPE)
							{
								G_USR_FirstJpgFileIndex = TempNextFileIndex;
								break;
							}
							else
							{
		     	     			L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)TempNextFileIndex) - 1) * 10 + 9),K_SDRAM_Prefetch);
								L2_DRAMReadWord(&tmp1,&tmp2);

								TempNextFileIndex = (USHORT)tmp1 | (((USHORT)tmp2) << 8);

								//Last file is not a JPG file
								if (TempNextFileIndex == 0)
								{
									G_USR_FirstJpgFileIndex = 0;
									break;
								}
							}
						} while (1);
					}

					//Check if G_USR_LastJpgFileIndex must be changed
					if (G_USR_SearchNowFileIndex == G_USR_TempLastJpgFileIndex)
					{
						//Search backward
						do
						{
		     	     		L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)TempPreFileIndex) - 1) * 10 + 2),K_SDRAM_Prefetch);
							L2_DRAMReadWord(&tmp1,&tmp2);

							if (tmp2 == K_USR_JPG_TYPE)
							{
								G_USR_LastJpgFileIndex = TempPreFileIndex;
								break;
							}
							else
							{
		     	     			L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)TempPreFileIndex) - 1) * 10 + 8),K_SDRAM_Prefetch);
								L2_DRAMReadWord(&tmp1,&tmp2);

								TempPreFileIndex = (USHORT)tmp1 | (((USHORT)tmp2) << 8);

								//First file is not a JPG file
								if (TempPreFileIndex == 0)
								{
									G_USR_LastJpgFileIndex = 0;
									break;
								}
							}
						} while (1);
					}
					else
					{
						G_USR_LastJpgFileIndex = G_USR_TempLastJpgFileIndex;
					}

					G_USR_JpgFileCount--;
				}
				else
				{
					G_USR_LastJpgFileIndex = G_USR_TempLastJpgFileIndex;
				}

	          	L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)G_USR_SearchNowFileIndex) - 1) * 10),K_SDRAM_NoPrefetch);

				for (i = 0; i < 12; i ++)
				{
					L2_DRAMWriteWord(0x00,0x00);
				}

				//Make a marker to note that this file index is doubled
				L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)G_USR_SearchNowFileIndex) - 1) * 10 + 2),K_SDRAM_NoPrefetch);
				L2_DRAMWriteWord(0xff,0xff);

				//Avoid the new file index duplicates
		          if (G_USR_FileIndex < G_USR_SearchNowFileIndex)
          		{
               		G_USR_FileIndex = G_USR_SearchNowFileIndex;
          		}

				//Same index file follows
				if (G_USR_SearchNowFileIndex == G_USR_TempSearchNowFileIndex)
				{
					//Find backward
	          		L2_DRAMSetStartAddr((K_SDRAM_JPG_FdbParameterBufAddr + (((ULONG)G_USR_TempSearchNowFileIndex) - 1) * 10 + 8),K_SDRAM_Prefetch);
					L2_DRAMReadWord(&tmp1,&tmp2);
					G_USR_SearchNowFileIndex = (USHORT)tmp1 | (((USHORT)tmp2) << 8);
				}
				else
				{
					G_USR_SearchNowFileIndex = G_USR_TempSearchNowFileIndex;
				}

				G_USR_FileCount--;

				if (G_USR_FileCount == 0)
				{
					G_USR_SearchNowFileIndex = 0;
				}
				else
				{
					G_USR_SearchNowFileIndex = G_USR_LastFileIndex;
				}

				//printf("Duplicated file index condition\n");
          		//printf("G_USR_TempSearchNowFileIndex = %x\n",G_USR_TempSearchNowFileIndex);
     			//printf("G_USR_FirstFileIndex = %x\n",G_USR_FirstFileIndex);
          		//printf("G_USR_FirstJpgFileIndex = %x\n",G_USR_FirstJpgFileIndex);
          		//printf("G_USR_SearchNowFileIndex = %x\n",G_USR_SearchNowFileIndex);
          		//printf("G_USR_LastFileIndex = %x\n",G_USR_LastFileIndex);
          		//printf("G_USR_LastJpgFileIndex = %x\n",G_USR_LastJpgFileIndex);
          		//printf("G_USR_JpgFileCount = %x\n",G_USR_JpgFileCount);
          		//printf("G_USR_FileCount = %x\n",G_USR_FileCount);
				return;
			}
		}
		//patch4.5@ada@Duplicated file index in same DCF directory end

          // WWWW0410, Fix zero indexed file
          if ((G_USR_FileIndex < G_USR_SearchNowFileIndex) || (G_USR_SearchNowFileIndex == 0 && G_USR_FileIndex == 0))
          {
               G_USR_FileType = fileType;
               G_USR_FileIndex = G_USR_SearchNowFileIndex;
          }

          //ada@0401 for Multi-Frame Play Back
          if (fileType == K_USR_JPG_TYPE)
          {
               //patch4.4@ada@DPOF skip AVI & WAV begin
               if (G_USR_JpgFileCount == 0)
               {
                    G_USR_FirstJpgFileIndex = G_USR_SearchNowFileIndex;

	   				//patch4.5@ada@Fix file index bug begin
     				G_USR_LastJpgFileIndex = G_USR_SearchNowFileIndex;
	   				//patch4.5@ada@Fix file index bug end
               }
               else
               {
                    if (G_USR_FirstJpgFileIndex > G_USR_SearchNowFileIndex)
                    {
                         G_USR_FirstJpgFileIndex = G_USR_SearchNowFileIndex;
                    }

		   			//patch4.5@ada@Fix file index bug begin
					if (G_USR_SearchNowFileIndex > G_USR_LastJpgFileIndex)
					{
     					G_USR_LastJpgFileIndex = G_USR_SearchNowFileIndex;
					}
	   				//patch4.5@ada@Fix file index bug end
               }

               G_USR_JpgFileCount++;

               //printf("G_USR_FirstJpgFileIndex = %d\n",G_USR_FirstJpgFileIndex);
               //printf("G_USR_LastJpgFileIndex = %d\n",G_USR_LastJpgFileIndex);
               //printf("G_USR_JpgFileCount = %d\n",G_USR_JpgFileCount);
               //patch4.4@ada@DPOF skip AVI & WAV end

               //version4.0@ada@0513 for DPOF

               //patch4.4@ada@DPOF begin
               //L2_DRAMSetStartAddr((K_SDRAM_DPOF3_BufAddr + (((ULONG)G_USR_SearchNowFileIndex) - 1) * 3),K_SDRAM_NoPrefetch);

⌨️ 快捷键说明

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