refactored
This commit is contained in:
@@ -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__':
|
||||
|
||||
Reference in New Issue
Block a user