Abstract:
A communication system for an interactive device includes a data conduit operative for transferring XML formatted data. An Internet framework, coupled to a first end of the data conduit, is operative for sending and receiving XML formatted data. Also included is an interactive device framework of the interactive device, coupled to a second end of the data conduit, operative for sending and receiving XML formatted data.

Description:
FIELD OF THE INVENTION  
       [0001]     The present invention relates to communication protocols and more particularly to communication-protocols for an interactive portable device.  
       BACKGROUND OF THE INVENTION  
       [0002]     The popularity of portable handheld devices has skyrocketed in the last several years. These devices offer mobile computing via a multitude of applications. Some examples of these applications include word processing, compilers, email and games.  
         [0003]     Another popular use of a handheld device is applications for data entry of specific activities. For example, an application that records data from an exercise regimen or a food diary/calorie tracker. While these types of programs offer obvious advantages via the portable handheld device, use of collected data is, for most purposes, locked into that application. As a result, the collected data is not easily exportable to other more robust applications. In fact, the associated data can usually only be archived via the resident backup services of the handheld device.  
         [0004]     Another drawback of handheld data collection applications is that they typically will not offer additional information to aid a user regarding a particular activity. For example, a person may be entering a diary of food intake for purposes of calorie tracking. During data entry, the person may desire nutritional information on a particular type of food. More than likely, the application will not be able to satisfy this curiosity. At the very least it will probably provide very limited information that could very likely be out of date.  
         [0005]     In view of the foregoing, it is readily seen that a need exists for a new data protocol that allows for easy data input via an interactive portable device yet still allows the archived data to be easily manipulated in external, more robust applications. In addition, mechanisms that can deliver more information to a user are also highly desirable.  
       SUMMARY OF THE INVENTION  
       [0006]     A communication system for an interactive device, in accordance with the present invention, includes a data conduit operative for transferring XML formatted data. An Internet framework, coupled to a first end of the data conduit, is operative for sending and receiving XML formatted data. Also included is an interactive device framework of the interactive device, coupled to a second end of the data conduit, operative for sending and receiving XML formatted data.  
         [0007]     A communication method for an interactive device, in accordance with the present invention, includes initiating a transfer of XML formatted data from an interactive device framework of the interactive device. The XML formatted data is received at a data conduit, coupled to one end of the interactive device, and then transferred over the data conduit. The XML formatted data is then received at an Internet framework coupled to a second end of the data conduit.  
         [0008]     An advantage of the present invention is that data collected via a portable device can be used in other applications for more meaningful purposes. In addition, the data structure of the present invention allows for multimedia files to be appended to an object or referenced and then delivered via other means (CD, DVD, etc) that results in a rich user experience.  
         [0009]     These and other advantages of the present invention will become apparent to those skilled in the art after reading the following descriptions and studying the various figures of the drawings.  
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0010]      FIG. 1  is a block diagram of a communications system, in accordance with the present invention.  
         [0011]      FIG. 2  is a detailed block diagram of a suitable hardware implementation for supporting the Internet framework of  FIG. 1 , in accordance with the present invention.  
         [0012]      FIG. 3  illustrates an example portable device for supporting the handheld framework of the communication system of  FIG. 1 , in accordance with the present invention.  
         [0013]      FIG. 4  illustrates an exercise template, an exercise definition and an exercise instance, in accordance with the present invention.  
         [0014]      FIG. 5  illustrates examples of exercise templates, in accordance with the present invention.  
         [0015]      FIGS. 6A and 6B  illustrate examples of exercise definitions, in accordance with the present invention.  
         [0016]      FIG. 7A  illustrates an exercise instance before execution, in accordance with the present invention.  
         [0017]      FIG. 7B  illustrates an exercise instance after execution, in accordance with the present invention.  
         [0018]      FIG. 8  illustrates a generic workout definition and generic workout instance, in accordance with the present invention.  
         [0019]      FIGS. 9A and 9B  illustrate example implementations of a workout definition, in accordance with the present invention.  
         [0020]      FIGS. 10A and 10B  illustrate example implementations of a workout instance, in accordance with the present invention.  
         [0021]      FIG. 11  illustrates a generic program definition and a generic program instance, in accordance with the present invention.  
         [0022]      FIGS. 12A and 12B  illustrate example implementations of a program definition, in accordance with the present invention.  
         [0023]      FIGS. 13A and 13B  illustrate example implementations of a program instance, in accordance with the present invention.  
         [0024]      FIG. 14  illustrates an example implementation of an exercise library, in accordance with the present invention.  
         [0025]      FIG. 15  illustrates an example implementation of a workout library, in accordance with the present invention.  
         [0026]      FIG. 16  illustrates an example implementation of a program library, in accordance with the present invention.  
         [0027]      FIG. 17  is a flowchart illustrating a communication method for an interactive device, in accordance with the present invention.  
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0028]     The present invention contemplates a variety of communication systems, methods and protocols for an interactive portable device. For example, the present invention teaches a system and method for an interactive device that allows the transferred data to be used in a meaningful way, besides mere archiving.  
         [0029]     This is achieved by providing a communication protocol, based on XML, designed to standardize the representation of data for communication between applications. The type of data is not limited to any particular type, but in a preferred embodiment fitness data is the primary focus of the present invention. Through the use of the XML standard, data delivery, collection, tracking and processing are all simplified. As a result, seamless application interoperability is achieved.  
         [0030]      FIG. 1  is a block diagram of a communications system  10 , in accordance with the present invention. Communications system  10  includes a data conduit  20 , a handheld framework  30  that includes handheld applications (handheld apps)  40  and optionally handheld custom application(s)  50 , and an Internet framework  60  that includes applications (apps)  70  and optionally custom application(s)  80 . In practice, XML formatted data flows in a bidirectional fashion between handheld framework  30  and Internet framework  60 , via data conduit  20 . Since data is formatted in XML, it can be used interchangeably with applications of varying types, specifically applications  40 ,  50 ,  70  and  80 . Data conduit  20  can take the form of any appropriate data transfer mechanism such as universal serial bus, firewire (IEEE standard 1394), wireless and the like.  
         [0031]      FIG. 2  is a detailed block diagram of a suitable hardware implementation for supporting the Internet framework  60  of  FIG. 1 , in accordance with the present invention. Internet framework  60  includes a central processing unit (CPU)  90 , a persistent storage device  100  such as a hard disk, a transient storage device  110  such as random access memory (RAM), a network I/O device  120 , and a encryption device  130 —all bi-directionally coupled via a databus  140 . As will be readily apparent, the Internet framework  60  is typical of computer systems and as a result is readily implementable on prior art hardware systems. Other additional components such as a graphics card, I/O devices such as a video terminal, keyboard and pointing device, may be part of the Internet framework  60 . One skilled in the art will readily recognize that framework  60  is but one possible implementation. As such, numerous permutations can be made without departing from the true spirit and scope of the present invention.  
         [0032]      FIG. 3  illustrates an example portable device for supporting the handheld framework  30  of the communication system  10  of  FIG. 1 , in accordance with the present invention. Included in portable device/handheld framework  30  is a screen  150 , a select button  160 , a mode/menu button  170 , a pause/back button  180 , volume up/down buttons  190  and  200 . In addition, scroll up and scroll down buttons can also be included. One skilled in the art will readily recognize the implementation of handheld device  30  is but one possible variant and that other configurations are possible without departing from the true spirit and scope of the present invention. In the context of the present invention, it should be understood that the phrases “handheld device” and “portable device” and permutations thereof can be used interchangeably and all refer to a mobile computing device that can fit in the palm of a hand. In addition, the phrase “interactive device” can include a “portable device” but is not necessarily limited to that class of devices.  
         [0033]     Also in the context of the present invention, several concepts will now be defined that will aid in comprehension. An exercise is a single action that is performed one or more times. In the most general case, an exercise contains a set count, quantifiers and description. A workout is a series of one or more exercises executed in succession over a continuous period of time on a given day. A program is a schedule of individual workouts, typically designed to produce specific physiological effects over a period of time.  
         [0034]     Each of these three items (exercise, workout and program) are represented as objects. Each of these objects can also be associated with multimedia files such as text (plain text, html), audio (MP3, WAV), video (MPG, AVI) and image (JPG, GIF). One skilled in the art will realize that this list is merely illustrative and that multimedia files of types other than the ones listed can be associated with the objects. One skilled in the art will also appreciate that the ability to include multimedia files with the objects is particularly advantageous since the ability to transmit relevant, up-to-date information to an end user is greatly increased.  
         [0035]     In addition, multiple levels can be defined for a single item. Levels define various “loads” (reps, weights, time, pace, etc) and are used to target a given exercise, workout, or program at an individual of a specific ability.  
         [0036]     Categories are used to tag exercises, workouts and programs. Categorizations can be flat (Run Routes=Power Poles, Los Gatos Creek Trail, Bair Island Loop, etc.) or hierarchical (Muslce Groups=Upper Body-Chest, Upper Body-Biceps, Lower Body-Calves, etc.)  
         [0037]     In further regard to the aforementioned exercise concept, an exercise is composed of multiple sets. A set is composed of multiple activities. An activity is composed of multiple instructions and an instruction is composed of a number a unit and an optional string descriptor.  
         [0038]      FIG. 4  illustrates an exercise template  210 , an exercise definition  220  and an exercise instance  230 , in accordance with the present invention. The exercise template  210  is the most generic way of identifying an exercise, the exercise definition  220  is more specific and the exercise instance  230  is most specific.  
         [0039]      FIG. 5  illustrates examples of exercise templates ( 240  and  250 ), in accordance with the present invention. An exercise template defines the basic elements of a particular exercise. It allows an activity to be “described” without being “prescribed”. An exercise template describes the exercises, categorizes it, details how to perform it (using multimedia) and defines how sets are instructed and quantified without actually quantifying them. In addition, templates provide a structured description and facilitate the creation of definitions and instances.  
         [0040]     Example template  240  is entitled “Bench Press” and has a description  260 , a categorization  270 , multimedia file(s)  280  and a set structure  300 . In this particular example, the description  260  gives a general definition of a bench press, the categorization  270  defines what parts of the body are affected by the bench press, where it is performed and what sort of equipment to use. Multimedia file  280  lists a video MPG file and an audio WAV file—both of which contain instructional information on how to properly perform a bench press exercise. Set structure  300  lists the actual instructions on how to proceed with the bench press exercise.  
         [0041]     Example template  250  similarly includes a description  310 , a categorization  320 , multimedia file(s)  330  and a set structure  340  for the exercise entitled “Tempo Run”.  
         [0042]      FIGS. 6A and 6B  illustrate examples of exercise definitions ( 350  and  360 ), in accordance with the present invention. An exercise definition encapsulates all information required to prescribe an activity for execution. An exercise definition defines the description, categorization and how-to (multimedia) information found in an exercise template. In addition, it quantifies the activity at one or more levels and defines the data to be collected during its execution. Exercise definitions are usually created from an existing exercise template, however, that is not a requirement. Once created, there is no link between the exercise definition and its exercise template of origin. Exercise definitions define the exercise and are often the basis of exercise instances and will be subsequently explained (exercise instances either reference exercise definitions or copy data from them).  
         [0043]     Example definition  350  includes the same components as template  240  and additionally includes a collect segment  370  that specifies information to collect after the exercise is completed. The information indicated by bracket  380  includes information copied from template  240 . However, definitions are not tied to templates. As a result, any of the data within definition  350  can be modified without affecting template  240 . In this particular example, an additional WAV file was added.  
         [0044]     Quantification information is expanded in definition  350 . Regarding bracket  390 , quantification information (at one or more levels) is generated to fill in the set structure obtained from template  240 .  
         [0045]     Example definition  360  similarly includes the description  310 , categorization  320  and multimedia  330  copied from template  250 . Additionally, quantification  340  is expanded and a collect segment  400  is similarly included.  
         [0046]      FIG. 7A  illustrates an exercise instance  410  before execution, in accordance with the present invention. The exercise instance  410  represents an occurrence of an exercise (typically within the context of a workout instance) that is to be or has already been executed. Exercise instances are flexible in that they support containment of all exercise information within the instance or referencing of an externally defined exercise definition. An exercise instance  410  will usually be generated initially with a reference to an exercise definition  350  (plus a targeted level within that definition). This referencing enables automatic updating of all scheduled exercise instances when an exercise definition is somehow changed (for example, a new video file is added). More importantly, the definition reference plus level enables easy adjustment of exercise load (reps, weight, time, pace, etc) through increment/decrement of the largest definition level.  
         [0047]      FIG. 7B  illustrates an exercise instance  420  after execution, in accordance with the present invention. When an exercise instance  420  is executed, all descriptive information ( 260 ,  270 , and  280 ) and the target level quantification information  300  are copied from the referenced exercise definition  350  into the exercise instance  420 . The exercise definition reference is then removed and the exercise instance  420  permanently captures thereafter exactly what had been planned. This allows modification of the exercise definition without the possibility of corrupting exercise instances and vice versa. Exercise instances also store “actual” quantification data  430  that was collected during execution.  
         [0048]      FIG. 8  illustrates a generic workout definition  440  and generic workout instance  450 , in accordance with the present invention. As previously stated, a workout is a series of one or more exercises executed in succession over a continuous period of time on a given day. Additionally, a workout contains a description, an instruction and exercise information. Similar to the exercise concept, the workout definition  440  is more general and the workout instance  450  is more specific.  
         [0049]     The workout definition  440  encapsulates all information required to prescribe a workout for execution. A workout definition defines description, categorization and multimedia information. In addition, it also contains or references one or more exercise definitions and specifies what workout-level data should be collected during execution. The workout definition  440  may define multiple levels of execution. Each workout level can reference an arbitrary exercise definition at an arbitrary exercise level, regardless of the references made by other workout levels. For example, a higher level workout may include more exercises in addition to higher levels within those exercises than a lower level of the same workout. Workout definitions define the workout and are often the basis for creation of workout instances.  
         [0050]     The workout instance  450  represents an occurrence of a workout (either within the context of a program instance or not) that is to be or has already been executed. The workout instance  450  is usually generated from a workout definition (at a single workout level) when the workout is prescribed for execution and it contains essentially all information that the workout definition contains: description, categorization, multimedia information and exercise references. Whereas workout definitions reference exercise definitions, workout instances reference exercise instances. Additionally, workout instances contain a planned date of execution and any collected workout data (such as total workout time). In addition, each exercise instance referenced by it will also contain collected exercise data specific to it.  
         [0051]      FIGS. 9A and 9B  illustrate example implementations of a workout definition ( 460  and  470 ), in accordance with the present invention. Included in definition  480  is a description  480 , a categorization  490 , multimedia  500 , exercises  510  and a data collection segment  520 . As previously indicated, a workout definition is made up of one or more exercises ( 530 A,  530 B,  530 C and  530 D). The data collected in segment  520  encompasses workout level quantities generated by executing the workout, for example the duration of the workout.  
         [0052]     Similarly to workout definition  460 , definition  470  also includes a description  540 , a categorization  550 , multimedia  560 , quantification  570  and a data collection segment  580 . Additionally, workout definition  460  is made up of individual exercises  590 A,  590 B,  590 C and  590 D.  
         [0053]      FIGS. 10A and 10B  illustrate example implementations of a workout instance ( 610  and  620 ), in accordance with the present invention. In a similar fashion to definitions  460  and  470 , instances  610  and  620  have descriptions ( 480 ,  540 ), categorization ( 490 ,  550 ), multimedia ( 500 ,  560 ) and exercises ( 510 ,  570 ). As previously stated, workout instances reference exercise instances as indicated by exercise instances  630 A,  630 B,  630 C,  640 A,  640 B,  640 C and  640 D. Finally, instances  610  and  620  also store “actual” quantification data  635  and  650  that was collected during execution.  
         [0054]      FIG. 11  illustrates a generic program definition  660  and a generic program instance  670 , in accordance with the present invention. Similar to exercises and workouts, a definition is more general and an instance is more specific. The program definition  660  encapsulates all information required to prescribe a program for execution. Definition  660  typically defines description, categorization and multimedia information. In addition, it also contains or references one or more workout definitions.  
         [0055]     Program definition  660  will typically define multiple levels of execution. Each program level can reference an arbitrary workout definition at an arbitrary workout level, regardless of the references made by other program levels. For example, a higher level program may include more workouts in addition to higher levels with those workouts than a lower level of the same programs. In addition, program definitions define the program and are often the basis for creation of program instances.  
         [0056]     Program instance  670  represents an assigned program. In general, instance  670  is generated from a program definition (at a single program level) when the program is chosen for execution and it contains essentially all information that the program definition contains. This information includes description, categorization, multimedia information and workout references. Whereas program definitions reference workout definitions, program instances reference workout instances.  
         [0057]      FIGS. 12A and 12B  illustrate example implementations ( 680  and  690 ) of a program definition, in accordance with the present invention. Included are descriptions ( 700 ,  740 ), categorizations ( 710 ,  750 ), multimedia ( 720 ,  760 ), and quantifications ( 730 ,  770 ). As previously stated, program definitions can reference workout definitions as indicated by workout definitions  780 A,  780 B,  780 C,  780 D,  790 A,  790 B,  790 C and  790 D.  
         [0058]      FIGS. 13A and 13B  illustrate example implementations ( 800  and  810 ) of a program instance, in accordance with the present invention. Included in instances  800  and  810  are descriptions ( 700 ,  740 ), categorizations ( 710 ,  750 ) and multimedia ( 720 ,  760 ). Also included are lists of workouts ( 820 ,  830 ) that reference workout instances ( 610 ,  612 ,  614 ,  616 ,  620 ,  622 ,  624  and  626 ) that in turn reference exercise instances  630  and  640 .  
         [0059]      FIG. 14  illustrates an example implementation  835  of an exercise library  840 , in accordance with the present invention. Library  840  contains exercise definitions ( 850 ,  860 ,  870 ,  880  and  890 ) and optionally an exercise template  900 . In practice, a user can browse the exercise library  840  when looking for an exercise to execute or to add a workout. Some of the various choices a user can make includes select an exercise template  900  for execution  910 , select an exercise definition  850  for execution at a level X (where ‘X’ is a number)  920  and select an exercise definition  870  for inclusion in a workout at a level X  930  wherein a workout definition references an exercise definition. Also included is a select exercise definition  890  for inclusion in executing workout at level X  940  wherein a workout instance references/contains an exercise instance.  
         [0060]      FIG. 15  illustrates an example implementation  935  of a workout library  945 , in accordance with the present invention. Library  945  contains workout definitions ( 950 ,  960 ,  970 ,  980 ,  990  and  1000 ), each containing levels of prescription. Users can browse the workout library  945  when looking for a workout to execute or to add a program. Some example actions that can be taken include selecting workout definition  960  for execution at a level X  1010  and select workout definition  980  for execution at a level X  1020  where a program definition references a workout definition. Another action that can be done is select workout definition  1000  for inclusion in a selected program at a level X wherein a program instance references/obtains a workout instance.  
         [0061]      FIG. 16  illustrates an example implementation  1040  of a program library  1050 , in accordance with the present invention. Program library  1050  contains multiple levels of prescription/program ( 1060 ,  1070 ,  1080  and  1090 ). Users browse the library  1050  when looking for a program ( 1060 ,  1070 ,  1080  and  1090 ) to execute. For example, action  1100  selects program  1070  for execution at a level X.  
         [0062]      FIG. 17  is a flowchart illustrating a communication method  1110  for an interactive device, in accordance with the present invention. After a start operation  1120 , an XML formatted data transfer is initiated from an interactive device framework of an interactive device at operation  1130 . At operation  1140 , the XML formatted data is received at a data conduit coupled to one end of the interactive device. The XML formatted data is then transferred over the data conduit, at operation  1150 , and is received at an Internet framework coupled to a second end of the data conduit, at operation  1160 . The method then ends at operation  1170 .  
         [0063]     An advantage of the present invention is that data collected via a portable device can be used in other applications for more meaningful purposes. In addition, the data structure of the present invention allows for multimedia files to be appended to object that results in a rich user experience.  
         [0064]     While this invention has been described in terms of certain preferred embodiments, it will be appreciated by those skilled in the art that certain modifications, permutations and equivalents thereof are within the inventive scope of the present invention. It is therefore intended that the following appended claims include all such modifications, permutations and equivalents as fall within the true spirit and scope of the present invention.