ChunkAdapterU3V.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //-----------------------------------------------------------------------------
  2. // (c) 2013 by Groget
  3. // Project: GenApi
  4. // Author: Jan Becvar
  5. // $Header$
  6. //
  7. // License: This file is published under the license of the EMVA GenICam Standard Group.
  8. // A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'.
  9. // If for some reason you are missing this file please contact the EMVA or visit the website
  10. // (http://www.genicam.org) for a full copy.
  11. //
  12. // THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
  13. // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  14. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  15. // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP
  16. // OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  17. // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  18. // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  19. // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  20. // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  21. // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  22. // POSSIBILITY OF SUCH DAMAGE.
  23. //-----------------------------------------------------------------------------
  24. /**
  25. \file
  26. \brief Declaration of the CChunkAdapterU3V class.
  27. */
  28. #ifndef GENAPI_CHUNKADAPTERU3V_H
  29. #define GENAPI_CHUNKADAPTERU3V_H
  30. #include <GenApi/ChunkAdapter.h>
  31. namespace GENAPI_NAMESPACE
  32. {
  33. /* ------------------------------------------- */
  34. // Declartion of USB3 Vision Chunk trailer
  35. // make sure everything is properly packed
  36. # pragma pack(push, 1)
  37. //! header of a GVCP request packet
  38. typedef struct U3V_CHUNK_TRAILER
  39. {
  40. uint32_t ChunkID;
  41. uint32_t ChunkLength;
  42. } U3V_CHUNK_TRAILER;
  43. // restore the previous packing
  44. # pragma pack(pop)
  45. /* ------------------------------------------- */
  46. //! Connects a chunked U3V buffer to a node map
  47. class GENAPI_DECL CChunkAdapterU3V : public CChunkAdapter
  48. {
  49. public:
  50. //! Constructor
  51. CChunkAdapterU3V(INodeMap* pNodeMap = NULL, int64_t MaxChunkCacheSize = -1);
  52. //! Destructor
  53. virtual ~CChunkAdapterU3V();
  54. //! Checks if a buffer contains chunks in a known format
  55. virtual bool CheckBufferLayout(uint8_t *pBuffer, int64_t BufferLength);
  56. //! Attaches a buffer to the matching ChunkPort
  57. virtual void AttachBuffer(uint8_t *pBuffer, int64_t BufferLength, AttachStatistics_t *pAttachStatistics = NULL);
  58. };
  59. }
  60. #endif // GENAPI_CHUNKADAPTERU3V_H