First a bit of history:
G10 was originally defined by the NIST GCode standard as "Set coordinate system", meaning set offsets from an origin
Adrian Bower chose to use G10 to set tool offsets from the origin (I presume because it is a similar function) and documented this in the wiki at
reprap.org, and also to set tool temperatures
Some other developers (probably Marlin or Repetier devs) ignored that allocation, and chose to use G10 for firmware retraction, which I find completely illogical
Some slicers started supporting G10 to do firmware retraction
Eventually someone documented the alternative use of G10 to do firmware retraction in the
reprap.org wiki
In order to support slicers that send G10 to command firmware retraction, RRF supports both uses of G10.
So in RRF, G10 with no parameters means do a retraction, and G10 with any recognised parameters means set tool parameters (i.e. set tool offsets and/or temperatures).
AFAIK, no other firmware has adopted G10 to set tool offsets and temperatures. But no other firmware supports multiple tools anything like as well as RRF does either. Neither does any other firmware provide automatic support for using separate active/standby temperatures for tool heaters.
Heaters in RRF can be in the following states: off, standby, active, fault, and tuning:
Off means what it says. Sending M0 turns all heaters off, except if the print is paused and there is a cancel.g file.
Active means that the heater is heating up to/maintaining the temperature of a tool that uses that heater.
Standby means that the heater is not used by the current tool, but was previously used by a selected tool, so it is maintaining the standby temperature for that tool. This is especially useful in printers with more than one nozzle, because you can keep the inactive nozzle warm ready for printing, but at less than printing temperature to prevent oozing.
On a Diamond hot end you have only one physical nozzle, so I don't think standby temperatures are relevant to you.
In order to print, you need to have a tool selected. Selecting a tool automatically sets its heaters to their active temperatures.
So the recommended sequence for the slicer start gcode is:
1. Start heating the bed using M140 S[bed_temperature].
2. Set tool active temperatures (and standby temps if they are relevant) e.g. for tool 0 use G10 P0 S[first_layer_temperature].
3. If desired, use M116 to wait for the bed to reach temperature. You can swap #2 and #3 if you like.
4. Select the tool e.g. T0
5. M116 to wait for all temperatures
6. Print
7. To change tool, just send the appropriate T command. No need to mess with temperatures.
8. At the end of the print, use M0 to deselect all tools and turn all heaters off.
HTH David