00184 {
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
if (demodulador(fskd,&fskd->
x1,GET_SAMPLE))
return(-1);
00202 samples++;
00203
for(;;)
00204 {
00205 search_startbit2:
00206
if (!*len) {
00207 fskd->
state =
STATE_SEARCH_STARTBIT2;
00208
return 0;
00209 }
00210 samples++;
00211
if (demodulador(fskd,&fskd->
x2,GET_SAMPLE))
return(-1);
00212
#if 0
00213
printf(
"x2 = %5.5f ", fskd->
x2);
00214
#endif
00215
if (fskd->
x2 < -0.5)
break;
00216 }
00217 search_startbit3:
00218
00219 i=fskd->
spb/2;
00220
if (*len < i) {
00221 fskd->
state =
STATE_SEARCH_STARTBIT3;
00222
return 0;
00223 }
00224
for(;i;i--) {
if (demodulador(fskd,&fskd->
x1,GET_SAMPLE))
return(-1);
00225
#if 0
00226
printf(
"x1 = %5.5f ", fskd->
x1);
00227
#endif
00228
samples++; }
00229
00230
00231
00232 }
while (fskd->
x1>0);
00233 fskd->
state =
STATE_GET_BYTE;
00234
00235 getbyte:
00236
00237
00238
00239
if (fskd->
nbit < 8) {
00240
if (*len < 1320)
00241
return 0;
00242 }
else {
00243
if (*len < 80)
00244
return 0;
00245 }
00246
00247 j=fskd->
nbit;
00248
for (a=n1=0;j;j--) {
00249 olen = *len;
00250 i=get_bit_raw(fskd, buffer, len);
00251 buffer += (olen - *len);
00252
if (i == -1)
return(-1);
00253
if (i) n1++;
00254 a>>=1; a|=i;
00255 }
00256 j=8-fskd->
nbit;
00257 a>>=j;
00258
00259
00260
if (fskd->
paridad) {
00261 olen = *len;
00262 i=get_bit_raw(fskd, buffer, len);
00263 buffer += (olen - *len);
00264
if (i == -1)
return(-1);
00265
if (i) n1++;
00266
if (fskd->
paridad==1) {
00267
if (n1&1) a|=0x100;
00268 }
else {
00269
if (!(n1&1)) a|=0x100;
00270 }
00271 }
00272
00273
00274
00275
for (j=fskd->
nstop;j;j--) {
00276 r = get_bit_raw(fskd, buffer, len);
00277
if (r == -1)
return(-1);
00278
if (!r) a|=0x200;
00279 }
00280
00281
00282
00283
00284
00285 *outbyte = a;
00286 fskd->
state =
STATE_SEARCH_STARTBIT;
00287
return 1;
00288 }
00289 }