Added target address space and memory segment descriptor structs
This commit is contained in:
@@ -159,6 +159,20 @@ namespace Targets::TargetDescription
|
||||
return peripheral->get();
|
||||
}
|
||||
|
||||
std::map<
|
||||
TargetAddressSpaceDescriptorId,
|
||||
TargetAddressSpaceDescriptor
|
||||
> TargetDescriptionFile::targetAddressSpaceDescriptorsById() const {
|
||||
auto output = std::map<TargetAddressSpaceDescriptorId, TargetAddressSpaceDescriptor>();
|
||||
|
||||
for (const auto& [key, addressSpace] : this->addressSpacesByKey) {
|
||||
auto descriptor = this->targetAddressSpaceDescriptorFromAddressSpace(addressSpace);
|
||||
output.emplace(descriptor.id, std::move(descriptor));
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
void TargetDescriptionFile::init(const std::string& xmlFilePath) {
|
||||
auto file = QFile(QString::fromStdString(xmlFilePath));
|
||||
if (!file.exists()) {
|
||||
@@ -675,4 +689,40 @@ namespace Targets::TargetDescription
|
||||
TargetDescriptionFile::getAttribute(xmlElement, "package")
|
||||
);
|
||||
}
|
||||
|
||||
TargetAddressSpaceDescriptor TargetDescriptionFile::targetAddressSpaceDescriptorFromAddressSpace(
|
||||
const AddressSpace& addressSpace
|
||||
) {
|
||||
auto output = TargetAddressSpaceDescriptor(
|
||||
addressSpace.key,
|
||||
addressSpace.startAddress,
|
||||
addressSpace.size,
|
||||
addressSpace.endianness.value_or(TargetMemoryEndianness::LITTLE),
|
||||
{}
|
||||
);
|
||||
|
||||
for (const auto& [key, memorySegment] : addressSpace.memorySegmentsByKey) {
|
||||
output.segmentDescriptorsByKey.emplace(
|
||||
key,
|
||||
TargetDescriptionFile::targetMemorySegmentDescriptorFromMemorySegment(memorySegment)
|
||||
);
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
TargetMemorySegmentDescriptor TargetDescriptionFile::targetMemorySegmentDescriptorFromMemorySegment(
|
||||
const MemorySegment& memorySegment
|
||||
) {
|
||||
return TargetMemorySegmentDescriptor(
|
||||
memorySegment.key,
|
||||
memorySegment.name,
|
||||
memorySegment.type,
|
||||
memorySegment.startAddress,
|
||||
memorySegment.size,
|
||||
memorySegment.access,
|
||||
memorySegment.access,
|
||||
memorySegment.pageSize
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
#include "Variant.hpp"
|
||||
|
||||
#include "src/Targets/TargetFamily.hpp"
|
||||
#include "src/Targets/TargetAddressSpaceDescriptor.hpp"
|
||||
#include "src/Targets/TargetMemorySegmentDescriptor.hpp"
|
||||
#include "src/Targets/TargetPhysicalInterface.hpp"
|
||||
|
||||
namespace Targets::TargetDescription
|
||||
@@ -103,6 +105,8 @@ namespace Targets::TargetDescription
|
||||
) const;
|
||||
[[nodiscard]] const Peripheral& getPeripheral(std::string_view key) const;
|
||||
|
||||
std::map<TargetAddressSpaceDescriptorId, TargetAddressSpaceDescriptor> targetAddressSpaceDescriptorsById() const;
|
||||
|
||||
protected:
|
||||
std::map<std::string, std::string> deviceAttributesByName;
|
||||
std::map<std::string, PropertyGroup, std::less<void>> propertyGroupsByKey;
|
||||
@@ -147,5 +151,13 @@ namespace Targets::TargetDescription
|
||||
static Pinout pinoutFromXml(const QDomElement& xmlElement);
|
||||
static Pin pinFromXml(const QDomElement& xmlElement);
|
||||
static Variant variantFromXml(const QDomElement& xmlElement);
|
||||
|
||||
static TargetAddressSpaceDescriptor targetAddressSpaceDescriptorFromAddressSpace(
|
||||
const AddressSpace& addressSpace
|
||||
);
|
||||
|
||||
static TargetMemorySegmentDescriptor targetMemorySegmentDescriptorFromMemorySegment(
|
||||
const MemorySegment& memorySegment
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user