#include "clock_orbit_rtcm.h" #include #include /* prototype, don't use any of this code in a final application */ void printVtec(struct VTEC vtec) { int i, j, k; for (i = 0; i < vtec.NumLayers; ++i) { printf("%d layer %d height %f degree %d order %d\n", vtec.EpochTime, i, vtec.Layers[i].Height, vtec.Layers[i].Degree, vtec.Layers[i].Order); for (j = 0; j <= vtec.Layers[i].Degree; ++j) { printf("Cn%d ", j); for (k = 0; k <= vtec.Layers[i].Order; ++k) { printf(" %7.3f", vtec.Layers[i].Cosinus[k][j]); } printf("\n"); } for (j = 0; j <= vtec.Layers[i].Degree; ++j) { printf("Sn%d ", j); for (k = 0; k <= vtec.Layers[i].Order; ++k) { printf(" %7.3f", vtec.Layers[i].Sinus[k][j]); } printf("\n"); } } } int main(void) {; char obuffer[CLOCKORBIT_BUFFERSIZE]; ////////////////////////// // VTEC // ////////////////////////// struct VTEC v; memset(&v, 0, sizeof(v)); v.EpochTime = 218764; v.NumLayers = 1; v.UpdateInterval = 1; v.Layers[0].Height = 450000; v.Layers[0].Degree = 4; v.Layers[0].Order = 4; v.Layers[0].Cosinus[0][0] = 24.435; v.Layers[0].Cosinus[1][0] = 4.495; v.Layers[0].Cosinus[2][0] = -7.805; v.Layers[0].Cosinus[3][0] = -1.900; v.Layers[0].Cosinus[4][0] = 2.045; v.Layers[0].Cosinus[1][1] = -9.960; v.Layers[0].Cosinus[2][1] = 0.845; v.Layers[0].Cosinus[3][1] = 2.260; v.Layers[0].Cosinus[4][1] = -0.315; v.Layers[0].Cosinus[2][2] = 3.730; v.Layers[0].Cosinus[3][2] = -0.780; v.Layers[0].Cosinus[4][2] = -0.055; v.Layers[0].Cosinus[3][3] = -0.020; v.Layers[0].Cosinus[4][3] = 1.150; v.Layers[0].Cosinus[4][4] = 0.990; v.Layers[0].Sinus[1][1] = -6.070; v.Layers[0].Sinus[2][1] = -3.105; v.Layers[0].Sinus[3][1] = 1.310; v.Layers[0].Sinus[4][1] = 1.545; v.Layers[0].Sinus[2][2] = 0.325; v.Layers[0].Sinus[3][2] = -1.050; v.Layers[0].Sinus[4][2] = -0.750; v.Layers[0].Sinus[3][3] = 0.170; v.Layers[0].Sinus[4][3] = -0.690; v.Layers[0].Sinus[4][4] = -0.705; fprintf(stderr, "VTEC INPUT\n"); printVtec(v); FILE *f; int l = MakeVTEC(&v, 0, obuffer, sizeof(obuffer)); if (!l) fprintf(stderr, "BUILD ERROR\n"); else { int nl, ns; struct VTEC vv; if ((f = fopen("outfile.raw", "ab+"))) { fwrite(obuffer, l, 1, f); fclose(f); } else fprintf(stderr, "SAVE ERROR\n"); //fwrite(obuffer, l, 1, stdout); memset(&vv, 0, sizeof(vv)); nl = GetSSR(0, 0, &vv, 0, obuffer, l, &ns); if (nl < 0) fprintf(stderr, "EXTRACT ERROR %d\n", nl); else if (nl > 0) fprintf(stderr, "MULTIBLOCK UNSUPPORTED IN TEST\n"); else if (ns != l) fprintf(stderr, "SIZE MISMATCH (%d/%d)\n", ns, l); else { fprintf(stderr, "VTEC OUTPUT\n"); printVtec(vv); } } return 0; }