diff options
author | Lorenz Meier <lm@inf.ethz.ch> | 2012-10-25 13:07:26 +0200 |
---|---|---|
committer | Lorenz Meier <lm@inf.ethz.ch> | 2012-10-25 13:07:26 +0200 |
commit | 2b9cf08dc2eec42bef63ec8935427f375db8d838 (patch) | |
tree | d6407cdea59228f82664cf032dbe19b8ed4f2c70 /apps/gps | |
parent | 4d03d020af38c5c11f13f4ea60152683d596412d (diff) | |
download | px4-firmware-2b9cf08dc2eec42bef63ec8935427f375db8d838.tar.gz px4-firmware-2b9cf08dc2eec42bef63ec8935427f375db8d838.tar.bz2 px4-firmware-2b9cf08dc2eec42bef63ec8935427f375db8d838.zip |
GPS tested and working
Diffstat (limited to 'apps/gps')
-rw-r--r-- | apps/gps/ubx.c | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/apps/gps/ubx.c b/apps/gps/ubx.c index f029a9e37..4229cd405 100644 --- a/apps/gps/ubx.c +++ b/apps/gps/ubx.c @@ -50,6 +50,7 @@ #define UBX_HEALTH_SUCCESS_COUNTER_LIMIT 2 #define UBX_HEALTH_FAIL_COUNTER_LIMIT 2 +#define UBX_HEALTH_PROBE_COUNTER_LIMIT 4 #define UBX_BUFFER_SIZE 1000 @@ -242,9 +243,9 @@ int ubx_parse(uint8_t b, char *gps_rx_buffer) ubx_gps->timestamp = hrt_absolute_time(); ubx_gps->counter++; - pthread_mutex_lock(ubx_mutex); + //pthread_mutex_lock(ubx_mutex); ubx_state->last_message_timestamps[NAV_POSLLH - 1] = hrt_absolute_time(); - pthread_mutex_unlock(ubx_mutex); + //pthread_mutex_unlock(ubx_mutex); ret = 1; } else { @@ -273,9 +274,9 @@ int ubx_parse(uint8_t b, char *gps_rx_buffer) ubx_gps->counter++; - pthread_mutex_lock(ubx_mutex); + //pthread_mutex_lock(ubx_mutex); ubx_state->last_message_timestamps[NAV_SOL - 1] = hrt_absolute_time(); - pthread_mutex_unlock(ubx_mutex); + //pthread_mutex_unlock(ubx_mutex); ret = 1; } else { @@ -305,9 +306,9 @@ int ubx_parse(uint8_t b, char *gps_rx_buffer) ubx_gps->counter++; - pthread_mutex_lock(ubx_mutex); + //pthread_mutex_lock(ubx_mutex); ubx_state->last_message_timestamps[NAV_DOP - 1] = hrt_absolute_time(); - pthread_mutex_unlock(ubx_mutex); + //pthread_mutex_unlock(ubx_mutex); ret = 1; } else { @@ -351,9 +352,9 @@ int ubx_parse(uint8_t b, char *gps_rx_buffer) ubx_gps->counter++; - pthread_mutex_lock(ubx_mutex); + //pthread_mutex_lock(ubx_mutex); ubx_state->last_message_timestamps[NAV_TIMEUTC - 1] = hrt_absolute_time(); - pthread_mutex_unlock(ubx_mutex); + //pthread_mutex_unlock(ubx_mutex); ret = 1; } else { @@ -452,9 +453,9 @@ int ubx_parse(uint8_t b, char *gps_rx_buffer) ubx_gps->counter++; - pthread_mutex_lock(ubx_mutex); + //pthread_mutex_lock(ubx_mutex); ubx_state->last_message_timestamps[NAV_SVINFO - 1] = hrt_absolute_time(); - pthread_mutex_unlock(ubx_mutex); + //pthread_mutex_unlock(ubx_mutex); ret = 1; } else { @@ -484,9 +485,9 @@ int ubx_parse(uint8_t b, char *gps_rx_buffer) ubx_gps->counter++; - pthread_mutex_lock(ubx_mutex); + //pthread_mutex_lock(ubx_mutex); ubx_state->last_message_timestamps[NAV_VELNED - 1] = hrt_absolute_time(); - pthread_mutex_unlock(ubx_mutex); + //pthread_mutex_unlock(ubx_mutex); ret = 1; } else { @@ -518,9 +519,9 @@ int ubx_parse(uint8_t b, char *gps_rx_buffer) ubx_gps->counter++; - pthread_mutex_lock(ubx_mutex); + //pthread_mutex_lock(ubx_mutex); ubx_state->last_message_timestamps[RXM_SVSI - 1] = hrt_absolute_time(); - pthread_mutex_unlock(ubx_mutex); + //pthread_mutex_unlock(ubx_mutex); ret = 1; } else { @@ -700,6 +701,7 @@ int write_config_message_ubx(uint8_t *message, size_t length, int fd) unsigned int result_write = write(fd, message, length); result_write += write(fd, &ck_a, 1); result_write += write(fd, &ck_b, 1); + fsync(fd); return (result_write != length + 2); //return 0 as success @@ -759,7 +761,7 @@ void *ubx_watchdog_loop(void *args) /* If we have too many failures and another mode or baud should be tried, exit... */ - if ((gps_mode_try_all == true || gps_baud_try_all == true) && (ubx_fail_count >= UBX_HEALTH_FAIL_COUNTER_LIMIT) && (ubx_healthy == false) && once_ok == false) { + if ((gps_mode_try_all == true || gps_baud_try_all == true) && (ubx_fail_count >= UBX_HEALTH_PROBE_COUNTER_LIMIT) && (ubx_healthy == false) && once_ok == false) { if (gps_verbose) printf("[gps] Connection attempt failed, no UBX module found\r\n"); gps_mode_success = false; |