root/branches/streaming-rework/tests/SytMonitor.h

Revision 360, 2.1 kB (checked in by pieterpalmers, 17 years ago)

- temporary commit to backup some work

- Started a framework to synchronize IsoHandlers? to

any generic TimeSource?. The idea is to introduce
one overall time reference, and resynchronize all
other timed events to this time source.
This will, on the long run, allow:

  • combining devices on multiple FW busses together,
    as these are not synched by hardware.
  • synchronizing to the system clock
  • synchronizing to any other time source (e.g.
    when implementing a jackd client, i.e. using
    the freebob devices as jackd clients).

- Implemented a realtime safe way to read the cycle

timer for an IsoHandler?. (+ test application)

- Implemented tests/test-sytmonitor:

Monitors 2 or more channels and reports the average
SYT timestamp difference between both.

- Messed around with SYT timestamping for AMDTP. Doesn't

work (yet).

Line 
1 /* $Id$ */
2
3 /*
4  *   FreeBob Streaming API
5  *   FreeBob = Firewire (pro-)audio for linux
6  *
7  *   http://freebob.sf.net
8  *
9  *   Copyright (C) 2005,2006 Pieter Palmers <pieterpalmers@users.sourceforge.net>
10  *
11  *   This program is free software {} you can redistribute it and/or modify
12  *   it under the terms of the GNU General Public License as published by
13  *   the Free Software Foundation {} either version 2 of the License, or
14  *   (at your option) any later version.
15  *
16  *   This program is distributed in the hope that it will be useful,
17  *   but WITHOUT ANY WARRANTY {} without even the implied warranty of
18  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  *   GNU General Public License for more details.
20  *
21  *   You should have received a copy of the GNU General Public License
22  *   along with this program {} if not, write to the Free Software
23  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24  *
25  *
26  *
27  */
28 #ifndef __FREEBOB_SYTMONITOR__
29 #define __FREEBOB_SYTMONITOR__
30 #include "src/libstreaming/IsoStream.h"
31 #include "src/libstreaming/cip.h"
32 #include "src/libstreaming/cyclecounter.h"
33 #include "src/libstreaming/ringbuffer.h"
34
35 using namespace FreebobStreaming;
36
37 struct cycle_info {
38     unsigned int cycle;
39     unsigned int seconds;
40     unsigned int syt;
41     unsigned int full_syt;
42     unsigned int pres_seconds;
43     unsigned int pres_cycle;
44     unsigned int pres_offset;
45     unsigned int pres_ticks;
46 };
47
48 class SytMonitor
49     : public IsoStream
50 {
51
52     public:
53         SytMonitor(int port);
54         virtual ~SytMonitor();
55        
56                 virtual enum raw1394_iso_disposition
57                         putPacket(unsigned char *data, unsigned int length,
58                               unsigned char channel, unsigned char tag, unsigned char sy,
59                                   unsigned int cycle, unsigned int dropped);
60                                  
61                 void dumpInfo();
62                
63         bool readNextCycleInfo(struct cycle_info *cif);
64         bool consumeNextCycleInfo();
65        
66         bool putCycleInfo(struct cycle_info *cif);
67        
68         protected:
69            freebob_ringbuffer_t * m_cinfo_buffer;
70        
71        
72                 DECLARE_DEBUG_MODULE;
73                
74            
75
76 };
77
78
79 #endif /* __FREEBOB_SYTMONITOR__ */
80
81
Note: See TracBrowser for help on using the browser.