X-Git-Url: https://git.hcoop.net/clinton/Smoothieware.git/blobdiff_plain/96f67b650cc4c6f048f8ae0e5370c14d625c0701..97e62ebfbee404247afafd4945ff7a61e32a995a:/src/libs/Module.h diff --git a/src/libs/Module.h b/src/libs/Module.h index c60cb12a..8a9134bc 100644 --- a/src/libs/Module.h +++ b/src/libs/Module.h @@ -9,26 +9,25 @@ #define MODULE_H // See : http://smoothieware.org/listofevents +// When adding a new event the virtual method needs to be defined in class Module and the method pointer need to be defined in +// Module.cpp:16 in the same order enum _EVENT_ENUM { ON_MAIN_LOOP, ON_CONSOLE_LINE_RECEIVED, ON_GCODE_RECEIVED, - ON_GCODE_EXECUTE, - ON_SPEED_CHANGE, - ON_BLOCK_BEGIN, - ON_BLOCK_END, - ON_CONFIG_RELOAD, - ON_PLAY, - ON_PAUSE, ON_IDLE, - ON_CONFIG_VALUE, - ON_CONFIG_COMPLETE, ON_SECOND_TICK, ON_GET_PUBLIC_DATA, ON_SET_PUBLIC_DATA, + ON_HALT, + ON_ENABLE, NUMBER_OF_DEFINED_EVENTS }; +class Module; +typedef void (Module::*ModuleCallback)(void *argument); +extern const ModuleCallback kernel_callback_functions[NUMBER_OF_DEFINED_EVENTS]; + // Module base class // All modules must extend this class, see http://smoothieware.org/moduleexample class Module @@ -36,30 +35,21 @@ class Module public: Module(); virtual ~Module(); - virtual void on_module_loaded(){}; - virtual void call_event(_EVENT_ENUM event_id, void *arg); + virtual void on_module_loaded() {}; -protected: void register_for_event(_EVENT_ENUM event_id); // event callbacks, not every module will implement all of these // there should be one for each _EVENT_ENUM - virtual void on_main_loop(void*){}; - virtual void on_console_line_received(void*){}; - virtual void on_gcode_received(void*){}; - virtual void on_gcode_execute(void*){}; - virtual void on_speed_change(void*){}; - virtual void on_block_begin(void*){}; - virtual void on_block_end(void*){}; - virtual void on_config_reload(void*){}; - virtual void on_play(void*){}; - virtual void on_pause(void*){}; - virtual void on_idle(void*){}; - virtual void on_config_value(void*){}; - virtual void on_config_complete(void*){}; - virtual void on_second_tick(void*){}; - virtual void on_get_public_data(void*){}; - virtual void on_set_public_data(void*){}; + virtual void on_main_loop(void *) {}; + virtual void on_console_line_received(void *) {}; + virtual void on_gcode_received(void *) {}; + virtual void on_idle(void *) {}; + virtual void on_second_tick(void *) {}; + virtual void on_get_public_data(void *) {}; + virtual void on_set_public_data(void *) {}; + virtual void on_halt(void *) {}; + virtual void on_enable(void *) {}; };