- Timestamp:
- May 20, 2022, 1:28:47 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20220316/fpcamera/src/fpcameraMetadataStats.c
r42220 r42223 1 /** @file fpcameraMetaDataStats.c 2 * 3 * @brief 4 * 5 * @ingroup fpcamera 6 * 7 * @author IfA 8 * @version $Revision: 1.3 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2009-02-07 02:03:34 $ 10 * Copyright 2009 Institute for Astronomy, University of Hawaii 11 */ 1 # include "fpcamera.h" 12 2 13 # include "fpcameraInternal.h"3 # define ESCAPE(ERROR,...) { p_psError(__FILE__,__LINE__,__func__,ERROR,false,__VA_ARGS__); psFree (statsMDC); psFree(view); psFree(resolved); return false; } 14 4 15 5 bool fpcameraMetadataStats (pmConfig *config, psMetadata *stats) { 16 6 17 7 bool status; 8 char *statsMDC = NULL; 9 pmFPAview *view = NULL; 10 psString resolved = NULL; 18 11 19 12 char *filename = psMetadataLookupStr (&status, config->arguments, "STATS"); 20 13 if (!filename) return true; // stats not requested 21 14 22 // Extract statistics from the lastoutput fpa15 // Extract statistics from the output fpa 23 16 pmFPAfile *output = psMetadataLookupPtr(&status, config->files, "FPCAMERA.OUTPUT"); 24 25 if (!output) { 26 psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to find output file (FPCAMERA.OUTPUT)."); 27 return false; 28 } 17 if (!output) ESCAPE (PS_ERR_UNEXPECTED_NULL, "Unable to find output file (FPCAMERA.OUTPUT)."); 29 18 30 19 // extract stats for the complete fpa 31 pmFPAview *view = pmFPAviewAlloc(0);20 view = pmFPAviewAlloc(0); 32 21 33 22 // Entries in the FPCAMERA.HEADER in the FPA don't get seen by ppStats 34 23 psMetadata *header = psMetadataLookupMetadata(&status, output->fpa->analysis, "FPCAMERA.HEADER"); 35 24 if (status && header) { 36 psMetadataItemSupplement(&status, stats, header, "ZPT_OBS"); 25 psMetadataItemSupplement(&status, stats, header, "ZPT_OBS"); // XXX not yet calculated 37 26 psMetadataItemSupplement(&status, stats, header, "ZPT_ERR"); 38 psMetadataItemSupplement(&status, stats, header, "NASTRO");39 27 } 40 28 41 if (!ppStatsMetadata(stats, output->fpa, view, 0, config)) { 42 psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to generate stats for image."); 43 psFree(view); 44 return false; 45 } 46 47 psFree(view); 29 if (!ppStatsMetadata(stats, output->fpa, view, 0, config)) ESCAPE (PS_ERR_UNEXPECTED_NULL, "Unable to generate stats for image."); 48 30 49 31 // if we did not request any specific stats, the structure is empty … … 54 36 55 37 // convert the stats MDC to a string 56 char *statsMDC = psMetadataConfigFormat(stats); 57 if (!statsMDC || strlen(statsMDC) == 0) { 58 psError(PS_ERR_IO, false, "Unable to serialize stats metadata.\n"); 59 return false; 60 } 38 statsMDC = psMetadataConfigFormat(stats); 39 if (!statsMDC || strlen(statsMDC) == 0) ESCAPE(PS_ERR_IO, "Unable to serialize stats metadata.\n"); 61 40 62 41 // convert to a real UNIX filename 63 psString resolved = pmConfigConvertFilename(filename, config, true, false); // Resolved filename 64 if (!resolved) { 65 psError(psErrorCodeLast(), false, "Unable to resolve statistics filename: %s", filename); 66 psFree(statsMDC); 67 return false; 68 } 42 resolved = pmConfigConvertFilename(filename, config, true, false); // Resolved filename 43 if (!resolved) ESCAPE(psErrorCodeLast(), "Unable to resolve statistics filename: %s", filename); 44 69 45 FILE *statsFile = fopen (resolved, "w"); 70 if (!statsFile) { 71 psError(PS_ERR_IO, true, "Unable to open statistics file %s for writing.\n", resolved); 72 psFree(statsMDC); 73 psFree(resolved); 74 return false; 75 } 46 if (!statsFile) ESCAPE (PS_ERR_IO, "Unable to open statistics file %s for writing.\n", resolved); 76 47 77 48 // write the stats MDC to a file 78 if (fprintf(statsFile, "%s", statsMDC) != strlen(statsMDC)) { 79 psError(PS_ERR_IO, false, "Unable to write statistics file %s", resolved); 80 psFree(statsMDC); 81 psFree(resolved); 82 return false; 83 } 84 psFree(statsMDC); 85 if (fclose(statsFile) == EOF) { 86 psError(PS_ERR_IO, false, "Unable to write statistics file %s", resolved); 87 psFree(resolved); 88 return false; 89 } 90 91 psFree(resolved); 49 if (fprintf(statsFile, "%s", statsMDC) != strlen(statsMDC)) ESCAPE (PS_ERR_IO, "Unable to write statistics file %s", resolved); 50 if (fclose(statsFile) == EOF) ESCAPE (PS_ERR_IO, "Unable to write statistics file %s", resolved); 92 51 93 52 pmConfigRunFilenameAddWrite(config, "STATS", filename); 94 53 54 psFree(resolved); 55 psFree(statsMDC); 56 psFree(view); 57 95 58 return true; 96 59 }
Note:
See TracChangeset
for help on using the changeset viewer.
