U.S. patent application number 15/011599 was filed with the patent office on 2017-08-03 for coupled device deployment location classification.
The applicant listed for this patent is NCR Corporation. Invention is credited to Nicholas Caine, David Mayo.
Application Number | 20170220507 15/011599 |
Document ID | / |
Family ID | 57914777 |
Filed Date | 2017-08-03 |
United States Patent
Application |
20170220507 |
Kind Code |
A1 |
Caine; Nicholas ; et
al. |
August 3, 2017 |
COUPLED DEVICE DEPLOYMENT LOCATION CLASSIFICATION
Abstract
Various embodiments herein each include at least one of devices,
methods, and software for coupled device deployment location
classification in an automated manner. One embodiment, in the form
of a method, includes searching a device tree of a computing device
to identify any devices of interest. This method, for each
identified device of interest, may then identify a path within the
computing device of the device of interest and classify, based on
the identified path, a relative location of the device of interest.
This method may then store the classification of the device of
interest in a memory device of the computing device.
Inventors: |
Caine; Nicholas; (Duluth,
GA) ; Mayo; David; (Duluth, GA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
NCR Corporation |
Duluth |
GA |
US |
|
|
Family ID: |
57914777 |
Appl. No.: |
15/011599 |
Filed: |
January 31, 2016 |
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 13/385 20130101;
G06F 21/85 20130101; G06F 13/4068 20130101; G06F 13/36 20130101;
G06F 9/4411 20130101; G06F 2213/0042 20130101; G06F 2221/2113
20130101; G06F 2221/2145 20130101; G06Q 20/3224 20130101; G06F
13/4282 20130101; G06K 7/084 20130101; G06Q 20/20 20130101; G06F
21/6209 20130101; G06F 2221/2141 20130101 |
International
Class: |
G06F 13/40 20060101
G06F013/40; G06Q 20/20 20060101 G06Q020/20; G06K 7/08 20060101
G06K007/08; G06F 13/42 20060101 G06F013/42; G06F 13/36 20060101
G06F013/36 |
Claims
1. A method comprising: searching a device tree of a computing
device to identify any devices of interest; and for each identified
device of interest: identifying a path within the computing device
of the device of interest; classifying, based on the identified
path, a relative location of the device of interest; and storing
the classification of the device of interest in a memory device of
the computing device, the stored classification of the device of
interest stored as configuration data for at least one process to
inform the process in view of at least one other configuration
setting that enables or disables at least one function that may be
performed with or input that may be received via the device of
interest.
2. The method of claim 1, wherein a device of interest that is
searched for in the device tree is defined by at least one property
identifiable through at least one or a combination of computing
device operating system calls and queries to a device.
3. The method of claim 1, wherein a relative location identifies
whether a device of interest is internal to the computing device or
connected to the computing device via an ancillary connection.
4. The method of claim 3, wherein the ancillary connection is a
Universal Serial Bus (USB) connection.
5. (canceled)
6. The method of claim 1, wherein: there are two devices of
interest, each device of interest being a magnetic: stripe reader
(MSR) device; a first MSR device is classified as connected
internally to the computing device and a second MSR device is
classified as connected externally to the computing device; an MSR
data receiving process: identifies whether received MSR device data
is received from the first or second MSR device and a type of MSR
device data received; and determines whether the received MSR data
is of a type of MSR data that is configured as allowed to be
received via the MSR device from which the MSR data was
received.
7. The method of claim 6, wherein configuration settings of the MSR
data receiving process allow bankcard data to be received via only
one of the first and second MSR devices.
8. The method of claim 1, wherein identifying the path within the
computing device of the device of interest includes: retrieving
information identifying a parent device to which the device of
interest is coupled from an operating system (OS) of the computing
device via an Application Programming Interface (API) call; when
the parent device is a Universal Serial Bus (USB) hub or a USB
composite device, storing a handle of the parent device in memory
as the direct parent device of the device of interest and
retrieving information of a next parent device and repeat until a
type of the parent device is a root hub; and when the parent device
is the root hub, store a handle of the root hub in memory as a
parent device of the last device for which parent device
information was retrieved.
9. The method of claim 8, wherein the device information is stored
in memory in a referential manner forming a logical tree of how the
devices are arranged in a tree-like structure.
10. A method comprising: for each of at least one device of
interest within a computing device: classifying, based on an
identified path of the device of interest, a location of the device
of interest within the computing device; and storing the
classification of the device of interest in memory, the stored
classification of the device of interest stored as configuration
data for at least one process to inform the process in view of at
least one other configuration setting that enables or disables at
least one function that may be performed with or input that may be
received via the device of interest.
11. The method of claim 10, wherein each the at least one devices
of interest are devices of the same device type.
12. The method of claim 11, wherein an identified path of the
device of interest performed for each of the at least one devices
of interest is identified by identifying a path from a root device
hub to each of the at least one devices of interest by performing
data processing activities comprising: retrieving a device
information set from each device of interest coupled to the
computing device of a particular device-type of the same
device-type, the device information set including a handle to
communicate with each respective device; for each device of
interest, retrieving a parent device handle from an operating
system (OS); for each parent device handle retrieved that is not a
device handle of a root hub to which the device of interest is
connected, retrieving a further parent device handle and repeating
until the device handle of the root hub is obtained; storing each
retrieved device handle in an associative manner in memory forming
a logical device tree from the root hub to each of the at least one
devices of interest.
13. The method of claim 12, wherein classifying, based on an
identified path of the device of interest, a location of the device
of interest within the computing device includes: classifying a
device of interest coupled directly to the root hub or a device of
interest that is part of a composite device coupled directly to the
root hub as having a location internal to the computing device; and
classifying a device of interest not coupled directly to a root hub
or as part of a composite device not coupled directly to the root
huh as having a location external to the computing device.
14. The method of claim 12, wherein each of at least one devices of
interest are Universal Serial Bus (USB) devices.
15. The method of claim 14, wherein each device of interest is a
magnetic stripe reader (MSR) device.
16. A computing device comprising: a root Universal Serial Bus
(USB) hub; an external USB hub coupled to the root USB hub; a first
USB device of a particular USB device-type coupled to the root USB
hub: a second USB device of the particular USB device-type coupled
to the external USB hub; a processor; a memory; a USB device
location classification process stored in the memory and executable
by the processor to perform data processing activities to classify
a deployed location of USB devices of the particular USB
device-type coupled to the computing device, the data processing
activities comprising: for each USB device of the particular
device-type coupled to the computing device: classifying, based on
an identified path of the USB device of the particular USB
device-type, a location of the USB device; and storing the
classification of the USB device of interest in the memory, the
stored classification of the device of interest stored as
configuration data for at least one process to inform the process
in view of at least one other configuration setting that enables or
disables at least one function that may be performed with or input
that may be received via the device of interest.
17. The computing device of claim 16, wherein an identified path of
the USB device performed for each of the at least one USB devices
of the particular USB device-type is identified by identifying a
path from the root USB hub to each of the at least one devices of
interest by performing further data processing activities
comprising: retrieving a device information set from each USB
device of the particular USB device-type, the device information
set including a handle to communicate with each respective USB
device; for each USB device of the particular USB device-type,
retrieving a parent device handle from an operating system (OS)
that executes on the processor of the computing device; for each
parent device handle retrieved that is not a device handle of the
root USB hub to which the device of interest is connected,
retrieving a further parent device handle and repeating until the
device handle of the root USB hub is obtained; storing each
retrieved device handle in an associative manner in the memory
forming a logical device tree from the root USB hub to each of the
at least one USB devices of the particular USB device-type, the
stored data including data representative of: a first path from the
first USB device directly to the root USB hub; and a second path
from the second. USB device to the external USB hub and from the
external USB hub to the root USB hub.
18. The computing device of claim 17, wherein classifying, based on
the identified path of the USB device of the particular USB
device-type, the location of the USB device includes: classifying a
USB device of the particular USB device-type coupled directly to
the root USB hub or a USB device of the particular USB device-type
that is part of a composite device coupled directly to the root USB
hub as having a location internal to the computing device; and.
classifying a USB device of the particular USB device-type not
coupled directly to a root hub or a USB device of the particular
USB device-type that is part of a composite device not coupled
directly to the root hub as having a location external to the
computing device.
19. The computing device of claim 16, wherein the first and second
USB devices are both magnetic stripe reader (MSR) devices.
20. The method of claim 19, wherein at least one of the first and
second USB devices are composite devices including the MSR and
another portion that performs another function.
Description
BACKGROUND INFORMATION
[0001] Computing devices, such as personal computers, include
different ports through which devices may be coupled. Certain types
of devices may be considered acceptable for connection to any port
while other devices may only be acceptable when connected to a
certain port or a port at a particular location of the device to
which it is coupled. For example, it may not be acceptable for a
device of a certain device-type to be coupled to certain
Universal-Serial Bus (USB) ports of a computer controlling a
point-of-sale (POS) terminal, but acceptable with regard to other
ports. Such acceptable ports may be internal ports or ports of a
root USB hub while unacceptable ports are ports that exposed
externally to the POS terminal controlling computer or to a hub
other than the root hub. To date, such limitations can be
implemented only after manual configuration of the computing device
to classify connections of specific devices to a computing
device.
SUMMARY
[0002] Various embodiments herein each include at least one of
devices, methods, and software for coupled device deployment
location classification in an automated manner. One embodiment, in
the form of a method, includes searching a device tree of a
computing device to identify any devices of interest. This method,
for each identified device of interest, may then identify a path
within the computing device of the device of interest and classify,
based on the identified path, a relative location of the device of
interest. This method may then store the classification of the
device of interest in a memory device of the computing device.
[0003] Another method embodiment, for each of at least one device
of interest within a computing device, includes classifying, based
on an identified path of the device of interest, a location of the
device of interest within the computing device. This method may
then store the classification of the device of interest in
memory.
[0004] Another embodiment, in the form of a computing device,
includes a root USB hub and an external USB hub coupled to the root
USB hub. The computing device further includes a first USB device
of a particular USB device-type coupled to the root USB hub and a
second USB device of the particular USB device-type coupled to the
external USB hub. The computing device also includes a processor, a
memory, and a USB device location classification process stored in
the memory and executable by the processor to perform data
processing activities. The data processing activities are
executable by the processor to classify a deployed location of USB
devices of the particular USB device-type coupled to the computing
device. The data processing activities include, for each USB device
of the particular device-type coupled to the computing device,
classifying, based on an identified path of the USB device of the
particular USB device-type, a location of the USB device and
storing the classification of the USB device of interest in the
memory.
BRIEF DESCRIPTION OF THE DRAWINGS
[0005] FIG. 1 is a logical block diagram of a computer having two
devices connected thereto, according to an example embodiment.
[0006] FIG. 2 is a logical block diagram of a method, according to
an example embodiment.
[0007] FIG. 3 is a logical block diagram of a method, according to
an example embodiment.
[0008] FIG. 4 is a block diagram of a computing device, according
to an example embodiment.
DETAILED DESCRIPTION
[0009] Various embodiments herein each include at least one of
devices, methods, and software for coupled device deployment
location classification in an automated manner. Such classification
allows for devices coupled to a computing device, such as a
computer, to be classified by where they are connected to the
computing device. This classification facilitates enabling and
disabling certain functions of or usage of devices in all or
certain ways according to configuration settings with regard to
device-types and functions of and usage thereof. For example, when
the computing device is a computer that controls operation of a POS
terminal, a magnetic stripe reader (MSR) device coupled direct to a
root USB hub of the computer may be enabled to allow for bankcard
data (e.g., credit card, debit card automate teller machine card,
etc.) to be received by the computer while an MSR device coupled to
another USB hub may be disabled with regard to bankcard data but
enabled with regard to a customer loyalty card. This ability to
identify how, or more specifically, identify a path through which
certain devices are connected to the computer enables configuration
of computers to provide greater security and limit fraudulent
transactions and data entry, among other benefits. These and other
embodiments are described further herein with regard to the
figures.
[0010] In the following detailed description, reference is made to
the accompanying drawings that form a part hereof, and in which is
shown by way of illustration specific embodiments in which the
inventive subject matter may be practiced. These embodiments are
described in sufficient detail to enable those skilled in the art
to practice them, and it is to be understood that other embodiments
may be utilized and that structural, logical, and electrical
changes may be made without departing from the scope of the
inventive subject matter. Such embodiments of the inventive subject
matter may be referred to, individually and/or collectively, herein
by the term "invention" merely for convenience and without
intending to voluntarily limit the scope of this application to any
single invention or inventive concept if more than one is in fact
disclosed.
[0011] The following description is, therefore, not to be taken in
a limited sense, and the scope of the inventive subject matter is
defined by the appended claims.
[0012] The functions or algorithms described herein are implemented
in hardware, software or a combination of software and hardware in
one embodiment. The software comprises computer executable
instructions stored on computer readable media such as memory or
other type of storage devices. Further, described functions may
correspond to modules, which may be software, hardware, firmware,
or any combination thereof. Multiple functions are performed in one
or more modules as desired, and the embodiments described are
merely examples. The software is executed on a digital signal
processor, ASIC, microprocessor, or other type of processor
operating on a system, such as a personal computer, server, a
router, or other device capable of processing data including
network interconnection devices.
[0013] Some embodiments implement the functions in two or more
specific interconnected hardware modules or devices with related
control and data signals communicated between and through the
modules, or as portions of an application-specific integrated
circuit. Thus, the exemplary process flow is applicable to
software, firmware, and hardware implementations.
[0014] FIG. 1 is a logical block diagram of a computer 102 having
two devices connected thereto, according to an example embodiment.
The computer 102 is an example of a computing device upon which
some embodiments may be implemented. The computer 102 may be one
portion of a larger system, such as a POS terminal, an automated
teller machine (ATM), a self-service checkout terminal or other
self-service terminal (SST), and the like.
[0015] The computer 102 includes a root hub 104 to which other
devices and hubs may be connected to the computer 102. The root hub
104 may be a USB root hub and devices connected thereto may be USB
devices and hubs. In some embodiments, the root hub 104 is a USB
root hub and connected thereto are an MSR 106 and a USB hub 108.
The USB hub 108 may include other devices connected thereto, such
as another MSR 110.
[0016] The computer 102 includes a processor that executes
instructions of an operating system, programs, processes,
utilities, and the like that is stored on memory devices of the
computer 102. The processes include a process that executes to
identify at least some devices connected to the computer 102, how
they are connected, and to classify those devices by their
connections according to a criteria that comports with other
configuration settings of programs and processes that execute on
the computer 102. For example, the first MSR 106 connects directly
to the root hub 106 and the second MSR 110 connects to the hub 108
which is connected to the root hub 104. The process may execute in
some embodiments to build a data structure 120 including data
representative of how the devices are connected to the computer
102. This data structure 120 or similar data in other embodiments
is then utilized to classify how the devices, such as the two MSR
devices 106, 110, are connected to the computer 102. The
classifications then inform the other programs and processes, as
mentioned above, in view of their configuration settings to enable
and disable certain functions or operations of the MSR devices 106,
110, to accept or ignore certain datatypes input via the MSR
devices 106, 110, and the like. The process that identifies and
classifies how the devices, such as the MSR devices 106, 110, are
connected does so in an automated manner without requiring user
input to perform the identification and classification.
[0017] FIG. 2 is a logical block diagram of a method 200, according
to an example embodiment. The method 200 is an example of a method
that may be performed on the computer 102 to classify how devices
deployed on the computer 102 are coupled thereto, such as to
generate the data structure 120 of FIG. 1.
[0018] The method 200 includes searching 202 a device tree of a
computing device to identify any devices of interest. The devices
of interest may be of a particular type having certain properties,
such as a product identifier (PID), a vendor identifier (VID), or
other device information that may be obtained from an operating
system that executes on a computer to which the device or devices
may be connected.
[0019] The method 200 may then, for each identified device of
interest 204, identify 206 a path within the computing device of
the device of interest and classify 208, based on the identified
path, a relative location of the device of interest. The method may
then store 210 the classification of the device of interest in a
memory device of the computing device. Upon classifying a device of
interest, the method 200 then repeats with the next device by
performing the identifying 206, classifying 208, and storing 210
until all identified devices of interest have been classified.
[0020] In some embodiments, a device of interest that is searched
202 for in the device tree is defined by at least one property
identifiable through at least one or a combination of computing
device operating system calls and queries to a device. Further, in
some embodiments, the relative location identifies whether a device
of interest is internal to the computing device or otherwise
connected to a root hub or connected to the computing device via an
ancillary connection, such as the hub 108 of FIG. 1 via a USB
connection.
[0021] In some embodiments of the method 200, the stored 210
classification of a device of interest is stored 210 as
configuration data for at least one process to inform the process
in view of at least one other configuration setting. In other
embodiments, the stored 210 classification is stored 210 in a
manner that informs a program or process when applying
configuration settings.
[0022] In a particular embodiment, there may be two devices of
interest that are both MSR devices. Of the two MSR devices, a first
MSR device may be classified as connected internally to the
computing device and a second MSR device may be classified as
connected externally to the computing device. For example, an MSR
device connected to a root hub may be classified as internal and an
MSR device connected to a hub may be classified as external. The
internal and external connections may also refer to an actual
physical connection internal or external to a housing of a
computer, but this may not be true in all embodiments and instead
simply be with regard to whether an MSR device, or other device is
connected directly or indirectly to the root hub.
[0023] Continuing with the particular embodiment, this embodiment
further includes an MSR data receiving process that identifies
whether received MSR device data is received from the first or
second MSR device and a type of MSR device data received. The
method of this embodiment may then determine whether the received
MSR data is of a type of MSR data that is configured as allowed to
be received via the MSR device from which the MSR data was
received. For example the configuration may allow bankcard data or
other data to be received from only one or from both of the first
and second MSR devices.
[0024] In some embodiments of the method 200 identifying 206 the
path within the computing device of the device of interest includes
retrieving information identifying a parent device to which the
device of interest is coupled from an operating system (OS) of the
computing device via an Application Programming Interface (API)
call. For example, such an API call in a MICROSOFT.RTM.
WINDOWS.RTM. operating system available from MICROSOFT.RTM.
Corporation of Redmond, Wash. is the CM_Get_Parent function. When
the parent device is a USB hub or a USB composite device identified
in data received in response to the API call, some embodiments
include storing a handle of the parent device in memory as the
direct parent device of the device of interest. Such embodiments
may then retrieve information of a next parent device and repeat
until a type of the parent device is a root hub. However, when the
parent device is the root hub, this embodiment may then store a
handle of the root hub in memory as a parent device of the last
device for which parent device information was retrieved.
[0025] FIG. 3 is a logical block diagram of a method 300, according
to an example embodiment. The method 300 is another example of a
method that may be performed on the computer 102 to classify how
devices deployed on the computer 102 are coupled thereto, such as
to generate the data structure 120 of FIG. 1.
[0026] The method 300 includes, for each of at least one device of
interest within a computing device 302, classifying 304, based on
an identified path of the device of interest, a location of the
device of interest within the computing device. The method 300
further includes storing 306 the classification of the device of
interest in memory.
[0027] In some embodiments of the method 300, each of the the at
least one devices of interest are devices of the same device type.
Further, an identified path of the device of interest performed for
each of the at least one devices of interest may be identified by
identifying a path from a root device hub to each of the at least
one devices of interest. This identifying may include retrieving a
device information set from each device of interest coupled to the
computing device of a particular device-type of the same
device-type. The device information set may include a handle to
communicate with each respective device. Further, for each device
of interest, such embodiment may then retrieve a parent device
handle from an operating system OS. For each parent device handle
retrieved in such embodiments that is not a device handle of a root
hub to which the device of interest is connected, the method
includes retrieving a further parent device handle and repeating
until the device handle of the root hub is obtained. The method 300
in such embodiments, further includes storing each retrieved device
handle in an associative manner in memory forming a logical device
tree from the root hub to each of the at least one devices of
interest.
[0028] FIG. 4 is a block diagram of a computing device, according
to an example embodiment. In one embodiment, multiple such computer
systems are utilized in a distributed network to implement multiple
components in a transaction-based environment. An object-oriented,
service-oriented, or other architecture may be used to implement
such functions and communicate between the multiple systems and
components. The computing device of FIG. 4 may take different forms
in individual and different embodiments. For example, a computer of
an ATM, a computer of a POS terminal, and the like, such as
computer 102 of the POS terminal 100 of FIG. 1. One example
computing device in the form of a computer 410, may include a
processing unit 402, memory 404, removable storage 412, and
non-removable storage 414. Further, although the various data
storage elements are illustrated as part of the computer 410, the
storage may also or alternatively include cloud-based storage
accessible via a network, such as the Internet.
[0029] Memory 404 may include volatile memory 406 and non-volatile
memory 408. Computer 410 may include--or have access to a computing
environment that includes a variety of computer-readable media,
such as volatile memory 406 and non-volatile memory 408, removable
storage 412 and non-removable storage 414. Computer storage
includes random access memory (RAM), read only memory (ROM),
erasable programmable read-only memory (EPROM) and electrically
erasable programmable read-only memory (EEPROM), flash memory or
other memory technologies, compact disc read-only memory (CD ROM),
Digital Versatile Disks (DVD) or other optical disk storage,
magnetic cassettes, magnetic tape, magnetic disk storage or other
magnetic storage devices, or any other medium capable of storing
computer-readable instructions.
[0030] Computer 410 may include or have access to a computing
environment that includes input 416, output 418, and a
communication connection 420. The input 416 may include one or more
of a touchscreen, touchpad, mouse, keyboard, personal
identification number (PIN) pad, encrypting PIN pad, a bankcard
chip reader, a magnetic stripe (MSR) reader, camera, one or more
device-specific buttons, one or more sensors integrated within or
coupled via wired or wireless data connections to the computer 410,
composite devices including two or more of such devices, and other
input devices. The computer 410 may operate in a networked
environment using a communication connection 420 to connect to one
or more remote computers, such as database servers, web servers,
and other computing device. An example remote computer may include
a personal computer (PC), server, router, network PC, a peer device
or other common network node, or the like. The communication
connection 420 may be a network interface device such as one or
both of an Ethernet card and a wireless card or circuit that may be
connected to a network. The network may include one or more of a
Local Area Network (LAN), a Wide Area Network (WAN), the Internet,
and other networks. In some embodiments, the communication
connection 420 may also or alternatively include a transceiver
device, such as a BLUETOOTH.RTM. device that enables the computer
410 to wirelessly receive data from and transmit data to other
BLUETOOTH.RTM. devices.
[0031] Computer-readable instructions stored on a computer-readable
medium are executable by the processing unit 402 of the computer
410. A hard drive (magnetic disk or solid state), CD-ROM, and RAM
are some examples of articles including a non-transitory
computer-readable medium. For example, various computer programs
425 or apps, such as one or more applications and modules
implementing one or more of the methods illustrated and described
herein or is accessible via a web browser, may be stored on a
non-transitory computer-readable medium.
[0032] It will be readily understood to those skilled in the art
that various other changes in the details, material, and
arrangements of the parts and method stages which have been
described and illustrated in order to explain the nature of the
inventive subject matter may be made without departing from the
principles and scope of the inventive subject matter as expressed
in the subjoined claims.
* * * * *