use of net.sourceforge.usbdm.peripheralDatabase.DeviceFileList in project usbdm-eclipse-plugins by podonoghue.
the class CreatePeripheralDatabase method createExpandedSvdFilesFromList.
/**
* Produces expanded (single file per target) SVD files (based on deviceList.xml)
*
* @param sourceFolderPath Should contain "DeviceList.xml" file
* @param destinationFolderPath Where to write expanded files to
*
* @throws Exception
*/
static void createExpandedSvdFilesFromList(Path sourceFolderPath, Path destinationFolderPath, boolean optimise) throws Exception {
FileFilter fileFilter = new FileFilter(firstFileToProcess, firstFileToReject);
if (Files.exists(destinationFolderPath)) {
System.err.flush();
System.err.println("Destination already exists " + destinationFolderPath);
return;
}
// Set optimisations
ModeControl.setExtractComplexStructures(optimise);
ModeControl.setExtractDerivedPeripherals(optimise);
ModeControl.setExtractSimpleRegisterArrays(optimise);
ModeControl.setMapFreescalePeriperalCommonNames(optimise);
ModeControl.setGenerateFreescaleRegisterMacros(optimise);
ModeControl.setRegenerateAddressBlocks(optimise);
// ModeControl.setExtractCommonPrefix(optimise);
destinationFolderPath.toFile().mkdir();
DeviceFileList deviceFileList = new DeviceFileList(sourceFolderPath.resolve(DEVICE_LIST_FILENAME));
ArrayList<DeviceSvdInfo> list = deviceFileList.getArrayList();
for (DeviceSvdInfo pair : list) {
if (fileFilter.skipFile(pair.deviceName)) {
continue;
}
System.err.println("Processing File : \"" + pair.svdName + "\"");
try {
// Read device description
DevicePeripherals devicePeripherals = new DevicePeripherals(sourceFolderPath.resolve(pair.svdName + ".svd.xml"));
// Optimise peripheral database
devicePeripherals.optimise();
devicePeripherals.setName(pair.deviceName);
// Create SVD file
Path svdFilePath = destinationFolderPath.resolve(devicePeripherals.getName() + ".svd.xml");
System.err.println("Creating : \"" + svdFilePath + "\"");
devicePeripherals.writeSVD(svdFilePath);
} catch (Exception e) {
e.printStackTrace();
}
}
}
use of net.sourceforge.usbdm.peripheralDatabase.DeviceFileList in project usbdm-eclipse-plugins by podonoghue.
the class CreatePeripheralDatabase method createHeaderFilesFromList.
/**
* Produces a set of header files from SVD files (based on deviceList.xml)
* Each header file represent a device family with similar peripherals
*
* @param sourceFolderPath Should contain "DeviceList.xml" file
* @param destinationFolderPath Where to write header files to
* @param removeFolder Destination folder will be deleted (otherwise files just overwrite/accumulate)
*
* @throws Exception
*/
static void createHeaderFilesFromList(Path sourceFolderPath, Path destinationFolderPath, boolean removeFolder) throws Exception {
FileFilter fileFilter = new FileFilter(firstFileToProcess, firstFileToReject);
if (Files.exists(destinationFolderPath)) {
if (!removeFolder) {
System.err.println("Destination already exists " + destinationFolderPath);
} else {
System.err.println("Destination already exists - deleting " + destinationFolderPath);
removeDirectoryTree(destinationFolderPath);
}
}
// Set options
ModeControl.setFreescaleFieldNames(true);
ModeControl.setMapFreescalePeriperalCommonNames(true);
ModeControl.setGenerateFreescaleRegisterMacros(false);
ModeControl.setUseShiftsInFieldMacros(true);
// Don't optimise
ModeControl.setExtractComplexStructures(false);
ModeControl.setExtractDerivedPeripherals(false);
ModeControl.setExtractSimpleRegisterArrays(false);
ModeControl.setRegenerateAddressBlocks(false);
destinationFolderPath.toFile().mkdir();
DeviceFileList deviceFileList = new DeviceFileList(sourceFolderPath.resolve(DEVICE_LIST_FILENAME));
// Get full list of devices
ArrayList<DeviceSvdInfo> list = deviceFileList.getArrayList();
// Map of already copied files to prevent multiple copying
HashSet<String> copiedFiles = new HashSet<String>();
for (int index = 0; index < list.size(); index++) {
DeviceSvdInfo pair = list.get(index);
if (fileFilter.skipFile(pair.deviceName)) {
continue;
}
System.err.println("Processing File : \"" + pair.deviceName + "\"");
try {
// Don't produce the same file!
if (copiedFiles.contains(pair.svdName)) {
continue;
}
copiedFiles.add(pair.svdName);
// Read device description
DevicePeripherals devicePeripherals = new DevicePeripherals(sourceFolderPath.resolve(pair.svdName + ".svd.xml"));
devicePeripherals.sortPeripherals();
devicePeripherals.setName(pair.svdName);
devicePeripherals.addEquivalentDevice(pair.deviceName);
for (int index2 = index + 1; index2 < list.size(); index2++) {
if (pair.svdName.equalsIgnoreCase(list.get(index2).svdName)) {
devicePeripherals.addEquivalentDevice(list.get(index2).deviceName);
}
}
// Create header file
Path headerFilePath = destinationFolderPath.resolve(devicePeripherals.getName() + ".h");
System.err.println("Creating : \"" + headerFilePath + "\"");
devicePeripherals.writeHeaderFile(headerFilePath);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Aggregations