Strona 1 z 1

biblioteka do parsowania komend AT

: niedziela 04 lut 2018, 20:34
autor: dambo
Witam!

Przy napływie weny i potrzeby napisałem małą bibliotekę do parsowania komend AT. Jest ona dostępna na Githubie pod tym adresem:

https://github.com/dambo1993/AT_commands_parser

Jest tam (chyba)ładnie opisane wszystko w readme, więc nie będę tego kopiował. Znajduje się tam aplikacja testowa na PC (project Codeblocks) oraz przykładowy projekt na STMkę(F030F4P6) + HD44780 + UART oczywiście.

Może komus się przyda. Wszelkie uwagi mile widziane :)

Re: biblioteka do parsowania komend AT

: niedziela 04 lut 2018, 21:33
autor: xor
Po co manewry z typem params/no_params? IMO callback móglby być zawsze typu void(*)(char**,int) a jakby nie potrzebował parametrów to by je sobie zignorował. Myślę, że to nie tylko uprości logikę i zwiększy czytelność ale też zlikwiduje błędogenność przyjętego rozwiązania. IMHO miało by to jakieś uzasadnienie gdyby program parsował na bieżąco z czytaniem znaków, ale przecież nie, przekazujesz bufor z wczytanym całym tekstem.
Ja to bym poszedł trochę dalej i callback zrobił typu int(*)(char**,int), w razie błędu funkcja zwracała by kod błędu a obsługę błędów zrobił w parserze. To takie moje uwagi.

Re: biblioteka do parsowania komend AT

: niedziela 04 lut 2018, 21:37
autor: Antystatyczny
Idąc tym tokiem myślenia można wywoływać callback i przekazywać do niego wskaźnik na tablicę parametrów oraz informację o ich ilości. Oczywiście ignorowanie pojedynczego parametru nie jest wcale głupie i rozważyłbym wprowadzenie takiego uproszczenia/modyfikacji

Re: biblioteka do parsowania komend AT

: niedziela 04 lut 2018, 21:48
autor: dambo
fakt - można "narzucić" żeby zawsze robić te funkcje typu void(*)(char**,int) - mega to ujednolici sprawę i wywali ten parametr ze strukturki.

Co do zwracania inta - w opisie o tym juz wspomniałe, ze na to też wpadłem, ale obecnie nie potrzebuję. Chociaż zrobiłbym to jeszcze o krok dalej - z tą obsługą, że na komendę "AT+TEST" odpowiadamy "+TEST=xxx" -> gdzie to xxx byłoby zwrócone przez callbacka -> czyli jakąś strukturkę tam dodać do tego, ale to w dalszej przyszłości.

Edit:

Już wrzuciłem wszędzie poprawkę - wywaliłem ten typ funkcji i wszystko jest ujednolicone + podziękowania dla kolegi xor :)