U.S. patent application number 14/307909 was filed with the patent office on 2014-10-09 for method and apparatus for storing real-time text messages.
The applicant listed for this patent is TeleCommunication Systems, Inc.. Invention is credited to Marina Libman.
Application Number | 20140304348 14/307909 |
Document ID | / |
Family ID | 25476718 |
Filed Date | 2014-10-09 |
United States Patent
Application |
20140304348 |
Kind Code |
A1 |
Libman; Marina |
October 9, 2014 |
Method and Apparatus for Storing Real-Time Text Messages
Abstract
A synchronization ("synch") module may reside on a source
computing platform and a destination computing platform. The synch
module may be configured to operate as a source synch module or a
destination synch module depending on which computing platform is a
data source. As an data source or initiator, the synch module may
be configured to transfer data, e.g., an archived message history,
from a source computing platform to a destination computing
platform. At the destination computing platform, the synch module
may be further configured to convert the received archived message
history to a specified data format, where the data format is
predetermined by a user. The converted data, e.g., an archived
message history, may then be stored in a pre-determined location by
the synch module.
Inventors: |
Libman; Marina; (Pikesville,
MD) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
TeleCommunication Systems, Inc. |
Annapolis |
MD |
US |
|
|
Family ID: |
25476718 |
Appl. No.: |
14/307909 |
Filed: |
June 18, 2014 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
11878704 |
Jul 26, 2007 |
8799516 |
|
|
14307909 |
|
|
|
|
09941582 |
Aug 30, 2001 |
|
|
|
11878704 |
|
|
|
|
Current U.S.
Class: |
709/206 |
Current CPC
Class: |
H04L 51/00 20130101;
H04L 51/36 20130101; H04L 51/06 20130101; G06F 16/34 20190101; H04L
51/04 20130101 |
Class at
Publication: |
709/206 |
International
Class: |
H04L 12/58 20060101
H04L012/58 |
Claims
1. A method for transferring data between a data source and a data
sink, comprising: initiating a transfer of a message history data;
transferring said message history data in response to an
establishment of communication channel; converting received message
history data to previously selected data format; and storing
converted message history data in a previously selected
location.
2-58. (canceled)
Description
FIELD OF THE INVENTION
[0001] This invention relates generally to a system for
transferring data, e.g., real-time text messages, between a source
and destination computing platforms. More specifically, a
synchronization module is utilized to both transfer and convert
data, e.g., archived real-time text messages, from a format used by
the source computing platform into a format suitable for use by the
destination computing platform.
DESCRIPTION OF THE RELATED ART
[0002] Real time text messaging ("instant messaging") has gained
widespread popularity. Instant messaging may be a valuable business
tool because it allows users to communicate messages almost
instantaneously to each other. Traditional computing platforms
(e.g., personal computers, laptops, and the like) typically include
a feature which enables a user to save instant messages (e.g.,
conversations, chat histories, etc.) in permanent memory of a
computing system. Additionally, a user may be able to select a
directory on a file system in permanent memory and/or a file format
(e.g., ASCII, rich text, HTML, etc.) for saving the instant
messages.
[0003] With the technological advances of wireless devices (e.g.,
hand held computers, web capable wireless telephones, etc.), the
ability to perform instant messaging has been extended beyond the
conventional computing platforms. In this respect, it is now
possible for users to perform instant messaging from virtually
anywhere by employing any number of wireless devices.
[0004] While instant messaging with wireless devices is convenient,
wireless devices are not quite as convenient as the conventional
computing platforms. For instance, the capability of conventional
computing platforms to archive instant messages may be limited due
to the relatively small amounts of memory typically found in
conventional wireless devices. Accordingly, the relatively small
amount of memory available on wireless devices may somewhat limit
the number and length of instant messages that may be archived in
the memory of the wireless devices. Additionally, because the
wireless devices typically archive the instant messages under
relatively unique formats, inter-device compatibility and
availability may be limited.
SUMMARY OF THE INVENTION
[0005] According to one aspect, the present invention relates to a
method for transferring data between a data source and a data sink.
The method includes initiating a transfer of a message history data
and transferring the message history data in response to an
establishment of a communication channel. The method further
includes converting received message history data to a previously
selected data format and storing converted message history data in
a previously selected location.
[0006] In another aspect, the present invention relates to a method
for transferring chat history. The method includes initiating a
transfer of the chat history and transferring the chat data in
response to an establishment of a communication channel. The method
further includes combining associated data related to the chat
history and determining a destination of the chat history.
[0007] In yet another aspect, the present invention relates to a
method for synchronizing a message history. The method includes
initiating a transfer of the message history and transferring the
message history in response to an establishment of a communication
channel. The method includes determining a destination of the
message history.
[0008] In yet another aspect, the present invention relates to an
apparatus for synchronizing a chat history. The apparatus includes
an interface adapted to communicate with a destination device and a
memory configured to store the chat history of a messaging program.
The apparatus also includes a processor configured to accept a
synchronization request, and to transfer the chat history in
response to an establishment of a communication channel through the
interface.
[0009] In yet another aspect, the invention relates to a source
device for synchronizing a message history. The source device
includes the message history of a messaging program. The source
device also includes a processor configured to accept a
synchronization request, and to transfer the message history in
response to an establishment of a communication channel through the
interface.
[0010] In yet another aspect, the invention relates to a
destination device for synchronizing a message history. The
destination device includes an interface adapted to communicate
with a source device and a memory. The destination device also
includes a processor configured to establish a communication
channel with the source device through the interface in response to
a synchronization request at the source device and to activate a
synchronization module configured to accept the message history
from the source device in response to an activation message from
the source device.
[0011] In yet another aspect, the invention relates to a system for
synchronizing a chat history. The system includes a communication
network, a source device configured to transfer the chat history
over the communication network and a destination device configured
to receive the chat history. The system also includes a source
synchronization module executing on the source device and a
destination synchronization module adapted to execute on the
destination device, where the source synchronization module is
configured to transfer the chat history in response to an
activation of the destination synchronization module by the source
synchronization module.
[0012] In yet another aspect, the invention relates to a computer
readable storage medium on which is embedded one or more computer
programs. The one or more computer programs implement a method of
transferring a message history data, where the one or more computer
programs include a set of instructions for initiating a transfer of
the chat history and transferring the chat data in response to an
establishment of a communication channel. The one or more computer
programs also include a set of instructions for combining
associated data related to the chat data and determining a
destination of the chat data.
[0013] In yet another aspect, the invention relates to a computer
readable storage medium on which is embedded one or more computer
programs. The one or more computer programs implement a method of
transferring a chat history, where the one or more computer
programs include a set of instructions for transferring the chat
history in response to an establishment of a communication channel
with the destination and converting received data to a previously
selected data format, and storing converted chat history in a
previously selected location.
[0014] In yet another aspect, the invention relates to a computer
readable storage medium on which is embedded one or more computer
programs. The one or more computer programs implement a method of
synchronizing a message history, where the one or more computer
programs include a set of instructions for initiating a transfer of
the message history, transferring the message history in response
to an establishment of a communication channel, and determining a
destination of the message history.
BRIEF DESCRIPTION OF THE DRAWINGS
[0015] Features and advantages of the present invention will become
apparent to those skilled in the art from the following description
with reference to the drawings, in which:
[0016] FIG. 1 illustrates an exemplary block diagram of a system
architecture according to the principles of the present
invention;
[0017] FIG. 2 illustrates an exemplary block diagram of a wireless
device as a source computing platform shown in FIG. 1 in accordance
with the principles of the present invention;
[0018] FIG. 3 illustrates an exemplary block diagram of a software
architecture for the wireless device shown in FIG. 2 in accordance
with the principles of the present invention;
[0019] FIG. 4 illustrates an exemplary block diagram of a computer
system as the destination computing platform, as shown in FIG. 1,
in accordance with the principles of the present invention;
[0020] FIG. 5 illustrates an exemplary block diagram of a software
architecture for the destination computer system, as shown in FIG.
4, in accordance with the principles of the present invention;
[0021] FIG. 6 illustrates an exemplary flow diagram of a synch
module functioning as a source synch module for either of the
synchronization modules as shown in FIGS. 3 and 5, respectively, in
accordance with the principles of the present invention;
[0022] FIG. 7 illustrates an exemplary flow diagram of the
destination synchronization module portion of the synchronization
modules of FIGS. 3 and 5, respectively, in accordance with the
principles of the present invention;
[0023] FIG. 8 illustrates an exemplary block diagram of a system
architecture of another embodiment of the present invention;
[0024] FIG. 9 illustrates an exemplary block diagram of a software
architecture of an embodiment of the present invention as
implemented in the system architecture of FIG. 8;
[0025] FIG. 10 illustrates an exemplary flow diagram for a source
synchronization module in the system architecture as shown in FIGS.
8-9; and
[0026] FIGS. 11A-C, together, illustrates an exemplary flow diagram
for a destination/intermediate synchronization module in the system
architecture as shown in FIGS. 8-9.
DETAILED DESCRIPTION OF THE INVENTION
[0027] For simplicity and illustrative purposes, the principles of
the present invention are described by referring mainly to
exemplary embodiments thereof, particularly with references to a
synchronization module ("synch module"). However, one of ordinary
skill in the art would readily recognize that the same principles
are equally applicable to, and can be implemented in, any type of
computing environment capable of transferring data, and that any
such variation would be within such modifications that do not
depart from the true spirit and scope of the present invention.
Moreover, in the following detailed description, references are
made to the accompanying drawings, which illustrate specific
embodiments in which the present invention may be practiced.
Electrical, mechanical, logical and structural changes may be made
to the embodiments without departing from the spirit and scope of
the present invention. The following detailed description is,
therefore, not to be taken in a limiting sense and the scope of the
present invention is defined by the appended claims and their
equivalents.
[0028] In accordance with the principles of the present invention,
a synch module may reside on a source computing platform and a
destination computing platform. The source computing platform may
be one of the group comprising a wireless device (e.g., a
text-messaging enabled pager, a personal digital assistant, a
wireless telephone, etc.), a laptop computer, a desktop computer,
or other similar computing platform. The destination computing
platform may be selected from the same group of devices listed
hereinabove for the source computing platform. However, the
destination computing platform is not required to be identical to
the source computing platform.
[0029] The synch module may be configured to operate as a source
synch module or a destination synch module depending on which
computing platform functions as a data source. As a data source or
initiator, the synch module may be configured to transfer data,
e.g., an archived message history, from a source computing platform
to a destination computing platform. At the destination computing
platform, the synch module may be further configured to convert the
received archived message history to a specified data format, where
the data format is predetermined by a user. The converted data,
e.g., an archived message history, may then be stored in a
pre-determined location by the synch module.
[0030] In particular, the synch module, functioning as an initiator
(or source) of data on a source computing platform, may be
configured to query for the availability of a destination computing
platform. The synch module may be further configured to transfer
data, e.g., an archived message history, in response to an
establishment of a communication channel between the source
computing platform and the destination computing platform. The
communication may be implemented using conventional means such as
wired (e.g., cable, modem, network, etc.) or wireless (e.g.,
infrared, optical, radio-frequency, etc.) forms of communication.
The synch module may be further configured to store the transferred
data, e.g., an archived message history, to a destination
synchronization module of the destination computing platform.
[0031] The synch module on the destination computing platform,
functioning as a destination (or data sink), may be configured to
convert the received data into a format specified by a user. The
synch module may be configured to provide the capability to select
a preferred or user-specified data format (e.g., text, HTML, PDF,
etc.) via a user-interface such as a menu option, a command line
prompt, an icon, etc. The synch module may be further configured to
store the converted data in a location also specified by the user
via a user interface such as a dialog box, a command line prompt,
an icon, etc.
[0032] In another aspect of the present invention, a synch module
may reside on a source computing platform, an intermediate
computing platform and a destination computing platform. Although
the synch module is substantially similar on each computing
platform, the synch module may function as a source synch module,
an intermediate synch module or a destination synch module
depending on the role of the respective computing platform. In
particular, the synch module residing on the source computing
platform may function as a source synch module. The synch module
residing on the intermediate computing platform may function as an
intermediate synch module. The synch module residing on the
destination computing platform may function as the destination
synch module.
[0033] In the source synch module aspect, the synch module may be
configured to receive a synchronization request from a user. The
synchronization request, broadly speaking, may be configured to
initiate a data transfer and conversion from one computing platform
to another computing platform. The synch module may be further
configured to establish a communication channel with an
intermediate or destination computing platform. Once the
communication channel is established, the synch module may be
further configured to activate the synch module of the
intermediate/destination computing platform. The synch module may
be further configured to transfer data, e.g., an archived message
history, to the intermediate/destination computing platform. The
synch module of the intermediate/destination computing platform may
be configured to combine any data related to the transferred data
into a single file.
[0034] In the intermediate synch module aspect, the synch module of
the intermediate/destination computing platform may be further
configured to determine if the intermediate computing platform is
the final destination of the data from the source computing
platform. If the intermediate computing platform is the final
destination, the synch module may be configured to convert the
transferred data into a data format specified by the user. The
synch module of the intermediate computing platform may be further
configured to send a completion signal or message to inform to the
synch module of the source computing platform that the
synchronization has been completed. Otherwise, the synch module of
the intermediate computing platform may be further configured to
determine whether the destination computing platform is
available.
[0035] If the destination computing platform is unavailable, the
synch module of the intermediate computing platform may temporarily
store the transferred data while periodically attempting to
establish a communication channel with the destination computing
platform. Otherwise, the synch module may be further configured to
establish a communication channel with the destination computing
platform. The synch module may be further configured to activate
the synch module of the destination computing platform in response
to the establishment of a communication channel between the
intermediate and destination computing platforms. The synch module
of the intermediate computing platform may be further configured to
transfer the designated data to the destination computing
platform.
[0036] In the destination synchronization module aspect, the synch
module of the destination computing platform may be configured to
convert the received data into a data format selected by a user.
The synch module may be further configured to store the converted
data into a location also specified by the user.
[0037] FIG. 1 illustrates an exemplary block diagram of a system
architecture 100 according to the principles of the present
invention. As shown in FIG. 1, a source computing platform 110 may
be interfaced with a destination computer platform 120. The source
computing platform 110 may be a wireless device, e.g., a
text-messaging pager, a wireless telephone, a personal digital
assistant, etc., or a wired device such as a laptop computer, a
computer, a server with clients, etc.
[0038] The destination computer platform 120 may be configured to
provide a computing platform for applications and input/output
services such as printing, information storage, etc. The
destination computer platform 120 may be a wireless device, e.g., a
text-messaging pager, a wireless telephone, a personal digital
assistant, etc., or a wired device such as a laptop computer, a
computer, a server with clients, etc.
[0039] The destination computer platform 120 may be further
configured to interface with a data storage device 125. The data
storage device 125 may be configured to provide additional storage
for information for the computer system 120. The data storage
device 125 may be implemented by a disk drive, tape drive, or other
type of permanent memory.
[0040] The source computing platform 110 may be configured to
communicate with the destination computing platform 120 via wired
and/or wireless methods. The wired methods may include a cable, a
modem connection through the public switched telephone network,
etc. The wireless method may include infrared, Bluetooth, radio
frequency, etc. The source computing platform 110 and the
destination computing platform 120 may communicate using a
communication protocol such as Bluetooth, IEEE 802.3, REFLEX,
etc.
[0041] The source and destination computing platforms, 110 and 120,
may be configured to provide the capability of a messaging service
such as instant messaging for their respective users. Accordingly,
a user of the source computing platform 110 and/or destination
computing platform 120 may use a supporting network of the source
computing platform 110 to transmit and/or receive instant messages
from other users. The other users may use a complementary device to
the source computing platform 110 and/or destination computing
platform 120 (e.g., PDAs, laptop computers, desktop computers,
etc.) to communicate. The messaging service (not shown) may be
implemented as a software program executed by the source computing
platform 110 and/or destination computing platform 120. The
messaging service may be further configured to maintain a history
of the messages, i.e., a log of messages, passed between the user
and other users. The message history may be stored as text file,
compressed data file, or in any format suitable for the source
computing platform 110 and/or destination computing platform
120.
[0042] The source computing platform 110 and destination computing
platform 120 may be configured to execute a first and second synch
module 130 and 130', respectively. First synch module 130 and
second synch module 130' are substantially similar, and may be
identical. The functionality exhibited by each synch module, 130 or
130', as a source synch module or a destination synch module is
dependent on which computing platform is the source of the data
transmission.
[0043] For example, if the source computing platform 110 is
configured to the source of the data to be transferred and
synchronized with the destination computing platform 120, the first
synch module 130 of the source computing platform 110 may be
configured to receive a synchronization request from a user. The
first synch module 130 may be further configured to transfer data,
e.g., a message history, to the second synch module 130' of the
destination computing platform 120 over a communication channel.
Although, for illustrative purposes only, FIG. 1 shows the source
computing platform 110 as the source of data, it should be readily
apparent to those skilled in the art that either one of the source
or destination computing platforms, 110 and 120, respectively, may
be the source of data. Accordingly, a user initiates a synch
command from the destination computing platform, the destination
synch module attempts to establish the connection with the source
synch module and "pulls" the message history from the source
computing platform.
[0044] The second synch module 130' of the destination computing
platform 120 may be configured to convert the received data into a
predetermined data format by the user. The second synch module 130'
may be further configured to store the converted message history in
a predetermined location.
[0045] Conversely, if the second synch module 130' receives a
synchronization request, the second synch module 130' may be
configured to transfer data, e.g., a message history, to the first
synch module 130 over a communication channel. The first synch
module 130 may be configured to configured to convert the received
data into a data format predetermined by the user. The first synch
module 130 may be further configured to store the converted message
history in a predetermined location.
[0046] FIG. 2 illustrates an exemplary block diagram of a wireless
device 200 as the source computing platform 110 shown in FIG. 1 in
accordance with the principles of the present invention. As shown
in FIG. 2, the wireless device 200 may include a controller 205, a
wireless interface 210, a memory 215, a display 220, a keypad 225,
and a read-only memory 230. Although, for illustrative purposes
only, FIG. 2 illustrates the wireless device 200 with the
above-mentioned components, it should be readily apparent to those
of ordinary skill in the art that FIG. 2 represents a generalized
schematic illustration of a wireless device and that other
components may be added or existing components may be subtracted
without departing from the spirit or scope of the present
invention.
[0047] The controller 205 may be configured to provide a computing
platform for the software/firmware that provides the functionality
of the wireless device 200 and to execute a computer program
embodiment of the synch module 130. The controller 205 may be
implemented with a microprocessor, a micro-controller, an
application specific integrated circuit ("ASIC") a digital signal
processor, and the like.
[0048] The controller 205 may be interfaced with a wireless
interface 210. The wireless interface 210 may be configured to
provide the capability for the user to receive and transmit
information via radio frequency techniques such as cellular
networks, pager networks, etc. The wireless interface 210 may be
implemented by a pager interface, a wireless modem, a personal
communication services ("PCS") interface, and the like.
[0049] The controller 205 may be further configured to interface
with the memory 215. The memory 215 may be configured to provide
the capability to store information and to provide application
memory space. The memory 215 may be implemented with a random
access memory ("RAM"), flash memory, or other re-writable
memory.
[0050] The display 220 may be configured to interface with the
controller 205. The display 220 may be further configured to
provide an interface for information to be displayed, including
messages. The display 220 may include menu icons, program icons, or
similar user interfaces to enable navigation through the
functionality of the wireless device 200. The display 220 may be
implemented with a liquid crystal display, thin film target
display, or the like.
[0051] The controller 205 may be configured to interface with the
keypad 225 which is configured to provide an interface for the
performance of predetermined functions of the wireless device 200.
The keypad 225 may be implemented by a numeric keypad, an
alphanumeric keypad, or the like.
[0052] The read-only memory 230 of the wireless device 200 may be
configured to provide non-volatile storage of software for the
wireless device 200. The software may include an operating system,
operational software that provides the functionality of the
wireless device 200, third party software, and the like. The
read-only memory 230 may be implemented with an EEPROM, a PROM, a
flash memory, or other types of permanent memories.
[0053] FIG. 3 illustrates an exemplary block diagram of a software
architecture 300 for the wireless device 200 shown in FIG. 2 in
accordance with the principles of the present invention. As shown
in FIG. 3, the software architecture 300 includes at least an
operating system 310, an application program interface ("API") 315,
a messaging program 320, and the synch module 130. Although, for
illustrative purposes only, FIG. 3 illustrates the wireless device
200 with above-mentioned software architecture, it should be
readily apparent to those of ordinary skill in the art that FIG. 3
represents a generalized illustration of the software architecture
and that other software components may be added or existing
software components may subtracted without departing from the
spirit or scope of the present invention.
[0054] The operating system 310 of the wireless device 200 may be
configured to manage software programs or applications that provide
functionality to the wireless device 200. The operating system 310
may be further configured to provide an interface to the software
applications and to the underlying hardware components, as shown in
FIG. 2, of the wireless device 200 through the API 315.
[0055] The messaging program 320 may be configured to provide the
wireless device 200 with the capability of receiving and
transmitting instant messages between the user and other
similarly-enabled users. The messaging program 320 may be
configured to maintain a message history of conversations between
the user and other similarly-enabled users. The message history may
be stored on the memory 215 of the wireless device 200, shown in
FIG. 2. The messaging program 320 may be further configured to save
the message history as a text file, a compressed data file, or in a
format configured to conserve space in the memory 215. Examples of
a messaging program may include AETHER INSTANT MESSAGING, JABBER,
etc.
[0056] The synch module 330 of the wireless device 200 may be
configured to include the functionality of the first and second
synch modules 130 or 130', respectively, as described herein above.
Moreover, the synch module 330 may be configured to function an
initiator of the transfer of data. Accordingly, the synch module
330 may be configured to transfer data, e.g., the saved or archived
message history, from the memory 215 to a destination computer
platform in response to a synchronization request. The
synchronization request may be initiated, for example, as a menu
option, an icon or manually initiated through the keypad 225. The
synch module 330 may be further configured to determine whether a
communication channel is available over the wireless interface 210
to a destination computer system. In the event that the synch
module 330 is unable to open a communication channel to a
destination computer platform, the synch module 330 may be further
configured to indicate that the synchronization could not be
performed. Alternatively, the synch module 330 of the source
computing platform may be configured to receive data, e.g., a
message history, from another computing platform, which is
described in greater detail herein below.
[0057] FIG. 4 illustrates an exemplary block diagram of a computer
system 400 as the destination computing platform 120 and executing
a computer program embodiment of the synch module, 130 or 130', as
shown in FIG. 1, in accordance with the principles of the present
invention. Moreover, the computer system 400 may be configured to
function a destination for the transfer of data from wireless
device 200.
[0058] The functions of the synch modules, 130 or 130', may be
implemented in program code and executed by the computer system
400. In particular, the computer system 400 includes one or more
processors, such as processor 402 that provides an execution
platform for the destination synchronization module. Commands and
data from the processor 402 are communicated over a communication
bus 404. The computer system 400 also includes a main memory 406,
preferably Random Access Memory (RAM), where the software for the
destination synchronization module is executed during runtime, and
a secondary memory 408. The secondary memory 408 includes, for
example, a hard disk drive 410 and/or a removable storage drive
412, representing a floppy diskette drive, a magnetic tape drive, a
compact disk drive, etc., where a copy of software for the synch
modules, 130 or 130', may be stored. The removable storage drive
412 reads from and/or writes to a removable storage unit 414 in a
well-known manner. The synch modules, 130 or 130', is interfaced
with a keyboard 416, a mouse 418, and a display 420. The display
adaptor 422 interfaces with the communication bus 404 to receive
display data from the processor 402 and converts the display data
into display commands for the display 420. The wireless interface
450 is configured to provide a communication interface between the
destination computer platform 400 and a source computing
platform.
[0059] FIG. 5 illustrates an exemplary block diagram of a software
architecture executed by the destination computer system 400, as
shown in FIG. 4, in accordance with the principles of the present
invention. As shown in FIG. 5, the software architecture 500
includes at least an operating system 510, an API 515, a messaging
program 520, and a synch module 530. The synch module 530 may
include all the functionality of the synch module, 130 or 130', as
discussed herein above. It should be readily apparent to those of
ordinary skill in the art that FIG. 5 represents a generalized view
of the software architecture and that other software components may
be added or existing software components may be subtracted without
departing from the spirit or scope of the present invention.
[0060] The operating system 510 of the destination computer system
400 may be configured to manage software programs or applications
that provide functionality to the destination computer system 400.
The operating system 510 may be further configured to provide an
interface through the API 515 to the software applications and to
the underlying hardware components, shown in FIG. 2, of the
wireless device 200.
[0061] The messaging program 520 may be configured to provide the
destination computer system 400 with the capability of receiving
and transmitting instant messages between the user and other
similarly-enabled users. The messaging program 520 may be
configured to maintain a message history of conversations between
the user and other similarly-enabled users. The message history may
be stored on the main memory 406 of the destination computer system
400, shown in FIG. 4. The messaging program 520 may be further
configured to save the message history as a text file, a compressed
data file or in a format configured to conserve space in the main
memory 406. Examples of a messaging program may include AETHER
INSTANT MESSAGING, JABBER, etc.
[0062] The synch module 530 of the destination computer system 400
may include the functionality of the synch module, 130 or 130', as
discussed herein above. Moreover, the synch module 530 may be
further configured to convert a transferred archived message
history from a wireless device in response to a connection query.
The connection query may be initiated by a synchronization module
of a wireless device. The connection query may be configured to
determine whether a communication channel is available between a
wireless device and the destination computer system 400.
[0063] If the communication channel is available, the synch module
530 may be configured to receive an archived message history from a
wireless device. The synch module 530 may be further configured to
convert the format of the archived message history into a
user-specified format. The synch module 530 may be further
configured to provide a capability of selecting a data format
(e.g., MICROSOFT WORD, HTML, XML, etc.) for the converted archived
message history. Moreover, the synch module 530 may be further
configured to store the converted data, e.g., an archived message
history, in a location specified by the user, e.g., the hard disk
drive 410 of the destination computer system 400. Alternatively,
the synch module 530 of the destination computing platform may be
further configured to execute similar functionality as the synch
module 330 of the source computing platform, as described herein
above, when the synch module 530 is a source of data.
[0064] FIG. 6 illustrates an exemplary flow diagram 600 of the
synch module 330 shown in FIG. 3 functioning as a source
synchronization module in accordance with the principles of the
present invention. The synch module 330 may be configured to be in
an idle state or inactive state, in step 605. The synch module 330
may receive a synchronization request from a user, in step 610. For
example, the synchronization request may have been initiated by a
menu option displayed on the display 220 or a combination of
keypresses on the keypad 225 for the wireless device 200.
[0065] In step 615, the synch module 330 of source destination
computing platform, e.g., wireless device 200, may be configured to
attempt to link or establish a connection or communication channel
with a destination computer platform such as computer system 400,
as shown in FIG. 4. The synch module 330 may link with the
destination computer platform utilizing wired (e.g., RS-232,
universal serial bus, etc.) or wireless (e.g., infrared, radio
frequency, Bluetooth, etc.) protocols.
[0066] In step 620, the synch module 330 may be further configured
to determine whether a connection has been established between the
wireless device 200 and the destination computer platform. If the
connection has not been established, the synch module 330 may be
further configured to report that the destination computer system
is unavailable to the user, in step 625. For example, the synch
module 330 may display a text message on the display 220 informing
the user that the destination computer system is unavailable. The
synch module 330, in step 625, may be further configured to query
the user whether the user would like to re-attempt to link with the
destination computer via displaying a text message on the display
220. If the user decides to re-attempt to connect to the
destination computer, for example, by pressing a combination of
keypresses on the keypad 225, the synch module 330 may be further
configured to return to step 615. Otherwise, the synch module 330
may be further configured to return to an idle state 605.
[0067] Returning to step 620, if the synch module 330 of the source
computing platform is successful in connecting to the destination
computer, the synch module 330 may be configured to send an
activate message or signal to a destination synchronization module
of the destination computer system, in step 635. The activate
message may be configured to prepare the destination
synchronization module for the receipt of data from the wireless
device 200. The destination synchronization module may be
configured to send an activated message response configured to
inform the synch module 330 that the destination synchronization
module has been activated.
[0068] In step 640, the synch module 330 of the wireless device 200
may be configured to transfer the archived message history to the
destination synchronization module in response to receiving the
activated message. The synch module 330 may be further configured
to determined whether the data transfer is completed, in step 645.
If the archived message history has been transferred, the synch
module 330 may be further configured to return to the idle state
605. Otherwise, the synch module 330 may be further configured to
enter a wait state, in step 650, and return to step 645 after the
wait state has expired to determine if the data transfer has been
completed. The length of the wait state may be a variable which may
be set by the user, programmer, or manufacturer.
[0069] FIG. 7 illustrates an exemplary flow diagram 700 of the
synch module 530 functioning as a destination synch module in
accordance with the principles of the present invention. As shown
in FIG. 7, the synch module 530 of the destination computer system
120 may be configured to be in an idle state, in step 705. The
destination computer system 120 may receive messages or signals
from remote devices while in the idle state.
[0070] In step 710, if one of the messages is an activation message
from a source computing platform, e.g., a wireless device, the
synch module 530 may be further configured to establish a
connection in step 715 with the requesting device. Otherwise, the
synch module 530 may be further configured to return to the idle
state of step 705.
[0071] Once the connection has been established, the synch module
550 may be further configured to transmit an activation response
signal or message, in step 720. The activation signal may be in the
form of a protocol handshake, a message packet, and the like.
[0072] In step 725, the synch module 530 may be further configured
to receive data, e.g., archived message history, from the source
computing platform. The data is converted into a user-specified
format in step 730. Alternatively, the synch module 530 may be
configured to convert the received data after the source computing
platform completes the transfer of the received data.
[0073] In step 735, the synch module 530 may be further configured
store the converted data in a pre-determined location. The synch
module 530 may be configured to previously provide a user
interface, e.g., a menu option, a dialog box, a command line
prompt, etc., whereby the user may specify a location to store the
converted data.
[0074] In step 740, the synch module 530 may be further configured
to transmit a synchronization completed signal or message to the
source computing platform and the connection between the
destination computer system 120 and a source device is severed or
ended, in step 745. The synch module 530 may be further configured
to return to the idle state of step 705.
[0075] FIG. 8 illustrates an exemplary block diagram of a system
architecture 800 of another embodiment of the present invention. As
shown in FIG. 8, the system architecture 800 includes a source
computing platform 810, a message server 820 as an intermediate
computing platform, a destination computing platform 830, a client
computing platform 840, and a storage system 850. Although, for
illustrative purposes only, FIG. 8 shows one source computing
platform 810, one message server 820, one destination computing
platform 830, and one client computing platform 840, it should be
readily apparent to one of ordinary skill in the art that any
number of devices may be used without departing from scope or
spirit of the present invention.
[0076] The source computing platform 810 similar to the source
computing platform device 110 shown in FIG. 1 described hereinabove
and thus only those features which are reasonably necessary for a
complete understanding of this embodiment is described herein
below. The message server 820 may be configured to provide a
messaging service, e.g., AETHER INSTANT MESSAGING, JABBER, etc., to
users. The message server 820 may be implemented using computing
platforms such as SUN ENTERPRISE 10000 SERVER, SILICON GRAPHICS
INCORPORATED 2100, HEWLETT PACKARD 9000, etc. The message server
820 may be configured to interface with computing platforms such as
wireless devices through a wireless networks such as personal
communication services network, a pager network, a cellular
telephone network, etc., or a combination thereof.
[0077] The message server 820 may be further configured to provide
an archiving or storage service to source computing platforms,
e.g., wireless devices such as text pagers, WAP-enabled telephones,
etc., that are not equipped with sufficient memory to store data,
e.g., an archived message history. For example, a text pager as the
source computing platform 810 may not contain enough memory to
maintain a message history for a messaging session between users.
As a result, the message server 820 may be configured to provide
memory space to temporarily store data, e.g., the message
history.
[0078] The message server 820 may be further configured to
interface to the destination computing platform 830 via wired
(e.g., local area networks, wide area networks, etc.) means or
wireless networks. The destination computing platform 830 is
substantially similar to the destination computing platform 120 as
shown in FIG. 1, and thus only those features which are reasonably
necessary for a complete understanding of this embodiment is
described herein below. The destination computing platform 830 may
be configured to provide an archiving or storage service for users
of the source computing platform 810. The destination computing
platform 830 may be configured to convert received data, e.g., a
message history, into a user-specified format and store the
converted data in a pre-determined user location in the storage
device 850 interfaced with the destination computing platform
830.
[0079] FIG. 9 illustrates an exemplary block diagram of a software
architecture 900 of an embodiment of the present invention as
implemented in the system architecture of FIG. 8. As shown in FIG.
9, the source computing platform 810, message server 820 and the
destination computing platform 830 each contain a respective synch
module, 910, 920, 930. Each of the synch modules 910, 920, 930 may
be configured to include similar functionality as the synch module,
130 or 130'. Accordingly, each synch module may have the
functionality of a source and/or destination synch module depending
on which computing platform is the source/destination of data as
discussed hereinabove with respect to FIGS. 1-7. Moreover, each
synch module, 910, 920, 930, may include an intermediate synch
module functionality. With regard to the intermediate synch module
aspect, the synch module, 910, 920, 930, may be configured to
provide interim processing of data from a source computing platform
to a destination computing platform.
[0080] In particular, an intermediate computing platform may
contain data related to a synchronization request. The sync module
of the intermediate computing platform may be configured to combine
any data related to the synchronization request into a single file
on an intermediate computing platform.
[0081] The synch module of the intermediate computing platform may
be further configured to determine if the intermediate computing
platform is the final destination of the data from the source
computing platform. If the intermediate computing platform is the
final destination, the synch module may be configured to convert
the transferred data into a data format specified by the user. The
synch module may be further configured to send a completion signal
or message to inform a source computing platform that the
synchronization request has been completed. Otherwise, the synch
module may be further configured to determine whether the
destination computing platform is available.
[0082] If the destination computing platform is unavailable, the
synch module of the intermediate computing platform may temporarily
store the transferred data while periodically attempting to
establish a communication channel with the destination computing
platform. Otherwise, the synch module may be further configured to
establish a communication channel with the destination computing
platform. The synch module may be further configured to activate a
synch module of the destination computing platform in response to
the establishment of a communication channel between the
intermediate and destination computing platforms. The synch module
of the intermediate computing platform may be further configured to
transfer the designated data to the destination computing
platform.
[0083] As an example of an embodiment of the present invention, if
the source computing platform 810 is configured as a source of
data, the synch module 910, functioning as a source synchronization
module, may be configured to transfer the saved or archived message
history from a messaging program 916 in the source computing
platform 810 to a destination computer system in response to a
synchronization request. The synchronization request may be
initiated as a menu option, an icon or manually initiated through a
keypad on the source computing platform 810.
[0084] The synch module 910 of the source computing platform 810
may be further configured to determine whether a communication
channel is available over an interface (wired/wireless) to an
intermediate/destination computer system through an API 912 of an
operating system 914. In the event that the synch module 910 is
unable to open a communication channel to the
intermediate/destination computer system, the synch module 910 may
be further configured to indicate that the synchronization could
not be performed.
[0085] If the communication channel is available, the synch module
920 of the intermediate computing platform, such as the message
server 820, may be interfaced through an API 922 of an operating
system 924. The API 922 may be further configured to interface with
a messaging program 926. The messaging program 926 may be
configured to provide instant messaging services for users of the
system architecture 800. The messaging program 926 may be
implemented by AETHER INTELLIGENT MESSAGING, JABBER, etc.
[0086] The synch module 920 of the message server 820 may be
further configured to receive data, e.g., a message history, from
the source computing platform 810. The synch module 920 may be
further configured to combine any data related to the received data
and to determine whether the message server 820 is the destination
for the data. If the message server 820 is final destination for
the data, the synch module 920 may be further configured to store
the data in predetermined location.
[0087] Otherwise, the synch module 920 may be further configured to
establish a connection with the destination computing platform 830
through an API 932 of an operating system 934. The API 932 may be
further configured to interface with a messaging program 936. If
the connection is not enabled, the synch module 920 may temporarily
store the combined data in memory location and attempt to establish
a connection with the destination computing platform 830 at a later
time. Otherwise, once the connection is established, the synch
module 920 of the message server 820 may be configured to transfer
the combined data to the destination computing platform 830.
[0088] The synch module 930 of the destination computing platform
830 may be configured to convert received data, e.g., a message
history, to a user-specified format. The synch module 930 may be
further configured to store the converted data in a location
specified by the user in the storage device 850. Alternatively, the
converted data may be stored in a memory of a computer system 840
by the destination synch module 930. FIG. 10 illustrates an
exemplary flow diagram 1000 for a source synchronization module in
the system architecture as shown in FIGS. 8-9. As shown in FIG. 10,
a source synchronization module may be configured to be in an idle
state, in step 1005. In step 1010, a synchronization may be
initiated by receipt of a synchronization request. The
synchronization request may be initiated by a menu option, a
command line prompt, a combination of keypresses, etc.
[0089] Once the synchronization is initiated, the source
synchronization module may be further configured to establish a
connection in step 1015. The source synchronization module may
initiate a connection protocol or transmit a message to connect
with a destination synchronization module. If the connection is not
enabled, the source synchronization module may be further
configured to store the data, e.g., a message history, on the
source platform such as a wireless device, a computing platform,
etc.
[0090] Otherwise, when the connection is established in step 1020,
the source synchronization module may be further configured to
activate a destination synchronization module, in step 1025. The
destination synchronization module may be activated as part of a
protocol handshake, receiving an activation signal or message,
etc.
[0091] In step 1030, the source synchronization module may be
further configured to transfer data, e.g., a message history, in
response to the activation of the destination synchronization
module. In step 1035, the source synchronization module may be
further configured to determine if the data transfer is completed.
If the data transfer is not completed, the source synchronization
module may be further configured to enter a wait state, in step
1040.
[0092] Returning to step 1035, if the data transfer is complete,
the source synchronization module may be configured to return to
the idle state of step 1005.
[0093] Returning to step 1020, if the connection cannot be
established, the source synchronization module may be further
configured to temporarily store the data, e.g., a chat history, on
the source computing platform, in step 1045. The source
synchronization module, in step 1050 may be further configured to
report the unavailability of the destination computing
platform.
[0094] In step 1055, the source synchronization module may be
further configured to prompt a user for a re-attempt to establish
communication with the destination computing platform. If the there
is a re-attempt, the source synchronization module may be
configured to return to step 1015. Otherwise, the source
synchronization module may be configured to return to the idle
state of step 1005.
[0095] FIGS. 11A-C, together, illustrate an exemplary flow diagram
1100 for a destination/intermediate synchronization module in the
system architecture as shown in FIGS. 8-9. As shown in FIG. 11A,
the destination/intermediate synchronization module ("DISM") may be
configured to be in an idle state in step 1105. The DISM may be
further configured to determine whether a connection request has
been received from a source synchronization module, in step 1110.
This determination may be implemented asynchronously or on a
periodic basis. If a connection request has not been received, the
DISM may be configured to return to the idle state of 1105.
[0096] Otherwise, if a connection request has been received in step
1110, the DISM may be further configured to attempt to establish a
link or connection with the source synchronization module, in step
1115. The connection may be implemented using handshake signals,
TCP/IP, or similar protocols.
[0097] In step 1120, the DISM may be configured to receive an
activation request from a source synchronization module. The
activation request may be part of a handshake protocol, another
received message or similar notification. Once activated, the DISM
may be further configured to receive data, e.g., a message history,
from the source synchronization module in step 1125.
[0098] In step 1130, the DISM may be configured to combine the
received data, e.g., a message history, with any existing message
history cached or temporarily stored on the current computing
platform. A source computing platform may not contain enough memory
space to store a complete message history. Accordingly, the current
computing platform may be the message server 820 which may be
configured to maintain a partial or full message history in a
memory.
[0099] In step 1135, the DISM may be configured to determine if the
current platform is the destination platform for the data from the
source synchronization module. The data received may contain a
destination code, e.g., a destination address, which may designate
the destination computing platform. Each synchronization module may
be assigned a location code where the DISM may compare the
destination code with the location of the destination computing
platform.
[0100] If the comparison is true, in step 1140 with reference to
FIG. 11B, the DISM may be configured to convert the received data,
e.g., a message history, into a predetermined or pre-selected
format. The format may be configured by a user of the
destination/intermediate computer system via a menu option, a
command line prompt, an icon, etc. The DISM may convert the data in
response to receipt of a signal indicating that all of the data
from the source computing platform or the DISM may convert the data
as the data is received from the source computing platform.
[0101] In step 1145, the DISM may be configured to store the
converted data in a predetermined location. The location may be
specified by a user of the destination/intermediate computer system
via a menu option, a command line prompt, an icon, etc. The DISM
may be further configured to send a completion signal or message to
the source synchronization module in response to storing the
converted data, in step 1150. Subsequently, the DISM may be
configured to return to the idle state of 1105 with reference to
FIG. 11A.
[0102] Returning to step 1135, if the current computing platform is
not the destination platform, the DISM may be configured to
determine if the destination computing platform is available, in
step 1155. If the destination computing platform is not available,
the DISM may be configured to temporarily store the converted data
in an available memory location, in step 1160. The DISM may be
further configured to transmit a signal or message to the source
computing platform that the destination computing platform is
currently unavailable, in step 1165.
[0103] In step 1170, the DISM may be further configured to prompt a
user for a re-attempt to establish communication with the
destination computing platform. If the there is a re-attempt, the
DISM may asynchronously or periodically attempt to establish a
connection with the destination computing platform by returning to
step 1155. Otherwise, the DISM may be configured to return to the
idle state of step 1105.
[0104] Returning to step 1155, if the destination computing
platform is available and the connection is established, the DISM
may be further configured to activate the destination synch module
of the destination computing platform, in step 1175 with reference
to FIG. 11C. The destination synchronization module may be
activated as part of a protocol handshake, receiving an activation
signal or message, etc. The DISM may be further configured to
transfer the data to the destination computing platform in step
1180.
[0105] The DISM may be further configured to wait for a completion
signal or message from the completion of the data transfer in step
1185. If the message is not received, the source synchronization
module returns to the wait state of step 1190. Otherwise, the
source synchronization module may be further configured to return
to the idle state of 1105 of FIG. 11A.
[0106] The present invention may be performed as a computer
program. The computer program may exist in a variety of forms both
active and inactive. For example, the computer program can exist as
software program(s) comprised of program instructions in source
code, object code, executable code or other formats; firmware
program(s); or hardware description language (HDL) files. Any of
the above can be embodied on a computer readable medium, which
include storage devices and signals, in compressed or uncompressed
form. Exemplary computer readable storage devices include
conventional computer system RAM (random access memory), ROM
(read-only memory), EPROM (erasable, programmable ROM), EEPROM
(electrically erasable, programmable ROM), and magnetic or optical
disks or tapes. Exemplary computer readable signals, whether
modulated using a carrier or not, are signals that a computer
system hosting or running the present invention can be configured
to access, including signals downloaded through the Internet or
other networks. Concrete examples of the foregoing include
distribution of executable software program(s) of the computer
program on a CD ROM or via Internet download. In a sense, the
Internet itself, as an abstract entity, is a computer readable
medium. The same is true of computer networks in general.
[0107] What has been described and illustrated herein are preferred
embodiments of the invention along with some of their variations.
The terms, descriptions and figures used herein are set forth by
way of illustration only and are not meant as limitations. Those
skilled in the art will recognize that many variations are possible
within the spirit and scope of the invention, which is intended to
be defined by the following claims--and their equivalents--in which
all terms are meant in their broadest reasonable sense unless
otherwise indicated.
* * * * *