הפרויקט של Linux Foundation

בדף הזה מפורטים פרטי פרויקט של כתיבה טכנית שאושר להשתתפות בתוכנית Google Season of Docs.

סיכום הפרויקט

ארגון בקוד פתוח:
The Linux Foundation
כותבים טכניים:
PIYUSHgoyal16
שם הפרויקט:
מדריך והנחיות לעיצוב של מנהלי התקנים למדפסות/לסורקים באפליקציות למדפסות
אורך הפרויקט:
אורך רגיל (3 חודשים)

תיאור הפרויקט

סקירה כללית

מנהלי התקנים למדפסות, הכוללים מסננים ספציפיים למדפסת ו-PPD (תיאור מדפסת Postscript, מתאר את יכולות המדפסת ואת המסננים להתקשרות) שאותם צריך לשחרר בספריות מסוימות של מערכת הקבצים, מוחלפים ב'אפליקציות מדפסת', אמולציה של מדפסת רשת IPP.

רוב המדפסות המודרניות לשימוש כללי הן מדפסות IPP שמאפשרות הדפסה ללא נהג. הם מפרסמים את עצמם באמצעות DNS-SD, לקוחות יכולים לדגום את פרטי היכולות שלהם באמצעות בקשות IPP, והם משתמשים בפורמטים סטנדרטיים של נתונים למשימות הדפסה. מדפסות שלא מספקות את הפונקציונליות הזו, בדרך כלל מדפסות מדור קודם או מדפסות מיוחדות, זקוקות למנהל מדפסת.

אפליקציית מדפסת היא דימון שמזהה את המדפסות הנתמכות ומפרסם אותן ב-localhost כמדפסת IPP בכל מקום. 'אפליקציות מדפסת' מכילה את התוכנה להדפסת משימות נכנסות במדפסות שבהן היא תומכת, ממירות את הנתונים לשפת האם של המדפסת ומספקת מידע על יכולות המדפסת ללקוחות על פי בקשתם. אפליקציית המדפסת כוללת אפילו ממשק ניהול באינטרנט, כמו מדפסת רשת אמיתית.

כידוע, Linux עובר לאריזה בארגז חול (למשל, Snap) וגם ההדפסה נעה בכיוון הזה. בחבילה ב-sandbox, אי אפשר לשנות את תוכן הספריות אחרי ה-build. המערכת שלנו כבר לא מודולרית. לא ניתן לבחור את החבילה של מנהל ההתקן של המדפסת להתקין. אפליקציות מדפסת פותרות את הבעיה הזו של מודולריות ומעניקות לנו את אותה חופש כמו במקרה של מנהלי מדפסות.

מנהלי התקנים של מדפסות וסורק ב-Snaps הם לא רק דרישה ל-CUPS ולכל אפליקציה ב-Snap, הם פועלים גם במערכות קלאסיות לחלוטין, אבל בניגוד למנהלי התקנים הרגילים, הם לא תלויים בהפצה של מערכת ההפעלה. אחרי שיוצרים קובץ Snap של מנהל התקן של מדפסת, הוא פועל בכל ההפצות של מערכת ההפעלה שפועלות במהירות, ואין צורך לארוז מנהלי התקנים של מדפסות לכל הפצה (וגרסה של חלק מהן) בנפרד ולהסתגל לתלות. היתרון השני הוא שהקונספט הישן של קובצי PPD שמגיעים ממדפסות PostScript הופסק. בנוסף, כשמקשרים את מערכת CUPS למנהל המדפסת באמצעות חיבור IP במקום להעביר קבצים למערכת CUPS, אפשר להציב את מערכת CUPS ואת אפליקציית המדפסת בחבילות נפרדות ב-sandbox.

המשימה שלי היא לתאר איך מתכננים את מנהלי ההתקנים למדפסות ולסורקים עבור צורת האריזה הזו ואיך מעטפת אותם ב-Snaps. המטרה היא לעזור לכל מי שכותב מנהלי מדפסות או סורקים, במיוחד ליצרני החומרה, לעשות זאת בצורה הנכונה בעתיד.

תהליך העבודה של בקשת הוספת מדפסת ניתן לסכם באמצעות תרשים התהליך הבא:

הבסיס ליצירת אפליקציות כאלה של מדפסת/סורק הוא PAPPL, ספרייה שמספקת את רוב הפונקציונליות לצורך כך, אבל גם מסנני cups שמכילים קוד לשימוש באפליקציות של מדפסות. הקונספט עדיין נמצא בפיתוח, בעיקר ב-Google Summer of Code של השנה, אך ב-14 בספטמבר, כאשר תקופת כתיבת התיעוד מתחילה, תקופת התכנות של GSoC כבר מסתיימת, וברגע הזה נדרשה מדריך ל-OpenPrinting.

תבנית לדרייברים של מדפסות הגדרת המבנה של נתוני JOB

הכרזה על מערך של קבועים לגדלי מדיה

הכרזה על פונקציות 1) קריאה חוזרת (callback) או init פונקציה בוליאננית שמקבלת את שם הנהג, נתוני הנהג וכו' ומגדירה את מאפייני הנהג בהתאם. אם הפרטים שסופקו מתאימים, היא מחזירה את הערך True ו-False במקרה של כשל.

ii) הדפסת פונקציה בוליאנית שמקבלת את המשימה, אפשרויות למשימה ולמכשיר. הפונקציה מדפיסה קובץ ומחזירה את הערך true אם הפעולה בוצעה בהצלחה ואת הערך false אם הפעולה נכשלה.

iii) פונקציה בוליאנית של rendjob שמקבלת את המשימה, אפשרויות למשימה ולמכשיר. הפונקציה מסיימת את המשימה ומחזירה את הערך true אם היא הושלמה בהצלחה ואת הערך false אם היא נכשלה.

4) דף ניתוב פונקציה בוליאנית שמקבלת משימה, אפשרויות לביצוע המשימה, המכשיר ומספר הדף. הוא מסיים את הדף ומחזיר את הערך 'TRUE' במקרה של הצלחה, ואת הערך 'FALSE' במקרה של כשל.

v) rstartjob פונקציה בוליאנית שמקבלת משרה, אפשרויות למשימה ולמכשיר. הפונקציה מתחילה את המשימה ומחזירה את הערך True אם הצלחה ושגיאה False במקרה של כשל.

6) rstartpage פונקציה בוליאנית שמקבלת משימה, אפשרויות למשימה, המכשיר ומספר הדף. הפונקציה מפעילה את הדף ומחזירה את הערך true אם הפעולה בוצעה בהצלחה, ואת הערך false אם הפעולה נכשלה.

7) פונקציה בוליאננית מסוג rwrite שמקבלת את המשימה, אפשרויות למשימה, את המכשיר, את מספר השורה ואת מערך התווים. הוא כותב את השורה ומחזיר את הערך True במקרה של הצלחה ומחזיר את הערך False במקרה של כשל. 8) פונקציות אופציונליות כמו זיהוי (עוזר בזיהוי מדפסות על סמך הפעולה שסופקה), דחיסה(דחיסת שורת גרפיקה) וכו'