refactored

This commit is contained in:
2025-08-11 18:00:14 +02:00
parent 46f6d9a763
commit 682e8ca232
+31 -24
View File
@@ -1,27 +1,20 @@
# This is a sample Python script.
import enum
# Press Umschalt+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
import os
import re
import struct
from argparse import ArgumentParser
from io import BytesIO
from typing import BinaryIO
import hashlib
import json
import abc
from pygccxml.declarations import unsigned_int_t
class AImage(object):
class AImage(abc.ABC):
def __init__(self, folder: str, output_dir: str = "out"):
self.folder = folder
self.out_path = os.path.join(folder, output_dir)
os.makedirs(self.out_path, exist_ok=True)
def parse(self):
pass
return False
def version(self):
pass
@@ -131,20 +124,23 @@ class WaldorfMicroWave2V00(AImage):
def __init__(self, folder: str, out_dir="."):
AImage.__init__(self, folder, out_dir)
self._is_valid = False
def parse(self):
filename_hi = None
filename_lo = None
for filename in os.listdir(folder):
filepath = os.path.join(folder, filename)
for filename in os.listdir(self.folder):
filepath = os.path.join(self.folder, filename)
if re.match('.*_H.bin', filename):
filename_hi = filepath
if re.match('.*_L.bin', filename):
filename_lo = filepath
if filename_hi is None:
return
return False
if filename_lo is None:
return
return False
data, data_hi, data_lo = self.combine(filename_hi, filename_lo)
@@ -158,6 +154,7 @@ class WaldorfMicroWave2V00(AImage):
wave_table = self.wave_table_extract(self.wave_tables_descr, data_hi, data_lo)
self._json_save("wave_table.json", wave_table)
return self._is_valid
@staticmethod
def wave_extract(descr, data_hi, data_lo):
@@ -170,7 +167,6 @@ class WaldorfMicroWave2V00(AImage):
@staticmethod
def wave_table_extract(descr, data_hi, data_lo):
data = []
table_count = 0
pos = 0
@@ -209,32 +205,43 @@ class PpgEvu2v00(AImage):
class WaldorfMicrowaveXT(AImage):
def __init__(self, folder: str, out_dir="."):
AImage.__init__(self, folder, out_dir)
def parse(self):
filename_hi = None
filename_lo = None
for filename in os.listdir(folder):
filepath = os.path.join(folder, filename)
for filename in os.listdir(self.folder):
filepath = os.path.join(self.folder, filename)
if re.match('upper_.*.bin', filename):
filename_hi = filepath
if re.match('lower_.*.bin', filename):
filename_lo = filepath
if filename_hi is None:
return
return False
if filename_lo is None:
return
return False
data, data_hi, data_lo = self.combine(filename_lo, filename_hi)
self._save("combined_be.bin", data)
return True
def detect(args):
image = WaldorfMicroWave2V00(args.folder, args.output_dir)
image = WaldorfMicrowaveXT(args.folder, args.output_dir)
pass
wave_obj_list = [
WaldorfMicroWave2V00(args.folder, args.output_dir),
WaldorfMicrowaveXT(args.folder, args.output_dir)
]
for wave_obj in wave_obj_list:
if wave_obj.parse():
return wave_obj
return None
def main(args):
image_type = detect(args)
result = detect(args)
print(f"Detected parser: {result}")
if __name__ == '__main__':