/* * gnss_pvt.cpp * * Created on: Mar 3, 2015 * Author: aras */ #include #include #include void te_gnss::scan_baudrate(){ baud_idx = 0; write_baud(GNSS_PORT,BAUDRATE(baud_idx)); push(pfunc_pps); pfunc_pps = &scan_baud_func; } void te_gnss::scan_baud_func(){ if(is_gnss_frame_valid()){ pop(pfunc_pps); scan_baud_finish = true; scan_baud_success = true; }else{ baud_idx++; if(baud_idx < BAUD_IDX_MAX){ write_baud(GNSS_PORT,BAUDRATE(baud_idx)); }else{ pop(pfunc_pps); scan_baud_finish = true; scan_baud_success = false; } } } void te_gnss::scan_lock_func(){ if(is_locked()){ pop(pfunc_pps); scan_lock_finish = true; scan_lock_success = true; }else{ lock_idx++; if(lock_idx >= LOCK_IDX_MAX){ pop(pfunc_pps); scan_lock_finish = true; scan_lock_success = false; } } } void te_gnss::get_pps_data_func(){ char* fr = readline(GNSS_PORT); if(!is_raw){ process_frames(fr);// TODO debe verificar que esté enganchado el receptor }else{ writeline(RBP_PORT,fr); } } bool te_gnss::is_gnss_frame_valid(){ uint8_t idx; char* fr = readline(GNSS_PORT); uint8_t sz = strlen(fr); for(idx=0;idx