aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Oes <joes@student.ethz.ch>2013-02-06 23:25:09 -0800
committerJulian Oes <joes@student.ethz.ch>2013-02-06 23:25:09 -0800
commitd36eb8a3fcce358409a7205bbd75576a447ac7b4 (patch)
treeabd73d1b4d2829502464c108770449b4f49f755c
parentb620136af4f8de913fd12872a91a80f62861dc4c (diff)
downloadpx4-firmware-d36eb8a3fcce358409a7205bbd75576a447ac7b4.tar.gz
px4-firmware-d36eb8a3fcce358409a7205bbd75576a447ac7b4.tar.bz2
px4-firmware-d36eb8a3fcce358409a7205bbd75576a447ac7b4.zip
Sped up MTK configuration but the detection time can still be improved: timeouts/usleeps
-rw-r--r--apps/drivers/gps/mtk.cpp34
-rw-r--r--apps/drivers/gps/mtk.h3
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;