Patent Description:
Game controllers have been used to control a variety of computing devices from computers to game consoles. Typically, game controllers connect to computing devices via a wire connection. More recently game controllers have moved to wireless connections to the computing device.

Wireless game controllers require a power source other than power from the computing device itself. Wireless game controllers are typically battery powered. Battery powered game controllers can either use disposable, primary cell batteries such as alkaline batteries, NiOx batteries, Zinc-carbon batteries, etc. or rechargeable, secondary cell batteries such as NickelCadmium, lithium ion, Nickel-metal hydride, rechargeable alkaline etc..

Primary cell batteries have fallen out of favor, as they are wasteful and inconvenient. Primary cells are wasteful because they cannot be reused after they run out of electricity and must be thrown away. Primary cells are inconvenient for the user because after they run out of electricity the user must replace them with another battery that fits the game controller. There are many battery size standards and the user must know what size battery fits their controller. This creates problems for the user after they purchase a game controller because they will eventually have to buy or otherwise obtain batteries that fit the controller and they must remember the correct size of battery for the controller. Thus, rechargeable batteries represent a more favorable option for wireless device manufacturers because they are more convenient for the user.

Secondary cell batteries provide enhanced convenience for the user but also have their own problems. One advantage of secondary cell batteries is that they may be shipped with the game controller so that the user may use the controller immediately after purchase. A second advantage of secondary cell batteries is that the user does not need to frequently purchase new batteries for the game controller and may simply recharge the secondary cell battery provided with the controller. Recharging the secondary cell battery is also a major downside because charging can take a substantial amount of time and, unless the game controller is specially designed, the game controller is unusable during charging. Additionally, recharging the game controller requires the user to perform extra steps, such as pausing a game and plugging in the controller or switching to a new, charged controller. Previously proposed arrangements are disclosed by <CIT>,.

It is within this context that embodiments of the present invention arise.

The teachings of the present disclosure can be readily understood by considering the following detailed description in conjunction with the accompanying drawings, in which:.

Although the following detailed description contains many specific details for the purposes of illustration, anyone of ordinary skill in the art will appreciate that many variations and alterations to the following details are within the scope of the invention. Accordingly, examples of embodiments of the invention described below are set forth without any loss of generality to, and without imposing limitations upon, the claimed invention.

While numerous specific details are set forth in order to provide a thorough understanding of embodiments of the invention, those skilled in the art will understand that other embodiments may be practiced without these specific details. In other instances, well-known methods, procedures, components and circuits have not been described in detail so as not to obscure aspects of the present disclosure. Some portions of the description herein are presented in terms of algorithms and symbolic representations of operations on data bits or binary digital signals within a computer memory. These algorithmic descriptions and representations may be the techniques used by those skilled in the data processing arts to convey the substance of their work to others skilled in the art.

An algorithm, as used herein, is a self-consistent sequence of actions or operations leading to a desired result. These include physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated.

Unless specifically stated or otherwise as apparent from the following discussion, it is to be appreciated that throughout the description, discussions utilizing terms such as "processing", "computing", "converting", "reconciling", "determining" or "identifying," refer to the actions and processes of a computer platform which is an electronic computing device that includes a processor which manipulates and transforms data represented as physical (e.g., electronic) quantities within the processor's registers and accessible platform memories into other data similarly represented as physical quantities within the computer platform memories, processor registers, or display screen.

A computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks (e.g., compact disc read only memory (CD-ROMs), digital video discs (DVDs), Blu-Ray Discs™, etc.), and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, flash memories, or any other type of non-transitory media suitable for storing electronic instructions.

The terms "coupled" and "connected," along with their derivatives, may be used herein to describe structural relationships between components of the apparatus for performing the operations herein. Rather, in some particular instances, "connected" may indicate that two or more elements are in direct physical or electrical contact with each other. In some other instances, "connected", "connection", and their derivatives are used to indicate a logical relationship, e.g., between node layers in a neural network. "Coupled" may be used to indicated that two or more elements are in either direct or indirect (with other intervening elements between them) physical or electrical contact with each other, and/or that the two or more elements cooperate or communicate with each other (e.g., as in a cause and effect relationship).

