In contemporary (e.g., Windows® Vista™-based) computer systems, users are able to view and generally interact with selected content on a small auxiliary display device coupled to or integrated into a main host computer system. To this end, an auxiliary display screen along with an operating system-provided platform (referred to as an auxiliary display platform, or a Windows® SideShow™ platform), enables developers and authors to present content to users. This allows the user to view the content even when the main host computer system is in a reduced power state (e.g., ACPI S3 sleep state), or even turned off.
To provide data for display, the auxiliary display platform uses gadgets, comprising small plug-in type computer programs that run on the main host system, and which obtain and process content from another application program or data source. In most scenarios, gadgets are pre-installed, proprietary programs, which restrict gadget-provided content to what is locally available on the user's personal computer.
This Summary is provided to introduce a selection of representative concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used in any way that would limit the scope of the claimed subject matter.
Briefly, various aspects of the subject matter described herein are directed towards a main host computer system that is coupled to one or more auxiliary display devices, and that includes a component that processes data received from a source, such as an RSS feed. The data includes metadata that corresponds to information for handling content associated with the source data. The metadata is used to enable a gadget to handle the content, which includes providing at least part of the content (e.g., in a suitable format for consumption by an auxiliary device) to an auxiliary display platform. Enabling the gadget includes installing the gadget if necessary, e.g., by writing information corresponding to the metadata into a system registry, and loading and running the gadget.
By having a gadget obtain the received data and process its metadata, another gadget that is capable of handling the content associated with the received data may be installed (as necessary), and then run so as to receive content from the data source corresponding to that other gadget. The other gadget then outputs data that represents at least part of the content for consumption by the auxiliary display device, which may include converting the content from one format to another format for consumption. It is also possible for the RSS gadget to create virtual gadgets such that the RSS gadget receives the content from the source, but displays it in the form of a separate, “virtual” gadget, rather than having the second gadget handle its own data subscription.
Aspects of the subject matter may be implemented in a system, such as a system having a platform (e.g., an RSS platform) that receives distributed data from data distribution sources. A distribution (e.g., RSS) gadget coupled to the platform processes the distributed data, and as necessary, an installer mechanism associated with the distribution gadget may install a specific gadget as needed for the specific data source that provided the gadget-related information. The newly-installed specific gadget provides the content received from the specific data source to an auxiliary display platform.
Other advantages may become apparent from the following detailed description when taken in conjunction with the drawings.
The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
Exemplary Operating Environment
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to: personal computers, server computers, hand-held or laptop devices, tablet devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth, which perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in local and/or remote computer storage media including memory storage devices.
With reference to
The computer 110 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer 110 and includes both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by the computer 110. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer-readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media, described above and illustrated in
The computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160 or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
An auxiliary display subsystem 199 may be connected via the user interface 160 to allow data such as program content, system status and event notifications to be provided to the user, even if the main portions of the computer system are in a low power state. The auxiliary display subsystem 199 may be connected to the modem 172 and/or network interface 170 to allow communication between these systems while the main processing unit 120 is in a low power state.
Auxiliary Display Gadget For Distributed Content
Various aspects of the technology described herein are directed towards obtaining and processing content to be displayed on an auxiliary display device coupled to a main host computer system. In general, much of the description herein is directed towards a particular example in which the content is obtained from a remote data source using RSS (Really Simple Syndication) technology, where RSS technology generally refers to Web syndication/content distribution using one or more XML-based file formats. RSS is typically used by news websites and web logs (blogs) to distribute their content, but also may be used for other purposes, including marketing, bug reporting, or any other activity involving periodic updates or publications.
RSS technology allows Internet users to subscribe (often for no cost) to RSS feeds from websites, typically websites that frequently change content. In general, each such site provides the data to distribute on demand, where the data comprises content along with some metadata, often including links to other content. This data is delivered to subscribers as an XML file referred to herein as RSS data or RSS feed, but in other contexts alternatively may be referred to as a web feed, RSS stream, or RSS channel. RSS data may include attached multimedia files.
As will be understood, however, the technology described herein is not limited to any particular data source and/or data format, or even RSS technology, and may be used with local as well as remote data. Moreover, the technology described herein is not limited to any particular types of auxiliary devices, but rather includes devices not conventionally thought of as devices that are “computer-system” coupled devices, such as television sets, audio receivers, audio/video recorders, telephones, a separate computer, a mobile communications device, a secondary display screen with actuators, a watch, a wall (e.g., kitchen) display, a display screen, a digital picture frame, a clock, a radio, a media player, a device embedded within or using the main display of a consumer electronics device, automotive, transportation or other vehicular units, keyboards or other input devices of the main computer system, a pager, a personal digital assistant, and so forth. As such, the present invention is not limited to the examples, structures or functionality described herein; rather, any of the examples, structures or functionality described herein are non-limiting, and the present invention may be used various ways that provide benefits and advantages in computing and content handling in general.
Turning to
As described below, data from the RSS source 212 data is received at an RSS gadget 216. In general, the gadget 216 comprises program code running on the main host computer system that registers with the auxiliary display platform to send data to one or more auxiliary display devices; the gadget may be enabled or disabled from the control panel.
The gadget 216 processes received data for content consumption by (typically display on) an auxiliary device 220. As also described below, this processing includes handling the metadata 222 accompanying the RSS feed. To this end, the RSS gadget 216 includes or is otherwise associated with a metadata handler mechanism 230. Processing also may include converting, as represented by the RSS/Aux converter 232, the RSS content 224 to a format that the auxiliary display device 220 (e.g., part of the auxiliary display subsystem 199 of FIG. 1) can handle. One such format is referred to as simple content format (SCF), which comprises a basic data format that auxiliary display devices should be able to display, and includes formatting for communicating menu, picture and notification data.
To facilitate content receipt, the source 212 of the RSS data provides information about the content 224 in the metadata 222. More particularly, rather than needing a dedicated gadget on the host computer system to handle its content, the metadata handler 230 on the RSS gadget 216 will handle data from various sources, and differentiate the data based upon the metadata. As a result, this technology enables content providers to efficiently syndicate auxiliary display-destined content to a broad, potentially unlimited, audience over the web without requiring proprietary software on each recipient's device.
More particularly, as a special case of data distribution/management, instead of only delivering content, content providers can use RSS to distribute auxiliary display-specific data and create new gadgets. For example, when a user subscribes to an RSS feed with this special auxiliary display data payload, the RSS gadget 216 may utilize this data to create a new, separate auxiliary display gadget, such as “Gadget A” 240 of
In one example implementation, the first time that RSS data from a site such as the source 212 is downloaded, information corresponding to the metadata 222 is written to the host system's registry 234, (e.g., assuming the user and/or policy allows such an action). Note that any metadata that already has its corresponding information in the registry 234 need not be rewritten on subsequent feeds; instead the existing information in the registry 234 may be used to determine how to handle the associated RSS content 224 with respect to an auxiliary device's display of that content. Thereafter, some form of the content 224 can be provided (e.g., via the created gadget 240) to the auxiliary display device 220. As a result, from the user's perspective, discovering and installing a new gadget is as simple as subscribing to a RSS feed.
For completeness,
Also for completeness,
Note that most RSS content is HTML-formatted text, however, RSS 2.0 provides for the embedding of other data such as multimedia content via <enclosure> tags, wherein an <enclosure> comprises an optional sub-element of an <item>. RSS enclosure types are defined by standard MIME types. For example, one implementation of an auxiliary display platform supports images using simple content format on enhanced displays, e.g., such as in jpg, gif, and bmp formats. For richer media scenarios, other media may be enabled, e.g., mpeg/wma for audio, wmv/avi/mpeg for video.
In RSS-related markup, an <enclosure> has a number of attributes, such as a URL that specifies where the enclosure is located, a length that specifies its size (e.g., in bytes), and a type that specifies what its type is, e.g., a standard MIME type. The URL may be an http URL, for example:
The RSS gadget can request the RSS platform to download the enclosure when it belongs to a recognized type. Once the enclosure has been downloaded, the gadget acquires the enclosed file from the RSS platform directly. Alternatively, the RSS gadget can download the enclosure itself, by use of the URL attribute in the enclosure markup.
Because there is no restriction on types of RSS payloads, content providers and software vendors are able to distribute virtually any type of data over the web to user's auxiliary display devices, including various content such as stock quotes and music. Rich media also may be delivered, making possible scenarios such as a wireless digital photo frame that automatically displays pictures from a user's subscribed blogs, or a media player that automatically downloads a user's favorite podcasts and news articles, or other scenarios.
Other example scenarios are directed towards, but not limited to, blog/RSS consumption (reading), blog/RSS creation (blogging), digital photo frames, podcasts, installing new gadgets using RSS, and Sidebar integration. For example, consider one user that listens to his audio player while commuting. In addition to listening to his music, he can use his audio player or other media device to download podcasts, photos, and RSS feeds while docked. He can then consume it while commuting. The device automatically picks up the right feeds to which he has he subscribed via an RSS platform feed list, e.g., he may subscribe to photos from a subset of friends, and/or possibly short video clips taken from mobile phones, and the RSS gadget will automatically synchronizes the content when the device is docked.
With respect to blogging, a mobile device (e.g., Smartphone) may have small panel for reading as well as for thumbpad input. The above consumption examples apply, but in addition, the user can additionally create content, e.g., by taking pictures, writing to a blog, and/or blogging content via the user's blog mechanism. Using an RSS enclosure, the user may create a photo feed directly distributed to a certain group, along with accompanying/explanatory text. For devices not having wireless capabilities, blog content may be cached for synchronization with an RSS engine when docked.
A digital photo frame may also receive content to which it is subscribed. For example, an auxiliary display digital photo frame may be wirelessly connected to a personal computer, and, loaded with an automatically-installed RSS gadget that picks up photos via RSS feeds, the computer pushes the photos to the photo frame. The photo frame may automatically display the newest photos and cycle through them periodically to keep them fresh.
Podcasts are another scenario that may be facilitated via an RSS podcast feed. To this end, a user may configure podcasts to be synchronized to a device, e.g., using an auxiliary gadget property page from the auxiliary display's control panel applet. When the user subscribes to the feed, the auxiliary gadget strips the enclosed podcasts from the RSS feed. Each time the device is docked, the gadget synchronizes the podcasts onto it, for later listening.
As described herein, new gadgets may be installed using RSS. For example, as described below with reference to
In this manner, the RSS gadget 216 enables users to consume (and create) content on portable devices in various media formats, including audio (e.g., podcasts), photos, text (e.g., blogs), and so forth using the auxiliary display platform. As a result, users are able to browse subscribed feeds, listen to podcasts, view photos/videos and perform similar tasks via their auxiliary display devices. Note that this may be accomplished with stand-alone RSS devices that consume/create content, or by using existing portable devices such as audio players to consume multimedia content.
Turning to a more specific example implementation, as generally represented in
RSS feeds may be arranged as a set of folders and feeds within folders, such as the way that the arrangement of a browser component's favorites is stored. Note that the folder and feed order is typically not maintained in a system feed list, but rather, in one example implementation, (like a browsers favorite folders and sites), the operating system/browser component and an RSS explorer program share a set of registry keys to store the order of folders and feeds within folders. The RSS gadget 216 reads these registry keys for the folder and feed order; an example registry key for storing the order of subscriptions in the system feed list is HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Feeds.
Note that a user may have multiple auxiliary devices, and thus may desire that a specific feed be mapped to a specific device. For example, due to a given device's limitations, the feeds that can be supported by that device may be only a subset of the user's total subscribed feeds, e.g., some simple content format-capable devices may have form factors that will produce poor user experiences when trying to render RSS feeds, and users should be able to turn off feeds for such devices. Further, for usability reasons, users may not want to consume all feeds on a single device, since a user may have feeds that number in the hundreds. Also for specific media types, such as photos, users may only choose to consume feeds from specific sources.
To enable users to associate specific feeds with specific auxiliary devices, as represented in
The RSS gadget 216 may use the ISideShowCapabilitiesCollection interface to enumerate the subset of currently connected auxiliary devices on a user's system. When the gadget queries for each device's properties, the gadget can then acquire a friendly name for the device (from DEVICE_NAME above), and render a table or the like that allows a user to associate specific feeds with a specific device (or devices), e.g., in a user interface of the control panel applet 354.
for Example:
In General, the Gadget Will do the Following:
The RSS gadget 216 may gracefully fail the ISideShowContent::GetContent( ) callback to return only specific feeds based on the device. Note that this is a callback because the gadget calls ISideShowContentManager::Add, and the content manager calls the gadget back on its ISideShowContent interface.
Once associations have been made in some way, e.g., by default as modified via the control panel applet's user interface, the RSS gadget 216 stores this feed-to-device structure (e.g., graph) 352 so that the gadget will later be able to access the store 352 to determine which feeds to push to which devices. For example, one user may want to see/hear all music-related feeds on a music player device, but see urgent work feeds on a cell phone. Note that the RSS gadget 216 (or a virtual gadget created thereby) may customize the simple content format content for each device to account for the different feeds. Because the user may update each association from the auxiliary display's control panel applet 354 at any time, the RSS gadget 216 also updates its stored structure 352 accordingly.
The RSS gadget 216 may be installed by default as part of an auxiliary display manifest. When there are no auxiliary display devices attached, the gadget may be disabled, and need not show up in the auxiliary display's control panel applet 354. In this example implementation, the RSS gadget 216 need not add any UI to the RSS platform, as configurations may be handled through the user interface of the auxiliary display control panel applet 354.
In one example implementation, to write the required registry information for the auxiliary display gadget, the following outline structure may be employed:
As described above, the RSS gadget 216 is also registered with the auxiliary platform, (e.g., for communicating with APIs/components 246, 356 and 358), although note that the gadget 216 need not be installed on host computer systems that do not have auxiliary displays, or on host computer systems having operating systems that do not support auxiliary displays. The RSS gadget 216 may be installed by default, and may be customizable by a device manufacturer or other entity.
Note that the first time an RSS-capable device is found, the RSS gadget 216 may display a dialog or the like to educate the user about using RSS on auxiliary devices, as well as how to interact with the RSS gadget 216, e.g., via the auxiliary display's control panel applet 354. Further note that with respect to gadget behavior, the gadget may be configured to start on user login, provided that criteria are met, e.g., that an RSS platform is up and running, that it is only run on an appropriate SKU (stock-keeping unit of the operating system), and that one or more auxiliary display devices capable of RSS support are currently installed on the host computer. In one example implementation, the RSS gadget 216 will not be enabled without each of these criteria being met.
Once enabled, the RSS gadget 216 typically runs in the background by default, as ordinarily the RSS platform is continuously running; the RSS gadget 216 will self-disable should the RSS/auxiliary platform not be present for any reason. The RSS gadget 216 may be made aware of network connectivity, e.g., such that the gadget may suspend data transfer when no auxiliary device is connected.
With respect to basic platform, gadget, and device interaction, the following outline structure may be employed, (although as will be understood, not necessarily in the order presented):
To enable scenarios like playing back podcasts, music, and video, the auxiliary device driver framework 358 may interface directly with the embedded device to utilize its hardware and firmware. For auxiliary device integration with a native device (e.g., a podcast scenario), an auxiliary device driver may write content directly to device memory, and access firmware functionality that provides playback control.
From a source provider's perspective, the auxiliary display platform and RSS gadget enables software vendors or content publishers to utilize RSS to distribute and install new gadgets for users. Furthermore, it also increases the usage scenarios of SideShow gadgets, as content providers and software vendors can now provide content to SideShow devices from the web, in addition to the personal computer locally. This may include specifying and register new MIME types, including a MIME type for simple content format (e.g., Content-type: text/x-simple_content_format) and a MIME type for auxiliary installation data (e.g., Content-type: application/gadget).
To facilitate the way in which RSS entities may distribute new gadgets, that is, via RSS feeds, the entities need only publish RSS feeds with gadget installation metadata enclosed. For example, a gadget enclosure may contain the title, icon, supported endpoints, and so forth for the new gadget. Thereafter, the RSS synchronization engine (e.g., part of the RSS platform 350) automatically downloads simple content format and/or gadget enclosures.
From the perspective of building and distributing new auxiliary gadgets using RSS, consider a software developer working for a company such as one that owns a site zzzmovies.com. To release a “movie” gadget that enables users to see real-time movie information based on each user's location, the developer may embed special data (e.g., metadata about the movie gadget and real-time information in the simple content format) in zzzmovies.com's RSS feed, using enclosures. When received, the RSS gadget parses this simple content format data, and installs a movie gadget when a user first subscribes to the feed.
In this example, some time thereafter, such as when browsing zzzmovies.com's website, the user subscribes to a new feed W that contains a zzz movie gadget enclosure 470 from the zzzmovies.com server 462. Upon such a subscription request, the RSS gadget 216 is notified (e.g., via the RSS platform 350) and sees the <gadget> enclosure. In general, this is represented in
After installation, the zzz movie gadget 470 may be loaded and run, and will subscribe to its own feed W using the RSS platform 350, and after this point may operate independently of the RSS gadget 216, as generally represented in
An alternative implementation may have the RSS gadget 216 subscribe to the W feed, and manage the data for the zzzmovie gadget. In this implementation, the RSS gadget 216 is effectively running the zzzmovie gadget.
Note that once installed, the zzz movie gadget 470 need not be installed each time, but rather its installation data in the metadata having corresponding information already in the registry may be used to load and run (i.e., instantiate) an instance of the gadget whenever the same metadata is detected in the RSS feed. For example, if the gadget 216 recognizes that metadata has previously been processed into the installation data in the registry, the installation data may be read back from the registry (or the current metadata may be converted to equivalent installation data) to enable (e.g., load and run) an instance of the corresponding gadget to handle the content.
As can be readily appreciated, although it is feasible for the RSS gadget to handle the RSS content instead of enabling another gadget for that purposes, the model exemplified in
If the user/policy allows the enabling of the gadget, e.g., the user consents at step 508, the RSS gadget proceeds to install the new gadget at step 510. In one implementation, this may include writing the necessary registry information based on the metadata in the <gadget> enclosure, opening the auxiliary display's control panel applet and prompt user to assign the gadget to the appropriate devices, and associating this specific feed with the newly installed gadget. This ensures that subsequent enclosures of the appropriate format (e.g., simple content format enclosures) are only delivered to this gadget. The new gadget may be registered with the auxiliary platform. After installation completes, the process continues to step 512.
At step 512, the RSS gadget 216 loads and runs the installed gadget. Note that while the gadget 216 could itself handle the feed content, in one implementation, the RSS gadget 216 does not subscribe to this feed, and does not manage this feed, instead letting the newly loaded and run gadget receive the feed content. Among other reasons, this helps avoid user confusion, e.g., where the feed shows up on the user's device RSS menu as well as showing a separate gadget on the device. Further, the loaded gadget will handle its own interactions, data requests, and so forth with its host web server, which is advantageous when it is independent of the RSS gadget 216 that handles RSS feeds from possibly many data sources.
As generally represented in the flow diagram of
The following information is directed to some example user interface concepts, using pages to present the user with information, and where example RSS fields are shown by enclosing them in <brackets>:
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.