Computer program product and method of controlling information processing apparatus

By using different APIs to obtain IP addresses under the host OS and guest OS, the problem of information processing equipment judging network ownership in different operating environments is solved, and more efficient communication mode adjustment and program convenience are achieved.

CN120335883APending Publication Date: 2025-07-18CANON KK
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202510054915.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-01-16
Filing Date
2025-01-14
Publication Date
2025-07-18

AI Technical Summary

Technical Problem

In the operating environment of host OS and guest OS, it is difficult for the prior art to effectively determine whether the information processing device belongs to a specific network, resulting in the inability to adjust the communication mode appropriately, affecting the convenience of the program.

Method used

By using different APIs under the host OS and the guest OS, the IP address of the information processing device is obtained, and the IP address is determined based on the IP address, so as to appropriately adjust the communication mode.

Benefits of technology

Improve program convenience in the host OS and guest OS operating environments, ensuring effective communication and functional execution between the information processing device and the communication device.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120335883A_ABST
    Figure CN120335883A_ABST
Patent Text Reader

Abstract

The invention relates to a computer program product and a method of controlling an information processing apparatus. A second device has a second operating environment on a second OS operating as a host OS and on a guest OS, the second device: obtaining a second IP address of the second device through a second API different from the first API based on an operating environment of a predetermined program being the second operating environment; performing a second determination process for determining whether the second device belongs to the first network using a second IP address obtained through the second API; and performing the first process based on the determination that the second device belongs to the first network in the second determination process, and performing the second process based on the determination that the second device does not belong to the first network in the second determination process.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to a computer program product and a method of controlling an information processing device. Background Art

[0002] Japanese Unexamined Patent Application Publication No. 2009-049679 describes a configuration in which two virtual computers are implemented on a memory (one virtual computer runs on an image processing device OS (host OS) and the other virtual computer runs on a thin client OS (guest OS)). Summary of the Invention

[0003] The present invention provides a computer program product capable of improving the convenience of programs that can be run in an operating environment (the operating environment is on an OS running as a host OS and on a guest OS), and a method of controlling an information processing device.

[0004] In a first aspect, the present invention provides a computer program product including a predetermined program that can operate on an operating system and is configured to cause a computer to execute a method, the method including: causing a computer of a first information processing device having a first operating environment on a first OS operating as a host OS but not on a guest OS: based on the operating environment of the predetermined program being the first operating environment, obtaining a first IP address of the first information processing device through a first application programming interface, i.e., a first API, performing a first determination process for determining, using the first IP address obtained through the first API, whether the first information processing device belongs to a first network formed by a communication device external to the first information processing device, and based on a determination in the first determination process that the first information processing device belongs to the first network, performing a first process, and based on a determination in the first determination process that the first information processing device does not belong to the first network, performing a second process different from the first process; and causing a computer of a second information processing device having a second operating environment on a second OS operating as the host OS and on the guest OS: based on the operating environment of the predetermined program being the second operating environment, obtaining a second IP address of the second information processing device through a second API different from the first API, performing a second determination process for determining, using the second IP address obtained through the second API, whether the second information processing device belongs to the first network, and based on a determination in the second determination process that the second information processing device belongs to the first network, performing the first process, and based on a determination in the second determination process that the second information processing device does not belong to the first network, performing the second process.

[0005] The present invention in its second aspect provides a method for controlling a first information processing device and a second information processing device. The first information processing device has a predetermined program capable of running on an operating system, i.e., an OS, and has a first operating environment on a first OS running as a host OS but not on a guest OS. The second information processing device has the predetermined program and has a second operating environment on a second OS running as the host OS and also on the guest OS. The method includes: in the first information processing device, based on the operating environment of the predetermined program being the first operating environment, obtaining a first IP address of the first information processing device through a first application programming interface, i.e., a first API; in the first information processing device, performing a first determination process for determining whether the first information processing device belongs to a first network formed by a communication device external to the first information processing device by using the first IP address obtained through the first API; in the first information processing device, based on a determination in the first determination process that the first information processing device belongs to the first network, performing a first process, and in the first information processing device, based on a determination in the first determination process that the first information processing device does not belong to the first network, performing a second process different from the first process; in the second information processing device, based on the operating environment of the predetermined program being the second operating environment, obtaining a second IP address of the second information processing device through a second API different from the first API; in the second information processing device, performing a second determination process for determining whether the second information processing device belongs to the first network by using the second IP address obtained through the second API; and in the second information processing device, based on a determination in the second determination process that the second information processing device belongs to the first network, performing the first process, and in the second information processing device, based on a determination in the second determination process that the second information processing device does not belong to the first network, performing the second process.

[0006] According to the present invention, the convenience of a program that can run in an operating environment (the operating environment is on an OS running as a host OS and on a guest OS) can be improved.

[0007] More features of the present invention will become apparent from the following description of exemplary embodiments with reference to the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0008] Figure 1 is a diagram illustrating the structure of a communication system.

[0009] Figure 2A and Figure 2BIt is a diagram illustrating the software structure of an information processing device.

[0010] Figure 3 It is a diagram illustrating the screen displayed by a communication app (application).

[0011] Figure 4 It is a flowchart illustrating the processing performed by a communication app.

[0012] Figure 5 It is a diagram illustrating the screen displayed by a communication app.

[0013] Figure 6 It is a diagram illustrating the screen displayed by a communication app.

[0014] Figure 7 It is a flowchart illustrating the processing performed by a communication app.

[0015] Figure 8 It is a flowchart illustrating the processing performed by a communication app.

[0016] Figure 9 It is a diagram illustrating the screen displayed by a communication app.

[0017] Figure 10A and Figure 10B It is a diagram illustrating the screen displayed by a communication app.

[0018] Figure 11A and Figure 11B It is a flowchart illustrating the processing performed by a communication app. Detailed Description of the Embodiment

[0019] Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. Note that the following embodiments are not intended to limit the scope of the claimed invention. In the embodiments, multiple features are described, but the invention is not limited to an invention that requires all such features, and multiple such features can be appropriately combined. In addition, in the drawings, the same reference numerals are given to the same or similar structures, and redundant descriptions thereof are omitted.

[0020] Incidentally, with the spread of the operating environment on the OS running as the host OS and on the guest OS, it is desired to improve the convenience of programs that can run in such an operating environment.

[0021] According to an aspect of the present invention, the convenience of programs that can run in a running environment (the operating environment on the OS running as the host OS and on the guest OS) can be improved.

[0022] First Embodiment

[0023] The information processing device and the communication device included in the communication system according to the present embodiment will be described below. This embodiment describes a smart phone as an example of an information processing device, but the information processing device is not limited thereto, and any of various devices such as a mobile terminal, a laptop PC, a tablet terminal, a personal digital assistant (PDA), or a digital camera can be applied to the information processing device. Similarly, any device in various devices can be applied as a communication device as long as the device can communicate with the information processing device wirelessly. For example, if the device is a printer, the printer can be an inkjet printer, a full-color laser beam printer, or a black and white printer. However, the device is not limited to a printer, and can also be applied to a scanner, a copier, a fax device, a mobile terminal, a smart phone, a laptop PC, a tablet terminal, a PDA, a digital camera, a music playback device, a TV, or a smart speaker. The device may also be a multifunction peripheral equipped with multiple functions such as a copy function, a fax function, a printing function, and a scanner function. This embodiment assumes that the communication device is a multifunction printer with a printing function and a scanner function.

[0024] Hardware structure of the device

[0025] First, refer to Figure 1 The structure of the information processing device included in the communication system of this embodiment and the structure of the communication device capable of communicating with the information processing device are explained in the block diagram in the figure. Although this embodiment will explain an example having the following structure, the function is not intended to be particularly limited to Figure 1 content.

[0026] The information processing device 101 includes an input interface 102, a CPU 103, a ROM 104, a RAM 105, an external storage device 106, an output interface 107, a console unit 108, a communication unit 109, a short-range wireless communication unit 110, and a camera 111, etc. The input interface 102 is an interface for accepting data input and operation instructions from a user, etc., and is composed of a physical keyboard, display buttons, or a touch panel, etc. Note that the output interface 107 (described later) and the input interface 102 can be implemented by the same structure, where the structure both outputs a screen and accepts operations from the user.

[0027] The CPU 103 is the system control unit and overall controls the information processing device 101. The ROM 104 stores fixed data such as control programs executed by the CPU 103, data tables, and embedded operating system (hereinafter referred to as "OS") programs. In this embodiment, the control program stored in the ROM 104 performs software execution control such as scheduling, task switching, and interrupt processing under the management of the embedded OS stored in the ROM 104. Note that this embodiment assumes that the OS stored in the ROM 104 and running on the information processing device 101 is the Android (registered trademark) OS or the Chrome (registered trademark) OS, both of which are provided by Google. If the OS running on the information processing device 101 is the Chrome OS, it is assumed that the ROM 104 also stores a virtual Android OS for running the Android OS apps (described later) on the information processing device 101.

[0028] The RAM 105 is composed of a static random access memory (SRAM) etc. that requires a backup power supply. Note that the RAM 105 holds data in a primary battery (not shown) for data backup, and thus can store important data such as program control variables in a non-volatile state. A storage area for storing the setting information of the information processing device 101 and the management data of the information processing device 101 etc. is also provided in the RAM 105. The RAM 105 serves as the main memory and working memory of the CPU 103.

[0029] The external storage device 106 includes an application program (hereinafter referred to as "communication app") having a function for communicating with the communication device 151. Specifically, the communication app is an app having a printing function for causing the communication device 151 to perform printing and a scanning function for causing the communication device 151 to perform scanning, etc. However, the communication app is not limited thereto, and may be an app having only a printing function or a scanning function (printing app or scanning app), or may be an app having other functions. For example, the communication app may be a setting app having a function for executing network setting processing for connecting the communication device 151 to an external access point. This embodiment assumes that the communication app includes all functions of a printing function, a scanning function, and a function for executing network setting processing. The external access point is, for example, the access point 131 described later. In addition, the external storage device 106 includes various types of programs, such as a print information generation program for generating print information that can be interpreted by the communication device 151, and an information transmission / reception control program for transmitting information to and receiving information from the connected communication device 151 through the communication unit 109, etc. These programs may be included in the above app, or may be configured separately from the app. The external storage device 106 also stores various information used by these programs. The external storage device 106 also stores image data obtained from other information processing devices or the Internet through the communication unit 109. This embodiment assumes that the communication app is an app for the Android OS.

[0030] The output interface 107 is an interface for controlling the console unit 108 to display data and for notifying the state of the information processing device 101, etc. The console unit 108 is composed of a light-emitting diode (LED) or a liquid crystal display (LCD), etc., and displays data and notifies the state related to the information processing device 101, etc. Note that by providing a software keyboard including a numeric input key, a mode setting key, a confirmation key, a cancel key, and a power key, etc. in the console unit 108, input from the user can be accepted through the console unit 108.

[0031] The communication unit 109 is connected to a device such as the communication device 151 and is configured to communicate data. For example, the communication unit 109 can be connected to an access point (not shown) in the communication device 151. Connecting the communication unit 109 to the access point in the communication device 151 enables the information processing device 101 and the communication device 151 to communicate with each other. The access point may hereinafter be referred to as "AP". Note that the communication unit 109 can communicate directly with the communication device 151 wirelessly, or can communicate through an access point 131 external to the information processing device 101 and the communication device 151. This embodiment assumes the use of the IEEE 802.11 series communication standard as the wireless communication method. The IEEE 802.11 series communication standard is Wi-Fi (registered trademark).

[0032] A device such as a wireless LAN router can be given as an example of the access point 131. Note that in this embodiment, the method in which the information processing device 101 and the communication device 151 are directly connected without using an external access point will be referred to as the "direct connection method". The method in which the information processing device 101 and the communication device 151 are connected via the external access point 131 will hereinafter be referred to as the infrastructure connection method.

[0033] The short-range wireless communication unit 110 is a structure for wirelessly connecting to a device at a short distance such as the communication device 151 and communicating data, and communicates using a communication method different from that of the communication unit 109. The short-range wireless communication method used by the short-range wireless communication unit 110 is, for example, Bluetooth (registered trademark) or near field communication (NFC), etc. The type of Bluetooth can be Bluetooth Classic or Bluetooth Low Energy. The short-range wireless communication unit 110 can be connected to the short-range wireless communication unit 157 in the communication device 151.

[0034] The imaging device 111 is a device that converts an image captured by an image sensor into digital data. The digital data is initially stored in the RAM 105. Then, the digital data is converted into a predetermined image format by a program executed by the CPU 103, and the resulting data is stored as image data in the external storage device 106.

[0035] The communication device 151 includes a ROM 152, a RAM 153, a CPU 154, a print engine 155, a communication unit 156, a short-range wireless communication unit 157, an input interface 158, an output interface 159, a console unit 160, a scan control unit 161, etc. When a connection mode (communication mode) is set, the communication device 151 can operate in the set connection mode.

[0036] The communication unit 156 is a structure used for the communication device 151 to communicate with other devices. In this embodiment, the communication unit 156 communicates according to the IEEE 802.11 series of communication standards. The communication unit 156 has an access point for connecting to a device such as the information processing device 101, which serves as an access point within the communication device 151. The access point can be connected to the communication unit 109 of the information processing device 101. Note that the communication unit 156 can communicate directly with the information processing device 101 wirelessly, or can communicate via the access point 131. Additionally, the communication unit 156 can include hardware serving as an access point, or can operate using software for serving as an access point as an access point. This embodiment assumes that the communication unit 156 and the short-range wireless communication unit 157 are implemented as a single wireless chip. In other words, in this embodiment, it is assumed that a combined chip is used, which processes both the IEEE 802.11 series of communication standard communication functions and the communication functions based on short-range wireless communication. However, the configuration is not limited thereto, and the communication unit 156 and the short-range wireless communication unit 157 can be implemented by separate wireless chips.

[0037] The RAM 153 is composed of a DRAM or the like that requires a backup power supply. Note that the RAM 153 holds data by being supplied with a power supply (not shown) for data backup, and thus can store important data such as program control variables in a non-volatile state. The RAM 153 also serves as the main memory and working memory of the CPU 154, and operates as a reception buffer for temporarily storing print information received from the information processing device 101 or the like, and stores various types of information and the like.

[0038] The ROM 152 stores fixed data such as control programs executed by the CPU 154, data tables, and OS programs. In this embodiment, the control program stored in the ROM 152 performs software execution control such as scheduling, task switching, and interrupt processing under the management of the embedded OS stored in the ROM 152. A storage area is also provided in the ROM 152 for storing data that needs to be retained even when power is not supplied (such as the setting information of the communication device 151 and the management data of the communication device 151).

[0039] The CPU 154 is the system control unit and overall controls the communication device 151. Based on the information stored in the RAM 153 and the print job received from the information processing device 101 or the like, the print engine 155 forms an image on a recording medium such as paper using a recording agent such as ink and outputs the printed result. At this time, the print job sent from the information processing device 101 or the like involves sending a large amount of data and requires high-speed communication, so it is received via the communication unit 156 that can perform communication faster than the short-distance wireless communication unit 157.

[0040] The short-distance wireless communication unit 157 is a structure for wirelessly connecting to a device at a short distance such as the information processing device 101 or the like and communicating data, and communicates using a communication method different from that of the communication unit 156. The short-distance wireless communication method used by the short-distance wireless communication unit 157 is, for example, Bluetooth (registered trademark) or NFC, etc. The type of Bluetooth can be Bluetooth Classic or Bluetooth Low Energy. The short-distance wireless communication unit 157 can be connected to the short-distance wireless communication unit 110.

[0041] The input interface 158 is an interface for accepting data input and operation instructions, etc. from the user, and is composed of a physical keyboard, buttons, a touch panel, etc. Note that the output interface 159 (described later) and the input interface 158 can be implemented by the same structure that both outputs a screen and accepts operations from the user. The output interface 159 is an interface for controlling the console unit 160 to display data and for notifying the status of the communication device 151, etc.

[0042] The console unit 160 is composed of a display unit such as a light-emitting diode (LED) or a liquid crystal display (LCD), and displays data and notifies the status related to the communication device 151, etc. Note that by setting a software keyboard including a numeric input key, a mode setting key, a confirmation key, a cancel key, and a power key, etc. in the console unit 160, input from the user can be accepted through the console unit 160.

[0043] The scan control unit 161 includes an image sensor unit (reading unit) for scanning the image of the original placed on the original platen or an automatic document feeder (ADF) (not shown). The image sensor unit includes a light source for irradiating the original with light and an image sensor in which elements for reading the light reflected by the original and performing photoelectric conversion of the light are arranged. The scan control unit 161 obtains image data by performing analog-to-digital (AD) conversion on the analog electrical signal obtained by reading the original through the image sensor unit. The scan control unit 161 includes a circuit system for direct memory access (DMA) transfer to store the obtained image data in the RAM 153.

[0044] Direct connection method

[0045] "Direct connection" means a form in which devices are directly connected to each other wirelessly (i.e., peer-to-peer) without going through an external device such as access point 131. The communication device 151 can operate in a mode for communicating through direct connection ("direct connection mode") as one of the connection modes. Wi-Fi communication includes multiple modes for communicating through direct connection, such as software AP mode and Wi-Fi Direct (registered trademark) mode, etc. Wi-Fi Direct will be referred to as "WFD" hereinafter.

[0046] The mode of direct connection through WFD is called "WFD mode". WFD is a standard developed by the Wi-Fi Alliance and is included in the IEEE 802.11 series of communication standards. In the WFD mode, device search information is used to search for a device to be used as a communication partner, and then the roles of the P2P group owner (GO) and the P2P client are determined, and the remaining wireless connections are processed. The "group owner" corresponds to the parent station (parent device) in Wi-Fi, and the client corresponds to the child station (child device) in Wi-Fi. This role determination corresponds to, for example, negotiation with the GO in P2P. In the WFD mode, before the roles are determined, the communication device 151 is neither a parent station nor a child station. Specifically, one of the devices to communicate publishes device search information and searches for a device to connect to in the WFD mode. When other devices to be used as communication partners are found, the devices confirm information related to the services and functions that can be provided by these corresponding devices. Note that the confirmation of the device-provided information is optional and not necessary. The device-provided information confirmation phase corresponds to, for example, Provision Discovery in P2P. Then, by mutually confirming the device-provided information, it is determined which device will be used as the P2P client and which device will be used as the P2P group owner. Once the client and the group owner are determined, the devices exchange parameters for communicating through WFD. Based on the exchanged parameters, the remaining wireless connections and IP connections are processed between the P2P client and the group owner. Note that in the WFD mode, the communication device 151 can skip the above-mentioned GO negotiation, and the communication device 151 can always operate as a GO. In other words, the communication device 151 can operate in an autonomous GO mode as the WFD mode. The state in which the communication device 151 is operating in the WFD mode is as follows: for example, a connection using WFD is not established but the communication device 151 is operating as a GO, or a connection using WFD is established and the communication device 151 is operating as a GO, etc.

[0047] In the software AP mode, among the devices performing communication (e.g., the information processing device 101 and the communication device 151), one of these devices (e.g., the information processing device 101) serves as a client having the role of requesting various types of services. The other device provides a Wi-Fi access point function through software settings. The software AP corresponds to the parent station in Wi-Fi, and the client corresponds to the child station in Wi-Fi. In the software AP mode, the client uses device search information to search for a device that will serve as the software AP. Once the software AP is found, the remaining wireless connection processing (establishment of wireless connection, etc.) is performed between the client and the software AP, and then the IP connection processing (IP address assignment, etc.) is performed. Note that the commands, parameters, etc. transmitted and received when establishing a wireless connection between the client and the software AP can be any commands, parameters, etc. specified by the Wi-Fi standard, and thus will not be described here.

[0048] In this embodiment, when establishing and maintaining a direct connection, the communication device 151 operates as a parent station in the network to which the communication device 151 belongs. Note that the "parent station" refers to a device that constructs a wireless network and is a device that provides parameters for connecting to the wireless network to the child station. The parameters for connecting to the wireless network are, for example, parameters related to the channel used by the parent station. By receiving these parameters, the child station uses the channel used by the parent station to connect to the wireless network constructed by the parent station. In the direct connection mode, the communication device 151 operates as a parent station, and thus the communication device 151 can determine which frequency band and which channel to use in the communication performed in the direct connection mode. In this embodiment, it is assumed that the communication device 151 uses channels corresponding to the 2.4 GHz frequency band and channels corresponding to the 5 GHz frequency band in the communication performed in the direct connection mode. Then, the user can set the frequency band to be used (i.e., the frequency band channel to be used) as needed by making settings in the screen displayed by the communication device 151. However, this embodiment assumes that even if 5 GHz is selected in the screen displayed by the communication device 151, the communication device 151 does not use the channels corresponding to the dynamic frequency selection (DFS) band in the 5 GHz frequency band for the communication performed in the direct connection mode. In other words, it is assumed that the communication device 151 only uses the channels corresponding to the bands other than the DFS band in the 5 GHz frequency band for the communication performed in the direct connection mode. In the case where a radar wave is detected in the frequency band corresponding to the channel when using a channel corresponding to the DFS band, it is necessary to change the currently used channel. The frequency band in which the channel can be changed in response to the detection of a radar wave is called the "DFS band". However, note that when using a wireless chip supporting the DFS function, for example, the channels corresponding to the DFS band in the 5 GHz frequency band can be used for the communication performed in the direct connection mode.

[0049] Infrastructure connection method

[0050] "Infrastructure connection" is a type of connection in which devices to communicate (e.g., information processing device 101 and communication device 151) are connected to an access point (e.g., access point 131) of a network that supervises these devices and communicate with each other via the access point. The communication device 151 can also operate in a mode (infrastructure connection mode) for communicating via the infrastructure connection as one of the connection modes.

[0051] In infrastructure connection, each device uses device search information to search for an access point. Once the access point is found, the remaining wireless connection processing (establishment of wireless connection, etc.) is performed between the device and the access point, and then the IP connection processing (IP address assignment, etc.) is performed. Note that the commands, parameters, etc. sent and received when establishing a wireless connection between the device and the access point can be any commands, parameters, etc. specified by the Wi-Fi standard, so they will not be described here.

[0052] In this embodiment, when the communication device 151 operates in the infrastructure connection mode, the access point 131 operates as a parent device, and the communication device 151 operates as a child device. In other words, in this embodiment, "infrastructure connection" refers to the connection between the communication device 151 operating as a child device and the device operating as a parent device. When the communication device 151 establishes an infrastructure connection and the information processing device 101 also establishes an infrastructure connection with the access point 131, the communication device 151 and the information processing device 101 can communicate via the access point 131. The channel used for communication in the infrastructure connection is determined by the access point 131, so the communication device 151 communicates in the infrastructure connection using the channel determined by the access point 131. In this embodiment, it is assumed that the communication device 151 uses channels corresponding to the 2.4 GHz band and channels corresponding to the 5 GHz band in the communication performed in the infrastructure connection. Note that the communication device 151 can also use channels corresponding to the DFS band and the 5 GHz band in the communication performed in the infrastructure connection. Also note that in order to communicate with the communication device 151 via the access point 131, the information processing device 101 needs to identify that the communication device 151 belongs to the network formed by the access point 131 and to which the information processing device 101 belongs. In addition, when the information processing device 101 and the communication device 151 are connected to the access point 131 via the infrastructure connection, the communication device 151 can be discovered by a broadcast performed by the information processing device 101.

[0053] Network setting mode

[0054] The communication device 151 can operate in a network setting mode. The trigger for the communication device 151 to start operating in the network setting mode can be, for example, a user pressing a network setting mode button, or the communication device 151 being powered on for the first time after leaving the factory. The network setting mode button can be a hardware (physical) button provided in the communication device 151, or can be a software button displayed by the communication device 151 on the display unit 158.

[0055] When the communication device 151 starts operating in the network setting mode, Wi-Fi communication is enabled. Specifically, the communication device 151 enables an internal AP (connection configuration AP) of the communication device 151 dedicated to the network setting mode as a process for enabling Wi-Fi communication. This enables the communication device 151 to establish a direct connection with the information processing device 101 using Wi-Fi. It is assumed that connection information (such as a service set identifier (SSID) or password) for connecting to the connection configuration AP is pre-stored in a communication app installed in the information processing device 101, and that the information processing device 101 has recognized the connection information for connecting to the connection configuration AP. Therefore, unlike the connection information of the AP that is valid in the direct connection mode, it is assumed that the connection information for connecting to the connection configuration AP cannot be changed by the user as needed. Note that in the network setting mode, the communication device 151 can use Wi-Fi Direct (WFD) instead of normal Wi-Fi to connect to the information processing device 101. In other words, the communication device 151 can operate as a group owner and receive a setting command from the information processing device 101 through communication using WFD. Additionally, in the network setting mode, the communication device 151 can connect to the information processing device 101 using Bluetooth. Here, "Bluetooth" includes classic Bluetooth and Bluetooth Low Energy (BLE), etc. In other words, for example, in the network setting mode, the communication device 151 can operate as a slave device according to BLE and receive a setting command from the information processing device 101 through communication using BLE. Additionally, in the network setting mode, the communication device 151 is capable of performing both network setting using Wi-Fi and network setting using BLE. In other words, when the communication device 151 starts operating in the network setting mode, both Wi-Fi communication and BLE communication can be enabled. Specifically, when the communication device 151 starts operating in the network setting mode, (i) the connection configuration AP can be enabled, and (ii) the advertisement state enabling BLE connection by sending advertisement information using BLE can be enabled.

