SapRTPro.h 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. #ifndef _SAPRTPRO_H_
  2. #define _SAPRTPRO_H_
  3. // SapRTProXferNode.h : header file
  4. //
  5. #include "SapClassBasicDef.h"
  6. //labels assigned to type of rtpro device.
  7. #define BASE_RTPRO_LABEL "Base RtPro" // base onboard RtPro device
  8. #define EXPANSION_RTPRO_LABEL "Expansion RtPro" // expansion rtpro device
  9. #define CPU_RTPRO_LABEL "Cpu RtPro" // cpu based rtpro device
  10. #define SAPRTPRO_MAX_NAME_SIZE 128
  11. typedef CORPIXPRO_REG_SET SAPRTPRO_REG_SET, *PSAPRTPRO_REG_SET;
  12. //obsolete SapRTPro class is defined as SapRTProXferNode
  13. #define SapRTPro SapRTProXferNode
  14. //
  15. // SapCommCallbackInfo class declaration
  16. //
  17. class SAPCLASSBASIC_CLASS SapRTProMsgCallbackInfo
  18. {
  19. public:
  20. SapRTProMsgCallbackInfo(int command, void *inData= NULL, int inDataSize= 0, void *outData= NULL, int outDataSize= 0, void *context= NULL)
  21. {
  22. m_command = command;
  23. m_inData = inData;
  24. m_inDataSize = inDataSize;
  25. m_outData = outData;
  26. m_outDataSize = outDataSize;
  27. m_context = context;
  28. }
  29. virtual ~SapRTProMsgCallbackInfo() {}
  30. int GetCommand() const { return m_command; }
  31. void * GetInData() const { return m_inData; }
  32. int GetInDataSize() const { return m_inDataSize; }
  33. void * GetOutData() const { return m_outData; }
  34. int GetOutDataSize() const { return m_outDataSize; }
  35. void * GetContext() const { return m_context; }
  36. protected:
  37. int m_command;
  38. void * m_inData;
  39. int m_inDataSize;
  40. void * m_outData;
  41. int m_outDataSize;
  42. void * m_context;
  43. };
  44. class SAPCLASSBASIC_CLASS SapRTProEventCallbackInfo
  45. {
  46. public:
  47. SapRTProEventCallbackInfo( void *context, COREVENTINFO eventInfo);
  48. ~SapRTProEventCallbackInfo();
  49. // Attributes
  50. void *GetContext() const { return m_Context; }
  51. COREVENTINFO GetEventInfo() const { return m_EventInfo; } // Direct Access (internal)
  52. // Common Parameters
  53. BOOL GetEventCount(int *eventCount);
  54. BOOL GetEventIndex(int *eventIndex);
  55. BOOL GetEventType( int *eventType);
  56. BOOL GetHostTimeStamp(UINT64 *hostTimeStamp);
  57. BOOL GetAuxiliaryTimeStamp(UINT64 *auxTimeStamp);
  58. // Custom Parameters
  59. BOOL GetCustomData(void **customData);
  60. BOOL GetCustomSize(int *customSize);
  61. // Unnamed Parameters
  62. BOOL GetGenericParam0(int *paramValue);
  63. BOOL GetGenericParam1(int *paramValue);
  64. BOOL GetGenericParam2(int *paramValue);
  65. BOOL GetGenericParam3(int *paramValue);
  66. // Event-specific Parameters
  67. BOOL GetFeatureIndex(int *featureIndex); // Used by "FeatureChanged" event
  68. protected:
  69. void *m_Context;
  70. COREVENTINFO m_EventInfo;
  71. };
  72. typedef SAPSTATUS (CCONV *SapRTProEventCallback)(SapRTProEventCallbackInfo*);
  73. typedef SAPSTATUS (CCONV *SapRTProMsgCallback)(SapRTProMsgCallbackInfo *);
  74. //
  75. // SapRTProXferNode class declaration
  76. //
  77. class SAPCLASSBASIC_CLASS SapRTProXferNode : public SapXferNode
  78. {
  79. public:
  80. // Buffer types
  81. enum RegAccessMode
  82. {
  83. RegAccessModeAutoIncrement = CORPIXPRO_REGISTER_AUTO_INCREMENT,
  84. RegAccessModeNoIncrement = CORPIXPRO_REGISTER_NO_INCREMENT,
  85. };
  86. enum RegAccessType
  87. {
  88. RegAccessTypeUint8 = CORPIXPRO_REGISTER_ACCESS_TYPE_UINT8,
  89. RegAccessTypeUint16 = CORPIXPRO_REGISTER_ACCESS_TYPE_UINT16,
  90. RegAccessTypeUint32 = CORPIXPRO_REGISTER_ACCESS_TYPE_UINT32,
  91. RegAccessTypeUint32_8 = CORPIXPRO_REGISTER_ACCESS_TYPE_UINT32_UINT8,
  92. };
  93. enum MsgPriority
  94. {
  95. MsgPriorityLow = CORPIXPRO_VAL_MESSAGE_PRIORITY_LOW,
  96. MsgPriorityNormal = CORPIXPRO_VAL_MESSAGE_PRIORITY_NORMAL,
  97. MsgPriorityHigh = CORPIXPRO_VAL_MESSAGE_PRIORITY_HIGH,
  98. };
  99. enum MsgFlag
  100. {
  101. MsgFlagSynchronous = CORPIXPRO_VAL_MESSAGE_FLAG_SYNCHRONOUS,
  102. MsgFlagAsynchornous = CORPIXPRO_VAL_MESSAGE_FLAG_ASYNCHRONOUS,
  103. };
  104. enum MemAccessFlags
  105. {
  106. MemAccessAutoAddressIncrement = CORPIXPRO_MEMACCESS_AUTO_ADDRESS_INCREMENT,
  107. MemAccessNoAddressIncrement = CORPIXPRO_MEMACCESS_NO_ADDRESS_INCREMENT,
  108. };
  109. // Constructor/Destructor
  110. SapRTProXferNode(SapLocation loc = SapLocation::ServerSystem,
  111. SapRTProMsgCallback pCallback = NULL,
  112. void *pContext = NULL);
  113. SapRTProXferNode(const SapRTProXferNode &pixpro);
  114. virtual ~SapRTProXferNode();
  115. SapRTProXferNode &operator=(const SapRTProXferNode &pixpro);
  116. // SapXferNode type information
  117. XferNodeType GetXferNodeType() { return NodeTypeRTPro; }
  118. //messaging functions
  119. virtual BOOL SendMessage( int cmd,
  120. void *inData,
  121. int inDataSize,
  122. void *outData,
  123. int outDataSize,
  124. MsgPriority priority = MsgPriorityNormal ,
  125. MsgFlag flag = MsgFlagSynchronous );
  126. virtual BOOL SetMsgCallbackInfo( SapRTProMsgCallback pCallback, void *context);
  127. BOOL SetEventCallbackInfo( int eventType, SapRTProEventCallback pCallback, void *context);
  128. //register read/write access.
  129. virtual BOOL WriteRegisterBlock( int deviceId,
  130. int nbReg,
  131. int regOffset,
  132. void *pValues,
  133. RegAccessMode mode = RegAccessModeNoIncrement,
  134. RegAccessType accessType = RegAccessTypeUint32);
  135. virtual BOOL WriteRegisters( int deviceId, int nbReg, SAPRTPRO_REG_SET *pRegs);
  136. //register read/write access.
  137. virtual BOOL ReadRegisterBlock( int deviceId,
  138. int nbReg,
  139. int regOffset,
  140. void *pValues,
  141. RegAccessMode mode = RegAccessModeNoIncrement,
  142. RegAccessType accessType = RegAccessTypeUint32);
  143. virtual BOOL ReadRegisters( int deviceId, int nbReg, SAPRTPRO_REG_SET *pRegs);
  144. virtual BOOL LoadFirmwareFromFile( int deviceId, char *filename);
  145. virtual BOOL GetLabel( char *label, UINT32 maxSize);
  146. virtual BOOL GetDesignName( char *pName, UINT32 size);
  147. //override base implmentation.
  148. //removed init check, because rtpro parameters can be changed if object has been created.
  149. virtual BOOL SetSrcNode(SapXferNode *pSrcNode, int srcPort = 0) { m_pSrcNode = pSrcNode; m_SrcPort = srcPort; return TRUE;}
  150. virtual BOOL SetXferParams(SapXferParams xferParams, int portIndex = 0) { m_XferParams[portIndex] = xferParams; return TRUE;}
  151. // Direct capability/parameter access
  152. virtual BOOL GetCapability(int cap, void *pValue);
  153. virtual BOOL GetParameter(int param, void *pValue);
  154. virtual BOOL SetParameter(int param, int value);
  155. virtual BOOL SetParameter(int param, void *pValue);
  156. // Module create/destroy
  157. virtual BOOL Create();
  158. virtual BOOL Destroy();
  159. //
  160. virtual BOOL ReadMemory( int deviceId, int address, void *pData, int dataSize, MemAccessFlags flags);
  161. virtual BOOL WriteMemory( int deviceId, int address, void *pData, int dataSize, MemAccessFlags flags);
  162. protected:
  163. static SAPSTATUS CCONV OnRTProMsgCallback(UINT32 command, void *inData, UINT32 inDataSize, void *outData, UINT32 outDataSize, void *context);
  164. static SAPSTATUS CCONV OnEventCallback( void *context, COREVENTINFO eventInfo);
  165. int GetBytesPerReg( RegAccessType accessType);
  166. SapRTProMsgCallback m_pRTProMsgCallback;
  167. void *m_pMsgContext;
  168. SapRTProEventCallback m_pEventCallback;
  169. void *m_pEventContext;
  170. int m_EventType; //events that have been enabled.
  171. };
  172. #endif // _SAPRTPRO_H_