Use Dynamic State and/or Command Description Providers

I have a thermostat binding where the modes may of may not have heat/cool/off. In my xml I have:

	<channel-type id="mode">
		<item-type>String</item-type>
		<label>Thermostat Mode</label>
		<description>Current thermostat operating mode</description>
		<category>Heating</category>
		<state readOnly="false">
			<options>
				<option value="Off">Off</option>
			</options>
		</state>
	</channel-type>

Since they always have Off and I created a DynamicStateDescriptionProvider and use the base setStateOptions() to add either Heat and/or Cool descriptions based on the specific capabilities of the system. Works great.

I was reading through the developer guide when I saw something on command options for channels that are mainly for sending commands. I thought maybe I’ve been doing this wrong.

	<channel-type id="mode">
		<item-type>String</item-type>
		<label>Thermostat Mode</label>
		<description>Current thermostat operating mode</description>
		<category>Heating</category>
		<tags>
			<tag>Control</tag>
			<tag>None</tag>
		</tags>
		<state readOnly="false">
			<options>
				<option value="Off">Off</option>
			</options>
		</state>
		<command>
			<options>
				<option value="Off">Off</option>
			</options>
		</command>
	</channel-type>

So I added DynamicCommandDescriptionProvider and use the base setCommandOptions() to update the command descriptions. But this leads to bloat and I can’t think of a reason why command/state would “need” two different providers. It looks like a solution looking for a problem. But I added it and I am hoping it will be useful in the future.

My question is what is a business use that makes this worth while and not just bloat? I have, in the UI, created different command/state options just for formatting, but it wasn’t “necessary”. Since I lack experience I am asking for a few ideas on how this is useful.

Also, if it isn’t really useful for my use case, should I use the command or state description providers for updating only one description? Or does it matter? I’m using the state provider for min/max/step and adding the command provider increase my jar about 3%.

Thanks.

EDIT:

As I think about it my min/max/step are mainly for command also. They are to ensure the system receiving the number (setpoint) accepts them. So should switch everything to the command provider does that make the most sense?