import sys
import warnings
if not sys.warnoptions:
    warnings.simplefilter("ignore")
import traceback
import h5py
import numpy as np

# return value
RET_OK = 0
RET_EXCEPTION = 1
RET_PARAMETER_ERR = 2

def internal_read_string(Ah5, ALst, AStr, All):
    if AStr not in ALst:
        return All
    v = Ah5[AStr]
    ss = v[:, 0]
    s = AStr + "=" + "".join([chr(itm) for itm in ss])
    if All == "":
        All = s
    else:
        All = All + ";" + s
    return All

# read_mat_info(r'C:\LC_Ramdisk\a.mat')
def read_mat_info(AMatFileName):    
    f = h5py.File(AMatFileName, 'r')
    lstNames = list(f.keys())
    sAll = ""
    try:
        sAll = internal_read_string(f, lstNames, "MeasurementStartTimeStr", sAll)
        sAll = internal_read_string(f, lstNames, "MeasurementStopTimeStr", sAll)
        sAll = internal_read_string(f, lstNames, "ECU_LIST", sAll)
        sAll = internal_read_string(f, lstNames, "Comment", sAll)
        sAll = internal_read_string(f, lstNames, "MeasurementComments", sAll)        
        return RET_OK
    except:
        traceback.print_exc()
        return RET_EXCEPTION
    finally:
        print(sAll)

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print("Parameter error")
        for i in range(0, len(sys.argv)):
            print("Parameter " + str(i) + ": " + sys.argv[i])
        sys.exit(RET_PARAMETER_ERR)
    else:
        sys.exit(read_mat_info(sys.argv[1]))

