#ifndef maximus_sci_inc_sciserver_h #define maximus_sci_inc_sciserver_h /* Maximus project {{{ * * Copyright (C) 2012 MStar Semiconductor * * <<>> * * }}} */ /** * \file maximus/sci/inc/SciServer.h * \ingroup maximus_sci * */ #include "maximus/common/types.h" #include "maximus/interface/station/station.h" #include "maximus/processors/processors.h" #include "maximus/sci/sci_msg.h" #include "maximus/scheduler/scheduler.h" #include class SciServer { private: const stations_list_t &sta_list; std::string mStationLog; Processor *processor_array[SCI_MSG_TYPE_NB]; const Network_Clock_Tick *mNetworkClockTick; bool is_server_ready; public: SciServer (stations_list_t &ref1); virtual ~SciServer (); inline void set_station_log ( const std::string &station_log) { mStationLog = station_log; } void process () const; void sendSciMsg ( const SciMsg &sci_msg_to_send, const Sci_Msg_Station_Id station_id) const; bool sendSciMsgToAllActiveStations ( SciMsg & sci_msg_to_send ) const; void register_processor ( const Sci_Msg_Type sci_msg_type, Processor *client ); void unregister_processor ( const Sci_Msg_Type sci_msg_type); inline void register_current_tick_addr ( const Network_Clock_Tick *val) { mNetworkClockTick = val; check_if_server_ready (); } inline Network_Clock_Tick get_current_tick () const { if (mNetworkClockTick) return *mNetworkClockTick; return 0; } private: void check_if_server_ready (); inline void send_SciMsg_to_Station ( const SciMsg &sci_msg_to_send, Station &dsta) const; void log ( ) const; void displayStatus ( ) const; }; #endif // maximus_sci_inc_sciserver_h