Beispiel #1
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #5
0
        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);
        }