[0056] When operating in the network setup mode, the communication device 151 controls the communication unit 156 to operate as a network setup access point (connection configuration AP, setup access point) (which is only effective when operating in the network setup mode). The setup access point is a different access point from the access point effective in the above software AP mode. It is assumed that the SSID of the setup access point includes a predetermined string that can be recognized by the communication app of the information processing device 101.

[0057] In addition, it is assumed that the communication device 151 operating in the network setup mode uses a predetermined communication protocol (setup communication protocol) in the communication with the information processing device 101 connected to the setup access point. Specifically, the setup communication protocol is, for example, the Simple Network Management Protocol (SNMP).

[0058] Once a predetermined amount of time has elapsed after the communication device 151 starts operating in the network setup mode, the communication device 151 stops operating in the network setup mode and invalidates the setup access point. The communication device 151 also invalidates the setup access point when receiving connection information for connecting to the access point 131 and an instruction to change the operation mode of the wireless communication from the information processing device 101 that is currently in the network setup mode. It is also assumed that the setup access point is an access point that does not require a password to connect. However, note that the setup access point can be an access point that requires a password. In this case, it is assumed that the password for connecting to the setup access point is a fixed password pre - equipped in the communication app (which cannot be changed by the user).

[0059] Software structure of the information processing device 101

[0060] Next, the software structure of the information processing device 101 according to this embodiment will be described. Figure 2AAn example of the software structure of the information processing device 101 when the host OS running on the information processing device 101 is the Android OS (first OS) is shown. In this configuration, the Android OS runs apps on the Android OS. Here, it is assumed that the software structure of the information processing device 101 does not include the Chrome OS. The environment in which the OS running on the bottommost layer of the information processing device 101 is the Android OS (i.e., not the Chrome OS) as in this case will be referred to as the "first environment" hereinafter. Specifically, the first environment is an environment such that, for example, the information processing device 101 is equipped with a host OS but not equipped with a guest OS, and apps run on the host OS. Additionally, the first environment is an environment such that, for example, the information processing device 101 is equipped with both a host OS and a guest OS, but the apps running in this embodiment run on the host OS without going through the guest OS (not running on the guest OS). Note that "host OS" is an abbreviation of "host operating system", and "guest OS" is an abbreviation of "guest operating system".

[0061] Figure 2BAn example of the software structure of the information processing device 101 when the host OS running on the information processing device 101 is Chrome OS (the second OS) is shown. In this configuration, a virtual Android OS (which is a virtual OS) runs on Chrome OS. Android apps run on the virtual Android OS. The OS running on the bottom layer of the information processing device 101 as in this case is Chrome OS, and the environment where the virtual Android OS is running on Chrome OS will be hereinafter referred to as the "second environment". Note that, in the present embodiment, the "virtual OS" is a program for enabling an app not supported by the host OS to run on the host OS, and is a guest OS. The virtual OS can be an entire existing OS such as Android OS, an OS obtained by omitting some modules from the entire existing OS, or a program separately created from the existing OS. The virtual OS is implemented by a virtualization technology such as a virtual machine or container-based technology. It is assumed that the information processing device 101 having the first environment and the information processing device 101 having the second environment are separate information processing devices 101. In other words, the processing executed based on the fact that the communication app is running in the first environment (described later) is the processing executed by the first information processing device 101 having the first environment. Similarly, the processing executed based on the fact that the communication app is running in the second environment (described later) is the processing executed by the second information processing device 101 having the second environment. However, it is possible to install and uninstall the host OS and the guest OS, etc. in a single information processing device 101 to switch between the state of constructing the first environment in the information processing device 101 and the state of constructing the second environment in the information processing device 101. In other words, based on the environment constructed in a single information processing device 101, both the processing executed based on the communication app running in the first environment and the processing executed based on the communication app running in the second environment can be executed on the single information processing device 101.

[0062] The Android app will be described below. Note that the above-described communication app will be described as an example of the Android app. Here, an example of installing and running the communication app in both the first environment and the second environment will be described. Note that, as an example, the communication app will be described as a print app that provides a function for communicating with a communication device 151 having a printing function and causing the communication device 151 to print data such as documents and images. An app developed for Android OS to be supported by Android OS can be called an "Android app".

[0063] When the communication app executes a predetermined function such as a cloud function of an external server, etc., the information processing device 101 and the communication device 151 need to be in a predetermined communication mode. As an example of the predetermined function, this embodiment will illustrate a function of causing the communication device 151 to execute processing through an external server (not shown; described later). The predetermined communication mode is, for example, a mode in which the information processing device 101 and the communication device 151 can communicate with an external server (not shown) through a network formed by the external access point 131.

[0064] When receiving an instruction to execute a predetermined function as a user instruction, etc., the communication app determines the communication mode between the information processing device 101 and the communication device 151. If the communication mode is determined to be a mode in which the predetermined function cannot be executed, processing for changing the communication mode is performed, such as notifying the user, etc. Here, the IP address of the information processing device is used to determine the communication mode between the information processing device 101 and the communication device 151. For example, by comparing the IP address of the information processing device 101 with the IP address of the communication device 151, the communication app can determine whether the information processing device 101 belongs to the network formed by the communication device 151. Here, the IP address of the information processing device 101 is managed by the host OS. The IP address of the information processing device 101 is assigned, for example, by a device (such as the communication device 151 or the access point 131, etc.) operating as the access point to which the information processing device 101 is connected. The communication app can obtain the IP address of the information processing device 101 by using the application programming interface (API) of the host OS.

[0065] However, as described above, the information processing device 101 can have a first environment or a second environment, etc. In other words, the OS configuration can vary depending on the information processing device 101. Here, when the communication app is running in the second environment and attempts to obtain the IP address of the information processing device 101 by the same method as when the communication app is running in the first environment, the communication app obtains the IP address assigned by the host OS to the virtual OS. In other words, the communication app obtains an IP address different from the IP address managed by the host OS. As a result, the communication app cannot appropriately determine the communication mode between the information processing device 101 and the communication device 151. In addition, the communication app will not be able to appropriately perform the processing for changing the communication mode.

[0066] Therefore, in this embodiment, the method for obtaining the IP address of the information processing device 101 varies according to the OS configuration in the information processing device 101. Using such a configuration enables the IP address of the information processing device 101 to be obtained in both the first environment and the second environment, and the communication mode between the information processing device 101 and the communication device 151 to be appropriately determined. As a result, the processing for changing the communication mode can be appropriately performed.

[0067] In this embodiment, when the communication app executes a predetermined function, the communication app determines whether the communication app is running on a predetermined OS. The predetermined OS is, for example, the second OS described above. If the communication app is determined to be running on the second OS, an IP address is obtained from the second OS. However, if the communication app is determined not to be running on the second OS, an IP address is obtained from the first OS described above. In other words, the method used by the communication app to obtain an IP address varies according to the OS configuration of the information processing device 101. Then, the communication app uses the obtained IP address to determine the communication mode between the information processing device 101 and the communication device 151. If the communication app determines that the communication mode is a communication mode in which the predetermined function cannot be executed, the communication app performs processing for changing the communication mode between the information processing device 101 and the communication device 151.

[0068] In this way, the method used by the communication app to obtain the IP address of the information processing device can vary according to the OS configuration of the information processing device, and the processing for changing the communication mode for executing the predetermined function can be appropriately performed.

[0069] Communication application (communication app)

[0070] The communication app will be described in detail below. The communication app is an app having, for example, a printing function that causes the communication device 151 acting as a printer or a printing device to print data such as document files or image files held in the information processing device 101. The communication app also has a function for importing image data, document data, etc. scanned by the communication device 151 into the information processing device 101. As will be described later, the communication app according to this embodiment includes, for example, a print job sending function, a scan job sending function, a copy job sending function, etc.

[0071] Figure 3 is a diagram illustrating an example of the home screen of the communication app according to this embodiment. The home screen 300 of the communication app can be displayed in response to, for example, a user operating an icon indicating the communication app displayed on the console unit 108 of the information processing device 101. On the home screen 300 displayed by the communication app, information 301 indicating the communication device 151 registered in the communication app, and interfaces 302 to 308 capable of accepting instructions for executing the corresponding functions provided by the communication app are displayed.

[0072] The information 301 indicating the communication device 151 may be, for example, an icon of the communication device 151 or model information such as a model name. The information 301 indicating the communication device 151 may be, for example, information for indicating the communication device 151 registered in the communication app. When the communication app is first started in response to a user operation, the communication app may execute a process for registering the communication device 151 (described later) with the communication app. In the following description, the process for registering the communication device 151 with the communication app may be referred to as the "registration process".

[0073] The document print button 302 is, for example, an interface capable of accepting an instruction for executing a print job sending function (document print function) for a document file. The print job sending function is, for example, a function for sending a print job for causing the communication device 151 to print image data selected by the user in the information processing device 101. For example, when the user presses the document print button 302, the user can select a document file to be printed in the information processing device 101, and give instructions for print settings and execution of printing, etc.

[0074] A document file is a file in a data format corresponding to the print job sending function. For example, the data format corresponding to the document file (the data format that the communication app can use the document print function to print) may be a data format corresponding to the Portable Document Format (hereinafter referred to as "PDF"), a data format corresponding to Microsoft Word, a data format corresponding to Microsoft Excel, or a data format corresponding to Microsoft PowerPoint, etc. Note that the data format is not limited to these and may be other data formats.

[0075] The photo print button 303 is, for example, an interface capable of accepting an instruction for executing a print job sending function (photo print function) for an image file. An image file is a file in a data format corresponding to the print job sending function.

[0076] The data format corresponding to the image file may be, for example, a data format corresponding to the Joint Photographic Experts Group (hereinafter referred to as "JPEG"), a data format corresponding to the Graphics Interchange Format (hereinafter referred to as "GIF"), a data format corresponding to the Portable Network Graphics (hereinafter referred to as "PNG"), a data format corresponding to the Microsoft Windows Bitmap Image (hereinafter referred to as "BMP"), or a data format corresponding to the High Efficiency Image File Format (hereinafter referred to as "HEIF"), etc., when the communication app is running in the first environment.

[0077] The data format corresponding to the image file (the data format that the communication app can use for the photo printing function) can be, for example, a data format corresponding to JPEG, a data format corresponding to GIF, a data format corresponding to PNG, or a data format corresponding to BMP, etc. when the communication app is running on the second OS. Note that the data format is not limited to these and can be other data formats.

[0078] The scan button 304 is, for example, an interface that can accept an instruction for executing the above-described scan job sending function. The scan job sending function is a function for sending a scan job to the printer 121, and the scan job is for causing the printer 121 to perform scanning and causing the information processing device 101 to send the image data obtained by scanning.

[0079] The copy button 305 is, for example, an interface that can accept an instruction for executing the above-described copy job sending function. The copy job sending function is, for example, a function for sending a print job to the printer 121, and the print job is for causing the communication device 151 to print the image data captured by the information processing device 101.

[0080] The cloud button 306 is, for example, an interface that can accept an instruction for starting the execution of the cloud function. The "cloud function" is, for example, a function (predetermined function) for causing the communication device 151 to perform a predetermined process through an external server (not shown). The predetermined process is, for example, printing. In other words, the cloud function can also be considered as a function for providing a predetermined service to the user through an external server (not shown). The "predetermined service" is, for example, a cloud printing service or a consumable management service, etc. The predetermined service is, for example, a service provided by the provider of the communication device 151 and is a service provided by an external server (not shown) on the Internet.

[0081] For example, when the user uses the cloud function for the first time, the communication device 151 is first registered with an external server (not shown) on the Internet. After that, the user can use the communication app to cause the communication device 151 to perform printing by sending a print job from the information processing device 101 to the registered communication device 151 via the external server. In other words, the cloud function is, for example, a cloud printing service.

