Skip to content

support <clusters> #33

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

Closed
japaric opened this issue Jun 6, 2017 · 5 comments
Closed

support <clusters> #33

japaric opened this issue Jun 6, 2017 · 5 comments

Comments

@japaric
Copy link
Member

japaric commented Jun 6, 2017

these add namespacing to registers and can be nested

@estutzenberger
Copy link
Contributor

I have been working on updates to svd for this. Please take a look at the following output and see if matches your expectation for how clusters should be processed. If the output seems good, I'll push up the changes so that we can review.

A cluster example from nrf52.svd:
<cluster> <name>INFO</name> <description>Device info</description> <addressOffset>0x100</addressOffset> <register> <name>PART</name> <description>Part code</description> <addressOffset>0x000</addressOffset> <access>read-only</access> <resetValue>0x00052832</resetValue> <fields> <field> <name>PART</name> <description>Part code</description> <lsb>0</lsb> <msb>31</msb> <enumeratedValues> <enumeratedValue> <name>N52832</name> <description>nRF52832</description> <value>0x52832</value> </enumeratedValue> <enumeratedValue> <name>Unspecified</name> <description>Unspecified</description> <value>0xFFFFFFFF</value> </enumeratedValue> </enumeratedValues> </field> </fields> </register> <register> <name>VARIANT</name> <description>Part Variant, Hardware version and Production configuration</description> <addressOffset>0x004</addressOffset> <access>read-only</access> <resetValue>0x41414142</resetValue> <fields> <field> <name>VARIANT</name> <description>Part Variant, Hardware version and Production configuration, encoded as ASCII</description> <lsb>0</lsb> <msb>31</msb> <enumeratedValues> <enumeratedValue> <name>AAAA</name> <description>AAAA</description> <value>0x41414141</value> </enumeratedValue> <enumeratedValue> <name>AAAB</name> <description>AAAB</description> <value>0x41414142</value> </enumeratedValue> <enumeratedValue> <name>AABA</name> <description>AABA</description> <value>0x41414241</value> </enumeratedValue> <enumeratedValue> <name>AABB</name> <description>AABB</description> <value>0x41414242</value> </enumeratedValue> <enumeratedValue> <name>Unspecified</name> <description>Unspecified</description> <value>0xFFFFFFFF</value> </enumeratedValue> </enumeratedValues> </field> </fields> </register>

Here is the SVD output:
Cluster(RegisterInfo { name: "INFO", description: "Device info", address_offset: 256, size: None, access: None, reset_value: None, reset_mask: None, fields: None, write_constraint: None, _extensible: () }, RegisterClusterInfo { registers: Some([Single(RegisterInfo { name: "PART", description: "Part code", address_offset: 0, size: None, access: Some(ReadOnly), reset_value: Some(337970), reset_mask: None, fields: Some([Field { name: "PART", description: Some("Part code"), bit_range: BitRange { offset: 0, width: 32 }, access: None, enumerated_values: [EnumeratedValues { name: None, usage: None, derived_from: None, values: [EnumeratedValue { name: "N52832", description: Some("nRF52832"), value: Some(337970), is_default: None, _extensible: () }, EnumeratedValue { name: "Unspecified", description: Some("Unspecified"), value: Some(4294967295), is_default: None, _extensible: () }], _extensible: () }], write_constraint: None, _extensible: () }]), write_constraint: None, _extensible: () }), Single(RegisterInfo { name: "VARIANT", description: "Part Variant, Hardware version and Production configuration", address_offset: 4, size: None, access: Some(ReadOnly), reset_value: Some(1094795586), reset_mask: None, fields: Some([Field { name: "VARIANT", description: Some("Part Variant, Hardware version and Production configuration, encoded as ASCII"), bit_range: BitRange { offset: 0, width: 32 }, access: None, enumerated_values: [EnumeratedValues { name: None, usage: None, derived_from: None, values: [EnumeratedValue { name: "AAAA", description: Some("AAAA"), value: Some(1094795585), is_default: None, _extensible: () }, EnumeratedValue { name: "AAAB", description: Some("AAAB"), value: Some(1094795586), is_default: None, _extensible: () }, EnumeratedValue { name: "AABA", description: Some("AABA"), value: Some(1094795841), is_default: None, _extensible: () }, EnumeratedValue { name: "AABB", description: Some("AABB"), value: Some(1094795842), is_default: None, _extensible: () }, EnumeratedValue { name: "Unspecified", description: Some("Unspecified"), value: Some(4294967295), is_default: None, _extensible: () }], _extensible: () }], write_constraint: None, _extensible: () }]), write_constraint: None, _extensible: () }),

This seems to contain everything but I am not sure if it can be processed as expected by svd2rust.

@japaric
Copy link
Member Author

japaric commented Aug 1, 2017

Could you open a PR? It's hard for me to evaluate from the output you have posted ({:#?} would have been more useful than {:?})

@estutzenberger
Copy link
Contributor

Created. I pulled {:?} from the example in the repo I think. If it's useful, I can change and update the output sample to use {:#?}.

@djmcgill
Copy link

djmcgill commented Oct 4, 2017

This issue can be closed now correct?
It'll mean work can start on rust-embedded/svd2rust#107

@Emilgardis
Copy link
Member

Closed with #38 and cd5aefa

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants