Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IPP INFRA/SYSTEM Server Support #47

Open
6 of 11 tasks
michaelrsweet opened this issue Oct 22, 2020 · 3 comments
Open
6 of 11 tasks

IPP INFRA/SYSTEM Server Support #47

michaelrsweet opened this issue Oct 22, 2020 · 3 comments
Assignees
Labels
enhancement New feature or request priority-medium
Milestone

Comments

@michaelrsweet
Copy link
Owner

michaelrsweet commented Oct 22, 2020

Add support for IPP INFRA (PWG 5100.18) and SYSTEM (PWG 5100.22) to function as an infrastructure printer. Tasks:

  • IPP Notifications (RFC 3995/3996) support
  • IPP System service - notifications
  • IPP System service - Register-Output-Device
  • Register callback that returns a pappl_printer_t pointer
  • IPP System service - resources
  • Save/load IPP-managed resources
  • Update resource API to support more IPP resource stuff
  • IPP INFRA - printer and job operations
  • "infra" driver name
  • PAPPL_SOPTIONS_INFRA_SERVER to enable INFRA support
  • Transform support (as configured)
@michaelrsweet michaelrsweet added enhancement New feature or request priority-low labels Oct 22, 2020
@michaelrsweet michaelrsweet added this to the Future milestone Oct 22, 2020
@michaelrsweet michaelrsweet modified the milestones: Future, v2.0 Sep 28, 2023
@michaelrsweet michaelrsweet self-assigned this Jan 1, 2024
@michaelrsweet
Copy link
Owner Author

Tracking development on the infra branch...

@michaelrsweet
Copy link
Owner Author

michaelrsweet commented Jan 1, 2024

Proposed API:

enum pappl_soptions_e			// System option bits
{
  ...
  PAPPL_SOPTIONS_INFRA_PROXY = 0x2000,		// Enable shared infrastructure proxy features
  PAPPL_SOPTIONS_INFRA_SERVER = 0x4000		// Enable shared infrastructure printer/system features
};

typedef pappl_printer_t *(*pappl_pr_register_cb_t)(pappl_client_t *client, const char *device_uuid, void *data);
					// Infrastructure printer registration callback function

extern void		papplPrinterAddInfraDevice(pappl_printer_t *printer, const char *device_uuid) _PAPPL_PUBLIC;
extern bool		papplPrinterAddInfraProxy(pappl_printer_t *printer, const char *uri) _PAPPL_PUBLIC;
extern pappl_printer_t	*papplPrinterCreateInfra(pappl_system_t *system, int printer_id, const char *printer_name, size_t num_device_uuids, const char * const *device_uuids) _PAPPL_PUBLIC;
extern char		**papplPrinterGetInfraDevices(pappl_printer_t *printer, size_t *num_devices) _PAPPL_PUBLIC;
extern char		**papplPrinterGetInfraProxies(pappl_printer_t *printer, size_t *num_proxies) _PAPPL_PUBLIC;
extern void		papplPrinterRemoveInfraDevice(pappl_printer_t *printer, const char *device_uuid) _PAPPL_PUBLIC;
extern void		papplPrinterRemoveInfraProxy(pappl_printer_t *printer, const char *printer_uri) _PAPPL_PUBLIC;

extern pappl_printer_t	*papplSystemFindInfraPrinter(pappl_system_t *system, const char *device_uuid) _PAPPL_PUBLIC;
extern void		papplSystemSetRegisterCallback(pappl_system_t *system, pappl_pr_register_cb_t cb, void *data) _PAPPL_PUBLIC;

@michaelrsweet
Copy link
Owner Author

OK, so some of the INFRA implementation has to deal with how to combine the capabilities of multiple output devices for a single INFRA printer. Typically this falls into the category of a union or intersection of capabilities, with potentially some additional filtering, i.e., a site might want to limit the kinds of media that are supported.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request priority-medium
Projects
None yet
Development

No branches or pull requests

1 participant