mirror of https://github.com/rusefi/RomRaider.git
Updated parser, indexing and schema. 95% complete.
git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@387 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d
This commit is contained in:
parent
1a4ca6d041
commit
94e7fe9e16
|
@ -0,0 +1,106 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
|
||||
<!ELEMENT rom ( scales?, tables? ) >
|
||||
<!ATTLIST rom name ID #REQUIRED >
|
||||
<!ATTLIST rom abstract CDATA "false" >
|
||||
<!ATTLIST rom idaddress CDATA #IMPLIED >
|
||||
<!ATTLIST rom idstring CDATA #IMPLIED >
|
||||
<!ATTLIST rom base CDATA #IMPLIED >
|
||||
<!ATTLIST rom description CDATA #IMPLIED >
|
||||
<!ATTLIST rom memmodel IDREF #IMPLIED >
|
||||
<!ATTLIST rom flashmethod IDREF #IMPLIED >
|
||||
<!ATTLIST rom caseid IDREF #IMPLIED >
|
||||
<!ATTLIST rom obsolete CDATA "false" >
|
||||
|
||||
<!ELEMENT tables ( category+ ) >
|
||||
|
||||
<!ELEMENT table3d ( xaxis?, yaxis?, description? ) >
|
||||
<!ATTLIST table3d name ID #REQUIRED >
|
||||
<!ATTLIST table3d userlevel (1|2|3|4|5) "0" >
|
||||
<!ATTLIST table3d scale IDREF #IMPLIED >
|
||||
<!ATTLIST table3d address CDATA #IMPLIED >
|
||||
<!ATTLIST table3d xaddress CDATA #IMPLIED >
|
||||
<!ATTLIST table3d yaddress CDATA #IMPLIED >
|
||||
<!ATTLIST table3d sizex CDATA #IMPLIED >
|
||||
<!ATTLIST table3d sizey CDATA #IMPLIED >
|
||||
|
||||
<!ELEMENT table2d ( axis?, description? ) >
|
||||
<!ATTLIST table2d name ID #REQUIRED >
|
||||
<!ATTLIST table2d userlevel (1|2|3|4|5) "0" >
|
||||
<!ATTLIST table2d scale IDREF #IMPLIED >
|
||||
<!ATTLIST table2d address CDATA #IMPLIED >
|
||||
<!ATTLIST table2d size CDATA #IMPLIED >
|
||||
<!ATTLIST table2d axisaddress CDATA #IMPLIED >
|
||||
|
||||
<!ELEMENT parameter ( description? ) >
|
||||
<!ATTLIST parameter name ID #REQUIRED >
|
||||
<!ATTLIST parameter userlevel (1|2|3|4|5) "0" >
|
||||
<!ATTLIST parameter scale IDREF #IMPLIED >
|
||||
<!ATTLIST parameter address CDATA #IMPLIED >
|
||||
|
||||
<!ELEMENT switch ( description?, on?, off? ) >
|
||||
<!ATTLIST switch name ID #REQUIRED >
|
||||
<!ATTLIST switch userlevel (1|2|3|4|5) "0" >
|
||||
<!ATTLIST switch address CDATA #IMPLIED >
|
||||
<!ATTLIST switch size CDATA "1" >
|
||||
<!ATTLIST switch hidden (true|false) "false" >
|
||||
<!ATTLIST switch default (on|off|none) "none" >
|
||||
|
||||
<!ELEMENT switchgroup ( switch* ) >
|
||||
<!ATTLIST switchgroup name ID #REQUIRED >
|
||||
<!ATTLIST switchgroup default (on|off|none) "none" >
|
||||
<!ATTLIST switchgroup userlevel (1|2|3|4|5) "0" >
|
||||
<!ATTLIST switchgroup hidden (true|false) "false" >
|
||||
<!ATTLIST switchgroup description CDATA #IMPLIED >
|
||||
|
||||
<!ELEMENT description ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT axis ( data? ) >
|
||||
<!ATTLIST axis name ID #REQUIRED >
|
||||
<!ATTLIST axis scale IDREF #IMPLIED >
|
||||
<!ATTLIST axis address CDATA #IMPLIED >
|
||||
<!ATTLIST axis size CDATA "1" >
|
||||
<!ATTLIST axis static (true|false) "false" >
|
||||
|
||||
<!ELEMENT xaxis ( data? ) >
|
||||
<!ATTLIST xaxis name ID #REQUIRED >
|
||||
<!ATTLIST xaxis scale IDREF #IMPLIED >
|
||||
<!ATTLIST xaxis address CDATA #IMPLIED >
|
||||
<!ATTLIST xaxis size CDATA "1" >
|
||||
|
||||
<!ELEMENT yaxis ( data? ) >
|
||||
<!ATTLIST yaxis name ID #REQUIRED >
|
||||
<!ATTLIST yaxis scale IDREF #IMPLIED >
|
||||
<!ATTLIST yaxis address CDATA #IMPLIED >
|
||||
<!ATTLIST yaxis size CDATA "1" >
|
||||
|
||||
<!ELEMENT data ( #PCDATA ) >
|
||||
|
||||
<!ELEMENT on EMPTY >
|
||||
<!ATTLIST on name ID #REQUIRED >
|
||||
<!ATTLIST on data CDATA #REQUIRED >
|
||||
|
||||
<!ELEMENT off EMPTY >
|
||||
<!ATTLIST off name ID #REQUIRED >
|
||||
<!ATTLIST off data CDATA #REQUIRED >
|
||||
|
||||
<!ELEMENT category ( table3d*, table2d*, parameter*, switch*, string* ) >
|
||||
<!ATTLIST category name ID #REQUIRED >
|
||||
<!ATTLIST category description CDATA #IMPLIED >
|
||||
|
||||
<!ELEMENT scales ( scale+ ) >
|
||||
|
||||
<!ELEMENT scale ( unit+ ) >
|
||||
<!ATTLIST scale name ID #REQUIRED >
|
||||
<!ATTLIST scale storagetype (uint8|int8|uint16|int16|float|hex|char) "uint8" >
|
||||
<!ATTLIST scale endian (big|little) "big" >
|
||||
<!ATTLIST scale logparam IDREF #IMPLIED >
|
||||
|
||||
<!ELEMENT unit EMPTY >
|
||||
<!ATTLIST unit name ID #REQUIRED >
|
||||
<!ATTLIST unit system (stantard|metric|universal) "universal" >
|
||||
<!ATTLIST unit to_real CDATA #REQUIRED >
|
||||
<!ATTLIST unit to_byte CDATA #REQUIRED >
|
||||
<!ATTLIST unit format CDATA "0.00" >
|
||||
<!ATTLIST unit coarseincrement CDATA "1" >
|
||||
<!ATTLIST unit fineincrement CDATA "0.1" >
|
21365
ecu_defs/ecu_defs.xml
21365
ecu_defs/ecu_defs.xml
File diff suppressed because it is too large
Load Diff
|
@ -2,6 +2,7 @@ package enginuity.newmaps.definition;
|
|||
|
||||
import enginuity.newmaps.ecudata.Scale;
|
||||
import enginuity.newmaps.ecudata.Unit;
|
||||
import java.util.Iterator;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.Vector;
|
||||
|
||||
|
@ -30,7 +31,8 @@ public final class AttributeParser {
|
|||
}
|
||||
}
|
||||
|
||||
public static String[] parseValueString(String s, String delim) {
|
||||
|
||||
public static String[] stringToStringArray(String s, String delim) {
|
||||
StringTokenizer t = new StringTokenizer(s, delim);
|
||||
Vector<String> values = new Vector<String>();
|
||||
while (t.hasMoreTokens()) {
|
||||
|
@ -39,6 +41,25 @@ public final class AttributeParser {
|
|||
return (String[])values.toArray();
|
||||
}
|
||||
|
||||
|
||||
public static byte[] stringToByteArray(String s, String delim) {
|
||||
StringTokenizer t = new StringTokenizer(s, delim);
|
||||
Vector<Byte> values = new Vector<Byte>();
|
||||
|
||||
while (t.hasMoreTokens()) {
|
||||
values.add(Byte.parseByte(t.nextToken()));
|
||||
}
|
||||
|
||||
byte[] bytes = new byte[values.size()];
|
||||
|
||||
for (int i = 0; i < values.size(); i++) {
|
||||
bytes[i] = values.get(i);
|
||||
}
|
||||
|
||||
return bytes;
|
||||
}
|
||||
|
||||
|
||||
public static int parseUnitSystem(String s) {
|
||||
if (s.equalsIgnoreCase("metric")) return Unit.SYSTEM_METRIC;
|
||||
else if (s.equalsIgnoreCase("standard")) return Unit.SYSTEM_STANDARD;
|
||||
|
|
|
@ -40,6 +40,8 @@ public class RomDefinitionHandler extends DefaultHandler {
|
|||
|
||||
private static final String VAL_TRUE = "true";
|
||||
private static final String VAL_FALSE = "false";
|
||||
private static final String VAL_ON = "on";
|
||||
private static final String VAL_OFF = "off";
|
||||
|
||||
private static final String ATTR_NAME = "name";
|
||||
private static final String ATTR_ABSTRACT = "abstract";
|
||||
|
@ -65,6 +67,8 @@ public class RomDefinitionHandler extends DefaultHandler {
|
|||
private static final String ATTR_TO_REAL = "to_real";
|
||||
private static final String ATTR_TO_BYTE = "to_byte";
|
||||
private static final String ATTR_SYSTEM = "system";
|
||||
private static final String ATTR_DEFAULT = "default";
|
||||
private static final String ATTR_HIDDEN = "hidden";
|
||||
private static final String ATTR_FORMAT = "format";
|
||||
private static final String ATTR_COARSE_INCREMENT = "coarseincrement";
|
||||
private static final String ATTR_FINE_INCREMENT = "fineincrement";
|
||||
|
@ -378,11 +382,6 @@ public class RomDefinitionHandler extends DefaultHandler {
|
|||
// TODO: Handle exception
|
||||
}
|
||||
|
||||
|
||||
} else if (TAG_DATA.equalsIgnoreCase(qName)) {
|
||||
|
||||
// TODO: Deal with data
|
||||
|
||||
|
||||
} else if (TAG_UNIT.equalsIgnoreCase(qName)) {
|
||||
unit = new Unit(attr.getValue(ATTR_NAME));
|
||||
|
@ -404,8 +403,14 @@ public class RomDefinitionHandler extends DefaultHandler {
|
|||
|
||||
} else if (TAG_STATE.equalsIgnoreCase(qName)) {
|
||||
|
||||
// TODO: Deal with states
|
||||
|
||||
// Determine state and values and apply to table
|
||||
if (attr.getValue(ATTR_NAME).equalsIgnoreCase(VAL_ON)) {
|
||||
((Switch)table).setStateOn(attr.getValue("values"));
|
||||
|
||||
} else if (attr.getValue(ATTR_NAME).equalsIgnoreCase(VAL_OFF)) {
|
||||
((Switch)table).setStateOff(attr.getValue("values"));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -485,6 +490,7 @@ public class RomDefinitionHandler extends DefaultHandler {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void characters(char[] ch, int start, int length) {
|
||||
|
|
|
@ -28,6 +28,7 @@ public abstract class IndexUtil {
|
|||
Iterator it = index.iterator();
|
||||
while (it.hasNext()) {
|
||||
IndexItem item = (IndexItem)it.next();
|
||||
|
||||
try {
|
||||
if (!item.getChecksum().equalsIgnoreCase(getMD5Checksum(item.getFile().getAbsolutePath()))) {
|
||||
|
||||
|
@ -62,7 +63,7 @@ public abstract class IndexUtil {
|
|||
long time = 0;
|
||||
while (it.hasNext()) {
|
||||
IndexItem item = (IndexItem)it.next();
|
||||
//System.out.println("Adding " + item.getFile() + " (#" + ++i + ")");
|
||||
System.out.println("Adding " + item.getFile() + " (#" + ++i + ")");
|
||||
InputStream inputStream1 = new BufferedInputStream(new FileInputStream(item.getFile()));
|
||||
long start = System.currentTimeMillis();
|
||||
SaxParserFactory.getSaxParser().parse(inputStream1, handler);
|
||||
|
@ -70,18 +71,6 @@ public abstract class IndexUtil {
|
|||
|
||||
}
|
||||
|
||||
/*long start = System.currentTimeMillis();
|
||||
IndexItem item = (IndexItem)index.get(10);
|
||||
//System.out.println("Adding " + item.getFile() + " (#" + ++i + ")");
|
||||
InputStream inputStream1 = new BufferedInputStream(new FileInputStream(item.getFile()));
|
||||
SaxParserFactory.getSaxParser().parse(inputStream1, handler);
|
||||
|
||||
System.out.println(System.currentTimeMillis() - start);*/
|
||||
|
||||
/*JFrame frame = new JFrame();
|
||||
frame.setVisible(true);
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*/
|
||||
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package enginuity.newmaps.ecudata;
|
||||
|
||||
import static enginuity.newmaps.definition.AttributeParser.parseValueString;
|
||||
import static enginuity.newmaps.definition.AttributeParser.stringToStringArray;
|
||||
import java.io.Serializable;
|
||||
|
||||
public class SourceDefAxis extends Axis implements Serializable {
|
||||
|
@ -16,7 +16,7 @@ public class SourceDefAxis extends Axis implements Serializable {
|
|||
}
|
||||
|
||||
public void setValues(String s, String delim) {
|
||||
values = parseValueString(s, delim);
|
||||
values = stringToStringArray(s, delim);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package enginuity.newmaps.ecudata;
|
||||
|
||||
import java.io.Serializable;
|
||||
import static enginuity.newmaps.definition.AttributeParser.stringToByteArray;
|
||||
|
||||
public class Switch extends ECUData implements Serializable {
|
||||
|
||||
|
@ -8,6 +9,9 @@ public class Switch extends ECUData implements Serializable {
|
|||
protected byte[] stateOff = new byte[1];
|
||||
protected int size;
|
||||
|
||||
private int defaultValue = SwitchGroup.DEFAULT_NONE;
|
||||
boolean hidden = false;
|
||||
|
||||
public Switch(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
@ -24,18 +28,40 @@ public class Switch extends ECUData implements Serializable {
|
|||
return stateOn;
|
||||
}
|
||||
|
||||
public void setStateOn(byte[] stateOn) {
|
||||
this.stateOn = stateOn;
|
||||
public void setStateOn(String values) {
|
||||
this.stateOn = stringToByteArray(values, " ");
|
||||
}
|
||||
|
||||
public byte[] getStateOff() {
|
||||
return stateOff;
|
||||
}
|
||||
|
||||
public void setStateOff(byte[] stateOff) {
|
||||
this.stateOff = stateOff;
|
||||
public void setStateOff(String values) {
|
||||
this.stateOff = stringToByteArray(values, " ");
|
||||
}
|
||||
|
||||
public void setDefaultValue(int defaultVal) {
|
||||
this.defaultValue = defaultValue;
|
||||
}
|
||||
|
||||
public int getDefaultValue() {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
public void setDefaultValue(String value) {
|
||||
if (value.equalsIgnoreCase("on")) defaultValue = SwitchGroup.DEFAULT_ON;
|
||||
else if (value.equalsIgnoreCase("off")) defaultValue = SwitchGroup.DEFAULT_OFF;
|
||||
else defaultValue = SwitchGroup.DEFAULT_NONE;
|
||||
}
|
||||
|
||||
public boolean isHidden() {
|
||||
return hidden;
|
||||
}
|
||||
|
||||
public void setHidden(boolean hidden) {
|
||||
this.hidden = hidden;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
String scaleName = "";
|
||||
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
package enginuity.newmaps.ecudata;
|
||||
|
||||
import enginuity.util.NamedSet;
|
||||
|
||||
public class SwitchGroup extends ECUData {
|
||||
|
||||
public static final int DEFAULT_ON = 0;
|
||||
public static final int DEFAULT_OFF = 1;
|
||||
public static final int DEFAULT_NONE = 2;
|
||||
|
||||
private int defaultValue = DEFAULT_NONE;
|
||||
private boolean hidden = false;
|
||||
|
||||
NamedSet<Switch> switches = new NamedSet<Switch>();
|
||||
|
||||
public SwitchGroup(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
public void setDefaultValue(int defaultVal) {
|
||||
this.defaultValue = defaultValue;
|
||||
}
|
||||
|
||||
public int getDefaultValue() {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
public void setDefaultValue(String value) {
|
||||
if (value.equalsIgnoreCase("on")) defaultValue = DEFAULT_ON;
|
||||
else if (value.equalsIgnoreCase("off")) defaultValue = DEFAULT_OFF;
|
||||
else defaultValue = DEFAULT_NONE;
|
||||
}
|
||||
|
||||
public boolean isHidden() {
|
||||
return hidden;
|
||||
}
|
||||
|
||||
public void setHidden(boolean hidden) {
|
||||
this.hidden = hidden;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue