21 #ifndef USER_ALGORITHM_INTERFACE_H
22 #define USER_ALGORITHM_INTERFACE_H
32 enum User_algorithm_action {CURRENT_MODULE_READY, NEXT_MODULE_READY, WAIT_FOR_NEXT_MODULE, WAIT_FOR_CURRENT_MODULE};
34 template<
int Ni,
int No>
48 virtual int* get_data_in_ptr(
int socket) = 0;
55 virtual int* get_data_in_ptr(
string name) = 0;
62 virtual int* get_data_out_ptr(
int socket) = 0;
69 virtual int* get_data_out_ptr(
string name) = 0;
76 virtual sc_dt::uint64 get_address_in(
int socket)
const = 0;
83 virtual sc_dt::uint64 get_address_in(
string name)
const = 0;
91 virtual void set_address_out(
int socket, sc_dt::uint64 value) = 0;
99 virtual void set_address_out(
string name, sc_dt::uint64 value) = 0;
106 virtual int get_data_in_length(
int socket)
const = 0;
113 virtual int get_data_in_length(
string name)
const = 0;
120 virtual int get_data_out_length(
int socket)
const = 0;
127 virtual int get_data_out_length(
string name)
const = 0;
133 virtual sc_time get_WCET(
void)
const = 0;
139 virtual sc_time get_BCET(
void)
const = 0;
146 virtual int get_input_socket_id(
string name)
const = 0;
153 virtual int get_output_socket_id(
string name)
const = 0;
163 virtual void end_of_algorithm(
void) = 0;
168 virtual void preemption_point(
void) = 0;
173 virtual void b_execution_requested(
void) = 0;
179 virtual void compute(sc_time duration) = 0;
190 virtual void set_algorithm_running(
void) = 0;
196 virtual void set_algorithm_idle(
void) = 0;
202 virtual void set_algorithm_waiting(
void) = 0;
214 virtual const sc_event& update_user_algorithm(
void)
const = 0;
216 virtual void wait_for_update_user_algorithm(
void) = 0;
224 virtual bool& kill_user_algorithm(
void) = 0;
237 virtual void b_data_received(
string name) = 0;
245 virtual void b_data_received(
int id) = 0;
252 virtual void b_all_data_received(
void) = 0;
260 virtual bool nb_data_received(
string name) = 0;
268 virtual bool nb_data_received(
int id) = 0;
275 virtual bool nb_all_data_received(
void) = 0;
286 virtual void nb_send_data(
string name) = 0;
292 virtual void nb_send_data(
int id) = 0;
297 virtual void nb_send_all_data(
void) = 0;
304 virtual void b_send_data(
string name) = 0;
311 virtual void b_send_data(
int id) = 0;
317 virtual void b_send_all_data(
void) = 0;
331 virtual void b_data_sent(
int id) = 0;
340 virtual void b_data_sent(
string name) = 0;
348 virtual void b_all_data_sent(
void) = 0;
356 virtual bool nb_data_sent(
int id) = 0;
364 virtual bool nb_data_sent(
string name) = 0;
370 virtual bool nb_all_data_sent(
void) = 0;
377 virtual void start_new_transaction_sequence(
int id) = 0;
384 virtual void start_new_transaction_sequence(
string name) = 0;
391 virtual void start_new_transaction_sequence(
void) = 0;
404 virtual bool is_channel_transient(
string name) = 0;
411 virtual bool is_channel_transient(
int id) = 0;
422 virtual string get_algorithm_execution_mode(
void) = 0;
429 virtual bool is_algorithm_execution_mode(
string mode) = 0;
441 virtual void release_input_socket(
int socketID) = 0;
448 virtual void release_input_socket(
string connectionName) = 0;
454 virtual void release_all_input_sockets(
void) = 0;
465 virtual const char* get_name(
void)
const = 0;
472 virtual int get_nb_preemption_points(
void) = 0;
478 virtual void wait_until_next_period(
void) = 0;
484 virtual ofstream& get_logfile(
void) = 0;
Definition: user_algorithm_interface.h:35
User_algorithm_action
Definition: user_algorithm_interface.h:32