00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00037 #include "rc_signal_accessors.h"
00038
00039 namespace ReChannel {
00040
00041 void rc_accessor<sc_signal_in_if<bool> >::register_process_control(
00042 rc_process_control& pctrl, bool active_level) const
00043 {
00044 _rc_get_reset_signal().register_process_control(
00045 pctrl, active_level);
00046 }
00047
00048 void rc_accessor<sc_signal_in_if<bool> >::unregister_process_control(
00049 rc_process_control& pctrl) const
00050 {
00051 _rc_get_reset_signal().unregister_process_control(pctrl);
00052 }
00053
00054 rc_accessor<sc_signal_in_if<bool> >::reset_signal_type&
00055 rc_accessor<sc_signal_in_if<bool> >::_rc_get_reset_signal() const
00056 {
00057 if (p_reset_signal == NULL) {
00058 p_reset_signal =
00059 new reset_signal_type(
00060 sc_gen_unique_name("_rc_signal_accessor_reset_signal"));
00061 sc_spawn_options opt;
00062 {
00063 opt.spawn_method();
00064 opt.set_sensitivity(&this->value_changed_event());
00065 }
00066 sc_spawn(
00067 sc_bind(
00068 &this_type::_rc_reset_updater_proc,
00069 const_cast<this_type*>(this)),
00070 sc_gen_unique_name("_rc_accessor_reset_updater_proc"), &opt);
00071 }
00072 return *p_reset_signal;
00073 }
00074
00075 void rc_accessor<sc_signal_in_if<bool> >::_rc_reset_updater_proc()
00076 {
00077 rc_interface_wrapper<if_type>* const target_wrapper =
00078 this->rc_get_target_wrapper();
00079 if (target_wrapper != NULL) {
00080 p_reset_signal->write(
00081 target_wrapper->get_nb_interface_access()->read());
00082 } else {
00083 p_reset_signal->write(rc_undefined_value<bool>());
00084 }
00085 }
00086
00087 void rc_accessor<sc_signal_inout_if<bool> >::register_process_control(
00088 rc_process_control& pctrl, bool active_level) const
00089 {
00090 _rc_get_reset_signal().register_process_control(
00091 pctrl, active_level);
00092 }
00093
00094 void rc_accessor<sc_signal_inout_if<bool> >::unregister_process_control(
00095 rc_process_control& pctrl) const
00096 {
00097 _rc_get_reset_signal().unregister_process_control(pctrl);
00098 }
00099
00100 rc_accessor<sc_signal_inout_if<bool> >::reset_signal_type&
00101 rc_accessor<sc_signal_inout_if<bool> >::_rc_get_reset_signal() const
00102 {
00103 if (p_reset_signal == NULL) {
00104 p_reset_signal =
00105 new reset_signal_type(
00106 sc_gen_unique_name("_rc_signal_accessor_reset_signal"));
00107 sc_spawn_options opt;
00108 {
00109 opt.spawn_method();
00110 opt.set_sensitivity(&this->value_changed_event());
00111 }
00112 sc_spawn(
00113 sc_bind(
00114 &this_type::_rc_reset_updater_proc,
00115 const_cast<this_type*>(this)),
00116 sc_gen_unique_name("_rc_accessor_reset_updater_proc"), &opt);
00117 }
00118 return *p_reset_signal;
00119 }
00120
00121 void rc_accessor<sc_signal_inout_if<bool> >::_rc_reset_updater_proc()
00122 {
00123 rc_interface_wrapper<if_type>* const target_wrapper =
00124 this->rc_get_target_wrapper();
00125 if (target_wrapper != NULL) {
00126 p_reset_signal->write(
00127 target_wrapper->get_nb_interface_access()->read());
00128 } else {
00129 p_reset_signal->write(rc_undefined_value<bool>());
00130 }
00131 }
00132
00133 }
00134
00135
00136
00137
00138
00139