#ifndef LINKED_LIST_H_INCLUDED #define LINKED_LIST_H_INCLUDED #include "gps_ip_defines.h" typedef struct gps_ephem_ll { volatile gps_ephemeris_t* data_p; unsigned char tracking_ip_no; struct gps_ephem_ll* next; volatile unsigned int gps_subframe_mask; volatile gpstime_t gps_how_tow; volatile uint32_t gps_how_abs_sample; volatile double gps_how_corrected_abs_sample; volatile uint64_t gps_how_tick; volatile bool gps_how_anchor_valid; volatile uint32_t gps_nav_solve_sequence; volatile uint32_t gps_nav_solve_consumed_sequence; volatile uint32_t gps_last_nav_solve_abs_sample; volatile double gps_last_nav_solve_corrected_abs_sample; volatile uint64_t gps_last_nav_solve_local_ticks; volatile uint64_t gps_last_nav_solve_pps_counter; volatile uint32_t gps_last_pps_capture_sequence; volatile uint64_t gps_last_measurement_tick; volatile bool gps_measurement_valid; } gps_ephem_ll_t; typedef struct gps_acq_ll { unsigned int prn_no; struct gps_acq_ll* next; } gps_acq_ll_t; extern volatile gps_ephem_ll_t* tracking_node; extern volatile gps_acq_ll_t* acquisition_node; bool insert_element(volatile gps_ephem_ll_t** node, volatile gps_ephemeris_t* data_p, unsigned char trck_ip_no); bool delete_by_ip_number(volatile gps_ephem_ll_t** node, unsigned char trck_ip_no); bool trck_ip_exists(volatile gps_ephem_ll_t** node, unsigned char trck_ip_no); volatile gps_ephem_ll_t* get_element_by_ip_number(volatile gps_ephem_ll_t** node, unsigned char trck_ip_no); bool insert_acq_element(volatile gps_acq_ll_t** node, unsigned int prn_no); bool delete_acq_element_by_prn_number(volatile gps_acq_ll_t** node, unsigned int prn_no); bool acq_prn_exists(volatile gps_acq_ll_t** node, unsigned int prn_no); #endif