Implemented parsing for new register-group-instance element in TDF scripts
This commit is contained in:
@@ -14,6 +14,7 @@ use Targets\TargetDescriptionFiles\MemorySegmentSection;
|
||||
use Targets\TargetDescriptionFiles\MemorySegmentType;
|
||||
use Targets\TargetDescriptionFiles\Module;
|
||||
use Targets\TargetDescriptionFiles\Peripheral;
|
||||
use Targets\TargetDescriptionFiles\RegisterGroupInstance;
|
||||
use Targets\TargetDescriptionFiles\PhysicalInterface;
|
||||
use Targets\TargetDescriptionFiles\Property;
|
||||
use Targets\TargetDescriptionFiles\PropertyGroup;
|
||||
@@ -325,8 +326,8 @@ class FromXmlService
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($childNode->nodeName === 'register-group-reference') {
|
||||
$output->registerGroupReferences[] = $this->registerGroupReferenceFromElement($childNode);
|
||||
if ($childNode->nodeName === 'register-group-instance') {
|
||||
$output->registerGroupInstances[] = $this->registerGroupInstanceFromElement($childNode);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -356,6 +357,20 @@ class FromXmlService
|
||||
return $output;
|
||||
}
|
||||
|
||||
public function registerGroupInstanceFromElement(DOMElement $element): RegisterGroupInstance
|
||||
{
|
||||
$attributes = $this->getNodeAttributesByName($element);
|
||||
|
||||
return new RegisterGroupInstance(
|
||||
$attributes['key'] ?? null,
|
||||
$attributes['name'] ?? null,
|
||||
$attributes['register-group-key'] ?? null,
|
||||
$attributes['address-space-key'] ?? null,
|
||||
$this->stringService->tryStringToInt($attributes['offset'] ?? null),
|
||||
$attributes['description'] ?? null
|
||||
);
|
||||
}
|
||||
|
||||
public function signalFromElement(DOMElement $element): Signal
|
||||
{
|
||||
$attributes = $this->getNodeAttributesByName($element);
|
||||
|
||||
@@ -9,6 +9,7 @@ use Targets\TargetDescriptionFiles\MemorySegment;
|
||||
use Targets\TargetDescriptionFiles\MemorySegmentSection;
|
||||
use Targets\TargetDescriptionFiles\Module;
|
||||
use Targets\TargetDescriptionFiles\Peripheral;
|
||||
use Targets\TargetDescriptionFiles\RegisterGroupInstance;
|
||||
use Targets\TargetDescriptionFiles\PhysicalInterface;
|
||||
use Targets\TargetDescriptionFiles\Pin;
|
||||
use Targets\TargetDescriptionFiles\Pinout;
|
||||
@@ -135,8 +136,8 @@ class ToXmlService
|
||||
$element->setAttribute('name', $peripheral->name);
|
||||
$element->setAttribute('module-key', $peripheral->moduleKey);
|
||||
|
||||
foreach ($peripheral->registerGroupReferences as $registerGroupReference) {
|
||||
$element->append($this->registerGroupReferenceToXml($registerGroupReference, $document));
|
||||
foreach ($peripheral->registerGroupInstances as $registerGroupInstance) {
|
||||
$element->append($this->registerGroupInstanceToXml($registerGroupInstance, $document));
|
||||
}
|
||||
|
||||
if (!empty($peripheral->signals)) {
|
||||
@@ -151,6 +152,25 @@ class ToXmlService
|
||||
return $element;
|
||||
}
|
||||
|
||||
public function registerGroupInstanceToXml(
|
||||
RegisterGroupInstance $registerGroupInstance,
|
||||
DOMDocument $document
|
||||
): DOMElement {
|
||||
$element = $document->createElement('register-group-instance');
|
||||
$element->setAttribute('key', $registerGroupInstance->key);
|
||||
$element->setAttribute('name', $registerGroupInstance->name);
|
||||
|
||||
if (!empty($registerGroupInstance->description)) {
|
||||
$element->setAttribute('description', $registerGroupInstance->description);
|
||||
}
|
||||
|
||||
$element->setAttribute('register-group-key', $registerGroupInstance->registerGroupKey);
|
||||
$element->setAttribute('address-space-key', $registerGroupInstance->addressSpaceKey);
|
||||
$element->setAttribute('offset', $this->stringService->tryIntToHex($registerGroupInstance->offset));
|
||||
|
||||
return $element;
|
||||
}
|
||||
|
||||
public function signalToXml(Signal $signal, DOMDocument $document): DOMElement
|
||||
{
|
||||
$element = $document->createElement('signal');
|
||||
|
||||
Reference in New Issue
Block a user