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
biblioteka do parsowania komend AT
biblioteka do parsowania komend AT
Nowy blog o tematyce embedded -> https://www.embedownik.pl/
Re: biblioteka do parsowania komend AT
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.
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.
- Antystatyczny
- Geek
- Posty: 1168
- Rejestracja: czwartek 03 wrz 2015, 22:02
Re: biblioteka do parsowania komend AT
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
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.
Re: biblioteka do parsowania komend AT
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
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
Nowy blog o tematyce embedded -> https://www.embedownik.pl/
Wróć do „Pisanie programów w C”
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości