00001 00005 /* 00006 © Copyright 2005-2006, 00007 National Instruments Corporation. 00008 All rights reserved. 00009 00010 File: iNXT.h 00011 Originated: 12 May 2005 00012 */ 00013 00014 #ifndef ___fantom_iNXT_h___ 00015 #define ___fantom_iNXT_h___ 00016 00017 00018 // includes... 00019 00020 #ifndef ___fantom_platform_h___ 00021 #include "platform.h" 00022 #endif 00023 00024 #ifndef ___fantom_iFile_h___ 00025 #include "iFile.h" 00026 #endif 00027 00028 #ifndef ___fantom_iFileIterator_h___ 00029 #include "iFileIterator.h" 00030 #endif 00031 00032 #ifndef ___fantom_iModule_h___ 00033 #include "iModule.h" 00034 #endif 00035 00036 #ifndef ___fantom_iModuleIterator_h___ 00037 #include "iModuleIterator.h" 00038 #endif 00039 00040 #ifndef ___fantom_iNXTIterator_h___ 00041 #include "iNXTIterator.h" 00042 #endif 00043 00044 #ifndef ___fantom_tStatus_h___ 00045 #include "tStatus.h" 00046 #endif 00047 00048 // defines... 00049 00050 00051 namespace nFANTOM100 00052 { 00053 // forward declarations... 00054 00055 // typedefs... 00056 00057 // classes... 00058 00063 class iNXT 00064 { 00065 // methods 00066 protected: 00067 00069 virtual ~iNXT() = 0; 00070 00071 public: 00072 00074 enum tBuffer 00075 { 00076 // The buffer associated with the standard port. 00077 kBufferStandard, 00078 00079 // The buffer associated with the high-speed port. 00080 kBufferHighSpeed 00081 }; 00082 00084 00096 virtual iFile* createFile( ViConstString fileName, tStatus& status ) = 0; 00097 00098 00100 00107 virtual void destroyFile( iFile* filePtr ) = 0; 00108 00109 00111 00128 virtual iFileIterator* createFileIterator( ViConstString fileNamePattern, 00129 tStatus& status ) = 0; 00130 00131 00133 00136 virtual void destroyFileIterator( iFileIterator* fileIteratorPtr ) = 0; 00137 00139 00153 virtual iModule* createModule( ViConstString moduleName, ViUInt32 moduleID, 00154 ViUInt32 moduleSizeInBytes, ViUInt32 ioMapSizeInBytes, tStatus& status ) = 0; 00155 00157 00164 virtual void destroyModule( iModule* modulePtr ) = 0; 00165 00166 00168 00181 virtual iModuleIterator* createModuleIterator( ViConstString moduleNamePattern, 00182 tStatus& status ) = 0; 00183 00184 00186 00189 virtual void destroyModuleIterator( iModuleIterator* moduleIteratorPtr ) = 0; 00190 00192 00209 virtual void getFirmwareVersion( ViUInt8& protocolVersionMajorRef, 00210 ViUInt8& protocolVersionMinorRef, ViUInt8& firmwareVersionMajorRef, 00211 ViUInt8& firmwareVersionMinorRef, tStatus& status ) = 0; 00212 00213 00215 00240 virtual ViUInt32 sendDirectCommand( ViBoolean requireResponse, const ViByte commandBufferPtr[], 00241 ViUInt32 commandBufferSizeInBytes, ViPBuf responseBufferPtr, 00242 ViUInt32 responseBufferSizeInBytes, tStatus& status ) = 0; 00243 00245 00252 virtual void downloadFirmware( const ViByte firmwareBufferPtr[], 00253 ViUInt32 firmwareBufferSizeInBytes, tStatus& status ) = 0; 00254 00255 00257 00269 virtual ViUInt32 write( const ViByte bufferPtr[], ViUInt32 numberOfBytes, 00270 tStatus& status ) = 0; 00271 00273 00284 virtual ViUInt32 read ( ViPBuf bufferPtr, ViUInt32 numberOfBytes, tStatus& status ) = 0; 00285 00287 00293 virtual void bootIntoFirmwareDownloadMode( tStatus& status ) = 0; 00294 00296 00304 virtual void setName( ViConstString newName, tStatus& status ) = 0; 00305 00307 00324 virtual void getDeviceInfo( ViChar name[], ViByte bluetoothAddress[], 00325 ViUInt8 signalStrength[], ViUInt32 &availableFlash, tStatus& status ) = 0; 00326 00328 00334 virtual void eraseUserFlash( tStatus& status ) = 0; 00335 00337 /* 00338 The data buffer is not polled if the specified status is fatal. 00339 00340 \param bufferSelector The buffer from which to read. 00341 \param status Status chaining object. 00342 \return The number of bytes in the buffer available to be read. 00343 */ 00344 virtual ViUInt32 pollAvailableLength( tBuffer bufferSelector, tStatus& status ) = 0; 00345 00347 00356 virtual ViUInt32 readBufferData( ViPBuf dataBuffer, tBuffer bufferSelector, 00357 ViUInt32 numberOfBytesToRead, tStatus& status ) = 0; 00358 00360 /* 00361 An example resource string could look like the one of the following: 00362 BTH::LEGOBrick::00:16:53:04:05:06::5 00363 BTH::LEGOBrick::00:16:53:04:05:06::1 00364 BTH::Brick2::00:16:53:44:FF:66 00365 USB0::0x0694::0x0002::0016535127BA::RAW 00366 00367 \param resourceString Populated with the resource string. The resource string must 00368 have a capacity of 256 bytes. 00369 \param status Status chaining object. 00370 */ 00371 virtual void getResourceString( ViChar resourceString[], tStatus& status ) = 0; 00372 00374 /* 00375 \param status Status chaining object. 00376 */ 00377 virtual void bluetoothFactoryReset( tStatus& status ) = 0; 00378 00380 00393 nFANTOM100_kExport static iNXT* _VI_FUNCC createNXT( ViConstString resourceString, 00394 tStatus& status, ViBoolean checkFirmwareVersion = true ); 00395 00397 00400 nFANTOM100_kExport static void _VI_FUNCC destroyNXT( iNXT* nxtPtr ); 00401 00403 00417 nFANTOM100_kExport static iNXTIterator* _VI_FUNCC createNXTIterator( 00418 ViBoolean searchBluetooth, ViUInt32 bluetoothSearchTimeoutInSeconds, 00419 tStatus& status ); 00420 00422 /* 00423 \param iterPtr A pointer to the iNXTIterator object to destroy. 00424 */ 00425 nFANTOM100_kExport static void _VI_FUNCC destroyNXTIterator( iNXTIterator* iterPtr ); 00426 00428 00444 nFANTOM100_kExport static void _VI_FUNCC pairBluetooth( ViConstString resourceName, 00445 ViConstString passkey, ViChar pairedResourceName[], tStatus& status ); 00446 00448 00457 nFANTOM100_kExport static void _VI_FUNCC unpairBluetooth( ViConstString resourceName, 00458 tStatus& status ); 00459 00461 00470 nFANTOM100_kExport static ViBoolean _VI_FUNCC isPaired( ViConstString resourceName, 00471 tStatus& status ); 00472 00474 00481 nFANTOM100_kExport static void findDeviceInFirmwareDownloadMode( ViChar resourceName[], 00482 tStatus& status ); 00483 00484 00485 private: 00486 00487 }; 00488 00489 // constants... 00490 00491 } // namespace nFANTOM100 00492 00493 00494 // declarations for globally-scoped globals... 00495 00496 // typedefs... 00497 typedef ViObject nFANTOM100_iNXT; 00498 00499 // prototypes... 00500 extern "C" 00501 { 00502 00503 nFANTOM100_kExport nFANTOM100_iNXTIterator _VI_FUNCC nFANTOM100_createNXTIterator( 00504 ViBoolean searchBluetooth, 00505 ViUInt32 bluetoothSearchTimeoutInSeconds, 00506 ViStatus* status ); 00507 00508 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_destroyNXTIterator( 00509 nFANTOM100_iNXTIterator iterPtr, 00510 ViStatus* status ); 00511 00512 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_pairBluetooth( 00513 ViConstString resourceName, 00514 ViConstString passkey, 00515 ViChar pairedResourceName[], 00516 ViStatus* status ); 00517 00518 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_unpairBluetooth( 00519 ViConstString resourceName, 00520 ViStatus* status ); 00521 00522 nFANTOM100_kExport ViBoolean _VI_FUNCC nFANTOM100_isPaired( 00523 ViConstString resourceName, 00524 ViStatus* status ); 00525 00526 nFANTOM100_kExport nFANTOM100_iNXT _VI_FUNCC nFANTOM100_createNXT( 00527 ViConstString resourceString, 00528 ViStatus* status, 00529 ViBoolean checkFirmwareVersion ); 00530 00531 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_destroyNXT( 00532 nFANTOM100_iNXT nxtPtr, 00533 ViStatus* status ); 00534 00535 nFANTOM100_kExport nFANTOM100_iFile _VI_FUNCC nFANTOM100_iNXT_createFile( 00536 nFANTOM100_iNXT nxtPtr, 00537 ViConstString fileName, 00538 ViStatus* status ); 00539 00540 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_destroyFile( 00541 nFANTOM100_iNXT nxtPtr, 00542 nFANTOM100_iFile filePtr, 00543 ViStatus* status ); 00544 00545 nFANTOM100_kExport nFANTOM100_iFileIterator _VI_FUNCC nFANTOM100_iNXT_createFileIterator( 00546 nFANTOM100_iNXT nxtPtr, 00547 ViConstString fileNamePattern, 00548 ViStatus* status ); 00549 00550 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_destroyFileIterator( 00551 nFANTOM100_iNXT nxtPtr, 00552 nFANTOM100_iFileIterator fileIteratorPtr, 00553 ViStatus* status ); 00554 00555 nFANTOM100_kExport nFANTOM100_iModule _VI_FUNCC nFANTOM100_iNXT_createModule( 00556 nFANTOM100_iNXT nxtPtr, 00557 ViConstString moduleName, 00558 ViUInt32 moduleID, 00559 ViUInt32 moduleSize, 00560 ViUInt32 ioMapSizeInBytes, 00561 ViStatus* status ); 00562 00563 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_destroyModule( 00564 nFANTOM100_iNXT nxtPtr, 00565 nFANTOM100_iModule modulePtr, 00566 ViStatus* status ); 00567 00568 nFANTOM100_kExport nFANTOM100_iModuleIterator _VI_FUNCC nFANTOM100_iNXT_createModuleIterator( 00569 nFANTOM100_iNXT nxtPtr, 00570 ViConstString moduleNamePattern, 00571 ViStatus* status ); 00572 00573 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_destroyModuleIterator( 00574 nFANTOM100_iNXT nxtPtr, 00575 nFANTOM100_iModuleIterator moduleIteratorPtr, 00576 ViStatus* status ); 00577 00578 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_getFirmwareVersion( 00579 nFANTOM100_iNXT nxtPtr, 00580 ViUInt8* protocolVersionMajorPtr, 00581 ViUInt8* protocolVersionMinorPtr, 00582 ViUInt8* firmwareVersionMajorPtr, 00583 ViUInt8* firmwareVersionMinorPtr, 00584 ViStatus* status ); 00585 00586 nFANTOM100_kExport ViUInt32 _VI_FUNCC nFANTOM100_iNXT_sendDirectCommand( 00587 nFANTOM100_iNXT nxtPtr, 00588 ViBoolean requireResponse, 00589 const ViByte commandBufferPtr[], 00590 ViUInt32 commandBufferSizeInBytes, 00591 ViPBuf responseBufferPtr, 00592 ViUInt32 responseBufferSizeInBytes, 00593 ViStatus* status ); 00594 00595 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_findDeviceInFirmwareDownloadMode( 00596 ViChar resourceString[], 00597 ViStatus* status ); 00598 00599 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_downloadFirmware( 00600 nFANTOM100_iNXT nxtPtr, 00601 const ViByte firmwareBufferPtr[], 00602 ViUInt32 firmwareBufferSize, 00603 ViStatus* status ); 00604 00605 nFANTOM100_kExport ViUInt32 _VI_FUNCC nFANTOM100_iNXT_write( 00606 nFANTOM100_iNXT nxtPtr, 00607 const ViByte bufferPtr[], 00608 ViUInt32 numberOfBytes, 00609 ViStatus* status ); 00610 00611 nFANTOM100_kExport ViUInt32 _VI_FUNCC nFANTOM100_iNXT_read( 00612 nFANTOM100_iNXT nxtPtr, 00613 ViPBuf bufferPtr, 00614 ViUInt32 numberOfBytes, 00615 ViStatus* status ); 00616 00617 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_bootIntoFirmwareDownloadMode( 00618 ViConstString resouceName, 00619 ViStatus* status ); 00620 00621 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_setName( 00622 nFANTOM100_iNXT nxtPtr, 00623 ViConstString newName, 00624 ViStatus* status ); 00625 00626 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_getDeviceInfo( 00627 nFANTOM100_iNXT nxtPtr, 00628 ViChar name[], 00629 ViByte bluetoothAddress[], 00630 ViUInt8 signalStrength[], 00631 ViUInt32* availableFlash, 00632 ViStatus* status ); 00633 00634 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_eraseUserFlash( 00635 nFANTOM100_iNXT nxtPtr, 00636 ViStatus* status ); 00637 00638 nFANTOM100_kExport ViUInt32 _VI_FUNCC nFANTOM100_iNXT_pollAvailableLength( 00639 nFANTOM100_iNXT nxtPtr, 00640 ViUInt32 bufferIndex, 00641 ViStatus* status ); 00642 00643 nFANTOM100_kExport ViUInt32 _VI_FUNCC nFANTOM100_iNXT_readBufferData( 00644 nFANTOM100_iNXT nxtPtr, 00645 ViPBuf dataBuffer, 00646 ViUInt32 bufferIndex, 00647 ViUInt32 numberOfBytesToRead, 00648 ViStatus* status ); 00649 00650 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_getResourceString( 00651 nFANTOM100_iNXT nxtPtr, 00652 ViChar resourceString[], 00653 ViStatus* status ); 00654 00655 nFANTOM100_kExport void _VI_FUNCC nFANTOM100_iNXT_bluetoothFactoryReset( 00656 nFANTOM100_iNXT nxtPtr, 00657 ViStatus* status ); 00658 00659 00660 } // extern "C" 00661 00662 00663 // inline functions and function macros... 00664 00665 00666 #endif // ___fantom_iNXT_h___
© Copyright 2005-2006, National Instruments Corporation. All rights reserved.