def METHOD_NAME(self, waveform: str, starttime: datetime, endtime: datetime, resample: bool=True, fill_value:str='latest'):
    print(('readdisc', starttime, endtime))
    rawdata, channel, wavename = self.wavemeta[waveform]
    ntwk = re.sub('([^.]+)(.*)','\\1', wavename)
    sttn = re.sub('([^.]+\.)([^.]+)(.*)','\\2', wavename)
    if starttime is None:
        starttime = channel.start_date
    if endtime is None:
        endtime = channel.end_date
    outwave = rawdata.get_waveforms(network=ntwk, station=sttn, location=channel.location_code, \
                        channel=channel.code, starttime=starttime, endtime=endtime, tag="raw_recording")
    if len(outwave)>0:
        gaps = outwave.get_gaps()
        mergewave = outwave[0]
        for w in outwave[1:]:
            mergewave = mergewave.__add__(w,fill_value=fill_value)
        outwave = mergewave
        rate = round(float(len(outwave.data)) / self.numofsamples)
        if resample == False or rate<=1:
            pass
        elif rate>16:
            tmp = trace.Trace()
            tmp.data = outwave.data[::rate].copy()
            tmp.meta['delta'] = outwave.meta['delta'] * rate
            tmp.meta['starttime'] = outwave.meta['starttime']
            outwave = tmp  # .decimate(1, True)
            #print(outwave.meta['endtime'], 'new endtime  ')
        elif rate>=1:
            outwave.decimate(rate)
    else:
        outwave = trace.Trace()
        outwave.data = np.array([np.nan]*self.numofsamples)
        outwave.meta['starttime'] = starttime
        outwave.meta['delta'] = (endtime-starttime)/self.numofsamples
    # print(channel.start_date, channel.end_date,'==================')
    print("reading finished")
    return outwave, wavename, channel.start_date, channel.end_date, gaps