I’m trying to change AP_GPS_UBLOX to enable the “Full Power” setting on my Neo M8C-0-10. This setting will enable a markedly faster time-to-first-fix at the expense of a few milliamps of current. To enable it, I believe I need to send the message
0x06 0x86 0x08 0x00 [CK_A] [CK_B]
to the connected port. This message, defined in the UBlox documentation on page 210, is a message of class UBX-CFG-PMS that sets the “Power Setup Value” to Full Power.
I’d like to modify the code in a way that preserves the intended style of AP_GPS_UBLOX.cpp. I believe that the best way to do this is to add a new case to the case statement inside request_next_config()
which invokes a function that sends the relevant message with _send_message
.
However, when I did this, it prevented the _unconfigured_messages
bitmask from ever being entirely cleared. Before I spend more time debugging, I want to ask the community for help to make sure I understand how this driver is supposed to work. As I understand it,
- the function
_request_next_config()
checks which configuration items listed in the enumerationconfig_step
have not yet been done. If it finds an unconfigured item, it requests a message from the GPS device to check the GPS’ current value for this item - the GPS’ response is parsed by
_parse_gps()
. If a configuration (CFG
) message is found with a value that needs to be changed, then_parse_gps
invokes the function which reconfigures this item, for instanceconfigure_message_rate
- after an item is successfully configured, the corresponding bit in the bitmask
_unconfigured_messages
is wiped - for some reason, this process of continually checking the GPS’s configuration continues ad infinitum, even when the bits in
_unconfigured_messages
are fully wiped. The function_request_next_message
is always called from the UBloxread()
function, and the function internal counter_next_message
continually loops throughout its entire range.
Is this a correct understanding? Are there important parts of the function of this driver that I am missing? Is there a source of documentation that people like me could use to understand this code and better interface with their UBlox devices?
Thank you,
Tim