Motorola Pro FLX Manuel d'utilisateur Page 63

  • Télécharger
  • Ajouter à mon manuel
  • Imprimer
  • Page
    / 74
  • Table des matières
  • MARQUE LIVRES
  • Noté. / 5. Basé sur avis des utilisateurs
Vue de la page 62
Design and Implementation of a Practical FLEX Paging Decoder
Grayson Wireless 55
}
sprintf(hpibStr,"PAG:FLEX:RATE %s",rateStr);
sendHpib(hpibStr);
sprintf(hpibStr,"DM:FORM %s",fskStr);
sendHpib(hpibStr);
delay(1000);
randomize();
#ifdef WRITETXT
sprintf(fileNameStr,"..\\data\\flx%c%s.TXT",rate,numStr);
if ( (textFile=fopen(fileNameStr,"wt")) == NULL) {
printf("Error text output file %s not created.\n", fileNameStr);
exit(-1);
}
#endif
sprintf(fileNameStr,"..\\data\\flx%c%s.RND",rate,numStr);
if ( (binFile=fopen(fileNameStr,"wb")) == NULL) {
printf("Error binary output file %s not created.\n", fileNameStr);
exit(-1);
}
//from page 2-26 in HP8648A manual
//lsb16 = 0 msb16=16926 : cycle 0 frame 0 collapse 0 repeat 0 t 0xF
pFlexBlock = new (flexBlock);
while (frame <= LAST_FRAME)
{
#ifdef ECHOINFO
printf("Forming and sending flex frame %d\n", frame);
#endif
#ifdef SENDTOHPIB
hp8648a.EnableEOT(0);
#endif
//FI = xxxx 0000 ffff fff0 0000 0 c=0, n=0, r=0, t=0
//xxxx = 1's complement fff0 + ffff
lsb14 = (frame & 0xF) + ((frame >> 4) & 0x7);
lsb14 = (lsb14 ^ 0xF) & 0xF;
msb7 = ((frame << 8) & 0x7F00) | lsb14;
frameInfo = (invert(msb7) >> 11);
// printf("frame: %d, x is 0x%04lX, fi is 0x%06lX invert fi is 0x%06lX\n", frame, lsb14, msb7,
frameInfo);
frameInfo = bch31_21_parity_plus_even(frameInfo);
frameInfo = invert(frameInfo);
// frameInfo is equal to ((unsigned long)(16926) << 16) & (unsigned long)(0xFFFF0000)
// printf("Frame Info %08lX\n",frameInfo);
sprintf(hpibStr,"PAG:FLEX:ARB:DEF");
sprintf(s," %d, %d",frame, (frameInfo >> 16) & 0xFFFF);
strcat(hpibStr,s);
sprintf(s, ", %d", frameInfo & 0xFFFF);
strcat(hpibStr,s);
#ifdef WRITETXT
fprintf(textFile,"FRAME %03d\n",frame);
fprintf(textFile,"FI=%08lX\n",frameInfo);
#endif
pFlexBlock->frameInfo = frameInfo;
for (i=0; i<maxCw; i++)
{
sendHpib(hpibStr);
strcpy(hpibStr,"");
lsb14 = random(0x4000); //return random number between 0 and 0x3FFF
msb7 = random(0x80); //return random number between 0 and 0x7F
flexData = (msb7 << 14) | lsb14;
// printf("lsb14 %lX msb7 %lX flexdata %08lX\n", lsb14, msb7, flexData);
flexData = bch31_21_parity_plus_even(flexData);
flexData = invert(flexData);
//had problem with Borland the msb and lsb conversion of flexData could not
//be done on the same line
sprintf(s, ", %d", (flexData >> 16) & 0xFFFF );
strcat(hpibStr,s);
sprintf(s, ", %d", flexData & 0xFFFF );
strcat(hpibStr,s);
Vue de la page 62
1 2 ... 58 59 60 61 62 63 64 65 66 67 68 ... 73 74

Commentaires sur ces manuels

Pas de commentaire