From d36eb8a3fcce358409a7205bbd75576a447ac7b4 Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Wed, 6 Feb 2013 23:25:09 -0800 Subject: Sped up MTK configuration but the detection time can still be improved: timeouts/usleeps --- apps/drivers/gps/mtk.cpp | 34 ++++++++++++++++++++-------------- apps/drivers/gps/mtk.h | 3 ++- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/apps/drivers/gps/mtk.cpp b/apps/drivers/gps/mtk.cpp index bed388c49..026b0660b 100644 --- a/apps/drivers/gps/mtk.cpp +++ b/apps/drivers/gps/mtk.cpp @@ -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; } diff --git a/apps/drivers/gps/mtk.h b/apps/drivers/gps/mtk.h index 7a4b4f197..e43637195 100644 --- a/apps/drivers/gps/mtk.h +++ b/apps/drivers/gps/mtk.h @@ -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; -- cgit v1.2.3