1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
mod utils;
use patch_svd::get_patched_svd;
#[test]
fn test_patched_register() {
let patch = r#"
device:
peripherals:
peripheral:
$modify:
registers:
register:
derivedFrom: SomeOtherRegister
dim: 22
dimIncrement: 33
dimIndex: 44
dimName: DimName
dimArrayIndex:
headerEnumName: SomeHeaderEnumName
enumeratedValue:
name: EnumValueName
description: EnumValue Description
value:
value: 55
name: "Register2"
displayName: "Register2 Display Name"
description: "Register2 Description"
alternateGroup: AlternateGroupName
alternateRegister: AlternateRegisterName
addressOffset: 66
size: 77
access: writeOnce
protection: p
resetValue: 88
resetMask: 99
dataType: int64_t *
modifiedWriteValues: oneToToggle
writeConstraint: UseEnumeratedValues
readAction: ModifyExternal
fields:
- field:
- derivedFrom: SomeOtherField
- dim: 10
- dimIncrement: 11
- dimIndex: 12
- dimName: SomeFieldDimName
- dimArrayIndex:
headerEnumName: SomeOtherHeaderEnumName
enumeratedValue:
name: SomeOtherEnumValueName
description: Some Other Enum Value Description
value: default
- name: FieldName
- description: Field Description
- bitOffset: 131
- bitWidth: 132
- lsb: 133
- msb: 134
- bitRange: "\\[15:2\\]"
- access: writeOnce
- modifiedWriteValues: set
- writeConstraint:
Range:
minimum: 14
maximum: 15
- readAction: ModifyExternal
- +enumeratedValues:
derivedFrom: SomeOtherReadEnumName
name: SomeReadEnumName
headerEnumName: SomeHeaderReadEnumName
usage: Read
enumeratedValue:
name: SomeReadEnumeratedValueName
description: Some Read EnumeratedValue Description
value:
value: 16
"#;
let result = get_patched_svd(utils::SPARSE_PERIPHERAL.to_string(), patch.to_string());
assert!(result.is_err());
}