@octavian zupełnie nie można ufać tym driverom, są pobugowane i nie wiesz czy to zadziała, czy nie i zbyt często trzeba pisać patche. Trzeba je pisać również dlatego, że driver nie spełnia akurat twoich potrzeb, więc trzeba dopisać. Jeśli zajdzie potrzeba robienia upgrade'u to jest to ekstremalnie trudne, bo ekipa stwierdziła że zmieni nazwy komponentów np przez zamianę członów miejscami (z FOO_BAR na BAR_FOO).
Trafiłem do projektu który był na ukończeniu, poprawić kilka problemów i fajrant. Jednym z problemów było że modem GSM losowo gubił połączenie z internetem i po tym nie potrafił się podnieść. Po wykluczeniu problemu ze sprzętem, z budynkiem, BTSem i wszystkim wokół zacząłem sprawdzać kod. Wszystko wyglądało dobrze, kod wykorzystywał zephyrowy driver PPP do gadania z modemem ale postawiłem że jednak błąd musi być w wykorzystaniu tego drivera. No nie, nic nie poprawiało stanu rzeczy. Debug trwał 3 miesiące, trzeba było dodawać dupa printy, ustawić 6 urządzeń żeby robiły to samo i zbierać logi z każdego z nich czekając aż się w końcu coś wywali. 3 miesiące. Udało się dojść po nitce do kłębka, co wskazywało na jakiś dziwny błąd w driverze. Google skierowało na githuba lub jakieś zephyrowe forum (nie pamiętam teraz), gdzie ktoś zgłosił ten błąd 3 lata wcześniej i sobie to czekało na fixa. To był jakiś błąd w stosie sieciowym. Wystarczyłoby ten stos zresetować w przypadku problemu i w tym wypadku to by wystarczyło.
Ale Zephyr nie zezwalał na wyzerowanie tego stosu. Chyba że przez reboot, a to nie wchodziło w grę.
Skończyło się wypruciem zephyrowych driverów, przejście na protokół AT i pisanie w zasadzie wszystkiego od zera.
I teraz rzecz, której nie jestem pewien - czy Zephyr ma taki duży footprint, czy to po prostu beztalencie ludzi, którzy to pisali wcześniej: udało się uzyskać tę samą funkcjonalność co wcześniej i jednocześnie ważyło to mniej niż połowę flasha i zużywało połowę ramu. Tylko z zephyra został sam scheduler i reszta to ręcznej pisane drivery.
To był absolutny koszmar i najgorszy etap mojej kariery.