FaxData2pc.c
上传用户:xhjmsc
上传日期:2019-09-13
资源大小:389k
文件大小:10k
- /************************************************
- Description:
- Send the received fax raw data to PC via MAX232
- 3G 2-dimensional Data Format Recommendation T.4
- Input:
- none
- Output:
- none
- Update:
- 2006.11.02 Bryan function header create
- ************************************************/
- #include "includeH.h"
- void FaxData2PCFromSoftUart(void) // send the received fax data to PC via MAX232
- {
- unsigned char ucFlashColumnAddCnt=0,
- ucRxIndex=0,ucBlockCnt=0;
- unsigned char ucGeneralCnt=0;
- unsigned int wNewFaxHead=0, wNewFaxRear=0,
- wNextPageAddress=0,wPageAddress=0,
- wGeneralCnt=0;
- //ucGeneralCnt=2;
- //ZERO_ADDRESS();
- //read rear pointer and read front pointer
- //if RearAddress-FrontAddress!=0
- // transfer and front++
- //else
- // transfer over
- MODEM_BUS_CON_PORT |= SOFT_UART_2_PC;
- ReadLastFaxRearPointer();//get gwRearPointerAddress and gwPageAddress
- //ReadLast16BytesFromFlashMemoryArea(cstFaxRearPointerTableStartBlockNum,cstFaxRearPointerTableOverBlockNum);
- wNewFaxRear=gwPageAddress;
- ReadLastFaxFrontPointer();//get gwFrontPointerAddress, gwPageAddress,
- //gwFrontPointerAddress and gwColumnAddress
- gwPageAddress++; //add Dec.19, 2006
- do{
- wNextPageAddress=gwPageAddress+64;
- wPageAddress=CalNextPageAddress(wPageAddress);
- }while(wNextPageAddress==wPageAddress);
- wNewFaxHead=gwPageAddress;
- if (wNewFaxHead<wNewFaxRear)//(wNewFaxHead!=wNewFaxRear)//modify Dec.20,2006
- {
-
- for (wPageAddress=wNewFaxHead;wPageAddress<=wNewFaxRear;)//wNewFaxHead
- {
-
- ROW_ADDRESS_LOW = wPageAddress & 0xff;
- ROW_ADDRESS_HIGH = (wPageAddress>>8) & 0xff;
- for (ucFlashColumnAddCnt = 0;ucFlashColumnAddCnt < 8;ucFlashColumnAddCnt++)//8*256=2048
- {
- //8 * 256 == 2048 Bytes 2^4*2^8 12bit column address HighColumnAddr:0~8
- //total 8*256B+64B=2K+64B
- COLUMN_ADDRESS_HIGH=ucFlashColumnAddCnt;
- READ_256_BYTE();//read 256 Byte to aucUartRxBuf[256]
- for (wGeneralCnt=0;wGeneralCnt<256;wGeneralCnt++)//
- {
- SoftUartTxOneFrame(aucUartRxBuf[wGeneralCnt]);
- if (aucUartRxBuf[wGeneralCnt-1] == 0xfb && aucUartRxBuf[wGeneralCnt-2] == 0x13 && aucUartRxBuf[wGeneralCnt-3] == 0xff)
- {_NOP();break;}
- }//third for
- if (aucUartRxBuf[wGeneralCnt-1] == 0xfb && aucUartRxBuf[wGeneralCnt-2] == 0x13 && aucUartRxBuf[wGeneralCnt-3] == 0xff)
- break;
- }//second for
-
- if (aucUartRxBuf[wGeneralCnt-1] == 0xfb && aucUartRxBuf[wGeneralCnt-2] == 0x13 && aucUartRxBuf[wGeneralCnt-3] == 0xff)//pageimage over
- {
- ATcmdDelay();// a bug of Dec.23,2006 FF 10 00 0E // receive data delay(if not, can't receive 0x10 0x03)
- if ((gwGeneralPageAddress>>6) >=cstFaxFrontPointerTableOverBlockNum)
- {
- for (ucBlockCnt=0;ucBlockCnt<4;ucBlockCnt++)
- {
- wPageAddress=(cstFaxFrontPointerTableStartBlockNum+ucBlockCnt)<<6;
- ROW_ADDRESS_LOW=wPageAddress & 0XFF;
- ROW_ADDRESS_HIGH=(wPageAddress>>8) & 0XFF;
- ERASE_ONE_BLOCK();
- }
- gwGeneralPageAddress=cstFaxFrontPointerTableStartPage;
- gwColumnAddress=0;
- }
-
-
-
- ucRxIndex=0; //write Fax Rear Pointer
- aucUartRxBuf[ucRxIndex++]=wPageAddress & 0xff;
- aucUartRxBuf[ucRxIndex++]=(wPageAddress>>8) & 0xff;
- for(ucGeneralCnt=0;ucGeneralCnt<14;ucGeneralCnt++)
- {
- aucUartRxBuf[ucRxIndex++] = 0x55;
- }
- Write16Bytes2FlashMemoryArea();
- if (gwColumnAddress<2096)
- {
- if (gwColumnAddress<2048)
- gwColumnAddress+=512;
- else
- gwColumnAddress+=16;
- }
- else
- {
- gwColumnAddress=0;
- if (gwGeneralPageAddress<=959)gwGeneralPageAddress++;
- else
- gwGeneralPageAddress=704;
- }
- wPageAddress++;
- if(wPageAddress==0)
- wPageAddress+=2560;//Mar. 1, 20007
- do{
- wNextPageAddress=wPageAddress+64;
- wPageAddress=CalNextPageAddress(wPageAddress);
- }while(wNextPageAddress==wPageAddress);
- //ReadLastFaxFrontPointer();//read next write fax front pointer addr //delete at Jan. 19, 2007
- continue;//break; a bug of Dec. 12,2006
- }
- wPageAddress++;
- if(wPageAddress==0)
- wPageAddress+=2560;//Mar. 1, 20007
- do{
- wNextPageAddress=wPageAddress+64;//wNextPageAddress=gwPageAddress+64;
- wPageAddress=CalNextPageAddress(wPageAddress);
- }while(wNextPageAddress==wPageAddress);
- }//third for ----> next page
-
- }//if wNewFaxHead<wNewFaxRear
- MODEM_BUS_CON_PORT &= ~SOFT_UART_2_PC;
- }//function over
- /*
- void FaxData2PCFromUart(void) // send the received fax data to PC via MAX232
- {
- unsigned char ucFlashColumnAddCnt=0,ucRxIndex=0,
- ucGeneralCnt=0;
- unsigned int wNewFaxHead=0, wNewFaxRear=0,
- wNextPageAddress=0,wPageAddress=0;
- //ucGeneralCnt=2;
- //ZERO_ADDRESS();
- //read rear pointer and read front pointer
- //if RearAddress-FrontAddress!=0
- // transfer and front++
- //else
- // transfer over
- ReadLastFaxRearPointer();//get gwRearPointerAddress and gwPageAddress
- wNewFaxRear=gwPageAddress;
- ReadLastFaxFrontPointer();//get gwFrontPointerAddress, gwPageAddress,
- //gwFrontPointerAddress and gwColumnAddress
- gwPageAddress++; //add Dec.19, 2006
- do{
- wNextPageAddress=gwPageAddress+64;
- wPageAddress=CalNextPageAddress(wPageAddress);
- }while(wNextPageAddress==wPageAddress);
- wNewFaxHead=gwPageAddress;
- if (wNewFaxHead<wNewFaxRear)//(wNewFaxHead!=wNewFaxRear)//modify Dec.20,2006
- {
-
- for (wPageAddress=wNewFaxHead;wPageAddress<=wNewFaxRear;)//wNewFaxHead
- {
-
- ROW_ADDRESS_LOW = wPageAddress & 0xff;
- ROW_ADDRESS_HIGH = (wPageAddress>>8) & 0xff;
- for (ucFlashColumnAddCnt = 0;ucFlashColumnAddCnt < 8;ucFlashColumnAddCnt++)//8*256=2048
- {
- //8 * 256 == 2048 Bytes 2^4*2^8 12bit column address HighColumnAddr:0~8
- //total 8*256B+64B=2K+64B
- COLUMN_ADDRESS_HIGH=ucFlashColumnAddCnt;
- READ_256_BYTE();//read 256 Byte to aucUartRxBuf[256]
- for (ucGeneralCnt=0;ucGeneralCnt<4;ucGeneralCnt++)//16*16Bytes send 16Bytes one time
- //modify Dec.28,2006 4*64Bytes one time
- {
- Send64BytePageImageData(64,ucGeneralCnt);
- while(gucTxBufCnt!=0)//send over, gucTxBufCnt == 0
- {
- ;
- }
- //ATcmdDelay();
- if (gwTxNum != 64 && TXBUF0==0xfb)
- break;
- }//third for
- if (gwTxNum != 64)
- break;
- }//second for
-
- if ((gwTxNum != 64)
- || (aucUartTxBuf[gwTxNum-1] == 0xfb && aucUartTxBuf[gwTxNum-2] == 0x13 && aucUartTxBuf[gwTxNum-3] == 0xff)
- //(aucUartTxBuf[gwTxNum] == 0xfb && aucUartTxBuf[gwTxNum-1] == 0x13 && aucUartTxBuf[gwTxNum-2] == 0xff)//a bug of Jan.24, 2007
- )//gwTxNum!=16, pageimage over
- { //(gwTxNum != 16) modify Dec.20,2006
- ATcmdDelay();// a bug of Dec.23,2006 FF 10 00 0E // receive data delay(if not, can't receive 0x10 0x03)
- ucRxIndex=0; //write Fax Rear Pointer
- aucUartRxBuf[ucRxIndex++]=wPageAddress & 0xff;
- aucUartRxBuf[ucRxIndex++]=(wPageAddress>>8) & 0xff;
- aucUartRxBuf[ucRxIndex++]=0x55;
- aucUartRxBuf[ucRxIndex++]=0x55;
- WriteFaxFrontPointerTable();
- wPageAddress++;
- do{
- wNextPageAddress=wPageAddress+64;
- wPageAddress=CalNextPageAddress(wPageAddress);
- }while(wNextPageAddress==wPageAddress);
- //ReadLastFaxFrontPointer();//read next write fax front pointer addr //delete at Jan. 19, 2007
- continue;//break; a bug of Dec. 12,2006
- }
- wPageAddress++;
- do{
- wNextPageAddress=wPageAddress+64;//wNextPageAddress=gwPageAddress+64;
- wPageAddress=CalNextPageAddress(wPageAddress);
- }while(wNextPageAddress==wPageAddress);
- }//for ----> next page
-
- //ATcmdDelay(); // receive data delay(if not, can't receive 0x10 0x03)
-
-
- }//if RearPointer!=FrontPointer
- //gucRxTxFlag = DTETX; // Del at Dec.25,2006
- }
- */
- /*
- void Send64BytePageImageData(unsigned char ucTxDataNum,unsigned char ucGeneralCnt)
- {
- unsigned char ucDataCnt = 0;
-
- gwTxNum=ucTxDataNum;
- gpucTxBufPnt = 0;
- for(ucDataCnt=0;ucDataCnt<64;ucDataCnt++) //ready data to TxdataBuf[]
- {
- aucUartTxBuf[ucDataCnt]=aucUartRxBuf[64*ucGeneralCnt+ucDataCnt];
- gdwRxQueueFrontCnt++;
- //There is a bug. when a[255]==10 && a[0]==03 && a[1]==fb, it will be error. it should add Length Judge
- if (aucUartTxBuf[ucDataCnt] == 0xfb && aucUartTxBuf[ucDataCnt-1] == 0x13 && aucUartTxBuf[ucDataCnt-2] == 0xff)
- {
- gwTxNum = ucDataCnt+1;
- break;
- }
- }
- TXBUF0=aucUartTxBuf[0]; //start sent
- gucTxBufCnt=1; //aucUartTxBuf[0] is the first byte, next TX is the second.
- }
- */