00001 00012 /* 00013 00014 Copyright (c) 2007, Tim Burrell 00015 Licensed under the Apache License, Version 2.0 (the "License"); 00016 you may not use this file except in compliance with the License. 00017 You may obtain a copy of the License at 00018 00019 http://www.apache.org/licenses/LICENSE-2.0 00020 00021 Unless required by applicable law or agreed to in writing, software 00022 distributed under the License is distributed on an "AS IS" BASIS, 00023 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00024 See the License for the specific language governing permissions and 00025 limitations under the License. 00026 00027 */ 00028 00029 #ifndef __GizmoEventSoundCard_h 00030 #define __GizmoEventSoundCard_h 00031 00032 #if HAVE_CONFIG_H 00033 #include "config.h" 00034 #endif 00035 00036 #include "GizmoEvent.hpp" 00037 #include "AlsaEvent.hpp" 00038 #include "AlsaSoundCard.hpp" 00039 #include "AlsaMixer.hpp" 00040 #include <string> 00041 #include <boost/archive/text_oarchive.hpp> 00042 #include <boost/archive/text_iarchive.hpp> 00043 #include <boost/serialization/base_object.hpp> 00044 00046 // Namespace 00048 00049 namespace Gizmod { 00050 00052 // Typedef, enum's 00054 00056 // Class Definition 00058 00065 class GizmoEventSoundCard : public AlsaEvent, public GizmoEvent { 00066 public: 00067 // public member variables 00068 AlsaMixer const * getMixer(); 00069 AlsaSoundCard const * getSoundCard(); 00070 00071 // public functions 00072 00073 // construction / deconstruction 00074 GizmoEventSoundCard(); 00075 GizmoEventSoundCard(AlsaEvent const & Event, AlsaSoundCard const & SoundCard, bool IsRemote = false); 00076 GizmoEventSoundCard(AlsaEvent const & Event, AlsaSoundCard const & SoundCard, AlsaMixer const & Mixer, bool IsRemote = false); 00077 virtual ~GizmoEventSoundCard(); 00078 00079 protected: 00080 // private functions 00081 00082 // private member variables 00083 AlsaMixer const * mpMixer; 00084 AlsaSoundCard const * mpSoundCard; 00085 00086 private: 00087 // serialization 00088 friend class boost::serialization::access; 00089 template<class Archive> 00090 void serialize(Archive & ar, const unsigned int version) { 00091 ar & boost::serialization::base_object<GizmoEvent>(*this); 00092 ar & boost::serialization::base_object<AlsaEvent>(*this); 00093 } 00094 }; 00095 00097 00098 } // Gizmod namespace 00099 00100 #endif // __GizmoEventSoundCard_h