Additional register and fuse validation (for AVR8 TDFs)

This commit is contained in:
Nav
2024-06-02 14:05:34 +01:00
parent 4944435ef6
commit dce803b2f3
3 changed files with 50 additions and 12 deletions

View File

@@ -483,19 +483,24 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
return $output;
}
public function getFuseTargetPeripheral(): ?TargetPeripheral
{
return $this->getTargetPeripheral('fuse');
}
public function getFuseTargetRegisterGroup(): ?TargetRegisterGroup
{
return $this->getFuseTargetPeripheral()?->getRegisterGroup("fuse");
}
public function getFuseBitsDescriptor(string $fuseBitFieldKey): ?FuseBitsDescriptor
{
$peripheral = $this->getTargetPeripheral('fuse') ?? $this->getTargetPeripheral('nvm');
if ($peripheral instanceof TargetPeripheral) {
$fuseRegisterGroup = $peripheral->getRegisterGroup('fuse')
?? $peripheral->getRegisterGroup('nvm_fuses');
if ($fuseRegisterGroup instanceof TargetRegisterGroup) {
foreach ($fuseRegisterGroup->registers as $fuseRegister) {
foreach ($fuseRegister->bitFields as $bitField) {
if ($bitField->key === $fuseBitFieldKey) {
return new FuseBitsDescriptor($fuseRegister->name);
}
$fuseRegisterGroup = $this->getFuseTargetRegisterGroup();
if ($fuseRegisterGroup instanceof TargetRegisterGroup) {
foreach ($fuseRegisterGroup->registers as $fuseRegister) {
foreach ($fuseRegister->bitFields as $bitField) {
if ($bitField->key === $fuseBitFieldKey) {
return new FuseBitsDescriptor($fuseRegister->name);
}
}
}