#include #include #include #include #include void *handle; void getmeagrid(); void diagnosticsCallback(char *); void filenameCallback(char *); void fcsthrsCallback(char *); void navigationCallback(char *); void datauriCallback(char *); void dataCallback(char *); /* for printing errors */ void diagnosticsCallback(char *msg) { printf("%s\n",msg); } /* for getting filename */ void filenameCallback(char *msg) { printf("Don;t think that this Callback is being invoked!!\n"); } /* for getting forecast hours */ void fcsthrsCallback(char *msg) { char hrs[] = "111003/1200f003|111003/1200f006|111003/1200f009|111003/1200f012"; char *error; void (*db_returnfhrs)(char *); db_returnfhrs = dlsym(handle, "db_returnfhrs"); if ((error = dlerror()) != NULL) { printf ("Error finding db_returnfhrs: %s\n", error); } printf("Calling db_returnfhrs...\n"); (*db_returnfhrs)(hrs); } /* for getting navigation */ void navigationCallback(char *msg) { char nav[] = "STR;147;110;2680;-1394750;-9999;-9999;-1050000;907550;907550"; char *error; void (*db_returnnav)(char *); db_returnnav = dlsym(handle, "db_returnnav"); if ((error = dlerror()) != NULL) { printf ("Error finding db_returnnav: %s\n", error); } printf("Calling db_returnnav...\n"); (*db_returnnav)(nav); } /* for getting datauri */ void datauriCallback(char *msg) { char *duri; char hght[] = "/ncgrib/2011-10-03_12:00:00.0_(6)/NAM104/GH/MB/200.0/-999999.0/null/null/NAM104/2/nam.t12z.grbgrd06.tm00.grib2/HGHT/PRES/45"; char *error; void (*db_returnduri)(char *); duri = hght; db_returnduri = dlsym(handle, "db_returnduri"); if ((error = dlerror()) != NULL) { printf ("Error finding db_returnduri: %s\n", error); } printf("Calling db_returnduri...\n"); (*db_returnduri)(duri); } /* for getting grid */ void dataCallback(char *msg) { int nx, ny, npoints, j; float *grid_in; char *error, *duri, *ax, *ay; void (*db_returndata)(float *, int *); duri = strtok(msg,";"); ax = strtok(NULL,";"); ay = strtok(NULL,";"); printf("IN dataCallback: %s\n", duri ); printf("IN dataCallback: %s\n", ax ); printf("IN dataCallback: %s\n", ay ); nx = atoi(ax); ny = atoi(ay); npoints = nx * ny; grid_in = (float *)calloc( npoints, sizeof(float) ); if ( grid_in == NULL ) { printf(" Could not allocate internal GRID!\n"); return; } for ( j=0; j