123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #ifndef cmDspNet_h
- #define cmDspNet_h
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #define cmDspSys_PARENT_SYM_TBL_BASE_ID 10000
- #define cmDspSys_AsSubIdx_Zero (0)
-
- typedef struct _cmDspClass_str
- {
- cmDspClass_t* classPtr;
- unsigned symId;
- struct _cmDspClass_str* linkPtr;
- } _cmDspClass_t;
-
- typedef struct _cmDspInst_str
- {
- cmDspInst_t* instPtr;
- struct _cmDspInst_str* linkPtr;
- } _cmDspInst_t;
-
- typedef struct
- {
- unsigned id;
- bool helloFl; // recv'd a sync 'hello' msg from this node
- bool reqDoneFl;// recv'd a synd 'requests done' msg from this node
- bool doneFl; // recv'd a sync 'done' msg from this node
- bool localFl; // this is the local node
- } _cmDspNetNode_t;
-
-
- // connections from a DSP instance on this machine - this list exists on the src machine only
- // to a DSP instance on another machine
- typedef struct _cmDspSrcConn_str
- {
- unsigned srcId; // address provided by this machine
- unsigned dstId; // address provided by the remote machine
- unsigned dstNetNodeId;
- cmChar_t* dstInstLabel;
- cmChar_t* dstVarLabel;
- struct _cmDspSrcConn_str* link;
- } _cmDspSrcConn_t;
-
- // Connection proxies for connection destinations - this list exists on the dst machine only
- typedef struct _cmDspDstConn_str
- {
- unsigned dstId; // address provided by this machine (same as dstId on other machine)
- unsigned srcNetNodeId; // net node Id of the source - srcId is unique to this machine
- unsigned srcId; // address provided by remote machine (same as srcId on other machine)
- cmDspInst_t* dstInst; // connection destination target instance/var
- unsigned dstVarId; //
- struct _cmDspDstConn_str* link; //
- } _cmDspDstConn_t;
-
-
- typedef struct
- {
- cmErr_t err;
- cmCtx_t cmCtx;
- cmDspCtx_t ctx;
- cmLHeapH_t lhH; // DSP system lHeap used for system memory (DSP instance memory uses ctx->lhH so that it can be removed independent of the DSP system memory)
- cmSymTblH_t stH; // DSP system symbol table (holds class based symbols) (DSP instances use ctx->stH)
- cmJsonH_t jsH; // DSP json for use by the system
- const cmChar_t* rsrcFn; // name of the JSON file containing resource specific resource
- _cmDspClass_t* classList;
- _cmDspInst_t* instList;
- cmDspPresetMgr_t pm;
- unsigned nextInstId;
- unsigned pgmIdx;
-
-
- cmUdpNetH_t netH; //
- cmThreadH_t thH; //
- unsigned nextDstId; //
- unsigned netNodeCnt; //
- _cmDspNetNode_t* netNodeArray; // netNodeArray[ netNodeCnt ]
- _cmDspSrcConn_t* srcConnList; // linked list of all dstConn recds
- _cmDspDstConn_t* dstConnList; // linked list of all srcConn recds
- _cmDspSrcConn_t** srcConnMap; // srcConnMap[srcConnMapCnt] array of all srcConn recd ptr's mapped to srcId
- unsigned srcConnMapCnt; // count of records in srcConnMap[]
- _cmDspDstConn_t** dstConnMap; // dstConnMap[dstConnMapCnt] array of all dstConn recd ptr's mapped to dstId
- unsigned dstConnMapCnt; // count of record in dstConnMap[]
- bool netDoneSentFl; // true when this node has broadcast it's 'done' msg
- unsigned netVerbosity;
- unsigned sendWaitMs;
- unsigned syncState; // see kSyncXXXDspId
- cmDspInstSymId_t* symIdList; // sym id's which will be assigned to each new instance
- } cmDsp_t;
-
-
- // called by cmDspSysInstallNetCb()
- _cmDspSrcConn_t* _cmDspSysNetCreateSrcConn( cmDsp_t* p, unsigned dstNetNodeId, const cmChar_t* dstInstLabel, const cmChar_t* dstVarLabel );
-
- // called by cmDspSysInitialize()
- cmDspRC_t _cmDspSysNetAlloc( cmDsp_t* p );
-
- // called by cmDspSysFinalize()
- cmDspRC_t _cmDspSysNetFree( cmDsp_t* p );
-
- // called by cmDspSysLoad()
- cmDspRC_t _cmDspSysNetPreLoad( cmDsp_t* p );
-
- // called by cmDspSysUnload()
- cmDspRC_t _cmDspSysNetUnload( cmDsp_t* p );
-
- // Call this function to enter 'sync' mode.
- cmDspRC_t _cmDspSysNetSync( cmDsp_t* p );
-
- // Called from cmAudDsp.c:_cmAdUdpNetCallback() to to send an incoming msg to the DSP system.
- cmDspRC_t _cmDspSysNetRecv( cmDsp_t* p, const cmDspNetMsg_t* msg, unsigned msgByteCnt, unsigned remoteNetNodeId );
-
-
- cmDspRC_t _cmDspSysNetSendEvent( cmDspSysH_t h, unsigned dstNetNodeId, unsigned dstId, const cmDspEvt_t* evt );
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif
|