Method and apparatus for automatically determining communities of interest, for use over an ad-hoc mesh network, based on context information

An approach is provided for methods and apparatus for efficiently and effectively determining communities of interest for a user, for use over an ad-hoc mesh network, based on context information associated with user devices. Context information of a device is accessed. The context information is processed to determine one or more themes associated with the context information. One or more communities of interest relating to the one or more themes are determined, the one or more communities of interest having respective community identifiers corresponding therewith. The device is associated with at least one of the communities of interest relating to the one or more themes, based at least in part on the corresponding community identifiers, for accessing awareness information related to one or more of the communities of interest associated with the device. Further, the availability of at least one of the communities of interest associated with the device can be identified via the ad-hoc mesh network, based at least in part on the corresponding community identifiers, and awareness information can be accessed, based at least in part on the availability of the at least one of the communities of interest associated with the device.

BACKGROUND

Wireless (e.g., cellular) service providers and device manufacturers are continually challenged to deliver value and convenience to consumers by, for example, providing compelling network services, applications, and content. One area of development is the use of communication networks and devices for networking between peers. For example, the use of device-to-device communication networks and devices to network amongst a user's peers. However, technical challenges relating to power consumption, signaling overhead, security, and privacy have hindered such development, for example in the areas of determination of peer groups and location and communication amongst members of a peer group.

SOME EXEMPLARY EMBODIMENTS

Therefore, there is a need for improved methods and apparatus for efficiently and effectively determining communities of interest for a user, for use over an ad-hoc mesh network, based on context information associated with user devices.

According to one embodiment, a method comprises accessing context information of a device, processing the context information to determine one or more themes associated with the context information, determining one or more communities of interest relating to the one or more themes, the one or more communities of interest having respective community identifiers corresponding therewith, and determining to associate the device with at least one of the communities of interest relating to the one or more themes, based at least in part on the corresponding community identifiers, for accessing awareness information related to one or more of the communities of interest associated with the device. According to a further embodiment, the method further comprises identifying, via the ad-hoc mesh network, availability of at least one of the communities of interest associated with the device, based at least in part on the corresponding community identifiers, and determining to access the awareness information, based at least in part on the availability of the at least one of the communities of interest associated with the device.

According to another embodiment, an apparatus comprises at least one processor, and at least one memory including computer program code for one or more programs, the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus to access context information of a device, process the context information to determine one or more themes associated with the context information, determine one or more communities of interest relating to the one or more themes, the one or more communities of interest having respective community identifiers corresponding therewith, and determine to associate the device with at least one of the communities of interest relating to the one or more themes, based at least in part on the corresponding community identifiers, for accessing awareness information related to one or more of the communities of interest associated with the device. According to a further embodiment, the apparatus is further caused to identify, via the ad-hoc mesh network, availability of at least one of the communities of interest associated with the device, based at least in part on the corresponding community identifiers, and determine to access the awareness information, based at least in part on the availability of the at least one of the communities of interest associated with the device.

According to one embodiment, a computer-readable storage medium carrying one or more sequences of one or more instructions which, when executed by one or more processors, cause an apparatus to access context information of a device, process the context information to determine one or more themes associated with the context information, determine one or more communities of interest relating to the one or more themes, the one or more communities of interest having respective community identifiers corresponding therewith, and determine to associate the device with at least one of the communities of interest relating to the one or more themes, based at least in part on the corresponding community identifiers, for accessing awareness information related to one or more of the communities of interest associated with the device. According to a further embodiment, the apparatus is further caused to identify, via the ad-hoc mesh network, availability of at least one of the communities of interest associated with the device, based at least in part on the corresponding community identifiers, and determine to access the awareness information, based at least in part on the availability of the at least one of the communities of interest associated with the device.

According to another embodiment, an apparatus comprises means for accessing context information of a device, means for processing the context information to determine one or more themes associated with the context information, means for determining one or more communities of interest relating to the one or more themes, the one or more communities of interest having respective community identifiers corresponding therewith, and means for determining to associate the device with at least one of the communities of interest relating to the one or more themes, based at least in part on the corresponding community identifiers, for accessing awareness information related to one or more of the communities of interest associated with the device. According to a further embodiment, the apparatus further comprises means for identifying, via the ad-hoc mesh network, availability of at least one of the communities of interest associated with the device, based at least in part on the corresponding community identifiers, and means for determining to access the awareness information, based at least in part on the availability of the at least one of the communities of interest associated with the device.

For various example embodiments, the following is applicable: An apparatus comprising means for performing the method of the claims.

DESCRIPTION OF PREFERRED EMBODIMENT

A method and apparatus for efficiently and effectively determining communities of interest for a user, for use over an ad-hoc mesh network, based on context information associated with user devices, are disclosed. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the embodiments of the invention. It is apparent, however, to one skilled in the art that the embodiments of the invention may be practiced without these specific details or with an equivalent arrangement. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the embodiments of the invention.

As used herein, the term “awareness information” refers to any information and/or context about a local environment as well as the users and communication devices within the local environment. By way of example, awareness information can be used to support applications for creating social networks, determining presence, determining contexts associated with a device, advertising, searching for information, etc. Although various exemplary embodiments are described with respect to determining communities of interest for a user, for use over an ad-hoc mesh network, based on context information associated with user devices and for locating communities over an ad-hoc mesh network, it is contemplated that the approach described herein may be used within any type of communication system or network.

FIG. 1is a diagram of a communication system capable of efficiently and effectively determining communities of interest for a user, for use over an ad-hoc mesh network, based on context information associated with user devices, according to an exemplary embodiment. Information and context comprise “awareness information” that metaphorically equip a communication device with “radio eyes and ears” to continuously collect and exchange information with other devices in a local environment. However, development of a system for providing awareness information poses significant technical challenges, particularly in the areas of determining communities of interest for a user, for use over an ad-hoc mesh network, based on context information associated with user devices, determining common communities based on awareness information, creating a network for sharing awareness information, locating and organizing awareness information, forming communities for sharing awareness information, managing power consumption for devices constantly engaged in sharing awareness information, developing applications to take advantage of the awareness information, maintaining the privacy and anonymity of users sharing awareness information, and preventing the proliferation of undesired messages (e.g., spam) over the network.

As shown inFIG. 1, a system100comprises one or more wireless nodes101a-101noptionally having connectivity to a communication network103through either operator A105or operator B107. The wireless nodes101a-101nare any type of mobile terminal, portable terminal, or fixed terminal including mobile handsets, personal computers, stations, units, devices, multimedia tablets, Internet nodes, communicators, Personal Digital Assistants (PDAs), radio readable tags (e.g., near field communication (NFC) tags, radio frequency identification (RFID) tags), or any combination thereof. It is also contemplated that the wireless nodes101a-101ncan support any type of interface to the user (such as “wearable” circuitry, etc.).

In exemplary embodiments, the wireless nodes101a-101nform an ad-hoc mesh network109for sharing awareness information. The ad-hoc mesh network109is, for instance, a connectionless and serverless device-to-device network (e.g., a mobile ad-hoc network (MANET)) created using short-range radio technology (e.g., wireless local area network (WLAN) or Bluetooth®). Within the ad-hoc mesh network109, each wireless node101may be mobile and is within communication range of any number of other wireless nodes101. Accordingly, the set of wireless nodes101a-101nthat is within communication range of any a particular wireless node101is transient and can change as the wireless nodes101a-101nmove from location to location.

As discussed previously, service providers and device manufacturers that are developing communication systems and networks determining communities of interest for a user, for use over an ad-hoc mesh network, based on context information associated with user devices, face many technical challenges. For example, current ad-hoc radios (e.g., WLAN and Bluetooth®) are designed for connectivity (e.g., connectivity via Internet protocol (IP)). However, in an “always on” environment such as the ad-hoc mesh network109, it is not practical to have a large number of wireless nodes101a-101n(e.g., mobile handset devices) “connected” by, for instance, IP to each other for extended periods of time because of power usage and scalability problems. Specifically, a multi-hop connection in a large ad-hoc network typically requires a significant amount of control signaling and power and can quickly deplete a mobile device's battery. Moreover, scalability can be a problem because current ad-hoc radios are typically limited in the number of connections and the related signaling that they can support at any given time. Another shortcoming of current ad-hoc radios is that they do not adequately protect a user's privacy because they expose the user's identity through a fixed network address (e.g., a media access control (MAC) address) associated with the user's device.

To address these problems, the system100creates the ad-hoc mesh network109for sharing awareness information in a connectionless fashion. As used herein, the term “connectionless” refers to the ability of a node (e.g. wireless node101a) to send and of all surrounding nodes101a-101nto receive awareness information without the need to send any prior control signaling. For example, sending awareness information using the transmission control protocol/IP (TCP/IP) over a WLAN ad-hoc is not connectionless because of the two-way TCP control signaling between the sending and receiving nodes used to establish the TCP connection. The awareness information is provided, for instance, in small anonymous messages that are exchanged by the wireless nodes101a-101nautomatically without user intervention. As used herein, the term “anonymous” means that it is not possible to infer the true identity of the sender from the message, unless the true identity is intentionally included in the message (e.g., by the user or another entity authorized by the user). The exchange of awareness information occurs as a broadcast message (i.e., a flooding message) from a wireless node101to neighboring wireless nodes101that are within range of the radio of the broadcasting wireless node101. As neighboring wireless nodes101receive the broadcasted message, each receiving wireless node101may in turn rebroadcast the message to other neighboring wireless nodes101. In this way, the originally broadcasted message propagates throughout the ad-hoc mesh network109. In exemplary embodiments, the extent of the propagation may be limited by criteria such as distance, location, time, etc.

Unlike traditional systems, such messages are only for carrying awareness information and are not for transporting content (e.g., files or media containing voice, video, etc.) between two wireless nodes (e.g., wireless nodes101aand101b). Instead, the messages contain only pointers to the content or a small amount of data (e.g. presence or context information) to minimize the data traffic transported over the ad-hoc mesh network109. The wireless nodes101a-101nmay then access the content using other communication channels (e.g., via IP through the communication network103). In addition, the system100eliminates the problems associated with traditional methods for route establishment and maintenance (e.g., connection based communication protocols), such as maintaining and handing off connections as mobile devices move, and requiring high levels of network resources for maintaining connections in an environment with a high number or density of mobile devices. For example, the event of a wireless node101appearing/disappearing to/from the network does not generate any control signaling in the ad-hoc mesh network109. Similarly, the system100creates routing information only when needed to route replies to queries back to the querying node. The routing information is generated by using the query messages alone (i.e. no control signaling is used for creating routing information). After the query and subsequent reply process is completed, the routes are forgotten. In other words, the query/reply process of system100provisions routes for a reply to provide awareness information on demand rather than pushing awareness information from one node101to another. In exemplary embodiments, both push (e.g., information is published over the ad-hoc mesh network109) and pull (e.g., information is queried from other nodes101a-101nof the ad-hoc mesh network109) modes of disseminating awareness information are possible. In certain embodiments, it is contemplated that the pull mode of operation can be used instead of the push mode to help suppress potential spam messages.

Moreover, the system100optimizes the power consumption of wireless nodes101communicating over the ad-hoc mesh network109to enable always-on operation without seriously affecting the battery life of the wireless nodes101. For instance, by utilizing only short awareness messages, by eliminating the need for any route maintenance signaling, by employing procedures to minimize transmission and reception of duplicative messages and by enabling an efficient sleep scheme for the short-range device-to-device radio used within each wireless node101(allowed by the low latency requirements typical of an awareness information network), the system100can potentially provide hundreds of hours (e.g., over 400 hours) of continuous operation of each wireless node101between battery charges in a mobile device. The system100could be seen as a “nervous system” between the mobile devices, where small messages (“nerve impulses”) are continuously exchanged by the mobile devices (“neurons”) in order to bring awareness to the user of a mobile device about the user's surroundings.

The system100also enables the development of new services and applications based on awareness information (e.g., social networking applications, location-based applications, application for determining presence, applications for determining context, advertising applications). In particular, the continuous and immediate nature of the awareness information with respect to local environment enables compelling new services. For instance, awareness information may be combined with the increasingly available storage and computing power in mobile devices (e.g., wireless nodes101a-101n) to create a local semantic web, whereby local awareness information is created and searched for automatically by wireless nodes101within the ad-hoc mesh network109. As used herein, the term “semantic web” refers to a system in which the information and messages shared with the system is understandable by the nodes101within the system. It is noted that establishing such a local semantic web using the system100overcomes two major problems blocking the development of a global semantic web: (1) lack of mechanism for providing semantic content on a large scale, and (2) lack of semantically aware search engines to help users find information in a semantic web. The system100can also be used for collaborative context calculation, publishing pointers to information or content, search for friends within a defined community, finding out what is going on and what kind of people are around a user, making the environment aware of the user, and other like applications.

The following are exemplary use-case scenarios for applications based on awareness information.

In a first use-case, the awareness information alerts a user to nearby people or places. For example, a user is visiting a new town when the wireless node101aalerts the user that “Salvatore, a friend of your friend David is nearby.” The user may then arrange to meet Salvatore to get a recommendation for sites to visit in the new town. In another example, a user is looking for a good restaurant in an unfamiliar neighborhood. An application based on awareness information may present a list of local restaurants ranked by the number of people currently eating in the restaurant that have the same food preferences as the user. Such a list can be collected based on queries and replies that contain anonymous information of people's food preferences.

In a second use-case, an application uses the awareness information to discover events near the user. For example, as a user passes a park, the wireless node101ainforms the user, based on messages exchanged between nearby devices, that “There is a Japanese culture festival in the Tea Garden Park; five members of your Kabuki community are there: Zen, Mi, Xia, Talo, and Chris.” The user may then decide to attend the festival.

In a third use-case, an application provides location-based or context-based services using awareness information. For example, a wireless node101adoes not have positioning capabilities but nonetheless knows that it is in a grocery store based on anonymous awareness information from other nearby wireless nodes101. It is contemplated that the grocery store may also place a node101in the store to provide such context information, possibly combined with other store specific information such as the address of the store's web page. The wireless node101athen reminds the user to “Remember to buy dishwasher detergent” based on the user's location in a grocery store. The awareness information can also be the physical position information from a neighboring wireless node101that has the positioning capability. Sharing of positioning information with a neighboring node with such a capability can enable nodes101without such capability to offer navigational services.

In another example, a group of people are attending a meeting. The meeting invitation includes an identification code for that particular meeting that is stored in the mobile nodes101of the meeting attendees (e.g., the identification code may be stored in the calendar data). Using the principles set forth in this invention, the nodes101can exchange the meeting identification code over the ad-hoc mesh network109while attending the meeting. Comparing the exchanged identification code in a user's wireless device101can, for instance, establish whether the users was indeed at the meeting corresponding to the identification code. Such accurate social context knowledge can be used, for instance, to adapt the service or application behavior towards the user.

In a fourth use-case, an application provides for search of local information that changes rapidly and very specific to a local environment. The local information often does not reach traditional Internet search engines. For example, a user bought tickets to a concert, but discovers at the last minute that the user cannot attend. The user stores a string “Ticket to concert X at venue Y is available” into the awareness services module111of the user's wireless node101. As a result, a nearby wireless node101a, within a few street blocks away, that searches for tickets by sending query messages with a string “Ticket concert X” over the multi-hop ad-hoc mesh network109, will receive the user's ticket availability message as an automatic reply.

In a fifth use-case, an application enables locally targeted advertising. For example, it is almost closing time for a local fresh fruit market. The merchants decide to publish an advertisement over the ad-hoc mesh network109that “Apples are 50% off for the rest of the day.” The advertisement is available to users who live nearby the market. In another example, a user browses an advertisement for a new printer on a wireless node101a. In the browsing activity, a code attached to the advertisement is stored in the awareness services module111. Upon searching and finding such a code, a nearby electronics store sends the user an offer to sell the printer with a 10% discount.

In a sixth use-case, an application automatically creates an activity log based on the awareness information associated with a user. For example, the application records the people the user meets along with other awareness information such as when, where, context, etc. The user then meets a person while walking on the street. The person looks familiar but the user does not recall the person's name or how the user knows the person. The wireless node101arunning the application reports that the person's name is David and that the user met him at a soccer match one year ago in London.

In a seventh use—case, an application provides the capability to initiate local discussion threads and group chats over the ad-hoc mesh network109. For example, the supporters of a football team form a community over the ad-hoc mesh network109wherein community members can send short text messages (e.g., of small enough size to be sent directly over the ad-hoc mesh network109) that can be received and read only by the fan club community members of that particular team.

FIG. 2Ais a diagram of the components of a wireless node including an awareness services module, according to an exemplary embodiment.FIG. 2Ais described with respect toFIGS. 2B-2Ewhich are diagrams of the components of an awareness services module, according to various exemplary embodiments. As shown inFIG. 2A, a wireless node101includes one or more components for sharing awareness information within the ad-hoc mesh network109. It is contemplated that the functions of these components may be combined in one or more components or performed by other components of equivalent functionality. In this embodiment, the wireless node101includes an application201that uses awareness information to provide various services and functions including social networking, location-based services, presence information, context determination, advertising functions, etc. The application201may interact with the awareness services module111to obtain or share awareness information.

By way of example, the awareness services module111includes three layers: a awareness layer203, a community layer205, and a network layer207. The awareness layer203is the highest control layer for sharing awareness information. As shown inFIG. 2B, the awareness layer203includes a control logic221and item storage223. The control logic221, for instance, provides the logic for creating, publishing, querying, and receiving awareness information over the ad-hoc mesh network109. The control logic221can store the information that it either creates or receives in the item storage223. It is contemplated that the item storage223may be of sufficient size to store all or a portion of the information that flows through the wireless node101over a configurable period of time (e.g., days, months, or years).

In exemplary embodiments, the control logic221enables querying and dissemination of awareness information by initiating the flooding of the query or information to neighboring wireless nodes101within the ad-hoc mesh network109. For example, upon receiving a query, the wireless nodes101in the local neighborhood that have the queried information may decide to reply to the querying node automatically. In exemplary embodiments, the reply information is also automatically stored in the item storage223of each wireless node101through which the propagating reply passes. Moreover, the reply to a query may result in return of a pointer to specific content relevant to the query rather than the content itself under certain circumstances (e.g., when the specific content is large in size). It is contemplated that the reply may contain direct content if the content is relatively small (e.g., a few tens of bytes of information). By using a pointer, the system100minimizes the data traffic that flows through the ad-hoc mesh network109. The user may then access the content via the pointer (e.g., a universal resource locator (URL) address, IP address) via a more appropriate communication protocol (e.g., IP) and/or means of communication (e.g. infrastructure networks). The receipt of the pointer (e.g., IP address) may automatically trigger the transfer of the content using, for instance, the communication protocol associated with the pointer. In the case of broadcasting or publishing information, any wireless node101through which the published information propagates may store the information in item storage223of the wireless node101.

In other exemplary embodiments, awareness information can also be published directly by flooding an awareness message. Such a push mode for the dissemination of awareness information can be used to support some applications (e.g. advertising or group chatting) over the ad-hoc mesh network109.

It is recognized that privacy and anonymity may be of concern to users of the system100. Accordingly, the control logic221provides mechanisms for ensuring privacy and anonymity. For example, the control logic221can prevent the transmission of intimate information when the number of neighboring wireless nodes is small to prevent the possibility of inferring identity. As used herein, the term “intimate information” refers to information directly related to the user, e.g., the user's habits, tastes, or preferences (musical preferences, favorite restaurants, etc.).

The control logic221may also periodically broadcast decoy queries and replies to make tracking an individual wireless node101more difficult. Since an outside observer does not know the authentication key associated with a community, the observer cannot distinguish a valid message from a fictitious one. Accordingly, by observing decoy messages, the observer is likely to detect presence of a private community when there is not one. Additionally, the control logic221enables to user to define filters for incoming information (e.g., filter advertisements) and how these filters would work (e.g., ignore the information completely, relay the information but do not store, etc.). It is also contemplated that the user can direct the control logic221to control the user's visibility on the ad-hoc mesh network109(e.g., no visibility, visible only to a certain community or other user) to maintain privacy. As another mechanism for protecting privacy, the control logic221can interact with the community layer205to anonymize a specific message and corresponding identifiers as described below with respect to the community layer205.

Because one of the goals of the system100is to provide a mechanism for anonymous spreading of awareness information, it is recognized that undesired or unsolicited messages (e.g., spam messages) may become a problem. To address this problem, the control logic221may obtain, for instance, information from the lower system layers of the awareness services module111about the traffic load and current average power consumption. If the traffic load is medium or high (meaning that also power consumption related to system100is medium or high) restrictions may be set for the frequency at which flooding messages are sent by the control logic221. It is also contemplated, that the neighboring peer nodes101can be configured to not forward any flooding messages originating from a node101neglecting such message restrictions.

The awareness layer203, together with the community layer205, provide an application programming interface (API)225to enable an application201to access the functions of the control logic221and the item storage223. In exemplary embodiments, the API225enables application developers to have uniform and easy access to functions related to sharing awareness information over the ad-hoc mesh network109. It is contemplated that the API225is extensible to accommodate any application designed to access or use awareness information. The applications in the various nodes101do not have to be the same or mutually compatible. It is sufficient that the applications use the API correctly to be able to publish and search awareness information in the surrounding nodes101.

The awareness layer203also has connectivity to the community layer205. The community layer205controls the formation and cataloging of communities of wireless nodes101within the ad-hoc mesh network109. By way of example, a user may create any number of communities for sharing awareness information. It is contemplated that a community may be either a peer community (e.g., any wireless node101may join), a personal community (e.g., a wireless node101may join only if invited), or the open local community that consists of all nodes in the local neighborhood. In exemplary embodiments, the messages that traverse between the wireless nodes101within the ad-hoc mesh network109belong to one of these three community types. Communities can either be private (messages are encrypted) or public (no encryption used). In exemplary embodiments, membership and status in a community affect how the wireless node101shares awareness information (see the discussion with respect toFIG. 2Gfor additional details of community membership).

Furthermore, a community may be created for any purpose or duration (e.g., a permanent work community, a permanent community of friends, a temporary community of concert goers lasting only the duration of the concert). As shown inFIG. 2C, the community layer205includes a community control module241, a community directory243, and an encryption/decryption module245. The community control module241provides the logic for creating, joining, managing (e.g., updating membership, configuring settings and preferences, setting privacy policies), and deleting communities. The module241also provides part of the API225.

In exemplary embodiments, the community control module241assigns a unique community identification number (CID) to each community for use within the ad-hoc mesh network109. The control module241can also generate authentication keys K associated with the CID to, for instance, authenticate users who wish to join the community or authenticate messages directed to the community. For example, a wireless node101may invite another wireless node101to join a community by transferring the CID and authentication keys associated with the community to the other wireless node101. It is contemplated that the transfer of the CID and corresponding authentication key may occur using short range radio or using another secure mechanism (e.g., short message service (SMS) or electronic mail). It is noted that both peer and personal communities use a CID and corresponding K, whereas the open local community either can use a predetermined value for CID (e.g., zero) or does not use the CID at all.

To ensure privacy (as discussed above), the community control module241interacts an encryption/decryption module245to anonymize the CID when including the CID in messages over the ad hoc mesh network109. For example, a wireless node101may direct a query to a specific community using an anonymized CID (e.g., a pseudonym) associated with the community in lieu of the actual CID. In exemplary embodiments, multiple anonymized CIDs may be used to represent a single community. In this way, it is more difficult to identify queries corresponding to a particular community by monitoring traffic within the ad hoc mesh network109. From the perspective of an outside observer, the anonymized CIDs look random. In addition, the encryption/decryption module245may encrypt or decrypt message data using, for instance, a temporary key that is periodically derived from the authentication key K associated with the CID. These measures hinder the discovery of the CID by outsiders that do not have the authentication key. By way of example, the community layer205inserts a special header into the messages that it receives from the awareness layer203. The special header, for instance, contains a list of anonymized community identifiers corresponding to the communities to which the message is relevant.

FIG. 2Dis a state diagram of the effect of community membership and status on sharing awareness information, according to an exemplary embodiment. As shown inFIG. 2D, a wireless node101may be in either one or two states (e.g., a not-joined state251and a joined state253) with respect to membership in a community within the ad-hoc mesh network109. The application201of wireless node101issues, for instance, a command255to either join or leave a community to transition between the not-joined state251and the joined state253. When the wireless node101is in the not-joined state251with respect to a community, the wireless node101has no information (e.g., CID and associated authentication keys K) about the community and cannot access messages directed to the community. When the wireless node101is in the joined state253, the community layer205receives the CID and possibly one or more authentication keys associated with the community. In one embodiment, authentication keys are provided when membership in the community is by invitation or otherwise restricted (e.g., when the community is a personal community or a private community). Accordingly, the community layer205will be able to encrypt outgoing community specific messages and to decrypt incoming community specific messages.

When the wireless node101is in the joined state253, the wireless node101may also be in either an inactive state257or an active state259. To transition between the inactive state257and the active state259, the application201may issue a command261to either activate or deactivate the joined state253via the application programming interface225. When the wireless node101is in the inactive state257, the community layer205abandons the message even though it is a member of the community. In certain embodiments, the wireless node101may also be invisible to other members of the community while in the inactive state257. For example, the wireless node101may enter the inactive state257when it temporarily does not want to receive or share information with the community. When the wireless node101is in the active state259, the community layer205encrypts and decrypts community messages as usual for private communities, and enables all outgoing and incoming community specific messages for public communities (e.g., communities with no restrictions on membership).

Within the active state259, the wireless node101may also be in either an invisible state263or a visible state265. To transition between the invisible state263and the visible state265, the application201issues a command267to set either the visible or invisible state. When in the invisible state263, the community-specific identity (e.g., a user alias) associated with the wireless node101cannot be queried by other members of the community. For example, in the invisible state263, the community layer205continues to receive and send community messages without its identity known to other community members. When in the visible state265, the identity of the wireless node101can be queried by other members of the community.

In various embodiments, the community directory243of the community layer205maintains, for instance, information on the communities that the user has joined. Such information contains, at least, the community identification (CID). Additionally, it may contain public and/or private authentication keys (K) of the joined communities and a list of anonymized community identifiers for each community. The community control module241may periodically recalculate the list of anonymized CIDs. By way of example, the community layer205inserts a header into the message it receives from the awareness layer203. The header contains, for instance, a list of anonymized community identifiers identifying the communities to which the message is relevant.

It is contemplated that a special personal community can be reserved for tracking new bonds or relationships created between users. Consider, for example, that user A meets user B for the first time and wants to create a radio bond between the mobile devices corresponding to each user. In one embodiment, user A can initiate the creation this bond with user B by transferring to user B (e.g., by using a secure transfer mechanism) the CID and the public K of user A's personal “new bonds” community. Similarly, user B may give user A similar credentials corresponding to user B's “new bonds” community. Once the credentials are exchanged and the bond has been created, user A may find user B over the ad-hoc mesh network109by searching for members of user A's “new bonds” community. In other words, with a simple search of a single community, user A can search for all the people in user A's local neighborhood with whom user A has created a bond. This requires that a high number of community CIDs and Ks can be stored in the community directory243. Also, an effective lookup of the community directory must be provided. There are many existing and good solutions for such efficient lookup.

As the user creates new bonds, the number community CIDs and Ks stored in the user's community directory243can grow quite large. Accordingly, to enable effective search of a large number of communities, the community layer205may generate a special community search message to initiate the search. For example, the special community search message contains, at least in part, a list of anonymized community identifiers corresponding to the communities to be searched. To protect the privacy, the community layer205can generate a new set of anonymized community identifiers for each community search message. If the community layer205finds a match to any of the anonymized community identifiers in any of the neighboring nodes101that receives the search message, the community layer205generates a reply message that may contain the alias of the user in that community or other community specific information. The reply message may be encrypted with the encryption key of the community.

As shown inFIG. 2C, the community layer205has connectivity to the awareness layer203above and the network layer207below. The network layer207manages the rebroadcasting of received flooding messages and the routing of the unicast (typically reply) messages received by the wireless node101.FIG. 2Edepicts a diagram of the components of the network layer207, according to an exemplary embodiment. The network layer207includes a network control module271, routing table273, neighbor table275, message identification (MID) table277, and message table279. The network control module271directs the broadcasts of messages and information by managing and updating the routing table273, neighbor table275, MID table277, and message table279. In certain embodiments, the network control module271may also assist in protecting the privacy and anonymity of users by periodically changing the network layer identification associated with the wireless node101. It is noted that making such a change in the network layer identification between queries does not cause routing problems for replies because the routing information is recreated by each query in the ad-hoc mesh network109.

In exemplary embodiments, the network layer207may insert a header into messages it receives from the community layer205to, for instance, direct flooding and routing of the received messages. The structure of this network layer message header281is discussed with respect toFIG. 2F.FIG. 2Fis a diagram of the data structure of a network layer message header, according to an exemplary embodiment. As shown, the message header281contains the following fields: (1) a TX field282to identify the transmitter node ID (NID) of the last transmitting node101; (2) a SRC field283to identify the source node ID of the node101that originated the message; (3) a DST field284to identify the destination source ID of the intended recipient of a unicast (reply) message (e.g., this field is give a value of zero when the message is a flooding messages); (4) a MSN field285to identify the message sequence number assigned by the source node; and (5) a hop count field286that is incremented by one by each node101that transmits the message. In certain embodiments, the message header281may also contain the following optional fields: (6) a geographical limit field287to designate the extent of the physical over which the message is intended to propagate (e.g., the geographical limit field287may contain a geographical position of the source node and a maximum flooding radius from that position); (7) a temporal limit field288(e.g., the temporal limit field288may contain the time when the message becomes obsolete and should be dropped); and (8) a context limit field289that defines the context beyond which the message is not intended to propagate (e.g. a message related to a particular concert is not intended to extend beyond the concert venue).

Returning toFIG. 2E, the network layer207also contains a routing table273. In exemplary embodiments, the routing table273contains a listing of the node identification number (NID) of the originating wireless node101(e.g., source NID) and the NIDs of the last known transmitters of the message. The purpose of the routing table is to enable the routing of the reply messages (e.g., unicast messages) back to the querying node that originated the query through a flooding message. As the message propagates through the ad-hoc mesh network109, each subsequent wireless node101that receives the message adds the NID of the last transmitter to the routing table to record the next hop neighbor towards the source node. The source node is marked as the destination node (DST) in the routing table. Also the message sequence number of the message is recorded. The update of the routing table273is coordinated by the network control module271. As shown in Table 1, the routing table273lists the destination NID, the transmitter NIDs associated with wireless nodes101that have rebroadcasted a message and the MSN of the message.

The neighbor table275contains a list of the neighboring wireless nodes101and an estimate of their relative radio distance (see Table 3). It is contemplated that the observed signal strength together with the known transmitting power of a neighboring wireless node101is an indicator of the proximity of the wireless node101and can be used to calculate the relative radio distance. The relative radio distance of the node from which the message was last received is then used as a criterion for whether or not the wireless node101retransmits a received message. For instance, a higher signal strength indicates closer proximity to the wireless node101. The network control module271monitors the signal strengths of neighboring nodes101as the module271receives messages from nearby devices and uses it to estimate the relative radio distance (e.g., proximity of the transmitting node101). It is also contemplated that the network control module271may use any other mechanism for estimating the relative radio distance of neighboring nodes (e.g., estimating location using global positioning satellite receivers or other positioning techniques).

In certain embodiments, the network control module271uses the proximity information to direct the routing and transmission of messages over the ad-hoc mesh network109. For example, the system101can reduce the potential for overloading the ad-hoc mesh network109by implementing a smart flooding scheme whereby only a few nodes101retransmit a flooding message. Whether a node101retransmits a flooding message can be dependent on the relative distance group (e.g., “very near”, “near”, or “far”) to which the node101that is the transmitter of the message belongs. More specifically, if the transmitting node101is in the “far” or “near” group, the receiving node101can retransmit the flooding message. If the transmitting node101is in the “very near” group, the receiving node101does not retransmit the flooding message. For each broadcast message received from a node in either the “far” or “near” group, the network control module271assigns a random delay time for relaying or rebroadcasting. The delay period, for instance, exhibits a distribution function based on the estimated relative radio distance as a way to randomize the delay period before transmission. The distribution should be chosen in such a way that the random delay is larger for those nodes that are “near” than for those that are “far.” This favors, for instance, nodes101that are further away to relay the flooding message forward, which results in better flooding efficiency (smaller total number of transmissions). The use of a random delay time also prevents the unintended synchronization of message broadcasts as the message propagates over the ad-hoc mesh network109. For example, unintended synchronization of the message broadcasts may result in too many nodes101sending broadcasting (i.e., flooding) messages over the ad-hoc mesh network109at exactly the same time. Additionally, the delay time provides an opportunity for the network control module271to monitor and count rebroadcasts of the message by other neighboring wireless nodes101.

The MID table277contains a list of received messages. As the wireless node101receives messages from neighboring nodes over the ad hoc mesh network109, the network control module271uses the MID table to check whether the message has been received previously by, for example, comparing the MIDs in the MID table277to that of the received message. The MID table277also contains a flag indicating whether a message has been transmitted by the node101and the time when the entry was last updated. In exemplary embodiments, the MID is the tuple (SRC, MSN), where SRC is the NID of the source node and MSN is a message sequence number assigned by the source node. In this way, the MID is a unique identifier of each message that propagates in the network109. The network control module271makes an entry in the MID table277for all new messages that it receives. If the message has been scheduled for transmission, the module271increments the message counter in the message table (see Table 4).

The message table279contains messages that the network control module271has scheduled to transmit. For example, as the node101receives a flooding message that the network control module271schedules for transmission, the module271updates the message table to include the message in the message table279. Each entry in the message table279contains the message itself, the time when the message is scheduled to be sent, and the number of receptions of the same message by the node101(see Table 4). In exemplary embodiments, a message is not relayed over the ad-hoc mesh network109if the number of times the message has been received exceeds a predefined limit. For example, a message has the initial count of 0. In this example, as a wireless node101in the neighborhood is observed to transmit the message, the message count associated with the message is increased. When the maximum message count is reached, the network control module271removes the message from the message table279. The transmitter of each message is also associated with an estimated relative radio distance (D) indicating whether the transmitting node is within close proximity of the wireless node101(e.g., transmitting node101is in the “very near” relative radio distance group) or far from the wireless node101(e.g., transmitting node101is in the “far” relative radio distance group). If the relative radio distance associated with the transmitting node indicates that the transmission of the message occurred “very near,” the wireless node101would not have to relay the message because it is assumed, for instance, that most of the other neighboring wireless nodes101have already received the same message. By taking into account the relative radio distances of neighboring nodes, the described smart flooding functionality leads to, on average, each flooding message being received for a few times by each node101independent of the node density. The number of times a message is received by any one node101affects the scalability of the network109.

If the received message, however, is a unicast reply message that was addressed to the receiving node101, the network control module271checks whether the destination node101can be found in the routing table273(e.g., can be found from the destination field in the reply message, or obtained from the source field of the query by the replying node). If found, the routing table entry will give the NID of the neighboring node to which the reply message will be sent in the next opportunity. If the unicast transmission is not successful, the next entry for the same DST will be used as the next try. If the received message is a unicast reply message that was not addressed to the receiving node, and no acknowledgment from the intended receiver node was heard, the node will store the message in the message table279for scheduled retransmission. It is noted that unicast messages or acknowledgement messages that are not addressed to the node101are normally received D2D radio layer209(see discussion of the D2D radio layer209below) but not by the awareness services module111. However, under certain circumstances, the D2D radio layer209can provide such messages to the awareness services module111to schedule for retransmission. For example, if no successful unicast of the same message is observed by the time when the message is scheduled to be transmitted, the node101will transmit the unicast or acknowledgement message to the intended recipient found from the routing table273associated with the message. In this way, the nodes101that are not the intended recipients of the reply messages can assist in routing the message forward towards the correct destination.

As shown inFIG. 2A, the awareness services module111has connectivity to a device-to-device (D2D) radio layer209. The D2D radio layer209enables the formation of the ad-hoc mesh network109and sharing of awareness information using, for instance, short range radio technologies such WLAN and Bluetooth®. It is contemplated that the D2D radio layer209may use any wireless technology for communication between devices over short ranges. The radio technology, for instance, enables each wireless node101within the ad-hoc mesh network109to broadcast messages in a connectionless way to the neighboring nodes101that are within radio range. As used herein, the term “connectionless” means the wireless nodes101need not use two-way signaling to establish a communication channel before broadcasting a message. In exemplary embodiments, the D2D radio layer209may include multiple radios using one or more different technologies or protocols (e.g., WLAN and Bluetooth® simultaneously). A wireless node101configured with multiple radios may act as a gateway node to span two or more sub-networks serviced by the different wireless technologies. In this way, messages broadcast on one sub-network may be propagated to another sub-network.

FIG. 2Gis a diagram depicting a power saving scheme of a device-to-device radio layer, according to an exemplary embodiment. The small amount of awareness data as well as the low latency requirements of the system100enables the operation of the D2D radio layer209in a way that leads to low power consumption. As shown inFIG. 2G, the D2D radio layer209may have beaconing periods291a-291cdelineated by target beacon transmission times (TBTTs)293a-293c. In exemplary embodiments, the D2D radio layer209may operate in a time-synchronized manner and utilize only a fraction of the time for active communication (e.g., during awake periods295a-295c). During the rest of each beaconing period291, the D2D radio layer209is in, for instance, a power-saving or dozing mode (e.g., during doze periods297a-297c). For example, each beaconing period291can be on the order of hundreds of milliseconds and each awake period293only a few milliseconds, leading to effective radio utilization of approximately one percent. It is contemplated that for situations, where the number of nodes101is very large (such as during mass events), time-wise radio utilization can increase up to 100 percent momentarily (e.g., awake period293equals active transmission period291). At times of low traffic (for example at night), the radio utilization can be decreased to, for instance, 0.1 percent, by utilizing every tenth awake period293while still maintaining synchronization.

In exemplary embodiments, the low latency requirements also enable saving power in the host processor (e.g., as depicted inFIG. 9). For illustration, the following description refers to the components of exemplary chip set ofFIG. 9. The D2D radio layer209is typically implemented in the ASIC module909, whereas the functionalities of the awareness services module111can be implemented either in the ASIC909or the processor903. If the functionalities of the awareness services module111are implemented in the processor903, power consumption is reduced by, for instance, having ASIC909wake up the processor903as infrequently as possible. By way of example, the periodic operation of the D2D radio layer209explained above enables the ASIC909to collect all messages and send them to the processor903at a frequency of once per active transmission period291. The processor903then processes all received messages and calculates new messages to be sent for the next active transmission period291. The processor903then sends the messages to the ASIC909for transmission. Using this process, a flooding message can make one hop (e.g., travel from one node101to another node101) per period291, which is fully acceptable for awareness information. In contrast, potential delays of hundreds of milliseconds are not possible, for example, for voice traffic, and these kinds of power savings cannot therefore be achieved in other communication systems transporting delay-sensitive traffic.

FIGS. 3A-3Care flowcharts of various embodiments of processes for determining communities of interest for a user, for use over an ad-hoc mesh network, based on historical or other context information, associated with user devices.

FIG. 3Ais a flowchart of a process for determining communities of interest for a user, based on common terms occurring within context information associated with user devices. In the embodiment ofFIG. 3A, the awareness services module111applies for example a hash function to the context information of the user devices to determine associated communities of interest of the user and generate respective CIDs. In one embodiment, the awareness services module111performs the process310ofFIG. 3Aand is implemented in, for instance, a chip set including a processor and a memory as shown inFIG. 9. In step302, the awareness services module111collects user context information from other applications of the wireless node101. For example, the awareness services module111may collect such context information from applications of the wireless node101, such as web search engines, e-mail and calendar applications, shopping applications, news and other information applications and subscriptions (e.g., news groups, or other subject-oriented information gathering applications), media applications, etc. In another embodiment, the awareness services module111may, alternatively or in addition, collect the context information from such applications of other devices of the user, such as a personal computer, laptop, PDA, or other communications and information processing device of the user. For example, in the event that the user synchronizes the wireless node101with any such other devices of the user (e.g., synchronizing e-mail, contacts, calendar, music and other media content, etc.) the awareness services module111would collect the context information from the respective applications of the user device with which the wireless node101is being synchronized.

In step304, the awareness services module111processes the context information collected pursuant to step302to determine particular areas of interest of the user. In the present embodiment, the awareness services module111processes the context information to identify common terms occurring within the context information. Such common terms may indicate a subject or theme of interest to the user. The determination as to whether a particular term constitutes a “common term” for purposes of the identification of a community of interest to the user may, for example, be based on a predetermined frequency of the occurrence of a term. The predetermined occurrence frequency may be preset based on statistical or other analyses, or may be user defined. Further, the predetermined occurrence frequency may evolve over time through a learning process of the awareness services module111. For example, such a learning process may be based on an assessment of a history of community of interest determinations in view of the particular predetermined occurrence frequencies utilized in the respective community of interest determinations. More specifically, the awareness services module111may analyze prior utilized predetermined occurrence frequencies in view of the user's subsequent interest in the resulting determined community of interest (e.g., the extent of the user's further participation with respect to a community of interest that was determined using a particular predetermined occurrence frequency for the underlying common term upon which the community of interest determination was based).

In step306, the awareness services module111determines associated communities, and generates respective CIDs, based on the common terms identified pursuant to step304. By way of example, in one embodiment, the awareness services module111applies for example a hash function to the common terms identified pursuant to step304to determine the associated communities of interest of the user, and generate the respective CIDs. In addition or alternatively, the context information may be an unordered set. Therefore, the function ghat generates the CIDs can order the context information elements before applying, e.g., a hash function over the elements. By way of example, ordering may be alphabetical, or the ordering can be based on a predefined hierarchy for some of the information elements. In this way, the CID generation process can produce the same CID for two or more devices. In some embodiments, the same context information can be used to produce several communities. For example, if context information indicates interests in both “cars” and “boats.” Different permutations or combinations of the two interests can result in three communities, e.g., “cars,” “boats,” and “cars and boats.”

In a further embodiment, the awareness services module111determines the associated communities and respective CIDs through a comparison of the common terms identified pursuant to step304against a database of predefined key words and associated preexisting communities of the ad-hoc mesh network. Then, in step308, the awareness services module111adds the community information (e.g., the respective CIDs), for the communities determined pursuant to step306, to the community directory243of the wireless node101. In one embodiment, the awareness services module111may query the user with respect to the user's desire to join the associated communities before adding the community information to the community directory243of the wireless node101.

According to a further embodiment,FIG. 3Billustrates a flowchart of a process for determining communities of interest for a user, based on key word terms occurring within context information associated with user devices. In the embodiment ofFIG. 3B, the awareness services module111identifies the occurrence of predefined key words within the context information of the user devices, where the predefined key words are associated with preexisting communities of an ad-hoc mesh network. In one embodiment, the awareness services module111performs the process330ofFIG. 3Band is implemented in, for instance, a chip set including a processor and a memory as shown inFIG. 9. In step312, as in step302ofFIG. 3A, the awareness services module111collects the user context information from other applications of the wireless node101. Here also, as with the embodiment ofFIG. 3A, the awareness services module111may, alternatively or in addition, collect the context information from applications of other devices of the user, with which the wireless node101is synchronized. In step314, the awareness services module111processes the context information by searching for predetermined key words occurring within the context information. The predetermined key words, for example, may be derived from or associated with a database of pre-existing communities of the ad-hoc mesh network, including predetermined CIDs for the preexisting communities.

In step316, the awareness services module111adds the community information (e.g., the respective CIDs), for the communities associated with the key words identified pursuant to step314, to the community directory243of the wireless node101. In one embodiment, the awareness services module111may query the user with respect to the user's desire to join the associated communities before adding the community information to the community directory243of the wireless node101.

FIG. 3Cis a flowchart of a process for determining communities of interest for a user, based on characteristics and/or preferences of the user determined through an analysis of context information associated with user devices. In the embodiment ofFIG. 3C, the awareness services module111determines characteristics and/or preferences of the user based on the context information of the user devices, and applies a filtering process to the determined characteristics and/or preferences to associate the wireless node with preexisting communities of an ad-hoc mesh network that reflect the same or similar characteristics and/or preferences. In one embodiment, the awareness services module111performs the process350ofFIG. 3Cand is implemented in, for instance, a chip set including a processor and a memory as shown inFIG. 9. In step322, as in step302ofFIG. 3A, the awareness services module111collects the user context information from other applications of the wireless node101. Here also, as with the embodiment ofFIG. 3A, the awareness services module111may, alternatively or in addition, collect the context information from applications of other devices of the user, with which the wireless node101is synchronized.

In step324, the awareness services module111processes the context information to determine associated characteristics and/or preferences of the user. In one embodiment, such processing may take the form of an analysis for specific trends or topics reflected by the context information. For example, Web history context information may reflect a preference of the user for a particular type of food or restaurant (e.g., French or Italian), or may reveal an interest or capability of the user with respect to a particular musical instrument (e.g., context information reflecting the downloading of sheet music for the instrument). Accordingly, the awareness services module111may associate the characteristic of playing a particular instrument or the preference for a certain food to the user. Then, in step326, the awareness services module111processes the user characteristics and/or preferences determined pursuant to step324to identify associated communities and generate respective CIDs. By way of example, in one embodiment, the awareness services module111applies a filtering process to compare the user characteristics and/or preferences against predefined user profiles, which can be based on historical information regarding other users, or hypothetical user profiles generated by a service provider. As a result of the filtering process, the awareness services module111determines one or more communities (and respective CIDs) associated with a corresponding user profile. In another embodiment, the determined user characteristics and/or preferences may be associated with respective communities, based on a predefined database of communities and associated characteristics and preferences.

Then, in step328, the awareness services module111adds the community information (e.g., the respective CIDs), for the communities determined pursuant to step326, to the community directory243of the wireless node101. In one embodiment, the awareness services module111may query the user with respect to the user's desire to join the associated communities before adding the community information to the community directory243of the wireless node101.

Moreover, it should be noted that the foregoing embodiments ofFIGS. 3A, 3B and 3Cneed not be mutually exclusive, in that the awareness services module111may process the context information by one or more of the processes of identifying common terms (the process ofFIG. 3A), searching for predetermined key terms associated with pre-existing communities (the process ofFIG. 3B) and determining user characteristics and/or preferences associated with pre-existing communities (the process ofFIG. 3C). Additionally, the awareness services module111may update the database of communities/key terms based on new common terms occurring within the context information and the resulting communities determined based thereon. Further, the awareness services module111may update the database of communities and associated user characteristics and/or preferences (or user profiles) based on new user characteristics and/or preferences determined from the context information and resulting communities determined based thereon.

In a further embodiment, with regard to the processes ofFIGS. 3A-3C, the communities joined by the wireless node for which the respective CIDs are stored in the community directory243may comprise communities regarding a particular product of interest or type of product, or may comprise communities regarding a particular store or manufacturer. Accordingly, the wireless node101may receive a flooding message relating, for example, to the CID for a particular product, or manufacturer of products, offered by a nearby store. The flooding message may further contain information about the particular product, manufacturer, and or store, such as a web-site link or other pointer. Additionally, in a further embodiment, in the event that the user of the wireless node101purchases a product associated with a CID of the wireless node101, or just visits the associated store, the awareness services module111of a wireless node101of the store may gather associated information from the wireless node101of the user, over the ad-hoc mesh network. For example, the awareness services module111of the wireless node101of the store may gather information indicating that the user is a member of the associated community(ies). In a further example, the awareness services module111of the wireless node101of the store may gather information concerning characteristics and/or preferences of the user that led the user to become a member of the associated community(ies). The store may thereby collect valuable marketing research regarding, for example, the effectiveness of the advertising efforts of the store using the awareness network.

FIGS. 3D-3Gare flowcharts of processes for locating communities and community members in the local neighborhood over an ad-hoc mesh network, according to various exemplary embodiments.FIG. 3Dis a flowchart of a process for locating active communities over the ad-hoc mesh network109and updating a list of the active communities that are visible to a wireless node101. In one embodiment, the awareness services module111performs the process300ofFIG. 3Dand is implemented in, for instance, a chip set including a processor and a memory as shown inFIG. 9. In step301, the awareness services module111identifies one or more communities of wireless nodes101by using, for instance, community identifiers (CIDs) corresponding to the one or more communities. In exemplary embodiments, each CID is associated with one or more authentication keys for authenticating members and messages transmitted within the corresponding community. The CIDs and associated keys are stored by the awareness services module111in, for instance, the community directory243and may be provided to wireless nodes101that are members of the community in advance using a secure communication channel over the ad-hoc mesh network109or the communication network103. CIDs and keys that are created subsequently may also be provided using a secure communication channel over either the ad-hoc mesh network109or the communication network103.

By way of example, the awareness services module111can use the CIDs to locate and identify communities that are active (e.g., transmitting or receiving community messages) among one or more neighboring wireless nodes101by (1) passively monitoring messages directed towards one or more communities over the ad-hoc mesh network109using the process described with respect toFIG. 3Ebelow, (2) actively searching for one or more communities using a community search message as described with respect toFIG. 3Fbelow, and/or (3) actively searching for one or more members of the communities using a member search message as described with respect toFIG. 3G. The awareness services module111then updates a list of active communities based on the identification (step303). For example, the list of active communities includes those communities to which the wireless node101belongs (e.g., communities that are private such as a community of personal friends) and those communities that are public and open to all nodes101(e.g., a general community of all wireless nodes on the ad-hoc network109in which system wide messages may be exchanged).

In exemplary embodiments, the awareness services module111is continuously updating the list of active communities by, for instance, monitoring for messaging traffic over the ad-hoc mesh network109related to one or more of the active communities (step305). More specifically, the awareness services module111tracks whether there are any messages originating from or directed to one or more of the active communities over a predetermined period of time. In one embodiment, the period of time can be dependent on the on the density or stability of neighboring wireless nodes101. For example, if the composition of the neighboring wireless nodes101is changing rapidly, the time period can be shorter. Similarly, if the composition of the neighboring wireless nodes101is more stable, the time period can be longer. In either case, the awareness services module111observes whether there are any messages related to one or more of the active communities (e.g., by checking the header information of the messages for CIDs corresponding to any of the active communities) (step307). If no messages are observed over the predetermined period of time for a particular community, the awareness services module111designates that community as inactive and updates the list of active communities accordingly (step309). If a message related to a particular community is observed during the time period, the community is considered to be still active and the awareness services module111need not update the list of active communities. It is contemplated that the awareness services module can continuously or periodically perform the monitoring process to update the list of active communities.

FIG. 3Eis a flowchart of a process for passively identifying an active community by monitoring community messages, according to one embodiment. In one embodiment, the awareness services module111performs the process320ofFIG. 3Eand is implemented in, for instance, a chip set including a processor and a memory as shown inFIG. 9. In step321, the awareness services module111receives a message directed to one or more communities from a neighboring wireless node101over the ad-hoc mesh network109. The awareness services module111then determines whether the receiving wireless node101is a member of the community to which the message is directed (step323). For example, the determination may involve checking whether the CID contained in, for instance, the message header of the received message matches a CID contained in the community directory243of the receiving wireless node101. In certain embodiments, the CID is anonymized to protect the privacy of the community and its members. In this case, the receiving wireless node101is a member of the community, the awareness services module111may decode the anonymized CID using the authentication key associated with the CID of the community specified in the received message. Further, if the message is encrypted, the awareness services module111may open the encryption using the encryption key associated with the CID as listed in the community directory243. If the awareness services module111determines that the receiving node111is a member of the community (step325), the module111identifies the community as an active community and updates the list of active communities accordingly (step327).

FIG. 3Fis a flowchart of a process for actively searching for one or more active communities using a community search message, according to an exemplary embodiment. In one embodiment, the awareness services module111performs the process340ofFIG. 3Fand is implemented in, for instance, a chip set including a processor and a memory as shown inFIG. 9. In step341, the awareness services module111receives input requesting a search for one or more active communities in the local neighborhood of the ad-hoc mesh network109. The input is received from, for instance, the application201through the application programming interface225(as described with respect toFIGS. 2A and 2C). For example, the input may specify one or more communities for which to search. In response, the awareness services module111retrieves a CID for each requested community (step343). In certain embodiments, the CIDs are anonymized to protect the privacy of the community and its members (step345). Using anonymized CIDs protects privacy by making it more difficult for an outsider to track communications related to any particular community. The community control module241then generates a community search message containing a containing a unique community query identifier CQID and a list of anonymized CIDs (step347).

After creating the message, the awareness services module111initiates broadcast of the message over the ad-hoc mesh network109(step349). In exemplary embodiments, the community search message is equivalent to a query and is transmitted and replied to using the processes described with respect toFIGS. 5A and 5Bbelow. As the message propagates over the ad-hoc mesh network109, mobile devices that are members of one or more of the active communities associated with the anonymized CID or CIDs included in the message automatically respond to mobile device that originally sent the message. The awareness services module111initiates receipt of the reply messages (step351). The reply message contains, for instance, a list of anonymized CIDs of those searched communities which have an “active” status in the replying node101. Based on this list, the awareness services module111identifies each community in the list as an active community and updates the list of active communities in, for instance, the community directory243(step353).

FIG. 3Gis a flowchart of a process for actively determining the presence and community-specific identity (e.g., alias) of members of a particular community or communities, according to an exemplary embodiment. In one embodiment, the awareness services module111performs the process360ofFIG. 3Gand is implemented in, for instance, a chip set including a processor and a memory as shown inFIG. 9. In step361, the awareness services module111receives input requesting a search for one or more members of a community. The input is received from, for instance, the application201through the application programming interface225(as described with respect toFIGS. 2A and 2C). For example, the input may specify one or more communities whose members are to be searched for. In step363, the awareness services module111retrieves the CID or CIDs associated with the requested community or communities from the community directory243. In certain embodiments, the CIDs are anonymized to protect the privacy of the community and its members (step365). If any one of the communities is set in the “visible” state, the awareness services module111also retrieves the community-specific user identity (e.g., an alias) of the user for that community. By way of example, the encryption/decryption module245of the awareness services module111may also encrypt the user alias in step365using, for instance, one or more of the keys associated with each community in the community directory243. The community control module241then generates a member search message containing a unique community query identifier CQID, a list of anonymized CIDs, and corresponding plaintext (in case of a public community) or encrypted (in case of a private community) aliases of the members for which to search (step367).

After the member search message is generated, the awareness services module111initiates broadcast of the member search message over the ad-hoc mesh network109(step369). In exemplary embodiments, the member search message is equivalent to a query and is transmitted and replied to using the processes described with respect toFIGS. 5A and 5Bbelow. As the message propagates over the ad-hoc mesh network109, mobile devices that have one or more communities associated with the anonymized CID or CIDs in the “visible” state automatically respond to the mobile device that originally sent the message. If aliases corresponding to one or more users are also included in member search message, mobile devices corresponding to the user aliases also respond. The awareness services module111initiates receipt of the reply messages sent in response to the member search message (step371). The reply message includes, for instance, a list of anonymized CIDs, plaintext or encrypted user aliases and, possibly, the plaintext or encrypted status (e.g. activity state, mode, etc.) of the community member. In certain embodiments, the awareness services module111uses the reply messages to update the list of visible community members in the local neighborhood (step373). In addition, the awareness services module111also uses the replies to identify active communities within the neighborhood and to update the list of active communities (step375). The updates are based, for instance, on the anonymized CIDs, the community-specific member identity (e.g., alias), o other member-specific information included in the reply messages.

FIGS. 3H and 3Iare flowcharts of processes for generating a flooding message and receiving a flooding message over an ad-hoc mesh network, respectively according to various exemplary embodiments. In one embodiment, the awareness services module111performs the process370ofFIG. 3Hand the process390ofFIG. 3Iand is implemented in, for instance, a chip set including a processor and a memory as shown inFIG. 9. With respect to the process370, it is assumed that control logic221has received a service request to generate a flooding message through, for instance, the application programming interface225from an application201. As used herein, a “flooding message” is a message that is broadcast over the ad-hoc mesh network109to neighboring wireless nodes101for propagation from node to node. In step342, the awareness services module111generates the body (e.g., the query or content to be published) of the flooding message in response to the service request. By way of example, the flooding message may be either a query (e.g., for pulling information from the ad-hoc mesh network109) or a publish message (e.g., for pushing information to the ad-hoc mesh network109). The type of message (e.g., query or publish message) depends on the nature of the service request and the application201generating the request.

After generating the body of the message, the awareness services module111(e.g., the community layer205and the network layer207) prepares the message by adding the headers (e.g., network layer header281) to direct the routing of the message as discussed previously with respect toFIG. 2F(step344). For example, the header may specify a maximum message count (e.g., hop count), a geographical limit for the flooding message, a temporal limit, or other context limit. Preparing the message for broadcast also includes, for instance, assigning a message sequence number295(MSN) to the flooding message and specifying a source NID, destination NID, and/or transmitter NID. The awareness services module111initiates broadcast of the flooding message by adding an entry for the generated flooding message in the MID table, with the sent flag set to “not sent,” and forwarding the message to the D2D radio layer209for broadcast over the ad-hoc mesh network109(step346). After broadcasting, the awareness services module111may determine whether the flooding message should be rebroadcasted over the ad-hoc mesh network109(step348). For example, the application201may direct the awareness services module111to rebroadcast the flooding message based by monitoring and counting the number times the originating node101is able to observe rebroadcasts of the flooding message by neighboring nodes101. The observed rebroadcasts, for instance, serve as an acknowledgement that the neighboring node101that is retransmitting the flooding message has successfully received the flooding message. In one embodiment, the awareness services module111determines whether the observed rebroadcasts is of the same flooding message by comparing the MID of the observed message and the original flooding message (step362). If, after a predetermined period of time, no rebroadcasts are observed, the awareness services module can rebroadcast the flooding message (e.g., by returning to step346and repeating as necessary). It is contemplated that the application201or the awareness services module111can define the number of rebroadcasts to attempt. After reaching the rebroadcast limit, the awareness services module111notifies the application201of the rebroadcasting status and suspends additional rebroadcasts (step364).

FIG. 3Iis a flowchart of a process for receiving a flooding message over an ad-hoc mesh network, according to an exemplary embodiment. In step366, the awareness services module111receives a flooding message from a neighboring wireless node. The flooding message may, for instance, contain published awareness information, or a query. In exemplary embodiments, the flooding message may contain a pointer (e.g., URL or IP address) to specific information or content rather than the actual information or content itself to minimize data traffic over the ad-hoc mesh network109. As discussed previously, in certain embodiments, the flooding message may contain content if the content is relatively small in size (e.g., a few bytes of information). After receiving the pointer or the content, the wireless node101may access the information or content using another communication protocol (e.g., Internet) or means of communication (e.g. an infrastructure network).

In addition, the information within the flooding message is shared anonymously (e.g., shared without identifying the sender of the information) unless directed otherwise. By way of example, the awareness services module111may use any mechanism to share the information anonymously including changing a link layer or network layer identification, preventing transmission of intimate information when the number of neighboring nodes is small, anonymizing information that can be used to identify a user or community, or a combination thereof. For example, by periodically changing a link layer or network layer identification associated with a transmitting wireless node101, the awareness services module111makes it more difficult for an outside observer to determine the identity of the wireless node101or its user. The anonymous sharing of information is further protected by preventing the transmission of intimate information with the number of neighboring nodes is small. This reduces the possibility that an outside observer may infer the owner of the intimate information by observing the small community of wireless nodes101. As another mechanism, the awareness services module111can anonymize any identifying information in the flooding message using the process described with respect to the encryption/decryption module245of the community layer205(e.g., anonymizing the CID).

On receipt of the flooding message, the awareness services module111updates the routing table273associated with the message and the MID table277(step366). As discussed with respect toFIG. 2E, for each observed source node NID the routing table273contains listing of all neighboring nodes that the awareness services module111has observed to retransmit the same flooding message (messages with equal MID). For example, the network control module271stores the NID of the node from which the message was received as the next entry of the list. This way, the routing table273contains redundant next-hop information from the current receiving node towards the source node. If the received flooding message contains a MSN that is larger than that found in the routing table273, the listing of the next hop neighbors is deleted from the routing table273for this destination and the transmitting node is set as the first entry in the next hop list. In exemplary embodiments, the dynamic updating of the routing table273based on the flooding messages enables the awareness services module111to dynamically create reply routes among wireless nodes101within the ad-hoc mesh network109.

To update the MID table277, the awareness services module111checks whether there is already an entry for the received message. If there is not, the awareness services module111adds a new entry for the received flooding message including the time of reception. If there is an existing entry, the awareness services module111updates the time of reception. The time of reception is used, for instance, to remove older entries from the MID table.

To update the message table279, the awareness services module111first checks (based on the MID) if the received message already exists in the message table. Existence of the message would mean that the message has been received earlier and is already scheduled for retransmission by the module111. If the message already exists in the message table279, the message counter in the message table279is also incremented.

The neighbor table275contains a list of the neighboring wireless nodes101and an estimate of their relative radio distance. In exemplary embodiments, the awareness services module111initiates determination of the relative radio distance of neighboring wireless nodes101(step368). In one embodiment, the relative radio distance is estimated by measuring the transmitting power (e.g., a receiver carrier power indication (RCPI) level) of received messages to determine the relative radio distance of neighboring wireless nodes101. The awareness services module111then classifies the neighboring nodes101according to their respective relative radio distance or other predefined criteria (step372). For example, based on the RCPI and, optionally, the observed RCPI history of the neighboring nodes101, the nodes101are ordered by increasing RCPI value. The nodes101are then divided into, for instance, one or more distance categories (e.g., three categories): the nodes101with the highest RCPI (or RCPI history) values are assigned a relative radio distance of “very near”; the nodes101with lowest RCPI (or RCPI history) values are assigned a relative radio distance of “far”; and the remaining nodes101are assigned a relative radio distance of “near”. The sizes of these three populations are adaptively set by the awareness services module111by modifying the RCPI thresholds used for relative distance classification. If the number of neighboring nodes is small, the thresholds should be set in such a way that all the nodes will fall in the “near” category.

It is contemplated that the observed signal strength together with the known transmitting power of a neighboring wireless node101is an indicator of the proximity of the wireless node101and can be used to calculate the relative radio distance. The relative radio distance of the node from which the message was last received is then used as a criterion for whether or not the wireless node101retransmits a received flooding message. For instance, a higher signal strength indicates closer proximity to the wireless node101. The awareness services module111monitors the signal strengths of neighboring nodes101as it receives messages from nearby devices and uses it to estimate the relative radio distance (proximity). It is also contemplated that the awareness services module111may use any other mechanism for estimating the relative radio distance of neighboring nodes (e.g., estimating location using global positioning satellite receivers or other positioning techniques).

For example, an entry for a neighboring node101is maintained in the neighbor table275, if within a predetermined time window T, the neighboring node101has transmitted a message or a beacon signal. In certain embodiments, the time window T is dependent on how quickly the neighboring nodes101are moving or changing. For example, if the set of neighboring nodes101is changing rapidly, the time window T is shorter; if the set of neighboring nodes101is stable, the time window T is longer. It is contemplated that the time window may be dynamically adjusted based on the stability of the set of neighboring nodes101.

In one embodiment, if the received flooding message is from a neighboring wireless node101that is classified in the very near distance category (step374), the awareness services module111cancels retransmission of the flooding message or does not initiate retransmission of the flooding message (step376). Under this circumstance, the awareness services module111assumes that because the flooding message was received from a very near neighboring wireless node101, the other neighboring wireless nodes101most likely have also received the flooding message. Therefore, retransmission of the flooding message to immediate neighboring nodes101is likely not needed. In this way, the awareness services module111reduces unnecessary retransmissions over the ad-hoc mesh network109.

If the neighboring node101from which the flooding message was received is not in the very near distance category, the awareness services module111determines whether to retransmit the flooding message based on other predefined retransmission criteria (step378). As part of this determination, the awareness services module111, for instance, classifies the neighboring wireless nodes101into one or more groups based on the criteria. Classification in a particular group may then be used to determine whether that group, for instance will receive retransmission of the flooding message. The retransmission criteria include, for instance, a message hop limit, geographical limit, temporal limit, context limit, or a combination thereof. It is contemplated that the awareness services module111may use any other limitation or context as retransmission criteria. In exemplary embodiments, the retransmission criteria reduce the potential for unnecessarily rebroadcasting a flooding message, thereby minimizing data traffic over the ad-hoc mesh network109. For example, the awareness services module111applies the message count limit by checking the hop count field286in the received message, which indicates the number of hops the flooding message has traveled over the ad-hoc mesh network109. Once the message count reaches a predefined limit, the flooding message is dropped and no longer retransmitted. Such a limit prevents messages from travelling without limit. In certain embodiments, the message count limit can override any other limits that the originator of the message may have set.

Similarly, the awareness services module111can limit the geographical dispersion of the flooding message by, for instance, comparing the location of the wireless node101to the geographical limit287of the flooding message. This location information may be obtained as awareness information shared by neighboring wireless nodes101or directly obtained from a positioning module or other positioning service accessible by the wireless node101.

With respect to a retransmission criterion based on a temporal limit, the awareness services module111rebroadcasts the flooding message only during the effective time period of the message. For example, a flooding message includes information concerning a concert and is effective only for the duration of the concert. By way of example, the awareness services module111accesses a clock service (e.g., resident on the wireless node101or external to the wireless node101) to determine the time and does not retransmit the flooding message if the time is outside the effective time period specified by the temporal limit298of the flooding message.

With respect to a retransmission criterion based on a context limit, the awareness services module111rebroadcasts the flooding message only if the context limit289in the received message matches with that of the receiving node. Such a context (e.g. location in “Bradbury Mall”) may be calculated based on the awareness information received from other mobile nodes or from nodes installed at fixed locations. For example, a flooding message including an advertisement for a store may have its distribution limited to only those wireless nodes101that are located within the mall in which the store is located.

Based on application of the retransmission criteria, the awareness services module111makes a determination of whether to retransmit the flooding message. If the determination is to retransmit, the awareness services module111updates the message table279to add the received flooding message to the transmission queue and initiates rebroadcast of the flooding message by, for instance, assigning a retransmission time range to each distance category (step382). The retransmission range for the near group, for instance, can be calculated based on the number of wireless nodes101classified or included in the near group. Similarly, the retransmission range for far group can be calculated based on the number of wireless nodes101classified or included in the far group. It is contemplated that the retransmission range can be independently calculated for each defined group. By way of example, the retransmission time range specifies a time period during which the flooding message will be retransmitted to the neighboring wireless nodes101within a specific distance category. More specifically, the awareness services module111schedules the retransmission of the flooding message according to assigned retransmission time range for each neighboring wireless node101(step384). In this way, the awareness services module111can delay or stagger the retransmission of the flooding message to neighboring wireless nodes101based on, for instance, their relative radio distances. The delay or stagger reduces the potential to saturate the traffic capacity of the ad-hoc mesh network109. In addition, the awareness services module111may also determine whether to continue retransmission of a flooding message based on the distance category of the neighboring wireless node101from which the flooding message was received. For example, the awareness services module111may cancel retransmission of the flooding message if the transmitting neighboring wireless node101is in the very near category. For example, because the transmitting wireless node101is in the very near category, it is assumed that other neighboring wireless nodes101are also likely to have already received the flooding message. Therefore, retransmission is likely to be unnecessary. If the transmitting node101is in the far category, the awareness services module111will schedule the flooding message for retransmission because it is less likely that other neighboring nodes have already received the flooding message.

FIG. 4is a flowchart of a process for setting a state of a community to change the visibility of community or community member, according to an exemplary embodiment. In one embodiment, the awareness services module111performs the process400and is implemented in, for instance, a chip set including a processor and a memory as shown inFIG. 9. In step401, the awareness services module111enables the user to set a state corresponding to a community that determines the visibility of the community or a member of the community. The different states of the community and how the state affects the visibility of status of the community are discussed with respect toFIG. 2D. For example, in various embodiments, when a community is active, it is capable of sending and receiving community specific messages. Similarly, when a community member is visible, the user alias associated with the community member can be queried and sent to other community members.

Moreover, it is contemplated that the state of a community in a wireless node101can be used to filter incoming messages. For example, to block all incoming or outgoing messages, a user can set the state of a community to inactive so that all messages from that particular community are disregarded. It is contemplated that a user belonging to multiple communities may independently set the visibility state for each community. By way of example, to block incoming advertisements, the user can set the state to inactive for the community sending the advertisements. It is also contemplated that the user can automatically set the visibility state based on criteria such as time (e.g., to automatically set a visibility state at certain periods of the day), location (e.g., to automatically set a visibility state at certain locations such as work or school), or any other context (e.g., while in a meeting or at dinner).

FIG. 5Ais a ladder diagram that illustrates a sequence of messages and processes used in a querying node, according to an exemplary embodiment. A network process is represented by a thin vertical line. A step or message passed from one process to another is represented by horizontal arrows. A dashed horizontal arrow represents an optional step or message. The processes represented inFIG. 5Aare the querying node502, relaying node506, and replying node508. Within querying node502, the following additional processes are represented: application201, awareness layer203, community layer205, network layer207, and D2D radio layer209.

In step501, the application201within querying node502generates a request for searching community information (e.g., wireless nodes101having active communities or communities with visible members) over the ad-hoc mesh network109and sends the request to the community layer205of the querying node502. The community layer205generates a community query message, assigns a community query identification number (CQID) to the query message and prepares the query message for transmission over the ad-hoc mesh network109by marking the query with CIDs of the communities from which the user is seeking information. If the user seeks information on members of the communities and the communities are private, the community layer205encrypts the community-specific user identity (e.g., alias) using the encryption keys associated with the respective CID and stored in the community directory243(FIG. 2C). If the community directory243contains recent information about active communities in other nodes then the community layer205may return the community information (step503). The community layer205then sends the anonymized and partly encrypted message to the network layer207(step505).

The network layer207assigns a message sequence number (MID) to the query message and adds fields to the network layer message header281(FIG. 2F) to indicate that the querying node502is the source and transmitter of the query message (e.g., using the NID). The network layer207sends the query message to the D2D radio layer209of the querying node502for broadcasting in the ad-hoc mesh network109(step507).

The query message is then broadcasted to one or more relaying nodes506(step509). All the nodes that are able to receive the broadcast message are relaying nodes. After processing by the relaying node506, the query message is rebroadcasted to another relaying node or to the replying node508(step511). The processes of the replying node508are described with respect toFIG. 5C. After processing of the query message by the replying node508, a reply message is generated and sent to the relaying node506(step513) which routes the reply message either to another relaying node or to the querying node502(step515) based on the route stored in the routing table273.

At the querying node502, the D2D radio layer209receives and acknowledges the reply message and forwards the reply message to the network layer207(step517). The network layer207determines that the querying node502is the intended destination of the reply message by checking the DST field294in the network layer message header281and sends the message to the community layer205for processing (step519). In case of a private community, the community layer205decrypts the reply message using the appropriate encryption keys stored in the community directory243. Based on the information in the reply message, the community layer205updates information in the community directory243(list of active communities and the lists of visible members in the communities) and finally sends a service response to the query to the application201(step521).

FIG. 5Bis a ladder diagram that illustrates a sequence of messages and processes used in a replying node, according to an exemplary embodiment. A network process is represented by a thin vertical line. A step or message passed from one process to another is represented by horizontal arrows. A dashed horizontal arrow represents an optional step or message. The processes represented inFIG. 5Bare the replying node508and the querying node502. Within replying node508, the following additional processes are represented: application201, awareness layer203, community layer205, network layer207, and D2D radio layer209.

In step561, the D2D radio layer209of the replying node508receives the query message and forwards it to the network layer207of the replying node508. The network layer207may decide to rebroadcast the query message (step563). On receipt, the network layer207forwards the query message to the community layer205(step565).

