\*---------------------------------------------------------------------------*/
void cohpsk_put_test_bits(struct COHPSK *coh, int *state, short error_pattern[],
- int *bit_errors, float rx_bits_sd[])
+ int *bit_errors, char rx_bits_char[])
{
int i, next_state, anerror;
int rx_bits[COHPSK_BITS_PER_FRAME];
for(i=0; i<COHPSK_BITS_PER_FRAME; i++) {
- rx_bits[i] = rx_bits_sd[i] < 0.0;
+ rx_bits[i] = rx_bits_char[i];
}
*bit_errors = 0;
FILE *fin, *fout, *foct;
struct COHPSK *cohpsk;
float rx_bits[COHPSK_BITS_PER_FRAME];
+ char rx_bits_char[COHPSK_BITS_PER_FRAME];
COMP rx_fdm[COHPSK_MAX_SAMPLES_PER_FRAME];
short rx_fdm_scaled[COHPSK_MAX_SAMPLES_PER_FRAME];
int frames, sync, nin_frame;
cohpsk_demod(cohpsk, rx_bits, &sync, rx_fdm, &nin_frame);
if (sync) {
- fwrite(rx_bits, sizeof(float), COHPSK_BITS_PER_FRAME, fout);
+ for(i=0; i<COHPSK_BITS_PER_FRAME; i++)
+ rx_bits_char[i] = rx_bits[i] < 0.0;
+ fwrite(rx_bits_char, sizeof(char), COHPSK_BITS_PER_FRAME, fout);
if (oct) {
for(r=0; r<NSYMROW; r++, log_data_r++) {
{
FILE *fout;
int tx_bits[COHPSK_BITS_PER_FRAME];
- float sd_tx_bits[COHPSK_BITS_PER_FRAME];
+ char tx_bits_char[COHPSK_BITS_PER_FRAME];
int numBits, nFrames, n;
int *ptest_bits_coh, *ptest_bits_coh_end, i;
if (argc < 2) {
- printf("usage: %s OutputOneFloatPerBitFile numBits\n", argv[0]);
+ printf("usage: %s OutputOneCharPerBitFile numBits\n", argv[0]);
exit(1);
}
}
for(i=0; i<COHPSK_BITS_PER_FRAME; i++)
- sd_tx_bits[i] = 1.0 - 2.0*tx_bits[i];
+ tx_bits_char[i] = tx_bits[i];
- fwrite(sd_tx_bits, sizeof(float), COHPSK_BITS_PER_FRAME, fout);
+ fwrite(tx_bits_char, sizeof(char), COHPSK_BITS_PER_FRAME, fout);
/* if this is in a pipeline, we probably don't want the usual
buffering to occur */
{
FILE *fin, *fout;
struct COHPSK *cohpsk;
- float tx_bits_sd[COHPSK_BITS_PER_FRAME];
+ char tx_bits_char[COHPSK_BITS_PER_FRAME];
int tx_bits[COHPSK_BITS_PER_FRAME];
COMP tx_fdm[COHPSK_NOM_SAMPLES_PER_FRAME];
short tx_fdm_scaled[COHPSK_NOM_SAMPLES_PER_FRAME];
int i;
if (argc < 3) {
- printf("usage: %s InputOneFloatPerBitFile OutputModemRawFile\n", argv[0]);
+ printf("usage: %s InputOneCharPerBitFile OutputModemRawFile\n", argv[0]);
exit(1);
}
frames = 0;
- while(fread(tx_bits_sd, sizeof(float), COHPSK_BITS_PER_FRAME, fin) == COHPSK_BITS_PER_FRAME) {
+ while(fread(tx_bits_char, sizeof(char), COHPSK_BITS_PER_FRAME, fin) == COHPSK_BITS_PER_FRAME) {
frames++;
for(i=0; i<COHPSK_BITS_PER_FRAME; i++)
- tx_bits[i] = tx_bits_sd[i] < 0.0;
+ tx_bits[i] = tx_bits_char[i];
cohpsk_mod(cohpsk, tx_fdm, tx_bits);
cohpsk_clip(tx_fdm);
int main(int argc, char *argv[])
{
FILE *fin, *foct;
- float rx_bits_sd[COHPSK_BITS_PER_FRAME];
+ char rx_bits[COHPSK_BITS_PER_FRAME];
int state, i, nbits, bit_errors, nerrors;
short error_pattern[COHPSK_BITS_PER_FRAME];
int error_positions_hist[COHPSK_BITS_PER_FRAME], logframes;
error_positions_hist[i] = 0;
if (argc < 2) {
- fprintf(stderr, "usage: %s InputOneFloatPerBitFile [OctaveLogFile]\n", argv[0]);
+ fprintf(stderr, "usage: %s InputOneCharPerBitFile [OctaveLogFile]\n", argv[0]);
exit(1);
}
error_positions_hist[i] = 0;
state = 0; nbits = 0; nerrors = 0;
- while (fread(rx_bits_sd, sizeof(float), COHPSK_BITS_PER_FRAME, fin) == COHPSK_BITS_PER_FRAME) {
+ while (fread(rx_bits, sizeof(char), COHPSK_BITS_PER_FRAME, fin) == COHPSK_BITS_PER_FRAME) {
- cohpsk_put_test_bits(coh, &state, error_pattern, &bit_errors, rx_bits_sd);
+ cohpsk_put_test_bits(coh, &state, error_pattern, &bit_errors, rx_bits);
if (state == 1) {
for(i=0; i<COHPSK_BITS_PER_FRAME; i++)
error_positions_hist[i] += error_pattern[i];