Added Signal elements to PhysicalInterface elements in TDFs

This commit is contained in:
Nav
2024-10-03 22:45:24 +01:00
parent e522261991
commit af865d09e5
265 changed files with 2696 additions and 387 deletions

View File

@@ -191,7 +191,28 @@ class FromXmlService
public function physicalInterfaceFromElement(DOMElement $element): PhysicalInterface
{
$attributes = $this->getNodeAttributesByName($element);
return new PhysicalInterface($attributes['value'] ?? null);
$output = new PhysicalInterface($attributes['value'] ?? null, []);
$signalsElements = $element->getElementsByTagName('signals');
if ($signalsElements->count() > 1) {
throw new XmlParsingException('Unexpected number of "signals" elements');
}
$signalElement = $signalsElements->item(0);
if ($signalElement instanceof DOMElement) {
foreach ($signalElement->childNodes as $childNode) {
if (!$childNode instanceof DOMElement) {
continue;
}
if ($childNode->nodeName === 'signal') {
$output->signals[] = $this->signalFromElement($childNode);
}
}
}
return $output;
}
public function moduleFromElement(DOMElement $element): Module

View File

@@ -132,6 +132,15 @@ class ToXmlService
$element = $document->createElement('physical-interface');
$element->setAttribute('value', $physicalInterface->value);
if (!empty($physicalInterface->signals)) {
$signalsElement = $document->createElement('signals');
foreach ($physicalInterface->signals as $signal) {
$signalsElement->append($this->signalToXml($signal, $document));
}
$element->append($signalsElement);
}
return $element;
}