I am designing a custom GATT profile for a mobile robot base to connect to a tablet. Among other things, the base is reporting its position in x and y coordinates. The question is, how should I organize these two values in the GATT profile? Should they be contained in two individual characteristics or should I lump them together in one characteristic. E.g. (I left out UUID's for brevity):
<Service name="Odometry Service">
<Characteristic name="Base Position" >
<Value>
<Field name="Position on the X axis">
<Format>sint32</Format>
<Unit>org.bluetooth.unit.length.metre</Unit>
<Exponent>-3</Exponent>
</Field>
<Field name="Position on the Y axis">
<Format>sint32</Format>
<Unit>org.bluetooth.unit.length.metre</Unit>
<Exponent>-3</Exponent>
</Field>
</Value>
</Characteristic>
</Service>
or
<Service name="Odometry Service">
<Characteristic name="Position on the X axis" >
<Value>
<Format>sint32</Format>
<Unit>org.bluetooth.unit.length.metre</Unit>
<Exponent>-3</Exponent>
</Value>
</Characteristic>
<Characteristic name="Position on the Y axis" >
<Value>
<Format>sint32</Format>
<Unit>org.bluetooth.unit.length.metre</Unit>
<Exponent>-3</Exponent>
</Value>
</Characteristic>
</Service>
Obviously, technically, I can do both, and looking at the official Bluetooth adopted characteristics some characteristics lump the information together e.g. the Location and Speed characteristic used in the Location and Navigation service. Where the Indoor Positioning Service reports latitude and longitude in individual characteristics.
On one hand it makes sense to lump them together as the a change in position would likely change both values, and result in only one indication on the client side. On the other hand the client needs to do bit fiddling to get the values, which would be easily handled if they were individual characteristics.
I cannot seem to find a recommendation in the specification, and the adoption of both types seem to indicate that it is up to me? However, I may have missed a point somewhere.