AP_Terrain: make terrain request times per channel

otherwise we can miss sending one if we send first to a channel not
being listened to
This commit is contained in:
Andrew Tridgell 2015-05-26 17:27:51 +10:00
parent 3a9d7363ea
commit c7044c4f91
3 changed files with 4 additions and 4 deletions

View File

@ -58,7 +58,6 @@ AP_Terrain::AP_Terrain(AP_AHRS &_ahrs, const AP_Mission &_mission, const AP_Rall
mission(_mission),
rally(_rally),
disk_io_state(DiskIoIdle),
last_request_time_ms(0),
fd(-1),
timer_setup(false),
file_lat_degrees(0),
@ -72,6 +71,7 @@ AP_Terrain::AP_Terrain(AP_AHRS &_ahrs, const AP_Mission &_mission, const AP_Rall
AP_Param::setup_object_defaults(this, var_info);
memset(&home_loc, 0, sizeof(home_loc));
memset(&disk_block, 0, sizeof(disk_block));
memset(last_request_time_ms, 0, sizeof(last_request_time_ms));
}
/*

View File

@ -352,7 +352,7 @@ private:
union grid_io_block disk_block;
// last time we asked for more grids
uint32_t last_request_time_ms;
uint32_t last_request_time_ms[MAVLINK_COMM_NUM_BUFFERS];
static const uint64_t bitmap_mask = (((uint64_t)1U)<<(TERRAIN_GRID_BLOCK_MUL_X*TERRAIN_GRID_BLOCK_MUL_Y)) - 1;

View File

@ -64,7 +64,7 @@ bool AP_Terrain::request_missing(mavlink_channel_t chan, struct grid_cache &gcac
ask the GCS to send a set of 4x4 grids
*/
mavlink_msg_terrain_request_send(chan, grid.lat, grid.lon, grid_spacing, bitmap_mask & ~grid.bitmap);
last_request_time_ms = hal.scheduler->millis();
last_request_time_ms[chan] = hal.scheduler->millis();
return true;
}
@ -102,7 +102,7 @@ void AP_Terrain::send_request(mavlink_channel_t chan)
send_terrain_report(chan, loc, true);
// did we request recently?
if (hal.scheduler->millis() - last_request_time_ms < 2000) {
if (hal.scheduler->millis() - last_request_time_ms[chan] < 2000) {
// too soon to request again
return;
}