def timesForSamples(numSamples, acToStFunc, acFirstSampleStart, acLastSampleEnd):
    """\
    Calculates the sync timeline times corresponding 
    
    :param numSamples: number of samples over the period
    :param acToStFunc: function that converts arduino time (nanos) to sync timeline ticks and error bound tick tuples
    :param acFirstSampleStart: arduino time (nanos) of the beginning of the first sample period 
    :param acLastSampleEnd: arduino time (nanos) of the end of the last sample period 

    :returns: list of tuples of sync timeline time (ticks) and error bound (ticks) corresponding to start of each sample (or end of previous)
    """
    stTimesErrs = []
    for i in range(0,numSamples+1):
        acTime = acFirstSampleStart + float(acLastSampleEnd - acFirstSampleStart) * i / numSamples
        (tTicks, errTicks) = acToStFunc(acTime)
        stTimesErrs.append( (tTicks, errTicks) )
        
    return stTimesErrs