This is a list of all the events that a Module can register for in Smoothie :

~ Name ~ Called from ~ Description ~ How to cast the argument
on_main_loop /main.cpp Called in a loop in main(), all G/M commands must be executed or issued in this event. Note this event blocks when the queue is full no argument
on_console_line_received /modules/communication/SerialConsole.cpp Called every time a new line is received on the default Serial Console, with the line as a parameter SerialMessage new_message = *static_cast<SerialMessage*>(argument); string received = new_message.message;
on_gcode_received /modules/communication/GcodeDispatch.cpp Called every time a new G code is received, with the Gcode object as a parameter Gcode* gcode = static_cast<Gcode*>(argument);