According to aspects of the present disclosure, features of a controller and/or an associated computing device may enhance charging a controller or using a controller after charging.

<FIG> depicts a method for controller operation <NUM> according to aspects of the present disclosure. The flow diagram depicted in <FIG> illustrates controller operation when a user picks up a controller. As shown, the computing device may detect that the controller has been picked up, as indicate at <NUM>. The computing device may detect that the controller has been picked up when the controller changes state from a charging state to an operation state. Alternatively, the computing device may detect when the user picks up the controller using inertial data from the controller or by analyzing an image obtained with an image capture unit using an image analysis algorithm. Once the computing device detects that the controller has been picked up, the computing device may connect to the controller, as indicated at <NUM>. In some implementations, the computing device may include an internal state from a charging state to an operation state. In some implementations, connecting the computing device to the controller may include other operations, e.g., operations associated with establishing a wireless connection with the controller. After a connection has been established, the controller may begin operating as normally to control the computing device. Specifically, the computing device may receive inputs from the controller <NUM> and perform computations using those inputs and sending visual feedback corresponding to the input <NUM> to a display device.

Alternatively, during or after establishing a connection with the controller the computing device may sign-in to a user account or profile associated with the controller <NUM>. During or after establishing connection, the controller may transmit a unique code or other identifier information associated with the controller to the computing device. The computing device may have access to account or profile information associated with the unique code or other identifier information. The computing device may sign-in to the account or profile using the associated account information when the unique code or other identifier information is received from the controller. Non-limiting examples of other identifier information include an assigned controller name, an assigned controller number, a controller color, or other information that may be used to differentiate a first controller from a second controller. After signing into the account or profile associated with the controller, the computing device may return to normal operation, as indicated at <NUM>. According to additional aspects of the present disclosure, the computing device may resume an application associated with the controller after connecting to the controller at <NUM>. Resuming the application may take place after signing-in to an account associated with the controller, as indicated at <NUM> or may occur upon connection of the computing device to the controller at <NUM>. The computing device may automatically resume an application associated with the controller by automatically creating a log of the unique code or other identifier information and application state information whenever the user pauses an application. When the computing device receives the unique code or other identifier information, the computing device may use the unique code or other identifier information and the log to determine the state information of the application, start the application and load the state information of the application into memory to resume the application at the point where the user paused the application. In situations where the application is still running on the computing device, the application may simply be resumed. After the application resumes, the computing device may return to normal operation <NUM>.

User experience of controller operation is enhanced because the user does not have to pair their controller with the console each time they want to use the controller. It also having to manually sign-in to a user account and resume an application. Additionally, it would be advantageous for the computing device to automatically discern the user's identity when the controller is picked up.

<FIG> is a flow diagram depicting a method <NUM> for controller operation using contextual information according to aspects of the present disclosure. The method <NUM> begins when a computing device detects that a controller is picked up, as indicated at <NUM>. As discussed above the computing device may determine that the controller has been picked up when the controller changes states from a charging state to an operational state. Upon detecting this change in state or upon detecting that the controller has been picked up the computing device may change a controller state on the computing device from charging to operation. In other words, the computing device may connect to the controller. Before, during or after changing from a controller state on the computing device from a charging state to an operational state, the computing device may perform an analysis of the context surrounding the controller pick up or transition from charging state to operational state, as indicated at <NUM>. The analysis of the context surrounding the controller pick up or transition from charging state to operational state at <NUM> may use historical data, controller motion data and/or image data from an image capture unit.

Analysis of historical data at <NUM> may include use of a table or other log file containing past user sign-in times and/or application access times. This computing device may use this table to determine which user account to sign-in at <NUM> to or which application to resume or start at <NUM> after the computing device has determined that the controller state has changed from a charging state to an operation state. Alternatively, after signing-in the computing device to a user account or profile the computing device may use the historical data to determine an application to resume or start <NUM>.

<FIG> graphically depicts an example of contextual determination of an application resume operation with a controller when picked up by a user according to aspects of the present disclosure. As indicated by arrow <NUM> when a user <NUM> picks up a controller <NUM> from a charging pad <NUM> the controller device changes from a charging state to an operational state. The charging pad <NUM> may monitor the charging state of the controller <NUM> and the charging pad may send a signal to the computing device <NUM> indicating that the controller <NUM> is no longer charging and has therefore changed from a charging state to an operational state. The computing device <NUM> may use an internal clock <NUM> to determine the time that the user <NUM> picked up the controller <NUM> from the charging pad <NUM> and historical data <NUM> to determine an application historically resumed or started by the user and launch the determined application, as indicated at <NUM>. As shown for example and without limitation the computing device in <FIG> may receive a time when the controller changes from the charging state to an operational state from the charging pad, the computing device may use a table or other log files containing historical data <NUM> to look up applications started by the user at <NUM>:00PM. From the historical data the computing device determines that for example the user on average starts a movie streaming application on the computing device at <NUM>:00PM, the computing device may then launch the movie app at <NUM>.

Alternatively, the images from the user or the controller from an image capture unit may be used to determine the context of the user picking up the controller and the controller transitioning from a charging state to an operational state as shown in <FIG> is a diagram showing a computing device having an image capture unit for use with the methods for controller operation when picked up by a user according to aspects of the present disclosure. An image capture unit <NUM> may take an image such as a picture or video of a user <NUM> when the user picks up a controller <NUM> from a charger <NUM> as indicated by the arrow <NUM>. The image capture unit may be a camera, video camera, laser scanning device or other device that converts visible light or non-visible radiation (e.g., infrared or ultraviolet) into electrical signals that can be interpreted as an image. The charger <NUM> may send a signal to a computing device <NUM> that the controller is no longer charging and therefore the controller has changed states from a charging state to an operational state. This signal may trigger the image capture unit <NUM> to turn on and take an image of the user <NUM>. Alternatively, the image capture unit may always be on and analyzing images to determine when a user picks up the controller. The computing device <NUM> or a server in communication with the computing device may apply facial recognition algorithms to the image to recognize if a person is holding the controller <NUM> and the identity of the person holding the controller. The computing device <NUM> may include a database DB with associations between user-account and identifier information. The identifier information may be any information used to associate an image taken from the image capture unit with a user. Identifier information may be generated during an enrollment process for the user to sign-in to their account with the computing device <NUM>. During the enrollment process, images may be captured and identified with the user <NUM>. The identifier information generated from the identified images may be stored on the computing device and associated with corresponding user accounts, e.g., in the database DB. The identified images from any subsequent identification of the user <NUM> may also be stored for improving the identifier information. Once the identity of the user has been determined, the computing device <NUM> may, for example, sign-in to the account associated with the detected user <NUM>. Additionally, in some embodiments the computing device may resume or launch an application associated with the controller after signing into a user account.

In another alternative implementation, motion data from the controller may be used to determine the user's identity. For example, and without limitation the controller may include an inertial measurement unit (IMU) that include an accelerometer, gyroscope, tilt sensor or other sensor for controller movement. When a user picks up the controller, they may include a signature movement that is identifiable to that user. During enrollment of the user with a user account or profile, the computing device may record signature movement sensed by the IMU as signature movement information of the user, which may then be associated with a user account. Signature movement information may be stored on the computing device and associated with a user account, the signature movement information may include inertial data from the controller when the user picks up the controller. Thus, when a user picks up the controller and the inertial data from the controller matches the signature movement information, the user has been identified and the computing device may sign into the user account associated with the signature movement and the user holding the controller. For example and without limitation a person having tremors may enroll a user account on the computing device and during enrollment signature movement information of the person may be recorded as the person picks up the controller and puts the controller down several times. The signature information is then associated with a user account or profile in memory or an external database. The signature information for the user having tremors may include a combination of many unique acceleration spikes due to the user's condition. Thus, the controller detects the unique combination of spikes the computing device may sign-in to the associated user account.

<FIG> is a flow diagram showing a method for controller operation when placed in a charging state according to aspects of the present disclosure. The computing device may detect that the user has placed the controller down, as indicated at <NUM>. By way of example, and not by way of limitation, the computing device may detect that the controller has changed state from an operational state to a charging state or that the user or another person is not holding the controller. Detection of the change in state from an operational state to a charging state may use for example and without limitation a signal from a charging pad connected to the computing device, a signal from the controller or a signal from the image capture unit.

Upon detection that the user has placed the controller down at <NUM>, the computing device may (optionally) automatically pause an application that is running on the computing device, as indicated at <NUM>. The pause operation may save a state of the application running on the computing device so that the state may be loaded to resume the application if the device shuts down or the application closes or the device gets picked up again. Alternatively, the computing device may simply pause further processing of the application.

The charger, controller or computing device may include an ignore input that when triggered causes the computing device to ignore that the controller has been placed down by the user or has changed state from an operational state to a charging state. After detecting that the user has placed the controller down at <NUM> or (alternatively) the computing device has paused an application at <NUM>, the computing device may check if an ignore input signal has been received as indicated at <NUM>. The ignore input may be a button, a touchscreen press a switch, series of buttons, a controller movement, a voice command, a visual gesture that can be captured by image capture device or any other type of interface element that the computing interface interprets to be the ignore input. When the ignore input signal is not received after a time out period, the console may sign-out of a user account or profile and/or go into a sleep mode or shut down, as indicated at <NUM>. The sleep mode may be a power conservation mode where most of the features of the computing device are off or in a power saving mode but the state of the device is saved in memory so that the computing device may quickly 'waken' and the state of the device prior to sleeping is quickly restored. The time-out period may be set time the computing device waits to receive an ignore input signal the time out period may be any length for example and without limitation less than <NUM> seconds, less than a minute, less than <NUM> minutes, or no time out. When an ignore input signal is received before or during the time period, the computing device may ignore that the controller has been placed down or the controller has changed state from an operational state to charging state and maintain a connection with the controller, as indicated at <NUM>. Additionally, if the controller is put down or changes state from an operation state to a charging state after the ignore input is received and within an input reception time period then the computing device may ignore the change in state of the controller from operation to charging and maintain a connection with the controller at <NUM>. The input reception period may be the same length as the time-out period or may be a different length for example and without limitation less than <NUM> seconds, less than a minute, less than <NUM> minutes. If the ignore input is received and the controller is not placed down or does not change from an operational state to a charging state within the input reception time period then a subsequent change in controller state from "operational" to "charging" after the input reception period has elapsed will not cause the device to act as if the ignore input has been pressed. If the controller has been set down or has in a charging state and the ignore input has been received the computing device may maintain a connection with the controller at <NUM> and wait for further actions from the user. This provides the benefit that a player may temporarily set down their controller on a charging pad without putting the computing device to sleep or signing-out of their profile.

A common situation for controllers with rechargeable batteries occurs when the batteries of a first controller run out of energy. In such situations, a user may turn off the first controller, place it in a charging state, pick up a second controller that is fully charged and use the second controller in place of the first controller. According to some aspects of the present disclosure, an "ignore" button may facilitate such controller switching. The computing device may continually monitor a second controller for a change of state from a charging state to an operational state or for the second controller to be picked up while the first controller is in a charging state or set down, as indicated at <NUM>. In some cases, if a second controller is not picked up after a pick-up period the computing device may simply maintain a connection with the first controller, at <NUM>. If the first controller is not picked up or does not change state from the charging state to the operational state within a shutdown time period, the computing device may disconnect from the controller and sign-out from the user account and/or enter a sleep mode or shutdown. If a second controller is picked up or changes from a charging state to an operational state then the computing device may wait to detect if the first controller is also picked up or changes state from the charging state to the operational state, as indicated at <NUM>.

When the computing device detects that the first controller has been picked up within a controller exchange period, the computing device determines that two players want to play the game. Thus, the computing device connects to the second controller or changes an internal controller state for the second controller from charging to operation under a second user account or profile <NUM>. As such, the first controller is signed in under a first account or profile and the second controller is signed in under a second account or profile allowing two players or more to play on the computing device simultaneously. Settings and profile customization may be saved separately for each account associated with each controller.

While the described methods involve first and second controllers, these methods may be extended to any number of controllers including a third, fourth or more controllers.

When the first controller is not picked up within the controller exchange period, the first controller may be disconnected from the computing device, as indicated at <NUM>. Disconnection of the controller from the computing device may be accomplished by the computing device changing an internal state fort the controller from an operational state to a charging or non-operational state and subsequently ignoring inputs (except for some basic charging or signals when applicable) from the first controller. The computing device may then connect to the second controller under the first user account or profile at <NUM> thereby accomplishing controller switching as the user may use the second controller exactly as if it were the first controller.

<FIG> depict different embodiments of the present disclosure having different locations for the "ignore" input and/or different charging methods. <FIG> is a diagram that depicts a controller on a charger with an ignore input according to aspects of the present disclosure. As shown in <FIG>, a controller <NUM> may be placed on a charger <NUM>, e.g. a wireless charger or a charging pad that connects to the controller via electrically conductive contacts. The charger <NUM> is connected to a computing device <NUM> and includes an "ignore" input <NUM>. In this case the ignore input is an ignore button mounted to the case of the charger <NUM>. When the ignore input <NUM> is triggered by, for example, pressing the ignore button, the charger <NUM> may send an ignore signal to the computing device through the connection between the computing device and the charging pad. Here, the ignore button has not been pressed but the controller <NUM> has been set down on the charger <NUM> and the controller <NUM> has changed state from an operational state to charging state. The computing device <NUM> may receive a signal from the charging pad <NUM> that indicates to the computing device <NUM> that that the controller <NUM> is charging. The user in the example shown has the option to pause the applications on controller set down enabled, as such the computing device pauses an application <NUM> running on the computing device <NUM>.

<FIG> is a diagram showing a controller having an ignore input on a controller according to aspects of the present disclosure. In the example shown, a charger <NUM> is not in communication with the computing device <NUM> and is instead simply plugged in to a wall outlet <NUM>. The charger <NUM> may be a charging pad, charging cable, charging stand, or other similar charging device. The controller <NUM> is in communication with the computing device <NUM> via a wireless connection <NUM>. The controller <NUM> has been connected to the charger <NUM> the controller sends a wireless signal <NUM> to the computing device <NUM> notifying the computing device <NUM> that the controller <NUM> has changed state from an operational state to a charging state. When the "ignore" input <NUM> is triggered the controller may send a wireless signal <NUM> notifying the computing device <NUM> that the "ignore" input <NUM> has been triggered. Here, the ignore input <NUM> has not been triggered but the controller <NUM> has been connected to the charger <NUM>. The controller <NUM> wirelessly communicates <NUM> with the computing device <NUM> that it has changed a state from the operational state to the charging state. After the time-out period has elapsed the computing device signs out of a user account, as indicated at <NUM>. The advantage of this embodiment is that a specialized charging pad that communicates with the computing device does not need to be developed. The wireless signal may be, wireless internet, Bluetooth, near-field communication, infrared, etc..

<FIG> is a diagram depicting a computing device having an image capture unit for use with the methods for controller operation when placed on a charger according to aspects of the present disclosure. Use of an image capture unit <NUM> communicatively coupled to the computing device <NUM> allows even greater flexibility and options for controller operation. In the example depicted in <FIG>, the user has placed the controller <NUM> down upon a charger <NUM>. The image capture unit <NUM> may be configured to take images of an area <NUM> in front of a display device <NUM> that includes the charger <NUM>. The image capture unit <NUM> may take an image that the computing device recognizes as an indication that the user is not holding the controller or the controller has changed state from an operational state to a charging state. By way of example, and not by way of limitation, the captured image may show user setting the controller down or that the controller is not in the user's hands, or that the controller is on the charger. The computing device may use machine-learning algorithms with the images to aid in identification of whether the controller is being held by the user or has changed state from an operational state. Machine learning algorithms may include object detection algorithms, object recognition algorithms, facial recognition algorithms or the like. According to some aspects of the present disclosure, the image capture unit <NUM> may be used to determine whether the computing device <NUM> should sign out of a user account or profile. For example and without limitation computing device <NUM> may analyze images from the image capture unit <NUM> that include a user and a controller but the controller is not in the user's hands or is on the charger, in these cases the computing device <NUM> may interpret this as an ignore input and maintain a connection with the controller. Alternatively, the ignore input may be a series of button presses on the controller <NUM>. In some embodiments of the present disclosure there may not be a specialized ignore input button. Instead, a reprogrammable button, a series of button presses, or multiple simultaneous button presses may be used as an ignore input where the buttons have other functions when pressed individually or programmed differently. In the example shown, the controller <NUM> is on the charger <NUM> and the computing device <NUM> analyzes the image captured <NUM> by the image capture unit <NUM> and determines that there is no user nearby. Thus, no ignore input has been received and the computing device determined that the controller state has changed from an operational state to a charging state. The computing device <NUM> therefore signs out of a user account, as indicated at <NUM>, in accordance with the method described in <FIG>. With the use of an image capture unit, the presently described methods for controller operation may be used without a specialized hardware for the controller or charger.

<FIG> depicts a system <NUM> for controller operation and charging according to aspects of the present disclosure. The system <NUM> may include one or more processor units <NUM>, which may be configured according to well-known processor architectures, such as, e.g., single-core, dual-core, quad-core, multi-core, processor-coprocessor, cell processor, and the like. The marketplace server may also include one or more memory units <NUM> (e.g., random access memory (RAM), dynamic random-access memory (DRAM), read-only memory (ROM), and the like).

The processor unit <NUM> may execute one or more programs <NUM>, portions of which may be stored in the memory <NUM> and the processor <NUM> may be operatively coupled to the memory, e.g., by accessing the memory via a data bus <NUM>. The programs <NUM> may be configured to determine the operation state <NUM> of the system in response to a change in controller state <NUM> detected from a controller <NUM> according to the method described above with respect to <FIG> and/or <FIG> and/or <FIG>. The operation state <NUM> may determine whether the system is signed-in to a user account or profile or the system is in a sleep mode or shutting down. The operation state may also include state information for the system and applications running on the system. The state information may be loaded with the application <NUM> to resume the applications and/or the system. The memory <NUM> may store associations between user accounts and user identifiable information or controller identification information <NUM>. Additionally, the memory <NUM> may store historical information <NUM> that may be analyzed to determine the system's behavior with respect to applications <NUM> or an operation state <NUM> of the system <NUM>. The historical information <NUM> may include application use information, user account information, times of use information, image information etc. The memory <NUM> may store images <NUM> captured by the image capture unit <NUM> and algorithms <NUM> to analyze the images and determine a whether a user is holding the controller <NUM> or the controller <NUM> has changed state from an operational state to a charging state. The algorithms <NUM> may be machine learning algorithms such as object recognition algorithms, facial recognition algorithms etc. The Applications, Historical information, Algorithms, Associations, Operation state and controller state may also be stored as data <NUM> in the Mass Store <NUM>.

The system <NUM> may also include well-known support circuits, such as input/output (I/O) <NUM>, circuits, power supplies (P/S) <NUM>, a clock (CLK) <NUM>, and cache <NUM>, which may communicate with other components of the system, e.g., via the bus <NUM>. The computing device may include a network interface <NUM>. The processor unit <NUM> and network interface <NUM> may be configured to implement a local area network (LAN) or personal area network (PAN), via a suitable network protocol, e.g., Bluetooth, for a PAN. The computing device may optionally include a mass storage device <NUM> such as a disk drive, CD-ROM drive, tape drive, flash memory, or the like, and the mass storage device may store programs and/or data. The system may also include a user interface <NUM> to facilitate interaction between the system and a user. The user interface may include a display device such as monitor, Television screen, speakers, headphones or other devices that communicate information to the user. The display device may include visual, audio, or haptic display or some combination thereof. A controller <NUM> such as a mouse, keyboard, game controller, joystick, etc. may communicate with an I/O interface and provide control of the system to a user. Additionally, a charger <NUM> may optionally communicate with the system with the I/O interface <NUM>. The Charger may be a charging pad, charging cable, charging cradle or other device that provides power to the controller <NUM> to charge a battery in the controller <NUM>. An image capture unit such as a camera, video camera or other light transducing device may optionally be communication with the system with the I/O interface <NUM>.

Claim 1:
In a computing device configured to operate with a controller, a method for enhanced controller
operation, comprising:
detecting a change in a state of the controller from a charging state to an operation state with the computing device;
changing a state of the computing device from a controller charging state to a controller operation state in response to detecting the change in the state of the controller;
receiving an input from the controller with the computing device;
sending a visual indication of the input to a display device;
further characterized by:
automatically signing the computing device into a user account associated with the controller, or launching an application, or resuming the application, after detecting the change in the state of the controller.