PATENT DOCUMENT

Publication Number: US-8081930-B2
Application Number: US-39720109-A
Country: US
Kind Code: B2

Title: Trace functionality in a mobile device

Abstract:
Systems and methods are provided for tracing parameters indicative of performance of a mobile device that is not tethered to a host computer. The mobile device is instructed to monitor a performance characteristic when the mobile device is not tethered to the host computer. The instructions may be to trace the characteristic at a certain point, for a span in the future, under certain conditions, or at all times. When the mobile device is later tethered to the host computer, the traced parameter data is transferred to the host computer. Applications that decrease performance, as indicated by the traced parameters, may be debugged or optimized. The behavior of the mobile device before, during, and after tethering to the host computer or to a second device may be observed. The performance of a plurality of untethered mobile devices may also be traced, transferred, and compared.

Claims:
1. A method comprising:
 monitoring, with a monitoring application on a host electronic device, a parameter associated with execution of an application on a mobile electronic device, the application having previously been transferred to the mobile electronic device from the host electronic device; 
 instructing the mobile electronic device to monitor the parameter when the mobile electronic device is not tethered to the host electronic device; 
 monitoring the parameter during execution of the application while the mobile device is not tethered to the host electronic device; 
 synchronizing, automatically in response to tethering the mobile electronic device with the host electronic device, data corresponding to monitoring the parameter while the mobile device was not tethered to the host electronic device with data corresponding to monitoring the parameter while tethered to the host electronic device; 
 graphically presenting, in human-readable format, the synchronized data. 
 
     
     
       2. The method of  claim 1  wherein the parameter comprises power usage of the mobile electronic device. 
     
     
       3. The method of  claim 1  wherein the parameter comprises at least one of: processor load, system memory load and graphics load. 
     
     
       4. The method of  claim 1  wherein the parameter comprises at least one of: local area network packets sent/received, cellular network packets sent/received and network detection. 
     
     
       5. The method of  claim 1  wherein instructing the mobile electronic device to monitor the parameter when the mobile electronic device is not tethered to the host electronic device comprises providing a trace instruction to the mobile electronic device to indicate one or more conditions in response to which monitoring will begin. 
     
     
       6. The method of  claim 1  wherein the tether between the host electronic device and the mobile electronic device comprises a wired connection. 
     
     
       7. The method of  claim 6  wherein the wired connection comprises a Universal Serial Bus (USB) compliant connection. 
     
     
       8. The method of  claim 1  wherein the tether between the host electronic device and the mobile electronic device comprises a wireless connection. 
     
     
       9. The method of  claim 8  wherein the wireless connection comprises a Bluetooth compliant wireless connection. 
     
     
       10. The method of  claim 1  wherein the graphically presented data comprises a line chart and or a bar chart. 
     
     
       11. An apparatus comprising:
 means for monitoring, with a monitoring application on a host electronic device, a parameter associated with execution of an application on a mobile electronic device, the application having previously been transferred to the mobile electronic device from the host electronic device; 
 means for instructing the mobile electronic device to monitor the parameter when the mobile electronic device is not tethered to the host electronic device; 
 means for monitoring the parameter during execution of the application while the mobile device is not tethered to the host electronic device; 
 means for synchronizing, automatically in response to tethering the mobile electronic device with the host electronic device, data corresponding to monitoring the parameter while the mobile device was not tethered to the host electronic device with data corresponding to monitoring the parameter while tethered to the host electronic device; 
 means for graphically presenting, in human-readable format, the synchronized data. 
 
     
     
       12. The apparatus of  claim 11  wherein the parameter comprises power usage of the mobile electronic device. 
     
     
       13. The apparatus of  claim 11  wherein the parameter comprises at least one of: processor load, system memory load and graphics load. 
     
     
       14. The apparatus of  claim 11  wherein the parameter comprises at least one of: local area network packets sent/received, cellular network packets sent/received and network detection. 
     
     
       15. An article comprising a computer-readable medium having instructions that, when executed, cause one or more processors to:
 monitor, with a monitoring application on a host electronic device, a parameter associated with execution of an application on a mobile electronic device when the mobile electronic device is tethered to the host electronic device, the application having previously been transferred to the mobile electronic device from the host electronic device; 
 transmit instructions to the mobile electronic device to cause the mobile electronic device to monitor the parameter when the mobile electronic device is not tethered to the host electronic device; 
 synchronize, automatically in response to tethering the mobile electronic device with the host electronic device, data corresponding to monitoring the parameter while the mobile device was not tethered to the host electronic device with data corresponding to monitoring the parameter while tethered to the host electronic device; 
 graphically present, in human-readable format, the synchronized data. 
 
     
     
       16. The article of  claim 15  wherein the parameter comprises power usage of the mobile electronic device. 
     
     
       17. The article of  claim 15  wherein the parameter comprises at least one of: processor load, system memory load and graphics load. 
     
     
       18. The article of  claim 15  wherein the parameter comprises at least one of: local area network packets sent/received, cellular network packets sent/received and network detection. 
     
     
       19. The article of  claim 15  wherein instructing the mobile electronic device to monitor the parameter when the mobile electronic device is not tethered to the host electronic device comprises providing a trace instruction to the mobile electronic device to indicate one or more conditions in response to which monitoring will begin. 
     
     
       20. An article comprising a computer-readable medium having instructions that, when executed, cause one or more processors to:
 receive an application from a host electronic device; 
 provide data to a monitoring application on the host electronic device corresponding to a parameter associated with execution of the application on a mobile electronic device when the mobile electronic device is tethered to the host electronic device; 
 receive an instruction to cause the mobile electronic device to monitor the parameter when the mobile electronic device is not tethered to the host electronic device; 
 monitor the parameter during execution of the application while the mobile device is not tethered to the host electronic device; 
 transmit, automatically in response to tethering the mobile electronic device with the host electronic device, data corresponding to monitoring the parameter while the mobile device was not tethered to the host electronic device. 
 
     
     
       21. The article of  claim 20  wherein the parameter comprises power usage of the mobile electronic device. 
     
     
       22. The article of  claim 20  wherein the parameter comprises at least one of: processor load, system memory load and graphics load. 
     
     
       23. The article of  claim 20  wherein the parameter comprises at least one of: local area network packets sent/received, cellular network packets sent/received and network detection. 
     
     
       24. The article of  claim 20  wherein instructing the mobile electronic device to monitor the parameter when the mobile electronic device is not tethered to the host electronic device comprises providing a trace instruction to the mobile electronic device to indicate one or more conditions in response to which monitoring will begin.

Description:
This U.S. patent application claims priority to U.S. Provisional Patent Application No. 61/033,749, entitled, “HOST-MOBILE TRACE SYNCHRONIZATION AND COMPARISON” filed Mar. 4, 2008. 
    
    
     BACKGROUND 
     1. Field 
     The present invention generally relates to observing operation of a mobile device, and, more particularly, to testing the response of a mobile device to being linked to and unlinked from another device. 
     2. Description of Related Technology 
     Modern mobile devices such as media players and mobile phones utilize software in their operation. Errors or a lack of optimization in the software can cause negative device performance, for example causing the device to perform poorly, lock up, shut down, consume excess energy, or overheat. Software for mobile devices is generally developed separately from the mobile device itself, for example in integrated development environments that can be linked to the mobile device. Software can be loaded onto mobile devices prior to purchase by an end user. Such software can generally be debugged by professional developers prior to release, but end users lack effective tools for debugging software that they might later develop for the mobile device. 
     End user software developers typically run an integrated development environment on a development computer. The development computer can be linked to the mobile device such that applications can be transferred between the development computer and the mobile device. Applications can only be modified on the development computer, but applications can only be executed on the mobile device. The development computer may also collect real-time information about the device through the link. Thus, end users attempting to debug an application normally operate the mobile device, for example by interacting with a user interface (UI), while collecting information on the development computer. Upon encountering an error in the application, the user can look at the development computer to see whether the information is indicative of the problem. However, information about the mobile device is only gathered while the mobile device is linked to the development computer, such that the behavior of a mobile device in a normal operating state unlinked to a computer is unknown. Thus, development of applications for mobile devices can be difficult due to the complexity of various scenarios. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       These and other features, aspects, and advantages of the invention disclosed herein are described below with reference to the drawings of certain embodiments, which are intended to illustrate and not to limit the invention. 
         FIG. 1  illustrates an example embodiment of a system for interacting with a mobile device. 
         FIG. 2  illustrates an example embodiment of a system for synchronizing information collected from a mobile device. 
         FIG. 3  illustrates an example embodiment of a method of instructing an untethered mobile device to trace information. 
         FIG. 4  illustrates an example embodiment of a method of tracing information on an untethered mobile device. 
         FIG. 5  illustrates an example embodiment of a method of correlating untethered mobile device trace information to tethered mobile device and host computer information. 
         FIG. 6  illustrates an example embodiment of a method of tracing information about tethering and/or untethering of a mobile device. 
         FIG. 7  illustrates an example embodiment of a method of comparing traced information about a plurality of mobile devices. 
         FIG. 8A  illustrates an example embodiment of a mobile device. 
         FIG. 8B  illustrates an example embodiment of a configurable top-level graphical user interface of a mobile device. 
         FIG. 9  is a block diagram of an example implementation of a mobile device. 
     
    
    
     DETAILED DESCRIPTION 
     Systems and methods are provided for tracing parameters indicative of performance of a mobile device that is not tethered to a host computer and for tracing parameters indicative of performance of a mobile device upon tethering and untethering to a host computer or another device. In certain embodiments, the mobile device may be instructed to create a message indicative of a performance characteristic when the mobile device is not tethered to the host computer. The instructions may be to trace the characteristic at a certain point, for a span in the future, under certain conditions, or at all times. Data of the traced characteristic may be stored in the memory of the mobile device. When the mobile device is later tethered to the host computer, the traced parameter information may be transferred to the host computer, where the information may be analyzed. Applications that decrease performance of the mobile device, as indicated by the traced parameters, may thereby be debugged or optimized. In some embodiments, the behavior of the mobile device before, during, and after tethering to the host computer or to a second device may be observed. The performance of a plurality of untethered mobile devices may also be traced, transferred, and compared. 
       FIG. 1  illustrates host computer  100  that may be linked to mobile device  150  via tether, as indicated by the dashed arrows. As an example and without limitation, mobile device  150  may be an iPhone™, available from Apple, Inc. of Cupertino, Calif. In some embodiments, tether includes a physical wire such as a universal serial bus (USB). In some embodiments, tether includes a wireless connection such as a local area network or Bluetooth®. Host computer  100  may be executing or “running” an operating system. The operating system may be a platform for executing applications such as monitoring application  102 . As an example and without limitation, monitoring application  102  may be Instruments, also available from Apple, Inc. Monitoring application  102  may include toolbar  106 , graphical chart area  108 , detailed view area  110 , and option selection area  112 . Additional, fewer, and rearranged areas are also possible. In some embodiments, a parameter from option selection area  112  may be selected for monitoring, for example by dragging and dropping the parameter into graphical chart area  108 . Option selection area  112  may include a list of monitorable parameters of host computer  100  and mobile device  150 . The parameters available in option selection area  112  may change depending on what kind of mobile device  150  is linked to host computer  100 , for example based on a tethering signature of mobile device  150 . 
     Monitoring application  102  may be configured to collect information regarding parameters of mobile device  150 . For example and without limitation, parameters that can be monitored include: load on a central processing unit (CPU), load on system memory, load on a graphics card, drive access frequency, drive access time, a log of searches, local area network packets sent and/or received, cellular network packets sent and/or received, network detection, graphics throughput, memory leakage, and power usage. The data collected may also include information about the applications being executed on mobile device  150 , including which specific program instructions were being executed. Monitoring application  102  is further configured to collect information regarding parameters of host computer  100 . Illustrated monitoring application  102  displays monitored parameters of mobile device  150  in graph  122  and monitored parameters of host computer  100  in graph  124 , although other parameters may also be being monitored but not displayed. Upon operation of mobile device  150 , the parameters of mobile device  150  monitored by the monitoring application  102  may change, foe example resulting in data that may be used to construct a line graph such as depicted in graph  122 . Likewise, while tethered to mobile device  150 , the parameters of the host computer  100  may change, resulting in data that may be used to construct a line graph such as depicted in graph  124 . Graphs  122 ,  124  can be depicted in any suitable format (e.g., line chart, bar chart, integrated line chart, x-y plot, etc.), and the format may be changed within monitoring application  102 . Upon untethering of mobile device  150  from host computer  100 , monitoring application  102  can continue to monitor the parameters of host computer  100 , but is not linked to mobile device  150  and therefore cannot monitor the parameters of mobile device  150 . In graphical chart area  108  illustrated in  FIG. 1 , mobile device  150  was untethered, as indicated by the left dotted line and the lack of data thereafter in graph  122 , and was retethered, as indicated by the right dotted line and the resumption of data thereafter in graph  122 . Graphical chart area  108  also may depict a lack of data for host computer  100  while mobile device  150  was untethered, for example because there may be limited interest in the behavior of host computer  100  without being tethered to mobile device  150 , although the data in graph  124  could also be continuous. 
     Certain embodiments of the present invention permit monitoring of parameters of mobile device  150  when mobile device  150  is not tethered to host computer  100 . Parameters to be collected are coupled to trace instructions. In some embodiments, the trace instructions are selected from option selection area  112 . For example and without limitation, the trace instruction can optionally be: to begin tracing a parameter at a certain time (e.g., 6:00 PM on Mar. 1, 2008); to begin tracing a parameter upon a specified event (e.g., executing or opening a particular program); to stop tracing a parameter at a certain time (e.g., 6:30 PM on Mar. 1, 2008); to stop tracing a parameter after a certain duration (e.g., 30 minutes); to stop tracing a parameter at a certain time (e.g., 6:30 PM on Mar. 1, 2008); to stop tracing a parameter upon a specified event (e.g., stopping executing or closing a particular program); and to stop tracing a parameter after a certain amount of data has been collected (e.g., after memory  152  is full, after 50 Megabytes (MB)). For another example, the trace instruction can be to continuously trace a parameter. In certain such embodiments, the continuous trace may be limited to only hold the most recent amount (e.g., 50 MB) or the most recent duration (e.g., 30 minutes) worth of data. Combinations are also possible, for example continuously collecting information and collecting information at certain times and/or upon occurrence of certain events. One trace instruction can apply to one or a plurality of parameters, or may apply to all parameters. Additionally, multiple trace instructions can apply to one parameter. Referring again to  FIG. 1 , mobile device  150  may include memory  152  that is configured to store trace data. Accordingly, the amount of trace data that may be collected is only limited by the quantity of available storage. 
     In some embodiments, monitoring application  102  may include a utility or tool for instructing mobile device  150  to trace a parameter when it is not tethered to host computer  100 . For example, illustrated toolbar  106  may include icon  114  configured to upload such instructions to mobile device  150 . As an example, engaging icon  114  may include sending a DTrace message to mobile device  150 . As another example, engaging icon  114  may include sending a Unix kernel such as “top” to mobile device  150 . 
     When mobile device  150  is later tethered to host computer  100 , trace data may be transferred from memory  152  of mobile device  150  to host computer  100 . In some embodiments, the transfer may occur when monitoring application  102  is being executed. In such embodiments, monitoring application  102  may be being executed prior to tethering mobile device  150  to host computer  100 . In certain embodiments, transfer may be automatic. In certain embodiments, transfer may be initiated by a user of host computer  100 , for example by operation of an icon in toolbar area  106 . In some embodiments, trace information man be transferred to host computer  100  without tethering mobile device  150  to host computer  100 . For example, trace data may be uploaded to a server, for example over a cellular network, where it may be downloaded to host computer  100  for use by monitoring application  102 . In certain such embodiments, periodically uploading trace data to the server and subsequently removing trace data from memory  152  of mobile device  150  can reduce the burden on memory  152  of mobile device  150  or can allow further tracing. 
       FIG. 2  illustrates an example embodiment of graphical chart area  108  of monitoring application  102 . As described above, monitoring application  102  may be configured to trace information when mobile device  150  is tethered to host computer  100 . Data may be collected relatively continuously, as indicated by lines  123 ,  125  in graphs  122 ,  124 , respectively. Portion  202  of graphs  122 ,  124  may be during an initial tethering duration or portion thereof, portion  204  of graphs  122 ,  124  may be during a subsequent untethering duration, and portion  206  of graphs  122 ,  124  may be during a subsequent tethering duration. In the illustrated embodiment, the instruction from monitoring application  102  may have been to continuously trace a parameter, but to only hold the most recent duration worth of data in memory  152 . Accordingly, upon tethering of mobile device  150  to host computer  100 , trace data may be transferred from memory  152  to host computer  100 . Monitoring application  102  then may use information about the parameter to synchronize trace data with previously and/or subsequently collected tethered data, as indicated by dashed line  205  in portion  204 . Alternatively, transferred trace data may be analyzed without being synchronized to any tethered data. 
     In some embodiments, trace data may be used to identify problems occurring during the trace duration. For example, peaks in CPU load may indicate that launching a certain application causes mobile device  150  to run slowly or to overheat. A developer may correlate the peaks with specific events occurring during the launch process to debug or optimize those portions of the application. Such methods may be useful for applications that behave differently when mobile device  150  is not tethered to host computer  100 . Such methods may also be useful for observing the behavior of mobile device  150  when it is tethered to other devices and for comparing performance of a plurality of mobile devices  150 , as described below. 
     In embodiments in which (1) monitoring application  102  begins to monitor parameters of mobile device  150  and host computer  100  upon tethering and (2) trace data includes information about mobile device  150  immediately before tethering, reactions of both mobile device  150  and host computer  100  to tethering can be observed, as depicted in  FIG. 2 . In embodiments in which (1) monitoring application  102  begins to monitor parameters of mobile device  150  and host computer  100  until untethering and (2) trace data includes information about mobile device  150  immediately after untethering, reactions of both mobile device  150  and host computer  100  to untethering can be observed. These observations may be useful for mobile devices  150  that are frequently tethered, for example to optimize data transfer and data synchronization protocols. 
       FIG. 3  illustrates an example embodiment of a method of instructing an untethered mobile device  150  to trace information. The method begins at box  302 , labeled “Start.” In box  304 , mobile device  150  may be tethered to host computer  100 . Host computer  100  may be executing monitoring application  102  described above. Monitoring application  102  may instruct mobile device  150  to trace parameters while mobile device  150  is not tethered to host computer  100 , as indicated in box  306 . For example, referring to  FIG. 1 , icon  114  in toolbar area  106  may be engaged such that instructions for when and how to monitor particular parameters of mobile device  150  are uploaded to mobile device  150  for later execution. Once mobile device  150  has been instructed, mobile device  150  may be untethered from host computer  100  in box  308 . At that point, the method of  FIG. 3  may end, as indicated by box  310 , labeled “End.” 
       FIG. 4  illustrates an example embodiment of a method of tracing information on an untethered mobile device  150 . The method begins at box  402 , labeled “Start.” In box  404 , mobile device  150  may be operated while not tethered to host computer  100 . As an example of operating mobile device  150 , in an embodiment in which mobile device  150  includes a phone, the phone may be used to place calls, take pictures, play music via a media player, access a data network, etc. During operation of mobile device  150 , the uploaded instruction may check to see whether tracing of a parameter should begin, as indicated by decision box  406 . If the instruction is not met, mobile device  150  may continue normal operation at box  404 . If the instruction is met, tracing of the parameter of mobile device  150  may begin, as indicated by box  408 . As described above, initiating tracing in decision box  406  may be at a certain time, upon the occurrence of a certain event, or may be continuous such that the instruction may be met immediately upon untethering mobile device  150  from host computer  100 . Referring again to box  408 , operation of untethered mobile device  150  may proceed during tracing, for example because tracing may be intended to help a developer observe the behavior of an operating untethered mobile device  150 . During continued operation of mobile device  150  during tracing, the uploaded instruction checks to see whether tracing of a parameter should stop, as indicated by decision box  410 . If the instruction is not met, mobile device  150  may continue normal operation and tracing at box  408 . If the instruction is met, tracing of the parameter of mobile device  150  may stop and the process of  FIG. 4  may end, as indicated by box  412 , labeled “End.” As indicated above, stopping tracing the parameter of mobile device  150  may include stopping at a certain time, upon the occurrence of a certain event, after a certain duration of tracing time, after a certain amount of memory  152  has been used by the trace data, upon a tethering event, etc. 
       FIG. 5  illustrates an example embodiment of a method of correlating trace information from an untethered mobile device  150  to information from a tethered mobile device  150  and host computer  100 . The process begins at box  502 , labeled “Start.” In box  504 , mobile device  150  may be tethered to host computer  100 . In box  506 , monitoring application  102  on host computer  100  may trace parameters of mobile device  150  and host computer  100 . For example, as depicted in  FIG. 2 , monitoring application  102  may track a parameter of mobile device  150  in graph  122  and may track a parameter of host computer  100  in graph  124 . In box  508  of  FIG. 5 , mobile device  150  may be untethered from host computer  100 . Referring again to  FIG. 2 , the event of untethering mobile device  150  may end portion  202  at left vertical dotted line. After being untethered from host computer  100 , mobile device  150  may collect information about the instructed parameters, as described above and depicted in box  510 . Referring again to  FIG. 2 , collection of trace data may occur some time after untethering, as indicated by the initiation of data at shorter middle vertical dotted line in portion  204 . However, data may also be collected or traced in mobile device  150  immediately upon untethering of mobile device  150  from host computer  100 . In box  512 , mobile device  150  may again be tethered to host computer  100 . In some embodiments, monitoring application  102  may begin to trace parameters of mobile device  150  and host computer  100  upon tethering. Referring again to  FIG. 2 , monitoring application  102  may have begun to collect information about mobile device  150  and host computer  100  immediately upon tethering in portion  206 , as indicated by the initiation and continuation of data at right vertical dotted line in portion  206 . Trace data collected in box  510  may then be transferred to host computer  100  in box  514 . For example, transfer may be automatic upon tethering of mobile device  150  to host computer  100 , or may be user initiated. Monitoring application  102  may be configured to synchronize transferred trace data to previously collected data, as indicated by box  516 . Referring again to  FIG. 2 , monitoring application  102  may be configured to position collected data in box  510  and transferred in box  514  into portion  204  of graph  122  to create line  205 . The method of  FIG. 5  may end at box  518 , labeled “End.” 
       FIG. 6  illustrates an example embodiment of a method of tracing information about tethering and/or untethering of mobile device  150 . The method begins at box  602 , labeled “Start.” In box  604 , an untethered mobile device  150  may trace certain parameters. During tracing, mobile device  150  may be tethered to an other device, as indicated in box  606 . The other device may include a mobile device, for example being of the same kind as mobile device  150 , an automobile kit, a different kind of mobile device such as a phone versus a non-phone media player, a different host computer, etc. Tethering mobile device  150  to an other device may be via a cable, a network, and the like. Mobile device  150  may then be untethered from the other device in box  608 . During at least a portion of tethering of mobile device  150  to an other device in box  606  and/or during untethering of mobile device  150  from an other device in box  608 , parameters of mobile device  150  may have been being traced. In box  610 , mobile device  150  may be tethered to host computer  100 , whereupon trace information may be transferred to host computer  100  in box  612  and synchronized in box  614 , as described above. The process of  FIG. 6  may end at box  616 , labeled “End.” In some embodiments, this method may allow a developer to observe the behavior of mobile device  150  in an environment different from mobile device  150  being tethered to host computer  100 . For example, in some embodiments, it may not be possible for mobile device  150  to be tethered to both host computer  100  and an other device, such that previously the behavior of mobile device  150  upon being tethered to an other device was unknown. 
       FIG. 7  illustrates an example embodiment of a method of comparing traced information from a plurality of mobile devices  150 . The method begins at box  702 , labeled “Start.” In box  704 , parameters of a first untethered mobile device  150  may be traced. First mobile device  150  may then be tethered to host computer  100  in box  706 . Although not indicated in  FIG. 7 , tracing of parameters in mobile device  150  may be stopped prior to tethering, as described above. Trace information from mobile device  150  may be transferred to host computer  100  in box  708 . Parameters may also be traced in a second untethered mobile device  150 , as indicated by box  710 . Second mobile device  150  may then be tethered to host computer  100  in box  712 , whereupon trace information from second mobile device  150  may be transferred to host computer  100  in box  714 . Operation and tethering of first and second mobile devices  150  may be at least partially in parallel, as depicted in  FIG. 7 , or may be in at least partially in series. In box  716 , trace information from first mobile device  150  and trace information from second mobile device  150  may be synchronized. The process of  FIG. 7  may end at box  718 , labeled “End.” 
     A comparison between performance of first mobile device  150  and second mobile device  150  may be made, for example, where trace information of first mobile device  150  and second mobile device  150  overlap. For example, if each trace begins upon launching of a certain application and ends upon closing of the certain application, performance of the certain application on each of first and second mobile devices  150  may be compared. Moreover, data such as other applications that may have been executed on either of first and second mobile devices  150  may be relevant to the comparison and thus also traced as part of the parameter information. First mobile device  150  and second mobile device  150  may be the same kind of mobile device or may be different kinds of mobile devices. In embodiments in which first mobile device is a different kind of mobile device than second mobile device, operation of a certain application on different types of mobile devices may be compared. For example, knowledge of how an application runs on a phone versus how an application runs on a non-phone media player may be useful. 
     Combinations of methods described above are also possible. For example, first mobile device and second mobile device may be tethered together, as described in the method of  FIG. 6 , which discusses the tethering of one mobile device to an other mobile device, and the performance of each mobile device upon that tethering and/or untethering may be compared using the method described in  FIG. 7 . A wide variety of possibilities are available based on the selection of which parameters to monitor and when to monitor such parameters. In some applications, parameters may be time stamped, such as by using an internal clock, a network clock, or some other timing device. In some embodiments, trace data may not be time stamped, but monitoring application  102  may determine when the event likely occurred based on the instruction uploaded to mobile device  150 . For example, if host computer  100  instructed mobile device  150  to start monitoring the parameter data at 6:00 PM on Mar. 1, 2008, then no time stamp may be needed as monitoring application  102  may assume that the trace properly initiated. However, adding a time stamp to check for the accuracy of the initiation of the trace is also possible. 
       FIG. 8A  illustrates an example mobile device  800 . Mobile device  800  can be, for example, a handheld computer, a personal digital assistant, a cellular telephone, a network appliance, a camera, a smart phone, an enhanced general packet radio service (EGPRS) mobile phone, a network base station, a media player, a navigation device, an email device, a game console, or a combination of any two or more of these data processing devices or other data processing devices. 
     Mobile Device Overview 
     In some implementations, mobile device  800  includes touch-sensitive display  802 . Touch-sensitive display  802  can be implemented with liquid crystal display (LCD) technology, light emitting polymer display (LPD) technology, or some other display technology. Touch-sensitive display  802  can be sensitive to haptic and/or tactile contact with a user. 
     In some implementations, touch-sensitive display  802  can include multi-touch-sensitive display  802 . Multi-touch-sensitive display  802  can, for example, process multiple simultaneous touch points, including processing data related to the pressure, degree, and/or position of each touch point. Such processing may facilitate gestures and interactions with multiple fingers, chording, and other interactions. Other touch-sensitive display technologies can also be used (e.g., a display in which contact is made using a stylus or other pointing device). Some examples of multi-touch-sensitive display technology are described in U.S. Pat. Nos. 6,323,846, 6,570,557, 6,677,932, and 6,888,536, each of which is incorporated by reference herein in its entirety. 
     In some implementations, mobile device  800  can display one or more graphical user interfaces on touch-sensitive display  802  for providing the user access to various system objects and for conveying information to the user. In some implementations, the graphical user interface can include one or more display objects  804 ,  806 . In the example shown, display objects  804 ,  806  are graphic representations of system objects. Some examples of system objects include device functions, applications, windows, files, alerts, events, or other identifiable system objects. 
     Example Mobile Device Functionality 
     In some implementations, mobile device  800  can implement multiple device functionalities, such as a telephony device, as indicated by Phone object  810 ; an e-mail device, as indicated by Mail object  812 ; a map device, as indicated by Maps object  814 ; a Wi-Fi base station device (not shown); and a network video transmission and display device, as indicated by Web Video object  816 . In some implementations, particular display objects  804  (e.g., Phone object  810 , Mail object  812 , Maps object  814 , and Web Video object  816 ) can be displayed in menu bar  818 . In some implementations, device functionalities can be accessed from a top-level graphical user interface, such as the graphical user interface illustrated in  FIG. 8A . Touching one of objects  810 ,  812 ,  814 , or  816  can, for example, invoke a corresponding functionality. 
     In some implementations, mobile device  800  can implement a network distribution functionality. For example, the functionality can enable the user to take mobile device  800  and provide access to its associated network while traveling. In particular, mobile device  800  can extend Internet access (e.g., Wi-Fi) to other wireless devices in the vicinity. For example, mobile device  800  can be configured as a base station for one or more devices. As such, mobile device  800  can grant or deny network access to other wireless devices. 
     In some implementations, upon invocation of a device functionality, the graphical user interface of mobile device  800  can change, or can be augmented or replaced with another user interface or user interface elements to facilitate user access to particular functions associated with the corresponding device functionality. For example, in response to a user touching Phone object  810 , the graphical user interface of touch-sensitive display  802  may present display objects related to various phone functions. Likewise, touching of Mail object  812  may cause the graphical user interface to present display objects related to various e-mail functions, touching Maps object  814  may cause the graphical user interface to present display objects related to various maps functions, and touching Web Video object  816  may cause the graphical user interface to present display objects related to various web video functions. 
     In some implementations, the top-level graphical user interface environment or state of  FIG. 8A  can be restored by pressing button  820  located near the bottom of mobile device  800 . In some implementations, each corresponding device functionality may have corresponding “home” display objects displayed on touch-sensitive display  802 , and the graphical user interface environment of  FIG. 8A  can be restored by pressing the “home” display object. 
     In some implementations, the top-level graphical user interface can include additional display objects  806 , such as short messaging service (SMS) object  830 , Calendar object  832 , Photos object  834 , Camera object  836 , Calculator object  838 , Stocks object  840 , Address Book object  842 , Media object  844 , Web object  846 , Video object  848 , Settings object  850 , and Notes object (not shown). Touching SMS display object  830  can, for example, invoke an SMS messaging environment and supporting functionality; likewise, each selection of display object  832 ,  834 ,  836 ,  838 ,  840 ,  842 ,  844 ,  846 ,  848 ,  850  can invoke a corresponding object environment and functionality. 
     Additional and/or different display objects can also be displayed in the graphical user interface of  FIG. 8A . For example, if mobile device  800  is functioning as a base station for other devices, one or more “connection” objects may appear in the graphical user interface to indicate the connection. In some implementations, display objects  806  can be configured by a user, e.g., a user may specify which display objects  806  are displayed, and/or may download additional applications or other software that provides other functionalities and corresponding display objects. 
     In some implementations, mobile device  800  can include one or more input/output (I/O) devices and/or sensor devices. For example, speaker  860  and microphone  862  can be included to facilitate voice-enabled functionalities, such as phone and voice mail functions. In some implementations, up/down button  884  for volume control of speaker  860  and microphone  862  can be included. Mobile device  800  can also include on/off button  882  for a ring indicator of incoming phone calls. In some implementations, loud speaker  864  can be included to facilitate hands-free voice functionalities, such as speaker phone functions. Audio jack  866  can also be included for use of headphones and/or a microphone. 
     In some implementations, proximity sensor  868  can be included to facilitate the detection of the user positioning mobile device  800  proximate to the user&#39;s ear and, in response, to disengage touch-sensitive display  802  to prevent accidental function invocations. In some implementations, touch-sensitive display  802  can be turned off to conserve additional power when mobile device  800  is proximate to the user&#39;s ear. 
     Other sensors can also be used. For example, in some implementations, ambient light sensor  870  can be utilized to facilitate adjusting brightness of touch-sensitive display  802 . In some implementations, accelerometer  872  can be utilized to detect movement of mobile device  800 , as indicated by directional arrow  874 . Accordingly, display objects and/or media can be presented according to a detected orientation (e.g., portrait or landscape). In some implementations, mobile device  800  may include circuitry and sensors for supporting a location determining capability, such as that provided by the global positioning system (GPS) or other positioning systems (e.g., systems using Wi-Fi access points, television signals, cellular grids, Uniform Resource Locators (URLs)). In some implementations, a positioning system (e.g., a GPS receiver) can be integrated into mobile device  800  or provided as a separate device that can be coupled to mobile device  800  through an interface (e.g., port device  890 ) to provide access to location-based services. 
     In some implementations, port device  890  (e.g., a Universal Serial Bus (USB) port, or a docking port, or some other wired port connection) can be included. Port device  890  can, for example, be utilized to establish a wired connection to other computing devices, such as other mobile devices  800 , network access devices, a personal computer, a printer, a display screen, or other processing devices capable of receiving and/or transmitting data. In some implementations, port device  890  allows mobile device  800  to synchronize with a host device using one or more protocols, such as, for example, the TCP/IP, HTTP, UDP and any other known protocol. 
     Mobile device  800  can also include camera lens and sensor  880 . In some implementations, camera lens and sensor  880  can be located on the back surface of mobile device  800 . The camera can capture still images and/or video. 
     Mobile device  800  can also include one or more wireless communication subsystems, such as 802.11b/g communication device  886 , and/or Bluetooth™ communication device  888 . Other communication protocols can also be supported, including other 802.x communication protocols (e.g., WiMax, Wi-Fi, 3G), code division multiple access (CDMA), global system for mobile communications (GSM), Enhanced Data GSM Environment (EDGE), etc. 
     Example Configurable Top-Level Graphical User Interface 
       FIG. 8B  illustrates another example of configurable top-level graphical user interface of mobile device  800 . Mobile device  800  can be configured to display a different set of display objects. 
     In some implementations, each of one or more system objects of mobile device  800  has a set of system object attributes associated with it; and one of the attributes determines whether a display object for the system object will be rendered in the top-level graphical user interface. This attribute can be set by the system automatically, or by a user through certain programs or system functionalities as described below.  FIG. 8B  shows an example of how Notes object  852  (not shown in  FIG. 8A ) is added to, and Web Video object  816  is removed from, the top graphical user interface of mobile device  800  (e.g., such as when the attributes of the Notes system object and the Web Video system object are modified). 
     Example Mobile Device Architecture 
       FIG. 9  is a block diagram  900  of an example implementation of a mobile device (e.g., mobile device  800 ). The mobile device can include memory interface  902 , one or more data processors, image processors and/or central processing units  904 , and peripherals interface  906 . Memory interface  902 , one or more processors  904  and/or peripherals interface  906  can be separate components or can be integrated in one or more integrated circuits. The various components in the mobile device can be coupled by one or more communication buses or signal lines. 
     Sensors, devices, and subsystems can be coupled to peripherals interface  906  to facilitate multiple functionalities. For example, motion sensor  910 , light sensor  912 , and proximity sensor  914  can be coupled to peripherals interface  906  to facilitate the orientation, lighting, and proximity functions described with respect to  FIG. 8A . Other sensors  916  can also be connected to peripherals interface  906 , such as a positioning system (e.g., GPS receiver), a temperature sensor, a biometric sensor, or other sensing device, to facilitate related functionalities. 
     Camera subsystem  920  and optical sensor  922  (e.g., a charged coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) optical sensor) can be utilized to facilitate camera functions, such as recording photographs and video clips. 
     Communication functions can be facilitated through one or more wireless communication subsystems  924 , which can include radio frequency receivers and transmitters and/or optical (e.g., infrared) receivers and transmitters. The specific design and implementation of communication subsystem  924  can depend on the communication network(s) over which the mobile device is intended to operate. For example, a mobile device can include communication subsystems  924  designed to operate over a GSM network, a GPRS network, an EDGE network, a Wi-Fi or WiMax network, and a Bluetooth™ network. In particular, wireless communication subsystems  924  may include hosting protocols such that the mobile device may be configured as a base station for other wireless devices. 
     Audio subsystem  926  can be coupled to speaker  928  and microphone  930  to facilitate voice-enabled functions, such as voice recognition, voice replication, digital recording, and telephony functions. 
     I/O subsystem  940  can include touch screen controller  942  and/or other input controller(s)  944 . Touch-screen controller  942  can be coupled to touch screen  946 . Touch screen  946  and touch screen controller  942  can, for example, detect contact and movement or break thereof using any of a plurality of touch sensitivity technologies, including but not limited to capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements for determining one or more points of contact with touch screen  946 . 
     Other input controller(s)  944  can be coupled to other input/control devices  948 , such as one or more buttons, rocker switches, thumb-wheel, infrared port, USB port, and/or a pointer device such as a stylus. The one or more buttons (not shown) can include an up/down button for volume control of speaker  928  and/or microphone  930 . 
     In one implementation, a pressing of the button for a first duration may disengage a lock of touch screen  946 , and a pressing of the button for a second duration that is longer than the first duration may turn power to the mobile device on or off. The user may be able to customize a functionality of one or more of the buttons. Touch screen  946  can, for example, also be used to implement virtual or soft buttons and/or a keyboard. 
     In some implementations, the mobile device can present recorded audio and/or video files, such as MP3, AAC, and MPEG files. In some implementations, the mobile device can include the functionality of an MP3 player, such as an iPod™. The mobile device may, therefore, include a 32-pin connector that is compatible with the iPod™. Other input/output and control devices can also be used. 
     Memory interface  902  can be coupled to memory  950 . Memory  950  can include high-speed random access memory and/or non-volatile memory, such as one or more magnetic disk storage devices, one or more optical storage devices, and/or flash memory (e.g., NAND, NOR). Memory  950  can store operating system  952 , such as Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks. Operating system  952  may include instructions for handling basic system services and for performing hardware dependent tasks. In some implementations, operating system  952  can be a kernel (e.g., UNIX kernel). 
     Memory  950  may also store communication instructions  954  to facilitate communicating with one or more additional devices, one or more computers and/or one or more servers. Memory  950  may include graphical user interface instructions  956  to facilitate graphic user interface processing; sensor processing instructions  958  to facilitate sensor-related processing and functions; phone instructions  960  to facilitate phone-related processes and functions; electronic messaging instructions  962  to facilitate electronic-messaging related processes and functions; web browsing instructions  964  to facilitate web browsing-related processes and functions; media processing instructions  966  to facilitate media processing-related processes and functions; GPS/Navigation instructions  968  to facilitate GPS and navigation-related processes and instructions; camera instructions  970  to facilitate camera-related processes and functions; and/or other software instructions  972  to facilitate other processes and functions (e.g., access control management functions). Memory  950  may also store other software instructions (not shown), such as web video instructions to facilitate web video-related processes and functions and/or web shopping instructions to facilitate web shopping-related processes and functions. In some implementations, media processing instructions  966  may be divided into audio processing instructions and video processing instructions, for example to facilitate audio processing-related processes and functions and video processing-related processes and functions, respectively. Activation record and International Mobile Equipment Identity (IMEI)  974  or similar hardware identifier can also be stored in memory  950 . 
     Although this invention has been disclosed in the context of certain preferred embodiments and examples, it will be understood by those skilled in the art that the present invention extends beyond the specifically disclosed embodiments to other alternative embodiments and/or uses of the invention and obvious modifications and equivalents thereof. In addition, while several variations of the invention have been shown and described in detail, other modifications, which are within the scope of this invention, will be readily apparent to those of skill in the art based upon this disclosure. It is also contemplated that various combinations or sub-combinations of the specific features and aspects of the embodiments may be made and still fall within the scope of the invention. It should be understood that various features and aspects of the disclosed embodiments can be combined with, or substituted for, one another in order to form varying modes of the disclosed invention. Thus, it is intended that the scope of the present invention herein disclosed should not be limited by the particular disclosed embodiments described above.

Metadata:
Filing Date: 20090303
Publication Date: 20111220
Grant Date: 20111220
Priority Date: 20080304
Inventors: LEWALLEN STEVE
Assignee: APPLE INC
CPC Classifications: [{"code": "G06F11/3466", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06F11/3466", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L67/1095", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04L67/1095", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04L43/045", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L43/045", "inventive": true, "first": false, "tree": "[]"}]
Family ID: 41054848