US20140129686A1 - Mobile computing device configured to filter and detect application profiles, a method of manufacturing the same and an external source for delivering hierarchical filtered application profiles to mobile computing devices - Google Patents

Mobile computing device configured to filter and detect application profiles, a method of manufacturing the same and an external source for delivering hierarchical filtered application profiles to mobile computing devices Download PDF

Info

Publication number
US20140129686A1
US20140129686A1 US13/894,869 US201313894869A US2014129686A1 US 20140129686 A1 US20140129686 A1 US 20140129686A1 US 201313894869 A US201313894869 A US 201313894869A US 2014129686 A1 US2014129686 A1 US 2014129686A1
Authority
US
United States
Prior art keywords
computing device
settings
mobile computing
profile settings
profile
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/894,869
Inventor
Nicholas Haemel
Cathy Donovan
David Chait
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Priority to US13/894,869 priority Critical patent/US20140129686A1/en
Assigned to NVIDIA CORPORATION reassignment NVIDIA CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHAIT, DAVID, DONOVAN, CATHY, HAEMEL, NICHOLAS
Publication of US20140129686A1 publication Critical patent/US20140129686A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Definitions

  • This application is directed, in general, to computing devices and, more specifically, to profile settings for different components of mobile computing devices.
  • Mobile telephones typically perform many functions in addition to providing voice communication.
  • Many mobile telephones, such as smart phones, and other mobile computing devices now also provide additional services including the ability to communicate by text, connect to the web, watch videos, make videos, take pictures, play games, etc.
  • the various computing devices use many types of applications to perform these different functions.
  • the disclosure provides a mobile computing device.
  • the mobile computing device includes: (1) a settings reservoir configured to store dynamic sets of profile settings and static set of profile settings for the computing device and (2) a profile generator configured to generate coalesced sets of profile settings for applications on the computing device based on the dynamic sets of profiles and the static set of profiles.
  • the disclosure provides a method of operating a mobile computing device.
  • the method includes: (1) receiving dynamic sets of profile settings based on system characteristics of the computing device, (2) determining a coalesced set of profile settings for the computing device based on the dynamic sets of profile settings and sets of static profile settings stored on the computing device and (3) selecting, for an application on the computing device, settings from a set of the coalesced sets of profile settings for components of the computing device.
  • the disclosure provides a method of configuring an apparatus to operate employing profile settings for components thereof that are tailored to particular applications on the apparatus and to characteristics of the components.
  • the method of manufacturing includes: (1) configuring the apparatus to store a set of application profiles based on system characteristics of the computing device, (2) configuring the apparatus to generate a coalesced set of application profiles by comparing the set of application profiles with a second set of application profiles from another source and (3) configuring the apparatus to deliver profile settings to components of the apparatus for an application when the application is launched, wherein the profile settings are from a set of the coalesced sets of profile settings.
  • the disclosure provides an external source for dynamic profile settings for mobile computing devices.
  • the external source includes: (1) a memory configured to store profile settings for applications that execute on mobile computing devices and (2) a processor configured to determine a dynamic set of profile settings for executing an application on a specific one of the mobile computing devices by hierarchically filtering the profile settings according to characteristics of the specific one.
  • FIG. 1 illustrates a diagram of an embodiment of a distribution system employed by a mobile computing device to receive dynamic sets of application profiles according to the principles of the disclosure
  • FIG. 2 illustrates a block diagram of an embodiment of a mobile computing device constructed according to the principles of the disclosure
  • FIG. 3 illustrates a flow chart of an embodiment of a method for operating a mobile computing device carried out according to the principles of the disclosure
  • FIG. 4 illustrates a flow diagram of an embodiment of a method of configuring an apparatus for operation carried out according to the principles of the disclosure.
  • Mobile computing devices have the ability to perform multiple services or functions under the direction of different applications loaded thereon.
  • An application is a computer program or programs designed for use by an end user.
  • an application includes both systems programs or software and end-user programs or software.
  • the settings for the various components of a mobile computing device can vary for the different applications. For example, one application may have different power requirements and perform optimally according to particular power management guidelines. Another application can ideally operate with particular settings for a display of the mobile computing device compared to other applications. Thus, the optimal settings or profile settings for the various components of a mobile computing device for different applications can change.
  • Profile settings as used herein are a group or set of states and/or values of parameters for the components or modules of a mobile computing device.
  • a component or module as used herein is a software library or module providing specific system functionality on the mobile computing device such as CPU governor strategy, OpenGL rendering, display composition, etc.
  • a mobile computing device is a computing device constructed specifically for a mobile architecture that enables portability.
  • a mobile computing device includes the mobile hardware and software that is configured to perform various functions including communicating over a network.
  • Mobile computing devices can be mobile telephones including smart phones, tablets, clamshells, game devices, etc., that include at least one processor and memory.
  • processors including smart phones, tablets, clamshells, game devices, etc.
  • processors include at least one processor and memory.
  • each of the mobile computing devices disclosed herein include other components that are typically included in such devices including a display, user interface, power supply, communications interface, etc.
  • the coalesced profile settings for an application are generated from dynamic sets of profile settings and at least one static set of profile settings.
  • the dynamic sets of profile settings are provided from a source that is external to the mobile computing device, i.e., an external source.
  • the external source can be a server that the mobile computing device connects to via, for example, a conventional connection that is wired, wireless or a combination thereof.
  • the external source provides a scalable solution to providing profile settings to mobile computing devices.
  • the dynamic sets of profile settings include sets of profile settings wherein each of the sets are specifically tailored for the characteristics of the components of the mobile computing device with respect to a particular application on the mobile computing device.
  • the dynamic sets of profile settings can include a set of profile settings for a particular game, a set of profile settings for a voice application, a set of profile settings for a texting application, a system application, etc., wherein each of the sets is tailored for the components or modules of the mobile computing device.
  • a set of the dynamic sets of profile settings correspond to the specific characteristics of the components of a mobile computing device for each application.
  • each set of the dynamic sets of profile settings can be for a particular application and directed to characteristics of a device including, for example, a specific manufacturer, a model, a carrier, an operating system, a version of an operating system, a chip type, a chip family or any combination thereof.
  • the dynamic sets of profile settings are hierarchically filtered application profiles that are filtered based on the characteristic data.
  • the external source can generate, store and deliver hierarchically filtered application profiles to mobile computing devices.
  • the external source is configured to use a hierarchical filtering approach to determine which profile settings to return to a mobile computing device.
  • the hierarchical categories for filtering the profile settings can range from general (e.g., operating system, chip family) to specific (e.g., device name, device manufacturer) characteristic data of the mobile computing device.
  • the external source is configured to store many profile settings associated with a mobile computing device and only select the correct profile setting to send to the mobile computing device. The correct profile setting is the most specific, hierarchically filtered profile setting for a particular mobile computing device.
  • game XYZ may have a general profile setting containing stereo settings stored in the database of the external source.
  • a device profile for a specific type of mobile computing device is stored on the external source that describes the stereo settings and power biases for the game XYZ.
  • the correct profile returned to the mobile computing device would be the device profile for the specific type of mobile computing device instead of the general profile for the game XYZ.
  • the hierarchical filtered application profiles define a set of system states (e.g., CPU/GPU governor biases, CPU caps, screen resolution, screen size, stereo settings, etc.) to be set on a mobile computing device for each desired application.
  • the values for a profile set can be determined experimentally or algorithmically and stored in a profile database on an external source (e.g., a server).
  • the external source is configured to hierarchically filter a database of profile settings based on the characteristic data from a mobile computing device to determine a dynamic set of profile settings to be returned to the mobile computing device.
  • the characteristic data can be provided to the external source via a query from the mobile computing device.
  • each mobile computing device can periodically (e.g., every forty eight hours) provide the characteristic data to the external source and receive any updates to its set of application profiles. Additionally, the external source can detect which mobile computing devices are older and control how often they query for new profile settings. Profile settings for older devices change less frequently and this mechanism provides a way to reduce traffic on mobile computing devices nearing end-of-life.
  • the external source provides profile settings that vary for different reasons such as different versions of the operating system, different chipsets, etc. Thus, multiple profile settings can be provided for a single application.
  • the static set of profile settings is stored on the mobile computing device. Unlike the dynamic sets of profile settings, the static set of profile settings do not change.
  • the static set of profile settings includes original equipment manufacturer (OEM) settings for components of the mobile computing device.
  • OEM original equipment manufacturer
  • multiple static sets of profile settings are stored and employed to generate the coalesced profile settings. In such embodiments, the discussion herein regarding a single static set of profile settings applies to the multiple static sets of profile settings.
  • the mobile computing device generates the coalesced profile settings by receiving and loading dynamic sets of profile settings.
  • the dynamic sets can be downloaded from a server over a communication network.
  • the mobile computing device also loads a static set of profile settings contained on the device and generates the coalesced sets of profile settings based on both the dynamic sets of profile settings and the static set of profile settings.
  • the mobile computing device is configured to replace any overlapping profile settings in the dynamic sets with settings from the static profile settings. This can be based on if the settings from the static set of profile settings have override capabilities. If both a static profile and dynamic profile exist for an application, the static set will be chosen.
  • the mobile computing device will limit to the static setting of 3.0 watts.
  • Settings do not always overlap between the two profile types. In this case the profile settings are used in the only profile type in which they exist. As such, settings from the static set of profile settings override settings from dynamic sets when a conflict exists. The OEM, therefore, can have final say on how components operate on their device. This creates a single set of profiles that persist on the mobile computing device referred to herein as the coalesced sets of profile settings.
  • a profile generator on the mobile computing device is used to generate the coalesced sets of profile settings.
  • any of the system modules of the mobile computing device such as OpenGL, Power management, 2D, etc., query a profile deliverer of the mobile computing device for the profile settings for that particular application.
  • the profile deliverer determines which set of the coalesced sets of profile settings are relevant for the application and deliver the appropriate settings from the set of coalesced sets of profile settings to correctly set up the systems of the mobile computing device to optimally execute the application.
  • the profile deliverer determines which set of the coalesced sets of profile settings are to be used when an application is launched, by examining the name of the application, the version of the application, a hash or checksum of the application, or a combination of any of the above. For example, the profile deliverer can examine the name of the application and a hash or checksum of the binary of the application. These are then compared against the database of coalesced sets of profile settings and both must match for an application profile to be used. This prevents applications on the mobile computing device that have been tampered with from loading application profiles. Additionally, this allows developers to be unaffected by existing profile settings while developing updates to their applications which might have profiles for older versions of the applications.
  • FIG. 1 illustrates a diagram of an embodiment of a distribution system 100 employed by mobile computing devices to receive dynamic sets of application profiles according to the principles of the disclosure.
  • the distribution system 100 includes an external source 110 , a communications network 120 and multiple mobile computing devices 130 .
  • the external source 110 includes a communications interface 112 , a processor 116 and a memory 114 .
  • the processor 116 can be configured to perform and direct the various operations of the external source 110 disclosed herein. Accordingly, the processor 116 includes the necessary circuitry and logic to perform the disclosed features of the external source 110 .
  • the memory 114 can be configured to store the dynamic profile settings.
  • Each of the components of the external source 110 is connected via conventional means.
  • the external source 110 is a server.
  • the external source 110 is configured to store dynamic sets of profile settings for the mobile computing devices 130 . Additionally, the external source 110 is configured to determine a set of profile settings for different types of mobile computing devices according to the characteristics of the mobile computing device. The external source 110 is also configured to send the dynamic sets of profile settings to the mobile computing devices 130 .
  • the external source 110 includes a communications interface 112 , a memory 114 and a processor 116 .
  • the external source 110 is configured to periodically send the dynamic sets of profile settings to the mobile computing devices 130 .
  • the queries and downloads can be communicated according to conventional networking protocols over the network 120 .
  • the communications interface 112 is configured to receive and send the queries and downloads.
  • the communications interface 112 includes conventional communications circuitry.
  • the queries include characteristic data about the mobile computing devices 130 for filtering by device-specific characteristics.
  • a query includes a shim that includes multiple data fields pertaining to the specific one of the mobile computing devices 130 that generated the query. For example, a query includes data for “type” that lists the specific type of mobile computing device and components thereof. Additionally, the query includes multiple data sections that further describe the device and components. Furthermore, the query includes a “notes” section wherein additional information or options can be provided for a specific one of the multiple data fields.
  • the type column can include device, system, system software, display, features, applications and miscellaneous.
  • the data sections can include manufacturer, model, serial number, security ID, carrier and operating system version.
  • the data sections can include chip type, memory, memory clock, GPU clock max, CPU clock max, power management mode and network connection.
  • the notes for the power management mode can include max performance, balanced, max battery and none.
  • the notes section can include type and speed.
  • the data sections can include not only the application name but also the version of the application. Accordingly, profile settings, can be matched to specific versions of applications.
  • the correct hierarchical filtered profile settings can be selected by the external source 110 for delivery to the appropriate one of the mobile computing devices 130 .
  • the processor 116 can be configured to hierarchically filter the profile settings stored on the memory 114 according to the characteristic data provided by the query.
  • the external source 110 can log the data provided by the queries, traverse the dynamic sets of profile settings stored thereon based on the data from the mobile computing devices 130 and return one of the dynamic sets of profile settings to the appropriate one of the mobile computing devices 130 .
  • the external source 110 is configured to store already determined hierarchical filtered application profiles for possible future downloads.
  • the external source 110 communicates with the mobile computing devices 130 via the communications network 120 .
  • the communications network 120 is a conventional network that is used by the mobile computing devices to transmit and receive data to and from the external source 110 .
  • the external source 110 and the mobile computing devices 130 include the necessary circuitry to communicate over the communications network employing the proper networking protocol.
  • the mobile computing device 132 includes an interface 133 , a memory 134 , a memory 135 and a processor 136 .
  • the mobile computing device 132 also includes additional components such as a display, a user interface, a microphone, a speaker, etc. that are not illustrated herein.
  • the interface 133 is a communication interface that includes the necessary circuitry to transmit and receive data via, for example, the communications network 120 .
  • the interface 133 is configured to communicate via communication protocols including, for example, networking protocols such as Ethernet, Wi-Fi or Internet protocol.
  • the interface 133 is configured to communicate via wireless or wired connections.
  • the interface 133 receives the dynamic sets of profile settings from the external source 110 .
  • the dynamic sets are then stored in the memory 134 .
  • Receiving, encoding and storing the dynamic sets can be performed in a conventional manner.
  • the static set of profile settings is stored in the memory 135 .
  • the memory 134 is a dynamic memory and the memory 135 is a static memory.
  • the memories 134 , 135 can be partitioned portions of a single memory.
  • the processor 136 is configured to generate coalesced sets of profile settings from the dynamic sets and the static set of profile settings. Accordingly, the processor 136 includes the necessary circuitry and logic to load the dynamic sets and the static set of profile settings and generate therefrom the coalesced sets of profile settings. In one embodiment, the coalesced sets of profile settings are then stored in the memory 134 .
  • the processor 136 is also configured to deliver settings from a set of the coalesced sets of profile settings to the various components of the mobile computing device 132 for particular applications operating thereon.
  • the processor 136 is configured to verify the particular set before selecting and delivering the settings. This can be done by comparing the name of a particular application to the database of coalesced sets of profile settings. In some embodiments, additional security is provided by also comparing a hash or checksum value of an application on the mobile computing device that is, for example, being launched, to a hash or checksum value stored under the name of the application with the coalesced sets of profile settings.
  • Communication between the interface 133 , the memory 134 , the memory 135 and the processor 136 and with the various components of the mobile computing device 132 can be via conventional means employing typical protocols known in the art.
  • FIG. 2 illustrates a block diagram of an embodiment of a mobile computing device 200 constructed according to the principles of the disclosure.
  • the mobile computing device 200 can be one of the mobile computing devices 130 of FIG. 1 .
  • the mobile computing device 200 is an apparatus that a user employs for various services or for operating various applications.
  • the mobile computing device 200 is a computing device designed for voice communication, such as a smart telephone.
  • the mobile computing device 200 is not designed for voice communication over a cellular communication network.
  • the mobile computing device 200 includes a communications interface 210 , a settings reservoir 220 , a profile generator 230 and a profile deliverer 240 .
  • a communications interface 210 receives a communications from a user.
  • a settings reservoir 220 receives a settings from a user.
  • a profile generator 230 generates a profile from a profile.
  • a profile deliverer 240 delivers a profile to a user.
  • additional components represented by components 260 , that are not illustrated such as, a display, a user interface, a power supply, etc.
  • the communications interface 210 can be a conventional interface on mobile computing devices that is configured to transmit and receive data.
  • the communications interface 210 can include an antenna for wireless communication.
  • the communications interface 210 can include a port or connector for wired communication.
  • the communications interface 210 is configured to receive the dynamic sets of profile settings.
  • the communications interface 210 is configured to receive the dynamic sets of profile settings via a wireless connection.
  • the communications interface 210 may employ an antenna to communicate with a server, such as external source 110 , to receive the dynamic sets.
  • the dynamic sets of profile settings may be received on a periodic basis. For example, the dynamic sets may be downloaded every 48 hours or another selected time period. In some embodiment, the dynamic sets of profile settings may only be downloaded when a change has been made thereto.
  • a query can be used to inquire if a change has been made. As discussed above, the query can include characteristic data of the mobile computing device 200 that details the characteristics and features of the mobile computing device 200 .
  • the communications interface 210 may receive the dynamic sets of profile settings from a wired connection such as when coupled to a desk top computer. In some embodiments, the communication interface 210 receives a memory stick that has stored thereon the dynamic sets of profile settings.
  • the settings reservoir 220 is configured to store dynamic sets of profile settings and static set of profile settings for the mobile computing device 200 . As such, the settings reservoir 220 is configured to store two distinct sets of profile settings. In one embodiment, the settings reservoir 220 is implemented as a memory or memories. In some embodiments, the dynamic sets of profile settings are stored in a first memory and the static set of profile settings is stored in a second memory distinct from the first memory.
  • the first memory can be a RAM and the second memory can be a ROM.
  • the profile generator 230 is configured to generate coalesced sets of profile settings for applications on the mobile computing device 200 based on the dynamic sets of profiles and the static set of profiles.
  • the profile deliverer 240 is configured to deliver settings from a set of the coalesced profile settings to components of the mobile computing device 200 for the application.
  • the profile deliverer 240 is configured to determine the set of the coalesced profile settings by verifying both a name of the application and a hash or checksum of a binary of the application with a database of the coalesced profile settings stored on the settings reservoir.
  • the database can include the names of applications, hash or checksum values and other identifying features for security, such as hash or checksum values, version, etc. Additionally, the database includes the settings for each of the different applications.
  • the profile deliverer 240 can be prompted to select and deliver the settings in response to the application being launched on the computing device.
  • a user can initiate or launch an application employing a user interface. Thereafter, the settings for the various components of the mobile computing device 200 are retrieved for executing the application.
  • the profile deliverer 240 identifies the relevant set of coalesced sets of profile settings that correspond to the launched application. As noted above, the application can be verified through various criteria.
  • the profile deliverer 240 then delivers the settings of the selected set of coalesced sets of profile settings to the components of the mobile computing device 200 for execution of the application.
  • the profile deliverer 240 is configured to deliver the settings in response to a query from the components of the mobile computing device 200 .
  • each individual component can individually request settings for executing a particular launched application.
  • the profile deliverer 240 still verifies the set of coalesced sets of profile settings for the application and then selects the particular settings for the requesting component from the set and delivers those settings.
  • FIG. 3 illustrates a flow chart of an embodiment of a method 300 for operating a mobile computing device carried out according to the principles of the disclosure.
  • the method 300 or at least a portion thereof can be implemented as a series of operating instructions stored on a non-transitory computer readable medium that directs the operation of a processor.
  • the method 300 may be implemented as a computer program product.
  • the method 300 begins in a step 305 .
  • a step 310 dynamic sets of profile settings based on system characteristics of the computing device are received.
  • the dynamic sets can be received via a server over a communications network.
  • Coalesced sets of profile settings are determined in a step 320 for the computing device.
  • the coalesced sets of profile settings are generated from the dynamic sets of profile settings and a set of static profile settings stored on the mobile computing device.
  • generating the coalesced sets of profile settings includes replacing overlapping profile settings in the dynamic sets of profile settings with profile settings from the static set of profile settings. This can be based on if the particular static settings have override capability.
  • a step 330 settings are selected, for an application on the mobile computing device, from a set of the coalesced sets of profile settings for components of the computing device.
  • the method 300 includes verifying the application with the relevant settings. Verification can be based on comparing the name of the application with a database of the coalesced sets of profile settings. Other verification procedures that provide additional security can also be used.
  • the selected settings are delivered to the components for execution during operation of the application.
  • the selected settings can be delivered based on receiving queries from the components in response to launching the application and selecting the set in response to the queries.
  • the method 340 ends in a step 350 .
  • FIG. 4 illustrates a flow diagram of an embodiment of a method 400 of configuring an apparatus for operation carried out according to the principles of the disclosure.
  • the apparatus can be a tablet, a clamshell, a smart phone, a gaming device or another type of mobile computing device, such as a portable device, that executes and operates applications.
  • the method 400 may occur at manufacturing of the apparatus. In other embodiments, the method 400 could occur when upgrading the apparatus. Configuring as used herein refers to providing the apparatus with the necessary logic, circuitry, instructions or combination thereof to perform the particular functions.
  • the method 400 begins in a step 405 .
  • the apparatus is configured to store a set of application profile settings based on system characteristics of the apparatus.
  • the apparatus is configured to generate a coalesced set of application profile settings by comparing the set of application profiles with a second set of application profiles from a different source.
  • the apparatus is configured to generate the coalesced set of application profile settings by replacing settings for a component of the apparatus with settings for the component from the second set of application profiles. At least a portion of the second set of application profiles can be established during manufacturing of the apparatus.
  • the apparatus is configured to select settings for an application from a set of the coalesced sets of profile settings.
  • the apparatus is configured to deliver profile settings to components of the apparatus for an application when the application is launched.
  • the profile settings are from a set of the coalesced sets of profile settings.
  • the method 400 ends in a step 450 .
  • a portion of the above-described apparatuses, systems or methods may be embodied in or performed by various processors or computers, wherein the computers are programmed or store executable programs of sequences of software instructions to perform one or more of the steps of the methods.
  • the software instructions of such programs may represent algorithms and be encoded in machine-executable form on non-transitory digital data storage media, e.g., magnetic or optical disks, random-access memory (RAM), magnetic hard disks, flash memories, and/or read-only memory (ROM), to enable various types of digital data processors or computers to perform one, multiple or all of the steps of one or more of the above-described methods, or functions of the apparatuses or systems described herein.
  • RAM random-access memory
  • ROM read-only memory
  • Portions of disclosed embodiments may relate to computer storage products with a non-transitory computer-readable medium that have program code thereon for performing various computer-implemented operations that embody a part of an apparatus, system or carry out the steps of a method set forth herein.
  • Non-transitory used herein refers to all computer-readable media except for transitory, propagating signals. Examples of non-transitory computer-readable media include, but are not limited to: magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROM disks; magneto-optical media such as floptical disks; and hardware devices that are specially configured to store and execute program code, such as ROM and RAM devices.
  • Examples of program code include both machine code, such as produced by a compiler, and files containing higher level code that may be executed by the computer using an interpreter.

Abstract

A mobile computing device, a method of operating thereof, a method of manufacturing and an external source for dynamic profile settings for mobile computing devices. In one embodiment, the mobile computing device includes: (1) a settings reservoir configured to store dynamic sets of profile settings and static set of profile settings for the computing device and (2) a profile generator configured to generate coalesced sets of profile settings for applications on the computing device based on the dynamic sets of profiles and the static set of profiles.

Description

    CROSS-REFERENCE TO RELATED APPLICATION
  • This application claims the benefit of U.S. Provisional Application Ser. No. 61/724,088, filed by Nicholas Haemel, et al., on Nov. 8, 2012, entitled “METHOD FOR DETERMINING DRIVER LIBRARY COMPATIBILITY AND DELIVERING UPDATES,” commonly assigned with this application and incorporated herein by reference.
  • TECHNICAL FIELD
  • This application is directed, in general, to computing devices and, more specifically, to profile settings for different components of mobile computing devices.
  • BACKGROUND
  • Mobile telephones typically perform many functions in addition to providing voice communication. Many mobile telephones, such as smart phones, and other mobile computing devices now also provide additional services including the ability to communicate by text, connect to the web, watch videos, make videos, take pictures, play games, etc. The various computing devices use many types of applications to perform these different functions.
  • SUMMARY
  • In one aspect, the disclosure provides a mobile computing device. In one embodiment, the mobile computing device includes: (1) a settings reservoir configured to store dynamic sets of profile settings and static set of profile settings for the computing device and (2) a profile generator configured to generate coalesced sets of profile settings for applications on the computing device based on the dynamic sets of profiles and the static set of profiles.
  • In another aspect, the disclosure provides a method of operating a mobile computing device. In one embodiment, the method includes: (1) receiving dynamic sets of profile settings based on system characteristics of the computing device, (2) determining a coalesced set of profile settings for the computing device based on the dynamic sets of profile settings and sets of static profile settings stored on the computing device and (3) selecting, for an application on the computing device, settings from a set of the coalesced sets of profile settings for components of the computing device.
  • In yet another aspect, the disclosure provides a method of configuring an apparatus to operate employing profile settings for components thereof that are tailored to particular applications on the apparatus and to characteristics of the components. In one embodiment, the method of manufacturing includes: (1) configuring the apparatus to store a set of application profiles based on system characteristics of the computing device, (2) configuring the apparatus to generate a coalesced set of application profiles by comparing the set of application profiles with a second set of application profiles from another source and (3) configuring the apparatus to deliver profile settings to components of the apparatus for an application when the application is launched, wherein the profile settings are from a set of the coalesced sets of profile settings.
  • In still yet another aspect, the disclosure provides an external source for dynamic profile settings for mobile computing devices. In one embodiment, the external source includes: (1) a memory configured to store profile settings for applications that execute on mobile computing devices and (2) a processor configured to determine a dynamic set of profile settings for executing an application on a specific one of the mobile computing devices by hierarchically filtering the profile settings according to characteristics of the specific one.
  • BRIEF DESCRIPTION
  • Reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
  • FIG. 1 illustrates a diagram of an embodiment of a distribution system employed by a mobile computing device to receive dynamic sets of application profiles according to the principles of the disclosure;
  • FIG. 2 illustrates a block diagram of an embodiment of a mobile computing device constructed according to the principles of the disclosure;
  • FIG. 3 illustrates a flow chart of an embodiment of a method for operating a mobile computing device carried out according to the principles of the disclosure; and
  • FIG. 4 illustrates a flow diagram of an embodiment of a method of configuring an apparatus for operation carried out according to the principles of the disclosure.
  • DETAILED DESCRIPTION
  • Mobile computing devices have the ability to perform multiple services or functions under the direction of different applications loaded thereon. An application is a computer program or programs designed for use by an end user. In some embodiments, an application includes both systems programs or software and end-user programs or software. For optimal enjoyment or execution of an application from a user's perspective or from the perspective of a mobile computing device itself, the settings for the various components of a mobile computing device can vary for the different applications. For example, one application may have different power requirements and perform optimally according to particular power management guidelines. Another application can ideally operate with particular settings for a display of the mobile computing device compared to other applications. Thus, the optimal settings or profile settings for the various components of a mobile computing device for different applications can change. Profile settings as used herein are a group or set of states and/or values of parameters for the components or modules of a mobile computing device. A component or module as used herein is a software library or module providing specific system functionality on the mobile computing device such as CPU governor strategy, OpenGL rendering, display composition, etc.
  • Accordingly, the disclosure provides a scheme that allows a mobile computing device to select a set of coalesced profile settings that correspond to a particular application on a mobile computing device. A mobile computing device is a computing device constructed specifically for a mobile architecture that enables portability. A mobile computing device includes the mobile hardware and software that is configured to perform various functions including communicating over a network. Mobile computing devices can be mobile telephones including smart phones, tablets, clamshells, game devices, etc., that include at least one processor and memory. One skilled in the art will also understand that each of the mobile computing devices disclosed herein include other components that are typically included in such devices including a display, user interface, power supply, communications interface, etc.
  • The coalesced profile settings for an application are generated from dynamic sets of profile settings and at least one static set of profile settings. The dynamic sets of profile settings are provided from a source that is external to the mobile computing device, i.e., an external source. The external source can be a server that the mobile computing device connects to via, for example, a conventional connection that is wired, wireless or a combination thereof. The external source provides a scalable solution to providing profile settings to mobile computing devices.
  • The dynamic sets of profile settings include sets of profile settings wherein each of the sets are specifically tailored for the characteristics of the components of the mobile computing device with respect to a particular application on the mobile computing device. For example, the dynamic sets of profile settings can include a set of profile settings for a particular game, a set of profile settings for a voice application, a set of profile settings for a texting application, a system application, etc., wherein each of the sets is tailored for the components or modules of the mobile computing device. As such, a set of the dynamic sets of profile settings correspond to the specific characteristics of the components of a mobile computing device for each application. Thus, each set of the dynamic sets of profile settings can be for a particular application and directed to characteristics of a device including, for example, a specific manufacturer, a model, a carrier, an operating system, a version of an operating system, a chip type, a chip family or any combination thereof. In some embodiments, the dynamic sets of profile settings are hierarchically filtered application profiles that are filtered based on the characteristic data.
  • Thus, in some embodiments the external source can generate, store and deliver hierarchically filtered application profiles to mobile computing devices. As such, the external source is configured to use a hierarchical filtering approach to determine which profile settings to return to a mobile computing device. The hierarchical categories for filtering the profile settings can range from general (e.g., operating system, chip family) to specific (e.g., device name, device manufacturer) characteristic data of the mobile computing device. In one embodiment the external source is configured to store many profile settings associated with a mobile computing device and only select the correct profile setting to send to the mobile computing device. The correct profile setting is the most specific, hierarchically filtered profile setting for a particular mobile computing device. For example, game XYZ may have a general profile setting containing stereo settings stored in the database of the external source. Additionally, a device profile for a specific type of mobile computing device is stored on the external source that describes the stereo settings and power biases for the game XYZ. In this example, the correct profile returned to the mobile computing device would be the device profile for the specific type of mobile computing device instead of the general profile for the game XYZ.
  • Accordingly, the hierarchical filtered application profiles define a set of system states (e.g., CPU/GPU governor biases, CPU caps, screen resolution, screen size, stereo settings, etc.) to be set on a mobile computing device for each desired application. The values for a profile set can be determined experimentally or algorithmically and stored in a profile database on an external source (e.g., a server). As such, in one embodiment, the external source is configured to hierarchically filter a database of profile settings based on the characteristic data from a mobile computing device to determine a dynamic set of profile settings to be returned to the mobile computing device. The characteristic data can be provided to the external source via a query from the mobile computing device. In some embodiments, each mobile computing device can periodically (e.g., every forty eight hours) provide the characteristic data to the external source and receive any updates to its set of application profiles. Additionally, the external source can detect which mobile computing devices are older and control how often they query for new profile settings. Profile settings for older devices change less frequently and this mechanism provides a way to reduce traffic on mobile computing devices nearing end-of-life.
  • By employing the hierarchical filtered application profiles, the external source provides profile settings that vary for different reasons such as different versions of the operating system, different chipsets, etc. Thus, multiple profile settings can be provided for a single application.
  • The static set of profile settings is stored on the mobile computing device. Unlike the dynamic sets of profile settings, the static set of profile settings do not change. In one embodiment, the static set of profile settings includes original equipment manufacturer (OEM) settings for components of the mobile computing device. In some embodiments, multiple static sets of profile settings are stored and employed to generate the coalesced profile settings. In such embodiments, the discussion herein regarding a single static set of profile settings applies to the multiple static sets of profile settings.
  • In one embodiment, the mobile computing device generates the coalesced profile settings by receiving and loading dynamic sets of profile settings. As noted above, the dynamic sets can be downloaded from a server over a communication network. The mobile computing device also loads a static set of profile settings contained on the device and generates the coalesced sets of profile settings based on both the dynamic sets of profile settings and the static set of profile settings. In one embodiment, the mobile computing device is configured to replace any overlapping profile settings in the dynamic sets with settings from the static profile settings. This can be based on if the settings from the static set of profile settings have override capabilities. If both a static profile and dynamic profile exist for an application, the static set will be chosen. For example, if the dynamic profile limits total device power to 3.5 watts for a given application and the static profile limits total device power to 3.0 watts, the mobile computing device will limit to the static setting of 3.0 watts. Settings do not always overlap between the two profile types. In this case the profile settings are used in the only profile type in which they exist. As such, settings from the static set of profile settings override settings from dynamic sets when a conflict exists. The OEM, therefore, can have final say on how components operate on their device. This creates a single set of profiles that persist on the mobile computing device referred to herein as the coalesced sets of profile settings. A profile generator on the mobile computing device is used to generate the coalesced sets of profile settings.
  • When an application starts on the mobile computing device, any of the system modules of the mobile computing device, such as OpenGL, Power management, 2D, etc., query a profile deliverer of the mobile computing device for the profile settings for that particular application. The profile deliverer determines which set of the coalesced sets of profile settings are relevant for the application and deliver the appropriate settings from the set of coalesced sets of profile settings to correctly set up the systems of the mobile computing device to optimally execute the application.
  • In one embodiment, the profile deliverer determines which set of the coalesced sets of profile settings are to be used when an application is launched, by examining the name of the application, the version of the application, a hash or checksum of the application, or a combination of any of the above. For example, the profile deliverer can examine the name of the application and a hash or checksum of the binary of the application. These are then compared against the database of coalesced sets of profile settings and both must match for an application profile to be used. This prevents applications on the mobile computing device that have been tampered with from loading application profiles. Additionally, this allows developers to be unaffected by existing profile settings while developing updates to their applications which might have profiles for older versions of the applications.
  • FIG. 1 illustrates a diagram of an embodiment of a distribution system 100 employed by mobile computing devices to receive dynamic sets of application profiles according to the principles of the disclosure. The distribution system 100 includes an external source 110, a communications network 120 and multiple mobile computing devices 130. The external source 110 includes a communications interface 112, a processor 116 and a memory 114. The processor 116 can be configured to perform and direct the various operations of the external source 110 disclosed herein. Accordingly, the processor 116 includes the necessary circuitry and logic to perform the disclosed features of the external source 110. The memory 114 can be configured to store the dynamic profile settings. Each of the components of the external source 110 is connected via conventional means. In one embodiment, the external source 110 is a server.
  • The external source 110 is configured to store dynamic sets of profile settings for the mobile computing devices 130. Additionally, the external source 110 is configured to determine a set of profile settings for different types of mobile computing devices according to the characteristics of the mobile computing device. The external source 110 is also configured to send the dynamic sets of profile settings to the mobile computing devices 130. The external source 110 includes a communications interface 112, a memory 114 and a processor 116.
  • In some embodiments, the external source 110 is configured to periodically send the dynamic sets of profile settings to the mobile computing devices 130. The queries and downloads can be communicated according to conventional networking protocols over the network 120. The communications interface 112 is configured to receive and send the queries and downloads. In one embodiment, the communications interface 112 includes conventional communications circuitry.
  • In one embodiment the queries include characteristic data about the mobile computing devices 130 for filtering by device-specific characteristics. In some embodiments, a query includes a shim that includes multiple data fields pertaining to the specific one of the mobile computing devices 130 that generated the query. For example, a query includes data for “type” that lists the specific type of mobile computing device and components thereof. Additionally, the query includes multiple data sections that further describe the device and components. Furthermore, the query includes a “notes” section wherein additional information or options can be provided for a specific one of the multiple data fields.
  • For example, the type column can include device, system, system software, display, features, applications and miscellaneous. For device, the data sections can include manufacturer, model, serial number, security ID, carrier and operating system version. For system, the data sections can include chip type, memory, memory clock, GPU clock max, CPU clock max, power management mode and network connection. The notes for the power management mode can include max performance, balanced, max battery and none. For the network connection, the notes section can include type and speed. For the applications, the data sections can include not only the application name but also the version of the application. Accordingly, profile settings, can be matched to specific versions of applications. With the specific data from each of the mobile computing devices 130, the correct hierarchical filtered profile settings can be selected by the external source 110 for delivery to the appropriate one of the mobile computing devices 130. The processor 116 can be configured to hierarchically filter the profile settings stored on the memory 114 according to the characteristic data provided by the query.
  • The external source 110 can log the data provided by the queries, traverse the dynamic sets of profile settings stored thereon based on the data from the mobile computing devices 130 and return one of the dynamic sets of profile settings to the appropriate one of the mobile computing devices 130. In some embodiment, the external source 110 is configured to store already determined hierarchical filtered application profiles for possible future downloads. The external source 110 communicates with the mobile computing devices 130 via the communications network 120. The communications network 120 is a conventional network that is used by the mobile computing devices to transmit and receive data to and from the external source 110. The external source 110 and the mobile computing devices 130 include the necessary circuitry to communicate over the communications network employing the proper networking protocol.
  • One of the mobile computing devices 130 is selected as a representative and is denoted as mobile computing device 132. The mobile computing device 132 includes an interface 133, a memory 134, a memory 135 and a processor 136. One skilled in the art will understand that the mobile computing device 132 also includes additional components such as a display, a user interface, a microphone, a speaker, etc. that are not illustrated herein.
  • The interface 133 is a communication interface that includes the necessary circuitry to transmit and receive data via, for example, the communications network 120. As such, the interface 133 is configured to communicate via communication protocols including, for example, networking protocols such as Ethernet, Wi-Fi or Internet protocol. The interface 133 is configured to communicate via wireless or wired connections.
  • The interface 133 receives the dynamic sets of profile settings from the external source 110. The dynamic sets are then stored in the memory 134. Receiving, encoding and storing the dynamic sets can be performed in a conventional manner.
  • Also stored within the mobile computing device 132 are static set of profile settings. The static set of profile settings is stored in the memory 135. In one embodiment, the memory 134 is a dynamic memory and the memory 135 is a static memory. In some embodiments, the memories 134, 135 can be partitioned portions of a single memory.
  • The processor 136 is configured to generate coalesced sets of profile settings from the dynamic sets and the static set of profile settings. Accordingly, the processor 136 includes the necessary circuitry and logic to load the dynamic sets and the static set of profile settings and generate therefrom the coalesced sets of profile settings. In one embodiment, the coalesced sets of profile settings are then stored in the memory 134.
  • The processor 136 is also configured to deliver settings from a set of the coalesced sets of profile settings to the various components of the mobile computing device 132 for particular applications operating thereon. The processor 136 is configured to verify the particular set before selecting and delivering the settings. This can be done by comparing the name of a particular application to the database of coalesced sets of profile settings. In some embodiments, additional security is provided by also comparing a hash or checksum value of an application on the mobile computing device that is, for example, being launched, to a hash or checksum value stored under the name of the application with the coalesced sets of profile settings. Communication between the interface 133, the memory 134, the memory 135 and the processor 136 and with the various components of the mobile computing device 132 can be via conventional means employing typical protocols known in the art.
  • FIG. 2 illustrates a block diagram of an embodiment of a mobile computing device 200 constructed according to the principles of the disclosure. The mobile computing device 200 can be one of the mobile computing devices 130 of FIG. 1. The mobile computing device 200 is an apparatus that a user employs for various services or for operating various applications. In one embodiment, the mobile computing device 200 is a computing device designed for voice communication, such as a smart telephone. In another embodiment, the mobile computing device 200 is not designed for voice communication over a cellular communication network.
  • The mobile computing device 200 includes a communications interface 210, a settings reservoir 220, a profile generator 230 and a profile deliverer 240. One skilled in the art will understand that the mobile computing device 200 also includes additional components, represented by components 260, that are not illustrated such as, a display, a user interface, a power supply, etc.
  • The communications interface 210 can be a conventional interface on mobile computing devices that is configured to transmit and receive data. The communications interface 210 can include an antenna for wireless communication. In one embodiment, the communications interface 210 can include a port or connector for wired communication.
  • The communications interface 210 is configured to receive the dynamic sets of profile settings. In one embodiment, the communications interface 210 is configured to receive the dynamic sets of profile settings via a wireless connection. Thus, the communications interface 210 may employ an antenna to communicate with a server, such as external source 110, to receive the dynamic sets. In such embodiments, the dynamic sets of profile settings may be received on a periodic basis. For example, the dynamic sets may be downloaded every 48 hours or another selected time period. In some embodiment, the dynamic sets of profile settings may only be downloaded when a change has been made thereto. A query can be used to inquire if a change has been made. As discussed above, the query can include characteristic data of the mobile computing device 200 that details the characteristics and features of the mobile computing device 200.
  • In other embodiments, the communications interface 210 may receive the dynamic sets of profile settings from a wired connection such as when coupled to a desk top computer. In some embodiments, the communication interface 210 receives a memory stick that has stored thereon the dynamic sets of profile settings.
  • The settings reservoir 220 is configured to store dynamic sets of profile settings and static set of profile settings for the mobile computing device 200. As such, the settings reservoir 220 is configured to store two distinct sets of profile settings. In one embodiment, the settings reservoir 220 is implemented as a memory or memories. In some embodiments, the dynamic sets of profile settings are stored in a first memory and the static set of profile settings is stored in a second memory distinct from the first memory. The first memory can be a RAM and the second memory can be a ROM.
  • The profile generator 230 is configured to generate coalesced sets of profile settings for applications on the mobile computing device 200 based on the dynamic sets of profiles and the static set of profiles.
  • The profile deliverer 240 is configured to deliver settings from a set of the coalesced profile settings to components of the mobile computing device 200 for the application. In one embodiment, the profile deliverer 240 is configured to determine the set of the coalesced profile settings by verifying both a name of the application and a hash or checksum of a binary of the application with a database of the coalesced profile settings stored on the settings reservoir. The database can include the names of applications, hash or checksum values and other identifying features for security, such as hash or checksum values, version, etc. Additionally, the database includes the settings for each of the different applications.
  • The profile deliverer 240 can be prompted to select and deliver the settings in response to the application being launched on the computing device. Thus, a user can initiate or launch an application employing a user interface. Thereafter, the settings for the various components of the mobile computing device 200 are retrieved for executing the application. The profile deliverer 240 identifies the relevant set of coalesced sets of profile settings that correspond to the launched application. As noted above, the application can be verified through various criteria. The profile deliverer 240 then delivers the settings of the selected set of coalesced sets of profile settings to the components of the mobile computing device 200 for execution of the application. In one embodiment, the profile deliverer 240 is configured to deliver the settings in response to a query from the components of the mobile computing device 200. In this embodiment, each individual component can individually request settings for executing a particular launched application. The profile deliverer 240 still verifies the set of coalesced sets of profile settings for the application and then selects the particular settings for the requesting component from the set and delivers those settings.
  • FIG. 3 illustrates a flow chart of an embodiment of a method 300 for operating a mobile computing device carried out according to the principles of the disclosure. The method 300 or at least a portion thereof can be implemented as a series of operating instructions stored on a non-transitory computer readable medium that directs the operation of a processor. As such, the method 300 may be implemented as a computer program product. The method 300 begins in a step 305.
  • In a step 310, dynamic sets of profile settings based on system characteristics of the computing device are received. The dynamic sets can be received via a server over a communications network.
  • Coalesced sets of profile settings are determined in a step 320 for the computing device. In one embodiment, the coalesced sets of profile settings are generated from the dynamic sets of profile settings and a set of static profile settings stored on the mobile computing device. In some embodiments, generating the coalesced sets of profile settings includes replacing overlapping profile settings in the dynamic sets of profile settings with profile settings from the static set of profile settings. This can be based on if the particular static settings have override capability.
  • In a step 330, settings are selected, for an application on the mobile computing device, from a set of the coalesced sets of profile settings for components of the computing device. In one embodiment, the method 300 includes verifying the application with the relevant settings. Verification can be based on comparing the name of the application with a database of the coalesced sets of profile settings. Other verification procedures that provide additional security can also be used.
  • In a step 340, the selected settings are delivered to the components for execution during operation of the application. The selected settings can be delivered based on receiving queries from the components in response to launching the application and selecting the set in response to the queries. The method 340 ends in a step 350.
  • FIG. 4 illustrates a flow diagram of an embodiment of a method 400 of configuring an apparatus for operation carried out according to the principles of the disclosure. The apparatus can be a tablet, a clamshell, a smart phone, a gaming device or another type of mobile computing device, such as a portable device, that executes and operates applications. The method 400 may occur at manufacturing of the apparatus. In other embodiments, the method 400 could occur when upgrading the apparatus. Configuring as used herein refers to providing the apparatus with the necessary logic, circuitry, instructions or combination thereof to perform the particular functions. The method 400 begins in a step 405.
  • In a step 410, the apparatus is configured to store a set of application profile settings based on system characteristics of the apparatus.
  • In a step 420, the apparatus is configured to generate a coalesced set of application profile settings by comparing the set of application profiles with a second set of application profiles from a different source. In one embodiment, the apparatus is configured to generate the coalesced set of application profile settings by replacing settings for a component of the apparatus with settings for the component from the second set of application profiles. At least a portion of the second set of application profiles can be established during manufacturing of the apparatus.
  • In a step 430, the apparatus is configured to select settings for an application from a set of the coalesced sets of profile settings.
  • In a step 440, the apparatus is configured to deliver profile settings to components of the apparatus for an application when the application is launched. The profile settings are from a set of the coalesced sets of profile settings. The method 400 ends in a step 450.
  • A portion of the above-described apparatuses, systems or methods may be embodied in or performed by various processors or computers, wherein the computers are programmed or store executable programs of sequences of software instructions to perform one or more of the steps of the methods. The software instructions of such programs may represent algorithms and be encoded in machine-executable form on non-transitory digital data storage media, e.g., magnetic or optical disks, random-access memory (RAM), magnetic hard disks, flash memories, and/or read-only memory (ROM), to enable various types of digital data processors or computers to perform one, multiple or all of the steps of one or more of the above-described methods, or functions of the apparatuses or systems described herein.
  • Portions of disclosed embodiments may relate to computer storage products with a non-transitory computer-readable medium that have program code thereon for performing various computer-implemented operations that embody a part of an apparatus, system or carry out the steps of a method set forth herein. Non-transitory used herein refers to all computer-readable media except for transitory, propagating signals. Examples of non-transitory computer-readable media include, but are not limited to: magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROM disks; magneto-optical media such as floptical disks; and hardware devices that are specially configured to store and execute program code, such as ROM and RAM devices. Examples of program code include both machine code, such as produced by a compiler, and files containing higher level code that may be executed by the computer using an interpreter.
  • Those skilled in the art to which this application relates will appreciate that other and further additions, deletions, substitutions and modifications may be made to the described embodiments.

Claims (22)

What is claimed is:
1. A mobile computing device, comprising:
a settings reservoir configured to store dynamic sets of profile settings and static set of profile settings for said computing device; and
a profile generator configured to generate coalesced sets of profile settings for applications on said computing device based on said dynamic sets of profiles and said static set of profiles.
2. The mobile computing device as recited in claim 1 further comprising a profile deliverer configured to deliver settings from a set of said coalesced profile settings to components of said mobile computing device for said application.
3. The mobile computing device as recited in claim 2 wherein said profile deliverer is configured to deliver said settings in response to components of said mobile computing device requests on said application being launched on said mobile computing device.
4. The mobile computing device as recited in claim 2 wherein said profile deliverer is further configured to determine said set of said coalesced profile settings by verifying both a name of said application and a hash or checksum of a binary of said application with a database of said coalesced profile settings stored on said settings reservoir.
5. The mobile computing device as recited in claim 1 further comprising a communications interface configured to wirelessly receive said dynamic sets of profile settings.
6. The mobile computing device as recited in claim 2 wherein said profile deliverer is further configured to deliver said settings in response to a query from said components.
7. The mobile computing device as recited in claim 1 wherein said static set of profiles are original equipment manufacturer profiles.
8. The mobile computing device as recited in claim 1 wherein said dynamic sets of profile settings are based on characteristics of said mobile computing device.
9. A method of operating a mobile computing device, comprising:
receiving dynamic sets of profile settings based on system characteristics of said computing device;
determining a coalesced set of profile settings for said computing device based on said dynamic sets of profile settings and sets of static profile settings stored on said computing device; and
selecting, for an application on said computing device, settings from a set of said coalesced sets of profile settings for components of said computing device.
10. The method as recited in claim 9 further comprising delivering said settings to said components for execution during operation of said application.
11. The method as recited in claim 9 wherein said determining includes replacing overlapping profile settings in said dynamic sets of profile settings with profile settings from said static set of profile settings.
12. The method as recited in claim 9 further comprising verifying said set of coalesced sets of profile settings correspond to said application based on a name of said application and an additional security check derived from a binary of said application.
13. The method as recited in claim 9 further comprising receiving queries from said components in response to launching said application and selecting said set in response to said queries.
14. The method as recited in claim 9 wherein said dynamic sets of profile settings are based on characteristics of said computing device.
15. The method as recited in claim 9 wherein said sets of static profile settings include original equipment manufacturer settings.
16. A method of configuring an apparatus to operate employing profile settings for components thereof that are tailored to particular applications on said apparatus and to characteristics of the components, the method comprising:
configuring said apparatus to store a set of application profiles based on system characteristics of said computing device;
configuring said apparatus to generate a coalesced set of application profiles by comparing said set of application profiles with a second set of application profiles from another source; and
configuring said apparatus to deliver profile settings to components of said apparatus for an application when said application is launched, wherein said profile settings are from a set of said coalesced sets of profile settings.
17. The method as recited in claim 16 wherein said method occurs during manufacturing of said apparatus.
18. The method as recited in claim 16 wherein apparatus is a mobile computing device.
19. The method as recited in claim 16 further comprising configuring said apparatus to download said set of application profiles from a server including hierarchical filtered profile settings.
20. The method as recited in claim 16 further comprising configuring said apparatus to generate said coalesced set of application profiles by replacing settings for a component of said apparatus with settings for said component from said second set of application profiles, wherein at least a portion of said second set of application profiles are established during manufacturing of said apparatus.
21. An external source for dynamic profile settings for mobile computing devices, comprising:
a memory configured to store profile settings for applications that execute on mobile computing devices; and
a processor configured to determine a dynamic set of profile settings for executing an application on a specific one of said mobile computing devices by hierarchically filtering said profile settings according to characteristics of said specific one.
22. The external source as recited in claim 21 further comprising a communications interface configured to receive a query from said specific one that includes characteristic data thereof, said processor configured to hierarchically filter said profile settings based on said characteristic data.
US13/894,869 2012-11-08 2013-05-15 Mobile computing device configured to filter and detect application profiles, a method of manufacturing the same and an external source for delivering hierarchical filtered application profiles to mobile computing devices Abandoned US20140129686A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/894,869 US20140129686A1 (en) 2012-11-08 2013-05-15 Mobile computing device configured to filter and detect application profiles, a method of manufacturing the same and an external source for delivering hierarchical filtered application profiles to mobile computing devices

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261724088P 2012-11-08 2012-11-08
US13/894,869 US20140129686A1 (en) 2012-11-08 2013-05-15 Mobile computing device configured to filter and detect application profiles, a method of manufacturing the same and an external source for delivering hierarchical filtered application profiles to mobile computing devices

Publications (1)

Publication Number Publication Date
US20140129686A1 true US20140129686A1 (en) 2014-05-08

Family

ID=50623436

Family Applications (3)

Application Number Title Priority Date Filing Date
US13/894,869 Abandoned US20140129686A1 (en) 2012-11-08 2013-05-15 Mobile computing device configured to filter and detect application profiles, a method of manufacturing the same and an external source for delivering hierarchical filtered application profiles to mobile computing devices
US13/895,166 Active US8978027B2 (en) 2012-11-08 2013-05-15 Method of disseminating updated drivers to mobile computing devices and a dissemination system therefor
US14/613,477 Active US9569197B2 (en) 2012-11-08 2015-02-04 Method of disseminating updated drivers to mobile computing devices and a dissemination system therefor

Family Applications After (2)

Application Number Title Priority Date Filing Date
US13/895,166 Active US8978027B2 (en) 2012-11-08 2013-05-15 Method of disseminating updated drivers to mobile computing devices and a dissemination system therefor
US14/613,477 Active US9569197B2 (en) 2012-11-08 2015-02-04 Method of disseminating updated drivers to mobile computing devices and a dissemination system therefor

Country Status (3)

Country Link
US (3) US20140129686A1 (en)
CN (1) CN103809996B (en)
TW (1) TWI506555B (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104168160A (en) * 2014-08-18 2014-11-26 浪潮(北京)电子信息产业有限公司 Method and device for testing compatibility of server
US20170026486A1 (en) * 2015-07-24 2017-01-26 Nvidia Corporation System, method and device for providing crowd-sourced, cloud-based custom tuning for applications
US9569197B2 (en) 2012-11-08 2017-02-14 Nvidia Corporation Method of disseminating updated drivers to mobile computing devices and a dissemination system therefor
US9893938B1 (en) * 2014-10-31 2018-02-13 Sorenson Ip Holdings, Llc Apparatuses and methods for distributed configuration management of communication devices
US10333778B2 (en) * 2015-03-25 2019-06-25 Airwatch, Llc Multiuser device staging
US10862747B2 (en) 2015-03-25 2020-12-08 Airwatch Llc Single user device staging
US11232372B2 (en) * 2018-11-09 2022-01-25 Cisco Technology, Inc. Merging and optimizing heterogeneous rulesets for device classification
US11269488B2 (en) 2015-08-25 2022-03-08 Samsung Electronics Co., Ltd. System for providing application list and method therefor

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601465B2 (en) 2009-09-08 2013-12-03 Abbott Diabetes Care Inc. Methods and articles of manufacture for hosting a safety critical application on an uncontrolled data processing device
US9542172B2 (en) 2013-02-05 2017-01-10 Apple Inc. Automatic updating of applications
US10019569B2 (en) * 2014-06-27 2018-07-10 Qualcomm Incorporated Dynamic patching for diversity-based software security
JP2016177554A (en) * 2015-03-20 2016-10-06 セイコーエプソン株式会社 Electronic component conveying apparatus and electronic component inspection apparatus
CN107479482B (en) * 2017-08-21 2023-02-28 上海博泰悦臻网络技术服务有限公司 Operating system applied to automotive electronics and implementation method
CN113168315A (en) 2019-02-01 2021-07-23 惠普发展公司,有限责任合伙企业 Upgrading based on analysis from multiple sources
KR20210004288A (en) 2019-07-04 2021-01-13 삼성전자주식회사 Electronic apparatus and control method thereof

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020099952A1 (en) * 2000-07-24 2002-07-25 Lambert John J. Policies for secure software execution
US20060274869A1 (en) * 2005-06-07 2006-12-07 Yahoo! Inc. Dynamically generating content based on capabilities of a mobile device
US20070162731A1 (en) * 2005-12-23 2007-07-12 Morgan Stanley Systems and methods for configuration of mobile computing devices
US20070239722A1 (en) * 2006-03-30 2007-10-11 Phillips Mark E Distributed user-profile data structure
US20090157852A1 (en) * 2007-12-14 2009-06-18 Michail Krupkin Flexible and scalable method and apparatus for dynamic subscriber services configuration and management
US20090210719A1 (en) * 2008-02-19 2009-08-20 Konica Minolta Holdings, Inc. Communication control method of determining whether communication is permitted/not permitted, and computer-readable recording medium recording communication control program
US20090260004A1 (en) * 2008-04-10 2009-10-15 Palm, Inc. Computer program updates for mobile computing device
US20090328008A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Dynamically monitoring application behavior
US20100094977A1 (en) * 2005-07-22 2010-04-15 At&T Intellectual Property I, L.P. Method for Managing Configuration Profiles of Network Elements Deployed in a Network
US20110106527A1 (en) * 2001-07-03 2011-05-05 Apptera, Inc. Method and Apparatus for Adapting a Voice Extensible Markup Language-enabled Voice System for Natural Speech Recognition and System Response
US20120036235A1 (en) * 2005-11-10 2012-02-09 The Mathworks, Inc. Use of dynamic profiles for creating and using a distributed computing environment
US20120096135A1 (en) * 2010-10-19 2012-04-19 Steve Berube Managing settings of computing devices
US20120115501A1 (en) * 2010-11-10 2012-05-10 Google Inc. Self-aware profile switching on a mobile computing device
US20120302346A1 (en) * 2011-05-27 2012-11-29 Ami Entertainment Network, Inc. Method of selecting a device profile for provisioning an amusement device
US20130104113A1 (en) * 2011-10-24 2013-04-25 Infosys Limited System and method for dynamically generating a user personalized downloadable executable file
US20130173885A1 (en) * 2011-12-30 2013-07-04 Advanced Micro Devices, Inc. Processor and Methods of Adjusting a Branch Misprediction Recovery Mode
US8510406B2 (en) * 1999-04-26 2013-08-13 Mainstream Scientific, Llc Component for accessing and displaying internet content
US8813167B2 (en) * 2010-12-30 2014-08-19 Apple Inc. Dynamic device configuration using predicates

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065769B1 (en) * 2000-06-30 2006-06-20 Intel Corporation Method for automatically installing and updating drivers
US20030037325A1 (en) * 2001-08-17 2003-02-20 Hargrove David C. System and methods for automatically installing a correct software version from media containing multiple software versions
US7392527B2 (en) * 2003-12-10 2008-06-24 Microsoft Corporation Driver-specific context for kernel-mode shimming
US7574706B2 (en) * 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US7164907B2 (en) 2004-01-13 2007-01-16 Qualcomm Inc. Automated over the air plug-in device recognition and software driver download
US8549166B2 (en) * 2004-03-01 2013-10-01 Qualcomm Incorporated Execution of unverified programs in a wireless, device operating environment
US7676448B2 (en) * 2004-03-12 2010-03-09 Microsoft Corporation Controlling installation update behaviors on a client computer
EP1603036A1 (en) * 2004-06-02 2005-12-07 Research In Motion Limited Auto-configuration of hardware on a portable computing device
TWI256565B (en) * 2004-12-07 2006-06-11 Quanta Comp Inc Test system and method for portable device
US7779427B2 (en) * 2006-01-18 2010-08-17 Microsoft Corporation Automated application configuration using device-provided data
US20070180445A1 (en) * 2006-01-30 2007-08-02 Microsoft Corporation Download Service For Device Drivers
US8584115B2 (en) * 2006-10-05 2013-11-12 International Business Machines Corporation Automated operating system device driver updating system
JP2008203930A (en) * 2007-02-16 2008-09-04 Canon Inc Server device, driver processing method, storage medium, and program
US8863107B2 (en) * 2007-08-08 2014-10-14 Innopath Software, Inc. Workflow-based user interface system for mobile devices management
US8281298B2 (en) * 2007-08-27 2012-10-02 International Business Machines Corporation Evaluating computer driver update compliance
US20100011380A1 (en) * 2008-07-10 2010-01-14 Reimage System and method for replacing device drivers
US8402321B2 (en) 2010-06-21 2013-03-19 Litepoint Corporation System and method of providing driver software to test controller to facilitate testing by wireless transceiver tester of a device under test
US20120017208A1 (en) * 2010-07-14 2012-01-19 Mark Lussier System and method for updating device drivers
CN102055625A (en) * 2010-12-31 2011-05-11 深圳市普联技术有限公司 Network drive testing method
US9134996B2 (en) 2011-04-28 2015-09-15 F-Secure Corporation Updating anti-virus software
US8930917B2 (en) * 2012-05-22 2015-01-06 Adobe Systems Incorporated Method and apparatus for mobile application development and testing that avoids repackaging and reinstallation
US20140129686A1 (en) 2012-11-08 2014-05-08 Nvidia Corporation Mobile computing device configured to filter and detect application profiles, a method of manufacturing the same and an external source for delivering hierarchical filtered application profiles to mobile computing devices

Patent Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510406B2 (en) * 1999-04-26 2013-08-13 Mainstream Scientific, Llc Component for accessing and displaying internet content
US20020099952A1 (en) * 2000-07-24 2002-07-25 Lambert John J. Policies for secure software execution
US20110106527A1 (en) * 2001-07-03 2011-05-05 Apptera, Inc. Method and Apparatus for Adapting a Voice Extensible Markup Language-enabled Voice System for Natural Speech Recognition and System Response
US20060274869A1 (en) * 2005-06-07 2006-12-07 Yahoo! Inc. Dynamically generating content based on capabilities of a mobile device
US20100094977A1 (en) * 2005-07-22 2010-04-15 At&T Intellectual Property I, L.P. Method for Managing Configuration Profiles of Network Elements Deployed in a Network
US20120036235A1 (en) * 2005-11-10 2012-02-09 The Mathworks, Inc. Use of dynamic profiles for creating and using a distributed computing environment
US20070162731A1 (en) * 2005-12-23 2007-07-12 Morgan Stanley Systems and methods for configuration of mobile computing devices
US7689205B2 (en) * 2005-12-23 2010-03-30 Morgan Stanley Systems and methods for configuration of mobile computing devices
US20070239722A1 (en) * 2006-03-30 2007-10-11 Phillips Mark E Distributed user-profile data structure
US20090157852A1 (en) * 2007-12-14 2009-06-18 Michail Krupkin Flexible and scalable method and apparatus for dynamic subscriber services configuration and management
US20090210719A1 (en) * 2008-02-19 2009-08-20 Konica Minolta Holdings, Inc. Communication control method of determining whether communication is permitted/not permitted, and computer-readable recording medium recording communication control program
US20090260004A1 (en) * 2008-04-10 2009-10-15 Palm, Inc. Computer program updates for mobile computing device
US20090328008A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Dynamically monitoring application behavior
US20120096135A1 (en) * 2010-10-19 2012-04-19 Steve Berube Managing settings of computing devices
US20120115501A1 (en) * 2010-11-10 2012-05-10 Google Inc. Self-aware profile switching on a mobile computing device
US8813167B2 (en) * 2010-12-30 2014-08-19 Apple Inc. Dynamic device configuration using predicates
US20120302346A1 (en) * 2011-05-27 2012-11-29 Ami Entertainment Network, Inc. Method of selecting a device profile for provisioning an amusement device
US20130104113A1 (en) * 2011-10-24 2013-04-25 Infosys Limited System and method for dynamically generating a user personalized downloadable executable file
US20130173885A1 (en) * 2011-12-30 2013-07-04 Advanced Micro Devices, Inc. Processor and Methods of Adjusting a Branch Misprediction Recovery Mode

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569197B2 (en) 2012-11-08 2017-02-14 Nvidia Corporation Method of disseminating updated drivers to mobile computing devices and a dissemination system therefor
CN104168160A (en) * 2014-08-18 2014-11-26 浪潮(北京)电子信息产业有限公司 Method and device for testing compatibility of server
US9893938B1 (en) * 2014-10-31 2018-02-13 Sorenson Ip Holdings, Llc Apparatuses and methods for distributed configuration management of communication devices
US10333778B2 (en) * 2015-03-25 2019-06-25 Airwatch, Llc Multiuser device staging
US10862747B2 (en) 2015-03-25 2020-12-08 Airwatch Llc Single user device staging
US10911299B2 (en) 2015-03-25 2021-02-02 Airwatch Llc Multiuser device staging
US11411813B2 (en) 2015-03-25 2022-08-09 Airwatch, Llc. Single user device staging
US20170026486A1 (en) * 2015-07-24 2017-01-26 Nvidia Corporation System, method and device for providing crowd-sourced, cloud-based custom tuning for applications
US9876875B2 (en) * 2015-07-24 2018-01-23 Nvidia Corporation System, method and device for providing crowd-sourced, cloud-based custom tuning for applications
US11269488B2 (en) 2015-08-25 2022-03-08 Samsung Electronics Co., Ltd. System for providing application list and method therefor
US11232372B2 (en) * 2018-11-09 2022-01-25 Cisco Technology, Inc. Merging and optimizing heterogeneous rulesets for device classification

Also Published As

Publication number Publication date
US20150154036A1 (en) 2015-06-04
TW201421363A (en) 2014-06-01
CN103809996A (en) 2014-05-21
US9569197B2 (en) 2017-02-14
US20140130064A1 (en) 2014-05-08
CN103809996B (en) 2017-09-26
US8978027B2 (en) 2015-03-10
TWI506555B (en) 2015-11-01

Similar Documents

Publication Publication Date Title
US20140129686A1 (en) Mobile computing device configured to filter and detect application profiles, a method of manufacturing the same and an external source for delivering hierarchical filtered application profiles to mobile computing devices
US11016748B2 (en) Revision locking
CN106658475B (en) Method and device for upgrading over-the-air technology
US9990475B2 (en) Apparatus and method of in-application licensing
US8162757B2 (en) Multiplayer platform for mobile applications
US20170295467A1 (en) Kiosk System for Downloading Media Content
CN102469114B (en) Open mobile terminal widget application platform, realization method thereof and server
CN104123149B (en) Method for upgrading software, device, client and system
US20090063179A1 (en) System and method for customizing user interfaces of electronic devices
US20130086695A1 (en) Method and system for remote access to data stored on a host system
WO2016138323A1 (en) Remote device modification
US9853929B2 (en) Service compatibility check for messages
KR20150008546A (en) Method and apparatus for executing secure download and function
CN103513998A (en) Method and device for generating upgrade package and method and terminal for upgrading dynamic documents in difference mode
CN109725952B (en) Method, system and related device for application program plug-in
WO2018033094A1 (en) Rich communication suite release platform, method and system for version update, and mobile terminal
CN110225124A (en) Vehicle data shares processing method, device, vehicle and medium
KR20190061060A (en) Profile-based content and services
US20190005207A1 (en) Apparatus and method of layered licensing
RU2618943C2 (en) Method, device and system for distribution of applications
CN105100132A (en) Terminal device and terminal device identification method and system
EP3977269A1 (en) Enabling upgrading firmware of a target device
CN106201588A (en) The method for upgrading software of terminal and terminal
JP2013517551A (en) Method, system and apparatus for execution of software applications
US10514935B2 (en) System and method for third party application enablement

Legal Events

Date Code Title Description
AS Assignment

Owner name: NVIDIA CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HAEMEL, NICHOLAS;DONOVAN, CATHY;CHAIT, DAVID;REEL/FRAME:030419/0551

Effective date: 20130515

STCV Information on status: appeal procedure

Free format text: ON APPEAL -- AWAITING DECISION BY THE BOARD OF APPEALS

STCV Information on status: appeal procedure

Free format text: BOARD OF APPEALS DECISION RENDERED

STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION