package org.mobicents.media.server.ctrl.mgcp.evt.tone;
import java.util.ArrayList;
import java.util.List;
import org.mobicents.media.server.ctrl.mgcp.Request;
import org.mobicents.media.server.ctrl.mgcp.evt.SignalGenerator;
import org.mobicents.media.server.spi.Connection;
import org.mobicents.media.server.spi.Endpoint;
import org.mobicents.media.server.spi.resource.FrequencyBean;
/**
*
* @author amit.bhayani
*
*/
public class MultiFreqToneGenerator extends SignalGenerator {
private org.mobicents.media.server.spi.resource.MultiFreqToneGenerator mulFreqGen;
private String params;
public MultiFreqToneGenerator(String resourceName, String params) {
super(resourceName, params);
this.params = params;
}
@Override
public void cancel() {
this.mulFreqGen.stop();
this.mulFreqGen = null;
}
@Override
protected boolean doVerify(Connection connection) {
this.mulFreqGen = (org.mobicents.media.server.spi.resource.MultiFreqToneGenerator) connection.getComponent(
getResourceName(), Connection.CHANNEL_TX);
return this.mulFreqGen != null;
}
@Override
protected boolean doVerify(Endpoint endpoint) {
this.mulFreqGen = (org.mobicents.media.server.spi.resource.MultiFreqToneGenerator) endpoint
.getComponent(getResourceName());
return this.mulFreqGen != null;
}
@Override
public void start(Request request) {
List<FrequencyBean> freqBean = decodeParams();
this.mulFreqGen.setFreqBeanList(freqBean);
this.mulFreqGen.setVolume(0);
this.mulFreqGen.start();
}
private List<FrequencyBean> decodeParams() {
List<FrequencyBean> listFreqtemp = new ArrayList<FrequencyBean>();
String[] freqData = this.params.split("-");
int count = 0;
FrequencyBean freqbean;
while (count < freqData.length) {
int lowFreq = Integer.parseInt(freqData[count++]);
int highFreq = Integer.parseInt(freqData[count++]);
int duration = Integer.parseInt(freqData[count++]);
freqbean = new FrequencyBean(lowFreq, highFreq, duration);
listFreqtemp.add(freqbean);
}
return listFreqtemp;
}
}