GenApiC.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. /*-----------------------------------------------------------------------------
  2. Basler pylon C SDK
  3. Copyright (c) 2009-2021 Basler AG
  4. http://www.baslerweb.com
  5. Author: AH, TK
  6. -----------------------------------------------------------------------------*/
  7. /**
  8. \file
  9. \brief GenApi C bindings.
  10. */
  11. #ifndef GENAPI_GENAPIC_H_
  12. #define GENAPI_GENAPIC_H_
  13. #include <stddef.h>
  14. #include <genapic/GenApiCDefines.h>
  15. #pragma pack(push, GENAPIC_PACKING)
  16. #include <genapic/GenApiCTypes.h>
  17. #include <genapic/GenApiCEnums.h>
  18. #include <genapic/GenApiCError.h>
  19. #define GENAPIC_DECLARE_HANDLE(name) struct name##_; typedef struct name##_ *name
  20. /**
  21. * \addtogroup genapi GenApi Interface
  22. * @{
  23. */
  24. /** \brief A value for invalid / uninitialized handles. */
  25. #ifdef __cplusplus
  26. # define GENAPIC_INVALID_HANDLE ( 0 ) /* C++ won't allow to assign a void* to a typed pointer (HANDLE) */
  27. #else
  28. # define GENAPIC_INVALID_HANDLE ( (void*)0 )
  29. #endif
  30. GENAPIC_DECLARE_HANDLE( NODE_HANDLE ); /**< \brief A handle for a node object. */
  31. GENAPIC_DECLARE_HANDLE( NODEMAP_HANDLE ); /**< \brief A handle for a node map object. */
  32. GENAPIC_DECLARE_HANDLE( GENAPI_FILE_HANDLE ); /**< \brief A handle for a GenApi file object. */
  33. GENAPIC_DECLARE_HANDLE( NODE_CALLBACK_HANDLE ); /**< \brief A handle for a node callback object. */
  34. /**
  35. * @}
  36. */
  37. #ifdef __cplusplus
  38. // avoid namespace ambiguities between std::_Bool (from yvals.h) and ::_Bool (from GenApiCTypes.h)
  39. #ifdef _MSC_VER
  40. # define _Bool ::_Bool
  41. # define PYLONC_BOOL_DEFINED
  42. #endif
  43. extern "C" {
  44. #endif /* __cplusplus */
  45. typedef void GENAPIC_CC NodeCallbackFunction_t( NODE_HANDLE h );
  46. /*
  47. * ----------------------------------------------------------------------------
  48. * Error handling
  49. * ----------------------------------------------------------------------------
  50. */
  51. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiGetLastErrorMessage( char* pBuf, size_t* pBufLen );
  52. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiGetLastErrorDetail( char* pBuf, size_t* pBufLen );
  53. /*
  54. * ----------------------------------------------------------------------------
  55. * Nodemap
  56. * ----------------------------------------------------------------------------
  57. */
  58. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeMapGetNode( NODEMAP_HANDLE hMap, const char* pName, NODE_HANDLE* phNode );
  59. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeMapGetNumNodes( NODEMAP_HANDLE hMap, size_t* pValue );
  60. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeMapGetNodeByIndex( NODEMAP_HANDLE hMap, size_t index, NODE_HANDLE* phNode );
  61. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeMapPoll( NODEMAP_HANDLE hMap, int64_t timestamp );
  62. /*
  63. * ----------------------------------------------------------------------------
  64. * INode Nodes
  65. * ----------------------------------------------------------------------------
  66. */
  67. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeGetAccessMode( NODE_HANDLE hNode, EGenApiAccessMode* pAccessMode );
  68. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeGetName( NODE_HANDLE hNode, char* pBuf, size_t* pBufLen );
  69. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeGetNameSpace( NODE_HANDLE hNode, EGenApiNameSpace* pNamespace );
  70. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeGetVisibility( NODE_HANDLE hNode, EGenApiVisibility* pVisibility );
  71. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeInvalidateNode( NODE_HANDLE hNode );
  72. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeGetCachingMode( NODE_HANDLE hNode, EGenApiCachingMode* pCachingMode );
  73. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeGetToolTip( NODE_HANDLE hNode, char* pBuf, size_t* pBufLen );
  74. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeGetDescription( NODE_HANDLE hNode, char* pBuf, size_t* pBufLen );
  75. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeGetDisplayName( NODE_HANDLE hNode, char* pBuf, size_t* pBufLen );
  76. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeGetType( NODE_HANDLE hNode, EGenApiNodeType* pType );
  77. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeGetPollingTime( NODE_HANDLE hNode, int64_t* pPollingTime );
  78. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeRegisterCallback( NODE_HANDLE hNode, NodeCallbackFunction_t* pCbFunction, NODE_CALLBACK_HANDLE* phCb );
  79. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeDeregisterCallback( NODE_HANDLE hNode, NODE_CALLBACK_HANDLE hCb );
  80. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeImposeAccessMode( NODE_HANDLE hNode, EGenApiAccessMode imposedAccessMode );
  81. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeImposeVisibility( NODE_HANDLE hNode, EGenApiVisibility imposedVisibility );
  82. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeIsImplemented( NODE_HANDLE hNode, _Bool* pResult );
  83. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeIsReadable( NODE_HANDLE hNode, _Bool* pResult );
  84. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeIsWritable( NODE_HANDLE hNode, _Bool* pResult );
  85. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeIsAvailable( NODE_HANDLE hNode, _Bool* pResult );
  86. /*
  87. * ----------------------------------------------------------------------------
  88. * IValue Nodes
  89. * ----------------------------------------------------------------------------
  90. */
  91. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeToString( NODE_HANDLE hNode, char* pBuf, size_t* pBufLen );
  92. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeToStringEx( NODE_HANDLE hNode, _Bool verify, char* pBuf, size_t* pBufLen );
  93. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeFromStringEx( NODE_HANDLE hNode, _Bool verify, const char* pString );
  94. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeFromString( NODE_HANDLE hNode, const char* pString );
  95. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiNodeGetAlias( NODE_HANDLE hNode, NODE_HANDLE* phNode );
  96. /*
  97. * ----------------------------------------------------------------------------
  98. * IInteger Nodes
  99. * ----------------------------------------------------------------------------
  100. */
  101. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiIntegerSetValue( NODE_HANDLE hNode, int64_t value );
  102. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiIntegerSetValueEx( NODE_HANDLE hNode, _Bool verify, int64_t value );
  103. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiIntegerGetValue( NODE_HANDLE hNode, int64_t* pValue );
  104. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiIntegerGetValueEx( NODE_HANDLE hNode, _Bool verify, int64_t* pValue );
  105. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiIntegerGetMin( NODE_HANDLE hNode, int64_t* pValue );
  106. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiIntegerGetMax( NODE_HANDLE hNode, int64_t* pValue );
  107. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiIntegerGetInc( NODE_HANDLE hNode, int64_t* pValue );
  108. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiIntegerGetRepresentation( NODE_HANDLE hNode, EGenApiRepresentation* pValue );
  109. /*
  110. * ----------------------------------------------------------------------------
  111. * IBoolean Nodes
  112. * ----------------------------------------------------------------------------
  113. */
  114. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiBooleanSetValue( NODE_HANDLE hNode, _Bool value );
  115. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiBooleanGetValue( NODE_HANDLE hNode, _Bool* pValue );
  116. /*
  117. * ----------------------------------------------------------------------------
  118. * IFloat Nodes
  119. * ----------------------------------------------------------------------------
  120. */
  121. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFloatSetValue( NODE_HANDLE hNode, double value );
  122. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFloatSetValueEx( NODE_HANDLE hNode, _Bool verify, double value );
  123. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFloatGetValue( NODE_HANDLE hNode, double* pValue );
  124. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFloatGetValueEx( NODE_HANDLE hNode, _Bool verify, double* pValue );
  125. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFloatGetMin( NODE_HANDLE hNode, double* pValue );
  126. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFloatGetMax( NODE_HANDLE hNode, double* pValue );
  127. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFloatGetRepresentation( NODE_HANDLE hNode, EGenApiRepresentation* pValue );
  128. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFloatGetUnit( NODE_HANDLE hNode, char* pBuf, size_t* pBufLen );
  129. /*
  130. * ----------------------------------------------------------------------------
  131. * ICommand Nodes
  132. * ----------------------------------------------------------------------------
  133. */
  134. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiCommandExecute( NODE_HANDLE hNode );
  135. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiCommandIsDone( NODE_HANDLE hNode, _Bool* pValue );
  136. /*
  137. * ----------------------------------------------------------------------------
  138. * IEnumeration Nodes
  139. * ----------------------------------------------------------------------------
  140. */
  141. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiEnumerationGetNumEntries( NODE_HANDLE hNode, size_t* pValue );
  142. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiEnumerationGetEntryByIndex( NODE_HANDLE hNode, size_t index, NODE_HANDLE* pEntry );
  143. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiEnumerationGetEntryByName( NODE_HANDLE hNode, const char* pName, NODE_HANDLE* pEntry );
  144. /*
  145. * ----------------------------------------------------------------------------
  146. * IEnumEntry Nodes
  147. * ----------------------------------------------------------------------------
  148. */
  149. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiEnumerationEntryGetValue( NODE_HANDLE hNode, int* pValue );
  150. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiEnumerationEntryGetSymbolic( NODE_HANDLE hNode, char* pBuf, size_t* pBufLen );
  151. /*
  152. * ----------------------------------------------------------------------------
  153. * ISelector Nodes
  154. * ----------------------------------------------------------------------------
  155. */
  156. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiSelectorGetNumSelectingFeatures( NODE_HANDLE hNode, size_t* pValue );
  157. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiSelectorGetSelectingFeatureByIndex( NODE_HANDLE hNode, size_t index, NODE_HANDLE* phNode );
  158. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiSelectorGetNumSelectedFeatures( NODE_HANDLE hNode, size_t* pValue );
  159. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiSelectorGetSelectedFeatureByIndex( NODE_HANDLE hNode, size_t index, NODE_HANDLE* phNode );
  160. /*
  161. * ----------------------------------------------------------------------------
  162. * IRegister Nodes
  163. * ----------------------------------------------------------------------------
  164. */
  165. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiRegisterGetValue( NODE_HANDLE hNode, void* pBuffer, size_t* pLength );
  166. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiRegisterSetValue( NODE_HANDLE hNode, const void* pBuffer, size_t length );
  167. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiRegisterGetLength( NODE_HANDLE hNode, size_t* pLength );
  168. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiRegisterGetAddress( NODE_HANDLE hNode, int64_t* pAddress );
  169. /*
  170. * ----------------------------------------------------------------------------
  171. * Category Nodes
  172. * ----------------------------------------------------------------------------
  173. */
  174. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiCategoryGetNumFeatures( NODE_HANDLE hNode, size_t* pValue );
  175. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiCategoryGetFeatureByIndex( NODE_HANDLE hNode, size_t index, NODE_HANDLE* phEntry );
  176. /*
  177. * ----------------------------------------------------------------------------
  178. * IPort Nodes
  179. * ----------------------------------------------------------------------------
  180. */
  181. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiPortRead( NODE_HANDLE hNode, void* pBuffer, int64_t Address, size_t Length );
  182. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiPortWrite( NODE_HANDLE hNode, const void* pBuffer, int64_t Address, size_t Length );
  183. /*
  184. * ----------------------------------------------------------------------------
  185. * DeviceFileStream
  186. * ----------------------------------------------------------------------------
  187. */
  188. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFilesAreSupported( NODEMAP_HANDLE hMap, _Bool* pResult );
  189. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFileExists( NODEMAP_HANDLE hMap, const char* pFileName, _Bool* pResult );
  190. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFileOpen( NODEMAP_HANDLE hMap, const char* pFileName, EGenApiFileAccessMode accessMode, GENAPI_FILE_HANDLE* phFile );
  191. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFileRead( GENAPI_FILE_HANDLE hFile, void* pBuffer, size_t* pLength );
  192. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFileWrite( GENAPI_FILE_HANDLE hFile, const void* pBuffer, size_t length );
  193. GENAPIC_API GENAPIC_RESULT GENAPIC_CC GenApiFileClose( GENAPI_FILE_HANDLE hFile );
  194. #ifdef __cplusplus
  195. } /* extern "C" */
  196. #ifdef PYLONC_BOOL_DEFINED
  197. # undef _Bool
  198. # undef PYLONC_BOOL_DEFINED
  199. #endif
  200. #endif /* __cplusplus */
  201. #include <genapic/GenApiC32BitMethods.h>
  202. #pragma pack(pop)
  203. #endif