Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 1610 → Rev 1611

/dongfang_FC_rewrite_tool/src/dongfang/mkt/configuration/ConfigurationSet.java
0,0 → 1,82
package dongfang.mkt.configuration;
 
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
public abstract class ConfigurationSet {
public static final int NUMBER_OF_VARIABLES = 8;
 
protected int eepromVersion;
protected List<ParameterEntry> entries = new ArrayList<ParameterEntry>();
 
public ConfigurationSet() {
super();
}
 
public List<ParameterEntry> getEntries() {
return entries;
}
 
protected abstract int correctLengthToExcludeName(int length);
protected abstract void setName(int[] data, int offset);
protected abstract void outputName(StringBuilder sb);
public void setData(int[] data) throws IOException {
int offset = 0;
int dataLength = correctLengthToExcludeName(data.length);
if (dataLength != getByteCount()) {
throw new IOException("The received number of databytes (" + dataLength + ") was not equal to the length of the declared parameter set(" + getByteCount()+").");
}
for (ParameterEntry entry : entries) {
offset += entry.setValue(data, offset);
}
setName(data, offset);
}
 
public int getByteCount() {
int result = 0;
for (ParameterEntry e : entries) {
result += e.getByteCount();
}
return result;
}
 
public String toStringWithValues() {
StringBuilder result = new StringBuilder();
outputName(result);
for (ParameterEntry entry : entries) {
result.append(entry.toStringWithValues() + "\n");
}
return result.toString();
}
 
public String generateDynamicSubstitutionCode() {
StringBuilder result = new StringBuilder(
"const MMXLATION XLATIONS[] = {\n");
boolean hasEntries = false;
for (ParameterEntry entry : entries) {
if (entry instanceof DynamicByteEntry) {
if (hasEntries)
result.append(",\n");
else
hasEntries = true;
DynamicByteEntry de = (DynamicByteEntry) entry;
result.append("{offsetof(ParamSet_t, ");
result.append(de.getStaticCodeName());
result.append("), offsetof(DynamicParams_t, ");
result.append(de.getDynamicCodeName());
result.append("),");
result.append(Integer.toString(de.getMinValue()));
result.append(",");
result.append(Integer.toString(de.getMaxValue()));
result.append("}");
}
}
result.append("};");
return result.toString();
}
 
}