/* * Copyright (C) 2005-2007 by Daniel Wagner * * 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 3 of the License, or * (at your option) any later version. * * 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 . * */ #ifndef AVCSUBUNITINFO_H #define AVCSUBUNITINFO_H #include "avc_generic.h" #include namespace AVC { // No extended subunit queries supported class SubUnitInfoCmd: public AVCCommand { public: SubUnitInfoCmd( Ieee1394Service& ieee1349service ); virtual ~SubUnitInfoCmd(); virtual bool serialize( Util::IOSSerialize& se ); virtual bool deserialize( Util::IISDeserialize& de ); virtual const char* getCmdName() const { return "SubUnitInfoCmd"; } bool clear(); page_t m_page; extension_code_t m_extension_code; enum { eMaxSubunitsPerPage = 4, eMaxSubunitsPerUnit = 32, }; struct TableEntry { subunit_type_t m_subunit_type; max_subunit_id_t m_max_subunit_id; }; struct TableEntry m_table[eMaxSubunitsPerPage]; short getMaxNoOfPages() { return eMaxSubunitsPerUnit / eMaxSubunitsPerPage; } short m_nrOfValidEntries; short getNrOfValidEntries() { return m_nrOfValidEntries; } }; } #endif // AVCSUBUNITINFO_H