[0082] The create work 307 is, for example, an interface that can accept an instruction for starting the execution of the work creation function. The work creation function is, for example, a function for editing image data and creating a work. The "work" can be, for example, a poster, an album, a photo collection, an ID photo, a business card, or a calendar, etc.

[0083] The problem button 308 is, for example, an interface capable of accepting an instruction to display information used as a reference when the user uses the communication app. The information used as a reference when the user uses the communication app may be, for example, questions frequently asked by the user using the communication app, or answers to these questions, etc.

[0084] Although this embodiment illustrates the cloud function as an example of a predetermined function, the predetermined function is not limited thereto. For example, the communication app may have a function of providing a service other than cloud printing to the user through an external server (not shown) as a predetermined function. Specifically, other functions are, for example, a point function or an automatic ink supply function, etc. The point function is, for example, a function for providing a point management service to the user, and is a function for awarding points to the user according to the usage state of the communication device 151. For example, when the user uses the point function, the user registers the communication device 151 with a predetermined service provided by an external server on the Internet. After that, the user can receive points when using the registered communication device 151 for printing or replacing consumables such as ink or paper. The automatic ink supply function is, for example, a function for providing an automatic ink supply service to the user, and is a function for automatically supplying ink for using the communication device 151 to the user. After the communication device 151 has been registered with various types of services, the communication device 151 sends the usage state of the communication device 151 to the external server at a predetermined timing. Note that, for example, an interface (not shown) capable of accepting an instruction to start the execution of the point function may be provided separately from the cloud button 306 on the home screen 300 or other screens displayed by the communication app. When this interface is pressed, predetermined processing is executed in the same manner as when the cloud button 306 is pressed. The predetermined processing executed here is, for example, processing for registering the point function or the automatic ink supply function, etc. with the communication device 151. This processing is the same as the processing for registering the cloud function (described later) with the communication device 151.

[0085] In this embodiment, it is assumed that the communication app controls the display of interfaces 302 to 308 that can accept instructions for executing various functions based on the registration process (described later). Specifically, it is assumed that when the communication device 151 is not registered with the communication app, the communication app controls the display so that interfaces 302 to 308 cannot be selected. It is also assumed that when any printer is registered with the communication app, the communication app controls the display so that interfaces 302 to 308 can be selected. For example, in the registration process (described later), the communication app obtains information indicating the functions supported by the communication device 151. For example, based on this information, the communication app can display the information so that only the interfaces of the functions supported by the communication device 151 can be selected. Alternatively, the communication app can control the display so that the interfaces of the functions not supported by the communication device 151 cannot be selected. Specifically, the control for displaying the interfaces in a non-selectable manner is control for hiding the interfaces, or control for displaying the interfaces in a non-selectable manner (e.g., grayscale display), etc.

[0086] Based on the communication mode between the information processing device 101 and the communication device 151, the communication app can also display on the home screen 300 an interface that can accept an instruction to start a function that causes the communication device 151 to perform a predetermined process through an external server (not shown). For example, in the case of a communication mode in which the information processing device 101 and the communication device 151 are directly connected without passing through the access point 131, the cloud button 306 can be displayed. Alternatively, in the communication mode in which the information processing device 101 and the communication device 151 are both connected to an external access point, the cloud button 306 can be displayed. Specifically, when the communication device 151 registered with the communication app supports the cloud function, the communication app searches for the communication device 151 on the network formed by the device connected to the information processing device 101. For example, the communication app broadcasts the MAC address of the communication device 151 obtained in the registration process (described later) on the network and requests a response from the communication device 151. When the communication app obtains a response from the communication device 151, the communication app displays the cloud button 306 in a manner that can accept a selection instruction from the user. On the other hand, when the communication app cannot obtain a response from the communication device 151, the communication app displays the cloud button 306 in a manner that cannot accept a selection instruction from the user.

[0087] In the following description, the communication mode in which the information processing device 101 and the communication device 151 are directly connected without passing through the access point 131 can be referred to as "direct connection". In addition, the communication mode in which the information processing device 101 and the communication device 151 are connected to an external access point can be referred to as "infrastructure connection".

[0088] Registration process

[0089] will refer to Figure 11A and Figure 11B to describe the process (registration process) for registering the communication device 151 with the communication app according to the present embodiment. Figure 11A and Figure 11B are flowcharts illustrating examples of the registration process executed by the communication app. In this flowchart, the process executed by the communication app is implemented by, for example, the CPU 103 loading a control program stored in a memory such as the ROM 104 into the RAM 105 and executing the program. When, for example, the communication app has been installed in the information processing device 101 through a user operation and is started for the first time, the processes illustrated in Figure 11A and Figure 11B can be executed.

[0090] In step S1001, the communication app searches for the communication device 151 on the network formed by the access point 131 to which the information processing device 101 is connected. Specifically, in S1001, the communication device 151 is searched for by broadcasting a signal on the network that requests a response from the communication device 151. The signal requesting a response from the communication device 151 includes, for example, information indicating the communication device 151 that supports the communication app. Specifically, the signal is, for example, a packet. The packet may include, for example, the IP address of the communication device 151 that supports the communication app and is pre-stored in the communication app.

[0091] In step S1002, the communication app determines whether the communication device 151 has been discovered by the information processing device 101 on the network formed by the currently connected access point 131. If the communication app determines that the communication device 151 has been discovered, the sequence moves to step S1003. However, if the communication app determines that the communication device 151 has not been discovered, the sequence moves to step S1004.

[0092] Specifically, when a response from the communication device 151 is received as a result of searching for the communication device 151 in step S1001, the communication app determines that the communication device 151 has been discovered. The case where the communication app determines that the communication device 151 has been discovered in step S1002 is, for example, a case where the communication device 151 and the access point 131 have been connected in response to a user operation or the like. In other words, this is a state where both the information processing device 101 and the communication device 151 are connected to the access point 131, and it corresponds to the above-described infrastructure connection. On the other hand, when no response is received from the communication device 151, the communication app determines that the communication device 151 cannot be discovered.

[0093] In step S1003, the communication app performs a process for registering the communication device 151 with the communication app. Specifically, for example, the communication app requests information related to the communication device 151 from the discovered communication device 151 and obtains information related to the communication device 151. The communication app also stores the obtained information related to the communication device 151. The information related to the communication device 151 includes, for example, the capability information of the communication device 151 and the MAC address of the communication device 151, etc. Specifically, the capability information of the communication device 151 includes a list of information related to the functions supported by the communication device 151, and information related to consumables such as paper or ink that the communication device 151 can use, etc.

[0094] In this way, the communication app can control the display of the interfaces 302 to 308 that can accept instructions for performing the above functions by obtaining information related to the communication device 151 in step S1003. In addition, when the communication device 151 supports the cloud function, the communication app can use the MAC address of the communication device 151 obtained in step S1003 to confirm the communication mode between the information processing device 101 and the communication device 151, and can control the display of the cloud button 306.

[0095] If it is determined in step S1002 that the communication device 151 has been discovered and the process of step S1003 is executed, the communication app stores information indicating that the communication device 151 has been registered through infrastructure connection. In addition, if it is determined in step S1002 that the communication device 151 has been discovered and the process of step S1003 is executed, the information related to the communication device 151 obtained from the communication device 151 includes the MAC address used for the infrastructure connection of the communication device 151. In addition, when registering the communication device 151 in the infrastructure connection, the communication app can store the SSID of the access point 131 to which the information processing device 101 is connected.

[0096] In step S1004, the communication app gives a notification to prompt the user to operate the communication device 151 in the network setting mode. For example, the communication app can display a message for prompting the communication device 151 to operate in the network setting mode in the console unit 108, etc.

[0097] When set to the network setting mode, as described above, the communication device 151 operates as a network setting access point (connection configuration AP, setting access point). In addition, the communication device 151 can send the identification information and password of the communication device 151 to the information processing device 101. The identification information of the communication device 151 includes information such as SSID, manufacturer name, serial number, and model name.

[0098] In step S1005, the communication app uses the communication unit 109 and the short-range wireless communication unit 110, etc. to search for the communication device 151 in the network setting mode. The communication app displays the search results in the console unit 108. For example, the communication app can display an interface in the console unit 108, etc. that can accept an instruction to select the communication device 151 from the search results displayed in the console unit 108.

[0099] In step S1006, the communication app establishes a connection with the communication device 151 whose selection instruction in the search results displayed in step S1005 has been accepted. Here, the communication device 151 is operating in the network setting mode, so when connecting the information processing device 101 to the network formed by the communication device 151, the password of the communication device 151 may not be necessary.

[0100] In step S1007, the communication app sends a request for a list of access points around the communication device 151 to the communication device 151 with which it established a connection in step S1006. The communication app receives the list of access points from the communication device 151.

[0101] In step S1008, the communication app displays the list of access points received from the communication device 151 in the console unit 108, etc. For example, the communication app displays an interface (not shown) in the console unit 108, etc. that can accept an instruction to select an access point. For example, the communication app displays an interface (not shown) that can accept an instruction to select whether the user's desired access point exists in the list.

[0102] In step S1009, the communication app determines whether the user's desired access point exists in the list displayed in step S1008. If the communication app determines that the desired access point exists, the sequence moves to step S1010. On the other hand, if the communication app determines that the desired access point does not exist, the sequence moves to step S1016. For example, the communication app makes this determination based on the user operation in the interface that can accept an instruction to select whether the user's desired access point displayed in step S1008 exists in the list. The cases where the user's desired access point exists (Yes in S1009) and where the user's desired access point does not exist (No in S1009) will be described below.

[0103] Case where the user's desired access point exists (Yes in S1009)

[0104] In step S1010, the communication app accepts the input of the password for the access point for which the selection instruction has been accepted. Hereinafter, the case where the user selects access point 131 from the list of access points displayed in step S1008 will be described as an example. In step S1010, the communication app can, for example, display an interface in the console unit 108 that can accept the input of the password for access point 131. If the setting of access point 131 is such that it can be connected to without a password, this step can be skipped, and the sequence can move to step S1011.

[0105] In step S1011, the communication app sends connection information (such as the password and SSID, etc.) for access point 131 for which the selection instruction has been accepted to the communication device 151. The communication app sends a connection request for connecting to access point 131 for which the selection instruction has been accepted to the communication device 151. In other words, the communication app sends information for causing the communication device 151 to join the network formed by access point 131. If the setting of access point 131 is such that it can be connected to without a password, it is only necessary to send a connection request to access point 131 to the communication device 151.

[0106] In step S1012, the communication app disconnects the connection between the information processing device 101 and the communication device 151. Note that after the connection between the information processing device 101 and the communication device 151 in the network setting mode is disconnected by the communication app, the connection between the information processing device 101 and access point 131 is established through the reconnection function of the OS of the information processing device 101. The reconnection function is a function that is automatically executed regardless of the instruction from the communication app. The access point 131 reconnected through the reconnection function of the OS is the AP corresponding to the connection information held by the OS and is the AP to which the information processing device 101 has been connected in the past.

[0107] In step S1013, the communication app searches for the communication device 151 on the network formed by access point 131 to which the information processing device 101 is connected. Specifically, the communication device 151 requests a response from the communication device 151 by specifying the identification information (device name or serial number, etc.) of the communication device 151 and broadcasting this information on the network formed by access point 131.

[0108] In step S1014, the communication app determines whether the communication device 151 has been discovered in the process performed in step S1013. If the communication app determines that the communication device 151 has been discovered, the sequence moves to the process of step S1003. However, if the communication app determines that the communication device 151 has not been discovered, the sequence moves to the process of step S1015. Specifically, when a response from the communication device 151 is received as a result of searching for the communication device 151 in step S1013, the communication app determines that the communication device 151 has been discovered. On the other hand, in the case where no response is received from the communication device 151, the communication app determines that the communication device 151 cannot be discovered.

[0109] The process of step S1003 performed in the case where the processes of steps S1002 to S1014 have been executed is the same as the process of step S1003 performed when it is determined in step S1002 that a device has been discovered (when the determination in step S1002 is "yes"), and thus will not be described.

[0110] In step S1015, the communication app gives a notification that the network to which the instruction information processing device 101 is connected is different from the network to which the communication device 151 is connected. For example, the communication app can display a message in the console unit 108 or the like indicating that the network to which the instruction information processing device 101 is connected is different from the network to which the communication device 151 is connected.

[0111] Case where there is no desired access point for the user ( "no" in S1009)

