Phenom Programming Interface
PhenomTypes.h
00001 /*
00002  *  PhenomTypes.h
00003  *  PhenomCtl
00004  *
00005  *  Created by Sander Stoks on 1/7/11.
00006  *  Copyright 2011 Phenom World B.V. All rights reserved.
00007  *
00008  */
00009 
00010 #ifndef PHENOMTYPES_H
00011 #define PHENOMTYPES_H
00012 
00013 #include "gSOAP/soapStub.h"
00014 #include <stdexcept>
00015 #include <boost/shared_ptr.hpp>
00016 
00017 #undef min
00018 #undef max
00019 
00021 namespace PhenomTypes
00022 {
00024     enum RetVal
00025     {
00026         OM_OK           = om__RetVal__OM_OK,            
00027         OM_FAIL         = om__RetVal__OM_FAIL,          
00028         OM_CONTEXT      = om__RetVal__OM_CONTEXT,       
00029         OM_COMM_ERROR   = om__RetVal__OM_COMM_ERROR,    
00030         OM_CLIPPED      = om__RetVal__OM_CLIPPED,       
00031         OM_UNCAL        = om__RetVal__OM_UNCAL,         
00032         
00033         // Only during connection phase
00034         ACCESSDENIED    = -13,                          
00035         EXCLUSIVE       = -16,                          
00036         INVALID_ADDRESS = -22,                          
00037         UNREACHABLE     = -1000,                        
00038         NORESPONSE      = -19,                      
00039 
00040         OTHER           = -1
00041     };
00043     const char* string(RetVal e);
00044     RetVal OMRetVal(om__RetVal retVal);
00045     
00047     struct Error
00048     {
00049         Error(RetVal code, const std::string& description);
00050         
00052         RetVal code;
00054         std::string description;
00055     };
00056     
00058     enum InstrumentMode
00059     {
00060         INSTRUMENT_MODE_OFF             = om__instrumentMode__INSTRUMENT_MODE_OFF,          
00061         INSTRUMENT_MODE_OPERATIONAL     = om__instrumentMode__INSTRUMENT_MODE_OPERATIONAL,  
00062         INSTRUMENT_MODE_STANDBY         = om__instrumentMode__INSTRUMENT_MODE_STANDBY,      
00063         INSTRUMENT_MODE_HIBERNATE       = om__instrumentMode__INSTRUMENT_MODE_HIBERNATE,    
00064         INSTRUMENT_MODE_INITIALIZING    = om__instrumentMode__INSTRUMENT_MODE_INITIALIZING, 
00065         INSTRUMENT_MODE_CLOSINGDOWN     = om__instrumentMode__INSTRUMENT_MODE_CLOSINGDOWN,  
00066         INSTRUMENT_MODE_ERROR           = om__instrumentMode__INSTRUMENT_MODE_ERROR         
00067     };
00069     const char* string(InstrumentMode m);
00070     
00072     enum OperationalMode
00073     {
00074         OPERATIONAL_MODE_UNAVAILABLE        = om__operationalMode__OPERATIONAL_MODE_UNAVAILABLE,        
00075         OPERATIONAL_MODE_LOADPOS            = om__operationalMode__OPERATIONAL_MODE_LOADPOS,            
00076         OPERATIONAL_MODE_UNLOADING          = om__operationalMode__OPERATIONAL_MODE_UNLOADING,          
00077         OPERATIONAL_MODE_SELECTINGNAVCAM    = om__operationalMode__OPERATIONAL_MODE_SELECTINGNAVCAM,    
00078         OPERATIONAL_MODE_SELECTINGSEM       = om__operationalMode__OPERATIONAL_MODE_SELECTINGSEM,       
00079         OPERATIONAL_MODE_LIVENAVCAM         = om__operationalMode__OPERATIONAL_MODE_LIVENAVCAM,         
00080         OPERATIONAL_MODE_LIVESEM            = om__operationalMode__OPERATIONAL_MODE_LIVESEM,            
00081         OPERATIONAL_MODE_ACQUIRENAVCAMIMAGE = om__operationalMode__OPERATIONAL_MODE_ACQUIRENAVCAMIMAGE, 
00082         OPERATIONAL_MODE_ACQUIRESEMIMAGE    = om__operationalMode__OPERATIONAL_MODE_ACQUIRESEMIMAGE     
00083     };
00085     const char* string(OperationalMode m);
00086     
00088     enum ImagingDevice
00089     {
00090         NAVCAMIMDEV = om__imagingDevice__NAVCAMIMDEV,   
00091         SEMIMDEV    = om__imagingDevice__SEMIMDEV       
00092     };
00094     const char* string(ImagingDevice d);
00095     
00097     struct Position
00098     {
00099         Position();
00100         Position(double x, double y);
00101         Position(const om__position& pos);
00102         double x;
00103         double y;
00104     };
00106     const Position CenterPosition;
00107     
00112     enum StageNavigationMode
00113     {
00114         STAGE_NAVIGATION_MODE_NOT_AVAILABLE = om__stageNavigMode__STAGE_NAVIGATION_MODE_NOT_AVAILABLE,  
00115         STAGE_NAVIGATION_MODE_REST          = om__stageNavigMode__STAGE_NAVIGATION_MODE_REST,           
00116         STAGE_NAVIGATION_MODE_PTP           = om__stageNavigMode__STAGE_NAVIGATION_MODE_PTP,            
00117         STAGE_NAVIGATION_MODE_JOG           = om__stageNavigMode__STAGE_NAVIGATION_MODE_JOG,            
00118         STAGE_NAVIGATION_MODE_NOT_HOMED     = om__stageNavigMode__STAGE_NAVIGATION_MODE_NOT_HOMED       
00119     };
00121     const char* string(StageNavigationMode m);
00122     
00123     struct StageModeAndPosition
00124     {
00125         StageNavigationMode mode;
00126         Position position;
00127     };
00128     
00136     enum NavigationAlgorithm
00137     {
00138         NAVIGATION_AUTO             = om__navigationAlgorithm__NAVIGATION_AUTO,             
00139         NAVIGATION_BACKLASH_ONLY    = om__navigationAlgorithm__NAVIGATION_BACKLASH_ONLY,    
00140         NAVIGATION_RAW              = om__navigationAlgorithm__NAVIGATION_RAW               
00141     };
00143     const char* string(NavigationAlgorithm a);
00144 
00146     struct StageStroke
00147     {
00148         Position NavCamMin;     
00149         Position NavCamMax;     
00150         Position SEMMin;        
00151         Position SEMMax;        
00152     };
00153     
00154     struct Range
00155     {
00156         Range();
00157         Range(double min, double max);
00158         double min;
00159         double max;
00160     };
00161     
00163     enum AutoFocusAlgorithm
00164     {
00165         AUTOFOCUS_AUTO          = om__autoFocusAlgorithm__AUTOFOCUS_AUTO,           
00166         AUTOFOCUS_COARSE_FINE   = om__autoFocusAlgorithm__AUTOFOCUS_COARSE_FINE,    
00167         AUTOFOCUS_FINE_ONLY     = om__autoFocusAlgorithm__AUTOFOCUS_FINE_ONLY       
00168     };
00170     const char* string(AutoFocusAlgorithm a);
00171     
00172     enum DetectorSegment
00173     {
00174         OM_SEM_DETECTOR_SEGMENT_OFF     = om__detectorSegment__OM_SEM_DETECTOR_SEGMENT_OFF,     
00175         OM_SEM_DETECTOR_SEGMENT_ON      = om__detectorSegment__OM_SEM_DETECTOR_SEGMENT_ON,      
00176         OM_SEM_DETECTOR_SEGMENT_INVERT  = om__detectorSegment__OM_SEM_DETECTOR_SEGMENT_INVERT   
00177     };
00179     const char* string(DetectorSegment d);
00181     const char* shortstring(DetectorSegment d);
00182     
00183     struct Size
00184     {
00185         Size();
00186         Size(int width, int height);
00187         int width;
00188         int height;
00189     };
00190     
00193     struct CamParams
00194     {
00195         CamParams();
00196         CamParams(const Size& size, int nFrames = 1);
00197         CamParams(int width, int height, int nFrames = 1);
00198         Size size;
00200         int nFrames;
00201     };
00202     
00204     enum DetectorMode
00205     {
00206         SEM_DETECTOR_MODE_ALL           = om__detector__SEM_DETECTOR_MODE_ALL,          
00207         SEM_DETECTOR_MODE_NORTHSOUTH    = om__detector__SEM_DETECTOR_MODE_NORTHSOUTH,   
00208         SEM_DETECTOR_MODE_EASTWEST      = om__detector__SEM_DETECTOR_MODE_EASTWEST,     
00209         SEM_DETECTOR_MODE_A             = om__detector__SEM_DETECTOR_MODE_A,            
00210         SEM_DETECTOR_MODE_B             = om__detector__SEM_DETECTOR_MODE_B,            
00211         SEM_DETECTOR_MODE_C             = om__detector__SEM_DETECTOR_MODE_C,            
00212         SEM_DETECTOR_MODE_D             = om__detector__SEM_DETECTOR_MODE_D             
00213     };
00215     const char* string(DetectorMode m);
00216     
00219     struct ScanParams
00220     {
00221         ScanParams();
00222         ScanParams(const Size& size, int nFrames = 1, DetectorMode detector = SEM_DETECTOR_MODE_ALL, bool hdr = false, double scale = 1, const Position& center = CenterPosition);
00223         ScanParams(int width, int height, int nFrames = 1, DetectorMode detector = SEM_DETECTOR_MODE_ALL, bool hdr = false, double scale = 1, const Position& center = CenterPosition);
00225         Size size;
00227         int nFrames;
00229         DetectorMode detector;
00231         bool hdr;
00233         Position center;
00235         double scale;
00236     };
00237     
00239     enum ScanMode
00240     {
00241         SEM_SCAN_MODE_BLANK     = om__scanMode__SEM_SCAN_MODE_BLANK,    
00242         SEM_SCAN_MODE_IMAGING   = om__scanMode__SEM_SCAN_MODE_IMAGING,  
00243         SEM_SCAN_MODE_SPOT      = om__scanMode__SEM_SCAN_MODE_SPOT      
00244     };
00246     const char* string(ScanMode m);
00247     
00249     struct SEMViewingMode
00250     {
00251         SEMViewingMode(ScanMode scanMode, const ScanParams& scanParams);
00252         
00253         ScanMode scanMode;
00254         ScanParams scanParams;
00255     };
00256     
00258     enum Encoding
00259     {
00260         Unsigned8,  
00261         Unsigned16, 
00262         RGB         
00263     };
00264     
00266     struct Image
00267     {
00268         Image();
00269         Image(int width, int height, Encoding encoding, int stride_x, int stride_y, void* data);
00270         ~Image();
00271         
00273         int width;
00275         int height;
00277         Encoding encoding;
00279         int stride_x;
00281         int stride_y;
00283         void* data;
00284         
00285         typedef boost::shared_ptr<Image> ptr;
00286         
00287     private:
00288         Image(const Image&);
00289         Image& operator=(Image&);
00290     };
00291     
00292     enum AcquisitionType
00293     {
00294         ACQUISITION_NAVCAM  = om__acquisitionType__OM_ACQ_TYPE_NAVCAM,  
00295         ACQUISITION_SEM     = om__acquisitionType__OM_ACQ_TYPE_SEM      
00296     };
00297 
00299     struct AcquisitionState
00300     {
00301         AcquisitionState();
00302         AcquisitionState(om__acquisitionState* acqState);
00303         
00304         AcquisitionType         acquisitionType;
00305         std::string             softwareVersion;
00306         std::string             instrumentID;
00307         int                     dataBarHeight;      
00308         double                  pixelWidth;         
00309         double                  pixelHeight;        
00310         time_t                  time;
00311         Position                sourceTilt;
00312         Position                stigmator;
00313         int                     integrations;
00314         Position                position;           
00315         double                  rotation;           
00316         double                  dwellTime;          
00317         double                  workingDistance;    
00318         double                  sourceTime;         
00319         double                  highVoltage;        
00320         double                  emissionCurrent;    
00321         double                  filamentPower;      
00322         DetectorSegment         segment[4];         
00323         double                  appliedContrast;
00324         double                  appliedBrightness;
00325         double                  appliedGamma;
00326     };
00327     
00330     struct Acquisition
00331     {
00332         Acquisition();
00333         Acquisition(Image::ptr image, const AcquisitionState& metadata);
00334         
00336         Image::ptr image;
00338         AcquisitionState metadata;
00339     };
00340 }
00341 
00342 #endif
Phenom-World BV, Dillenburgstraat 9E, 5652 AM Eindhoven, The Netherlands, www.phenom-world.com

©2012. All rights reserved. Reproduction, copying, usage, modifying, hiring, renting, public performance, transmission and/or broadcasting in whole or in part is prohibited without the written consent of Phenom-World BV. Find your Phenom-World contact information at www.phenom-world.com.