This application is a U.S. National Phase patent application of and claims priority to PCT/EP2020/075635, filed Sep. 14, 2020, which claims priority to and the benefit of United Kingdom patent application 1913773.6 filed Sep. 24, 2019, each of the foregoing applications being incorporated herein by reference.
The present disclosure relates to a system, method, and computer program for use in determining a status of a mobile electronic device and, in particular though not exclusively, for use in determining a status of one or more hardware elements of a mobile phone, a smartphone, a tablet and/or a laptop.
It is known to install a diagnostic application on a mobile electronic device which, when executed by a processor of the mobile electronic device, may be used to verify whether the mobile electronic device is operating in an expected or desired manner. Such diagnostic applications may receive information indirectly from the OS of the mobile electronic device via the application programming interfaces (APIs) of the OS, which information relates to at least one of the status, the activation and/or the operation of one or more hardware inputs of the mobile electronic device. For example, such diagnostic applications may receive information indirectly from the OS of the mobile electronic device via APIs of the OS, which information relates to at least one of the status, the activation and/or the operation of one or more controls, one or more push buttons, a touchscreen, one or more sensors and the like of the mobile electronic device.
However, in some circumstances, it may not be technically possible to install and/or execute a diagnostic application on a mobile electronic device e.g. as a consequence of lack of memory available on the mobile electronic device. Additionally or alternatively, the installation and/or execution of a third-party diagnostic application on a mobile electronic device may be prohibited by a manufacturer of the mobile electronic device and/or a manufacturer of the OS of the mobile electronic device. Also, in some circumstances, the mobile electronic device may have one or more broken controls, one or more broken push buttons, a broken touchscreen, and/or one or more broken sensors which may prevent a user of the mobile electronic device from navigating to, or executing, a diagnostic application and/or which may prevent a user of the mobile electronic device from inputting and/or receiving instructions from the mobile electronic device.
According to an aspect of the present disclosure there is provided a method for use in determining a status of a mobile electronic device, the method comprising:
Such a method for use in determining the status of a mobile electronic device does not require the installation and/or execution of a diagnostic application on the mobile electronic device and can therefore be used even when it is not technically possible to install and/or execute a diagnostic application on the mobile electronic device e.g. as a consequence of lack of memory available on the mobile electronic device. Such a method for use in determining the status of the mobile electronic device may avoid any requirement to receive information indirectly from the OS of the mobile electronic device via the APIs of the OS. Additionally or alternatively, such a method for use in determining the status of the mobile electronic device may avoid any restrictions imposed by the manufacturer of the mobile electronic device and/or a manufacturer of an OS of the mobile electronic device, which restrictions may prohibit the installation and/or execution of a third-party diagnostic application on the mobile electronic device. Furthermore, such a method can still be applied even if the mobile electronic device has one or more broken controls, one or more broken push buttons, a broken touchscreen, and/or one or more broken sensors which may prevent a user of the mobile electronic device from navigating to, or executing, a diagnostic application and/or which may prevent a user of the mobile electronic device from inputting and/or receiving instructions from the mobile electronic device.
Repeatedly determining the status of the mobile electronic device may comprise repeatedly determining whether or not the mobile electronic device is operating in a predetermined manner.
The operation of the mobile electronic device in the predetermined manner may correspond to at least one of correct, normal, expected, default and desired operation of the mobile electronic device and/or operation of the mobile electronic device in compliance with one or more predetermined criteria.
The method may comprise reading information from the debug log stored in the ringbuffer at a plurality of different instants in time, wherein any two successive instants in time are separated by a time period which is sufficiently small so as to avoid an operating system of the mobile electronic device from over-writing any information in the debug log stored in the ringbuffer before the information can be read.
The method may comprise repeatedly reading information from the debug log at regular intervals.
The method may comprise reading at any one instant in time only such information from the debug log stored in the ringbuffer which is new or additional to the information read from the debug log at a preceding instant in time. The method may comprise identifying such information that is new or additional based on a time stamp of the corresponding entry in the debug log. The method may comprise reading the information from the debug log stored in the ringbuffer only at such instants in time when new information is added to the debug log stored in the ringbuffer. The method may comprise identifying such instants in time when new information is added to the debug log stored in the ringbuffer based on metadata of the debug log maintained by the OS of the mobile electronic device.
The method may comprise repeatedly identifying one or more entries in, or portions of, the event history which are associated with at least one of the status, the activation and/or the operation of a hardware element of the mobile electronic device.
The method may comprise repeatedly determining the status of the hardware element based on the identified one or more entries in, or portions of, the event history.
Repeatedly identifying the one or more entries in, or portions of, the event history which are associated with at least one of the status, the activation and/or the operation of the hardware element may comprise repeatedly searching the event history for at least one of one or more characters, one or more symbols, one or more keywords, and one or more commands associated with at least one of the status, the activation and/or the operation of the hardware element.
The method may comprise repeatedly parsing the identified one or more entries in, or portions of, the event history. The method may comprise repeatedly determining the status of the hardware element based on the one or more parsed entries in, or portions of, the event history.
Determining the status of the hardware element may comprise determining whether or not the hardware element is operating in a predetermined manner.
The operation of the hardware element in the predetermined manner may correspond to at least one of correct, normal, expected, default and desired operation of the hardware element and/or operation of the hardware element in compliance with one or more predetermined criteria.
The hardware element may comprise at least one of a transducer, a component, and a device.
The hardware element may comprise an input element. The hardware element may comprise output element.
The hardware element may comprise at least one of a control, a push button, a knob, a switch, a key, a keyboard, a keypad, a sensor, an accelerometer, an image sensor, a microphone, a proximity sensor, a motion sensor, a user interface and a touchscreen.
The hardware element may comprise at least one of an indicator, a display, a speaker, a user interface and a touchscreen.
The method may comprise setting, controlling or enabling the mobile electronic device so that an operating system of the mobile electronic device writes information relating to the operation of the mobile electronic device to the debug log stored in the ringbuffer of the mobile electronic device.
The method may comprise setting, controlling or enabling the mobile electronic device so as to increase a level of detail of the information relating to the operation of the mobile electronic device which the operating system of the mobile electronic device writes to the debug log stored in the ringbuffer of the mobile electronic device.
The method may comprise setting, controlling or enabling the mobile electronic device so as to cause the operating system of the mobile electronic device to perform verbose logging.
The mobile electronic device may comprise an iOS device or an iOS operating system. The method may comprise using the syslog relay service when the mobile electronic device is in normal mode.
The mobile electronic device may comprise an Android device or an Android operating system. The method may comprise enabling USB debugging.
The method may comprise using an external processing resource which is external to the mobile electronic device to repeatedly read information from the debug log stored in the ringbuffer of the mobile electronic device.
The method may comprise using the external processing resource to cause an external display which is external to the mobile electronic device to repeatedly display information representative of the determined status of the mobile electronic device.
The method may comprise using the external processing resource to cause the external display to display information for guiding or prompting a user of the mobile electronic device to perform one or more actions in relation to the mobile electronic device. The one or more actions to be performed in relation to the mobile electronic device may comprise setting, controlling or enabling the mobile electronic device or activating or operating an input element of the mobile electronic device. Further, the one or more actions to be performed in relation to the mobile electronic device may comprise setting, controlling or enabling the mobile electronic device or activating or operating an input element of the mobile electronic device so as to increase a level of detail of the information relating to the operation of the mobile electronic device.
The method may comprise repeatedly reading information from the debug log stored in the ringbuffer of the mobile electronic device after the external display has displayed the information for guiding or prompting the user to perform one or more actions in relation to the mobile electronic device. The method may comprise repeatedly using the information read from the debug log to construct and maintain an event history for the mobile electronic device. The method may comprise repeatedly determining whether the one or more actions have been performed in relation to the mobile electronic device based on the event history.
The method may comprise using the external processing resource to cause the external display to sequentially display information on the external display to sequentially guide or prompt a user of the mobile electronic device to sequentially perform a plurality of actions in relation to the mobile electronic device.
The method may comprise repeatedly reading information from the debug log stored in the ringbuffer of the mobile electronic device after the external display has displayed the information for guiding or prompting the user to perform each one of the plurality of actions in relation to the mobile electronic device. The method may comprise repeatedly using the information read from the debug log to construct and maintain an event history for the mobile electronic device. The method may comprise repeatedly determining whether each one of the plurality of actions has been performed in relation to the mobile electronic device based on the information read from the debug log.
The external processing resource and/or the external display may be part of an external computing resource such as a PC which is external to the mobile electronic device and which is configured for communication with the mobile electronic device.
The external computing resource may be configured for communication with the mobile electronic device via one or more wires or a cable such as a USB cable connected between the external computing resource and the mobile electronic device.
The mobile electronic device may comprise a mobile phone, a smartphone, a tablet or a laptop.
According to an aspect of the present disclosure there is provided a method for use in determining a status of a mobile electronic device.
The method may comprise repeatedly reading information from a debug log stored in a ringbuffer of the mobile electronic device.
The method may comprise repeatedly using the information read from the debug log to construct and maintain an event history for the mobile electronic device.
The method may comprise repeatedly determining the status of the mobile electronic device based on the event history.
According to an aspect of the present disclosure there is provided a system for use in determining a status of a mobile electronic device, the system comprising an external processing resource which is external to the mobile electronic device, wherein the external processing resource is configured for communication with the mobile electronic device and is configured to perform any of the methods described above.
According to an aspect of the present disclosure there is provided a computer program for use in determining a status of a mobile electronic device, the computer program being configured so that, when executed by an external processing resource external to the mobile electronic device, the external processing resource performs any of the methods described above.
It should be understood that any one or more of the features of any one of the preceding aspects of the present disclosure may be combined with any one or more of the features of any of the other preceding aspects of the present disclosure.
A system, method and computer program for use in determining a status of a mobile electronic device will now be described by way of non-limiting example only with reference to the following drawings of which:
Referring initially to
As shown in
The PC 6 includes a processing resource in the form of a processor 40, a memory 42 and a display 44. The memory 42 stores a computer program 46 which, when executed by the processor 40, causes the processor 40 to perform a method as described below.
In use, with the iPhone 4 configured in normal mode, the OS of the iPhone 4 repeatedly receives information relating to the status, activation and/or operation of the hardware elements 10, 12, 13, 14, 16, 18, 22, 24 and writes the received information to the debug log 34 stored in the ringbuffer 32 via the syslog relay service. As will be described in more detail below, when the iPhone 4 is connected to the PC 6 via the cable 8 and the processor 40 of the PC 6 executes the computer program 46, the processor 40 of the PC 6 repeatedly reads information from the debug log 34 stored in the ringbuffer 32 of the iPhone 4, the processor 40 repeatedly uses the information read from the debug log 34 to construct and maintain an event history for the iPhone 4, and the processor 40 repeatedly determines a status of the smartphone 4 based on the event history.
For example,
As will be described in more detail below, when the processor 40 of the PC 6 executes the computer program 46, the processor 40 repeatedly reads information from the debug log 34 stored in the ringbuffer 32 of the iPhone 4 and determines the status of hardware elements 10, 12, 13, 14, 16, 18, 22, 24 based on the information read from the debug log 34 and updates the graphical representation 50 of the iPhone 4 displayed on the display 44 of the PC 6 accordingly. For example, if the processor 40 determines that the power key 10 of the iPhone 4 has been activated, the processor 40 causes the display 44 of the PC 6 to update the graphical representation of the power key 10 from the yellow coloured dot or circle 52 shown in
More specifically, when the processor 40 of the PC 6 executes the computer program 46, the processor 40 repeatedly reads information from the debug log 34 stored in the ringbuffer 32 of the iPhone 4 at a plurality of different instants in time, wherein any two successive instants in time are separated by a time period which is sufficiently small so as to avoid the OS of the iPhone 4 from over-writing any information in the debug log 34 stored in the ringbuffer 32 before the processor 40 can read the information. Specifically, when the processor 40 of the PC 6 executes the computer program 46, the processor 40 obtains the contents of the debug log 34 stored in the ringbuffer 32 of the iPhone 4 by executing an “idevicesyslog” command. The processor 40 reads only the information from the debug log 34 stored in the ringbuffer 32 at one instant in time which is new or additional to the information which the processor 40 reads from the debug log 34 at a preceding instant in time. By proceeding in this way, there is no need for the processor 40 to repeatedly read the whole debug log 34 at each instant in time. The processor 40 uses the information which is repeatedly read from the debug log 34 to construct and maintain an event history for the iPhone 4 which includes an event history of each of the hardware elements 10, 12, 13, 14, 16, 18, 22, 24. The event history for the iPhone 4 may also include any errors or warnings which the OS of the iPhone 4 has encountered or generated during execution of the computer program 46.
The processor 40 repeatedly searches the event history to identify any entries in, portions of, or lines of code of, the event history which contain one or more characters, one or more symbols, one or more keywords, or one or more commands associated with at least one of the status, the activation and/or the operation of each hardware element 10, 12, 13, 14, 16, 18, 22, 24. For example, the processor 40 repeatedly executes a “grep” command for each of the hardware elements 10, 12, 13, 14, 16, 18, 22, 24 of the iPhone 4 to repeatedly search the event history and identify any entries in, portions of, or lines of code of, the event history which contain one or more characters, one or more symbols, one or more keywords, or one or more commands associated with at least one of the status, the activation and/or the operation of each hardware element 10, 12, 13, 14, 16, 18, 22, 24. The processor 40 repeatedly determines the status of each hardware element 10, 12, 13, 14, 16, 18, 22, 24 from the corresponding entries in, portions of, or lines of code of, the event history identified during the search. For example, the processor 40 repeatedly determines the status of each hardware element 10, 12, 13, 14, 16, 18, 22, 24 by repeatedly parsing the corresponding lines of code of the event history identified during the search. The processor 40 causes the display 44 of the PC 6 to repeatedly update the graphical representation 50 of the iPhone 4 including the graphical representations of each hardware element 10, 12, 13, 14, 16, 18, 22, 24 according to the determined status of each hardware element 10, 12, 13, 14, 16, 18, 22, 24. At the instant in time corresponding to
Referring now to
When the processor 40 of the PC 6 executes the computer program 46, the processor 40 repeatedly reads information from the debug log 34 stored in the ringbuffer 32 of the iPhone 4. The processor 40 uses the information read from the debug log 34 to construct and maintain an event history for the iPhone 4. The processor 40 determines the status of hardware elements 10, 12, 13, 14, 16, 18, 22, 24 based on the event history and updates the graphical representation 50 of the iPhone 4 displayed on the display 44 of the PC 6 accordingly. For example, if the processor 40 determines that the proximity sensor 22 of the iPhone 4 has been activated, the processor 40 causes the display 44 of the PC 6 to update the graphical representation of the proximity sensor 22 from the yellow coloured dot or circle 52 shown in
Similarly,
Although not described above, one of ordinary skill in the art will understand that when the program 46 is executed by the processor 40, the processor 40 may detect the status, activation and/or operation of any of the hardware elements 10, 12, 13, 14, 16, 18, 22, 24 and update the graphical representation 50 of the iPhone 4 on the display 44 of the PC 6 accordingly using a method which is essentially identical to the methods described above with reference to
In this way, the processor 40 may determine whether or not any of the hardware elements 10, 12, 13, 14, 16, 18, 22, 24 are operating in a predetermined manner. For example, the processor 40 may determine whether or not any of the hardware elements 10, 12, 13, 14, 16, 18, 22, 24 are operating in a predetermined manner which corresponds to at least one of correct, normal, expected, default and desired operation of the hardware element and/or operation of the hardware element in compliance with one or more predetermined criteria. Such methods may be useful for diagnosing faults or problems with any of the hardware elements 10, 12, 13, 14, 16, 18, 22, 24.
The processor 40 may determine whether or not the iPhone 4 is operating in a predetermined manner. For example, the processor 40 may determine whether or not the iPhone 4 is operating in a predetermined manner which corresponds to at least one of correct, normal, expected, default and desired operation of the iPhone 4 and/or operation of the iPhone 4 in compliance with one or more predetermined criteria. Such methods may be useful for diagnosing faults or problems with the iPhone 4.
It should be understood that the methods for use in determining the status of the iPhone 4 described above with reference to
In a variant of the method for use in determining the status of the iPhone 4 described above with reference to
The processor 40 may cause the display 44 of the PC 6 to sequentially display information which sequentially guides or prompts a user of the iPhone 4 to sequentially perform a plurality of actions in relation to the iPhone 4. The method may comprise repeatedly reading the information from the debug log 34 stored in the ringbuffer 32 of the iPhone 4 after the display 44 of the PC 6 has displayed the information for guiding or prompting the user to perform each one of the plurality of actions in relation to the iPhone 4. The method may comprise determining whether each one of the plurality of actions has been performed in relation to the iPhone 4 based on the event history.
One of ordinary skill in the art will understand that various modifications are possible to the system and methods described above. For example, although the foregoing methods are described in the context of an iPhone, it should be understood that the same methods may be applied to a mobile electronic device of any kind, for example to other types, kinds or makes of mobile phone or smartphone, to a tablet and/or to a laptop. In particular, it should be understood that the same methods may be applied to a mobile electronic device running an operating system other than an iOS operating system. For example, the same methods may be applied to a mobile electronic device running an Android operating system.
The method may comprise setting, controlling or enabling the mobile electronic device so as to increase a level of detail of the information relating to the operation of the mobile electronic device which the operating system of the mobile electronic device writes to the debug log stored in the ringbuffer of the mobile electronic device.
The method may comprise setting, controlling or enabling the mobile electronic device so as to cause the operating system of the mobile electronic device to perform verbose logging.
The mobile electronic device may comprise an iOS device or an iOS operating system. The method may comprise using the syslog relay service when the mobile electronic device is in normal mode.
The mobile electronic device may comprise an Android device or an Android operating system. The method may comprise enabling USB debugging.
The mobile electronic device may comprise more or fewer hardware elements than the hardware elements described above. For example, the mobile electronic device may comprise at least one of a microphone, an image sensor and a speaker.
One of ordinary skill in the art will understand that one or more of the features of the embodiments of the present disclosure described above with reference to the drawings may produce effects or provide advantages when used in isolation from one or more of the other features of the embodiments of the present disclosure and that different combinations of the features are possible other than the specific combinations of the features of the embodiments of the present disclosure described above.
Number | Date | Country | Kind |
---|---|---|---|
1913773 | Sep 2019 | GB | national |
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/EP2020/075635 | 9/14/2020 | WO |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2021/058310 | 4/1/2021 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
10560824 | Kerr | Feb 2020 | B1 |
20120047439 | Harlan | Feb 2012 | A1 |
20150074052 | Srinivasan | Mar 2015 | A1 |
20150215472 | Kandregula | Jul 2015 | A1 |
20180268783 | Woo | Sep 2018 | A1 |
20180359244 | Cockerill | Dec 2018 | A1 |
20200245134 | Kaczynski | Jul 2020 | A1 |
Number | Date | Country |
---|---|---|
108763020 | Nov 2018 | CN |
3367645 | Aug 2018 | EP |
Entry |
---|
Steve Heath, Embedded Systems Design, 2003, ISBN: 0 7506 5543 1, pp. 351-352 (4 pages total). |
UK Search Report dated Jul. 14, 2020 (Jul. 14, 2020) issued on related application GB1913773.6 by the United Kingdom Patent Office. |
Notice of Reasons for Refusal / Japanese Office Action dated Oct. 25, 2024 (Oct. 25, 2024), 6 pages, issued on related Japanese Patent Application JP 2022-518974, by the Japanese Patent Office. |
Number | Date | Country | |
---|---|---|---|
20220377165 A1 | Nov 2022 | US |