[0112] In step S1016, the communication app sends a request for the connection information of the communication device 151 to the communication device 151. The communication app receives the connection information of the communication device 151 from the communication device 151. Here, the connection information of the communication device 151 is, for example, a password or an SSID, etc.

[0113] In step S1017, the communication app disconnects the connection between the information processing device 101 and the communication device 151 operating in the network setting mode. The communication app also gives a notification for prompting the connection between the information processing device 101 and the communication device 151. For example, the communication app can display a message in the console unit 108 indicating that the information processing device 101 and the communication device 151 are about to be connected. As described above, notifying the user in this way enables the user to be prompted to establish a connection between the information processing device 101 and the communication device 151 through a direct connection.

[0114] In step S1013, the communication app searches for the communication device 151 on the network formed by the access point to which the information processing device 101 is connected.

[0115] In step S1014, the communication app determines whether the communication device 151 has been detected in the process carried out in step S1013. If the communication app determines that the communication device 151 has been detected, the sequence moves to the process of step S1003. However, if the communication app determines that the communication device 151 has not been detected, the sequence moves to the process of step S1015.

[0116] Here, in the process of step S1003 executed by the communication app, in the case of performing steps S1016 and S1017, the differences from the case where the determination in step S1002 is "Yes" and the case where the determination in step S1009 is "Yes" will be described. In other words, here, the different ways in which the process of step S1003 carried out in direct connection and the process of step S1003 carried out in infrastructure connection will be described.

[0117] When the communication mode between the information processing device 101 and the communication device 151 is direct connection, in step S1003, the communication app stores information indicating that the communication device 151 has been registered through direct connection. The MAC address used for direct connection is included in the information related to the communication device 151 obtained by the communication app from the communication device 151. Note that the MAC address used for infrastructure connection of the communication device 151 is different from the MAC address used for direct connection of the communication device 151.

[0118] In step S1015, the communication app gives a notification indicating that the network to which the information processing device 101 is connected is different from the network to which the communication device 151 is connected. For example, the communication app can display a message indicating that the network to which the information processing device 101 is connected is different from the network to which the communication device 151 is connected on the console unit 108 or the like.

[0119] The process of using the communication app when executing a predetermined function

[0120] Figure 4 is a flowchart exemplifying the operations performed by the communication app according to the present embodiment. In this flowchart, the process executed by the communication app is realized by, for example, the CPU 103 loading a control program stored in a memory such as the ROM 104 into the RAM 105 and executing the program.

[0121] In addition, for example, based on receiving an instruction to start the execution of a predetermined function, the start Figure 4 of the process. The "predetermined function" is a function that causes the communication device 151 to execute a predetermined process through an external server (not shown). The present embodiment will describe the above cloud function as an example of the predetermined function. In other words, it will be described based on the user's operation in Figure 3The case where the illustrated process is executed by pressing the cloud button 306 on the home screen 300 is taken as an example. As described above, when the communication device 151 supporting the cloud function is registered in the communication app and the communication mode between the information processing device 101 and the communication device 151 is a direct connection or an infrastructure connection, the cloud button 306 can be pressed. Figure 4 For example, in response to the user pressing the cloud button 306 after the registration process while the information processing device 101 and the communication device 151 are in a directly connected state, the illustrated process can be executed. Also, for example, in response to the user pressing the cloud button 306 after the registration process with an infrastructure connection, the illustrated process can be executed. The following will separately describe the illustrated process for these two cases.

[0122] For example, in response to the user pressing the cloud button 306 after the registration process while the information processing device 101 and the communication device 151 are in a directly connected state, the illustrated process can be executed. Figure 4 Also, for example, in response to the user pressing the cloud button 306 after the registration process with an infrastructure connection, the illustrated process can be executed. Figure 4 The following will separately describe the illustrated process for these two cases. Figure 4 The illustrated process.

[0123] The case of execution after the registration process with a direct connection

[0124] In step S401, the communication app obtains environment information related to the environment in which the communication app is running by executing the API of the Android OS. If the environment in which the communication app is running is the first environment, the API executed is the API of the host OS, and information corresponding to the first environment is obtained as the environment information. On the other hand, if the environment in which the communication app is running is the second environment, the API executed is the virtual Android OS API, and information corresponding to the second environment is obtained as the environment information. Then, the communication app determines whether the communication app is running in the first environment based on the obtained environment information. If the communication app determines that it is running in the first environment, the sequence moves to step S402, and if the communication app determines that it is not running in the first environment, the sequence moves to step S403. If it is determined that the communication app is running in the first environment, as described above, the communication app is running in an environment that is on the first OS running as the host OS but not on the guest OS. If it is determined that the communication app is not running in the first environment, as described above, the communication app is running on the second OS, which is running as the host OS and is also running on the guest OS.

[0125] When the communication app is running in the first environment, the process of step S402 is executed. In step S402, the communication app obtains the IP address of the information processing device 101 by a first method. The "first method" is a method for executing a first API, and the IP address obtained by the first method will be referred to as the "first IP address" hereinafter. The first API is an API for obtaining the IP address assigned to the Wi-Fi network interface managed by the Android OS (the first OS). In the first environment, the Android OS (the first OS) is the host OS. Therefore, by executing the first API in the first environment, the IP address assigned to the Wi-Fi network interface managed by the host OS in the first environment is obtained from the host OS. The information processing device 101 is a device connected to the Wi-Fi network interface managed by the host OS via Wi-Fi, and an IP address is assigned by an external device operating as an access point. As described above, the external device operating as an access point corresponds to the Wi-Fi parent station (parent device).

[0126] Specifically, the first API is an API that uses the WifiManager class and the WifiInfo class. The "WifiManager" is, for example, a class for managing the connection environment of the information processing device 101. The "WifiInfo" is, for example, a class for obtaining information related to the Wi-Fi network to which the information processing device 101 is connected. More specifically, the first API uses a command called WifiManager#getConnectionInfo() to obtain WifiInfo, and uses a command called WifiInfo#getIpAddress() to obtain the first IP address.

[0127] When the communication app is running in the second environment, the process of step S403 is executed. In step S403, the communication app obtains the IP address of the information processing device 101 by a second method different from the first method. The second method is a method for using a second API different from the first API, and the IP address obtained by the second method will be hereinafter referred to as the "second IP address". As described above, the first API is an API for obtaining the IP address assigned to the Wi-Fi network interface managed by the Android OS (the first OS). Therefore, when the first API is executed in the second environment, the IP address assigned to the virtual Wi-Fi network interface managed by the virtual Android OS operating as a guest OS is obtained. Using the IP address assigned to the virtual Wi-Fi network interface cannot accurately perform the determination in step S404 (described later). This is because the IP address assigned to the virtual Wi-Fi network interface is assigned by the Chrome OS (the second OS) acting as the host OS. In other words, the IP address assigned to the virtual Wi-Fi network interface is assigned by the device to which the information processing device 101 is connected via Wi-Fi rather than by an external device operating as an access point. Thus, in the present embodiment, in the second environment, the communication app obtains the IP address by using the second API instead of the first API.

[0128] The second API is an API for obtaining the information specified by the communication app from the host OS as the information to be obtained. In other words, in step S403, the communication app designates the IP address of the Wi-Fi network interface managed by the Chrome OS (the second OS) acting as the host OS in the second environment as the information to be obtained, and executes the second API. In other words, the second IP address is the IP address of the Wi-Fi network interface managed by the Chrome OS (the second OS) acting as the host OS in the second environment. Specifically, by executing the second API, the communication app instructs the guest OS to obtain the second IP address. When receiving the instruction to obtain the second IP address from the communication app, the guest OS instructs the host OS to obtain the second IP address. As a result, the guest OS obtains the second IP address from the host OS. Then, the guest OS sends the second IP address to the communication app. In this way, the communication app can obtain, via the guest OS, the IP address assigned to the actual Wi-Fi network interface rather than the IP address assigned to the virtual Wi-Fi network interface from the host OS. In other words, the communication app can obtain the IP address assigned by a device to which the information processing device 101 is connected via Wi-Fi and which is an external device operating as an access point.

[0129] The second API can also be, for example, an API that specifies and configures the processing performed by the OS. Specifically, the second API can have a class for starting an external process from the communication app. An "external process" is an external command or program. For example, the class for starting an external process from the communication app can use a command called ProcessBuilder()#command(). For example, the communication app can use the command ProcessBuilder()#command() to specify " / system / bin / getprop" and "arc.net.ipv4.host_address" as arguments. " / system / bin / getprop" is a command for confirming system properties. "arc.net.ipv4.host_address" is an argument used when executing the command and is used when the communication app specifies the information to be obtained.

[0130] In the first environment, there is no Chrome OS (second OS), so of course there is no IP address of the Wi-Fi network interface managed by the Chrome OS (second OS). Therefore, in the first environment, for example, when the communication app specifies the acquisition of the IP address of the Wi-Fi network interface managed by the Chrome OS (second OS), even if the second API is executed, appropriate information will not be obtained. Therefore, in the first environment, the communication app uses the first API instead of the second API to obtain the first IP address from the first OS, which is the host OS.

[0131] In step S404, the communication app determines whether the information processing device 101 belongs to a network formed by the communication device 151 outside the information processing device 101. In the following description, the Wi-Fi network formed by the communication device 151 is, for example, a Wi-Fi network formed by the communication device 151 operating as an access point. In other words, the Wi-Fi network formed by the communication device 151 is a Wi-Fi network formed by the communication device 151 operating in the direct connection mode. The Wi-Fi network formed by the communication device 151 can be hereinafter referred to as the "first network". In step S404, if the communication app determines that the information processing device 101 belongs to the first network, the sequence moves to step S405, and if the communication app determines that the information processing device 101 does not belong to the first network, the sequence moves to step S409.

[0132] Note that, as described above, the case where the information processing device 101 belongs to the first network is the case where the information processing device 101 and the communication device 151 are directly connected via Wi-Fi without passing through an external access point. In other words, the case where the information processing device 101 belongs to the first network is the case where the communication device 151 operating in the direct connection mode is connected to the information processing device 101 via the first network through Wi-Fi. In other words, the process of step S404 is also a process for determining whether the information processing device 101 is connected to the Wi-Fi network formed by the communication device 151 without passing through the external access point 131. That is to say, it can also be considered that the process of step S404 determines whether the information processing device 101 is directly connected to the communication device 151.

[0133] The case where the information processing device 101 does not belong to the first network is the case where the information processing device 101 belongs to the Wi-Fi network formed by the external access point 131. In other words, the process of step S404 is also a process for determining whether the information processing device 101 belongs to the Wi-Fi network formed by the external access point 131. In other words, it can also be considered that the process of step S404 determines whether the communication mode between the information processing device 101 and the communication device 151 is infrastructure connection. Note that the case where the information processing device 101 does not belong to the first network may include the case where the information processing device 101 is not connected to any Wi-Fi network.

[0134] In addition, in the present embodiment, the process of step S404 is also a process for determining whether the communication device 151 is connected to the access point 131 to start executing the cloud function. In other words, the process of step S404 can also be considered as a process for determining whether the communication mode between the information processing device 101 and the communication device 151 is a communication mode in which the cloud function can be executed.

[0135] In step S404, for example, the communication app uses the first IP address obtained through the processing of step S402 or the second IP address obtained through the processing of step S403 to determine whether the information processing device 101 belongs to the first network. Specifically, for example, the communication app compares the first IP address obtained through the processing of step S402 or the second IP address obtained through the processing of step S403 with the IP address of the communication device 151 that has been pre-held since the communication app was installed in the information processing device 101, and makes this determination based on the result of the comparison. Note that if the processing of step S402 is executed, the first IP address obtained through the processing of step S402 is used for the determination in step S404, and if the processing of step S403 is executed, the second IP address obtained through the processing of step S403 is used for the determination in step S404. In the following description, the IP address of the communication device 151 that has been pre-held since the communication app was installed in the information processing device 101 will be referred to as the "third IP address". As described above, the IP address managed by the host OS of the information processing device 101 is assigned by the currently connected device. Additionally, this embodiment assumes that if the information processing device 101 is connected to the communication device 151 via Wi-Fi through the first network formed by the communication device 151 that supports the communication app, the communication device 151 assigns the third IP address to the information processing device 101. Therefore, if the information processing device 101 is connected to the communication device 151 via Wi-Fi through the first network formed by the communication device 151 that supports the communication app, the IP address obtained in step S402 or S403 is assigned by the communication device 151. Thus, the communication app can determine whether the information processing device 101 belongs to the first network by comparing the first IP address or the second IP address with the third IP address.

