-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
XML Format #9
Comments
I like the idea. TunerPro is pretty close to XML as it sits, and there's many ways to programmatically parse XML (I'm partial to node.js). We could read the version-specific TunerPro XDFs, match the parameter names together, then have the version-specific offsets under each parameter. It would really drastically reduce management overhead of the repo (i.e., if you need to update the XDF header, parameter description, formula, min/max, data type, decimal places, categories, etc., as it sits, you have to do it across every file) Plus, just looking at the combined file might help paint a picture of differences between versions. I've had to scavenge from MSS54 and MSS54HP across the full range to help create my MSS52 XDF. When creating the file, we could also add additional fields/keys that don't exist in the TunerPro format - like the additional/debug data in each description field for the output from the original XDF generator could be split out. You could then re-generate the version-specific TunerPro XDFs from that file. Might also include options to not include things like debug data. Since the only ordering methodology TunerPro recognizes for categories and parameters is the literal order they are in the file, and has no support for dynamic ordering like alphabetical or by binary offset, we might include XDF generation options for those, since it would be easy to do programmatically but is a massive pain to do manually (I've done it - since I'm fairly OCD about those kinds of things) As far as the "master" file being XML - any particular reason you're partial to that format? Versus something like JSON or YAML, that is. |
I’m currently developing a app written in C# which would parse the xdf, and merge them to a generic format.
Each sw-version can override the parameters of the parent node.
The generic format is also in XML, that is „easy“ to serialize/deserializer with .NET Framework :)
Am 20.08.2019 um 15:16 schrieb Ken Malinich <notifications@github.com<mailto:notifications@github.com>>:
I like the idea.
TunerPro is pretty close to XML as it sits, and there's many ways to programmatically parse XML (I'm partial to node.js).
We could read the per-version TunerPro XDFs, match the parameter names together, then have the per-version offsets under each parameter. It would really drastically reduce management overhead of the repo (i.e., if you need to update the XDF header, parameter description, formula, min/max, data type, decimal places, categories, etc., as it sits, you have to do it across every file)
Plus, just looking at the combined file might help paint a picture of differences between versions. I've had to scavenge from MSS54 and MSS54HP across the full range to help create my MSS52 XDF.
As far as the "master" file being XML - any particular reason you're partial to that format? Versus something like JSON or YAML, that is.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub<#9?email_source=notifications&email_token=AL7Q7IOHNRKJCHXVROFQ6ZLQFPVDHA5CNFSM4ILLX6GKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4WH5IQ#issuecomment-523009698>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AL7Q7ILFBNJLU6BXVGHVA43QFPVDHANCNFSM4ILLX6GA>.
|
Threw this out there as it may be a better method especially if one has to fix offsets as that will still be labor intensive:
|
From Terra:
|
I think this would be the way to move forward: get rid of what we don't need, maybe even write up/document how to upgrade so that we have less XDFs for the tool to parse and help us fix. |
So i can report some progress, i can merge xdf-parameters (till now only constants) together. <parameter guid="1f5d7f5e-0ac0-4f5d-806a-6cd48aedfeb6">
<id>K_MD_SK_NHYS</id>
<addedByVersion>0401</addedByVersion>
<DateCreated>2019-08-25T20:13:31.834282+02:00</DateCreated>
<DateModified>2019-08-25T20:13:31.834284+02:00</DateModified>
<xdfParamType>XDF.XDFCONSTANT</xdfParamType>
<XDFCONSTANT uniqueid="0x895" vislevel="10">
<title>K_MD_SK_NHYS</title>
<description>K_MD_SK_NHYS 950A&#013;&#010;HW:108 Version:211323002001J424&#013;&#010;Created by find routine V0.35&#013;&#010;BMWFlash/Galleto File Orientation [Slave Master]&#013;&#010;Matched Length: 11 MatchRatio: 1.00&#013;&#010;BlockFound: 0 NearbyBlockMatch: 19 Var: 2197 HasDuplicate?: No &#013;&#010;Units- "Upm" &#013;&#010;Function: SK-Momentenmanager SizeChange: 0 &#013;&#010;</description>
<CATEGORYMEM index="2" category="58" />
<EMBEDDEDDATA mmedaddress="0x950A" mmedelementsizebits="16" mmedmajorstridebits="0" mmedminorstridebits="0" />
<units>"Upm"</units>
<datatype>0</datatype>
<unittype>0</unittype>
<DALINK index="0" />
<MATH equation="x">
<VAR id="x" />
</MATH>
</XDFCONSTANT>
<xdfParamVersionOverrides versionId="2001">
<XDFCONSTANT>
<description>K_MD_SK_NHYS 950A&#013;&#010;HW:108 Version:211323002001J424&#013;&#010;Created by find routine V0.35&#013;&#010;BMWFlash/Galleto File Orientation [Slave Master]&#013;&#010;Matched Length: 11 MatchRatio: 1.00&#013;&#010;BlockFound: 0 NearbyBlockMatch: 19 Var: 2197 HasDuplicate?: No &#013;&#010;Units- "Upm" &#013;&#010;Function: SK-Momentenmanager SizeChange: 0 &#013;&#010;</description>
<EMBEDDEDDATA mmedaddress="0x950A" mmedelementsizebits="16" mmedmajorstridebits="0" mmedminorstridebits="0" />
</XDFCONSTANT>
</xdfParamVersionOverrides>
</parameter> So the override section can override every xml-node in the parent node which is version depend. Any ideas how we should handle the categories? |
Curious, what is your end goal with this? Another update from Terra
So with that, why not consolidate the XDF parser tool when we can consolidate it to 5 or less? |
Hm, for example, i bought my car with a mapped 2001 version but currently im running 0401 (csl) on my ecu. For me that is now little more work to do but later we can generate as many XDFs we want :-) |
Sorry guys but im currently very busy.. but this project is always in my focus :-)
|
Not a problem at all. Feel free to add some organization for your program so that others may help with the code if they get involved, or if you feel, make your own repository and invite others, however you want to proceed. |
I'm still thinking about how this would work. Also, not to add complication.. but as an E39 M5 owner, I'd kind of feel bad leaving MSS52 out in the cold. And on the note of categories - when working on my (incomplete) XDF for my M5, I went in a pretty different direction compared to any XDFs (for any make/model/engine/transmission) that I've seen - maybe load it up in TunerPro to see if it stimulates any ideas. |
@kmalinich my program i am working on will be a generic xdf-format parser/generator. This should then also work for a MSS52. So far only the XDFTables parser is missing, XDFConstants and XDFFunctions are working. <parameter guid="f3360633-157c-47e8-bf09-1f4524a4b6d5">
<id>KL_EDK_VORST</id>
<addedByVersion>2001</addedByVersion>
<DateCreated>2019-10-08T21:13:22.6754729+02:00</DateCreated>
<DateModified>2019-10-08T21:13:22.6754729+02:00</DateModified>
<xdfParamType>XDF.XDFFUNCTION</xdfParamType>
<XDFFUNCTION uniqueid="0xB2" vislevel="10" flags="0x0">
<title>KL_EDK_VORST</title>
<description>KL_EDK_VORST 8146&#013;&#010;HW:108 Version:211323002001J424&#013;&#010;Created by find routine V0.35&#013;&#010;BMWFlash/Galleto File Orientation [Slave Master]&#013;&#010;Matched Length: 41 MatchRatio: 1.00&#013;&#010;BlockFound: 0 NearbyBlockMatch: 20 Var: 178 HasDuplicate?: No &#013;&#010;Units- X: "%" Y: "%tv" &#013;&#010;Named- X: edk_s Function: EDK SizeChange: 0 &#013;&#010;</description>
<CATEGORYMEM index="2" category="24" />
<XDFAXIS id="x" uniqueid="0x0">
<EMBEDDEDDATA mmedaddress="0x8132" mmedelementsizebits="16" mmedcolcount="10" mmedmajorstridebits="16" mmedminorstridebits="0" />
<units>"%"</units>
<indexcount>10</indexcount>
<embedinfo type="1" />
<datatype>0</datatype>
<unittype>0</unittype>
<DALINK index="0" />
<MATH equation="x/10">
<VAR id="x" />
</MATH>
</XDFAXIS>
<XDFAXIS id="y" uniqueid="0x0">
<EMBEDDEDDATA mmedaddress="0x8146" mmedelementsizebits="16" mmedcolcount="10" mmedmajorstridebits="16" mmedminorstridebits="0" />
<indexcount>10</indexcount>
<decimalpl>1</decimalpl>
<embedinfo type="1" />
<datatype>0</datatype>
<unittype>0</unittype>
<DALINK index="0" />
<MATH equation="x/20">
<VAR id="x" />
</MATH>
</XDFAXIS>
</XDFFUNCTION>
<xdfParamVersionOverrides versionId="2001" />
<xdfParamVersionOverrides versionId="0401">
<XDFFUNCTION>
<description>KL_EDK_VORST 8146&#013;&#010;HW:211 Version:211325000401PD11&#013;&#010;Created by find routine V0.55&#013;&#010;BMWFlash/Galleto File Orientation [Slave Master]&#013;&#010;Matched Length: 41 MatchRatio: 1.00&#013;&#010;BlockFound: 0 NearbyBlockMatch: -1 Var: 178 HasDuplicate?: No &#013;&#010;Units- X: "%" Y: "%tv" &#013;&#010;Named- X: edk_s Function: EDK SizeChange: 0 &#013;&#010;Description: None &#013;&#010;&#013;&#010;</description>
</XDFFUNCTION>
</xdfParamVersionOverrides>
</parameter> For the moment i will save every ecu versions category-definitions in the generic xml. |
Any updates? |
Hey guys im sorry but i lost the focus at this project... |
Thanks for the update! I can't blame you for losing focus. BTW if anyone has anything to add to the wiki, please do so. As it seems m3 forum is down, maybe a synopsis of how tables play together such as when certain vanos and throttle maps are applied.... |
I did some work on this thing after the answer from the tunerpro developer which cannot help me providing some code.
Merging all together produces a 30MB XML-File.. but its the easiest way for editing i think. I would suggest that we start with one big storage and release xdf-packages once we think its time for. Otherwise we will flood the internet with xdf versions and nobody can rely on a versionnumber. |
I am not sure to be honest, but I think maybe it could be wise to start a thread on m3forum.us. I think you could get more feedback there in the nearer future? |
We have to create a generic XML Format, I thought that we use the known parameter name as a unique identifier and then add all version-specific things as ChildNodes in the XML-Format.
The text was updated successfully, but these errors were encountered: