Claims
- 1. A method for enabling a mobile printer to download data items from a server, said data items comprising print data portions to be printed, said method comprising the steps of:
establishing an interprocess communication mechanism comprising a connection end point and a network address, said network address identifying a server in a network; communicating with said server, said communication comprising:
sending a request for authentication to the server from the mobile printer; receiving from the server an authentication response; requesting from the server print data portions to be downloaded, if the authentication is successful; receiving from the server print data portions to be printed or viewed; and notifying the server afterprint completion; and, terminating the communications connection when a printing session ends or if an error occurs.
- 2. The method of claim 1 wherein the step of receiving from the server an authentication response further comprises the step of:
receiving from the server status information, a specified number for the data items to be printed, and, a specified number for the print data portions to be downloaded.
- 3. The method of claim 2 where in the steps of requesting from the server print data portions and in receiving from the server said print data portions further comprise the steps of:
a) sending a request to the server for one print data portion, upon receiving the specified number of data items to be printed and a specified number of copies to be printed of each of said specified number of data items; b) receiving a response from the server including said one print data portion and a status for the data portion request; c) optionally sending one or more ping commands to the server to inform the server to keep the communications connection open; d) terminating the communications connection if the printer determines there was a transmission failure; e) printing said one print data portion, if the printer determines there was a transmission success; f) sending a notification of print completion to the server upon completion of printing; g) terminating the communications connection if print completion was not successful.
- 4. The method of claim 3 further comprising the step of:
repeating steps d) through f) until the specified number of copies to be printed of said one print data portion is printed, if print completion was successful.
- 5. The method of claim 3 further comprising the step of:
g) repeating steps d) through f) until the specified number of copies to be printed of said one print data portion is printed, if print completion was successful; h) repeating steps a) through g) until the specified number of print data portions to be down loaded has been downloaded.
- 6. The method of claim 1 where in the step of communicating with said server further comprising the step of:
obtaining from the server an updated specified number of data items to be printed and an updated specified number of print data portions to be downloaded.
- 7. The method of claim 1 where in the step of receiving from the server an authentication response further comprises the steps of:
sending to the server data identifying the characteristics of the mobile printer; receiving from the server an authentication response, status information, a specified number for the data items to be printed, and a specified number for the print data portions to be downloaded; examining the status; terminating the connection if the printer determines there was a failure; determining if previous communication failed to successfully notify print completion to the server, if status indicates a success; if previous communication connection failed to successfully notify print completion to the server, performing the step of:
sending a notification of print completion to the server
- 8. The method of claim 1 further comprising the steps of:
determining identifying data for at least two documents, identifying data for the print data portion in one of said at least two documents and identifying data for an offset in said print data portion, said at least two documents comprising a next document to be printed and a last document printed and said print data portion corresponding to the next document to be printed; receiving from the server a status; terminating the communications connection if the printer determines there was a transmission failure; if the saved status from a previous communication indicates a partial data sent status, performing the steps comprising of:
receiving from the server a specific print data portion having a given size; increasing the offset by the given size of the specific print data portion.
- 9. The method of claim 8 further comprising the step of:
receiving from the server identifying data for a document and identifying data for the print data portions in the document.
- 10. The method of claim 1 further comprising the steps of:
receiving from the server a security indicator for each of said print data portions, each of said security indicators being calculated from each of said print data portions; calculating at the printer a printer calculated security indicator for each of said print data portions; comparing, for each print data portion, the printer calculated security indicator with the security indicator provided by the server; generating, if the comparison of security indicators yields a difference, a status indicating a transmission failure for the corresponding print data portion.
- 11. The method of claim 10 wherein the security indicator is a cyclic redundancy code.
- 12. The method of claim 8 wherein the step of receiving from the server a specific print data portion further comprises the steps of:
receiving from the server a security indicator for the specific print data portion, said security indicator being calculated from said print data portion; calculating at the printer a printer calculated security indicator for the specific print data portion; comparing the printer calculated security indicator with the security indicator provided by the server; generating, if the comparison of security indicators yields a difference, a status indicating a transmission failure for the specific print data portion.
- 13. The method of claim 1 wherein the print data portions comprise compressed data.
- 14. The method of claim 13 further comprising the step of:
uncompressing said print data portions.
- 15. The method of claim 3 wherein said one print data portion comprises compressed data.
- 16. The method of claim 15 further comprising the step of:
uncompressing said print data portions.
- 17. A method for enabling a server to provide data items to a mobile printer said data items comprising print data portions to be printed, said method comprising the steps of:
establishing a process to control communications through a communication connection endpoint to another communication connection endpoint, upon said another communication connection endpoint being established; communicating with said mobile printer, said communication comprising:
sending an authentication response, upon receipt of an authentication request from the mobile printer; sending print data portions to be printed, upon receipt of a request from the mobile printer for print data portions to be downloaded; and, optionally sending one or more ping commands to the server to inform the server to keep the communications connection open; and, receiving from the mobile printer notification after completion of printing; sending status information in response to receipt of notification after printing; and, terminating the communications connection when a printing session ends or if an error occurs.
- 18. The method of claim 17 wherein the step of sending an authentication response further comprises the step of:
sending to the mobile printer status information, a specified number for the data items to be printed, and a specified number for the print data portions to be downloaded.
- 19. The method of claim 17 wherein the step of communicating with said mobile printer further comprising the step of:
sending to the mobile printer an updated specified number of data items to be printed and an updated specified number of print data portions to be downloaded.
- 20. The method of claim 17 where in the step of sending to the mobile printer an authentication response further comprises the steps of
receiving from the mobile printer data identifying characteristics of the mobile printer; comparing the characteristics of the mobile printer to data in a database; determining if the characteristics of the mobile printer are found in the database; sending to the mobile printer a specified number for the data items to be printed, and a specified number for the print data portions to be downloaded, if the characteristics of the mobile printer are found in the database; if the characteristics of the mobile printer are not found in the database, performing a registration process comprising the steps of:
registering the characteristics of the mobile printer in the database, determining if the registration was successful; sending to the mobile printer a specified number for the data items to be printed, and a specified number for the print data portions to be downloaded, if the registration was successful; sending to the mobile printer an error status, if the registration was not successful.
- 21. The method of claim 17 where in the step of sending print data portions to be printed further comprises the steps of:
obtaining identifying data for a next document to be printed, identifying data for a next print data portion to be printed, identifying data for a last document which was printed, and identifying data for a last print data portion which was printed; determining if a request for print data portions is immediately subsequent to a mobile printer registration; sending to the mobile printer at least one welcome print data portion, if a request for print data portions is immediately subsequent to a mobile printer registration; sending to the mobile printer at least one welcome print data portion, if the next document to be printed is a welcome print document; determining if a specific data portion is requested by the mobile printer; sending a next data portion in a print queue, if a specific data portion was not requested by the mobile printer, if a specific data portion was requested by the mobile printer, performing the steps comprising of:
determining if a partial data portion is requested by the mobile printer; sending the partial data portion, if a partial data portion was requested by the mobile printer; if a partial data portion was not requested by the mobile printer, performing the steps comprising of:
sending the specific data portion; sending to the mobile printer data for an offset, said offset being set to zero.
- 22. The method of claim 17 wherein the step of communicating with said mobile printer further comprises the steps of:
calculating a security indicator for each of said print data portions; sending each of said security indicators calculated for each of said print data portions to the mobile printer.
- 23. The method of claim 21 further comprising the step of:
calculating a security indicator for each said print data portion; sending each of said security indicators calculated from each said print data portions to the mobile printer.
- 24. The method of claim 22 wherein the security indicator is a cyclic redundancy code.
- 25. The method of claim 23 wherein the security indicator is a cyclic redundancy code.
- 26. The method of claim 17 further comprising the step of:
compressing said print data portions.
- 27. A printer comprising:
a processor; at least one computer-accessible memory, said at least one computer-accessible memory having computer instructions embodied therein, said instructions comprising:
means for establishing an interprocess communication mechanism comprising a connection end point and a network address, said network address identifying a server in a network and an entry point into an application at said server; means for communicating with said server, said communication comprising:
sending a request for authentication to the server from the mobile printer; receiving from the server an authentication response; requesting from the server print data portions to be downloaded, if the authentication is successful; receiving from the server print data portions to be printed; and optionally sending one or more ping commands to the server to inform the server to keep the communications connection open; and notifying the server after print completion; and, terminating the communications connection when a printing session ends or if an error occurs.
- 28. The printer of claim 27 wherein the computer instructions embodied in the at least one computer-accessible memory comprising means for communicating with a server, said communication further comprises receiving from the server status information, a specified number for the data items to be printed, and a specified number for the print data portions to be downloaded.
- 29. The printer of claim 28 wherein the computer instructions embodied in the at least one computer-accessible memory further comprise:
a) means for sending a request to the server for one print data portion, upon receiving the specified number of data items to be printed and a specified number of copies to be printed of each of said specified number of data items; b) means for receiving a response from the server including said one print data portion and a status for in the data portion request; c) means to optionally sending one or more ping commands to the server to inform the server to keep the communications connection open; d) means for terminating the communications connection if the printer determines there was a transmission failure; p1 e) means for printing said one print data portion and sending a notification of print completion to the server upon completion of printing, if the printer determines there was transmission success; f) means for terminating the communications connection if print completion was not successful; g) means for repeatedly applying means d) and e) until the specified number of copies to be printed of said one print data portion is printed, if print completion was successful; h) means for repeatedly applying means a through f until the specified number of print data portions to be down loaded has been downloaded.
- 30. The printer of claim 27 wherein the computer instructions embodied in the at least one computer-accessible memory further comprise:
means for obtaining from the server an updated specified number of data items to be printed and an updated specified number of print data portions to be downloaded.
- 31. The printer of claim 27 wherein the computer instructions embodied in the at least one computer readable memory further comprise:
means for sending to the server data identifying the characteristics of the mobile printer; means for examining the status upon receiving from the server an authentication response, status information, a specified number for the data items to be printed, and, a specified number for the print data portions to be downloaded; means for terminating the connection if status indicates a failure; means for determining if previous communication connection failed to successfully notify print completion to the server, if status indicates a success; if previous communication connection failed to successfully notify print completion to the server, providing means for:
sending a notification of print completion to the server.
- 32. The printer of claim 27 wherein the computer instructions embodied in the at least one computer-accessible memory further comprise:
means for determining identifying data for at least two documents, identifying data for the print data portion in one of said at least two documents and identifying data for an offset in said print data portio, said at least two documents comprising a next document to be printed and a last document printed and said print data portion corresponding to the next document to be printed; means for receiving from the server a status; means for terminating the communications connection if the printer determines there was a transmission failure; if a saved status from a previous communication indicates a partial data sent status, providing means for:
receiving from the server a specific print data portion having a given size; increasing the offset by the given size of the specific print data portion.
- 33. The printer of claim 27 wherein the computer instructions embodied in the at least one computer readable memory further comprise:
means for receiving from the server a security indicator for each of said print data portions, each of said security indicators being calculated from each of said print data portions; means for calculating at the printer a printer calculated security indicator for each of said print data portions; means for comparing, for each print data portion, the printer calculated security indicator with the security indicator provided by the server; means for generating, if the comparison of security indicators yields a difference, a status indicating a transmission failure for the corresponding print data portion.
- 34. The printer of claim 33 wherein the security indicator is a cyclic redundancy code.
- 35. The printer of claim 27 wherein said print data portions comprise compressed data and the computer instructions embodied in the at least one computer readable memory further comprise:
means for uncompressing said print data portions.
- 36. A server providing data items to a mobile printer, said server comprising:
a processor; at least one computer-accessible memory, said at least one computer-accessible memory having computer instructions embodied therein, said instructions comprising:
means for establishing a process to control communications through a communication connection endpoint to another communication connection endpoint, upon said another communication connection endpoint being established; means to measure the time since the last command from said mobile printer was received and to terminate the communications connection if this time exceeds a timeout constant; means for communicating with said mobile printer, said communication means comprising:
means for sending an authentication response upon receipt of an authentication request from the mobile printer; means for sending print data portions to be printed, upon receipt of a request from the mobile printer for print data portions to be downloaded; and, means for receiving from the mobile printer notification after print completion; means for sending status information in response to receipt of notification after printing; and, means for terminating the communications connection when a printing session ends or if the time between commands received from the printer exceeds a constant timeout period or if an error occurs.
- 37. The server of claim 36 wherein the computer instructions embodied in the at least one computer-accessible memory status information, a specified number for the data items to be printed, and, a specified number for the print data portions to be downloaded, upon receipt of an authentication request from the mobile printer.
- 38. The server of claim 36 wherein the computer instructions embodied in the at least one computer accessible memory further comprise:
means for sending to the mobile printer an updated specified number of data items to be printed and an updated specified number of print data portions to be downloaded.
- 39. The server of claim 36 wherein the computer instructions embodied in the at least one computer readable memory further comprise:
means for receiving from the mobile printer data identifying characteristics of the mobile printer; means for comparing the characteristics of the mobile printer to data in a database; means for determining if the characteristics of the mobile printer are found in the database; means for sending to the mobile printer a specified number for the data items to be printed, and, a specified number for the print data portions to be downloaded, if the characteristics of the mobile printer are found in the database; means for performing, if the characteristics of the mobile printer are not found in the database, a registration process comprising the steps of:
means for registering the characteristics of the mobile printer in the database, means for determining if the registration was successful; means for sending to the mobile printer a specified number for the data items to be printed, and, a specified number for the print data portions to be downloaded, if the registration was successful; means for sending to the mobile printer an error status, if the registration was not successful.
- 40. The server of claim 36 wherein the computer instructions embodied in the at least one computer-accessible memory further comprise:
means for obtaining identifying data for a next document to be printed, identifying data for a next print data portion to be printed, identifying data for a last document which was printed, and identifying data for a last print data portion which was printed; means for determining if a request for print data portions is immediately subsequent to a mobile printer registration; means for sending to the mobile printer at least one welcome print data portion, if a request for print data portions is immediately subsequent to a mobile printer registration; means for sending to the mobile printer at least one welcome print data portion, if the next document to be printed is a welcome print document; means for determining if a specific data portion is requested by the mobile printer; means for sending a next data portion in a print queue, if a specific data portion was not requested by the mobile printer, if a specific data portion was requested by the mobile printer, providing means for performing the steps comprising of:
determining if a partial data portion is requested by the mobile printer; sending the partial data portion, if a partial data portion was requested by the mobile printer; if a partial data portion was not requested by the mobile printer, providing means for performing the steps comprising of:
sending the specific data portion; sending to the mobile printer data for an offset, said offset being set to zero.
- 41. The server of claim 36 wherein the computer instructions embodied in the at least one computer-accessible memory further comprise:
means for calculating a security indicator for each of said print data portions; and, means for sending each of said security indicators calculated for each of said print data portions to the mobile printer.
- 42. The server of claim 41 wherein the security indicator is a cyclic redundancy code.
- 43. The server of claim 36 wherein the computer instructions embodied in the at least one computer readable memory further comprise:
means for compressing said print data portions.
- 44. A computer program product comprising:
a computer usable medium having computer readable code embodied therein for enabling a mobile printer to download data items from a server, said data items comprising print data portions to be printed, said code causing a computer system to:
establish an interprocess communication mechanism comprising a connection end point and a network address, said network address identifying a server in a network; communicate with said server, said communication comprising:
sending a request for authentication to the server from the mobile printer; receiving from the server an authentication response; requesting from the server print data portions to be downloaded, if the authentication is successful; receiving from the server print data portions to be printed; and notifying the server after print completion; and, terminate the communications connection when a printing session ends or if an error occurs.
- 45. The computer program product of claim 44 where in the computer-accessible code that causes the computer system to communicate with the server, said communication further comprises receiving from the server status information, a specified number for the data items to be printed, and, a specified number for the print data portions to be downloaded.
- 46. The computer program product of claim 44 wherein the computer-accessible code further causes a computer system to:
a) send a request to the server for one print data portion, upon receiving the specified number of data items to be printed and a specified number of copies to be printed of each of said specified number of data items; b) receive a response from the server including said one print data portion and a status for the data portion request; c) terminate the communications connection if the sprinter determines there was a transmission failure; d) print said one print data portion, if the printer determines there was a a transmission success; e) send a notification of print completion to the server upon completion of printing; f) terminate the communications connection if print completion was not successful.
- 47. The computer program product of claim 46 wherein the computer-accessible code further causes a computer system to:
repeat operations d) through f) until the specified number of copies to be printed of said one print data portion is printed, if print completion was successful.
- 48. The computer program product of claim 47 wherein the computer-accessible code further causes a computer system to:
g) repeat operations d) through f) until the specified number of copies to be printed of said one print data portion is printed, if print completion was successful; h) repeat operations a) through g) until the specified number of print data portions to be down loaded has been downloaded.
- 49. The computer program product of claim 44 wherein the computer-accessible code further causes a computer system to:
obtain from the server an updated specified number of data items to be printed and an updated specified number of print data portions to be downloaded.
- 50. The computer program product of claim 44 wherein the computer-accessible code further causes a computer system to:
send to the server data identifying the characteristics of the mobile printer; receive from the server an authentication response, status information, a specified number for the data items to be printed, and, a specified number for the print data portions to be downloaded; examine the status; terminate the connection if the printer determines there was a failure; determine if previous communication connection failed to successfully notify print completion to the serve, if status indicates a success; if previous communication connection failed to successfully notify print completion to the serve, perform the step of:
sending a notification of print completion to the server.
- 51. The computer program product of claim 44 wherein the computer-accessible code further causes a computer system to:
determine identifying data for at least two documents, identifying data for the print data portion in one of said at least two documents and identifying data for an offset in said print data portion, said at least two documents comprising a next document to be printed and a last document printed and said print data portion corresponding to the next document to be printed; receive from the server a status; terminate the communications connection if the printer determines there was a failure; if a saved status from a previous communication indicates a partial data sent status, perform the steps comprising of:
receiving from the server a specific print data portion having a given size; increasing the offset by the given size of the specific print data portion.
- 52. The computer program product of claim 51 wherein the computer-accessible code further causes a computer system to:
receiving from the server identifying data for a document and identifying data for the print data portions in the document.
- 53. The computer program product of claim 44 wherein the computer-accessible code further causes a computer system to:
receive from the server a security indicator for each of said print data portions, each of said security indicators being calculated from each of said print data portions; calculate at the printer a printer calculated security indicator for each of said print data portions; compare, for each print data portion, the printer calculated security indicator with the security indicator provided by the server; generate, if the comparison of security indicators yields a difference, a status indicating a transmission failure for the corresponding print data portion.
- 54. The computer program product of claim 44 wherein the print data portions comprise compressed data and the computer-accessible code further causes a computer system to:
uncompress said print data portions.
- 55. A computer program product comprising:
a computer usable medium having computer accessible code embodied therein for enabling a server to provide data items to a mobile printer said that items comprising print that portions to be printed, said code causing a computer system to:
establish a process to control communications through a communication connection endpoint to another communication connection endpoint, upon said another communication connection endpoint being established; communicate with said mobile printer, said communication comprising:
sending an authentication response; sending print data portions to be printed, upon receipt of a request from the mobile printer for print data portions to be downloaded; and, receiving from the mobile printer notification after print completion; sending status information in response to receipt of notification after printing; and, terminate the communications connection when a printing session ends or if the time between commands received exceed a timeout constant or if an error occurs.
- 56. The computer program product of claim 55 wherein the computer-accessible code that causes a computer system to communicate with said mobile printer, said communication further comprises status information, a specified number for the data items to be printed, and, a specified number for the print data portions to be downloaded, upon receipt of an authentication request from the mobile printer.
- 57. The computer program product of claim 55 wherein the computer-accessible code further causes a computer system to:
send to the mobile printer an updated specified number of data items to be printed and an updated specified number of print data portions to be downloaded.
- 58. The computer program product of claim 55 wherein the computer-accessible code further causes a computer system to:
receive from the mobile printer data identifying characteristics of the mobile printer; compare the characteristics of the mobile printer to data in a database; determine if the characteristics of the mobile printer are found in the database; send to the mobile printer a specified number for the data items to be printed, and, a specified number for the print data portions to be downloaded, if the characteristics of the mobile printer are found in the database; if the characteristics of the mobile printer are not found in the database, perform a registration process comprising the steps of:
registering the characteristics of the mobile printer in the database, determining if the registration was successful; sending to the mobile printer a specified number for the data items to be printed, and a specified number for the print data portions to be downloaded, if the registration was successful; sending to the mobile printer an error status, if the registration was not successful.
- 59. The computer program product of claim 55 wherein the computer-accessible code further causes a computer system to:
obtain identifying data for a next document to be printed, identifying data for a next print data portion to be printed, identifying data for a last document which was printed, and identifying data for a last print data portion which was printed; determine if a request for print data portions is immediately subsequent to a mobile printer registration; send to the mobile printer at least one welcome print data portion, if a request for print data portions is immediately subsequent to a mobile printer registration; send to the mobile printer at least one welcome print data portion, if the next document to be printed is a welcome print document; determine if a specific data portion is requested by the mobile printer; send a next data portion in a print queue, if a specific data portion was not requested by the mobile printer, if a specific data portion was requested by the mobile printer, perform the steps comprising of:
determining if a partial data portion is requested by the mobile printer; sending the partial data portion, if a partial data portion was requested by the mobile printer; if a partial data portion was not requested by the mobile printer, perform the steps comprising of:
sending the specific data portion; sending to the mobile printer data for an offset, said offset being set to zero.
- 60. The computer program product of claim 55 wherein the computer accessible code further causes a computer system to:
calculate a security indicator for each of said print data portions; send each of said security indicators calculated for each of said print data portions to the mobile printer.
- 61. The computer program product of claim 55 wherein the computer accessible code further causes a computer system to:
compress said print data portions.
- 62. A method of ensuring reliable and secure communications between a server and a remote printer comprising the steps of:
a) establishing an interprocess communication mechanism at the printer comprising a connection end point and a network address, said network address identifying the server in a network; b) establishing a process to control communications through a communication connection endpoint at the server to the communication connection endpoint at the remote printer, upon said communication connection endpoint at the remote printer being established; c) sending from the server specified data to the remote printer immediately after the process to control communications has been established; d) executing an algorithm, at the remote printer, over the specified data to produce a first hash value; e) sending the first hash value to the server; f) executing said algorithm, at the server, over the specified data to produce a second hash value; g) comparing the second hash value and the first hash value; h) allowing the connection to continue, if the second hash value and the first hash value match; i) terminating the connection if the second hash value and the first hash value do not match.
- 63. A method of ensuring reliable and secure communications between a server and a remote printer, where the remote printer has finished a printing session, comprising the steps of:
sending a specific item of data to the server; receiving said specific item of data at the server; sending to the printer a status code; storing the specific item of data in a database at the server, if the status indicates success; storing the specific item of data in a persistent memory at the printer, if the status indicates success; terminating the session; sending, from the remote printer, to the server said specific item of data stored in the persistent memory at the printer, at the beginning of the next printing session; comparing, at the server, the received specific item of data stored in the persistent memory at the printer to the specific item of data stored in the database; continuing the connection, if the received specific item of data stored in the persistent memory at the printer agrees with the specific item of data stored in the database; if the received specific item of data stored in the persistent memory at the printer does not agree with the specific item of data stored in the database, performing the steps of:
a) sending from the server specified data to the remote printer immediately after the process to control communications has been established; b) executing an algorithm, at the remote printer, over the specified data to produce a first hash value; c) sending the first hash value to the server; d) executing said algorithm, at the server, over the specified data to produce a second hash value; e) comparing the second hash value and the first hash value; f) allowing the connection to continue, if the second hash value and the first hash value match; g) terminating the connection if the second hash value and the first hash value do not match.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to the following commonly-owned patent applications, each of which is hereby incorporated by reference in its entirety:
[0002] Ser. No. 09/870,538, filed May 30, 2001, entitled “Method and Apparatus for Printing Remote Images Using a Mobile Device and Printer”;
[0003] Ser. No. 10/022,924, filed Dec. 18, 2001, entitled “Method and Apparatus for Printing Remote Images Using a Network-Enabled Printer”;
[0004] Ser. No. 10/024,068, filed Dec. 18, 2001, entitled “Method and Apparatus for Providing Output from Remotely Located Digital Files Using a Mobile Device and Output Device”;
[0005] Ser. No. aa/AAA,AAA (Attorney Docket No. 8531), concurrently filed herewith, entitled “Method and Apparatus for Providing Output from Remotely Located Digital Files Using a Remote Printer”; and
[0006] Ser. No. bb/BBB,BBB (Attorney Docket No. 8527), concurrently filed herewith, entitled “System for Remotely Rendering Content for Output by a Printer”.