U.S. patent application number 11/002735 was filed with the patent office on 2006-02-23 for method and apparatus for wirelessly sharing a file using an application-level connection.
Invention is credited to Laird Popkin, Yariv Sadan, Howard Singer.
Application Number | 20060041561 11/002735 |
Document ID | / |
Family ID | 35909504 |
Filed Date | 2006-02-23 |
United States Patent
Application |
20060041561 |
Kind Code |
A1 |
Singer; Howard ; et
al. |
February 23, 2006 |
Method and apparatus for wirelessly sharing a file using an
application-level connection
Abstract
Ad hoc application-level connections are established between
wireless devices. Autonomous selection of files on a provider
device facilitates migration of a file from the file provider to a
file receiver. Once a file provider and a file receiver are
communicatively coupled using an application-level connection, a
portion of a determined file is conveyed from the provider node to
a receiver node while a connection remains viable.
Inventors: |
Singer; Howard;
(Morganville, NJ) ; Popkin; Laird; (New York,
NY) ; Sadan; Yariv; (Tenafly, NJ) |
Correspondence
Address: |
Jack I. J'maev
187 W. Orangethorpe Ave.
Placentia
CA
92870
US
|
Family ID: |
35909504 |
Appl. No.: |
11/002735 |
Filed: |
December 2, 2004 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
10922243 |
Aug 18, 2004 |
|
|
|
11002735 |
Dec 2, 2004 |
|
|
|
Current U.S.
Class: |
1/1 ;
707/999.01 |
Current CPC
Class: |
H04L 67/108 20130101;
H04L 67/1065 20130101; H04L 67/104 20130101; H04L 67/14 20130101;
H04W 12/08 20130101; H04L 2463/101 20130101; H04L 67/1068 20130101;
H04L 63/104 20130101; H04L 63/0823 20130101 |
Class at
Publication: |
707/010 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1. A method for wirelessly sharing a file comprising: recognizing a
neighbor node; establishing a first application-level connection
with the recognized neighbor node; determining a file to be shared
with the neighbor node; and conveying to the neighbor node a
portion of the determined file while the first application-level
connection is viable.
2. The method of claim 1 wherein determining a file to be shared
comprises: receiving a user identifier from the neighbor nodes
determining if the user identifier is affiliated with a particular
group; and determining a file associated with a the particular
group when the user identifier is affiliated with said particular
group.
3. The method of claim 1 wherein determining a file to be shared
comprises: recognizing a second neighbor node; establishing an
application-level connection with the second recognized neighbor
node; receiving a list of files available from the second neighbor
node; conveying the list of available files to the recognized
neighbor node; and receiving a file selection from the recognized
neighbor node.
4. The method of claim 1 wherein determining a file to be shared
comprises: receiving a file request; selecting a file according to
the file request; receiving an authentication token; authenticating
the selected file according to the authentication token; and
declaring the selected file to be a determined file when the file
is authenticated.
5. The method of claim 4 wherein receiving an authentication token
comprises receiving a Global Release Identifier and wherein
authenticating the selected file comprises comparing the received
Global Release Identifier with a Global Release Identifier for the
selected file.
6. The method of claim 4 wherein receiving an authentication token
comprises receiving an identity code and wherein authenticating the
selected file comprises determining an identity code for the
selected file and comparing the received identity code with a
determined identity code for the selected file.
7. The method of claim 4 wherein receiving an authentication token
comprises receiving a calculated value and wherein authenticating
the selected file comprises determining a hash code for the
selected file and comparing the received hash code with a
determined hash code for the selected file.
8. The method of claim 1 wherein conveying to the neighbor node a
portion of the determined file comprises: receiving from the
neighbor node a segment identifier; extracting a segment from the
determined file according to the segment identifier; and directing
the extracted segment to the established application-level
connection.
9. The method of claim 1 wherein conveying to the neighbor node a
portion of the determined file comprises: recognizing a second
neighbor node; establishing a second application-level connection
with the second recognized neighbor node; receiving a portion of
the determined file by way of the second established connection;
and conveying the received portion of the determined file to the
established connection.
10. The method of claim 1 further comprising establishing an
incentive for sharing the determined file.
11. The method of claim 10 wherein establishing an incentive
comprises: communicating a sales price to the neighbor node;
receiving an acceptance from the neighbor node; receiving a user
identifier from the neighbor node; and noting a sale when an
acceptance is received.
12. The method of claim 11 wherein noting a sale comprises
communicating the sales price, a provider identifier and the user
identifier received from the neighbor node to a purchase
manager.
13. The method of claim 11 wherein noting a sale comprises
communicating the user identifier received from the neighbor node
and an identifier for the determined file to a purchase
manager.
14. The method of claim 10 wherein establishing an incentive
comprises: communicating a sales price to the neighbor node;
receiving at least one of an acceptance and a counter-price from
the neighbor node; noting a sale when an acceptance is received;
and noting a sale when a counter-price is received and the
counter-price is greater than a minimum sale price for the
determined file.
15. A wireless file provider device comprising: processor capable
of executing an instruction sequence; wireless interface capable of
interacting with a wireless network; and memory capable of storing
a file cache and one or more instruction sequences including:
peer-to-peer module that, when executed by the processor, minimally
causes the processor to: recognize a first neighbor node; and
establish a first application-level connection with the recognized
neighbor node using the wireless interface; file determination
module that, when executed by the processor, minimally causes the
processor to determine a file to be shared with the recognized
neighbor node; and conveyance module that, when executed by the
processor, minimally causes the processor to convey from the file
cache to the first connection established with the first recognized
neighbor node a portion of a determined file while the established
connection remains viable.
16. The wireless file provider device of claim 15 wherein the file
determination module causes the processor to determine a file to be
shared by minimally causing the processor to: receive a user
identifier by means of the first established application level
connection; and select a file from the file cache according to the
user identifier.
17. The wireless file provider device of claim 15 wherein the file
determination module causes the processor to determine a file to be
shared by minimally causing the processor to: execute the
peer-to-peer module in order to: recognize a second neighbor node;
establish a second application level connection with the second
neighbor node using the wireless interface; receive a list of one
or more available files from the second neighbor node by means of
the second established connection; convey the list of one or more
available files to the first established connection; and receive a
file selection by means of the first established connection.
18. The wireless file provider device of claim 15 wherein the file
determination module causes the processor to determine a file to be
shared by minimally causing the processor to: receive a file
request from the neighbor node by means of the first application
level connection; select a file stored in the file cache according
to the file request; receive an authentication token from the
neighbor node by means of the application level connection; and
authenticate the selected file according to the authentication
token; and execute the conveyance module when the file is
determined to be authentic.
19. The wireless file provider device of claim 18 wherein the file
determination module causes the processor to receive an
authentication token in the form of a Global Release Identifier and
includes an authentication module that, when executed by the
processor, causes the processor to authenticate the selected file
by minimally causing the processor to: compare a received Global
Release Identifier with a Global Release Identifier for the
selected file.
20. The wireless file provider device of claim 18 wherein the file
determination module causes the processor to receive an
authentication token in the form of an identity code and includes
an authentication module that, when executed by the processor,
causes the processor to authenticate the selected file by minimally
causing the processor to: compare a received identity code with an
identity code for the selected file.
21. The wireless file provider device of claim 18 wherein the file
determination module causes the processor to receive an
authentication token in the form of a calculated value and includes
an authentication module that, when executed by the processor,
causes the processor to authenticate the selected file by minimally
causing the processor to: determine a calculated value according to
a selected file; and compare a received calculated value with a
calculated value determined according to the selected file.
22. The wireless file provider device of claim 15 wherein the
conveyance module causes the processor to convey a determined file
by minimally causing the processor to: receive by means of the
first application level connection a segment identifier from a
neighbor node; extract a portion of a file from the file cache
according to the segment identifier; and direct the extracted
portion of the file to the neighbor node by means of the first
application level connection.
23. The wireless file provider device of claim 15 wherein the
conveyance module causes the processor to determine a file to be
shared by minimally causing the processor to: execute the
peer-to-peer module in order to: recognize a second neighbor node;
establish a second application level connection with the second
neighbor node using the wireless interface; receive a portion of
the determined file by way of the second established connection;
and convey the received portion of the determined file to the first
established connection
24. The wireless file provider device of claim 15 further
comprising an incentive module that, when executed by the
processor, minimally causes the processor to establish an incentive
when a file is conveyed from the file cache to a neighbor node
using the first application level connection.
25. The wireless file provider device of claim 24 wherein the
incentive module causes the processor to establish an incentive by
minimally causing the processor to: communicate to a neighbor node
by means of the first application level connection a sales price
for a file stored in the file cache; receive from the neighbor node
by means of the first application level connection an acceptance;
receive from the neighbor node by means of the first application
level connection a user identifier; and store in the memory an
acceptance record that includes the user identifier when an
acceptance is received.
26. The file provider device of claim 25 wherein the incentive
module further minimally causes the processor to convey to a
purchase manager by way of the wireless interface the user
identifier, the sales price and a provider identifier, wherein the
provider identifier is stored in the memory.
27. The file provider device of claim 25 wherein the incentive
module further minimally causes the processor to convey to a
purchase manager by way of the wireless interface the user
identifier and at least one of a Global Release Identifier, a
filename and an identity code.
28. The wireless file provider device of claim 24 wherein the
incentive module causes the processor to establish an incentive by
minimally causing the processor to: communicate to a neighbor node
by means of the first application level connection a sales price
for a file stored in the file cache; receive from the neighbor node
by means of the first application level connection at least one of
an acceptance and a counter-price; store in the memory an
acceptance record when an acceptance is received; and store in the
memory an acceptance when a counter-price is received and when the
counter-price is greater or equal to a minimum sales price for a
file stored in the file cache.
Description
RELATED APPLICATIONS
[0001] The present application is a continuation-in-part of
application Ser. No. 10/922,243 filed on Aug. 18, 2004 entitled
"Method and Apparatus for Wirelessly Sharing a File Using an
Application-Level Connection" by Singer et al., the priority date
of which is hereby claimed and which is hereby incorporated by
reference in its entirety.
BACKGROUND
[0002] Peer-to-peer networking has altered the basic notions of how
computers share data. In a more traditional data sharing paradigm,
computers share information in a structured manner where one
computer is a server and another computer is a client. This
traditional concept is known as the "client-server" model. Although
the manner in which a data transfer takes place is different,
peer-to-peer networking and client-sever transactions typically
both rely on a ubiquitous computer data network, for example a
local area network or a wide area network (e.g. the Internet). One
distinguishing characteristic of the peer-to-peer model vis-a-vis
the client-server model is that a computer operating in a
peer-to-peer configuration is capable of acting both as a client
and as a server, depending upon a particular data transaction. For
example, when a computer in a peer-to-peer network needs data, that
computer can operate as a client. The same computer can also
provide data as a server when called upon to do so by another
computer communicatively associated with the first computer in a
peer-to-peer network.
[0003] Peer-to-peer networking has gained wide popularity as a
means for sharing files. Peer-to-peer networking is especially
popular in those instances when the shared files are media content
files, for example audio content and video content files. One
aspect of such file sharing is that users are able to specify what
files are desired and then search for the files on other computers
that are attached to a peer-to-peer network. The standard
mechanisms for discovering files in a peer-to-peer network works
fairly well because the computers attached to the peer-to-peer
network are typically available when a search for a desired file is
performed.
[0004] With the proliferation of mobile devices, many users of such
devices attempt to share files with each other using a wireless
connection. For example, a user of a digital music device may want
to share a music file with another user. Up until now, both users
would need to collaborate with each other to affect the transfer.
Cell phone users may want to share ring-tones or photographs.
Again, both users would need to agree to the transfer and
collaborate to see the transfer through to fruition. The need for
such collaboration could be substantially reduced if peer-to-peer
networking could be used between wireless devices.
[0005] Unfortunately, the notion of peer-to-peer networking breaks
down in the realm of wireless devices. One reason for this is the
fact that mobile devices maintain only a transient connection with
other mobile devices. This is especially true when the mobile
devices interact with each other in local networking structures
such as Blue Tooth and 802.11 wireless networks that do not bridge
over to a wide area network. As such, it is only when two wireless
devices are in proximity to each other that a local connection
between them can be formed. As such, file sharing through
peer-to-peer networking is limited by the short duration and
limited bandwidth of a connection established between such devices.
In fact, a peer-to-peer network has little chance of operating in a
realm where the network is only transiently present because there
is simply no means for discovering file resources in the usual
peer-to-peer manner. Any attempt to search for a required file
would be limited in scope to other wireless devices proximate to
the device requesting the file. Another problem with any type of
file sharing is that of piracy of copyrighted content. The use of
any peer-to-peer networking to share copyrighted files, e.g. music
files in the form of MP3, promotes copyright infringement.
SUMMARY
[0006] A method and apparatus for sharing a file comprising
recognizing a neighbor node, establishing an application-level
connection with the neighbor node, determining a file that is to be
shared with the neighbor node and conveying a portion of the
determined file with the neighbor node.
BRIEF DESCRIPTION OF THE DRAWINGS
[0007] Several alternative embodiments will hereinafter be
described in conjunction with the appended drawings and figures,
wherein like numerals denote like elements, and in which:
[0008] FIG. 1 is a pictorial representation that depicts one
illustrative use case wherein the present method is utilized for ad
hoc file sharing;
[0009] FIG. 2 is a flow diagram that depicts one example method for
wirelessly sharing a file;
[0010] FIG. 2A just low diagram depicts one alternative method for
determining the file according to membership in a group;
[0011] FIG. 2B is a flow diagram that depicts one alternative
method for determining a file based on the availability of files
from a second neighbor node;
[0012] FIG. 3 is a flow diagram that depicts one alternative
example method for determining a file to be shared by means of a
file request;
[0013] FIG. 4 is a flow diagram that depicts an alternative method
for receiving an authentication token in the form of an identity
code and authenticating a selected file;
[0014] FIG. 5 is a flow diagram that depicts an alternative method
for receiving an authentication token in the form of a Global
Release Identifier and authenticating a selected file;
[0015] FIG. 6 is a flow diagram that depicts an alternative method
for receiving an authentication token in the form of a calculated
value and authenticating a selected file;
[0016] FIG. 7 is a flow diagram that depicts an example alternative
method for conveying a portion of a determined file to a neighbor
node;
[0017] FIG. 7A is a flow diagram that depicts an alternative method
for conveying a determined file to a first neighbor node, wherein
the file is obtained from a second neighbor node;
[0018] FIG. 8 is a flow diagram that depicts one alternative
example method for establishing an incentive;
[0019] FIG. 9 is a flow diagram that depicts one example method for
noting a sale;
[0020] FIG. 10 is a flow diagram that depicts yet another method
for noting a sale;
[0021] FIG. 11 is a flow diagram that depicts an alternative method
for establishing an incentive through an offer--acceptance
process;
[0022] FIG. 12 is a block diagram that depicts several example
embodiments of a wireless file provider device;
[0023] FIG. 13 is a pictorial representation that depicts several
alternative example embodiments of a file cache; and
[0024] FIG. 14 is a data flow diagram that depicts the internal
operation of several example embodiments of a wireless file
provider device.
DETAILED DESCRIPTION
[0025] FIG. 1 is a pictorial representation that depicts one
illustrative use case wherein the present method is utilized for ad
hoc file sharing. Today, there are a plethora of intelligent,
wireless devices. These intelligent wireless devices include, but
are not necessarily limited to personal digital entertainment units
15, cellular telephones 5 and personal digital assistants 10.
Included in each of these example intelligent wireless devices is a
wireless interface enabling the intelligent wireless device to
participate in an ad hoc network 20. It should be noted that there
are many varied techniques for establishing an ad hoc network 20.
From the perspective of this disclosure, an ad hoc network 20
comprises a network that is temporarily established between
intelligent wireless devices. In a typical ad hoc networking
environment, the ad hoc network is established when one intelligent
wireless device perceives a second intelligent wireless device. The
two intelligent wireless devices enable the communication of one or
more data packets between processes executing in each of the
intelligent wireless devices. Also shown in the figure is a
purchase manager 25, the function of which is described infra.
[0026] The physical structure of intelligent wireless device
includes a wireless network interface. One form of a wireless
network interface includes an 802.11 wireless networking interface.
Another form of a wireless network interface includes a Blue-Tooth
interface. Doubtless, continued evolution of intelligent wireless
networking will yield yet other forms of wireless network
interfaces. It should be noted that the present method can be
applied in any wireless networking structure and is not dependent
upon any particular form of a wireless network interface herein
described.
[0027] FIG. 2 is a flow diagram that depicts one example method for
wirelessly sharing a file. According to this example method, a file
is shared wirelessly by first recognizing a neighbor node (step
35). Once a neighbor node is recognized, an application-level
connection is established to the recognized neighbor node (step
40). A file that is to be shared with the neighbor node is then
determined (step 45). So long as a connection with the neighbor
node remains viable (step 50), a portion of the determined file is
conveyed to the neighbor node (step 55).
[0028] FIG. 2A is a flow diagram that depicts one alternative
method for determining a file to be shared according to membership
in a group. According to this alternative method, the user
identifier is received from a recognized neighbor node (step 37).
It should be appreciated that the user of a recognized neighbor
node may be affiliated with a particular group. Such group
affiliation, according to one illustrative use case, comprises
membership in a media club. For example, a user of a recognized
neighbor node may be a member of a "book of the month" club.
Another type of group membership may comprise membership in a "song
of the day" club. It should be appreciated that these illustrative
use cases are provided herein merely as examples of various types
of group affiliations and are not intended to limit the scope of
the claims appended hereto. In the event that the user identifier
received from a neighbor node is affiliated with a particular group
(step 42), a file to be shared with the neighbor node is determined
according to the group affiliation (step 52). For example,
different files stored in a first provider node may be affiliated
with a particular group.
[0029] FIG. 2B is a flow diagram that depicts one alternative
method for determining a file based on the availability of files
from a second neighbor node. According to this alternative method,
determining a file to be shared with the first recognized neighbor
node is accomplished by recognizing a second neighbor node (step
39). Once a second neighbor node is recognized, a second
application-level connection is established with the second
neighbor node (step 44). It should be appreciated that a second
neighbor node may have stored thereon various files that may be
shared with the first recognized neighbor node. Accordingly, a list
of one or more files is received from the second neighbor node
(step 49). According to yet another variation of the present
method, this list of one or more files available on the second
neighbor node is received by means of the application-level
connection established with said second neighbor node. The list of
files available on the second neighbor node is then conveyed to the
first neighbor node (step 54). Typically, this is accomplished by
conveying the list of one or more files to the first neighbor node
using the first established application-level connection. As such,
the application-level connection established with the first
neighbor node is then used to receive a selection of one or more
files (step 59). Typically, the first recognized neighbor node will
select files from the list of one or more files available on the
second recognized neighbor node.
[0030] FIG. 3 is a flow diagram that depicts one alternative
example method for determining a file to be shared by means of a
file request. According to this alternative example method,
determining a file to be shared is accomplished by receiving a
request for a file (step 65). According to one variation of the
present method, a request for a file comprises an explicit request
for a particular file. For example, an explicit request can include
a request for a specific file (e.g. by the name of a specific title
of an audio file). According to this alternative example method, a
file is selected according to the received file request (step 70).
An authentication token is also received (step 75). Once the
authentication token is received, the selected file is
authenticated using the authentication token (step 80). When the
file is determined to be authentic (step 85), the selected file is
declared to be the determined file, i.e. the file to be shared with
the neighbor node (step 90).
[0031] In many situations, there may be nearly identical files that
contain nearly identical content. As such, these nearly identical
files may be identically named. For example, there may be several
files that each includes a different rendition of the national
anthem. Although each file may sound similar to the human ear, they
may not necessarily contain the same digital representation of the
national anthem. This problem is magnified by the fact that several
legitimate sources of a particular audio track may promulgate
different versions of the audio track, each having the same file
name (e.g. "STAR SPANGLED BANNER"). These different renditions may
vary according to encoding rate or encoding resolution, just to
name a few. In order to alleviate this problem, one variation of
the present method provides for associating an identity code with a
promulgated file. The identity code, according to one illustrative
use case of the present method, is included in a file name by which
a particular file is accessed by a file management system (e.g. an
operating system). According to yet another illustrative use case,
the identity code is included in a file header which is stored as
part of the file itself. It should be appreciated that various
forms of storage can be used to store the identity code and the
various illustrative use cases presented herein are not intended to
limit the scope of the claims appended hereto. It should also be
noted that this problem is common to all types of files and is not
necessarily limited to audio content files. For example, static
image files and video files are susceptible to this type of
misidentification. Furthermore, the claims appended hereto are not
intended to be limited to these examples. A wide variety of file
types can be misidentified. Consider yet another example of an
electronic book file (e-book). And e-book file is yet another
example of a file type that can be misidentified and this and other
examples presented herein are not intended to limit the scope of
the claims appended hereto.
[0032] FIG. 4 is a flow diagram that depicts an alternative method
for receiving an authentication token in the form of an identity
code and authenticating a selected file. According to this
alternative method, an authentication token is received by
receiving an identity code (step 100). Accordingly, an identity
code is determined for the selected file (step 105). When the
received identity code and the identity code determined for the
selected file are substantially equivalent (step 110), the selected
file is declared as authentic (step 115). In one illustrative use
case, an identity code can be received along with a file name for a
particular file. And according to yet another illustrative use
case, an identity code can be received as part of a file name for a
particular file. In either case, the present method applies.
According to one variation of the present method, an identity code
for a selected file is determined by extracting an identity code
from a file name of a file that is intended to be shared with a
neighbor node. According to yet another variation of the present
method, an identity code for a selected file is determined by
extracting an identity code from the file itself. It should be
further appreciated that, according to one illustrative use case,
an identity code comprises a unique digital value that has been
directly encoded to correspond to a specific and unique media
content file. It should be further appreciated that according to
this illustrative use case, two files that comprise different
versions of the same audio or video track will have different
unique identity codes commensurate with the teachings of the
present method.
[0033] FIG. 5 is a flow diagram that depicts an alternative method
for receiving an authentication token in the form of a Global
Release Identifier and authenticating a selected file. In the case
where a legitimate content file is shared between neighbor mobile
nodes, the legitimate content file may be identified by a Global
Release Identifier (a.k.a. "GRid"). The Global Release Identifier
is a content file identifier promulgated by a recognized authority
(e.g. the Recording Industry Association of America or the
International Federation of Phonographic Industries). Accordingly,
one variation of the present method provides for receiving a Global
Release Identifier (step 120). Once the Global Release Identifier
is received, a Global Release Identifier is also determined for a
selected file (step 125). When the received Global Release
Identifier is substantially equivalent to the Global Release
Identifier determined for a selected file (step 130), the selected
file is declared to be authentic (step 135). It should be
appreciated that various means may be utilized to receive a global
release identifier, for example as a separate identifier or as part
of a file name. These are merely examples of the various
alternative methods that can be used to receive a Global Release
Identifier and these examples are not intended to limit the scope
of the claims appended hereto. It should also be appreciated that
various means may be utilized to determine a Global Release
Identifier for a selected file. For example, according to an
illustrative variation of the present method, a Global Release
Identifier is determined by extracting a Global Release Identifier
from a file name of a file that is intended to be shared with a
neighbor node. According to yet another variation of the present
method, a Global Release Identifier is extracted from a file
itself. It should further be appreciated that a Global Release
Identifier can be overloaded onto many different renditions of the
same audio and/or video title. For example, the same Global Release
Identifier can be used to identify two different files of an audio
track wherein each of the two files is encoded at a different
sampling rate. In this event, the Global Release Identifier can not
be used to identify a unique file. Consequently, the use of a
Global Release Identifier may need to be used in conjunction with
another method for uniquely identifying a particular released file.
For example, other methods described herein can thus be used in
conjunction with the Global Release Identifier in a variation of
the present method for authentication of a particular determined
file. FIG. 6 is a flow diagram that depicts an alternative method
for receiving an authentication token in the form of a calculated
value and authenticating a selected file. In some use cases, a
content file is not identified by an identity code or a Global
Release Identifier. Accordingly, one variation of the present
method provides for receiving a calculated value (step 140) that
identifies a file. A calculated value includes, but is not limited
to a hash code and cyclic redundancy code, or "CRC". Once the
calculated value is received, a calculated value is also determined
for a selected file (step 145). When the received calculated value
is substantially equivalent to the calculated value determined for
a selected file (step 150), the selected file is declared to be
authentic (step 155). It should be appreciated that various means
may be utilized to receive a calculated value, for example as a
separate identifier or as part of a file name. These are merely
examples of the various alternative methods that can be used to
receive a calculated value and these examples are not intended to
limit the scope of the claims appended hereto. It should also be
appreciated that various means may be utilized to determine a
calculated value for a selected file. For example, according to an
illustrative variation of the present method, a calculated value is
determined by extracting a calculated value from a file name of a
file that is intended to be shared with a neighbor node. According
to yet another variation of the present method, a calculated value
is extracted from a file itself. In yet another illustrative
variation of the present method, a selected file is subjected to an
algorithm in order to generate a calculated value that can be used
for comparison with a calculated value received in association with
a file request.
[0034] FIG. 7 is a flow diagram that depicts an example alternative
method for conveying a portion of a determined file to a neighbor
node. According to this alternative example method, a portion of a
determined file is conveyed to a neighbor node by first receiving
from the neighbor node a segment identifier (step 160). A file
segment is then extracted from the determined file according to the
segment identifier (step 165). It should be appreciated that a
neighbor node may only need a portion of a determined file. For
example, a neighbor node may have previously received a portion of
a file which the neighbor node needs to augment with a further
portion of the same file. According to one illustrative use case
that is not intended to limit the scope of the claims appended
hereto, a neighbor node may request a further portion of a file
using a segment identifier. It should be further noted that in
order to determine a particular file, a selected file must first be
authenticated according to the techniques and teachings presented
herein. Once a selected file is so authenticated, both the neighbor
node that has requested a further portion of the file and a
provider node can have a high level of confidence that a file from
which a first portion of a file is received by the neighbor node
and the selected file are identical, even in the case where the
first portion of a file is received from an independent node. The
extracted file segment is then conveyed to the neighbor node (step
170).
[0035] FIG. 7A is a flow diagram that depicts an alternative method
for conveying a determined file to a first neighbor node, wherein
the file is obtained from a second neighbor node. According to this
alternative method, a file is shared with a first neighbor node by
recognizing a second neighbor node (step 161). A second
application-level connection is then established with the second
recognized neighbor node (step 162). It should be appreciated that,
according to this variation of the present method, the second
recognized neighbor node is used as a source for file to be shared
with the first recognized neighbor node. Accordingly, a list of
available files is typically received from the second neighbor node
commensurate with the teachings for determining a file to be shared
with a first neighbor node heretofore described. Once a second
application-level connection is established with the second
recognized neighbor node, a portion of a determined file is then
received by way of the second established connection (step 167). A
portion of a determined file is then conveyed to a first recognized
neighbor node by means of a first established application-level
connection (step 168). It should be appreciated that a first
established application-level connection is established with the
first recognized neighbor node.
[0036] FIG. 2 further illustrates that one alternative example
method for sharing a file further comprises establishing an
incentive for sharing the determined file with the neighbor node
(step 60). It should be further appreciated that sharing a file in
an ad-hoc network environment may require some form of incentive in
order to encourage a user in control of a providing node to allow
the providing node to actually provide a file. In yet other
situations, a financial incentive for sharing a file needs to be
provided to a copyright owner. For example, a particular file may
be a media content file including, but not limited to an audio
track, a static image, a moving image (i.e. a video file) and an
e-book. It should be noted that these example media content files
are not intended to limit the scope of the claims appended
hereto.
[0037] FIG. 8 is a flow diagram that depicts one alternative
example method for establishing an incentive. According to this
alternative example method, establishing an incentive is
accomplished by communicating a sales price to a neighbor node
(step 175). In the event that the neighbor node is interested in
purchasing a file that it received from a first node according to
the present method, the neighbor node will dispatch an acceptance
of the sales price. Accordingly, the acceptance is received from
the neighbor node (step 180). To further consummate the sale as a
means of an incentive, a user identifier is also received from the
neighbor node (step 185). The user identifier includes, but is not
limited to an account number, a cellular telephone number, a
cellular service account number, a credit card number, and a debit
card number. Once the user identifier is received, a sale of a file
shared with the neighbor node is then noted (step 190).
[0038] FIG. 9 is a flow diagram that depicts one example method for
noting a sale. According to this example method, a sale is noted by
communicating a sales price to a purchase manager (step 200).
According to one variation of the present method, the sales price
is communicated to the purchase manager at the time of sale.
According to another variation of the present method, the sales
price is communicated to the purchase manager at a time subsequent
to the sale of a file. Along with the sales price, a provider
identifier is also communicated to the purchase manager (step 205).
The user identifier received from the neighbor node is also
communicated to the purchase manager (step 210). Accordingly, the
purchase manager can use the user identifier in order to debit the
user's account (i.e. the user that received a file from a provider
node). The purchase manager can also use the provider identifier to
enable a credit to the user of a provider node.
[0039] FIG. 10 is a flow diagram that depicts yet another method
for noting a sale. According to this alternative method, a sale is
noted by communicating the user identifier received from the
neighbor node to a purchase manager (step 215). In this situation,
an identifier for the determined file (i.e. the file received by a
user using the neighbor node) is then communicated to the purchase
manager (step 220). In this manner, the purchase manager is able to
use the user's identifier in order to debit the user's account. The
identifier for the determined file can be used by the purchase
manager to establish a purchase price for a file shared with the
neighbor node.
[0040] FIG. 11 is a flow diagram that depicts an alternative method
for establishing an incentive through an offer--acceptance process.
According to this alternative method, a sales price for a file
shared with a neighbor node is communicated to the neighbor node
(step 225). In response, the neighbor node can either accept the
sales price or respond with a counter offer. Accordingly, an
acceptance is received (step 230) according to one variation of the
present method and a counter-price is received (step 240) according
to a different variation of the present method. When an acceptance
is received, a sale of a file to the neighbor node is noted (step
235). When a counter price is received, one variation of the
present method provides for determining if the counter price is
greater than or equal to a minimum price established for a
particular file (step 245). When the counter price is greater than
or equal to the minimum price (step 245), a sale of a file is noted
(step 250). Accordingly, noting of the sale in either of these
situations can be accomplished in varied manners as herein
described.
[0041] FIG. 12 is a block diagram that depicts several example
embodiments of a wireless file provider device. According to one
example embodiment, a wireless file provider device 705 comprises a
processor 700, a wireless interface 710 and a memory 730. According
to one alternative embodiment, a wireless file provider device 705
further comprises a local user interface. The local user interface,
according to yet another example embodiment, comprises a user key
720 and a display 715.
[0042] The user various example embodiments of a wireless file
provider device 705 as heretofore described further includes
various functional modules each of which comprises an instruction
sequence that can be executed by the processor. An instruction
sequence that implements a functional module, according to one
alternative embodiment, is stored in the memory 730. The reader is
advised that the term "minimally causes the processor" and variants
thereof is intended to serve as an open-ended enumeration of
functions performed by the processor as it executes a particular
functional module (i.e. instruction sequence). As such, an
embodiment where a particular functional module causes a processor
to perform functions in addition to those defined in the appended
claims is to be included in the scope of the claims appended
hereto.
[0043] The functional modules (and their corresponding instruction
sequences) described thus far that enable wirelessly sharing a file
are, according to one alternative embodiment, imparted onto
computer readable medium. Examples of such medium include, but are
not limited to, random access memory, read-only memory (ROM),
Compact Disk (CD) ROM, Digital Versatile Disk (DVD), floppy disks,
hard disk drives and magnetic tape. This computer readable medium,
which alone or in combination can constitute a stand-alone product,
can be used to convert a general-purpose computing device into a
device for wirelessly providing files wherein said device is
capable of providing a file wirelessly according to the techniques
and teachings presented herein. Accordingly, the claims appended
hereto are to include such computer readable medium imparted with
such instruction sequences that enable execution of the present
method and all of the teachings herein described.
[0044] Stored in the memory 730 of one example embodiment are
several functional modules including a peer-to-peer module 735, a
file determination module 740 and a conveyance module 755. A
portion of the memory 730 is used to store files. This portion of
the memory is referred to as a file cache 750. It should also be
noted that one alternative embodiment of a file determination
module 740 comprises an authentication module 742. According to yet
another alternative embodiment, the file provider device 705
further comprises an incentive module 760. According to yet another
alternative embodiment, the memory 730 is also used to store a list
of remotely available files 752.
[0045] FIG. 13 is a pictorial representation that depicts several
alternative example embodiments of a file cache. According to one
example embodiment, a file cache 750 comprises various records each
of which includes a file name field 800. According to this
alternative embodiment, the file cache 750 further comprises a file
content field 825, which is used to store the contents of a file.
According to one alternative illustrative embodiment, a record in
the file cache 750 further includes a Global Release Identifier
field 805. According to yet another alternative example embodiment,
a record included in the file cache 750 further includes an
identity code field 810. According to yet another illustrative
embodiment, a record included in the file cache 750 further
includes a calculated value field. According to yet another
illustrative embodiment, a record included in the file cache 750
further includes a hash code field 815. And in yet another
alternative example embodiment, a record stored in the file cache
750 further comprises a CRC field 820. In order to support
embodiments of a file provider device 705 that provide for
establishing an incentive for sharing a file, yet another
alternative embodiment of the file cache 750 includes a sales price
field 830 for a record stored therein. In those embodiments of a
file provider device 705 that provide for a negotiated sale of a
file, an alternative embodiment of the file cache 750 includes a
minimum price field 835. According to yet another alternative
embodiment, the file cache 750 further includes a user group field
836. The user group field 836 is typically used to affiliate a
particular file stored in the file cache 750 with a particular user
group. A particular user group can include various memberships in
various types of groups as heretofore described.
[0046] One alternative embodiment of a file provider device 705
supports the conveyance of a file according to a segment
identifier. Accordingly, one alternative embodiment of the file
cache 750 includes a file content field 825 that is segregated into
individual segments (825A, 825B, 825C, etc.).
[0047] FIG. 14 is a data flow diagram that depicts the internal
operation of several example embodiments of a wireless file
provider device. According to one example embodiment, the processor
700 executes the peer-to-peer module 735. The peer-to-peer module
735, when executed by the processor 700, minimally causes the
processor to recognize a neighbor node by way of the wireless
interface 710. Once a neighbor node is recognized, a part of the
peer-to-peer module 735 further minimally causes the processor 700
to establish an application-level connection 711 with the
recognized neighbor node using wireless interface 710.
[0048] Once a connection is established with a recognized neighbor
node, the processor 700 executes the file determination module 740.
When executed by the processor 700, the file determination module
740 minimally causes the processor 700 to determine a file to be
provided to the recognized neighbor node. The conveyance module
755, when executed by the processor 700, minimally causes the
processor to provide 870 from the file cache 750 a determined file
while the connection 711 to the neighbor node remains viable. The
connection 711 established with the neighbor node comprises an
application-level connection established by means of the wireless
interface 710. According to one alternative embodiment of the
conveyance module, a file is retrieved 870 according to a filename
(stored in the filename field 800). The content of the file is
retrieved 870 from the file cache 750 from a field called content
825. The retrieved content is then directed 875 to the peer-to-peer
module 735 as the processor 700 continues to execute the conveyance
module 755.
[0049] According to one alternative embodiment, the file
determination module 740 causes the processor to determine a file
by minimally causing the processor 700 to receive a user identifier
by means of the first established application-level connection. The
user identifier, typically, is a user identifier that is affiliated
with a user of a first recognize neighbor node. It should be
appreciated that user identifier, according to one alternative
embodiment, includes therein a group identifier. Typically, the
group identifier will identify a particular user as a member of a
particular group. As such, this alternative embodiment of a file
determination module 740 minimally causes the processor 700 to
select one or more files stored in the file cache 750 wherein the
group identifier matches the entry in a user group field 836
included in the file cache 750.
[0050] According to yet another alternative embodiment, the file
determination module 740 causes the processor to determine which
file is to be shared with a first recognized neighbor node by
minimally causing the processor 700 to execute the peer-to-peer
module 735. By executing the peer-to-peer module 735, the processor
700 is minimally caused to recognize a second neighbor node and
then establish a second application-level connection with the
second recognize neighbor node using the wireless interface 710.
Once a second application-level connection is established with a
second neighbor node, the processor, as it continues to execute
this alternative embodiment of a file determination module 740, is
further minimally caused to receive a list of one or more available
files from the second neighbor node. According to this alternative
embodiment, the file determination module 740 further minimally
causes the processor to store in a remotely available files list
752 a filename in a filename field 827 and a node identifier in a
node identifier field 803. As such, the file determination module
740 causes the processor 700 to build a list of one or more files
available on a second recognized neighbor node. The file
determination module 740 further minimally causes the processor 700
to convey the list of one or more files available on a second
recognized neighbor node to the first recognized neighbor node.
According to this alternative embodiment, the file determination
module 740 causes the processor 700 to convey this list to the
first recognized neighbor node using the first established
application-level connection which has been established with the
first recognized neighbor node.
[0051] According to yet another alternative embodiment, the file
determination module 740, when executed by the processor 700,
causes the processor to determine a file by minimally causing the
processor to receive 850 a file request from the neighbor node by
means of the application level connection 711. Based on the file
request, the processor will select 855 a file from the file cache
750. This alternative embodiment of a file determination module 740
further minimally causes the processor to receive an authentication
token from the neighbor node by means of the application level
connections 711. This alternative embodiment of the file
determination module 700 further minimally causes the processor 700
to authenticate the selected file according to the authentication
token and execute the conveyance module 735 when the file is
determined to be authentic.
[0052] According to one alternative example embodiment, the file
determination module 740 includes an authentication module 742.
According to this alternative embodiment, the file determination
module 740 causes the processor to receive an authentication token
in the form of a Global Release Identifier. The authentication
module 742, when executed by the processor 700, causes the
processor to authenticate the selected file by minimally causing
the processor to compare a received Global Release Identifier with
a Global Release Identifier for the selected file. Accordingly,
this alternative embodiment of the authentication module 742 causes
the processor 700 to retrieve a Global Release Identifier from the
file cache 750, e.g. from a field called "Global Release
Identifier" 805, and compare it with a Global Release Identifier
received from the neighbor node by way of the wireless interface
(i.e. by means of the wireless connection 711 established by the
processor 700 as it continues to execute the peer-to-peer module
735).
[0053] According to another alternative example embodiment, the
file determination module 740 also includes an authentication
module 742. According to this alternative embodiment, the file
determination module 740 causes the processor to receive an
authentication token in the form of an identity code. The
authentication module 742 of this alternative embodiment, when
executed by the processor 700, causes the processor 700 to
authenticate the selected file by minimally causing the processor
700 to compare a received identity code with an identity code for
the selected file. Accordingly, this alternative embodiment of the
authentication module 742 causes the processor to retrieve an
identity code from the file cache 750, e.g. from the a field called
"identity code" 810, and compare it with an identity code received
from the neighbor node by way of the wireless interface (i.e. by
means of the wireless connections 711 established by the processor
700 as it continues to execute the peer-to-peer module 735).
[0054] According to yet another alternative example embodiment, the
file determination module 740 also includes an authentication
module 742. According to this alternative embodiment, the file
determination module 740 causes the processor to receive an
authentication token in the form of calculated value. The
authentication module 742, when executed by the processor 700,
causes the processor 700 to authenticate the selected file by
minimally causing the processor 700 to compare a received
calculated value with a calculated value for the selected file.
Accordingly, this alternative embodiment of the authentication
module 742 causes the processor to retrieve a calculated value from
the file cache 750 from a calculated value field. According to yet
another alternative embodiment, the authentication module 742
causes the processor 700 to retrieve a hash code from a field
called a hash code 815. As such, the calculated value received by
the processor of this alternative embodiment comprises a hash code
for the selected file. In yet another alternative embodiment, the
authentication module 742 minimally causes the processor 700 to
calculate a hash code for the selected file according to the
content stored in the content field 825 included in the file cache
750. Then, the processor 700 is further caused to compare the
received hash code with either a retrieved hash code or a
calculated hash code.
[0055] According to yet another alternative embodiment, the
authentication module 742 causes the processor 700 to retrieve a
CRC code from a field called CRC 815. As such, the calculated value
received by the processor of this alternative embodiment comprises
a CRC code for the selected file. In yet another alternative
embodiment, the authentication module 742 minimally causes the
processor 700 to calculate a CRC code for the selected file
according to the content stored in the content field 825 included
in the file cache 750. Then, the processor 700 is further caused to
compare the received hash code with either a retrieved CRC code or
a calculated CRC code.
[0056] According to one alternative embodiment, the wireless file
provider device 705 includes a conveyance module 755 that, when
executed by the processor, minimally causes the processor to
provide a file from the file cache 750 according to a segment
identifier. Accordingly, a segment identifier is received 877 from
a neighbor node by means of a wireless connection 711 established
by the processor as it executes the peer-to-peer module 735.
Generally, the conveyance module 755 causes the processor to
respond to a segment identifier by retrieving a portion of a file
content stored in the file cache, wherein the file content field
825 is segregated into a plurality of segments (825A, 825B, 825C,
etc) and wherein retrieval is accomplished from a segment of the
file content field 825 according to the received segment
identifier.
[0057] In yet another alternative embodiment, the conveyance module
755 causes the processor 700 to convey a determined file to a first
recognized neighbor node by minimally causing the processor 700 to
execute the peer-to-peer module 735. By executing the peer-to-peer
module 735, the processor 700 is caused to recognize a second
neighbor node. The peer-to-peer module 735 further minimally causes
the processor to establish a second application-level connection
with the second recognized neighbor node. Using the second
application-level connection, the conveyance module 755 further
minimally causes the processor 700 to receive a portion of a
determined file by way of the second establish connection. As such,
a portion of the determined file is received from the second
recognized neighbor node. Once received from the second recognized
neighbor node, the conveyance module 735 further minimally causes
the processor 700 to direct the received portion of the determined
file to the first recognized neighbor node. According to this
alternative embodiment, this is accomplished as the processor
continues to execute the conveyance module 755, wherein the
conveyance module 755 further minimally causes the processor 700 to
direct the received portion of the determined file to the first
established application-level connection.
[0058] One alternative example embodiment of a file provider device
705 further includes an incentive module 760. The incentive module
760, when executed by the processor 700, minimally causes the
processor 700 to establish an incentive when a file is conveyed
from the file cache 750 to a neighbor node using the application
level connection 711. In yet another alternative embodiment, the
incentive module 760 causes the processor 700 to establish an
incentive by minimally causing the processor 700 to communicate to
a neighbor node by means of the wireless connection 711 a sales
price for a file stored in the file cache 750. Typically, this is
accomplished by the processor 700 by retrieving 885 from the file
cache a sales price from a sales price field 830 included in a
record for particular file stored in the file cache 750. The
incentive module 760 then minimally causes the processor 700 to
direct 890 the sales price to the peer-to-peer module 735. The
processor, as it continues to execute the peer-to-peer module 735,
is then minimally caused to convey the sales price to the neighbor
node by means of the wireless connection 711. The neighbor node can
either accept or reject the sales price. In the event that the
neighbor node accepts the sales price, the incentive module further
minimally causes the processor 700 to receive from the neighbor
node by means of the application level connection 711 an acceptance
893 of the price. Along with the acceptance, the incentive module
760 further minimally causes the processor to receive from the
neighbor node a user identifier 893. As the processor continues to
execute the incentive module 760, it is further minimally caused to
store in the memory 730 an acceptance record 897. Typically, the
acceptance record 897 includes the user identifier that was
received from the neighbor node. In an alternative embodiment, the
acceptance record 897 further includes a sales price. In yet
another alternative embodiment, the acceptance record 897 further
includes a file identifier, which comprises at least one of a
global release identifier, an identity code and a file name.
[0059] According to one alternative embodiment, the incentive
module 760 causes the processor to establish an incentive by
minimally causing the processor 700 to communicate to a neighbor
node by means of the application level connection 711 a sales price
for a file stored in the file cache 750. In this alternative
embodiment, the incentive module 760 further minimally causes the
processor to receive a counter-price from the neighbor node. The
incentive module 760 of this alternative embodiment further
minimally causes the processor to retrieve from the file cache a
minimum price value from a minimum price field 835 included in the
file cache 750. An acceptance 897 is then stored in the memory by
the processor 700 when the counter-price received by the processor
from the neighbor node is equal to or greater than the minimum
sales price retrieved by the processor 700 as it continues to
execute the incentive module 760.
[0060] In yet another alternative embodiment, the incentive module
760, when executed by the processor 700, further minimally causes
the processor to convey to a purchase manager by way of the
wireless interface 710 the contents of the acceptance record 897.
According to one alternative embodiment, the incentive module 760
also causes the processor 700 to direct to the purchase manager by
way of the wireless interface 710 at least one of a global release
identifier, a file name and an identity code. According to various
alternative embodiments, this includes at least one of the user
identifier received from the neighbor node and the sales price.
According to this alternative embodiment, the incentive module 760
also minimally causes the processor 700 to convey to the purchase
manager by way of the wireless interface 710 a provider identifier.
Typically, the provider identifier 880 is received from the memory
730 by the processor 700 as it executes the incentive module
760.
[0061] According to one alternative embodiment, the incentive
module 760 causes the processor 700 to establish connection with a
purchase manager using a short-range wireless interface (e.g.
BlueTooth or 802.11). According to yet another alternative
embodiment, the incentive module 760 causes the processor 700 to
establish connection with a purchase manager using a wireless
cellular data interface (e.g. the G3 network). This list of
examples is not meant to limit the scope of the claims appended
hereto.
[0062] While the present method and apparatus has been described in
terms of several alternative and exemplary embodiments, it is
contemplated that alternatives, modifications, permutations, and
equivalents thereof will become apparent to those skilled in the
art upon a reading of the specification and study of the drawings.
It is therefore intended that the true spirit and scope of the
claims appended hereto include all such alternatives,
modifications, permutations, and equivalents.
* * * * *