package org.yamcs.xtceproc;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yamcs.parameter.ParameterValue;
import org.yamcs.xtce.DynamicIntegerValue;
import org.yamcs.xtce.FixedIntegerValue;
import org.yamcs.xtce.IntegerValue;
import org.yamcs.xtce.Parameter;
public class ValueProcessor {
ContainerProcessingContext pcontext;
Logger log=LoggerFactory.getLogger(this.getClass().getName());
public ValueProcessor(ContainerProcessingContext pcontext) {
this.pcontext=pcontext;
}
public long getValue(IntegerValue iv) {
if(iv instanceof FixedIntegerValue) {
return ((FixedIntegerValue) iv).getValue();
} else if(iv instanceof DynamicIntegerValue) {
return getDynamicIntegerValue((DynamicIntegerValue)iv);
}
throw new UnsupportedOperationException("values of type "+iv+" not implemented");
}
private long getDynamicIntegerValue(DynamicIntegerValue div) {
Parameter pref = div.getParameterInstnaceRef().getParameter();
for(ParameterValue pv:pcontext.result.params) {
if(pv.getParameter()==pref) {
return pv.getEngValue().getUint32Value();
}
}
log.warn("Could not find the parameter in the list of extracted parameters, parameter: {}", pref);
return 0;
}
}