module SOFA { module demos { module cplayer { interface ControlInterface { void play(); void stop(); }; interface DisplayInterface { void updateStatus(in string status); }; frame Display { provides: DisplayInterface display; }; frame Controller { requires: ControlInterface control; }; frame Speaker { provides: ::SOFA::Connector::EEG::Types::DataStream::OutputStream audio; }; frame ReadingUnit { provides: ControlInterface control; requires: ::SOFA::Connector::EEG::Types::DataStream::OutputStream audio; DisplayInterface display; }; }; }; }; architecture CUNI ::SOFA::demos::cplayer::Controller implements ::SOFA::demos::cplayer::Controller primitive; architecture CUNI ::SOFA::demos::cplayer::Display implements ::SOFA::demos::cplayer::Display primitive; architecture CUNI ::SOFA::demos::cplayer::ReadingUnit implements ::SOFA::demos::cplayer::ReadingUnit primitive; architecture CUNI ::SOFA::demos::cplayer::Speaker implements ::SOFA::demos::cplayer::Speaker primitive; system architecture CUNI ::SOFA::demos::cplayer::Main implements ::SOFA::libs::Application { inst ::SOFA::demos::cplayer::Display display; inst ::SOFA::demos::cplayer::Controller controller; inst ::SOFA::demos::cplayer::Speaker speaker; inst ::SOFA::demos::cplayer::ReadingUnit readingUnit; bind controller:control to readingUnit:control using CSProcCall; bind readingUnit:display to display:display using EventPassing; bind readingUnit:audio to speaker:audio using DataStream; };