ERIS CORE

◆ connect() [1/3]

bool AudioDirector::connect ( AudioStream source,
int  sourceOutput,
AudioStream destination,
int  destinationInput 
)

Definition at line 385 of file AudioDirector.cpp.

385  {
386  uint16_t i;
387  if (NULL==source||NULL==destination) return false;
388 
389  //check if already existing
390  for(i=0; i < MAX_CONNECTIONS;i++){
391  if(source==p_cord[i]->pSrc && destination==p_cord[i]->pDst && sourceOutput==p_cord[i]->src_index && destinationInput==p_cord[i]->dest_index){
392  //Serial.printf(F("M AudioDirector::connect() reconnect index %hu\n"),i);
393  if(p_cord[i]->reconnect()) active_connections++;
394  return true;
395  }
396  }
397 
398  //make sure the destination input is not already connected to something else
399  this->disconnect(destination,destinationInput);
400 
401  //find a free connection from the pool
402  for(i=0; i < MAX_CONNECTIONS;i++){
403  //find any already existing but unused connections
404  if (NULL!=p_cord[i]){
405  if (p_cord[i]->isConnected == false){
406  //Serial.printf(F("M AudioDirector::connect() connection index %hu\n"),i);
407  if(p_cord[i]->rewire(source, (unsigned char)sourceOutput,destination, (unsigned char)destinationInput)) active_connections++;
408  return true;
409  }
410  }
411  if (NULL==p_cord[i]){
412  //Serial.printf(F("M AudioDirector::connect() new connection index %hu\n"),i);
413 
414  //need to rewire after creation as the reference based approach was bypassed
415  //in favor of pointers in order to facilitate the extention of the audio connection base class
416  p_cord[i] = new AudioConnection(source, (unsigned char)sourceOutput,destination, (unsigned char)destinationInput);
417  p_cord[i]->rewire(source, (unsigned char)sourceOutput,destination, (unsigned char)destinationInput);
418  return true;
419  }
420  }
421  Serial.print(F("M AudioDirector::connect() Error: No free audio connection available"));
422  return false; //no empty connection slots
423 }
bool rewire(AudioStream *psource, unsigned char sourceOutput, AudioStream *pdestination, unsigned char destinationInput)
Definition: AudioStream.h:109
AudioConnection * p_cord[MAX_CONNECTIONS]
Definition: AudioDirector.h:82
uint16_t active_connections
Definition: AudioDirector.h:76
bool disconnect(AudioStream *destination, int destinationInput)

References active_connections, disconnect(), p_cord, and AudioConnection::rewire().

Referenced by audioDirectorConnectCallback(), connect(), AppAudioToPolyphonic::makeAudioConnections(), and SvcSerialCommandInterface::update().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: