Projekt Linux Foundation

Ta strona zawiera szczegóły projektu technicznego do pisania w sezonie Dokumentów Google.

Podsumowanie projektu

Organizacja open source
The Linux Foundation
Pisarz techniczny:
PIYUSHgoyal16
Nazwa projektu:
Samouczek i wytyczne dotyczące projektowania sterowników drukarek/skanerów w aplikacji drukarki
Długość projektu:
Standardowa długość (3 miesiące)

Opis projektu

Przegląd

Klasyczne sterowniki drukarek zawierające filtry przeznaczone dla konkretnych drukarek oraz pliki PPD (opis drukarki Postscript Printer Opis, które opisują możliwości drukarki i wywołane filtry) pliki, które należy usunąć w niektórych katalogach systemu plików, są zastępowane tak zwanymi aplikacjami drukarek, które są emulacją drukarki sieciowej IPP.

Większość współczesnych drukarek do zwykłych obciążeń to drukarki IPP, które umożliwiają drukowanie bez sterowników. Reklamują się za pomocą DNS-SD, klienci mogą pobierać informacje o ich możliwościach za pomocą żądań IPP i korzystają ze standardowych formatów danych do zadań drukowania. Drukarki, które nie mają tej funkcji, zwykle starsze lub specjalistyczne drukarki, wymagają sterownika drukarki.

Aplikacja drukarki to demon, który wykrywa obsługiwane drukarki i reklamuje je na localhost jako drukarki IPP Everywhere. Aplikacje drukarki zawierają oprogramowanie do drukowania przychodzących zadań na obsługiwanych drukarkach, konwertując dane na język domyślny drukarki. Na żądanie klientów aplikacje te udostępniają też informacje o możliwościach drukarki. Aplikacja drukarki ma nawet interfejs administracyjny w sieci, tak jak prawdziwa drukarka sieciowa.

Wiemy, że w Linuksie przechodzimy na pakiet działający w trybie piaskownicy (na przykład Snap) i w tym kierunku rozwija się też drukowanie. W pakiecie w sandboksie nie możemy zmodyfikować zawartości katalogu po jego utworzeniu. Nasz system przestał być modułowy. Nie możemy wybrać pakietu sterownika drukarki do zainstalowania. Aplikacje drukarki rozwiązują problem modularności i dają nam taką samą swobodę jak w przypadku sterowników drukarek.

Sterowniki drukarek i skanerów w aplikacji Snap nie są wymagane tylko w przypadku przypiętych aplikacji CUPS i Snap, ale działają też w zupełnie klasycznych systemach. W odróżnieniu od klasycznie skompilowanych sterowników są one niezależne od dystrybucji systemu operacyjnego. Tworzysz pakiet sterownika drukarki w Snapie i działa on we wszystkich dystrybucjach systemu operacyjnego, które korzystają z snapd. Nie musisz pakować sterowników drukarki dla każdej dystrybucji (i jej wersji) osobno i nie musisz się borykać z piekłem zależności. Kolejną zaletą jest to, że stara koncepcja plików PPD pochodzących z drukarek PostScript została wycofana. Ponadto, łącząc system CUPS i sterownik drukarki za pomocą połączenia IP zamiast przenosić pliki do systemu CUPS, można umieścić system CUPS i aplikację drukarki w osobnych pakietach piaskownicy.

Moim zadaniem będzie opisanie, jak projektować sterowniki drukarek i skanerów do tego rodzaju opakowania oraz jak je pakować do Snapów. Chcemy w tej kwestii pomóc wszystkim, którzy piszą sterowniki drukarek lub skanerów, zwłaszcza producentom sprzętu, aby w przyszłości mogli robić to we właściwy sposób.

Przepływ pracy aplikacji drukarki można podsumować na danym schemacie blokowym:

Podstawą do tworzenia takich aplikacji do drukarki lub skanera jest PAPPL, czyli biblioteka zapewniająca większość funkcji, ale także filtry cups zawierające kod do wykorzystania w aplikacjach do drukarki. Prace nad nim wciąż trwają, głównie podczas tegorocznego Google Summer of Code, ale 14 września, kiedy rozpocznie się okres pisania dokumentacji, okres kodowania w GSoC już się zakończył i to właśnie wtedy OpenPrinting potrzebuje samouczka.

Szablon dla sterowników drukarek Zdefiniuj strukturę danych JOB

Deklarowanie tablicy stałych wartości dla rozmiarów multimediów

Deklarowanie funkcji i) Wywołanie zwrotne lub init Funkcja logiczna przyjmująca nazwę kierowcy, dane kierowcy itp. i odpowiednio ustawiająca atrybuty kierowcy. Jeśli podane informacje są odpowiednie, w przypadku niepowodzenia zwraca wartość prawda i fałsz.

ii) wydrukuj funkcję logiczną akceptującą zadanie, opcje zadania i urządzenia. Drukuje plik i zwraca wartość „prawda” w przypadku powodzenia, a w przypadku niepowodzenia zwraca wartość „false” (fałsz).

iii) rendjob Funkcja logiczna przyjmująca zadanie, opcje zadania i urządzenia. Zakończenie zadania zwraca wartość true (prawda) w przypadku powodzenia i false (fałsz) w przypadku niepowodzenia.

iv) rendpage Funkcja logiczna przyjmująca zadanie, opcje zadania, urządzenie i numer strony. Zamykanie strony i zwracanie wartości true (prawda) w przypadku powodzenia i false (fałsz) w przypadku niepowodzenia.

v) rstartjob Funkcja logiczna przyjmująca zadanie, opcje zadania i urządzenia. Uruchamia zadanie i zwraca wartość „PRAWDA” w przypadku powodzenia oraz „FAŁSZ” w przypadku niepowodzenia.

vi) rstartpage Funkcja logiczna przyjmująca zadanie, opcje zadania, urządzenie i numer strony. Uruchamia stronę i zwraca wartość true (prawda) w przypadku powodzenia oraz false (fałsz) w przypadku niepowodzenia.

vii) rwrite Funkcja logiczna akceptująca zadanie, opcje zadania, urządzenia, numer wiersza i tablica znaków. Zapisuje wiersz i zwraca wartość true (prawda) w przypadku powodzenia oraz false (fałsz) w przypadku niepowodzenia. viii) Funkcje opcjonalne, takie jak identify (ułatwia identyfikację drukarek na podstawie podanych działań), compress (kompresowanie wiersza grafiki) itp.