Parcourir la source

cmRtSys.c : If a network msg is received with the destination rtSubIdx set

to cmInvalidIdx then send the message to all sub-systems. (See _cmRtSysDeliverSegMsg().).
master
kpl il y a 10 ans
Parent
révision
69ebc1c232
1 fichiers modifiés avec 18 ajouts et 1 suppressions
  1. 18
    1
      cmRtSys.c

+ 18
- 1
cmRtSys.c Voir le fichier

@@ -1146,7 +1146,24 @@ cmRtRC_t  cmRtSysDeliverSegMsg(  cmRtSysH_t h, const void* msgDataPtrArray[], un
1146 1146
   }
1147 1147
   */
1148 1148
 
1149
-  return _cmRtEnqueueMsg(p,p->ssArray[rtSubIdx].htdQueueH,msgDataPtrArray,msgByteCntArray,msgSegCnt,"Host-to-DSP");  
1149
+  // if rtSubIdx == kInvalidIdx then send the msg to all sub-systems 
1150
+  // otherwise send it to the specified sub-system.
1151
+  
1152
+  unsigned i = 0;
1153
+  unsigned n = 1;
1154
+
1155
+  if( rtSubIdx == cmInvalidIdx )
1156
+    n = p->ssCnt;
1157
+
1158
+  for(; i<n; ++i)
1159
+  {
1160
+    unsigned j = rtSubIdx==cmInvalidIdx ? i : rtSubIdx;
1161
+
1162
+    if((rc =  _cmRtEnqueueMsg(p,p->ssArray[j].htdQueueH,msgDataPtrArray,msgByteCntArray,msgSegCnt,"Host-to-DSP")) != kOkRtRC )
1163
+      break;
1164
+  }
1165
+
1166
+  return rc;
1150 1167
 }
1151 1168
 
1152 1169
 cmRtRC_t cmRtSysDeliverMsg( cmRtSysH_t h, const void* msgPtr, unsigned msgByteCnt, unsigned srcNetNodeId )

Chargement…
Annuler
Enregistrer