Sped up MTK configuration but the detection time can still be improved: timeouts/usleeps

This commit is contained in:
Julian Oes 2013-02-06 23:25:09 -08:00
parent b620136af4
commit d36eb8a3fc
2 changed files with 22 additions and 15 deletions

View File

@ -49,6 +49,7 @@
MTK::MTK() :
_config_sent(false),
_mtk_revision(0)
{
decodeInit();
@ -67,24 +68,29 @@ MTK::reset()
void
MTK::configure(const int &fd, bool &baudrate_changed, unsigned &baudrate)
{
if (strlen(MTK_OUTPUT_5HZ) != write(fd, MTK_OUTPUT_5HZ, strlen(MTK_OUTPUT_5HZ)))
warnx("mtk: config write failed");
usleep(10000);
if (_config_sent == false) {
if (strlen(MTK_SET_BINARY) != write(fd, MTK_SET_BINARY, strlen(MTK_SET_BINARY)))
warnx("mtk: config write failed");
usleep(10000);
if (strlen(MTK_OUTPUT_5HZ) != write(fd, MTK_OUTPUT_5HZ, strlen(MTK_OUTPUT_5HZ)))
warnx("mtk: config write failed");
usleep(10000);
if (strlen(SBAS_ON) != write(fd, SBAS_ON, strlen(SBAS_ON)))
warnx("mtk: config write failed");
usleep(10000);
if (strlen(MTK_SET_BINARY) != write(fd, MTK_SET_BINARY, strlen(MTK_SET_BINARY)))
warnx("mtk: config write failed");
usleep(10000);
if (strlen(WAAS_ON) != write(fd, WAAS_ON, strlen(WAAS_ON)))
warnx("mtk: config write failed");
usleep(10000);
if (strlen(SBAS_ON) != write(fd, SBAS_ON, strlen(SBAS_ON)))
warnx("mtk: config write failed");
usleep(10000);
if (strlen(MTK_NAVTHRES_OFF) != write(fd, MTK_NAVTHRES_OFF, strlen(MTK_NAVTHRES_OFF)))
warnx("mtk: config write failed");
if (strlen(WAAS_ON) != write(fd, WAAS_ON, strlen(WAAS_ON)))
warnx("mtk: config write failed");
usleep(10000);
if (strlen(MTK_NAVTHRES_OFF) != write(fd, MTK_NAVTHRES_OFF, strlen(MTK_NAVTHRES_OFF)))
warnx("mtk: config write failed");
_config_sent = true;
}
return;
}

View File

@ -99,7 +99,8 @@ private:
*/
void addByteToChecksum(uint8_t);
mtk_decode_state_t _decode_state;
mtk_decode_state_t _decode_state;
bool _config_sent;
uint8_t _mtk_revision;
uint8_t _rx_buffer[MTK_RECV_BUFFER_SIZE];
unsigned _rx_count;