/* * $Id$ * * [ Description ] * */ #include "Behavioural/include/Component.h" namespace morpheo { namespace behavioural { #undef FUNCTION #define FUNCTION "Component::signal_internal" Signal * Component::signal_internal (Entity * entity_productor, Signal * signal_productor) { log_printf(FUNC,Behavioural,FUNCTION,"Begin"); // create name of internal's signal string str_entity = entity_productor->get_name(); string str_signal = signal_productor->get_name(); UpperCase (str_entity); UpperCase (str_signal); string name_internal = "internal_"+str_entity+"_"+str_signal; // test if internal's signal exist ... else, create Signal * signal_internal = _entity->find_signal (name_internal); if (signal_internal == NULL) { // signal don't exist ... create log_printf(TRACE,Behavioural,FUNCTION, " * Create an internal signal : \"%s\".",name_internal.c_str()); Interface * interface = _entity->find_interface(""); if (interface == NULL) throw (ErrorMorpheo (" Component \""+_entity->get_name()+"\", doesn't have an interface \"\".")); string signame = entity_productor->get_name()+"_"+signal_productor->get_name(); // Signal's creation switch (signal_productor->get_type_info()) { case BOOL : { interface->set_signal_internal(signame, signal_productor->get_size()); break; } case UINT8_T : { interface->set_signal_internal(signame, signal_productor->get_size()); break; } case UINT16_T : { interface->set_signal_internal(signame, signal_productor->get_size()); break; } case UINT32_T : { interface->set_signal_internal(signame, signal_productor->get_size()); break; } case UINT64_T : { interface->set_signal_internal(signame, signal_productor->get_size()); break; } default : throw (ErrorMorpheo ("Signal \""+name_internal+"\" : type unknow.")); } signal_internal = _entity->find_signal (name_internal); if (signal_internal == NULL) throw (ErrorMorpheo ("Signal \""+name_internal+"\" : error in creation of internal's signal.")); } log_printf(FUNC,Behavioural,FUNCTION,"End"); return signal_internal; }; }; // end namespace behavioural }; // end namespace morpheo