📄 dpof.c
字号:
DOS_SetCurrDir(G_DPOF_Dir0Cluster);
//printf("No JOB section exist,so delete DPOF file\n");
DPOF_DeleteFile(name);
DOS_SetCurrDir(G_USR_Dir1Cluster);
}
}
Dpof_File_Modify = 0;
return sts;
}
//-----------------------------------------------------------------------------
//DPOF_DeleteFile
//-----------------------------------------------------------------------------
UCHAR DPOF_DeleteFile(UCHAR *name) USING_0
{
UCHAR sts;
G_Card_UI_Action = 0;
sts = File_Delete1File(K_DOS_MatchName, (ULONG)name);
G_Card_UI_Action = 0;
return sts;
}
//-----------------------------------------------------------------------------
//DPOF_CheckDpofJobFieldExist
//-----------------------------------------------------------------------------
UCHAR DPOF_CheckDpofJobFieldExist(USHORT ImgSrcIdx) USING_0
{
UCHAR sts = FALSE;
UCHAR tmp1,tmp2;
L2_DRAMSetStartAddr((K_SDRAM_DPOF3_BufAddr + (((ULONG)ImgSrcIdx) - 1) * 3),K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp1,&tmp2);
if ((tmp1 == 0xff) && (tmp2 == 0xff))
{
sts = TRUE;
}
return sts;
}
//-----------------------------------------------------------------------------
//DPOF_CheckDpofJobFileExist
//-----------------------------------------------------------------------------
UCHAR DPOF_CheckDpofJobFileExist(USHORT ImgSrcIdx) USING_0
{
UCHAR sts = FALSE;
UCHAR tmp1,tmp2;
L2_DRAMSetStartAddr((K_SDRAM_DPOF3_BufAddr + ((ULONG)ImgSrcIdx - 1) * 3),K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp1,&tmp2);
if (tmp1 == 0xff)
{
sts = TRUE;
}
return sts;
}
//-----------------------------------------------------------------------------
//DPOF_RecordDpofJobParameter
//-----------------------------------------------------------------------------
void DPOF_RecordDpofJobParameter(USHORT ImgSrcIdx,/*USHORT PrtPid,*/UCHAR PrtTyp,USHORT PrtQty,UCHAR ImgFmt) USING_0
{
//printf("Record file index %d\n",ImgSrcIdx);
L2_DRAMSetStartAddr((K_SDRAM_DPOF3_BufAddr + ((ULONG)ImgSrcIdx - 1) * 3),K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(0xff,0xff);
L2_DRAMWriteWord(PrtTyp,ImgFmt);
L2_DRAMWriteWord((UCHAR)(PrtQty & 0x00ff),(UCHAR)((PrtQty & 0xff00) >> 8));
}
//-----------------------------------------------------------------------------
//DPOF_EraseDpofJobParameter
//-----------------------------------------------------------------------------
//version4.0@ada@0513 for DPOF
void DPOF_EraseDpofJobParameter(USHORT ImgSrcIdx,UCHAR File_Still_Exist) USING_0
{
UCHAR tmp1,tmp2;
L2_DRAMSetStartAddr((K_SDRAM_DPOF3_BufAddr + ((ULONG)ImgSrcIdx - 1) * 3 + 1),K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp1,&tmp2);
L2_DRAMSetStartAddr((K_SDRAM_DPOF3_BufAddr + ((ULONG)ImgSrcIdx - 1) * 3),K_SDRAM_NoPrefetch);
if (File_Still_Exist)
{
L2_DRAMWriteWord(0xff,0x00);
L2_DRAMWriteWord(0x00,tmp2);
}
else
{
L2_DRAMWriteWord(0x00,0x00);
L2_DRAMWriteWord(0x00,0x00);
}
L2_DRAMWriteWord(0x00,0x00);
}
//-----------------------------------------------------------------------------
//DPOF_ReadDpofJobParameter
//-----------------------------------------------------------------------------
UCHAR DPOF_ReadDpofJobParameter(USHORT ImgSrcIdx,/*USHORT *PrtPid,*/UCHAR *PrtTyp,USHORT *PrtQty,UCHAR *ImgFmt) USING_0
{
UCHAR sts = FALSE;
UCHAR tmp1,tmp2;
L2_DRAMSetStartAddr((K_SDRAM_DPOF3_BufAddr + ((ULONG)ImgSrcIdx - 1) * 3),K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp1,&tmp2);
if ((tmp1 == 0xff) && (tmp2 == 0xff))
{
//version4.0@ada@0513 for DPOF
L2_DRAMReadWord(&tmp1,&tmp2);
*PrtTyp = tmp1;
*ImgFmt = tmp2;
L2_DRAMReadWord(&tmp1,&tmp2);
*PrtQty = ((USHORT)tmp1) | (((USHORT)tmp2) << 8);
sts = TRUE;
}
else
{
*PrtTyp = 0;
*ImgFmt = 0;
*PrtQty = 0;
}
return sts;
}
//-----------------------------------------------------------------------------
//DPOF_SelectSunplusImage
//-----------------------------------------------------------------------------
//version4.0@ada@0513 for DPOF
UCHAR DPOF_SelectSunplusImage(USHORT ImgSrcIdx,/*USHORT PrtPid,*/UCHAR PrtTyp,USHORT PrtQty/*,UCHAR ImgFmt*/) USING_0
{
UCHAR sts = FALSE;
UCHAR tmp1,tmp2,tmp3;
UCHAR ImgFmt;
//patch4.4@ada@DPOF begin
USHORT Quantity;
UCHAR tmp4,tmp5;
//patch4.4@ada@DPOF end
L2_DRAMSetStartAddr((K_SDRAM_DPOF3_BufAddr + (((ULONG)ImgSrcIdx) - 1) * 3),K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp1,&tmp2);
L2_DRAMReadWord(&tmp3,&ImgFmt);
//patch4.4@ada@DPOF begin
L2_DRAMReadWord(&tmp4,&tmp5);
Quantity = ((USHORT)tmp4) | (((USHORT)tmp5) << 8);
//patch4.4@ada@DPOF begin
if ((TotalSunplusDpofFileNumber < 999) && (DPOF_CheckDpofJobFieldExist(ImgSrcIdx) == FALSE) && (tmp1 == 0xff) && (tmp2 == 0x00))
{
DPOF_RecordDpofJobParameter(ImgSrcIdx,/*PrtPid,*/PrtTyp,PrtQty,ImgFmt);
Dpof_File_Modify = 1;
//patch4.4@ada@DPOF begin
if (Quantity == 0)
{
//printf("Select file %d\n",ImgSrcIdx);
TotalSunplusDpofFileNumber++;
}
//patch4.4@ada@DPOF end
sts = TRUE;
}
return sts;
}
//-----------------------------------------------------------------------------
//DPOF_DeselectSunplusImage
//-----------------------------------------------------------------------------
UCHAR DPOF_DeselectSunplusImage(USHORT ImgSrcIdx,UCHAR File_Still_Exist) USING_0
{
UCHAR sts = FALSE;
if ((TotalSunplusDpofFileNumber > 0) && (DPOF_CheckDpofJobFieldExist(ImgSrcIdx) == TRUE))
{
DPOF_EraseDpofJobParameter(ImgSrcIdx,File_Still_Exist);
TotalSunplusDpofFileNumber--;
Dpof_File_Modify = 1;
sts = TRUE;
}
return sts;
}
//-----------------------------------------------------------------------------
//DPOF_ModifySunplusImagePRTQTY
//-----------------------------------------------------------------------------
UCHAR DPOF_ModifySunplusImagePRTQTY(USHORT ImgSrcIdx,USHORT PrtQty) USING_0
{
UCHAR sts = FALSE;
if ((TotalSunplusDpofFileNumber > 0) && (DPOF_CheckDpofJobFieldExist(ImgSrcIdx) == TRUE))
{
L2_DRAMSetStartAddr((K_SDRAM_DPOF3_BufAddr + ((ULONG)ImgSrcIdx - 1) * 3 + 2),K_SDRAM_NoPrefetch);
L2_DRAMWriteWord((UCHAR)(PrtQty & 0x00ff),(UCHAR)((PrtQty & 0xff00) >> 8));
Dpof_File_Modify = 1;
//printf("Modify PrtQty success\n");
sts = TRUE;
}
return sts;
}
//-----------------------------------------------------------------------------
//DPOF_CopyJobSection
//-----------------------------------------------------------------------------
void DPOF_CopyJobSection(ULONG JobSection_StartDramAddr,ULONG JobSection_Length,ULONG ByteCount) USING_0
{
UCHAR tmp1,tmp2,tmp3,tmp4;
ULONG k = 0;
Other_DpofJobSection_Exist = 1;
if (NewDpofFileByteCount & 0x00000001)
{
if (ByteCount & 0x00000001)
{
//Copy the first byte tmp2
L2_DRAMSetStartAddr(JobSection_StartDramAddr,K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp1,&tmp2);
L2_DRAMSetStartAddr(NewDpofFileDramAddr,K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp3,&tmp4);
L2_DRAMSetStartAddr(NewDpofFileDramAddr,K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(tmp3,tmp2);
//Next source address is wordboundary
JobSection_StartDramAddr += 1;
JobSection_Length -= 1;
//Next destination address is also wordboundary
NewDpofFileByteCount += 1;
NewDpofFileDramAddr = K_SDRAM_DPOF4_BufAddr + (NewDpofFileByteCount >> 1);
//Copy the rest from wordboundary start-address area
L2_DoDRAMDMA((JobSection_StartDramAddr * 2),(NewDpofFileDramAddr * 2),(((JobSection_Length + 1) >> 1) << 1));
NewDpofFileByteCount += JobSection_Length;
NewDpofFileDramAddr = K_SDRAM_DPOF4_BufAddr + (NewDpofFileByteCount >> 1);
}
else
{
if (JobSection_Length & 0x00000001)
{
while ((JobSection_Length - 1) > 0)
{
//Copy the first byte tmp2
L2_DRAMSetStartAddr(JobSection_StartDramAddr,K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp1,&tmp2);
L2_DRAMSetStartAddr(NewDpofFileDramAddr,K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp3,&tmp4);
L2_DRAMSetStartAddr(NewDpofFileDramAddr,K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(tmp3,tmp1);
L2_DRAMWriteWord(tmp2,0x00);
//Next source address is not wordboundary
JobSection_StartDramAddr += 1;
JobSection_Length -= 2;
//Next destination address is not wordboundary
NewDpofFileByteCount += 2;
NewDpofFileDramAddr = K_SDRAM_DPOF4_BufAddr + (NewDpofFileByteCount >> 1);
}
//Copy the last byte tmp1
L2_DRAMSetStartAddr(JobSection_StartDramAddr,K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp1,&tmp2);
L2_DRAMSetStartAddr(NewDpofFileDramAddr,K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp3,&tmp4);
L2_DRAMSetStartAddr(NewDpofFileDramAddr,K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(tmp3,tmp1);
//Next destination address is wordboundary
NewDpofFileByteCount += 1;
NewDpofFileDramAddr = K_SDRAM_DPOF4_BufAddr + (NewDpofFileByteCount >> 1);
}
else
{
while (JobSection_Length > 0)
{
//Copy the first byte tmp2
L2_DRAMSetStartAddr(JobSection_StartDramAddr,K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp1,&tmp2);
L2_DRAMSetStartAddr(NewDpofFileDramAddr,K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp3,&tmp4);
L2_DRAMSetStartAddr(NewDpofFileDramAddr,K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(tmp3,tmp1);
L2_DRAMWriteWord(tmp2,0x00);
//Next source address is wordboundary
JobSection_StartDramAddr += 1;
JobSection_Length -= 2;
//Next destination address is not wordboundary
NewDpofFileByteCount += 2;
NewDpofFileDramAddr = K_SDRAM_DPOF4_BufAddr + (NewDpofFileByteCount >> 1);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -