/*
* Copyright (C) 2005-2008 by Pieter Palmers
*
* This file is part of FFADO
* FFADO = Free Firewire (pro-)audio drivers for linux
*
* FFADO is based upon FreeBoB
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
*/
#include "cycletimer.h"
#include "debugmodule/debugmodule.h"
#include
DECLARE_GLOBAL_DEBUG_MODULE;
int main() {
setDebugLevel(DEBUG_LEVEL_VERY_VERBOSE);
printf("Cycle timer operation tests (incomplete)\n");
/* TEST 1
* check reconstruction of SYT RECEIVE timestamp
*
* The now_ctr has wrapped, while the cycle and syt have not
*
*/
#ifdef DEBUG
uint32_t now_ctr = 0x140001DA;
uint64_t now = CYCLE_TIMER_TO_TICKS(0x140001DA);
unsigned int cycle = 7968;
uint16_t syt = 0x583B;
#endif
debugOutput(DEBUG_LEVEL_VERBOSE,"NOW_CTR : %08X (%03us %04uc %04ut)\n",
now_ctr,
(unsigned int)CYCLE_TIMER_GET_SECS(now_ctr),
(unsigned int)CYCLE_TIMER_GET_CYCLES(now_ctr),
(unsigned int)CYCLE_TIMER_GET_OFFSET(now_ctr));
debugOutput(DEBUG_LEVEL_VERBOSE,"NOW : %011"PRIu64" (%03us %04uc %04ut)\n",
now,
(unsigned int)TICKS_TO_SECS(now),
(unsigned int)TICKS_TO_CYCLES(now),
(unsigned int)TICKS_TO_OFFSET(now));
debugOutput(DEBUG_LEVEL_VERBOSE,"SYT : %08X (%03us %04uc %04ut)\n",
syt,
(unsigned int)CYCLE_TIMER_GET_SECS(syt),
(unsigned int)CYCLE_TIMER_GET_CYCLES(syt),
(unsigned int)CYCLE_TIMER_GET_OFFSET(syt));
debugOutput(DEBUG_LEVEL_VERBOSE,"CYCLE : %uc\n",
cycle);
#ifdef DEBUG
uint64_t calc_ts = sytRecvToFullTicks(syt, cycle, now_ctr);
#endif
debugOutput(DEBUG_LEVEL_VERBOSE,"CALC_TS : %011"PRIu64" (%03us %04uc %04ut)\n",
calc_ts,
(unsigned int)TICKS_TO_SECS(calc_ts),
(unsigned int)TICKS_TO_CYCLES(calc_ts),
(unsigned int)TICKS_TO_OFFSET(calc_ts));
// BL: 1211722982: Debug (IsoHandler.cpp)[ 420] putPacket: received packet: length=168, channel=0, cycle=7968
// BL: 1211723031: Debug (cycletimer.h)[ 308] sytRecvToFullTicks: SYT=583B CY=7968 CTR=140001DA
// BL: 1211723037: Debug (StreamProcessor.cpp)[ 346] putPacket: RECV: CY=7968 TS=00245679163
// BL: 1211723043: Debug (AmdtpReceiveStreamProcessor.cpp)[ 135] processPacketData: STMP: 245679163ticks | syt_interval=8, tpf=557.254395
// BL: 1211723051: Debug (TimestampedBuffer.cpp)[1153] incrementFrameCounter: nbframes: 8, m_update_period: 8
// BL: 1211723052: Debug (AmdtpTransmitStreamProcessor.cpp)[ 250] generatePacketHeader: Too early: CY=0254, TC=0257, CUT=0003, TST=00271126073 (0257), TSP=00271137849 (0261)
// BL: 1211723055: Debug (TimestampedBuffer.cpp)[1155] incrementFrameCounter: tail TS: 270250705.174, next tail TS: 270255163.209
// BL: 1211723062: Debug (TimestampedBuffer.cpp)[1157] incrementFrameCounter: new TS: 245679163.000, wrapped new TS: 245679163.000
//
}