root/trunk/libffado/src/libavc/general/avc_extended_subunit_info.h

Revision 618, 3.3 kB (checked in by ppalmers, 13 years ago)

move serialization routines to libutil such that they can be used for non-AVC stuff too (fireworks EFC)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 /*
2  * Copyright (C) 2005-2007 by Daniel Wagner
3  *
4  * This file is part of FFADO
5  * FFADO = Free Firewire (pro-)audio drivers for linux
6  *
7  * FFADO is based upon FreeBoB
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public
11  * License version 2.1, as published by the Free Software Foundation;
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
21  * MA 02110-1301 USA
22  */
23
24 #ifndef AVCEXTENDEDSUBUNITINFO_H
25 #define AVCEXTENDEDSUBUNITINFO_H
26
27 #include "avc_generic.h"
28
29 #include <libavc1394/avc1394.h>
30
31 #include <string>
32 #include <vector>
33
34 namespace AVC {
35
36
37 class ExtendedSubunitInfoPageData: public IBusData
38 {
39  public:
40     enum ESpecialPurpose {
41         eSP_InputGain       = 0x00,
42         eSP_OutputVolume    = 0x01,
43         eSP_NoSpecialPupose = 0xff,
44     };
45
46     ExtendedSubunitInfoPageData();
47     virtual ~ExtendedSubunitInfoPageData();
48
49     virtual bool serialize( Util::IOSSerialize& se );
50     virtual bool deserialize( Util::IISDeserialize& de );
51     virtual ExtendedSubunitInfoPageData* clone() const;
52
53     function_block_type_t            m_functionBlockType;
54     function_block_id_t              m_functionBlockId;
55     function_block_special_purpose_t m_functionBlockSpecialPupose;
56     no_of_input_plugs_t              m_noOfInputPlugs;
57     no_of_output_plugs_t             m_noOfOutputPlugs;
58 };
59
60 typedef std::vector<ExtendedSubunitInfoPageData*> ExtendedSubunitInfoPageDataVector;
61
62 class ExtendedSubunitInfoCmd: public AVCCommand
63 {
64 public:
65     enum EFunctionBlockType {
66         eFBT_AllFunctinBlockType    = 0xff,
67         eFBT_AudioSubunitSelector   = 0x80,
68         eFBT_AudioSubunitFeature    = 0x81,
69         eFBT_AudioSubunitProcessing = 0x82,
70         eFBT_AudioSubunitCodec      = 0x83,
71     };
72
73     enum EProcessingType {
74     ePT_Unknown                 = 0x00,
75         ePT_Mixer                   = 0x01,
76         ePT_Generic                 = 0x02,
77         ePT_UpDown                  = 0x03,
78         ePT_DolbyProLogic           = 0x04,
79         ePT_3DStereoExtender        = 0x05,
80         ePT_Reverberation           = 0x06,
81         ePT_Chorus                  = 0x07,
82         ePT_DynamicRangeCompression = 0x08,
83         ePT_EnhancedMixer           = 0x82,
84         ePT_Reserved                = 0xff,
85     };
86
87     enum ECodecType {
88         eCT_AC3Decoder  = 0x01,
89         eCT_MPEGDecoder = 0x02,
90         eCT_DTSDecoder  = 0x03,
91         eCT_Reserved    = 0xff,
92
93     };
94
95     ExtendedSubunitInfoCmd( Ieee1394Service& ieee1394service );
96     ExtendedSubunitInfoCmd( const ExtendedSubunitInfoCmd& rhs );
97     virtual ~ExtendedSubunitInfoCmd();
98
99     virtual bool serialize( Util::IOSSerialize& se );
100     virtual bool deserialize( Util::IISDeserialize& de );
101
102     virtual const char* getCmdName() const
103     { return "ExtendedSubunitInfoCmd"; }
104
105     page_t                m_page;
106     function_block_type_t m_fbType;
107     ExtendedSubunitInfoPageDataVector m_infoPageDatas;
108 };
109
110 }
111
112 #endif
Note: See TracBrowser for help on using the browser.