1 /* Prototype stuff for parsing Level-II data */
12 unsigned char id, type;
13 unsigned short seq, gen_date;
14 unsigned int gen_time;
15 unsigned short num_seg, seg;
16 unsigned int coll_time;
17 unsigned short coll_date, range, angle, radial, rad_status, elev_angle;
18 unsigned short elev_num;
19 short first_refl, first_dopp;
20 unsigned short refl_size, dopp_size;
21 unsigned short num_refl_gate, num_dopp_gate, sector;
23 unsigned short refl_ptr, vel_ptr, spec_ptr, dopp_res, pattern;
25 unsigned short refl_ptr_rda, vel_ptr_rda, spec_ptr_rda, nyquist, atten;
28 unsigned char data[2304];
37 } __attribute__ ((packed)) header_t;
39 int main(int argc, char **argv)
42 printf("usage: %s <level2-data>\n", argv[0]);
47 FILE *fd = fopen(argv[1], "r");
49 error(1, errno, "Error opening files `%s'", argv[1]);
51 if (1 != fread(&header, sizeof(header_t), 1, fd))
52 error(1, errno, "Error reading header");
54 /* Cut up the bzips */
59 unsigned int size = 0;
61 while ((int)size >= 0) {
62 if (1 != fread(&size, 4, 1, fd))
63 break; //error(1, errno, "Error reading size, pos=%x", (unsigned int)ftell(fd));
68 if (NULL == (buf = (char *)realloc(buf, size)))
69 error(1, errno, "cannot allocate `%d' bytes for buffer", size);
70 if (size != fread(buf, 1, size, fd))
71 error(1, errno, "error reading from input file");
74 //char *block = (char *)malloc(8192), *oblock = (char *)malloc(262144);
75 //error = BZ2_bzBuffToBuffDecompress(oblock, &olength, block, length, 0, 0);
78 snprintf(filename, 16, "%d.bz2", file_num);
79 outfile = fopen(filename, "w+");
80 fwrite(buf, 1, size, outfile);
83 //fprintf(stderr, "wrote `%d' bytes to file `%s'\n", size, filename);