/*--------------------------------------------------------------------*/ int mbsys_hs10_insert(int verbose, void *mbio_ptr, void *store_ptr, int kind, int time_i[7], double time_d, double navlon, double navlat, double speed, double heading, int nbath, int namp, int nss, char *beamflag, double *bath, double *amp, double *bathacrosstrack, double *bathalongtrack, double *ss, double *ssacrosstrack, double *ssalongtrack, char *comment, int *error) { char *function_name = "mbsys_hs10_insert"; int status = MB_SUCCESS; struct mb_io_struct *mb_io_ptr; struct mbsys_hs10_struct *store; int i; /* print input debug statements */ if (verbose >= 2) { fprintf(stderr,"\ndbg2 MBIO function <%s> called\n",function_name); fprintf(stderr,"dbg2 Input arguments:\n"); fprintf(stderr,"dbg2 verbose: %d\n",verbose); fprintf(stderr,"dbg2 mbio_ptr: %lu\n",(size_t)mbio_ptr); fprintf(stderr,"dbg2 store_ptr: %lu\n",(size_t)store_ptr); fprintf(stderr,"dbg2 kind: %d\n",kind); } if (verbose >= 2 && (kind == MB_DATA_DATA || kind == MB_DATA_NAV)) { fprintf(stderr,"dbg2 time_i[0]: %d\n",time_i[0]); fprintf(stderr,"dbg2 time_i[1]: %d\n",time_i[1]); fprintf(stderr,"dbg2 time_i[2]: %d\n",time_i[2]); fprintf(stderr,"dbg2 time_i[3]: %d\n",time_i[3]); fprintf(stderr,"dbg2 time_i[4]: %d\n",time_i[4]); fprintf(stderr,"dbg2 time_i[5]: %d\n",time_i[5]); fprintf(stderr,"dbg2 time_i[6]: %d\n",time_i[6]); fprintf(stderr,"dbg2 time_d: %f\n",time_d); fprintf(stderr,"dbg2 navlon: %f\n",navlon); fprintf(stderr,"dbg2 navlat: %f\n",navlat); fprintf(stderr,"dbg2 speed: %f\n",speed); fprintf(stderr,"dbg2 heading: %f\n",heading); } if (verbose >= 2 && kind == MB_DATA_DATA) { fprintf(stderr,"dbg2 nbath: %d\n",nbath); if (verbose >= 3) for (i=0;i<nbath;i++) fprintf(stderr,"dbg3 beam:%d flag:%3d bath:%f acrosstrack:%f alongtrack:%f\n", i,beamflag[i],bath[i], bathacrosstrack[i],bathalongtrack[i]); fprintf(stderr,"dbg2 namp: %d\n",namp); if (verbose >= 3) for (i=0;i<namp;i++) fprintf(stderr,"dbg3 beam:%d amp:%f acrosstrack:%f alongtrack:%f\n", i,amp[i],bathacrosstrack[i],bathalongtrack[i]); fprintf(stderr,"dbg2 nss: %d\n",nss); if (verbose >= 3) for (i=0;i<nss;i++) fprintf(stderr,"dbg3 pixel:%d ss:%f acrosstrack:%f alongtrack:%f\n", i,ss[i],ssacrosstrack[i],ssalongtrack[i]); } if (verbose >= 2 && kind == MB_DATA_COMMENT) { fprintf(stderr,"dbg2 comment: \ndbg2 %s\n", comment); } /* get mbio descriptor */ mb_io_ptr = (struct mb_io_struct *) mbio_ptr; /* get data structure pointer */ store = (struct mbsys_hs10_struct *) store_ptr; /* set data kind */ store->kind = kind; /* insert data in structure */ if (store->kind == MB_DATA_DATA) { /* get time */ mb_unfix_y2k(verbose, time_i[0], &store->year); store->month = time_i[1]; store->day = time_i[2]; store->hour = time_i[3]; store->minute = time_i[4]; store->tenth_second = (10 * time_i[5]) + (time_i[6] / 100000); /* get navigation */ if (navlon < -180.0) navlon = navlon + 360.0; if (navlon > 180.0) navlon = navlon - 360.0; if (navlon < 0.0) store->EorW = 'W'; else store->EorW = 'E'; store->londeg = (int) fabs(navlon); store->lonmin = (int) (60000.0 * (fabs(navlon) - store->londeg)); if (navlat < 0.0) store->NorS = 'S'; else store->NorS = 'N'; store->latdeg = (int) fabs(navlat); store->latmin = (int) (60000.0 * (fabs(navlat) - store->latdeg)); /* get heading */ store->heading = (int) (10 * heading); /* get speed */ /* put distance and depth values into data structure */ for (i=0;i<nbath;i++) { if (mb_beam_check_flag_null(beamflag[i])) { store->depth[i] = 29999; store->acrosstrack[i] = 99999; } else if (mb_beam_check_flag(beamflag[i])) { store->depth[i] = (int) -bath[i]; store->acrosstrack[i] = (int) bathacrosstrack[i]; } else { store->depth[i] = (int) bath[i]; store->acrosstrack[i] = (int) bathacrosstrack[i]; } store->amplitude[i] = (int) amp[i]; } } /* insert comment in structure */ else if (store->kind == MB_DATA_COMMENT) { strncpy(store->comment,comment, MBSYS_HS10_COMMENT); } /* print output debug statements */ if (verbose >= 2) { fprintf(stderr,"\ndbg2 MBIO function <%s> completed\n",function_name); fprintf(stderr,"dbg2 Return value:\n"); fprintf(stderr,"dbg2 error: %d\n",*error); fprintf(stderr,"dbg2 Return status:\n"); fprintf(stderr,"dbg2 status: %d\n",status); } /* return status */ return(status); }
/*--------------------------------------------------------------------*/ int mbsys_hsmd_insert(int verbose, void *mbio_ptr, void *store_ptr, int kind, int time_i[7], double time_d, double navlon, double navlat, double speed, double heading, int nbath, int namp, int nss, char *beamflag, double *bath, double *amp, double *bathacrosstrack, double *bathalongtrack, double *ss, double *ssacrosstrack, double *ssalongtrack, char *comment, int *error) { char *function_name = "mbsys_hsmd_insert"; int status = MB_SUCCESS; struct mb_io_struct *mb_io_ptr; struct mbsys_hsmd_struct *store; int first; int i, j; /* print input debug statements */ if (verbose >= 2) { fprintf(stderr,"\ndbg2 MBIO function <%s> called\n",function_name); fprintf(stderr,"dbg2 Revision id: %s\n",rcs_id); fprintf(stderr,"dbg2 Input arguments:\n"); fprintf(stderr,"dbg2 verbose: %d\n",verbose); fprintf(stderr,"dbg2 mbio_ptr: %p\n",(void *)mbio_ptr); fprintf(stderr,"dbg2 store_ptr: %p\n",(void *)store_ptr); fprintf(stderr,"dbg2 kind: %d\n",kind); } if (verbose >= 2 && (kind == MB_DATA_DATA || kind == MB_DATA_NAV)) { fprintf(stderr,"dbg2 time_i[0]: %d\n",time_i[0]); fprintf(stderr,"dbg2 time_i[1]: %d\n",time_i[1]); fprintf(stderr,"dbg2 time_i[2]: %d\n",time_i[2]); fprintf(stderr,"dbg2 time_i[3]: %d\n",time_i[3]); fprintf(stderr,"dbg2 time_i[4]: %d\n",time_i[4]); fprintf(stderr,"dbg2 time_i[5]: %d\n",time_i[5]); fprintf(stderr,"dbg2 time_i[6]: %d\n",time_i[6]); fprintf(stderr,"dbg2 time_d: %f\n",time_d); fprintf(stderr,"dbg2 navlon: %f\n",navlon); fprintf(stderr,"dbg2 navlat: %f\n",navlat); fprintf(stderr,"dbg2 speed: %f\n",speed); fprintf(stderr,"dbg2 heading: %f\n",heading); } if (verbose >= 2 && kind == MB_DATA_DATA) { fprintf(stderr,"dbg2 nbath: %d\n",nbath); if (verbose >= 3) for (i=0;i<nbath;i++) fprintf(stderr,"dbg3 beam:%d flag:%3d bath:%f acrosstrack:%f alongtrack:%f\n", i,beamflag[i],bath[i], bathacrosstrack[i],bathalongtrack[i]); fprintf(stderr,"dbg2 namp: %d\n",namp); if (verbose >= 3) for (i=0;i<namp;i++) fprintf(stderr,"dbg3 amp[%d]: %f\n", i,amp[i]); fprintf(stderr,"dbg2 nss: %d\n",nss); if (verbose >= 3) for (i=0;i<nss;i++) fprintf(stderr,"dbg3 ss[%d]: %f ssdist[%d]: %f\n", i,ss[i],i,ssacrosstrack[i]); } if (verbose >= 2 && kind == MB_DATA_COMMENT) { fprintf(stderr,"dbg2 comment: \ndbg2 %s\n", comment); } /* get mbio descriptor */ mb_io_ptr = (struct mb_io_struct *) mbio_ptr; /* get data structure pointer */ store = (struct mbsys_hsmd_struct *) store_ptr; /* set data kind */ store->kind = kind; /* insert data in structure */ if (store->kind == MB_DATA_DATA) { /* get time */ store->year = time_i[0]; store->month = time_i[1]; store->day = time_i[2]; store->hour = time_i[3]; store->minute = time_i[4]; store->second = time_i[5]; /* get navigation */ if (navlon < 0.0) navlon = navlon + 360.0; store->lon = navlon; store->lat = navlat; /* get heading */ store->heading_tx = heading; /* figure out if port or starboard ping */ first = -1; for (i=0;i<nbath;i++) { if (first == -1 && bath[i] != 0.0) first = i; } if (first >= MBSYS_HSMD_BEAMS_PING - 1) store->Port = 1; else store->Port = -1; /* get bathymetry */ /* deal with a ping to port */ if (store->Port == -1) { for (i=0;i<MBSYS_HSMD_BEAMS_PING;i++) { j = MBSYS_HSMD_BEAMS_PING - i - 1; if (mb_beam_check_flag_null(beamflag[j])) store->depth[i] = 0.0; else if (mb_beam_check_flag(beamflag[j])) store->depth[i] = -bath[j]; else store->depth[i] = bath[j]; store->distance[i] = bathacrosstrack[j]; } } /* deal with a ping to starboard */ else { for (i=0;i<MBSYS_HSMD_BEAMS_PING;i++) { j = i + MBSYS_HSMD_BEAMS_PING - 1; if (mb_beam_check_flag_null(beamflag[j])) store->depth[i] = 0.0; else if (mb_beam_check_flag(beamflag[j])) store->depth[i] = -bath[j]; else store->depth[i] = bath[j]; store->distance[i] = bathacrosstrack[j]; } } /* Deal with the sidescan */ /* deal with a ping to port */ if (store->Port == -1) { store->ss_range = fabs(ssacrosstrack[0]); for (i=0;i<MBSYS_HSMD_PIXELS_PING;i++) { j = MBSYS_HSMD_PIXELS_PING - i - 1; store->ss[i] = ss[j]; } } /* deal with a ping to starboard */ else { store->ss_range = ssacrosstrack[MBSYS_HSMD_PIXELS_PING - 1]; for (i=0;i<MBSYS_HSMD_PIXELS_PING;i++) { j = i + MBSYS_HSMD_PIXELS_PING - 1; store->ss[i] = ss[j]; } } } /* insert comment in structure */ else if (store->kind == MB_DATA_COMMENT) { strcpy(store->comment,comment); } /* print output debug statements */ if (verbose >= 2) { fprintf(stderr,"\ndbg2 MBIO function <%s> completed\n", function_name); fprintf(stderr,"dbg2 Return value:\n"); fprintf(stderr,"dbg2 error: %d\n",*error); fprintf(stderr,"dbg2 Return status:\n"); fprintf(stderr,"dbg2 status: %d\n",status); } /* return status */ return(status); }
/*--------------------------------------------------------------------*/ int mbsys_sb2100_insert(int verbose, void *mbio_ptr, void *store_ptr, int kind, int time_i[7], double time_d, double navlon, double navlat, double speed, double heading, int nbath, int namp, int nss, char *beamflag, double *bath, double *amp, double *bathacrosstrack, double *bathalongtrack, double *ss, double *ssacrosstrack, double *ssalongtrack, char *comment, int *error) { char *function_name = "mbsys_sb2100_insert"; int status = MB_SUCCESS; struct mb_io_struct *mb_io_ptr; struct mbsys_sb2100_struct *store; int time_j[5]; int set_pixel_size; double gain_db; double gain_factor; int center_pixel; int i; /* print input debug statements */ if (verbose >= 2) { fprintf(stderr,"\ndbg2 MBIO function <%s> called\n",function_name); fprintf(stderr,"dbg2 Revision id: %s\n",rcs_id); fprintf(stderr,"dbg2 Input arguments:\n"); fprintf(stderr,"dbg2 verbose: %d\n",verbose); fprintf(stderr,"dbg2 mbio_ptr: %p\n",(void *)mbio_ptr); fprintf(stderr,"dbg2 store_ptr: %p\n",(void *)store_ptr); fprintf(stderr,"dbg2 kind: %d\n",kind); } if (verbose >= 2 && (kind == MB_DATA_DATA || kind == MB_DATA_NAV)) { fprintf(stderr,"dbg2 time_i[0]: %d\n",time_i[0]); fprintf(stderr,"dbg2 time_i[1]: %d\n",time_i[1]); fprintf(stderr,"dbg2 time_i[2]: %d\n",time_i[2]); fprintf(stderr,"dbg2 time_i[3]: %d\n",time_i[3]); fprintf(stderr,"dbg2 time_i[4]: %d\n",time_i[4]); fprintf(stderr,"dbg2 time_i[5]: %d\n",time_i[5]); fprintf(stderr,"dbg2 time_i[6]: %d\n",time_i[6]); fprintf(stderr,"dbg2 time_d: %f\n",time_d); fprintf(stderr,"dbg2 navlon: %f\n",navlon); fprintf(stderr,"dbg2 navlat: %f\n",navlat); fprintf(stderr,"dbg2 speed: %f\n",speed); fprintf(stderr,"dbg2 heading: %f\n",heading); } if (verbose >= 2 && kind == MB_DATA_DATA) { fprintf(stderr,"dbg2 nbath: %d\n",nbath); if (verbose >= 3) for (i=0;i<nbath;i++) fprintf(stderr,"dbg3 beam:%d flag:%3d bath:%f acrosstrack:%f alongtrack:%f\n", i,beamflag[i],bath[i], bathacrosstrack[i],bathalongtrack[i]); fprintf(stderr,"dbg2 namp: %d\n",namp); if (verbose >= 3) for (i=0;i<namp;i++) fprintf(stderr,"dbg3 beam:%d amp:%f acrosstrack:%f alongtrack:%f\n", i,amp[i],bathacrosstrack[i],bathalongtrack[i]); fprintf(stderr,"dbg2 nss: %d\n",nss); if (verbose >= 3) for (i=0;i<nss;i++) fprintf(stderr,"dbg3 pixel:%d ss:%f acrosstrack:%f alongtrack:%f\n", i,ss[i],ssacrosstrack[i],ssalongtrack[i]); } if (verbose >= 2 && kind == MB_DATA_COMMENT) { fprintf(stderr,"dbg2 comment: \ndbg2 %s\n", comment); } /* get mbio descriptor */ mb_io_ptr = (struct mb_io_struct *) mbio_ptr; /* get data structure pointer */ store = (struct mbsys_sb2100_struct *) store_ptr; /* set data kind */ store->kind = kind; /* insert data in structure */ if (store->kind == MB_DATA_DATA) { /* get time */ mb_get_jtime(verbose,time_i,time_j); store->year = time_j[0]; store->jday = time_j[1]; store->hour = time_j[2]/60; store->minute = time_j[2] - 60*store->hour; store->sec = time_j[3]; store->msec = (int) (0.001 * time_j[4]); /* get number of beams and pixels */ store->nbeams = nbath; store->npixels = nss; center_pixel = store->npixels / 2; /* get navigation */ if (navlon < 0.0) navlon = navlon + 360.0; store->longitude = navlon; store->latitude = navlat; /* get heading */ store->heading = heading; /* get speed */ store->speed = 5.3899155 * speed; /* put beam and pixel values into data structure */ gain_db = store->ping_gain - store->transmitter_attenuation + 10.0 * log10( store->ping_pulse_width / 5.0) - 30.0; gain_factor = pow(10.0, (gain_db / 20.0)); for (i=0;i<nbath;i++) { if (mb_beam_check_flag(beamflag[i])) { if (mb_beam_check_flag_null(beamflag[i])) store->beams[i].quality = '0'; else if (mb_beam_check_flag_manual(beamflag[i])) store->beams[i].quality = 'E'; else if (mb_beam_check_flag_filter(beamflag[i])) store->beams[i].quality = 'F'; else if (mb_beam_check_flag_sonar(beamflag[i])) store->beams[i].quality = 'Q'; } else store->beams[i].quality = ' '; store->beams[i].depth = bath[i]; store->beams[i].acrosstrack = bathacrosstrack[i]; store->beams[i].alongtrack = bathalongtrack[i]; } for (i=0;i<namp;i++) store->beams[i].amplitude = 4.0 * (amp[i] + gain_db); if (store->pixel_size <= 0.0) set_pixel_size = MB_YES; else set_pixel_size = MB_NO; for (i=0;i<nss;i++) { if (ss[i] > MB_SIDESCAN_NULL) store->pixels[i].amplitude = gain_factor * ss[i]; else store->pixels[i].amplitude = 0; store->pixels[i].alongtrack = ssalongtrack[i]; if (set_pixel_size == MB_YES && ssacrosstrack[i] > 0) { store->pixel_size = ssacrosstrack[i]/ (i - center_pixel); set_pixel_size = MB_NO; } } } /* insert comment in structure */ else if (store->kind == MB_DATA_COMMENT) { strcpy(store->comment,comment); } /* print output debug statements */ if (verbose >= 2) { fprintf(stderr,"\ndbg2 MBIO function <%s> completed\n", function_name); fprintf(stderr,"dbg2 Return value:\n"); fprintf(stderr,"dbg2 error: %d\n",*error); fprintf(stderr,"dbg2 Return status:\n"); fprintf(stderr,"dbg2 status: %d\n",status); } /* return status */ return(status); }