/* send the next step of rate updates to the GPS. This reconfigures the GPS on the fly to have the right message rates. It needs to be careful to only send a message if there is sufficient buffer space available on the serial port to avoid it blocking the CPU */ void AP_GPS_UBLOX::send_next_rate_update(void) { if (_port->txspace() < (int16_t)(sizeof(struct ubx_header)+sizeof(struct ubx_cfg_nav_rate)+2)) { // not enough space - do it next time return; } //hal.console->printf_P(PSTR("next_rate: %u\n"), (unsigned)rate_update_step); switch (rate_update_step) { case 0: _configure_navigation_rate(200); break; case 1: _configure_message_rate(CLASS_NAV, MSG_POSLLH, 1); break; case 2: _configure_message_rate(CLASS_NAV, MSG_STATUS, 1); break; case 3: _configure_message_rate(CLASS_NAV, MSG_SOL, 1); break; case 4: _configure_message_rate(CLASS_NAV, MSG_VELNED, 1); break; } rate_update_step++; if (rate_update_step > 4) { need_rate_update = false; rate_update_step = 0; } }
/* send the next step of rate updates to the GPS. This reconfigures the GPS on the fly to have the right message rates. It needs to be careful to only send a message if there is sufficient buffer space available on the serial port to avoid it blocking the CPU */ void AP_GPS_UBLOX::send_next_rate_update(void) { if (port->txspace() < (int16_t)(sizeof(struct ubx_header)+sizeof(struct ubx_cfg_nav_rate)+2)) { // not enough space - do it next time return; } //hal.console->printf_P(PSTR("next_rate: %u\n"), (unsigned)rate_update_step); switch (rate_update_step++) { case 0: _configure_navigation_rate(200); break; case 1: _configure_message_rate(CLASS_NAV, MSG_POSLLH, 1); // 28+8 bytes break; case 2: _configure_message_rate(CLASS_NAV, MSG_STATUS, 1); // 16+8 bytes break; case 3: _configure_message_rate(CLASS_NAV, MSG_DOP, 1); break; case 4: _configure_message_rate(CLASS_NAV, MSG_SOL, 1); // 52+8 bytes break; case 5: _configure_message_rate(CLASS_NAV, MSG_VELNED, 1); // 36+8 bytes break; #if UBLOX_HW_LOGGING case 6: // gather MON_HW at 0.5Hz _configure_message_rate(CLASS_MON, MSG_MON_HW, 2); // 64+8 bytes break; case 7: // gather MON_HW2 at 0.5Hz _configure_message_rate(CLASS_MON, MSG_MON_HW2, 2); // 24+8 bytes break; #endif #if UBLOX_VERSION_AUTODETECTION case 8: _request_version(); break; #endif default: need_rate_update = false; rate_update_step = 0; break; } }