//++ struct totalTimeDescriptor{ //Windows SYSTEMTIME WORD year; WORD month; WORD dayOfWeek; WORD day; WORD hour; WORD minute; WORD second; WORD milliseconds; }; struct timeFilterDescriptor{ WORD discrete; //milliseconds WORD convolutionWindow; //samples WORD convolutionFunction; //ID }; struct antennaStateDescriptor{ WORD base // }; struct attenuationStateDescriptor{ double aorAttenuation; //dB double commonAttenuation; //dB }; struct receiverStateDescriptor{ double time; //sec current day GMT totalTimeDescriptor totalTime; // attenuationStateDescriptor attenuation; timeFilterDescriptor filter; antennaStateDescriptor antennas; }; struct spectrumSample_AOR_PCP{ char signature[8]; //"AOR_PCP_" receiverStateDescriptor state; WORD rightP[CHANNEL_PER_SPECTRUM]; WORD rightCP[CHANNEL_PER_SPECTRUM]; WORD leftP[CHANNEL_PER_SPECTRUM]; WORD rightCP[CHANNEL_PER_SPECTRUM]; }; //-- //++ struct magnitudePhaseDistributionArray{ complex[128]; //double re, double im; }; struct ephemeridesDescriptor{ double culmination; //sec double declination; //rad double radius; //rad double P; //rad double B; //rad double L; //rad double dDdt; //rad/sec double d2Ddt2; //rad/sec^2 double dHdt; //rad/sec double d2Hdt2; //rad/sec^2 }; struct ephemeridesCluster{ ephemeridesDescriptor previosDay; ephemeridesDescriptor currentDay; ephemeridesDescriptor nextDay; }; struct sourceFileHeader{ char signature[8]; WORD channelPerSpectrum; WORD bitPerSample; totalTimeDescriptor startTime; //GMT totalTimeDescriptor finishTime; //GMT ephemeridesCluster ephemerides; magnitudePhaseDistributionArray magnitudePhaseDistribution; char comment[1024]; BYTE reserved[1024]; }; //-- //++ i scan, j channel access example: File access ... seek(hFile,sizeof(sourceFileHeader) + i*sizeof(spectrumSample_AOR_PCP)); read(spectrumBuffer,sizeof(spectrumSample_AOR_PCP)); WORD rightPhaseSample = spectrumBuffer.rightP[j]; ... Memory access spectrumSample_AOR_PCP* pSpectrum = pViewMapOfFile + sizeof(sourceFileHeader); ... WORD rightPhaseSample = pSpectrum[i].rightP[j]; ... //--