[0136] Specifically, in step S404, the communication app compares, for example, the network portion of the first IP address or the second IP address with the network portion of the IP address of the communication device 151 to determine whether the network portions are the same. If it is determined that the network portions of the IP addresses are the same, the information processing device 101 can determine that the information processing device 101 belongs to the first network. However, if it is determined that the network portions of the IP addresses are different, the information processing device 101 can determine that the information processing device 101 does not belong to the first network. Note that in step S404, the communication app can make this determination by comparing the entire IP address instead of comparing the network portion of the IP address. When the result of the determination made in step S404 is "yes", the communication app moves the sequence to step S405, and when the result of the determination made in step S404 is "no", the communication app moves the sequence to step S409.

[0137] Note that if the result of the determination made in step S404 is "No", the communication app may determine whether the information processing device 101 can communicate with the Internet via the connection to the access point 131 before moving to step S409. Specifically, for example, the communication app attempts to communicate with a pre-identified external server via the Internet, and then determines whether the information processing device 101 can communicate with the Internet via the connection to the access point 131 based on whether the Internet communication is successful. If the result of the determination is "Yes", the sequence may move to step S409, and if the result of the determination is "No", the sequence may move to step S405. For example, if the result of the determination made in step S404 is "No", the communication app may determine whether the information processing device 101 has established a Wi-Fi connection with another device before moving to step S409. If the result of the determination is "Yes", the sequence may move to step S409, and if the result of the determination is "No", the sequence may move to step S405. The determination regarding whether the information processing device 101 has established a Wi-Fi connection with another device may be made before step S404. If the result of the determination is "Yes", the sequence may move to step S404, and if the result of the determination is "No", the sequence may move to step S405.

[0138] In the network part and host part of the IP address of the communication device 151, the network part may be specific to the provider (supplier) of the communication device 151. The network part is information for identifying the network to which the device belongs. The host part is information for identifying the device belonging to the network.

[0139] Here, it is assumed that the illustrated processing is executed after the registration process is performed in the direct connection state. Figure 4 For example, this is the case where in the above registration process, in a state where the information processing device 101 belongs to the first network, the user presses the cloud button 306 after the process of step S1003 is performed by the communication app. Therefore, the state described here is a state where the communication app determines in step S404 that the information processing device 101 belongs to the first network, and the sequence moves to step S405.

[0140] In step S405, the communication app makes a notification for prompting the user to perform network settings. Here, the description will refer to Figure 5 . Figure 5 is a diagram illustrating an example of the notification made by the communication app in step S405. In step S405, as Figure 5 illustrated, the communication app displays the notification 500 as a pop-up window on the home screen 300.

[0141] For example, in the notification 500, a message 501, as well as buttons 502 and 503, are displayed. The message 501 is a message that indicates that network settings for the communication device 151 are required to use the function selected by the user and prompts the execution of network settings. The button 502 is, for example, an interface that can be used to accept an instruction to clear the notification 500. The button 503 is an interface that can accept an instruction to execute network settings.

[0142] Note that, as will be described later, the network setting is also a process for joining the information processing device 101 and the communication device 151 to the Wi-Fi network formed by the access point 131. In other words, it can also be considered that in step S405, the communication app makes a notification for joining the information processing device 101 and the communication device 151 to the second network.

[0143] In this example, the above-mentioned predetermined function selected by the user is the cloud function. To enable the communication app to execute the cloud function, both the information processing device 101 and the communication device 151 need to join the network formed by the access point 131. Therefore, if it is determined in step S404 that the information processing device 101 belongs to the first network, the communication app displays the notification 500 for prompting the change of the connection destination to the second network. By this, for example, when the user uses the cloud function, the user can be guided to change the connection destination to the second network through the notification 500.

[0144] In step S406, the communication app determines whether to execute network settings. If the communication app determines to execute network settings, the sequence moves to step S407, and if the communication app determines not to execute network settings, the sequence moves to step S408. Specifically, in step S407, when, for example, the user presses the button 503 of the notification 500 displayed on the home screen 300 in step S405, the communication app determines to execute network settings. On the other hand, when the user presses the button 502, the communication app determines not to execute network settings.

[0145] In step S407, the communication app executes network settings. After executing the network setting process, the communication app clears the notification 500 from the home screen 300 and ends Figure 4 the illustrated sequence. Note that the network setting process will be described in detail later.

[0146] In this embodiment, the communication app ends after executing the process of step S407 Figure 4 the illustrated sequence, but the configuration is not limited to this. For example, when both the information processing device 101 and the communication device 151 join the second network by executing the process of step S407, the communication app can execute the same process as in (step S409 described later).

[0147] In step S408, the communication app clears the notification 500 from the home screen 300 and ends Figure 4 the illustrated sequence.

[0148] Network setting process

[0149] Here, reference will be made to Figure 6 to explain the network setting. Figure 6 is a flowchart illustrating an example of the network setting process executed by the communication app of the present embodiment. In this flowchart, the process executed by the communication app is implemented by, for example, the CPU 103 loading a control program stored in a memory such as the ROM 104 into the RAM 105 and executing the program. Figure 6 The illustrated process corresponds, for example, to the process of step S404 executed by the communication app.

[0150] In step S601, the communication app notifies the user to operate the communication device 151 in the network setting mode. Specifically, the communication app can display a message on the home screen 300 indicating that the communication device 151 will operate in the network setting mode.

[0151] As described above, when set to the network setting mode, the communication device 151 operates as a network setting access point (connection configuration AP, setting access point). In addition, the communication device 151 can send the identification information and password of the communication device 151 to the information processing device 101. The identification information of the communication device 151 includes information such as SSID, manufacturer name, serial number, and model name.

[0152] In step S602, the communication app cuts off the direct connection between the information processing device 101 and the communication device 151. In other words, the communication app establishes a communication mode in which the information processing device 101 does not belong to the first network.

[0153] In step S603, the communication app searches for the communication device 151 in the network setting mode using the communication unit 109 and the short-range wireless communication unit 110, etc. The communication app displays the search result in the console unit 108. For example, the communication app accepts an instruction to select the communication device 151 from the search results displayed in the console unit 108. For example, the communication app can display an interface in the console unit 108 that can accept an instruction to select the communication device 151 from the search results.

[0154] In step S604, the communication app establishes a connection with the communication device 151 in the network setting mode.

[0155] In step S605, the communication app requests a list of access points around communication device 151 from communication device 151. The communication app receives the list of access points discovered through the search by communication device 151.

[0156] In step S606, the communication app displays the list of access points received in step S605 and accepts a selection instruction from the user. For example, the communication app displays an interface (not shown) capable of accepting an instruction to select an access point in console unit 108 or the like.

[0157] In step S607, the communication app accepts the input of the password for the access point selected in step S606. Specifically, the communication app displays an interface capable of accepting the input of the password for the access point selected in step S607.

[0158] In step S608, the communication app sends the SSID of the access point selected in step S606 and the password input in step S607 to communication device 151. The communication app sends a connection request for connecting to access point 131 that has received the selection instruction to communication device 151. In other words, the communication app sends information for causing communication device 151 to join the Wi-Fi network formed by access point 131.

[0159] In step S609, the communication app disconnects the connection between information processing device 101 and communication device 151 operating in network setup mode. Note that after the connection between information processing device 101 and communication device 151 in network setup mode is disconnected by the communication app, the connection between information processing device 101 and access point 131 is established through the reconnection function of the OS of information processing device 101. The reconnection function is a function that automatically executes regardless of an instruction from the communication app. The access point 131 reconnected through the reconnection function of the OS is the AP corresponding to the connection information held by the OS and is the AP to which information processing device 101 was connected in the past. In other words, after the connection between information processing device 101 and communication device 151 in network setup mode is disconnected by the communication app in step S609, the reconnection function causes information processing device 101 to belong to the second network.

[0160] In step S610, the communication app searches for communication device 151 on the second network to which information processing device 101 belongs. For example, this search is performed through the communication using the above infrastructure connection. For example, the communication app specifies the identification information of communication device 151 and uses a predetermined protocol to request a response from communication device 151.

[0161] For example, the communication app designates an object identifier (OID) for indicating the device name, serial number, etc. of the communication device 151. Then, a Get Request command is broadcast on the second network to which the information processing device 101 belongs by using the Simple Network Management Protocol (hereinafter referred to as "SNMP") to request a response from the communication device 151.

[0162] In step S611, the communication app determines whether the communication device 151 has been discovered. If the communication app determines that the communication device 151 has been discovered, the sequence moves to step S612. However, if the communication app determines that the communication device 151 has not been discovered, the sequence moves to step S613. Specifically, through the process executed in step S610, the communication app determines that the communication device 151 has been discovered when it receives a response from the communication device 151, and determines that the communication device 151 has not been discovered when it does not receive a response from the communication device 151.

[0163] Note that, in other words, the case where the communication app determines that the communication device 151 has been discovered is the case where both the information processing device 101 and the communication device 151 belong to the second network. In other words, Figure 6 the network settings can also be considered as a process for enabling both the information processing device 101 and the communication device 151 to join the second network.

[0164] In step S612, the communication app executes a process for registering the discovered communication device 151. Specifically, for example, the communication app requests information related to the communication device 151 from the discovered communication device 151 and obtains information related to the communication device 151. The communication app also stores the obtained information related to the communication device 151. As described above, the information related to the communication device 151 includes, for example, the capability information of the communication device 151 and the infrastructure connection MAC address of the communication device 151, etc. In step S612, the communication app stores information indicating that the communication device 151 has been registered by infrastructure connection.

[0165] In step S613, the communication app gives a notification indicating that the information processing device 101 and the communication device 151 belong to different networks. For example, the communication app can display a notification on the home screen 300 indicating that the information processing device 101 and the communication device 151 belong to different Wi-Fi networks.

[0166] In the case of execution after the registration process by infrastructure connection

[0167] Next, the case of executing the Figure 4 illustrated process in response to the user pressing the cloud button 306 after the registration process by infrastructure connection will be described.

[0168] The processing of steps S401 to S403 is the same as the case where the information processing device 101 and the communication device 151 are directly connected, and thus its description will be omitted.

[0169] In step S404, the communication app determines whether the information processing device 101 belongs to the first network by using the first IP address obtained through the processing of step S402 or the second IP address obtained through the processing of step S403. Here, it is assumed that the user presses the cloud button 306 after the registration process has been performed with infrastructure connection. Specifically, for example, this is the case where, in the above registration process, in a state where the information processing device 101 belongs to the second network, the user presses the cloud button 306 after the processing of step S1003 has been performed by the communication app. In this case, the processing exemplified is executed in a state where the information processing device 101 and the communication device 151 are in an infrastructure connection state. Figure 4 the exemplified processing. Therefore, the state described here is a state where the communication app determines in step S404 that the information processing device 101 does not belong to the first network, and the sequence moves to step S409.

[0170] In step S409, the communication app executes a predetermined process. The communication app ends after executing the predetermined process. Figure 4 the exemplified processing. Specifically, in step S409, the communication app displays a screen for using a predetermined function through the network. As described above, the case where the result of the determination made in step S404 is "no" can include the case where the information processing device 101 is not connected to any Wi-Fi network. Therefore, in the present embodiment, even if the information processing device 101 is not connected to any Wi-Fi network, the sequence can move to step S409. However, the predetermined process includes Internet communication through the Wi-Fi network. Therefore, if the information processing device 101 is not connected to any Wi-Fi network, the Internet communication experiences an error, and the processing of the flowchart ends without the predetermined process being completed. Here, reference will be made to Figure 7 to illustrate the screen displayed by the communication app in the processing of step S409. Figure 7 is a diagram exemplifying an example of a screen 700 for using a predetermined function. In this example, the screen 700 for using a predetermined function is, for example, a web page. For example, various interfaces 701 to 703 related to the predetermined function are displayed on the screen 700. In this example, the screen 700 will be described as a screen for using the cloud function that serves as the predetermined function as described above.

[0171] The interface 701 is a link that can accept an instruction to start a cloud function. After the interface 701 is pressed, first, the communication app instructs the communication device 151 to send information on the serial number of the communication device 151 to an external server (not shown) corresponding to the cloud function. After receiving this information, the communication device 151 sends its own serial number to the external server. After that, the communication device 151 sends information indicating whether the serial number has been successfully sent to the information processing device 101. If this information indicates failure, the information processing device 101 displays an error message through the communication app, and if this information indicates success, the information processing device 101 displays a web page for registering the communication device 151 with the service corresponding to the cloud function through the communication app. Then, the information processing device 101 accepts input of account information for logging in to the user's account from the user through the web page and sends this account information to the external server. Once the correct account information is sent to the external server and the account login is successful, the information processing device 101 sends the serial number obtained from the communication device 151 when the communication device 151 is registered with the external server in the communication app. Through this, the external server manages the user's account in association with the communication device 151 corresponding to the serial number, and the external server can provide the service of the cloud function to the user and the communication device 151. This completes the process of registering the communication device 151 with the service of the cloud function, and thereafter, cloud printing can be executed from the communication app. Note that cloud printing is a function for enabling the communication device 151 to print image data on the Internet. The "image data on the Internet" is, for example, image data from a cloud service or a social network service. If the communication device 151 has already been registered with the cloud function, the predetermined process can be a process for sending a print job to the communication device 151 through cloud printing instead of a process for registering the communication device 151 with the cloud function. The interface 702 is a link that can accept an instruction to create an account for using the cloud function. In other words, the screen 700 can also be regarded as a screen for starting to use the cloud function. The interface 703 is a link that can accept an instruction to display an explanation of the cloud function.

[0172] According to the present embodiment as described so far, when, for example, an instruction to execute a predetermined function such as a cloud function is received, the communication app determines whether the operating environment of the communication app is a first operating environment on a first OS operating as a host OS but not on a guest OS, or a second operating environment on a second OS operating as a host OS and also on a guest OS. If it is determined that the operating environment is the first operating environment, the communication app obtains a first IP address from the first OS, and if it is determined that the operating environment is the second operating environment, the communication app obtains a second IP address from the second OS. In this way, the communication app can determine the operating environment of the communication app, change the method used to obtain the IP address according to the operating environment, and obtain an appropriate IP address.

[0173] In addition, according to the present embodiment, the communication app determines whether the information processing device 101 belongs to a first network formed by the communication device 151 by using the first IP address or the second IP address. If it is determined that the information processing device 101 belongs to the first network formed by the communication device 151, the communication app performs a process to cause both the information processing device 101 and the communication device 151 to join a second network. By this, when an instruction to execute a predetermined function is received from a user in a state where the information processing device 101 belongs to the first network, the network to which the information processing device 101 and the communication device 151 belong can be changed. In addition, by the communication app changing the method used to obtain the IP address according to the operating environment as described above, even when the communication app operates in the second operating environment, the network to which the information processing device 101 and the communication device 151 belong can be appropriately changed.

[0174] Although the present embodiment illustrates the case where the processing exemplified is executed when the cloud button 306 is pressed, the configuration is not limited thereto, and the processing may be executed when a different button is pressed. For example, the processing exemplified may be executed when an interface (not shown) capable of receiving an instruction to start executing an integration function is pressed. Figure 4 Figure 4

[0175] ​​Note that the information processing device 101 can communicate with external devices (such as the communication device 151 or an external server (not shown)) through the communication app. For example, when the information processing device 101 communicates with an external device through the communication app, the information processing device 101 can send various types of jobs such as print jobs to the communication device 151 through the communication app. In addition, for example, there are cases where the information processing device 101 sends connection information of an access point to the communication device 151 during network settings, and cases where the information processing device 101 communicates with an external server (not shown) to register the communication device 151 when, for example, executing a cloud function. When the information processing device 101 communicates with an external device in this way through the communication app, communication is achieved, for example, by sending packets. The IP address obtained by the communication app is included in the packets sent when the information processing device 101 communicates with an external device through the communication app. For example, regardless of whether the operating environment of the communication app is the first environment or the second environment, the communication app can use the first API to obtain the IP address.

[0176] Second Embodiment

[0177] Next, the second embodiment will be described focusing on the differences from the first embodiment. The first embodiment described the following configuration: when receiving an instruction to start executing a cloud function, the communication app determines the operating environment of the communication app and changes the method for obtaining the IP address of the information processing device 101 according to the result of the determination. The communication app communicates with the communication device 151 when executing a communication function such as a print job sending function with the communication device 151 registered in the communication app through the network to which the information processing device 101 belongs. After the communication fails, the communication app determines the operating environment of the communication app. The following configuration will be described: the communication app changes the method for obtaining the IP address of the information processing device 101 according to the operating environment, uses the obtained IP address to determine the communication mode between the information processing device 101 and the communication device 151, and appropriately executes the process for changing the communication mode.

[0178] Figure 8 It is a flowchart exemplifying the operations performed by the communication app according to this embodiment. In this flowchart, the processing performed by the communication app is implemented by, for example, the CPU 103 loading a control program stored in a memory such as the ROM 104 into the RAM 105 and executing the program.

[0179] For example, after the communication app receives an instruction to execute a function (communication function) for communicating with the communication device 151 and, as a result of executing the communication function, the communication with the communication device 151 fails, Figure 8The processing starts. Specifically, in this embodiment, the communication function is, for example, a print job sending function. In other words, after the user presses the document print button 302 or the photo print button 303, etc., but the print job sending function cannot be executed, the Figure 8 processing is executed. Specifically, the case where the print job sending function cannot be executed is a case where the communication app cannot discover the communication device 151 registered to the communication app on the network to which the information processing device 101 belongs. For example, when the communication app executes the print job sending function, it sends a print job to the communication device 151 registered to the communication app using the MAC address stored in the registration process. In addition, in the registration process, as described above, the MAC address used for infrastructure connection of the communication device 151 is different from the MAC address used for direct connection of the communication device 151. In other words, depending on the communication mode between the information processing device 101 and the communication device 151, the MAC address of the communication device 151 registered to the communication app during the registration process is different. For example, after the communication device 151 is registered to the communication app, the communication mode between the information processing device 101 and the communication device 151 may change to a mode different from the mode used during the registration process. In this case, even if a print job is sent to the communication device 151 registered to the communication app using the MAC address stored during the registration process, the sending of the print job will fail. In the case where the sending of the print job fails, for example, the communication app displays a notification (not shown) for indicating that the information processing device 101 and the communication device 151 cannot communicate. This notification is, for example, displayed as a screen for executing the network diagnosis function. For example, when a button that can accept an instruction to execute the network diagnosis function displayed on the screen is pressed, the Figure 8 illustrated sequence starts. Although this embodiment describes the print job sending function as an example of the communication function, the configuration is not limited thereto, and instead, a copy job sending function or a scan job sending function, etc. may be used. In other words, the communication function may be any function related to communication with the communication device 151.

[0180] The processing of steps S801 to S803 is the same as the Figure 4 processing of steps S401 to S403 therein, and thus will not be described here.

[0181] In step S804, the communication app determines whether the information processing device 101 belongs to the first network. If in step S804 the communication app determines that the information processing device 101 belongs to the first network, the sequence moves to step S805, and if the communication app determines that the information processing device 101 does not belong to the first network, the sequence moves to step S806. This determination is made in the same manner as the processing in step S402, and thus will not be described here. Note that examples of the case where the information processing device 101 belongs to the first network and the case where it does not belong to the first network in step S804 of the present embodiment will be described below.

[0182] First, an example of the case where in the processing of step S804 according to the present embodiment, the communication app determines that the information processing device 101 belongs to the first network ( "Yes" in step S804) will be described. For example, after the registration process is performed while the information processing device 101 and the communication device 151 are in an infrastructure connection state, the communication mode between the information processing device 101 and the communication device 151 can be changed to a direct connection. For example, without going through the registration process, the communication mode between the information processing device 101 and the communication device 151 can be changed to a direct connection by a user operation from the wireless settings screen (Wi-Fi settings screen) of the information processing device 101. In this case, in the processing of step S804, the communication app determines that the information processing device 101 belongs to the first network.

[0183] In addition, an example of the case where in the processing of step S804 according to the present embodiment, the communication app determines that the information processing device 101 does not belong to the first network ( "No" in step S804) will be described. For example, after registering the communication device 151 with the communication app while the information processing device 101 and the communication device 151 are in an infrastructure connection state through the access point 131, the connection destination of the information processing device 101 can be changed to another access point different from the access point 131 by a user operation. Specifically, for example, the following is possible: when registering the communication device 151 with the communication app, the information processing device 101 is already connected to the access point 131, but after registration, the access point to which the information processing device 101 is connected changes. In addition, for example, there is a case where after the registration process is performed while the information processing device 101 and the communication device 151 are in a direct connection state, the information processing device 101 and the communication device 151 are connected to the access point 131 through an infrastructure connection. In this case, for example, in the processing of step S804, the communication app determines that the information processing device 101 belongs to the first network.

[0184] In step S805, the communication app issues a notification for prompting a change in the connection destination of the information processing device 101. Here, the description will refer toFigure 9 。 Figure 9 This is a diagram illustrating an example of a notification displayed by the communication app in the console unit 108 in step S805. In step S805, the communication app displays a notification 900 in the console unit 108, for example.

[0185] The notification 900 includes, for example, a message 901 for prompting the information processing device 101 and the communication device 151 to join the second network. In other words, the process in step S805 is for causing both the information processing device 101 and the communication device 151 to join the second network. In other words, the process in step S805 is also a notification for guiding the user to set the information processing device 101 and the communication device 151 to infrastructure connection. For example, the message 901 may include information (such as an SSID) indicating a device that operates as an access point to which the information processing device 101 is connected.

[0186] Even if, for example, the communication device 151 has been registered with the communication app while the information processing device 101 and the communication device 151 are in an infrastructure connection state, but the connection between the information processing device 101 and the communication device 151 later changes to a direct connection, such a notification can prompt the user to return to the communication mode used during registration.

[0187] The notification 900 may also include a message for prompting the restart of the communication device 151, a message for prompting the user to disconnect the power of the devices around the information processing device 101, or a message for prompting the user to restart the currently used information processing device 101, etc. The notification 900 may also include, for example, interfaces 902 and 903 capable of accepting instructions for selecting whether to execute the processes corresponding to the respective messages displayed in the notification 900.

[0188] In step S806, the communication app determines whether the communication device 151 has been registered via the second network in the registration process. In other words, the communication app determines whether the communication device 151 has been registered while the information processing device 101 and the communication device 151 are in an infrastructure connection state. If the communication app determines that the communication device 151 has been registered via the second network, the sequence moves to step S807. On the other hand, if the communication app determines that the communication device 151 has not been registered via the second network, the sequence moves to step S810. The case where the communication device 151 has not been registered with the communication app via the second network corresponds to, for example, the case where the communication device 151 has been registered via the first network.

[0189] Specifically, in step S806, for example, the communication app refers to the information stored during the registration process for indicating the communication mode between the information processing device 101 and the communication device 151 when registering the communication device 151. For example, when the information indicating that the communication device 151 is registered in infrastructure connection is stored, the communication app determines that the communication device 151 is registered via the second network. On the other hand, when the information indicating that the communication device 151 is registered in direct connection is stored, the communication app determines that the communication device 151 is not registered via the second network.

[0190] In step S807, the communication app issues a notification for prompting the execution of network settings. Here, an explanation will be made with reference to Figure 10A . Figure 10A FIG. is an example diagram showing the notification 1000 displayed by the communication app in the console unit 108 in step S808. The notification 1000 includes, for example, a message 1001 for prompting the execution of network settings. The notification 1000 includes an interface 1002 that can accept an instruction to execute network settings and an interface 1003 that can accept an instruction not to execute network settings. For example, an interface 1004 that can accept an instruction to terminate Figure 8 the sequence illustrated may also be displayed in the notification 1000.

[0191] In other words, the notification 1000 for prompting the execution of network settings in step S807 is also a notification for causing both the information processing device 101 and the communication device 151 to join the network formed by the access point to which the information processing device 101 is connected. For example, as described above, after registering the communication device 151 with the communication app through the infrastructure connection between the information processing device 101 and the communication device 151 via the access point 131, the connection destination of the information processing device 101 can be changed to another access point different from the access point 131 by a user operation. On the other hand, there are cases where the user wishes to maintain the state where the connection destination of the information processing device 101 has been changed to another access point. Even in such a case, displaying the notification 1000 in step S807 makes it possible to propose a process for placing the information processing device 101 and the communication device 151 in a communication mode where a print job can be used without changing the connection destination of the information processing device 101.

[0192] Although an example where the sequence moves to step S807 when the communication app determines in step S806 that the communication device 151 has been registered via the second network during the registration process is described here, the configuration is not limited to this.

