Skip to content

Commit

Permalink
firmware: app: tasks: Improving the implementation of the position de…
Browse files Browse the repository at this point in the history
…termination task #336
  • Loading branch information
mgm8 committed Jul 26, 2023
1 parent 0850e56 commit e6d95e9
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
27 changes: 22 additions & 5 deletions firmware/app/tasks/pos_det.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,21 +69,38 @@ void vTaskPosDet(void)
/* Predict satellite position */
struct predict_position my_orbit;

predict_julian_date_t curr_time = predict_to_julian(system_get_time() - 631065600UL); /* Unix timestamp in 1989/12/31 00:00:00 UTC */
sys_time_t now = system_get_time();

predict_julian_date_t curr_time = predict_to_julian(now - 631065600UL); /* Unix timestamp in 1989/12/31 00:00:00 UTC */

predict_orbit(satellite, &my_orbit, curr_time);

sat_data_buf.obdh.data.latitude = (uint16_t)(my_orbit.latitude * 180.0 / M_PI);
sat_data_buf.obdh.data.longitude = (uint16_t)(my_orbit.longitude * 180.0 / M_PI);
sat_data_buf.obdh.data.altitude = (uint16_t)(my_orbit.altitude);
/* sat_data_buf.obdh.timestamp = system_get_time(); */
float lat = my_orbit.latitude * 180.0 / M_PI;
float lon = my_orbit.longitude * 180.0 / M_PI;
float alt = my_orbit.altitude;

sat_data_buf.obdh.data.position.latitude = (int16_t)lat;
sat_data_buf.obdh.data.position.longitude = (int16_t)lon;
sat_data_buf.obdh.data.position.altitude = (int16_t)alt;
sat_data_buf.obdh.data.position.timestamp = now;

sys_log_print_event_from_module(SYS_LOG_INFO, TASK_POS_DET_NAME, "Current position (lat/lon/alt): ");
sys_log_print_float(lat, 2);
sys_log_print_msg(" deg/");
sys_log_print_float(lon, 2);
sys_log_print_msg(" deg/");
sys_log_print_float(alt, 2);
sys_log_print_msg(" km");
sys_log_new_line();
}
else
{
sys_log_print_event_from_module(SYS_LOG_ERROR, TASK_POS_DET_NAME, "Failed to initialize orbit from TLE!");
sys_log_new_line();
}

predict_destroy_orbital_elements(satellite);

vTaskDelayUntil(&last_cycle, pdMS_TO_TICKS(TASK_POS_DET_PERIOD_MS));
}
}
Expand Down
4 changes: 2 additions & 2 deletions firmware/app/tasks/pos_det.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@
#include <FreeRTOS.h>
#include <task.h>

#define TASK_POS_DET_NAME "Pos. Det." /**< Task name. */
#define TASK_POS_DET_STACK_SIZE 256 /**< Stack size in bytes. */
#define TASK_POS_DET_NAME "Position" /**< Task name. */
#define TASK_POS_DET_STACK_SIZE 1024 /**< Stack size in bytes. */
#define TASK_POS_DET_PRIORITY 2 /**< Task priority. */
#define TASK_POS_DET_PERIOD_MS 60000 /**< Task period in milliseconds. */
#define TASK_POS_DET_INIT_TIMEOUT_MS 1000 /**< Wait time to initialize the task in milliseconds. */
Expand Down

0 comments on commit e6d95e9

Please sign in to comment.