Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uint8_t UART_Read_RB_GPS(void) {
- enum stanja{nista = 0, recenica_pocela, recenica_gotova, greska }stanje;
- enum paketi{NISTA = 0, VTG, GGA}tip_paketa;
- uint32_t pocetni_pokazivac = rb.rx_tail;
- uint8_t brojac = 0;
- uint8_t polje_paketa = 0;
- stanje = nista;
- if(!__BUF_IS_EMPTY(rb.rx_head,rb.rx_tail)) {
- while (1) {
- if(stanje == nista) {
- if(__BUF_IS_EMPTY(rb.rx_head,rb.rx_tail)) {
- break;
- }
- else if(POCETAK_PAKETA) {
- stanje = recenica_pocela;
- }
- __BUF_INCR(rb.rx_tail);
- }
- else if(stanje == recenica_pocela) {
- if(__BUF_IS_EMPTY(rb.rx_head,rb.rx_tail)) {
- stanje = nista;
- rb.rx_tail = pocetni_pokazivac;
- break;
- }
- if(KRAJ_PAKETA) {
- __BUF_INCR(rb.rx_tail);
- stanje = recenica_gotova;
- break;
- }
- else if(POCETAK_PAKETA) {
- __BUF_INCR(rb.rx_tail);
- stanje = greska;
- break;
- }
- else {
- switch(tip_paketa) {
- case NISTA:
- if(VTG_PAKET) {
- tip_paketa = VTG;
- }
- else if(GGA_PAKET){
- tip_paketa = GGA;
- }
- break;
- case VTG:
- if(rb.rx[rb.rx_tail] == 44){ //Ako je zarez
- polje_paketa++;
- brojac = 0;
- break;
- }
- switch(polje_paketa){
- case 1:
- cogt_buff[brojac] = rb.rx[rb.rx_tail];
- brojac++;
- break;
- case 7:
- sogk_buff[brojac] = rb.rx[rb.rx_tail];
- brojac++;
- break;
- default:
- break;
- }
- break;
- case GGA:
- if(rb.rx[rb.rx_tail] == 44){ //Ako je zarez
- polje_paketa++;
- brojac = 0;
- break;
- }
- switch(polje_paketa){
- case 1:
- time_buff[brojac] = rb.rx[rb.rx_tail];
- if(time_buff[brojac] == 0 ){
- i++;
- }
- brojac++;
- break;
- default:
- break;
- }
- break;
- default:
- break;
- }
- __BUF_INCR(rb.rx_tail);
- }
- }
- }
- }
- return(stanje);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement