예제 #1
0
int main(){

    // Variables
    int return_code;
    uhd_string_vector_handle string_vector;
    size_t size;
    char str_buffer[BUFFER_SIZE];

    return_code = EXIT_SUCCESS;

    // Create string_vector
    UHD_TEST_EXECUTE_OR_GOTO(end_of_test,
        uhd_string_vector_make(&string_vector)
    )

    // Add values
    UHD_TEST_EXECUTE_OR_GOTO(free_string_vector,
        uhd_string_vector_push_back(&string_vector, "foo")
    )
    UHD_TEST_EXECUTE_OR_GOTO(free_string_vector,
        uhd_string_vector_push_back(&string_vector, "bar")
    )

    // Check size
    UHD_TEST_EXECUTE_OR_GOTO(free_string_vector,
        uhd_string_vector_size(string_vector, &size)
    )
    if(size != 2){
        return_code = EXIT_FAILURE;
        fprintf(stderr, "%s:%d: Invalid size: %lu vs. 2",
                        __FILE__, __LINE__, (unsigned long)size);
        goto free_string_vector;
    }

    // Make sure we get right value
    UHD_TEST_EXECUTE_OR_GOTO(free_string_vector,
        uhd_string_vector_at(string_vector, 1, str_buffer, BUFFER_SIZE)
    )
    if(strcmp(str_buffer, "bar")){
        return_code = EXIT_FAILURE;
        fprintf(stderr, "%s:%d: Mismatched daughterboard serial: \"%s\" vs. \"key3=value3,key4=value4\"\n",
                        __FILE__, __LINE__,
                        str_buffer);
    }

    free_string_vector:
        if(return_code){
            uhd_string_vector_last_error(string_vector, str_buffer, BUFFER_SIZE);
            fprintf(stderr, "string_vector error: %s\n", str_buffer);
        }
        uhd_string_vector_free(&string_vector);

    end_of_test:
        if(!return_code){
            printf("\nNo errors detected\n");
        }
        return return_code;
}
예제 #2
0
int main(){

    // Variables
    int return_code;
    uhd_subdev_spec_pair_t subdev_spec_pair1, subdev_spec_pair2;
    uhd_subdev_spec_handle subdev_spec1, subdev_spec2;
    size_t size1, size2, i;
    bool pairs_equal;
    char str_buffer[BUFFER_SIZE];

    printf("Testing subdevice specification...\n");
    return_code = EXIT_SUCCESS;

    // Create subdev spec
    UHD_TEST_EXECUTE_OR_GOTO(end_of_test,
        uhd_subdev_spec_make(&subdev_spec1, "A:AB B:AB")
    )

    // Convert to and from args string
    UHD_TEST_EXECUTE_OR_GOTO(free_subdev_spec1,
        uhd_subdev_spec_to_pp_string(subdev_spec1, str_buffer, BUFFER_SIZE)
    )
    printf("Pretty Print:\n%s", str_buffer);

    UHD_TEST_EXECUTE_OR_GOTO(free_subdev_spec1,
        uhd_subdev_spec_to_string(subdev_spec1, str_buffer, BUFFER_SIZE)
    )
    printf("Markup String: %s\n", str_buffer);

    // Make a second subdev spec from the first's markup string
    UHD_TEST_EXECUTE_OR_GOTO(free_subdev_spec2,
        uhd_subdev_spec_make(&subdev_spec2, str_buffer)
    )

    // Make sure both subdev specs are equal
    UHD_TEST_EXECUTE_OR_GOTO(free_subdev_spec2,
        uhd_subdev_spec_size(subdev_spec1, &size1)
    )
    UHD_TEST_EXECUTE_OR_GOTO(free_subdev_spec2,
        uhd_subdev_spec_size(subdev_spec2, &size2)
    )
    if(size1 != size2){
        printf("%s:%d: Sizes do not match. %lu vs. %lu\n", __FILE__, __LINE__,
               (unsigned long)size1, (unsigned long)size2);
        return_code = EXIT_FAILURE;
        goto free_subdev_spec2;
    }
    for(i = 0; i < size1; i++){
        UHD_TEST_EXECUTE_OR_GOTO(free_subdev_spec_pair1,
            uhd_subdev_spec_at(subdev_spec1, i, &subdev_spec_pair1)
        )
        UHD_TEST_EXECUTE_OR_GOTO(free_subdev_spec_pair2,
            uhd_subdev_spec_at(subdev_spec2, i, &subdev_spec_pair2)
        )
        UHD_TEST_EXECUTE_OR_GOTO(free_subdev_spec_pair2,
            uhd_subdev_spec_pairs_equal(&subdev_spec_pair1, &subdev_spec_pair2, &pairs_equal)
        )
        if(!pairs_equal){
            printf("%s:%d: Subdev spec pairs are not equal.\n"
                   "    db_name: %s vs. %s\n"
                   "    sd_name: %s vs. %s\n",
                   __FILE__, __LINE__,
                   subdev_spec_pair1.db_name, subdev_spec_pair2.db_name,
                   subdev_spec_pair1.sd_name, subdev_spec_pair2.sd_name
                  );
            return_code = EXIT_FAILURE;
            goto free_subdev_spec_pair2;
        }
        uhd_subdev_spec_pair_free(&subdev_spec_pair1);
        uhd_subdev_spec_pair_free(&subdev_spec_pair2);
    }

    // Cleanup (and error report, if needed)

    free_subdev_spec_pair2:
        uhd_subdev_spec_pair_free(&subdev_spec_pair2);

    free_subdev_spec_pair1:
        uhd_subdev_spec_pair_free(&subdev_spec_pair1);

    free_subdev_spec2:
        if(return_code){
            uhd_subdev_spec_last_error(subdev_spec2, str_buffer, BUFFER_SIZE);
            fprintf(stderr, "subdev_spec2 error: %s\n", str_buffer);
        }
        uhd_subdev_spec_free(&subdev_spec2);

    free_subdev_spec1:
        if(return_code){
            uhd_subdev_spec_last_error(subdev_spec1, str_buffer, BUFFER_SIZE);
            fprintf(stderr, "subdev_spec1 error: %s\n", str_buffer);
        }
        uhd_subdev_spec_free(&subdev_spec1);

    end_of_test:
        if(!return_code){
            printf("\nNo errors detected.\n");
        }
        return return_code;
}
예제 #3
0
int main(){

    // Variables
    int return_code;
    uhd_mboard_eeprom_handle mb_eeprom;
    uhd_dboard_eeprom_handle db_eeprom;
    int db_revision;
    char str_buffer[BUFFER_SIZE];

    return_code = EXIT_SUCCESS;

    /*
     * Motherboard EEPROM test
     */

    // Create EEPROM handle
    UHD_TEST_EXECUTE_OR_GOTO(end_of_test,
        uhd_mboard_eeprom_make(&mb_eeprom)
    )

    // Set a value, retrieve it, and make sure it matches
    UHD_TEST_EXECUTE_OR_GOTO(free_mboard_eeprom,
        uhd_mboard_eeprom_set_value(
            mb_eeprom,
            "serial",
            "F12345"
        )
    )
    UHD_TEST_EXECUTE_OR_GOTO(free_mboard_eeprom,
        uhd_mboard_eeprom_get_value(
            mb_eeprom,
            "serial",
            str_buffer,
            BUFFER_SIZE
        )
    )
    if(strcmp(str_buffer, "F12345")){
        return_code = EXIT_FAILURE;
        fprintf(stderr, "%s:%d: Mismatched EEPROM value: \"%s\" vs. \"F12345\"\n",
                        __FILE__, __LINE__,
                        str_buffer);
        goto free_mboard_eeprom;
    }

    /*
     * Daughterboard EEPROM test
     */

    // Create EEPROM handle
    UHD_TEST_EXECUTE_OR_GOTO(free_mboard_eeprom,
        uhd_dboard_eeprom_make(&db_eeprom)
    )

    // Set the ID, retrieve it, and make sure it matches
    UHD_TEST_EXECUTE_OR_GOTO(free_dboard_eeprom,
        uhd_dboard_eeprom_set_id(db_eeprom, "0x0067")
    )
    UHD_TEST_EXECUTE_OR_GOTO(free_dboard_eeprom,
        uhd_dboard_eeprom_get_id(
            db_eeprom,
            str_buffer,
            BUFFER_SIZE
        )
    )
    if(strcmp(str_buffer, "0x0067")){
        return_code = EXIT_FAILURE;
        fprintf(stderr, "%s:%d: Mismatched daughterboard ID: \"%s\" vs. \"0x0067\"\n",
                        __FILE__, __LINE__,
                        str_buffer);
        goto free_dboard_eeprom;
    }

    // Set the serial, retrieve it, and make sure it matches
    UHD_TEST_EXECUTE_OR_GOTO(free_dboard_eeprom,
        uhd_dboard_eeprom_set_serial(db_eeprom, "F12345")
    )
    UHD_TEST_EXECUTE_OR_GOTO(free_dboard_eeprom,
        uhd_dboard_eeprom_get_serial(
            db_eeprom,
            str_buffer,
            BUFFER_SIZE
        )
    )
    if(strcmp(str_buffer, "F12345")){
        return_code = EXIT_FAILURE;
        fprintf(stderr, "%s:%d: Mismatched daughterboard serial: \"%s\" vs. \"F12345\"\n",
                        __FILE__, __LINE__,
                        str_buffer);
        goto free_dboard_eeprom;
    }

    // Set the revision, retrieve it, and make sure it matches
    UHD_TEST_EXECUTE_OR_GOTO(free_dboard_eeprom,
        uhd_dboard_eeprom_set_revision(db_eeprom, 4)
    )
    UHD_TEST_EXECUTE_OR_GOTO(free_dboard_eeprom,
        uhd_dboard_eeprom_get_revision(db_eeprom, &db_revision)
    )
    if(db_revision != 4){
        return_code = EXIT_FAILURE;
        fprintf(stderr, "%s:%d: Mismatched daughterboard revision: \"%d\" vs. 4\n",
                        __FILE__, __LINE__, db_revision);
        goto free_dboard_eeprom;
    }

    free_dboard_eeprom:
        if(return_code){
            uhd_dboard_eeprom_last_error(db_eeprom, str_buffer, BUFFER_SIZE);
            fprintf(stderr, "db_eeprom error: %s\n", str_buffer);
        }
	uhd_dboard_eeprom_free(&db_eeprom);

    free_mboard_eeprom:
        if(return_code){
            uhd_mboard_eeprom_last_error(mb_eeprom, str_buffer, BUFFER_SIZE);
            fprintf(stderr, "mb_eeprom error: %s\n", str_buffer);
        }
	uhd_mboard_eeprom_free(&mb_eeprom);

    end_of_test:
        if(!return_code){
            printf("\nNo errors detected\n");
        }
        return return_code;
}