protected override SiPunch[] ExtractPunches(long startTime) { var punches = new SiPunch[RawNbPunches()]; int punchesStart = PunchesStartIndex(); long refTime = startTime; for (int i = 0; i < punches.Length; i++) { int punchIndex = punchesStart + (DOUBLE_WORD * i); long punchTime = AdvanceTimePast(ExtractFullTime(punchIndex), refTime); punches[i] = new SiPunch(ExtractCode(punchIndex), punchTime); refTime = NewRefTime(refTime, punchTime); } return(punches); }
public override ISiDataFrame StartingAt(long zerohour) { startTime = AdvanceTimePast(ExtractStartTime(), zerohour); checkTime = AdvanceTimePast(ExtractCheckTime(), zerohour); long refTime = NewRefTime(zerohour, startTime); punches = ExtractPunches(refTime); if (punches.Length > 0) { SiPunch lastPunch = punches[punches.Length - 1]; refTime = NewRefTime(refTime, lastPunch.Timestamp); } finishTime = AdvanceTimePast(ExtractFinishTime(), refTime); return(this); }
public override ISiDataFrame StartingAt(long zerohour) { startTime = AdvanceTimePast(RawStartTime(), zerohour); checkTime = AdvanceTimePast(RawCheckTime(), zerohour); long refTime = NewRefTime(zerohour, startTime); punches = ComputeShiftedPunches(refTime); if (punches.Length > 0) { SiPunch lastTimedPunch = punches[NbTimedPunches(punches) - 1]; refTime = NewRefTime(refTime, lastTimedPunch.Timestamp); } finishTime = AdvanceTimePast(RawFinishTime(), refTime); return(this); }
protected override SiPunch[] ExtractPunches(long startTime) { var punches = new SiPunch[RawNbPunches()]; int punchesStart = siSeries.PunchesPageStartIndex; long refTime = startTime; for (int i = 0; i < punches.Length; i++) { int punchIndex = (punchesStart + i) * PAGE_SIZE; long punchTime = AdvanceTimePast(ExtractFullTime(punchIndex), refTime); punches[i] = new SiPunch(ExtractCode(punchIndex), punchTime); refTime = NewRefTime(refTime, punchTime); } return(punches); }
private SiPunch[] ComputeShiftedPunches(long startTime) { int nbPunches = RawNbPunches(); var punches = new SiPunch[nbPunches]; int nbTimedPunches = Si5DataFrame.NbTimedPunches(punches); long refTime = startTime; for (int i = 0; i < nbTimedPunches; i++) { // shift each punch time after the previous long punchTime = AdvanceTimePast(GetPunchTime(i), refTime); punches[i] = new SiPunch(GetPunchCode(i), punchTime); refTime = NewRefTime(refTime, punchTime); } for (int i = 0; i < nbPunches - SI5_TIMED_PUNCHES; i++) { punches[i + SI5_TIMED_PUNCHES] = new SiPunch(GetNoTimePunchCode(i), NO_TIME); } return(punches); }