[0193] For example, if it is determined in step S806 that the communication device 151 has been registered via the second network during the registration process, the communication app may display a notification (not shown) indicating that the network to which the information processing device 101 currently belongs is different from the network via which the registration process was performed. For example, the SSID of the access point to which the information processing device 101 was connected when the communication app performed the registration process may be displayed in this notification. For example, the SSID of the access point to which the information processing device 101 is currently connected may be displayed in this notification. Additionally, for example, an interface that can accept an instruction to reconnect to the access point to which the information processing device 101 was connected when the communication app performed the registration process may be displayed in this notification. For example, an interface that can accept an instruction to continue using the access point to which the information processing device 101 is connected may also be displayed in this notification. The configuration may also be such that when the communication app accepts an instruction to continue using the access point to which the information processing device 101 is currently connected, the sequence moves to step S807.

[0194] In step S808, the communication app determines whether to perform network settings. If the communication app determines to perform network settings, the sequence moves to step S809. However, if the communication app determines that network settings will not be performed, the notification 1000 is cleared, and Figure 8 the illustrated sequence ends. For example, when an instruction to perform network settings is received, the communication app determines to perform network settings. On the other hand, when an instruction not to perform network settings is received, the communication app determines not to perform network settings.

[0195] In step S809, the communication app performs network setting processing, clears the notification 1000, and ends Figure 8 the illustrated sequence. The processing in step S809 is the same as the processing in step S407 ( Figure 6 processing), so it will not be described.

[0196] Although this example illustrates a configuration where the illustrated sequence ends after the network setting processing is completed, Figure 8 the configuration is not limited to this. For example, the configuration may be such that if the information processing device 101 and the communication device 151 can communicate via infrastructure connection after the network setting processing is performed in step S809, the communication app performs the print job sending function again.

[0197] In step S810, the communication app issues a notification for prompting a change in the connection destination of the information processing device 101. In other words, changing the connection destination means changing the network to which the information processing device 101 belongs. Here, the explanation will refer to Figure 10B . Figure 10BFIG. is an example of the notification 1010 displayed by the communication app in the console unit 108 in step S810. The notification 1010 includes, for example, a message 1012 for prompting a change in the network to which the information processing device 101 belongs. The notification 1010 also includes information 1013 indicating the network to which the change is to be made. The information 1013 indicating the network to which the change is to be made is, for example, the SSID of the communication device 151 stored during the registration process. In other words, it can also be considered that in step S810, the communication app makes a notification for prompting the communication device 151 for which the registration process has been performed to change the connection destination of the information processing device 101. Making notifications such as the message 1012 and the information 1013 in this way enables, for example, even when the communication device 151 has been registered with the communication app while the information processing device 101 and the communication device 151 are in a directly connected state, but the communication mode between the information processing device 101 and the communication device 151 later changes to a mode different from the direct connection, to prompt the communication mode to return to the mode used during registration.

[0198] In addition, the notification 1010 may include an interface 1014 that can accept an instruction to display a screen for changing the connection destination of the information processing device 101. For example, when the user presses the interface 1014, the communication app may execute a process for displaying a screen for changing the connection destination of the information processing device 101.

[0199] In addition, the notification 1010 may include, for example, an interface 1015 that can accept an instruction in the case where the connection destination of the information processing device 101 cannot be found, or an interface 1016 that can accept an instruction to terminate Figure 8 the illustrated process, etc.

[0200] As described above, if an attempt is made to communicate with the communication device 151 registered with the communication app but the communication device 151 is not found, the operating environment of the communication app is judged, and the IP address of the information processing device 101 is obtained according to the operating environment. The communication app judges the communication mode between the information processing device 101 and the communication device 151 based on the obtained IP address, and performs a process for changing the communication mode. With such a configuration, even when the communication mode has changed to a mode different from the communication mode used when registering the communication device 151 with the communication app while the communication app is executing the communication function, the communication app can return the communication mode to a mode in which the communication function can be executed. In addition, by changing the method for obtaining the IP address according to the operating environment as described above by the communication app, even when the communication app is operating in the second operating environment, the communication mode between the information processing device 101 and the communication device 151 can be appropriately changed.

[0201] Other embodiments

[0202] Embodiments of the present invention can also be implemented by the following method, that is, software (including a computer program product of computer programs / instructions) that executes the functions of the above embodiments is provided to a system or device through a network or various storage media, and a computer (central processing unit (CPU), microprocessing unit (MPU)) of the system or device reads and executes the computer programs / instructions.

[0203] Although the present invention has been described with reference to exemplary embodiments, it should be understood that the present invention is not limited to the disclosed exemplary embodiments. The scope of the appended claims is to be accorded the broadest interpretation so as to encompass all such modifications, equivalent structures and functions.

Claims

1. A computer program product, comprising a predetermined program that is operable on an operating system and configured to cause a computer to execute a method, the method comprising: Causing a computer of a first information processing device having a first operating environment on a first OS operating as a host OS but not on a guest OS: Based on the operating environment of the predetermined program being the first operating environment, obtaining a first IP address of the first information processing device through a first application programming interface, i.e., a first API, Performing a first determination process for determining, using the first IP address obtained through the first API, whether the first information processing device belongs to a first network formed by communication devices external to the first information processing device, and Based on the determination in the first determination process that the first information processing device belongs to the first network, performing a first process, and based on the determination in the first determination process that the first information processing device does not belong to the first network, performing a second process different from the first process; And Causing a computer of a second information processing device having a second operating environment on a second OS operating as the host OS and on the guest OS: Based on the operating environment of the predetermined program being the second operating environment, obtaining a second IP address of the second information processing device through a second API different from the first API, Performing a second determination process for determining, using the second IP address obtained through the second API, whether the second information processing device belongs to the first network, and Based on the determination in the second determination process that the second information processing device belongs to the first network, performing the first process, and based on the determination in the second determination process that the second information processing device does not belong to the first network, performing the second process.

2. The computer program product according to claim 1, wherein The first determination process is a process for comparing whether a third IP address, which is the IP address of the communication device, is the same as the first IP address, In the case where the third IP address and the first IP address are the same, it is determined that the first information processing device belongs to the first network, and in the case where the third IP address and the first IP address are different, it is determined that the first information processing device does not belong to the first network, The second determination process is a process for comparing whether the third IP address and the second IP address are the same, and In the case where the third IP address and the second IP address are the same, it is determined that the second information processing device belongs to the first network, and in the case where the third IP address and the second IP address are different, it is determined that the second information processing device does not belong to the first network.

3. The computer program product according to claim 2, Among them, The third IP address is an address that has been pre-held since the predetermined program was installed in the first information processing device or the second information processing device.

4. The computer program product according to claim 2, wherein, when the first information processing device belongs to the first network, the communication device assigns the third IP address to the first information processing device, when the first information processing device belongs to the first network, the first IP address obtained through the first API is the third IP address assigned to the communication device, when the second information processing device belongs to the first network, the communication device assigns the third IP address to the second information processing device, and when the second information processing device belongs to the first network, the second IP address obtained through the second API is the third IP address assigned to the communication device.

5. The computer program product according to claim 1, wherein, the first API is an API for obtaining an IP address assigned to a network interface managed by a predetermined OS, and the host OS of the first information processing device and the guest OS of the second information processing device are the OSs supported by the predetermined OS.

6. The computer program product according to claim 5, Among them, the predetermined OS is Android OS, and Android is a registered trademark.

7. The computer program product according to claim 1, wherein, the second API is an API for obtaining information specified by the predetermined program from the host OS, and the second IP address is obtained by specifying an IP address assigned to a network interface managed by the second OS through the predetermined program and executing the second API.

8. The computer program product according to claim 1, wherein, the first process is a process for connecting the communication device to a second network different from the first network, and the second process is a predetermined process including Internet communication through the second network.

9. The computer program product according to claim 8, the method further comprising: causing the computer of the first information processing device: to perform control to display a predetermined button for executing the predetermined process based on the first information processing device successfully obtaining information from the communication device through the network to which the first information processing device belongs, and to perform control not to display the predetermined button based on the first information processing device failing to obtain information from the communication device through the network to which the first information processing device belongs; and causing the computer of the second information processing device: to perform control to display the predetermined button based on the second information processing device successfully obtaining information from the communication device through the network to which the second information processing device belongs, and to perform control not to display the predetermined button based on the second information processing device failing to obtain information from the communication device through the network to which the second information processing device belongs, wherein, based on the operation of the predetermined button displayed in the first information processing device, the first determination process is executed, and The second determination process is executed based on an operation of a predetermined button displayed in the second information processing device.

10. The computer program product according to claim 8, Among them, wherein the predetermined process is a process for sending a print job to the communication device via an external server on the Internet or a process for registering the communication device with the external server so that the communication device executes a process for sending a usage state of the communication device to the external server.

11. The computer program product according to claim 8, wherein, the first process is a process for sending connection information for connecting to the second network to the communication device, and when the connection information is sent to the communication device, the communication device uses the connection information to connect to the second network.

12. The computer program product according to claim 1, wherein, the first process is a process for displaying a screen for prompting a change in a connection destination of a device on which the predetermined program is running, and the second process is a process for connecting the communication device to a second network different from the first network.

13. The computer program product according to claim 12, the method further comprising: causing a computer of the first information processing device and a computer of the second information processing device to: register the communication device with the predetermined program by receiving predetermined information from the communication device, wherein, based on a determination in the first determination process that the first information processing device does not belong to the first network and in response to receiving the predetermined information from the communication device via the second network, the second process is executed in the first information processing device, based on a determination in the first determination process that the first information processing device does not belong to the first network and in response to receiving the predetermined information from the communication device via the first network, the first process is executed in the first information processing device, based on a determination in the second determination process that the second information processing device does not belong to the first network and in response to receiving the predetermined information from the communication device via the second network, the second process is executed in the second information processing device, and based on a determination in the second determination process that the second information processing device does not belong to the first network and in response to receiving the predetermined information from the communication device via the first network, the first process is executed in the second information processing device.

14. The computer program product according to claim 12, wherein, the first determination process is executed based on a communication failure with the communication device despite receiving an instruction for executing a function for communicating with the communication device from the first information processing device, and Execute the second determination process based on the fact that, although an instruction to execute a function for communicating with the communication device has been received from the second information processing device, communication with the communication device has failed.

15. The computer program product according to claim 1, wherein the first process is a process for displaying a screen for prompting each of the communication device and the device on which the predetermined program is running to join the first network, and the second process is a process for connecting the communication device to a second network different from the first network.

16. The computer program product according to claim 1, the method further comprising: causing the computers of the first information processing device and the second information processing device to execute a process for sending at least one of a print job and a scan job for scanning to the communication device.

17. The computer program product according to claim 1, wherein in the first operating environment, the first OS as the host OS is the Android OS, and the guest OS does not run on the host OS, and Android is a registered trademark, and in the second operating environment, the second OS as the host OS is the Chrome OS, and the guest OS is a virtual Android OS, and Chrome is a registered trademark and Android is a registered trademark.

18. The computer program product according to claim 1, Among them, the predetermined program is an application program for the Android OS, and Android is a registered trademark.

19. The computer program product according to claim 1, the method further comprising: causing the computers of the first information processing device and the second information processing device to execute a determination process for determining whether the predetermined program is running in the first operating environment or the predetermined program is running in the second operating environment.

20. A method for controlling a first information processing device and a second information processing device, the first information processing device having a predetermined program capable of running on an operating system, i.e., an OS, and having a first operating environment on a first OS running as the host OS but not on the guest OS, and the second information processing device having the predetermined program and having a second operating environment on a second OS running as the host OS and also on the guest OS, the method comprising: In the first information processing device, based on the fact that the operating environment of the predetermined program is the first operating environment, obtain a first IP address of the first information processing device through a first application programming interface, i.e., a first API; In the first information processing device, execute a first determination process for determining whether the first information processing device belongs to a first network formed by a communication device external to the first information processing device by using the first IP address obtained through the first API; In the first information processing device, based on the determination in the first determination process that the first information processing device belongs to the first network, a first process is executed, and in the first information processing device, based on the determination in the first determination process that the first information processing device does not belong to the first network, a second process different from the first process is executed; In the second information processing device, based on the operation environment of the predetermined program being the second operation environment, a second IP address of the second information processing device is obtained through a second API different from the first API; In the second information processing device, a second determination process is executed, and the second determination process is used to determine whether the second information processing device belongs to the first network by using the second IP address obtained through the second API; And In the second information processing device, based on the determination in the second determination process that the second information processing device belongs to the first network, the first process is executed, and in the second information processing device, based on the determination in the second determination process that the second information processing device does not belong to the first network, the second process is executed.

Citation Information

Patent Citations

  • Image processor, image processor control program and image processing system

    JP2009049679A