Dali Light Addressing: How to?
Configuration commands have to be repeated twice within 100ms without any other command in between before the control gear will accept them. This is done as a way to avoid corruption of the signal or spurious messages accidentally changing a configuration. DALI frames are Manchester encoded which prevents single bit flips of the frame causing problematic interpretation but does not have a CRC which is a common form of error detection in serial communication. So it is useful to have another method to ensure that the intended command has been received.
The list of which commands have to be repeated is given in any documentation you have on DALI, including the now superseded IEC 60929 where it states that commands 32-128 have to be repeated, and some of the Special commands like Initialise and Randomise. The new standard is IEC62386 and there is a table (Table 15 in IEC62386-102 Ed 2) which shows which commands are to be repeated; the column is called &quot;Send twice&quot;.
The order of the commands depends on the logic of your application and the rules for DALI messages given in the standard. For example, to set a configuration parameter, it has to be first transferred using the DTR (or DTR1, DTR2) data transfer register, then stored - doing this in the opposite order makes no sense. For example, to set the maximum level, the command is 42, opcode byte 0x2A and uses DTR0, so the command set is
Command 257, SET DTR0 [with whatever value you want as a byte]
-any delay you like here-
Command 42, SET MAX LEVEL (DTR0) [addressed to the gear as necessary]
-less than 100ms delay-
Command 42, SET MAX LEVEL (DTR0) [addressed to the gear as necessary]

Command 257 SET DTR0 is not addressed, so it will be applied to every gear that is connected to the bus and powered up. If you want this SET MAX LEVEL to be applied to just one Short Addressed gear, or a Group address, or broadcast, then that affects the address byte that you need to set in the Command 42 SET MAX LEVEL. Only those gear which match that address will then use the DTR to set their own MAX LEVEL parameter.
The repeating of configuration commands does nothing to ensure that the DTR value is correct in the gear. If you have gear which has been short-addressed, or only one gear on the bus, then you can read back the DTR before or after doing the SET command to ensure it was at the right value. (You cannot in general read back values with broadcast or group queries because of collisions between multiple control gear. Unless you are using device type specific queries and only have a single example of that on the bus).