##// END OF EJS Templates

File last commit:

r203:204
r204:205
Show More
gnss.h
93 lines | 1.7 KiB | text/x-c | CLexer
aaguilar
codigo inicial de saigd (software de embebido) y timeEngined (firmware de tarjeta timeEngine)
r132 /*
* gnss.h
*
aaguilar
r175 * Created on: Dec 29, 2014
* Author: aras
aaguilar
codigo inicial de saigd (software de embebido) y timeEngined (firmware de tarjeta timeEngine)
r132 */
aaguilar
r175 #ifndef LIBTE_GNSS_H_
#define LIBTE_GNSS_H_
aaguilar
codigo inicial de saigd (software de embebido) y timeEngined (firmware de tarjeta timeEngine)
r132
aaguilar
r175 #include "te_structs.h"
aaguilar
codigo inicial de saigd (software de embebido) y timeEngined (firmware de tarjeta timeEngine)
r132
aaguilar
CONTROL
r203 //pin ports to GNSS
#define PPS 2 /*!< PE4 AVR <> 2 Arduino */
#define ENB 5 /*!< PE3 AVR <> 5 Arduino */
#define RX0_GNSS RX0
#define TX0_GNSS TX0 PE1
aaguilar
update de firmware timegine. RTC terminado
r196
aaguilar
CONTROL
r203 uint16_t bauds[]{4800,9600};
aaguilar
codigo inicial de saigd (software de embebido) y timeEngined (firmware de tarjeta timeEngine)
r132
aaguilar
CONTROL
r203 #define BAUDRATE(x) bauds[x]
#define BAUD_IDX_MAX 5
#define LOCK_IDX_MAX 100
aaguilar
codigo inicial de saigd (software de embebido) y timeEngined (firmware de tarjeta timeEngine)
r132
aaguilar
CONTROL
r203 #define GNSS_PORT 0x01
#define RBP_PORT 0x02
aaguilar
update de firmware timegine. RTC terminado
r196
aaguilar
CONTROL
r203 class te_gnss{
aaguilar
update de firmware timegine. RTC terminado
r196
aaguilar
CONTROL
r203 public:
bool configure(gnss_config_struct &gcs);
bool activate();
bool deactivate();
bool sync_pps();
bool set_baudrate(uint16_t baud);
bool wait_to_be_locked();
bool get_pps_data(bool raw);
bool set_position(fix32 lat,fix32 lon);
bool activate_nmea_frames(uint16_t mask);
aaguilar
update de firmware timegine. RTC terminado
r196
aaguilar
CONTROL
r203 inline void ISR_pps();
inline void ISR_pps_at();
aaguilar
update de firmware timegine. RTC terminado
r196
aaguilar
CONTROL
r203 private:
void process_frame(const char* fr);
aaguilar
update de firmware timegine. RTC terminado
r196
aaguilar
CONTROL
r203 void scan_baudrate();
void scan_baud_func();
void scan_lock_func();
void get_pps_data_func();
void push(void (*pfunc)()){
if(stk_ptr >= 5) return;
stack[stk_ptr++]=pfunc;
}
void pop(void (*pfunc)()){
if(stk_ptr == 0) return;
pfunc = stack[--stk_ptr];
stack[stk_ptr]=nullptr;
}
void write_baud(uint8_t port, uint16_t baud);
void open(uint8_t port);
void writeline(uint8_t port, char* frame);// abre y cierra puerto
char* readline(uint8_t port);
void close(uint8_t port);
bool is_gnss_frame_valid();
bool is_locked();
volatile bool scan_baud_success;
volatile bool scan_baud_finish;
volatile bool scan_lock_success;
volatile bool scan_lock_finish;
volatile uint8_t baud_idx;
volatile uint8_t lock_idx;
void (*pfunc_pps)();
uint8_t stk_ptr;
void (*stack)()[5];
bool is_raw;
};
aaguilar
r175 #endif /* LIBTE_GNSS_H_ */