Index: /trunk/psModules/src/astrom/pmFPAfile.c
===================================================================
--- /trunk/psModules/src/astrom/pmFPAfile.c	(revision 6905)
+++ /trunk/psModules/src/astrom/pmFPAfile.c	(revision 6906)
@@ -5,4 +5,5 @@
 #include "pmHDU.h"
 #include "pmFPA.h"
+#include "pmMaskBadPixels.h"
 #include "pmFPAConstruct.h"
 #include "pmFPAview.h"
@@ -249,4 +250,12 @@
     char *writeMode = "w";
 
+    if (file->state & PM_FPA_STATE_INACTIVE) {
+        return false;
+    }
+
+    if (file->state == PM_FPA_STATE_OPEN) {
+        return true;
+    }
+
     if (file->mode == PM_FPA_MODE_NONE) {
         return false;
@@ -260,8 +269,4 @@
     if (file->mode == PM_FPA_MODE_WRITE) {
         mode = writeMode;
-    }
-
-    if (file->state == PM_FPA_STATE_OPEN) {
-        return true;
     }
 
@@ -322,4 +327,7 @@
 bool pmFPAfileRead (pmFPAfile *file, const pmFPAview *view)
 {
+    if (file->state & PM_FPA_STATE_INACTIVE)
+        return false;
+
     if (file->mode != PM_FPA_MODE_READ)
         return false;
@@ -372,6 +380,12 @@
 bool pmFPAfileWrite (pmFPAfile *file, const pmFPAview *view)
 {
-    if (file->mode != PM_FPA_MODE_WRITE)
-        return false;
+
+    if (file->state & PM_FPA_STATE_INACTIVE) {
+        return false;
+    }
+
+    if (file->mode != PM_FPA_MODE_WRITE) {
+        return false;
+    }
 
     // get the current depth
@@ -422,4 +436,7 @@
 bool pmFPAfileCreate (pmFPAfile *file, const pmFPAview *view)
 {
+    if (file->state & PM_FPA_STATE_INACTIVE) {
+        return false;
+    }
     if (file->mode != PM_FPA_MODE_WRITE)
         return false;
@@ -461,4 +478,7 @@
 bool pmFPAfileClose (pmFPAfile *file, const pmFPAview *view)
 {
+    if (file->state & PM_FPA_STATE_INACTIVE) {
+        return false;
+    }
     if (file->state == PM_FPA_STATE_CLOSED) {
         return true;
@@ -496,4 +516,36 @@
         fprintf (stderr, "warning: type mismatch\n");
         return false;
+    }
+    return true;
+}
+
+// set the state of the specified pmFPAfile to active (state == true) or inactive
+// if name is NULL, set the state for all pmFPAfiles
+bool pmFPAfileActivate (psMetadata *files, bool state, char *name)
+{
+    if (name == NULL) {
+        psMetadataItem *item = NULL;
+        psMetadataIterator *iter = psMetadataIteratorAlloc (files, PS_LIST_HEAD, NULL);
+        while ((item = psMetadataGetAndIncrement (iter)) != NULL) {
+            pmFPAfile *file = item->data.V;
+            if (state) {
+                file->state &= NOT_U8(PM_FPA_STATE_INACTIVE);
+            } else {
+                file->state |= PM_FPA_STATE_INACTIVE;
+            }
+        }
+        psFree (iter);
+        return true;
+    }
+
+    bool status = false;
+    pmFPAfile *file = psMetadataLookupPtr (&status, files, name);
+    if (!file) {
+        return false;
+    }
+    if (state) {
+        file->state &= NOT_U8(PM_FPA_STATE_INACTIVE);
+    } else {
+        file->state |= PM_FPA_STATE_INACTIVE;
     }
     return true;
Index: /trunk/psModules/src/astrom/pmFPAfile.h
===================================================================
--- /trunk/psModules/src/astrom/pmFPAfile.h	(revision 6905)
+++ /trunk/psModules/src/astrom/pmFPAfile.h	(revision 6906)
@@ -7,6 +7,6 @@
 *  @author EAM, IfA
 *
-*  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2006-04-17 18:01:04 $
+*  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2006-04-19 20:30:49 $
 *
 *  Copyright 2004-2005 Institute for Astronomy, University of Hawaii
@@ -46,6 +46,7 @@
 
 typedef enum {
-    PM_FPA_STATE_OPEN,
-    PM_FPA_STATE_CLOSED,
+    PM_FPA_STATE_OPEN     = 0x01,
+    PM_FPA_STATE_CLOSED   = 0x02,
+    PM_FPA_STATE_INACTIVE = 0x04,
 } pmFPAfileState;
 
@@ -111,4 +112,8 @@
 bool pmFPAfileClose (pmFPAfile *file, const pmFPAview *view);
 
+// set the state of the specified pmFPAfile to active (state == true) or inactive
+// if name is NULL, set the state for all pmFPAfiles
+bool pmFPAfileActivate (psMetadata *files, bool state, char *name);
+
 // examine all pmFPAfiles listed in the files and perform the needed I/O operations (open,read,write,close)
 bool pmFPAfileIOChecks (psMetadata *files, const pmFPAview *view, pmFPAfilePlace place);
