Main Page   Namespace List   Compound List   File List   Namespace Members   Compound Members  

tStatus.h

Go to the documentation of this file.
00001 
00005 /*
00006    © Copyright 2005-2006,
00007    National Instruments Corporation.
00008    All rights reserved.
00009 
00010    File:        tStatus.h
00011    Originated:  10 March 2005
00012 */
00013 
00014 #ifndef ___fantom_tStatus_h___
00015 #define ___fantom_tStatus_h___
00016 
00017 // includes ...
00018 
00019 #ifndef ___fantom_platform_h___
00020    #include "platform.h"
00021 #endif
00022 
00023 #include <string.h>
00024 
00025 
00026 // defines...
00027 
00028 #define nFANTOM_mLocation __FILE__, __LINE__
00029 
00030 #define nFANTOM_ForceToWarning(s)     (((s) >= 0 ) ? (s) : -(s))
00031 #define nFANTOM_ForceToFatal(s)       (((s) <= 0 ) ? (s) : -(s))
00032 
00036 namespace nFANTOM100
00037 {
00038    // forward declarations...
00039 
00040    // typedefs...
00041 
00042    // classes...
00043    const ViInt32 kStatusOffset = -142000; // 0xFFFDD550
00044    const ViStatus kStatusSuccess = VI_SUCCESS;
00045    
00051    enum tFANTOMStatus
00052    {
00053       kStatusFirst                        = (kStatusOffset + 0),
00054       
00057       kStatusPairingFailed                = (kStatusOffset + -5),    // 0x54B
00058       
00060       kStatusBluetoothSearchFailed        = (kStatusOffset + -6),    // 0x54A
00061       
00063       kStatusSystemLibraryNotFound        = (kStatusOffset + -7),    // 0x549
00064       
00066       kStatusUnpairingFailed              = (kStatusOffset + -8),    // 0x548
00067       
00069       kStatusInvalidFilename              = (kStatusOffset + -9),    // 0x547
00070       
00072       kStatusInvalidIteratorDereference   = (kStatusOffset + -10),   // 0x546
00073       
00075       kStatusLockOperationFailed          = (kStatusOffset + -11),   // 0x545
00076       
00078       kStatusSizeUnknown                  = (kStatusOffset + -12),   // 0x544
00079       
00081       kStatusDuplicateOpen                = (kStatusOffset + -13),   // 0x543
00082       
00085       kStatusEmptyFile                    = (kStatusOffset + -14),   // 0x542
00086       
00088       kStatusFirmwareDownloadFailed       = (kStatusOffset + -15),   // 0x541
00089       
00091       kStatusPortNotFound                 = (kStatusOffset + -16),   // 0x540
00092       
00094       kStatusNoMoreItemsFound             = (kStatusOffset + -17),   // 0x53F
00095       
00097       kStatusTooManyUnconfiguredDevices   = (kStatusOffset + -18),   // 0x53E
00098       
00100       kStatusCommandMismatch              = (kStatusOffset + -19),   // 0x53D
00101       
00103       kStatusIllegalOperation             = (kStatusOffset + -20),   // 0x53C
00104       
00107       kStatusBluetoothCacheUpdateFailed   = (kStatusOffset + -21),   // 0x53B
00108       
00110       kStatusNonNXTDeviceSelected         = (kStatusOffset + -22),   // 0x53A
00111       
00113       kStatusRetryConnection              = (kStatusOffset + -23),   // 0x539
00114       
00116       kStatusPowerCycleNXT                = (kStatusOffset + -24),   // 0x538
00117       
00119       kStatusFeatureNotImplemented        = (kStatusOffset + -99),   // 0x4ED
00120       
00122       kStatusFWIllegalHandle              = (kStatusOffset + -189),  // 0x493
00123       
00125       kStatusFWIllegalFileName            = (kStatusOffset + -190),  // 0x492
00126       
00128       kStatusFWOutOfBounds                = (kStatusOffset + -191),  // 0x491
00129       
00131       kStatusFWModuleNotFound             = (kStatusOffset + -192),  // 0x490
00132       
00134       kStatusFWFileExists                 = (kStatusOffset + -193),  // 0x48F
00135       
00137       kStatusFWFileIsFull                 = (kStatusOffset + -194),  // 0x48E
00138       
00140       kStatusFWAppendNotPossible          = (kStatusOffset + -195),  // 0x48D
00141       
00143       kStatusFWNoWriteBuffers             = (kStatusOffset + -196),  // 0x48C
00144       
00146       kStatusFWFileIsBusy                 = (kStatusOffset + -197),  // 0x48B
00147       
00149       kStatusFWUndefinedError             = (kStatusOffset + -198),  // 0x48A
00150       
00152       kStatusFWNoLinearSpace              = (kStatusOffset + -199),  // 0x489
00153       
00155       kStatusFWHandleAlreadyClosed        = (kStatusOffset + -200),  // 0x488
00156       
00158       kStatusFWFileNotFound               = (kStatusOffset + -201),  // 0x487
00159       
00161       kStatusFWNotLinearFile              = (kStatusOffset + -202),  // 0x486
00162       
00164       kStatusFWEndOfFile                  = (kStatusOffset + -203),  // 0x485
00165       
00167       kStatusFWEndOfFileExpected          = (kStatusOffset + -204),  // 0x484
00168       
00170       kStatusFWNoMoreFiles                = (kStatusOffset + -205),  // 0x483
00171       
00173       kStatusFWNoSpace                    = (kStatusOffset + -206),  // 0x482
00174       
00176       kStatusFWNoMoreHandles              = (kStatusOffset + -207),  // 0x481
00177       
00179       kStatusFWUnknownErrorCode           = (kStatusOffset + -208),  // 0x480
00180       
00181       kStatusLast                         = (kStatusOffset + -999)
00182    };
00183 
00188    class tStatus
00189    {
00190       public:
00191       
00192          // methods
00193 
00195 
00200          inline tStatus( void ) :
00201                _code( VI_SUCCESS ),
00202                _lineNumber( 0 )
00203          {
00204             _fileName[0] = '\0';
00205          }
00206 
00207 
00209 
00214          inline tStatus( const tStatus& status ) :
00215                _code( status._code ),
00216                _lineNumber( status._lineNumber )
00217          {
00218             ::strcpy( _fileName, "" );
00219             ::strncat( _fileName, status._fileName, kMaxFileNameLength - 1 );
00220          }
00221 
00222 
00224 
00233          inline tStatus( ViStatus code, const char* fileName, ViUInt32 lineNumber ) :
00234                _code( code ),
00235                _lineNumber( lineNumber )
00236          {
00237             ::strcpy( _fileName, "" );
00238             ::strncat( _fileName, reinterpret_cast<const char*>( fileName ), kMaxFileNameLength - 1 );
00239          }
00240 
00241 
00243          inline ~tStatus()
00244          {
00245          }
00246 
00247 
00249 
00252          inline ViStatus getCode( void ) const
00253          {
00254             return _code;
00255          }
00256 
00257 
00259 
00262          inline const char* getFileName( void ) const
00263          {
00264             return _fileName;
00265          }
00266 
00267 
00269          //   generated.
00274          inline ViUInt32 getLineNumber( void ) const
00275          {
00276             return _lineNumber;
00277          }
00278 
00279 
00281          //   appropriate.
00293          inline void setCode( ViStatus code, const char* fileName, ViUInt32 lineNumber )
00294          {
00295             if(( isSuccess() && code != VI_SUCCESS ) || ( isNotFatal() && code < VI_SUCCESS ))
00296             {
00297                _code = code;
00298                _lineNumber = lineNumber;
00299                ::strcpy( _fileName, "" );
00300                ::strncat( _fileName, fileName, kMaxFileNameLength - 1 );
00301             }
00302          }
00303 
00304 
00306 
00315          inline void assign( const tStatus& status )
00316          {
00317             setCode( status.getCode(), status.getFileName(), status.getLineNumber());
00318          }
00319 
00320 
00322 
00325          inline void clear( void )
00326          {
00327             _code = VI_SUCCESS;
00328             _lineNumber = 0;
00329             _fileName[0] = '\0';
00330          }
00331 
00332 
00334 
00340          inline bool isFatal( void ) const
00341          {
00342             return ( _code < VI_SUCCESS );
00343          }
00344 
00346 
00352          inline bool isNotFatal( void ) const
00353          {
00354             return !isFatal();
00355          }
00356 
00357 
00359 
00365          inline bool isWarning( void ) const
00366          {
00367             return ( _code > VI_SUCCESS );
00368          }
00369 
00370 
00372 
00378          inline bool isSuccess( void ) const
00379          {
00380             return ( _code == VI_SUCCESS );
00381          }
00382 
00383       private:
00384 
00385          // declared private to prevent assignment
00386          tStatus& operator=(const tStatus& rhs);
00387 
00388          enum
00389          {
00390             kMaxFileNameLength = 101
00391          };
00392 
00393          ViStatus _code;
00394          ViChar   _fileName[ kMaxFileNameLength ];
00395          ViUInt32 _lineNumber;
00396    };
00397 
00398 
00399    // declarations for globally-scoped globals...
00400    inline ViStatus convertStatus( ViUInt8 firmwareStatus )
00401    {
00402       ViStatus status;
00403       switch (firmwareStatus)
00404       {
00405       // each of these cases corresponds to a unique status code returned by the firmware
00406       case 0x00 : status = kStatusSuccess;
00407          break;
00408       case 0x81 : status = kStatusFWNoMoreHandles; // No more available handles
00409          break;
00410       case 0x82 : status = kStatusFWNoSpace;   // No space
00411          break;
00412       case 0x83 : status = kStatusFWNoMoreFiles; // No more files
00413          break;
00414       case 0x84 : status = kStatusFWEndOfFileExpected; // End of file expected
00415          break;
00416       case 0x85 : status = kStatusFWEndOfFile; // End of file reached
00417          break;
00418       case 0x86 : status = kStatusFWNotLinearFile; // Not a linear file
00419          break;
00420       case 0x87 : status = kStatusFWFileNotFound; // File not found
00421          break;
00422       case 0x88 : status = kStatusFWHandleAlreadyClosed; // Handle is already closed
00423          break;
00424       case 0x89 : status = kStatusFWNoLinearSpace; // No linear space available
00425          break;
00426       case 0x8A : status = kStatusFWUndefinedError; // Undefined error
00427          break;
00428       case 0x8B : status = kStatusFWFileIsBusy; // File is busy
00429          break;
00430       case 0x8C : status = kStatusFWNoWriteBuffers; // No write buffers available
00431          break;
00432       case 0x8D : status = kStatusFWAppendNotPossible; // Append not possible
00433          break;
00434       case 0x8E : status = kStatusFWFileIsFull; // File is full
00435          break;
00436       case 0x8F : status = kStatusFWFileExists; // File already exists
00437          break;
00438       case 0x90 : status = kStatusFWModuleNotFound; // Module not found
00439          break;
00440       case 0x91 : status = kStatusFWOutOfBounds; // Out of module I/O map boundary
00441          break;
00442       case 0x92 : status = kStatusFWIllegalFileName; // Illegal file name
00443          break;
00444       case 0x93 : status = kStatusFWIllegalHandle; // Illegal handle
00445          break;
00446       default :
00447          status = kStatusFWUnknownErrorCode;
00448       }
00449       return status;
00450    }
00451 
00452    // prototypes...
00453 
00454 } // namespace nFANTOM100
00455 
00456 // inline functions and function macros...
00457 
00458 #endif // ___fantom_tStatus_h___

© Copyright 2005-2006, National Instruments Corporation. All rights reserved.