Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.01 KB | None | 0 0
  1. uint8_t UART_Read_RB_GPS(void) {
  2.     enum stanja{nista = 0, recenica_pocela, recenica_gotova, greska }stanje;
  3.     enum paketi{NISTA = 0, VTG, GGA}tip_paketa;
  4.     uint32_t pocetni_pokazivac = rb.rx_tail;
  5.     uint8_t brojac = 0;
  6.     uint8_t polje_paketa = 0;
  7.     stanje = nista;
  8.     if(!__BUF_IS_EMPTY(rb.rx_head,rb.rx_tail)) {
  9.         while (1) {
  10.             if(stanje == nista) {
  11.                     if(__BUF_IS_EMPTY(rb.rx_head,rb.rx_tail)) {
  12.                         break;
  13.                     }
  14.                     else if(POCETAK_PAKETA) {
  15.                         stanje = recenica_pocela;
  16.                     }
  17.                         __BUF_INCR(rb.rx_tail);
  18.                 }
  19.             else if(stanje == recenica_pocela) {
  20.                 if(__BUF_IS_EMPTY(rb.rx_head,rb.rx_tail)) {
  21.                     stanje = nista;
  22.                     rb.rx_tail = pocetni_pokazivac;
  23.                     break;
  24.                 }
  25.                 if(KRAJ_PAKETA) {
  26.                     __BUF_INCR(rb.rx_tail);
  27.                     stanje = recenica_gotova;
  28.                     break;
  29.                 }
  30.                 else if(POCETAK_PAKETA) {
  31.                     __BUF_INCR(rb.rx_tail);
  32.                     stanje = greska;
  33.                     break;
  34.                 }
  35.                 else {
  36.                     switch(tip_paketa) {
  37.                         case NISTA:
  38.                             if(VTG_PAKET) {
  39.                                 tip_paketa = VTG;
  40.                             }
  41.                             else if(GGA_PAKET){
  42.                                 tip_paketa = GGA;
  43.                             }
  44.                             break;
  45.                         case VTG:
  46.                             if(rb.rx[rb.rx_tail] == 44){ //Ako je zarez
  47.                                 polje_paketa++;
  48.                                 brojac = 0;
  49.                                 break;
  50.                             }
  51.                             switch(polje_paketa){
  52.                                 case 1:
  53.                                     cogt_buff[brojac] = rb.rx[rb.rx_tail];
  54.                                     brojac++;
  55.                                     break;
  56.                                 case 7:
  57.                                     sogk_buff[brojac] = rb.rx[rb.rx_tail];
  58.                                     brojac++;
  59.                                     break;
  60.                                 default:
  61.                                     break;
  62.                             }
  63.                             break;
  64.                         case GGA:
  65.                             if(rb.rx[rb.rx_tail] == 44){ //Ako je zarez
  66.                                 polje_paketa++;
  67.                                 brojac = 0;
  68.                                 break;
  69.                             }
  70.                             switch(polje_paketa){
  71.                                 case 1:
  72.                                     time_buff[brojac] = rb.rx[rb.rx_tail];
  73.                                     if(time_buff[brojac] == 0 ){
  74.                                         i++;
  75.                                     }
  76.                                     brojac++;
  77.                                     break;
  78.                                 default:
  79.                                     break;
  80.                             }
  81.                             break;
  82.                         default:
  83.                             break;
  84.                     }
  85.                     __BUF_INCR(rb.rx_tail);
  86.                 }
  87.             }
  88.         }
  89.     }
  90.     return(stanje);
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement