#include "stdafx.h" #include "FPGA.h" bool ProcessImageObject(RawPacketObject *pObj, IMAGE &Img) { for (size_t i = 0; i < pObj->sizeOfObject(); i++) { DIOSKEYTYPE key = (*pObj)[i].GetKey(); switch (key) { case g_KEY_IMAGE_WIDTH: Img.Width = (*pObj)[i]; break; case g_KEY_IMAGE_HEIGHT: Img.Height = (*pObj)[i]; break; case g_KEY_IMAGE_BIT: Img.Bit = (*pObj)[i]; break; case g_KEY_IMAGE_DEADLINE_TOP: Img.TopOffset = (*pObj)[i]; break; case g_KEY_IMAGE_DEADLINE_LEFT: Img.LeftOffset = (*pObj)[i]; break; case g_KEY_IMAGE_DEADLINE_RIGHT: Img.RightOffset = (*pObj)[i]; break; case g_KEY_IMAGE_DEADLINE_BOTTOM: Img.BottomOffset = (*pObj)[i]; break; case g_KEY_IMAGE_TAG: Img.ImageTag = (*pObj)[i]; break; case g_KEY_IMAGE_INDEX: Img.ImageIndex = (*pObj)[i]; break; case g_KEY_IMAGE_YEAR: Img.Year = (*pObj)[i]; break; case g_KEY_IMAGE_MONTH: Img.Month = (*pObj)[i]; break; case g_KEY_IMAGE_DAY: Img.Day = (*pObj)[i]; break; case g_KEY_IMAGE_HOUR: Img.Hour = (*pObj)[i]; break; case g_KEY_IMAGE_MINUTE: Img.Minute = (*pObj)[i]; break; case g_KEY_IMAGE_SEC: Img.Second = (*pObj)[i]; break; case g_KEY_IMAGE_MILLSEC: Img.MillonSecond = (*pObj)[i]; break; case g_KEY_IMAGE_DATA: Img.pData = (char*)((const char*)(*pObj)[i]); break; default: break; } } return true; } void EncodeCommand(DiosPacket &OutputCommand, BYTE PhyIndex, BYTE LogicIndex, int Target, BYTE Command) { char temp = PhyIndex; OutputCommand.SetPhyDevIdx(temp); temp = LogicIndex; OutputCommand.SetLogicDevIdx(temp); unsigned int tag = Target; OutputCommand.SetTargetDirection(tag); OutputCommand.SetCommand(Command); OutputCommand.SetRetcode(0); } void EncodeParameters(DiosPacket &OutputCommand, const char *pData, size_t dataLen) { OutputCommand.AddData(pData, dataLen); } int WindowNofify(const char * InCommand, int len) { WORD windowvalue; memcpy(&windowvalue, &InCommand[2], sizeof(windowvalue)); printf("****Receive FPGA Window is %d ******\n", windowvalue); return 0; } int WindowStateNotify(const char * InCommand, int len) { char windowstate; memcpy(&windowstate, &InCommand[2], sizeof(windowstate)); printf("*******Receive FPGA WINDOW STATE is %s *******\n", windowstate == 0 ? "stop" : "start"); return 0; } int AcqStateNotify(const char * InCommand, int len) { char acqvalue; memcpy(&acqvalue, &InCommand[2], sizeof(acqvalue)); printf("******Receive FPGA ACQ STATE is %s *********\n", acqvalue == 0 ? "stop" : "start"); if (acqvalue == 0) { printf("===========Acquire End==============\n"); } return 0; } // //int ImageReadyNofify(const char * InCommand, int len) //{ // WORD acqvalue; // unsigned short int type = 0; // bool bProcEnd = true; // unsigned int Pointer = 0; // unsigned short int sValue = 0; // unsigned int iValue = 0; // double dValue = 0; // double dImageTag = 0; // double dImageIndex = 0; // // memcpy(&acqvalue, &InCommand[2], sizeof(acqvalue)); // printf("Receive FPGA Image Ready \n"); // // while(bProcEnd) // { // memcpy(&type,&InCommand[Pointer],sizeof(short int)); // switch (type) // { // case 0xA00C: // Pointer += 2; // memcpy(&iValue,&InCommand[Pointer],sizeof(iValue)); // printf("image packet length is %d",iValue); // Pointer += 4; // break; // case 0x100D: // Pointer += 2; // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue)); // printf("Width: %d\t",sValue); // Pointer += 2; // break; // case 0x100E: // Pointer += 2; // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue)); // printf("Hight: %d\t",sValue); // Pointer += 2; // break; // case 0x100F: // Pointer += 2; // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue)); // printf("Bit: %d\t\n",sValue); // Pointer += 2; // break; // case 0x1010: // Pointer += 2; // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue)); // printf("TopOffset: %d\t",sValue); // Pointer += 2; // break; // case 0x1011: // Pointer += 2; // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue)); // printf("LeftOffset: %d\t",sValue); // Pointer += 2; // break; // case 0x1012: // Pointer += 2; // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue)); // printf("RightOffset: %d\t",sValue); // Pointer += 2; // break; // case 0x1013: // Pointer += 2; // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue)); // printf("BottomOffset: %d\t\n",sValue); // Pointer += 2; // break; // case 0x3014: // Pointer += 2; // memcpy(&dValue,&InCommand[Pointer],sizeof(dValue)); // printf("ImageTag: %ld\t",dValue); // dImageTag = dValue; // Pointer += 8; // break; // case 0x3015: // Pointer += 2; // memcpy(&dValue,&InCommand[Pointer],sizeof(dValue)); // printf("ImageIndex: %ld\t\n",dValue); // dImageIndex = dValue; // Pointer += 8; // break; // case 0x1016: // Pointer += 2; // memcpy(&sValue,&InCommand[Pointer],sizeof(sValue)); // printf("Year: %d\t",sValue); // Pointer += 2; // break; // case 0x0017: // Pointer += 2; // printf("Month: %d\t",InCommand[Pointer]); // Pointer ++; // break; // case 0x0018: // Pointer += 2; // printf("Day: %d\t",InCommand[Pointer]); // Pointer ++; // break; // case 0x0019: // Pointer += 2; // printf("hour: %d\t",InCommand[Pointer]); // Pointer ++; // break; // case 0x001A: // Pointer += 2; // printf("Minute: %d\t",InCommand[Pointer]); // Pointer ++; // break; // case 0x001B: // Pointer += 2; // printf("Second: %d\t",InCommand[Pointer]); // Pointer ++; // break; // case 0x101C: // Pointer += 2; // memcpy(&sValue, &InCommand[Pointer], sizeof(sValue)); // printf("ms: %d\t\n", sValue); // Pointer += 2; // break; // case 0xA01D: // Pointer += 2; // memcpy(&iValue,&InCommand[Pointer],sizeof(iValue)); // printf("\n save image data length is %d\n",iValue); // // bProcEnd = false; // break; // // default: // printf("\n get wrong type %d ,just return.\n",type); // bProcEnd = false; // // } // } // CFPGACommunication g_obFPGAComm; // g_obFPGAComm.FetchImage(dImageTag,dImageIndex); // // return 0; //} //