libcm is a C development framework with an emphasis on audio signal processing applications.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

cmDspClass.h 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. #ifndef cmDspClass_h
  2. #define cmDspClass_h
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. typedef unsigned cmDspRC_t;
  7. enum
  8. {
  9. kOkDspRC = cmOkRC, // 0
  10. kMemAllocFailDspRC, // 1
  11. kLHeapFailDspRC, // 2
  12. kJsonFailDspRC, // 3
  13. kFileSysFailDspRC, // 4
  14. kSymTblFailDspRC, // 5
  15. kThreadFailDspRC, // 6
  16. kNetFailDspRC, // 7
  17. kCsvFailDspRC, // 8
  18. kProcFailDspRC,
  19. kAllocInstFailDspRC,
  20. kClassFinalFailDspRC,
  21. kInstFinalFailDspRC,
  22. kInstResetFailDspRC,
  23. kInstExecFailDspRC,
  24. kInstStoreFailDspRC,
  25. kInstRecallFailDspRC,
  26. kInstMsgRcvFailDspRC,
  27. kNetSendAllocFailDspRC,
  28. kClassNotFoundDspRC,
  29. kInstNotFoundDspRC,
  30. kDuplInstSymIdDspRC,
  31. kVarNotFoundDspRC,
  32. kSrcVarNotFoundDspRC,
  33. kRsrcNotFoundDspRC,
  34. kSymNotFoundDspRC,
  35. kNetNodeNotFoundDspRC,
  36. kDuplPresetInstDspRC,
  37. kDuplPresetVarDspRC,
  38. kPresetGrpNotFoundDspRC,
  39. kPresetPreNotFoundDspRC,
  40. kPresetInstNotFoundDspRC,
  41. kPresetVarNotFoundDspRC,
  42. kVarDuplicateDspRC,
  43. kVarTypeErrDspRC,
  44. kVarNotValidDspRC,
  45. kVarArgParseFailDspRC,
  46. kInstCbInstallFailDspRC,
  47. kConnectFailDspRC,
  48. kInstSetFlagsFailDspRC,
  49. kSerializeUiMsgFailDspRC,
  50. kSendToHostFailDspRC,
  51. kUiEleCreateFailDspRC,
  52. kInvalidArgDspRC,
  53. kInvalidStateDspRC,
  54. kSubSysFailDspRC,
  55. kFileWriteFailDspRC,
  56. kFileReadFailDspRC,
  57. kFileOpenFailDspRC,
  58. kFileCloseFailDspRC,
  59. kInvalidPgmIdxDspRC,
  60. kPgmCfgFailDspRC
  61. };
  62. struct cmDspClass_str;
  63. struct cmDspInst_str;
  64. enum
  65. {
  66. kUiDspFl = 0x01, // set in cmDspSysHandleUiMsg() to indicate that a msg originated from a UI control.
  67. kUiEchoDspFl = 0x02, // set in cmDspSysHandleUiMsg() to indicate that the value set from a UI control should sent back to it by the DSP engine.
  68. kDfltEvtDspFlags = 0
  69. };
  70. // DSP event record
  71. typedef struct
  72. {
  73. unsigned flags; // See kXXDspFl
  74. struct cmDspInst_str* srcInstPtr; // source instance of the event or NULL if the system generated the event
  75. unsigned srcVarId; // source selector id used to identify this event (See Note 1 below.)
  76. unsigned dstVarId; // dest. selector id used to identify the target of the event
  77. void* dstDataPtr; // dest. supplied custom callback data pointer
  78. const cmDspValue_t* valuePtr; // event message data
  79. } cmDspEvt_t;
  80. #define cmDspEvtCopy( e0, e1 ) (*(e0)) = (*(e1))
  81. // Note 1: When the event was generated from a UI msg then:
  82. // a. The kUiDspFl is set and the kUiEchoDspFl if the UI requested duplex operation.
  83. // b. srcVarId is set with the cmDspUiHdr_t selId value of the UI msg.
  84. typedef struct cmDspClass_str* (*cmDspClassConsFunc_t)(cmDspCtx_t* ctx);
  85. typedef cmDspRC_t (*cmDspClassFunc_t)( cmDspCtx_t* ctx, struct cmDspClass_str* classPtr );
  86. typedef struct cmDspInst_str* (*cmDspConsFunc_t)( cmDspCtx_t* ctx, struct cmDspClass_str* classPtr, unsigned storeSymId, unsigned instSymId, unsigned id, unsigned va_cnt, va_list vl );
  87. typedef cmDspRC_t (*cmDspFunc_t)( cmDspCtx_t* ctx, struct cmDspInst_str* thisPtr, const cmDspEvt_t* evtPtr );
  88. typedef cmDspRC_t (*cmDspStoreFunc_t)( cmDspCtx_t* ctx, struct cmDspInst_str* thisPtr, bool Fl );
  89. typedef cmDspRC_t (*cmDspAttrSymFunc_t)(cmDspCtx_t* ctx, struct cmDspInst_str* thisPtr, unsigned attrSymId, const cmDspValue_t* value );
  90. // DSP class record
  91. typedef struct cmDspClass_str
  92. {
  93. cmErr_t err;
  94. const cmChar_t* labelStr;
  95. const cmChar_t* doc;
  96. cmDspClassFunc_t finalClassFunc; // finalize the class
  97. cmDspConsFunc_t allocFunc; // allocate an instance
  98. cmDspFunc_t freeFunc; // free an instance
  99. cmDspFunc_t resetFunc; //
  100. cmDspFunc_t execFunc; //
  101. cmDspFunc_t recvFunc; //
  102. cmDspStoreFunc_t storeFunc; // store the state of this instance
  103. cmDspAttrSymFunc_t sysRecvFunc; // attr/value recv function (see cmDspSysBroadcastValue()
  104. } cmDspClass_t;
  105. // record used to maintain an event target callback chain
  106. typedef struct cmDspInstCb_str
  107. {
  108. unsigned srcVarSymId; // src var symbol id
  109. struct cmDspInst_str* dstInstPtr; // target instance
  110. unsigned dstVarId; // target instance sel id
  111. void* dstDataPtr; // target instance custom data
  112. struct cmDspInstCb_str* linkPtr; // chain link
  113. } cmDspCb_t;
  114. // record used to maintain instance variables
  115. typedef struct
  116. {
  117. unsigned flags; // see xxxDsvFl in cmDspValue.h for possible flag values
  118. unsigned constId; // constant id provided by the instance
  119. unsigned symId; // symbol id assoc'd with this var's label
  120. cmDspValue_t value; // current value of this variable
  121. cmDspValue_t dflt; // default value for this variable
  122. cmDspCb_t* cbList; // event targets registered with this instance
  123. const cmChar_t* doc; // document string
  124. } cmDspVar_t;
  125. typedef struct
  126. {
  127. const char* label;
  128. unsigned constId;
  129. unsigned rn;
  130. unsigned cn;
  131. unsigned flags;
  132. const cmChar_t* doc;
  133. } cmDspVarArg_t;
  134. typedef struct cmDspInstSymId_str
  135. {
  136. unsigned symId; // set to cmInvalidId if the recd is not active
  137. struct cmDspInstSymId_str* link;
  138. } cmDspInstSymId_t;
  139. enum
  140. {
  141. kDisableExecInstFl = 0x01
  142. };
  143. typedef struct cmDspInst_str
  144. {
  145. struct cmDspClass_str* classPtr; // ptr to class for this instance
  146. unsigned symId; // optional instance label symbol id
  147. unsigned id; // id is unique among all insts
  148. unsigned flags; // See kXXXInstFl above
  149. cmDspVar_t* varArray; //
  150. unsigned varCnt; //
  151. cmDspFunc_t freeFunc; // free an instance
  152. cmDspFunc_t resetFunc; // reset a instance to its default values
  153. cmDspFunc_t execFunc; // DSP clock tick
  154. cmDspFunc_t recvFunc; // recv an event
  155. cmDspStoreFunc_t storeFunc; //
  156. cmDspAttrSymFunc_t sysRecvFunc;
  157. unsigned presetGroupSymId;//
  158. cmDspInstSymId_t* symIdList; //
  159. } cmDspInst_t;
  160. cmDspRC_t cmDspClassSetup(
  161. cmDspClass_t* classPtr, // class to setup
  162. cmDspCtx_t* ctx, //
  163. const cmChar_t* classLabel, //
  164. cmDspClassFunc_t finalClassFunc, // finalize the class
  165. cmDspConsFunc_t allocFunc, // allocate an instance
  166. cmDspFunc_t freeFunc, // free an instance
  167. cmDspFunc_t resetFunc,
  168. cmDspFunc_t execFunc,
  169. cmDspFunc_t recvFunc,
  170. cmDspStoreFunc_t storeFunc,
  171. cmDspAttrSymFunc_t sysRecvFunc,
  172. const cmChar_t* doc
  173. );
  174. void* cmDspInstAllocate(cmDspCtx_t* ctx, cmDspClass_t* classPtr, const cmDspVarArg_t* argV, unsigned instByteCnt, unsigned instSymId, unsigned instId, unsigned storeSymId, unsigned vargCnt, va_list vl );
  175. #define cmDspInstAlloc(T,ctx,classPtr,args,symId,id,storeSymId,vargCnt,vl) (T*)cmDspInstAllocate(ctx,classPtr,args,sizeof(T),symId,id,storeSymId,vargCnt,vl)
  176. void* cmDspInstAllocateV(cmDspCtx_t* ctx, cmDspClass_t* classPtr, unsigned instByteCnt, unsigned instSymId, unsigned instId, unsigned storeSymId, unsigned vargCnt, va_list vl0, ... );
  177. #define cmDspInstAllocV(T,ctx,classPtr,symId,id,storeSymId,va_cnt,vl, ... ) (T*)cmDspInstAllocateV(ctx,classPtr,sizeof(T),symId,id,storeSymId,va_cnt,vl, __VA_ARGS__ )
  178. bool cmDspInstHasAttrSym( cmDspInst_t* inst, unsigned attrSymId );
  179. cmDspRC_t cmDspInstRegisterAttrSym( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned attrSymId );
  180. cmDspRC_t cmDspInstRemoveAttrSym( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned attrSymId );
  181. cmDspRC_t cmDspClassErr( cmDspCtx_t* ctx, cmDspClass_t* classPtr, cmDspRC_t rc, const cmChar_t* fmt, ... );
  182. cmDspRC_t cmDspInstErr( cmDspCtx_t* ctx, cmDspInst_t* inst, cmDspRC_t rc, const cmChar_t* fmt, ... );
  183. // Helper functions for setting up enumerated cmDspVarArg_t records.
  184. void cmDspArgSetup( cmDspCtx_t* ctx, cmDspVarArg_t* arg, const cmChar_t* labelPrefix, unsigned labelId, unsigned constId, unsigned rn, unsigned cn, unsigned flags, const cmChar_t* docStr );
  185. unsigned cmDspArgCopy( cmDspVarArg_t* argArray, unsigned argN, unsigned dstIdx, const cmDspVarArg_t* s, unsigned sn );
  186. unsigned cmDspArgSetupN( cmDspCtx_t* ctx, cmDspVarArg_t* arg, unsigned argN, unsigned dstIdx, unsigned cnt, const cmChar_t* labelPrefix, unsigned baseConstId, unsigned rn, unsigned cn, unsigned flags, const cmChar_t* staticDocStr );
  187. void cmDspArgSetupNull( cmDspVarArg_t* arg );
  188. const cmChar_t* cmDspInstLabel( cmDspCtx_t* ctx, cmDspInst_t* inst );
  189. // Given and instance and a variable symbol id return a pointer to the variable.
  190. cmDspVar_t* cmDspVarSymbolToPtr( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varSymId, unsigned flags );
  191. // Given an instance and a var id return a pointer to the variable.
  192. const cmDspVar_t* cmDspVarIdToCPtr( const cmDspInst_t* inst, unsigned varId );
  193. cmDspVar_t* cmDspVarIdToPtr( cmDspInst_t* inst, unsigned varId );
  194. const cmChar_t* cmDspVarLabel( cmDspCtx_t* ctx, const cmDspInst_t* inst, unsigned varId );
  195. // Make callbacks for the specified instance var.
  196. cmDspRC_t cmDspOutputEvent( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId );
  197. cmDspRC_t cmDspVarPresetWrite( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId );
  198. cmDspRC_t cmDspVarPresetRead( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId );
  199. cmDspRC_t cmDspVarPresetRdWr( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, bool storeFl );
  200. double cmDspSampleRate( cmDspCtx_t* ctx );
  201. unsigned cmDspSamplesPerCycle( cmDspCtx_t* ctx );
  202. // Query the type of a variable
  203. unsigned cmDspTypeFlags(const cmDspInst_t* inst, unsigned varId );
  204. bool cmDspIsBool( const cmDspInst_t* inst, unsigned varId );
  205. bool cmDspIsInt( const cmDspInst_t* inst, unsigned varId );
  206. bool cmDspIsUInt( const cmDspInst_t* inst, unsigned varId );
  207. bool cmDspIsDouble( const cmDspInst_t* inst, unsigned varId );
  208. bool cmDspIsStrz( const cmDspInst_t* inst, unsigned varId );
  209. bool cmDspIsSymbol( const cmDspInst_t* inst, unsigned varId );
  210. bool cmDspIsJson( const cmDspInst_t* inst, unsigned varId );
  211. // Get the value of an instance variable.
  212. bool cmDspBool( cmDspInst_t* inst, unsigned varId );
  213. int cmDspInt( cmDspInst_t* inst, unsigned varId );
  214. unsigned cmDspUInt( cmDspInst_t* inst, unsigned varId );
  215. double cmDspDouble( cmDspInst_t* inst, unsigned varId );
  216. const cmChar_t* cmDspStrcz( cmDspInst_t* inst, unsigned varId );
  217. unsigned cmDspSymbol( cmDspInst_t* inst, unsigned varId );
  218. cmJsonNode_t* cmDspJson( cmDspInst_t* inst, unsigned varId );
  219. // Get the default value of an instance variable.
  220. bool cmDspDefaultBool( cmDspInst_t* inst, unsigned varId );
  221. int cmDspDefaultInt( cmDspInst_t* inst, unsigned varId );
  222. unsigned cmDspDefaultUInt( cmDspInst_t* inst, unsigned varId );
  223. double cmDspDefaultDouble( cmDspInst_t* inst, unsigned varId );
  224. const cmChar_t* cmDspDefaultStrcz( cmDspInst_t* inst, unsigned varId );
  225. unsigned cmDspDefaultSymbol( cmDspInst_t* inst, unsigned varId );
  226. cmJsonNode_t* cmDspDefaultJson( cmDspInst_t* inst, unsigned varId );
  227. // Possible values for cmDspSetXXX()
  228. enum
  229. {
  230. kUpdateUiDspFl = 0x00,
  231. kNoUpdateUiDspFl = 0x01, // don't callback the UI
  232. kNoAllocDspFl = 0x02, // the caller is handling memory mgmt for the incoming value don't allocate space for it internally
  233. kSetDefaultDspFl = 0x04, // set the var default value rather than the current value
  234. kNoSendDspFl = 0x08 // do not transmit the value to connected objects
  235. };
  236. // Instance variable setter functions:
  237. //
  238. // All forms of the setter assign a value to of the specified instance variable and
  239. // then make the callbacks attached to the variable. Note that callbacks to the UI
  240. // can be prevented by setting the kNoUpdateUiDspFl in the call to cmDspSet<type>X().
  241. //
  242. //
  243. // All setters are implemented in terms of the cmDspValueSet()
  244. //
  245. // Convert the source value (svp) to the type of the target var (inst->varArray[varId])
  246. // and assign it to the var value. All the cmDspSetXXX() functions work in terms of this function.
  247. // See the kXXXDspFl flags above for possible 'flag' values.
  248. cmDspRC_t cmDspValueSet( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, const cmDspValue_t* vp, unsigned flags );
  249. // Assign the default value to the current value (if the the specified variable has a valid default value).
  250. cmDspRC_t cmDspApplyDefault( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId );
  251. // Apply the default value to the current value for all variables which has a valid default value.
  252. // This is
  253. cmDspRC_t cmDspApplyAllDefaults( cmDspCtx_t* ctx, cmDspInst_t* inst );
  254. // Set the default value of a variable.
  255. cmDspRC_t cmDspSetDefault( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, const cmDspValue_t* valPtr );
  256. // Set the default variable of a variable to 'val'.
  257. // The call is ignored (and the default value is not set) if the default
  258. // value was previously set to a vaue which is not equal to 'nonInitVal'.
  259. cmDspRC_t cmDspSetDefaultBool( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, bool nonInitVal, bool val );
  260. cmDspRC_t cmDspSetDefaultInt( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, int nonInitVal, int val );
  261. cmDspRC_t cmDspSetDefaultUInt( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, unsigned nonInitVal, unsigned val );
  262. cmDspRC_t cmDspSetDefaultDouble( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, double nonInitVal, double val );
  263. cmDspRC_t cmDspSetDefaultStrcz( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, const cmChar_t* nonInitVal, const cmChar_t* val );
  264. cmDspRC_t cmDspSetDefaultSymbol( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, /*unsigned cmInvalidId*/ unsigned val );
  265. cmDspRC_t cmDspSetDefaultJson( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, cmJsonNode_t* nonInitVal, cmJsonNode_t* val );
  266. // Set the value of a variable and make any attached callbacks.
  267. // If the kUiDsvFl is set on the variable then the UI is also informed of the new value.
  268. // If the source ('val') type does not match the variable type then if possible the
  269. // source is converted to the dest (variable) type.
  270. // This function is implemented in terms of cmDspValueSet().
  271. cmDspRC_t cmDspSetBool( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, bool val );
  272. cmDspRC_t cmDspSetInt( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, int val );
  273. cmDspRC_t cmDspSetUInt( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, unsigned val );
  274. cmDspRC_t cmDspSetDouble( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, double val );
  275. cmDspRC_t cmDspSetStrcz( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, const cmChar_t* val );
  276. cmDspRC_t cmDspSetSymbol( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, unsigned val );
  277. cmDspRC_t cmDspSetJson( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, cmJsonNode_t* val );
  278. // Set the value of a variable to the *evt->valuePtr and make any attached callbacks.
  279. // If the kUiDsvFl is set and kNoUiEchoDspFl is not set in evt->flags then UI is informed of the new value.
  280. // If the source (*evt->valuePtr) type does not match the variable type then if possible the
  281. // source is converted to the dest (variable) type.
  282. // This function is implemented in terms of cmDspValueSet().
  283. cmDspRC_t cmDspSetEvent( cmDspCtx_t* ctx, cmDspInst_t* inst, const cmDspEvt_t* evt );
  284. // Same as cmDspSetEvent() but the event is automatically echoed to the UI.
  285. cmDspRC_t cmDspSetEventUi( cmDspCtx_t* ctx, cmDspInst_t* inst, const cmDspEvt_t* evt );
  286. // Same as cmDspSetEventUi() but change the event target variable to 'varId'.
  287. cmDspRC_t cmDspSetEventUiId( cmDspCtx_t* ctx, cmDspInst_t* inst, const cmDspEvt_t* evt, unsigned varId );
  288. // Get the row and col count of a matrix valued instance variable.
  289. unsigned cmDspVarRows( cmDspInst_t* inst, unsigned varId );
  290. unsigned cmDspVarCols( cmDspInst_t* inst, unsigned varId );
  291. // Audio buffer helper functions
  292. bool cmDspIsAudioInputConnected( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId );
  293. cmDspRC_t cmDspZeroAudioBuf( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId );
  294. cmSample_t* cmDspAudioBuf( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, unsigned chIdx );
  295. unsigned cmDspAudioBufSmpCount( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, unsigned chIdx );
  296. // Register dspInstPtr to receive a callback when srcInstPtr generates an event identified by srcVarId.
  297. cmDspRC_t cmDspInstInstallCb( cmDspCtx_t* ctx, cmDspInst_t* srcInstPtr, unsigned srcVarId, cmDspInst_t* dstInstPtr, unsigned dstVarSymId, void* dstCbDataPtr);
  298. cmDspRC_t cmDspInstallCb( cmDspCtx_t* ctx, cmDspInst_t* srcInstPtr, const cmChar_t* srcVarLabel, cmDspInst_t* dstInstPtr, const cmChar_t* dstVarLabel, void* dstCbDataPtr);
  299. // Uninstall a previous registred instance variable callback function.
  300. cmDspRC_t cmDspInstRemoveCb( cmDspCtx_t* ctx, cmDspInst_t* srcInstPtr, unsigned srcVarId, cmDspInst_t* dstInstPtr, unsigned dstVarId );
  301. cmDspRC_t cmDspRemoveCb( cmDspCtx_t* ctx, cmDspInst_t* srcInstPtr, const cmChar_t* srcVarLabel, cmDspInst_t* dstInstPtr, unsigned dstVarId );
  302. //
  303. cmDspRC_t cmDspInstVarSetFlags( cmDspCtx_t* ctx, cmDspInst_t* instPtr, unsigned varId, unsigned flags );
  304. // Used to transmit messages to the audio system.
  305. cmDspRC_t cmDspSendValueToAudioSys( cmDspCtx_t* ctx, unsigned msgTypeId, unsigned selId, unsigned valId, const cmDspValue_t* valPtr );
  306. // The following functions are used to send message to the UI and are
  307. // implemented in cmDspUi.c. They are declared here because they are
  308. // visible to the cmDspInst functions which use them but are not available
  309. // to the host UI. The other values defined and declared in cmDspUi.h are
  310. // common to both the host UI and the DSP instances.
  311. cmDspRC_t cmDspUiConsolePrint( cmDspCtx_t* ctx, cmChar_t* text );
  312. cmDspRC_t cmDspUiSendValue( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned varId, const cmDspValue_t* valPtr );
  313. cmDspRC_t cmDspUiSendVar( cmDspCtx_t* ctx, cmDspInst_t* inst, cmDspVar_t* var );
  314. cmDspRC_t cmDspUiScalarCreate( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned typeDuiId, unsigned minVarId, unsigned maxVarId, unsigned stpVarId, unsigned valVarId, unsigned lblVarId );
  315. cmDspRC_t cmDspUiTextCreate( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned valVarId, unsigned lblVarId );
  316. cmDspRC_t cmDspUiMeterCreate( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned minVarId, unsigned maxVarId, unsigned valVarId, unsigned lblVarId );
  317. cmDspRC_t cmDspUiButtonCreate( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned typeDuiId, unsigned outVarId, unsigned lblVarId );
  318. cmDspRC_t cmDspUiLabelCreate( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned lblVarId, unsigned alignVarId );
  319. cmDspRC_t cmDspUiNewColumn( cmDspCtx_t* ctx, unsigned colW );
  320. cmDspRC_t cmDspUiInsertHorzBorder( cmDspCtx_t* ctx );
  321. cmDspRC_t cmDspUiNewPage( cmDspCtx_t* ctx, const cmChar_t* title );
  322. enum { kFnameFnDspFl=0x00, kFnameDirDspFl=0x01 };
  323. cmDspRC_t cmDspUiFnameCreate( cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned valVarId, unsigned patVarId, unsigned dirVarId );
  324. cmDspRC_t cmDspUiMsgListCreate(cmDspCtx_t* ctx, cmDspInst_t* inst, unsigned height, unsigned listVarId, unsigned selVarId );
  325. #ifdef __cplusplus
  326. }
  327. #endif
  328. #endif