📄 dosusr.c
字号:
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 + -