22 #define TEMP_REF 273.15
26 #define SDNAME "Channel_"
30 static int32_t sd_id_g;
31 static int32_t spix = 0;
34 static float T_LOW = 185.;
35 static float T_HIGH = 370.;
37 static int pdbg1 = -1;
38 static int ldbg1 = -1;
44 float etinvert_(int32_t *ich,
float *radi);
48 int32_t
avlooph_(
float *satz,
float *
solz,
float *delphi,
float *rayly,
49 float *aersol,
float *aglint);
60 const char xsatida[10];
69 sd_id = SDstart(
file->name, DFACC_RDONLY);
71 fprintf(
stderr,
"-E- %s line %d: SDstart(%s, %d) failed.\n",
72 __FILE__, __LINE__,
file->name, DFACC_RDONLY);
77 sds_id = SDselect(sd_id, SDnametoindex(sd_id, (
SDNAME"1")));
78 if (SDgetinfo(sds_id,
NULL, &
rank, dims, &
type, &numattr) == -1) {
79 fprintf(
stderr,
"-E- %s line %d: error getting dimension info.\n",
89 printf(
"-E- %s line %d: Error reading Number of scans attribute.\n",
94 if (
getHDFattr(sd_id,
"Orbit Number",
"", (VOIDP) &
file->orbit_number)
96 printf(
"-E- %s line %d: Error reading Orbit attribute.\n",
103 sd_id_g = SDstart(
file->geofile, DFACC_RDONLY);
104 if (sd_id_g ==
FAIL) {
105 printf(
"Error opening geolocation file.\n");
106 fprintf(
stderr,
"-E- %s line %d: SDstart(%s, %d) failed.\n",
107 __FILE__, __LINE__,
file->geofile, DFACC_RDONLY);
111 if (
getHDFattr(sd_id,
"Satellite",
"", (VOIDP) xsatida) != 0) {
112 printf(
"-E- %s line %d: Error reading Satellite attribute.\n",
117 if (
getHDFattr(sd_id,
"spatial_resolution",
"", (VOIDP) &
file->spatialResolution) != 0) {
118 printf(
"-W- %s line %d: Error reading spatial_resolution attribute.\n",
137 static int firstCall = 1;
138 static int firstScan = 1;
140 static int16_t *ch1 =
NULL;
141 static int16_t *ch2 =
NULL;
142 static int16_t *ch3 =
NULL;
144 static int16_t *ch5 =
NULL;
149 static float rayly[2];
150 static float aersol[2];
151 static int year,
jday, RelDay, LY,
leap, month,
day, hh, mm, ss;
152 static int32_t ms = 0;
155 static int startOfMonth[2][12] = {
156 { 0, 31, 59, 90, 120, 151, 181, 212, 243,
158 { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305,
163 static double ch4_coeff[5] = {0.0351618, 1.24004, 0.979493, 8.6071114e-06,
165 static double ch5_coeff[5] = {0.0326272, 1.06256, 0.986256, 4.0256298e-06,
168 static char ingester[5];
171 int32_t
npix = (int32_t)
file->npix;
173 int32_t nbandsir = (int32_t)
file->nbandsir;
175 int32_t ich, iw, ip, ipb;
183 static float radinc[3];
184 static float radbas[3];
185 static float radinv[3][
NRADTAB];
186 static float teminc[3];
187 static float tembas[3];
188 static float teminv[3][
NRADTAB];
190 static int vbcksc[30];
191 static int vspace[50];
196 float64 sumbck[2][3];
197 float64 sumspc[2][5];
206 static int32_t *scantime;
211 int32_t irun, jrun, idif, iraw, jraw, ni;
215 float trad, ttem, tnlc;
226 for (ii = 0; ii < 50; ii++) {
234 for (ii = 0; ii < 30; ii++) {
242 if ((ch1 = (int16_t *) calloc(
npix,
sizeof (int16_t))) ==
NULL) {
243 printf(
"-E- %s line %d: Error allocating data space.\n",
249 printf(
"-E- %s line %d: Error reading Channel_1 Slope attribute.\n",
256 "-E- %s line %d: Error reading Channel_1 Intercept attribute.\n",
263 "-E- %s line %d: Error reading Channel_1 Scale_type attribute.\n",
267 if (strcmp(scaletype,
"y= Slope * x + Intercept;") != 0) {
268 printf(
"-E- %s line %d: Channel_1 Scale_type must be linear.\n",
273 if ((ch2 = (int16_t *) calloc(
npix,
sizeof (int16_t))) ==
NULL) {
274 printf(
"-E- %s line %d: Error allocating data space.\n",
280 printf(
"-E- %s line %d: Error reading Channel_2 Slope attribute.\n",
287 "-E- %s line %d: Error reading Channel_2 Intercept attribute.\n",
294 "-E- %s line %d: Error reading Channel_2 Scale_type attribute.\n",
298 if (strcmp(scaletype,
"y= Slope * x + Intercept;") != 0) {
299 printf(
"-E- %s line %d: Channel_2 Scale_type must be linear.\n",
304 if ((ch3 = (int16_t *) calloc(
npix,
sizeof (int16_t))) ==
NULL) {
305 printf(
"-E- %s line %d: Error allocating data space.\n",
311 printf(
"-E- %s line %d: Error reading Channel_3 Slope attribute.\n",
318 "-E- %s line %d: Error reading Channel_3 Intercept attribute.\n",
325 "-E- %s line %d: Error reading Channel_3 Scale_type attribute.\n",
329 if (strcmp(scaletype,
"y= Slope * x + Intercept;") != 0) {
330 printf(
"-E- %s line %d: Channel_3 Scale_type must be linear.\n",
335 if ((
ch4 = (int16_t *) calloc(
npix,
sizeof (int16_t))) ==
NULL) {
336 printf(
"-E- %s line %d: Error allocating data space.\n",
342 printf(
"-E- %s line %d: Error reading Channel_4 Slope attribute.\n",
349 "-E- %s line %d: Error reading Channel_4 Intercept attribute.\n",
356 "-E- %s line %d: Error reading Channel_4 Scale_type attribute.\n",
360 if (strcmp(scaletype,
"y= Slope * x + Intercept;") != 0) {
361 printf(
"-E- %s line %d: Channel_4 Scale_type must be linear.\n",
366 if ((ch5 = (int16_t *) calloc(
npix,
sizeof (int16_t))) ==
NULL) {
367 printf(
"-E- %s line %d: Error allocating data space.\n",
373 printf(
"-E- %s line %d: Error reading Channel_5 Slope attribute.\n",
380 "-E- %s line %d: Error reading Channel_5 Intercept attribute.\n",
387 "-E- %s line %d: Error reading Channel_5 Scale_type attribute.\n",
391 if (strcmp(scaletype,
"y= Slope * x + Intercept;") != 0) {
392 printf(
"-E- %s line %d: Channel_5 Scale_type must be linear.\n",
397 if (
getHDFattr(sd_id,
"start date",
"", (VOIDP) & startdate) != 0) {
398 printf(
"-E- %s line %d: Error reading start date attribute.\n",
403 sscanf(startdate,
"%04d-%02d-%02d", &year, &month, &
day);
404 if (((year % 400) == 0) || (((year % 4) == 0) && ((year % 100) != 0))) {
415 printf(
"-E- %s line %d: Error reading start time attribute.\n",
425 sscanf(
starttime,
"%02d:%02d:%02d.%03d", &hh, &mm, &ss, &ms);
427 if (
getHDFattr(sd_id,
"Satellite Name",
"", (VOIDP) satnam) != 0) {
428 printf(
"-E- %s line %d: Error reading Satellite Name attribute.\n",
433 if (
getHDFattr(sd_id,
"PRTEMP",
"", (VOIDP) & prtemp) != 0) {
434 printf(
"-E- %s line %d: Error reading PRTEMP attribute.\n",
448 if ((rawrec = (
RAW_CAL *) malloc(dims[0])) ==
NULL) {
449 printf(
"-E- %s line %d: Error allocating rawcal data space.\n",
454 strcat(tmpstr,
"Raw Running Calibration");
455 status =
rdSDS(sd_id, tmpstr, 0, 0, 0, 0, (VOIDP) rawrec);
457 printf(
"-E- %s line %d: Error reading %s.\n",
458 __FILE__, __LINE__, tmpstr);
463 strcat(tmpstr,
"Running Calibration");
464 if (
getDims(sd_id, tmpstr, dims) != 0) {
465 printf(
"-E- %s line %d: Error reading %s dim.\n",
466 __FILE__, __LINE__, tmpstr);
470 if ((runrec = (
RUN_CAL *) malloc(dims[0])) ==
NULL) {
471 printf(
"-E- %s line %d: Error allocating runcal data space.\n",
475 status =
rdSDS(sd_id, tmpstr, 0, 0, 0, 0, (VOIDP) runrec);
487 if (
getDims(sd_id,
"Scan start time", dims) != 0) {
488 printf(
"-E- %s line %d: Error reading Scan start time dim.\n",
492 if (dims[0] !=
l1rec->l1file->nscan) {
494 "-E- %s line %d: Error: Number of Scan start times (%d) must match Number of Scans (%d).\n",
495 __FILE__, __LINE__, dims[0],
l1rec->l1file->nscan);
498 if ((scantime = (int32_t *) malloc(dims[0] *
sizeof (int32_t))) ==
NULL) {
499 printf(
"-E- %s line %d: Error allocating scantime data space.\n",
503 status =
rdSDS(sd_id,
"Scan start time", 0, 0, 0, 0, (VOIDP) scantime);
505 printf(
"-E- %s line %d: Error reading scan start time\n",
519 switch (
file->subsensorID) {
521 printf(
"I Applying NOAA-7 visible degradation.\n");
522 m[0] = m[0] / (0.916 - 0.049 * ((
float) year + ((
float)
jday / (
float) LY) - 1981.5)
523 + 0.0050 * pow((
float) year + ((
float)
jday / (
float) LY) - 1981.5, 2));
524 b[0] =
b[0] / (0.916 - 0.049 * ((
float) year + ((
float)
jday / (
float) LY) - 1981.5)
525 + 0.0050 * pow((
float) year + ((
float)
jday / (
float) LY) - 1981.5, 2));
526 m[1] = m[1] / (0.882 - 0.080 * ((
float) year + ((
float)
jday / (
float) LY) - 1981.5)
527 + 0.0110 * pow((
float) year + ((
float)
jday / (
float) LY) - 1981.5, 2));
528 b[1] =
b[1] / (0.882 - 0.080 * ((
float) year + ((
float)
jday / (
float) LY) - 1981.5)
529 + 0.0110 * pow((
float) year + ((
float)
jday / (
float) LY) - 1981.5, 2));
532 printf(
"I Applying NOAA-9 visible degradation.\n");
533 m[0] = m[0] / (0.953 - 0.051 * ((
float) year + ((
float)
jday / (
float) LY) - 1985.0));
534 b[0] =
b[0] / (0.953 - 0.051 * ((
float) year + ((
float)
jday / (
float) LY) - 1985.0));
535 m[1] = m[1] / (0.866 - 0.026 * ((
float) year + ((
float)
jday / (
float) LY) - 1985.0));
536 b[1] =
b[1] / (0.866 - 0.026 * ((
float) year + ((
float)
jday / (
float) LY) - 1985.0));
539 printf(
"I Applying NOAA-11 visible degradation.\n");
540 m[0] = m[0] / (0.797 - 0.010 * ((
float) year + ((
float)
jday / (
float) LY) - 1989.0));
541 b[0] =
b[0] / (0.797 - 0.010 * ((
float) year + ((
float)
jday / (
float) LY) - 1989.0));
542 m[1] = m[1] / (0.683 - 0.020 * ((
float) year + ((
float)
jday / (
float) LY) - 1989.0));
543 b[1] =
b[1] / (0.683 - 0.020 * ((
float) year + ((
float)
jday / (
float) LY) - 1989.0));
547 RelDay = ((year - 1994) * 365 + (
jday - 364));
548 printf(
"I Applying NOAA-14 visible degradation.\n");
553 m[0] = 0.0000232 * (
float) RelDay + 0.109;
555 m[1] = 0.0000373 * (
float) RelDay + 0.129;
559 printf(
"I No visible degradation available for NOAA-%2.0d.\n",
572 for (iw = 0; iw <= 2; iw++) {
583 radinv[iw][0] = T_LOW;
587 for (ip = 1; ip <
NRADTAB; ip++) {
588 ttem = pow(10., radbas[iw] + radinc[iw] * (
float) (ip));
594 teminc[iw] = (T_HIGH - T_LOW) / (
float) (
NRADTAB - 1);
605 for (ip = 1; ip <
NRADTAB; ip++) {
606 ttem = tembas[iw] + (teminc[iw] * (
float) (ip));
623 if (
scan > 0 && (scantime[
scan] < scantime[
scan - 1])) {
636 READ_SDS_ID(sd_id_g,
"Longitude",
l1rec->lon,
scan, spix, 0, 0, 1,
npix, 1,
638 READ_SDS_ID(sd_id_g,
"Latitude",
l1rec->lat,
scan, spix, 0, 0, 1,
npix, 1,
647 for (ip = 0; ip <
npix; ip++) {
649 l1rec->pixnum[ip] = spix + ip;
651 if (
l1rec->lon[ip] < -181.0 ||
l1rec->lon[ip] > 181.0
652 ||
l1rec->lat[ip] < -91.0 ||
l1rec->lat[ip] > 91.0)
653 l1rec->navfail[ip] = 1;
657 READ_SDS_ID(sd_id,
SDNAME"1", ch1,
scan, spix, 0, 0, 1,
npix, 1, 1);
658 READ_SDS_ID(sd_id,
SDNAME"2", ch2,
scan, spix, 0, 0, 1,
npix, 1, 1);
659 READ_SDS_ID(sd_id,
SDNAME"3", ch3,
scan, spix, 0, 0, 1,
npix, 1, 1);
660 READ_SDS_ID(sd_id,
SDNAME"4",
ch4,
scan, spix, 0, 0, 1,
npix, 1, 1);
661 READ_SDS_ID(sd_id,
SDNAME"5", ch5,
scan, spix, 0, 0, 1,
npix, 1, 1);
683 for (ip = 0; ip < runrec->numcal; ip++) {
684 if (
abs((
int)(runrec->runcal[ip].cenlin - ascan)) < idif) {
685 idif =
abs((
int)(runrec->runcal[ip].cenlin - ascan));
690 if (irun == -1 || idif > runrec->intrvl) {
691 printf(
"-W- %s line %d: Hey, I can't find the RUNCAL entry!\n",
693 printf(
"-W- scan: %f; first center scan: %f; last: %f", ascan,
694 runrec->runcal[0].cenlin,
695 runrec->runcal[runrec->numcal - 1].cenlin);
697 if (ascan < runrec->runcal[1].cenlin) {
700 irun = runrec->numcal - 1;
704 if (ascan > runrec->runcal[irun].cenlin) {
705 if (irun < runrec->numcal - 1) {
720 if (runrec->runcal[irun].cenlin != runrec->runcal[jrun].cenlin) {
721 percnt = (ascan - runrec->runcal[irun].cenlin)
722 / (runrec->runcal[jrun].cenlin - runrec->runcal[irun].cenlin);
725 }
else if (percnt > 1.0) {
735 for (ii = 1; ii <= 30; ii++) {
738 for (jj = 0; jj < 2; jj++) {
739 sumbck[jj][iw - 1] = 0.0;
742 sumbck[0][iw - 1] += rawrec->rawcal[iraw].bckscn[0][vbcksc[ii - 1]]
744 + rawrec->rawcal[jraw].bckscn[0][vbcksc[ii - 1]] * (percnt);
745 sumbck[1][iw - 1] += rawrec->rawcal[iraw].bckscn[1][vbcksc[ii - 1]]
747 + rawrec->rawcal[jraw].bckscn[1][vbcksc[ii - 1]] * (percnt);
749 for (iw = 0; iw < 3; iw++) {
750 if (sumbck[0][iw] > 0.0) {
751 avgbck[iw] = sumbck[1][iw] / sumbck[0][iw];
758 for (ii = 1; ii <= 50; ii++) {
761 for (jj = 0; jj < 2; jj++) {
762 sumspc[jj][iw - 1] = 0.0;
765 sumspc[0][iw - 1] += rawrec->rawcal[iraw].space[0][vspace[ii - 1]]
767 + rawrec->rawcal[jraw].space[0][vspace[ii - 1]] * (percnt);
768 sumspc[1][iw - 1] += rawrec->rawcal[iraw].space[1][vspace[ii - 1]]
770 + rawrec->rawcal[jraw].space[1][vspace[ii - 1]] * (percnt);
772 for (iw = 0; iw < 3; iw++) {
773 if (sumspc[0][iw + 2] > 0.0) {
774 avgspc[iw] = sumspc[1][iw + 2] / sumspc[0][iw + 2];
781 prtemp = (1.0 - percnt) * runrec->runcal[irun].prtemp
782 + (percnt) * runrec->runcal[jrun].prtemp;
784 for (iw = 0; iw < 3; iw++) {
787 if (ttem < tembas[iw])
789 ai = (ttem - tembas[iw]) / teminc[iw];
796 radprt[iw] = (1.0 - ai) * teminv[iw][ni] + ai * teminv[iw][ni + 1];
800 switch (
file->subsensorID) {
855 for (iw = 0; iw <
nbands + 1; iw++) {
869 for (ip = 0; ip <
npix; ip++) {
872 l1rec->Lt[ipb] = 0.0;
875 if (
data[ip] >= 32000) {
881 l1rec->Lt[ipb] = 1000.0;
892 l1rec->Lt[ipb] = 1000.0;
895 &
l1rec->delphi[ip], rayly, aersol,
896 &
l1rec->glint_coef[ip]);
898 trad = (
data[ip] * m[iw]) +
b[iw];
901 if (aersol[iw] != 0.0) {
906 l1rec->Lt[ipb] = trad;
912 for (iw = 0; iw < nbandsir; iw++) {
926 for (ip = 0; ip <
npix; ip++) {
929 l1rec->Ltir[ipb] = 0.0;
942 if (
data[ip] >= 32000) {
948 l1rec->Lt[ipb] = 1000.0;
957 if (avgbck[iw] != avgspc[iw]) {
967 if (ip == pdbg1 &&
scan == ldbg1) {
968 printf(
" ch4_coeffs=%f %f %f %f %f\n",
969 ch4_coeff[0], ch4_coeff[1],
970 ch4_coeff[2], ch4_coeff[3],
972 printf(
" T_inst, prtemp = %f \n", prtemp);
973 printf(
" R_ICT, radprt = %f \n",
975 printf(
" C_S, avgspc = %f \n", avgspc[iw]);
976 printf(
" C_BB, avgbck = %f \n", avgbck[iw]);
977 printf(
" C, data = %d \n",
data[ip]);
979 trad = ch4_coeff[0] * (prtemp - 288.) + ch4_coeff[1]
980 + ((((ch4_coeff[2] * radprt[iw]) - (ch4_coeff[3]
981 * (pow(avgspc[iw] - avgbck[iw], 2.0))))
982 / (avgspc[iw] - avgbck[iw])) * (avgspc[iw] -
data[ip]))
983 + ch4_coeff[4] * (pow(avgspc[iw] -
data[ip], 2.0));
984 }
else if (iw == 2) {
986 if (ip == pdbg1 &&
scan == ldbg1) {
987 printf(
" ch5_coeffs=%f %f %f %f %f\n",
988 ch5_coeff[0], ch5_coeff[1],
989 ch5_coeff[2], ch5_coeff[3],
991 printf(
" T_inst, prtemp = %f \n", prtemp);
992 printf(
" R_ICT, radprt = %f \n",
994 printf(
" C_S, avgspc = %f \n", avgspc[iw]);
995 printf(
" C_BB, avgbck = %f \n", avgbck[iw]);
996 printf(
" C, data = %d \n",
data[ip]);
998 trad = ch5_coeff[0] * (prtemp - 288.) + ch5_coeff[1]
999 + ((((ch5_coeff[2] * radprt[iw]) - (ch5_coeff[3]
1000 * (pow(avgspc[iw] - avgbck[iw], 2.0))))
1001 / (avgspc[iw] - avgbck[iw])) * (avgspc[iw] -
data[ip]))
1002 + ch5_coeff[4] * (pow(avgspc[iw] -
data[ip], 2.0));
1006 trad = radprt[iw] * (avgspc[iw] -
data[ip])
1007 / (avgspc[iw] - avgbck[iw])
1008 + rspc[iw] * (avgbck[iw] -
data[ip])
1009 / (avgbck[iw] - avgspc[iw]);
1012 switch (
file->subsensorID) {
1014 tnlc = 5.7843 - 1.0754e-1 * trad + 4.8042e-4 * pow(trad, 2);
1017 tnlc = 5.24 + (.88643 - 1.) * trad + 6.033e-4 * pow(trad, 2);
1020 tnlc = 5.76 + (.88428 - 1.) * trad + 5.882e-4 * pow(trad, 2);
1023 tnlc = 7.21 + (.8412 - 1.) * trad + 8.739e-4 * pow(trad, 2);
1026 tnlc = 5.11 + (.88929 - 1.) * trad + 5.968e-4 * pow(trad, 2);
1029 tnlc = 3.72 + (.92378 - 1.) * trad
1030 + 3.822e-4 * pow(trad, 2);
1033 tnlc = 4.76 + (-0.0932) * trad + 4.524e-4 * pow(trad, 2);
1036 tnlc = 2.96 + (-0.05411) * trad + 2.4532e-4 * pow(trad, 2);
1039 tnlc = 8.22 + (-0.15795) * trad + 7.5579e-4 * pow(trad, 2);
1042 tnlc = 5.82 + (-0.11069) * trad + 5.2337e-4 * pow(trad, 2);
1045 tnlc = 5.70 + (-0.11187) * trad + 5.4668e-4 * pow(trad, 2);
1051 }
else if (iw == 2) {
1053 switch (
file->subsensorID) {
1055 tnlc = 4.4035 - 6.9038e-2 * trad + 2.5741e-4 * pow(trad, 2);
1058 tnlc = 2.42 + (.95311 - 1.) * trad + 2.198e-4 * pow(trad, 2);
1061 tnlc = 5.76 + (.88428 - 1.) * trad + 5.882e-4 * pow(trad, 2);
1064 tnlc = 2.92 + (.94598 - 1.) * trad + 2.504e-4 * pow(trad, 2);
1067 tnlc = 1.91 + (.96299 - 1.) * trad + 1.775e-4 * pow(trad, 2);
1070 tnlc = 2.00 + (.96194 - 1.) * trad + 1.742e-4 * pow(trad, 2);
1073 tnlc = 3.83 + (-0.0659) * trad + 2.811e-4 * pow(trad, 2);
1076 tnlc = 2.25 + (-0.03665) * trad + 1.4854e-4 * pow(trad, 2);
1079 tnlc = 4.31 + (-0.07318) * trad + 3.0976e-4 * pow(trad, 2);
1082 tnlc = 2.67 + (-0.04360) * trad + 1.7715e-4 * pow(trad, 2);
1085 tnlc = 3.58 + (-0.05991) * trad + 2.4985e-4 * pow(trad, 2);
1094 if (ip == pdbg1 &&
scan == ldbg1) {
1095 printf(
" ch %d trad = %f\n", iw + 3, trad);
1096 printf(
" newavhrrcal = %d\n",
1098 printf(
" xsatid = %d NO16=%d\n",
1104 if (radinc[iw] != 0.0)
1105 ai = (log10(trad) - radbas[iw]) / radinc[iw];
1114 ttem = (1.0 - ai) * radinv[iw][ni] + ai * radinv[iw][ni + 1];
1115 if (ip == pdbg1 &&
scan == ldbg1) {
1116 printf(
" ch %d ttem = %f\n", iw + 3, ttem);
1119 == 1 &&
file->subsensorID ==
NO16) {
1130 tcor = -6.9176245 + 0.038554339 * ttem - 4.7661371e-05 * pow(ttem, 2);
1135 l1rec->Bt[ipb - 1] =
l1rec->Bt[ipb - 1] + tcor;
1136 if (ip == pdbg1 &&
scan == ldbg1) {
1137 printf(
" real ch = %d, ttem = %f, tcor = %f\n", iw + 3 - 1, ttem, tcor);
1140 if (ip == pdbg1 &&
scan == ldbg1) {
1141 printf(
" ch = %d, ttem = %f, tcor = %f\n", iw + 3, ttem, tcor);
1145 l1rec->Bt[ipb] = ttem;
1157 l1rec->detnum = (int32_t) detnum;
1166 if ((sd_id_g != sd_id) && SDend(sd_id_g)) {
1167 fprintf(
stderr,
"-E- %s line %d: SDend(%d) failed for file, %s.\n",
1168 __FILE__, __LINE__, sd_id,
file->geofile);
1172 fprintf(
stderr,
"-E- %s line %d: SDend(%d) failed for file, %s.\n",
1173 __FILE__, __LINE__, sd_id,
file->name);
1214 if (strcmp(satname,
"NOA6") == 0)
1216 else if (strcmp(satname,
"NOA7") == 0)
1218 else if (strcmp(satname,
"NOA8") == 0)
1220 else if (strcmp(satname,
"NOA9") == 0)
1222 else if (strcmp(satname,
"NO10") == 0)
1224 else if (strcmp(satname,
"NO11") == 0)
1226 else if (strcmp(satname,
"NO12") == 0)
1228 else if (strcmp(satname,
"NO14") == 0)
1230 else if (strcmp(satname,
"NO15") == 0)
1232 else if (strcmp(satname,
"NO16") == 0)
1234 else if (strcmp(satname,
"NO17") == 0)
1236 else if (strcmp(satname,
"NO18") == 0)
1238 else if (strcmp(satname,
"NO19") == 0)