int harp_import_netcdf(const char *filename, harp_product **product) { harp_product *new_product; netcdf_dimensions dimensions; int ncid; int result; if (filename == NULL) { harp_set_error(HARP_ERROR_INVALID_ARGUMENT, "filename is NULL (%s:%u)", __FILE__, __LINE__); return -1; } result = nc_open(filename, 0, &ncid); if (result != NC_NOERR) { harp_set_error(HARP_ERROR_NETCDF, "%s", nc_strerror(result)); return -1; } if (verify_product(ncid) != 0) { nc_close(ncid); return -1; } if (harp_product_new(&new_product) != 0) { nc_close(ncid); return -1; } dimensions_init(&dimensions); if (read_product(ncid, new_product, &dimensions) != 0) { dimensions_done(&dimensions); harp_product_delete(new_product); nc_close(ncid); return -1; } dimensions_done(&dimensions); result = nc_close(ncid); if (result != NC_NOERR) { harp_set_error(HARP_ERROR_NETCDF, "%s", nc_strerror(result)); harp_product_delete(new_product); return -1; } *product = new_product; return 0; }
int main(int argc, char *argv[]) { int ret; int i; struct ftdi_context *ftdi; unsigned int chipid; unsigned char buf[256]; track *tracks; int ntracks; ftdi = ftdi_new(); ret = ftdi_usb_open(ftdi, 0x0403, 0xB70A); if (ret < -1) { fprintf(stderr, "unable to open ftdi device: %d (%s)\n", ret, ftdi_get_error_string(ftdi)); return ret; } printf("type=%d\n", ftdi->type); ftdi_read_chipid(ftdi, &chipid); printf("chipid=%x\n", chipid); setup(ftdi); ftdi_setrts(ftdi, 1); while((ret = ftdi_read_data(ftdi, buf, 256)) > 0) { for(i = 0; i < ret; ++i) printf("%02X ", buf[i]); } ftdi_setrts(ftdi, 0); read_version(ftdi); read_product(ftdi); read_list(ftdi, &tracks, &ntracks); if (argc > 1) { i = atoi(argv[1]); printf("tracks[%d].no=%d\n", i, tracks[i].no); read_track_points(ftdi, &tracks[i], i); } free(tracks); ftdi_usb_close(ftdi); ftdi_free(ftdi); return 0; }