// Implementation
CTESTSubsystem::CTESTSubsystem(const std::string& strName) : base(strName)
{
    // Provide mapping keys to upper layer
    addContextMappingKey("Directory");
    addContextMappingKey("Log");

    // Provide creators to upper layer
    addSubsystemObjectFactory(new TSubsystemObjectFactory<CTESTSubsystemBinary>("Binary", 1 << ETESTDirectory));
    addSubsystemObjectFactory(new TSubsystemObjectFactory<CTESTSubsystemString>("String", 1 << ETESTDirectory));
}
TinyAlsaSubsystem::TinyAlsaSubsystem(const std::string &name, core::log::Logger& logger) :
    AlsaSubsystem(name, logger), mMixers()
{
    // Provide creators to upper layer
    addSubsystemObjectFactory(
        new TSubsystemObjectFactory<TinyAmixerControlValue>("Control", 1 << AlsaCard)
        );

    addSubsystemObjectFactory(
        new TSubsystemObjectFactory<TinyAmixerControlArray>(
            "ByteControl", 1 << AlsaCard)
        );

    addSubsystemObjectFactory(
        new TSubsystemObjectFactory<
            AmixerMutableVolume<TinyAmixerControlValue> >("Volume", 1 << AlsaCard)
        );


    addSubsystemObjectFactory(
        new TSubsystemObjectFactory<TinyAlsaCtlPortConfig>(
            "PortConfig", (1 << AlsaCard) | (1 << AlsaCtlDevice))
        );
}