Lukas,
In our console software, we have the simple implementation of averaging the last 1000 position solutions and sending the MSG_SETTINGS_WRITE (id 160 or hex 0x00A0) over the SBP protocol in order to set all of the settings in the "surveyed_position" grouping. You can read more about the "surveyed_position" settings in the settings documents we publish on this page (
https://support.swiftnav.com/customer/en/portal/articles/2628580-piksi-multi-specifications). The settings_write message use null terminations in their payload to encode the group, name, and value of settings as strings. For example, the following value of the "setting" field in the message will set the surveyed latitude on the wire, where the \0 character represents the null character in an ascii style string.
"surveyed_position\0surveyed_lat\037.1233445\0"
On Piksi Multi, you will receive a MSG_SETTINGS_WRITE_RESP (id 175 or hex 0x00AF) after confirming that your write was successful.
For your application, you could take a similar approach as the console with your micro controller and average some set of positions. If you would like the surveyed position to persist in memory after power cycle, send the "settings_save" message (id 161 or hex 0x00A1) after setting and confirming the value of the surveyed position. Note, rover positioning will be repeatable and precise with this method, but the accuracy with respect to some global reference frame will be limited by the accuracy for which you were able to determine the position of the base station.
Best,
Dennis