If the community layer205determines that the query message contains one or more anonymized CIDs of the active communities associated with the replying node508and the query message contains encrypted user aliases, the community layer205decrypts the message and updates information in its community directory243(e.g., containing the list of active communities and the list of visible members of the communities). Next, the community layer205generates a reply message that contains the same CQID as the incoming query and has the source NID of the query message set as the destination NID of the reply message. If the query requests visible user aliases and the user alias in the node508is set as visible then the community layer205encrypts the user alias with the encryption keys associated with the community. The community layer205then retrieves a new anonymized CID from the community directory243and sends the reply message to the network layer207(step567).

On receipt of the reply message, the network layer207assigns a new message sequence number (MSN) to the reply message, attaches the NID of the replying node508as the source and transmitter, finds the NID of the relaying node506for the next hop from the routing table263, sets the receive NID of the reply message as the next hop and sends the reply message to the D2D radio layer209(step569). The D2D radio layer209sends the reply message as a unicast message addressed to a relaying node506over the ad-hoc mesh network109(step571).

FIGS. 6A-6Bare diagrams of a user interface utilized in the process of locating communities over an ad-hoc mesh network, according to various exemplary embodiments.FIG. 6Adepicts a user interface600listing community related information and commands for managing and accessing awareness information. For example, section601lists community members who are nearby the wireless node101. The members may be from one or more different communities. Selecting a member enables a user to contact the member, view the status of the member, or access other applications or functions related to the user. Section603may display, for instance, status commands or prompts such as an invitation to join a particular community. User interface600also provides selectable menu options605to initiate additional commands. For example, selecting the option “Around Me” prompts the display of a map607with the locations of community members.

FIG. 6Bdepicts a user interface620for managing communities. For instance, section621displays currently defined communities with an option623to activate or deactivate each community individually. Users may also designate each community as either public or private using the control625. Members of each community are displayed in section627, along with controls629for adding or removing members.

FIG. 7is a flowchart of a process for providing access for creating a community of mobile devices, according to an exemplary embodiment. In step701, the communication network103provides access and support for creating a community of mobile devices for sharing awareness information over an ad-hoc mesh network109. As part of the process of creating the community, the CIDs and associated keys corresponding to the community are provided community members. As described with respect toFIG. 4, the CIDs and associated keys are used to protect the privacy and anonymity of users of the ad-hoc mesh network109. In exemplary embodiments, the CIDs and keys are shared using secure transmissions such short message service (SMS) and/or E-mail. In exemplary embodiment, these forms of communications are typically supported over the communication network103. If a secure communication channel is available, the CIDs and associated keys may be shared over the ad-hoc mesh network109as well. It is contemplated that the communication network103works in conjunction with the ad-hoc mesh network109to provide sufficient network resources (e.g., bandwidth, etc.) to facilitate the creation to the community for sharing awareness information.

The processes described herein for locating communities over an ad-hoc mesh network109may be implemented via software, hardware (e.g., general processor, Digital Signal Processing (DSP) chip, an Application Specific Integrated Circuit (ASIC), Field Programmable Gate Arrays (FPGAs), etc.), firmware or a combination thereof. Such exemplary hardware for performing the described functions is detailed below.

A bus810includes one or more parallel conductors of information so that information is transferred quickly among devices coupled to the bus810. One or more processors802for processing information are coupled with the bus810.

A processor802performs a set of operations on information related to locating communities over an ad-hoc mesh network109. The set of operations include bringing information in from the bus810and placing information on the bus810. The set of operations also typically include comparing two or more units of information, shifting positions of units of information, and combining two or more units of information, such as by addition or multiplication or logical operations like OR, exclusive OR (XOR), and AND. Each operation of the set of operations that can be performed by the processor is represented to the processor by information called instructions, such as an operation code of one or more digits. A sequence of operations to be executed by the processor802, such as a sequence of operation codes, constitute processor instructions, also called computer system instructions or, simply, computer instructions. Processors may be implemented as mechanical, electrical, magnetic, optical, chemical or quantum components, among others, alone or in combination.

Computer system800also includes a memory804coupled to bus810. The memory804, such as a random access memory (RAM) or other dynamic storage device, stores information including processor instructions for locating communities over an ad-hoc mesh network109. Dynamic memory allows information stored therein to be changed by the computer system800. RAM allows a unit of information stored at a location called a memory address to be stored and retrieved independently of information at neighboring addresses. The memory804is also used by the processor802to store temporary values during execution of processor instructions. The computer system800also includes a read only memory (ROM)806or other static storage device coupled to the bus810for storing static information, including instructions, that is not changed by the computer system800. Some memory is composed of volatile storage that loses the information stored thereon when power is lost. Also coupled to bus810is a non-volatile (persistent) storage device808, such as a magnetic disk, optical disk or flash card, for storing information, including instructions, that persists even when the computer system800is turned off or otherwise loses power.

Information, including instructions for locating communities over an ad-hoc mesh network109, is provided to the bus810for use by the processor from an external input device812, such as a keyboard containing alphanumeric keys operated by a human user, or a sensor. A sensor detects conditions in its vicinity and transforms those detections into physical expression compatible with the measurable phenomenon used to represent information in computer system800. Other external devices coupled to bus810, used primarily for interacting with humans, include a display device814, such as a cathode ray tube (CRT) or a liquid crystal display (LCD), or plasma screen or printer for presenting text or images, and a pointing device816, such as a mouse or a trackball or cursor direction keys, or motion sensor, for controlling a position of a small cursor image presented on the display814and issuing commands associated with graphical elements presented on the display814. In some embodiments, for example, in embodiments in which the computer system800performs all functions automatically without human input, one or more of external input device812, display device814and pointing device816is omitted.

FIG. 9illustrates a chip set900upon which an embodiment of the invention may be implemented. Chip set900is programmed to provide awareness information over an ad-hoc mesh network109as described herein and includes, for instance, the processor and memory components described with respect toFIG. 9incorporated in one or more physical packages. By way of example, a physical package includes an arrangement of one or more materials, components, and/or wires on a structural assembly (e.g., a baseboard) to provide one or more characteristics such as physical strength, conservation of size, and/or limitation of electrical interaction.

The processor903and accompanying components have connectivity to the memory905via the bus901. The memory905includes both dynamic memory (e.g., RAM, magnetic disk, writable optical disk, etc.) and static memory (e.g., ROM, CD-ROM, etc.) for storing executable instructions that when executed perform the inventive steps described herein to provide awareness information over an ad-hoc mesh network109. The memory905also stores the data associated with or generated by the execution of the inventive steps.

FIG. 10is a diagram of exemplary components of a mobile station (e.g., handset) capable of operating in the system ofFIG. 1, according to an exemplary embodiment. Generally, a radio receiver is often defined in terms of front-end and back-end characteristics. The front-end of the receiver encompasses all of the Radio Frequency (RF) circuitry whereas the back-end encompasses all of the base-band processing circuitry. Pertinent internal components of the telephone include a Main Control Unit (MCU)1003, a Digital Signal Processor (DSP)1005, and a receiver/transmitter unit including a microphone gain control unit and a speaker gain control unit. A main display unit1007provides a display to the user in support of various applications and mobile station functions such as the awareness services module111. An audio function circuitry1009includes a microphone1011and microphone amplifier that amplifies the speech signal output from the microphone1011. The amplified speech signal output from the microphone1011is fed to a coder/decoder (CODEC)1013.

A radio section1015amplifies power and converts frequency in order to communicate with a base station, which is included in a mobile communication system, via antenna1017. The power amplifier (PA)1019and the transmitter/modulation circuitry are operationally responsive to the MCU1003, with an output from the PA1019coupled to the duplexer1021or circulator or antenna switch, as known in the art. The PA1019also couples to a battery interface and power control unit1020.

The encoded signals are then routed to an equalizer1025for compensation of any frequency-dependent impairments that occur during transmission though the air such as phase and amplitude distortion. After equalizing the bit stream, the modulator1027combines the signal with a RF signal generated in the RF interface1029. The modulator1027generates a sine wave by way of frequency or phase modulation. In order to prepare the signal for transmission, an up-converter1031combines the sine wave output from the modulator1027with another sine wave generated by a synthesizer1033to achieve the desired frequency of transmission. The signal is then sent through a PA1019to increase the signal to an appropriate power level. In practical systems, the PA1019acts as a variable gain amplifier whose gain is controlled by the DSP1005from information received from a network base station. The signal is then filtered within the duplexer1021and optionally sent to an antenna coupler1035to match impedances to provide maximum power transfer. Finally, the signal is transmitted via antenna1017to a local base station. An automatic gain control (AGC) can be supplied to control the gain of the final stages of the receiver. The signals may be forwarded from there to a remote telephone which may be another cellular telephone, other mobile phone or a land-line connected to a Public Switched Telephone Network (PSTN), or other telephony networks.

Voice signals transmitted to the mobile station1001are received via antenna1017and immediately amplified by a low noise amplifier (LNA)1037. A down-converter1039lowers the carrier frequency while the demodulator1041strips away the RF leaving only a digital bit stream. The signal then goes through the equalizer1025and is processed by the DSP1005. A Digital to Analog Converter (DAC)1043converts the signal and the resulting output is transmitted to the user through the speaker1045, all under control of a Main Control Unit (MCU)1003—which can be implemented as a Central Processing Unit (CPU) (not shown).

The MCU1003receives various signals including input signals from the keyboard1047. The keyboard1047and/or the MCU1003in combination with other user input components (e.g., the microphone1011) comprise a user interface circuitry for managing user input. The MCU1003runs a user interface software to facilitate user control of at least some functions of the mobile station1001. The MCU1003also delivers a display command and a switch command to the display1007and to the speech output switching controller, respectively. Further, the MCU1003exchanges information with the DSP1005and can access an optionally incorporated SIM card1049and a memory1051. In addition, the MCU1003executes various control functions required of the station. The DSP1005may, depending upon the implementation, perform any of a variety of conventional digital processing functions on the voice signals. Additionally, DSP1005determines the background noise level of the local environment from the signals detected by microphone1011and sets the gain of microphone1011to a level selected to compensate for the natural tendency of the user of the mobile station1001.

An optionally incorporated SIM card1049carries, for instance, important information, such as the cellular phone number, the carrier supplying service, subscription details, and security information. The SIM card1049serves primarily to identify the mobile station1001on a radio network. The card1049also contains a memory for storing a personal telephone number registry, text messages, and user specific mobile station settings.