H223ALReceiver::H223ALReceiver(H223ChannelInfo *nfo)
{
	outgoing_data = mkbuffer(MAX_AL_BUFFER_SIZE, sizeof(byte));
    incoming_data = mkbuffer(MAX_AL_BUFFER_SIZE, sizeof(byte));

    type = nfo->type;
    framed = nfo->framed;
    seq_num = nfo->seq_num;

    rcpc_code = nfo->rcpc_code;
    rcpc_rate = nfo->rcpc_rate;

    crc_bytes = nfo->crc_bytes;

    old_threshold = nfo->old_threshold;

    /* Initialize other parameters */
    max_arq = DEF_MAX_ARQ;
    last_recd = 31;
    last_written = 31;
    initialized = 0;
    bad_payloads = 0;
}
Ejemplo n.º 2
0
int
main(int argc, char *argv[])
{
    FILE *fd1;
    FILE *fd2;
    wave_t *wave1;
    wave_t *wave2;
    buffer_t *buffer1;
    buffer_t *buffer2;
    int bytesread;
    int length = 512;

    if (argc < 2) {
        fprintf(stderr, "Usage: %s <file>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    // LOAD wave to compare with Square1.wav
    if (!(fd1 = fopen(argv[1], "rb"))) {
        fprintf(stderr, "Couldn't open \"%s\".\n", argv[1]);
        exit(EXIT_FAILURE);
    }
    if (!(wave2 = waveopen(fd1))) {
        fprintf(stderr, "Couldn't open \"%s\" as a .wav file.\n", argv[1]);
        exit(EXIT_FAILURE);
    }
    // LOAD Pulse1.wav
    if (!(fd2 = fopen("./wavs/Pulse1.wav", "rb"))) {
        fprintf(stderr, "Couldn't open \"%s\".\n", "Square1.wav");
        exit(EXIT_FAILURE);
    }
    if (!(wave1 = waveopen(fd2))) {
        fprintf(stderr, "Couldn't open \"%s\" as a .wav file.\n", argv[1]);
        exit(EXIT_FAILURE);
    }

    wavegetprop(wave1, WAVE_LENGTH, &length);
    //length = 16;
    buffer1 = mkbuffer(wave1, length);
    buffer2 = mkbuffer(wave2, length);

    if (!(bytesread = getpcm(wave1, buffer1))) {
        fprintf(stderr, "Couldn't stream pcm data!\n");
        exit(EXIT_FAILURE);
    }
    if (!(bytesread = getpcm(wave2, buffer2))) {
        fprintf(stderr, "Couldn't stream pcm data!\n");
        exit(EXIT_FAILURE);
    }

    char2double(wave1, buffer1);
    char2double(wave2, buffer2);
    /*int16_t **sample; 
    sample = (int16_t **)buffer->pcm; 

    for(int i = 0; i < buffer->length; i++){
        printf("sample %d = %i \n", i, sample[0][i]);
    }*/

    print_waveinfo(wave1);

    /* Test signal processing routines
     --------------------------------------------------------------*/
    printf("\nSIGNAL PROCESSING RESULTS:\n");

    double **R = xcorr(0, buffer1, buffer2);
    qsort(R[1], 2*length - 1, sizeof(double), doublecmp);

    printf("max xcorr o/p = %f \n", R[1][2*length-2]);
/*    for(int i = 1024 - 300; i < 1024 + 300; i++)
        printf("index %d R=%f @ lag = %f \n", i, R[1][i],R[0][i]);
     look at the output and lag 100 should have R ~= 1;*/

    
    /* clean up mem allocs */
    free(R[0]);
    free(R[1]);
    free(R);
    rmbuffer(wave1, buffer1);
    rmbuffer(wave2, buffer2);
    waveclose(wave1);
    waveclose(wave2);
    fclose(fd1);
    fclose(fd2);
    return 0;
}