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);
ON_IDLE /main.cpp ??? ???
ON_SECOND_TICK /libs/SlowTicker.cpp ??? ???
ON_GET_PUBLIC_DATA /libs/PublicData.cpp ??? ???
ON_SET_PUBLIC_DATA /libs/PublicData.cpp ??? ???
ON_HALT /modules/utils/killbutton/KillButton.cpp (As well as Endstops, SerialConsole etc.) ??? ???
ON_ENABLE /modules/robot/Robot.cpp src/modules/robot/Conveyor.cpp ??? ???
NUMBER_OF_DEFINED_EVENTS n/a Only used to enumerate the events. no argument