Abstract:
Methods and systems for providing an emulation session to emulate a computer product for a host device. A method and system involve providing a communication link between the host device and an emulation bridge module provided on an emulation server separate from the host device; providing a host resource library file including a list of the plurality of resources available on the host device to the emulation bridge module; operating the emulation bridge module to determine emulation session resources required to provide the emulation session; selecting at least one of the host device and the emulation server for providing each required emulation session resource in the emulation session resources required to provide the emulation session: and providing the emulation session using the required emulation session resources provided by at least one of the host device and the emulation server.

Description:
[0001]    This application claims foreign priority to Canadian Patent Application No. 2,764,364, filed on Jan. 16, 2012. 
       FIELD 
       [0002]    The described embodiments relate to systems and methods for optimizing resources for emulation. 
       BACKGROUND 
       [0003]    An emulation system operates to imitate a computer product in an emulation session. The imitated computer product can then be provided to a host device, The computer product can be a computer system, an operating environment, a software application, and/or one or more hardware and software components. The emulation system facilitates the emulation session by translating and processing instructions received from the host device into a format compatible with the emulated computer product. 
         [0004]    The operation of existing emulation systems is limited. For example, certain operating systems require specific resources to be available in order to boot up. Emulation systems without access to these specific resources would not be able to emulate these operating systems. Android™-based devices, for example, require a camera component to boot up. 
         [0005]    Emulation systems can, therefore, benefit from improved access to resources available at the host device. 
       SUMMARY 
       [0006]    In accordance with an embodiment of the invention, there is provided a method of providing an emulation session to emulate a computer product for a host device, the host device comprising a host processor and a plurality of host resources. The method comprises the steps of: a) providing a communication link between the host device and an emulation bridge module provided on an emulation server separate from the host device, the emulation server comprising a server storage module and a server processor: b) providing a host resource library file including a list of the plurality of resources available on the host device to the emulation bridge module; c) operating the emulation bridge module to determine a plurality of emulation session resources required to provide the emulation session; d) selecting at least one of the host device and the emulation server for providing each required emulation session resource in the plurality of emulation session resources required to provide the emulation session, the step of selecting including: in response to determining a required emulation session resource corresponds to a resource listed in the host resource library file, selecting the host device for providing the required emulation session resource: and in response to determining a required emulation session resource does not correspond to a resource listed in the host resource library file, selecting the emulation server for providing the required emulation session resource; and e) providing the emulation session using the plurality of required emulation session resources provided by at least one of the host device and the emulation server. 
         [0007]    In accordance with another embodiment of the invention, there is provided a system for providing an emulation session to emulate a computer product for a host device, the host device comprising a host processor and a plurality of host resources. The system comprises: a host bridge module for installing on the host device, the host bridge module being configured to operate the host processor when installed on the host device, to provide a host resource library file including a list of the plurality of resources available on the host device; and at least one emulation server comprising m emulation bridge module, a server storage module and a server processor; the at least one emulation server being separate from the host device and being configured to: determine a plurality of emulation session resources required to provide the emulation session; receive the host resource library file from the host bridge module via a communication link between the host device and the at least one emulation server; select at least one of the host device and the at least one emulation server for providing each required emulation session resource in the plurality of emulation session resources required to provide the emulation session; in response to determining a required emulation session resource corresponds to a resource listed in the host resource library file, select the host device for providing the required emulation session resource: in response to determining a required emulation session resource does not correspond to a resource listed in the host resource library file, select the emulation server for providing the required emulation session resource; and provide the emulation session using the plurality of required emulation session resources provided by at least one of the host device and the at least one emulation server. 
         [0008]    In accordance with another embodiment of the invention, there is provided a method for providing an emulation session to emulate a computer product using at least one host resource of a plurality of host resources on a host device, the host device comprising a host processor. The method comprises; a) providing a host resource library file including a list of the plurality of resources available on the host device to an emulation server separate from the host device, the emulation server providing the emulation session; b) receiving, from the emulation server, a selected host resource list, the selected host resource list corresponding to a list of resources selected from the host resource library file to be provided by the host device for the emulation session: and c) enabling each host resource in the plurality of host resources corresponding to a resource in the selected host resource list to be accessible by the emulation server to provide the emulation session. 
         [0009]    In accordance with another embodiment of the invention, there is provided a host device for providing at least one host resource for an emulation session to emulate a computer product provided by an emulation server, the emulation server being separate from the host device. The host device comprises: a host processor; a plurality of host resources comprising at least one of a hardware component and a software component; and a host bridge module configured to: provide a host resource library file including a list of the plurality of host resources available on the host device to the emulation server; receive, from the emulation server, a selected host resource list, the selected host resource list corresponding to a list of resources selected torn the host resource library file to be provided by the host device for the emulation session; and enable each host resource in the plurality of host resources corresponding to a resource in the selected host resource list to be accessible by the emulation server to provide the emulation session. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]    A preferred embodiment of the present invention will now be described in detail with reference to the drawings, in which: 
           [0011]      FIG. 1  is a block diagram illustrating a host device in communication with an emulation system, in accordance with an example embodiment; 
           [0012]      FIG. 2  is a flowchart illustrating a process for optimizing resources for an emulation session, in accordance with an example embodiment; and 
           [0013]      FIG. 3  is a screenshot of a device selection interface, in accordance with an example embodiment. 
       
    
    
     DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS 
       [0014]    The embodiments of the systems, processes and methods described herein can be implemented in hardware or software, or a combination of both Alternatively, these embodiments can also be implemented in computer programs executed on programmable computers (c)ach comprising at least one processor (e.g., a microprocessor), a data storage system (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. For example and without limitation, the programmable computers (referred to below as computing devices) can be a personal computer, laptop, personal data assistant, cellular telephone, smart-phone device, tablet computer, and/or wireless device. For any software components, program code is applied to input data to perform the functions described herein and generate output information. The output information is applied to one or more output devices. 
         [0015]    Each software component or program can be implemented in a high level procedural or object oriented programming and/or scripting language to communicate with a computer system. However, the programs can be implemented in assembly or machine language, if desired. In any case, the language can be a compiled or interpreted language. Each such computer program is preferably stored on a storage media or a device (e.g. ROM) readable by a general or special purpose programmable computer, for configuring and operating the computer when the storage media or device is read by the computer to perform the procedures described herein. The subject system can also be considered to be implemented as a computer-readable storage medium, configured with a computer program, where the storage medium so configured causes a computer to operate in a specific and predefined manner to perform the functions described herein. 
         [0016]    Furthermore, the processes and methods of the described embodiments are capable of being distributed in a computer program product comprising a computer readable medium that bears computer usable instructions for one or more processors. The medium can be provided in various forms, including one or more diskettes, compact disks, tapes, chips, wireline transmissions, satellite transmissions, internet transmission or downloadings, magnetic and electronic storage media, digital and analog signals, and the like. The computer useable instructions can also be in various forms, including compiled and non-compiled code. 
         [0017]    It will be appreciated that for simplicity and clarity of illustration, where considered appropriate, reference numerals can be repeated among the figures to indicate corresponding or analogous elements. 
         [0018]    In addition, numerous specific details are set forth in order to provide a thorough understanding of the embodiments described herein. However, it will be understood by those of ordinary skill in the art that the embodiments described herein can be practiced without these specific details. In other instances, well-known methods, procedures and components have not been described in detail so as not to obscure the embodiments described herein. Also, this description and the drawings are not to be considered as limiting the scope of the embodiments described herein in any way, but rather as merely describing the implementation of the various embodiments described herein, 
         [0019]    The various embodiments described herein generally relate to a system (and related methods) for optimizing resources for an emulation session provided by an emulation server in an emulation system. The emulation session is provided for a host device. The host device includes one or more resources that can be available to be used for providing an emulation session. The host device can provide the emulation server with a list of available resources so that the emulation server can select to use any of the resources in that list that correspond to a resource required for providing the emulation session. 
         [0020]    Reference is first made to  FIG. 1 , which illustrates a block diagram  100  of a host device  110  in communication with an emulation system  160 . 
         [0021]    As illustrated in  FIG. 1 , the host device  110  can communicate with the emulation system  160  over a network  130 . For ease of exposition, only one host device  110  is illustrated in  FIG. 1  but it will be understood that one or more host devices  110  can communicate with the emulation system  160  at any given time. 
         [0022]    The host device  110  can generally be any computing device capable of network communication For example, and without limitation, the host device  110  can be a personal computer, laptop, personal data assistant, cellular telephone, smart-phone device, tablet computer, and/or wireless device. The host device  110  can include one or more components or modules that operate based on software and/or hardware. For example, as illustrated in  FIG. 1 , the host device  110  includes a host processor  112 , a host bridge module  114  and a resource module  116 . 
         [0023]    The host processor  112  can operate with one or more other modules on the host device  110  for enabling operation of the host device  110 . Also, the host processor  112  can operate with the host bridge module  114  and/or the resource module  116  for identifying resources available at the host device  110  and enabling use of those resources for providing an emulation session. 
         [0024]    The resource module  118  can include one or more software components and/or hardware components. The software components can include computer programs and/or applications that enable functionality on the host device  110 . The software components can operate with and/or enable the hardware components to provide functionality. For example, the software components can include an e-mail client application, a calculator application and/or a camera processing application. 
         [0025]    The hardware components can include any physical components that enable operation of the host device  110 . For example, the hardware components can include a communication module for receiving and/or transmitting data with external components and/or other devices (e.g., via a USB connection, serial port connection, parallel port connection, HDMI port connection, radio-frequency connection, Bluetooth™ connection, a wireless connection, a mobile network connection, audio data connection, video data connection and any other data connections), a storage module (e.g., a hard disk drive, a random-access memory, and/or other computer data storage components), a navigation module (e.g., a Global Positioning System (GPS)), a multimedia module (e.g., a sound card, a video card, etc.), one or more user interface components (e.g., a touch screen, a keyboard, a display, etc.), and/or other modules for providing additional features (e.g., a motion detection module including a Gyroscope, etc.). 
         [0026]    The network  130  can include a mobile network and/or the internet. In some embodiments, the network  130  can be a virtual channel within a remote desktop protocol (RDP) stack. 
         [0027]    The host bridge module  114  can be provided as a software component. For example, the host bridge module  114  can be provided to the host device  110  over the network  130  or a pre-installed program on the host device  110 . 
         [0028]    The host bridge module  114  includes a host bridge application. The host bridge application can be a standalone software application, part of another software application, and/or built on a software development kit (SDK) available on the host device  110 . 
         [0029]    For example, the host bridge application can be provided onto the host device  110  as part of an installation of a mobile application, such as a word processor application, to be emulated on the Android system. When the mobile application is downloaded onto the host device  110 , the host bridge application can be downloaded onto the host device  110  as part of that mobile application. 
         [0030]    The host bridge module  114  can generally operate to identify resources available at the host device  110  and/or to enable one or more of the identified resources to be used by the emulation system  160  for providing an emulation session. 
         [0031]    The resources available at the host device  110  can be provided as a list of resources in a host resource library file. The list of resources will generally include the software and hardware components provided in the resource module  116 . in some embodiments, the hardware components can include a sound card, a camera, a keypad, a GPS module, Bluetooth module, a Near Field Communication module, and one or more other hardware modules, in some embodiments, the software components can include an e-mail client application, a calculator application, and one or more other software modules. 
         [0032]    After the host bridge module  114  generates the host resource library file, the host bridge module  114  can store the host resource library file at the host device  110  in, for example, the storage module. 
         [0033]    In some embodiments, the host bridge module  114  can request permission from a user of the host device  110  before being able to retrieve the list of resources. The host bridge module  114  can request access to the operating system of the host device  110  for retrieving the list of resources. 
         [0034]    The host bridge module  114  can also request permission to access one or more other components available at the host device  110 . For example, the host bridge module  114  can request access to the communication module in order to provide the host resource library file to the emulation system  160 . In another example, the host bridge module  114  can request access to one or more hardware and/or software components within the resources module  116  so that these hardware and/or software components can be used by the emulation system  160  for providing an emulation session. 
         [0035]    When the host bridge module  114  is denied permission by the user, the host bridge module  114  can respond accordingly. In some embodiments, the host bridge module  114  can generate an error message and display the error message on the user interface of the host device  110 . In some further embodiments, the host bridge module  114  can also indicate to the emulation system  160  that any future emulation sessions that are requested by the host device  110  are to rely on resources provided by the emulation system  160  alone. 
         [0036]    In some embodiments, the host bridge module  114  can provide a user interface from which user inputs can be received from a user of the host device  110  for customizing the content of the host resource library file. For example, the user inputs can include an input specifically designating resources that can be used by the emulation system  160  and resources that may not be used by the emulation system  160 . The user inputs can further include an input for manually adding and/or removing resources from the host resource library file. The user input can further include an input for designating one or more resources within the host resource library file to be used for a particular emulation session. The user input can also include an input designating a communication port on the host device and/or communication protocol with which a resource on the host device can send and receive data from the emulation system  160 . The communication protocol can include any known data communication protocols, such as Transmission Control Protocol (TCP)/lnternet Protocol (IP), User Datagram Protocol (UDP), or Stream Control Transmission Protocol (SCTP). 
         [0037]    The host bridge module  114  can designate the communication ports and/or communication protocols for a resource to be shared with the emulation system  160  based on a variety of factors. The variety of factors can include the operating system of the host device  110 , availability of the communication ports on the host device  110 , a level of power consumption by the resource to be used for providing the emulation session, and other operational factors. 
         [0038]    The host bridge module  114  can also provide the host resource library file to the emulation system  160 , By providing the host resource library file to the emulation system  160 , the use and availability of resources that are required for an emulation session can be optimized and enhanced, in order to provide the host resource library file to the emulation system  160 , the host bridge module  114  establishes communication with the emulation system  160  via the network  130 . 
         [0039]    As illustrated in  FIG. 1 , the emulation system  160  can include one or more emulation servers  170 . The emulation servers  170  generally operate to provide an emulation session for emulating a computer product as identified in a request received from the host device  110 . 
         [0040]    Each emulation server  170  can be used for providing emulation sessions to the host device  110 . An emulation server  170  can include a server processor, an emulation bridge module, a server storage module, an emulation resources module and a server communication module. For ease of exposition, only emulation servers  170   a,    170   b,  and  170   c  are illustrated. It will be understood that a fewer or greater number of emulation servers could be provided in the emulation system  160 . 
         [0041]    The emulation system  160  can be a remote system connected to the host device over the network  130  such as the internet or a mobile network. 
         [0042]    The example emulation server  170   a  includes a server processor  172 , an emulation bridge module  174 , a server storage module  176 , an emulation resources module  178  and a server communication module  180 . Emulation servers  170   b  and  170   c  can be similarly configured as the emulation server  170   a.    
         [0043]    The server processor  172  can operate with one or more other modules on the emulation server  170  for enabling operation of the emulation server  170 , Also, the server processor  172  can operate with the emulation bridge module  174  and/or the emulation resources module  178  for determining resources required for providing an emulation session and for determining whether a resource can be provided by the host device  110 . 
         [0044]    The server storage module  176  can store data related to emulations that can be provided by the emulation server  170   a.  For example, the server storage module  176  can store one or more computer products to be provided in an emulation session by the emulation server  170   a  and also, a corresponding list of resources that are required for emulating any of those one or more computer products. 
         [0045]    The server communication module  180  provides a communication interface for the emulation server  170   a.  The server communication module  180  can receive from and/or transmit data to external components and/or other devices. 
         [0046]    The emulation bridge module  174  includes an emulation bridge application. The emulation bridge application enables communication between the host bridge module  114  on the host device  110  and the emulation server  170 . 
         [0047]    As described above, the host bridge module  114  can provide the host resource library file to the emulation system  160  so that the emulation system  160  can optimize use of any resources that can be available at the host device  110  for providing an emulation session. As a result, the emulation server  170  can minimize the resources that the emulation resources module  178  may need to emulate in order to provide an emulation session, and thus, can avoid wasting resources at the emulation server  170 . Also, by using resources available at the host device  110 , the emulation system  160  can extend the functionality and/or utility of an emulation session. 
         [0048]    For example, in an emulation session requiring voice and/or audio data from a user at the host device  110 , such as an emulated application for testing a telephone call or an emulated application involving voice recognition functions, the sound card resource on the host device  110  can be used in order to extend the functionality of that emulation session. In another example, an emulation session can be provided for testing an operability of a communication port, such as an HDMI port, at the host device  110 . 
         [0049]      FIG. 2  is a flowchart  200  illustrating a process for optimizing resources for an emulation session. 
         [0050]    At step  210 , the emulation server  170  receives an emulation session request from the host device  110 . 
         [0051]    The emulation session request can include, at least, an identifier corresponding to a computer product that is to be emulated. In some embodiments, the emulation session request can be provided to the emulation server  170  when the host bridge module  114  receives and/or initializes the host bridge application. In some embodiments, the emulation session request can be provided to the emulation server  170  when the host device  110  receives a user input for initializing emulation of the computer product. 
         [0052]    At Step  220 , in response to receiving the emulation session request from the host device  110 , a communication link can be provided between the host bridge module  114  and the emulation bridge module  174 . 
         [0053]    Generally, the emulation bridge module  174  communicates with the host bridge module  114  over the network  130 . In some embodiments, the communication link can first be established between the host bridge module  114  and the emulation bridge module  174  before any data is provided between the host device  110  and the emulation server  170 . For example, a communication link is successfully established if the host bridge module  114  sends a test signal to the emulation bridge module  164  and that test signal is appropriately returned from the emulation bridge module  164 . In some further embodiments, the host bridge module  114  and the emulation bridge module  164  can continue to send each other synchronization signals in order to maintain the communication link for future data transfer. 
         [0054]    At step  230 , the host bridge module  114  can provide the host resource library file to the emulation bridge module  174 . 
         [0055]    As described above, the host resource library file can be provided to the emulation bridge module  174  via the communication link provided over the network  130 . 
         [0056]    At step  240 , the emulation bridge module  174  determines emulation session resources required for providing the emulation session corresponding to the received emulation session request. 
         [0057]    The received emulation session request includes, at least, an identifier corresponding to a computer product that is to be emulated. Using the computer product identifier provided in the received emulation session request, the emulation bridge module  174  can retrieve from the server storage module  176  a list of resources required for providing the emulation session for that computer product. In some embodiments, the list of resources can be retrieved by the server storage module  176  from an external database. 
         [0058]    At step  250 , the emulation bridge module  174  selects the host device  110  or the emulation server  170  for providing each of the resources required for providing the emulation session. 
         [0059]    For each resource in the list of required resources, the emulation bridge module  174  determines it a corresponding resource is available at the host device  110  from the host resource library file. If the emulation bridge module  174  determines that a required resource corresponds to a resource in the host resource library file, the emulation bridge module  174  can select the resource in the host resource library file so that the host device  110  is selected for providing that required resource. However, if the emulation bridge module  174  fails to identify a resource in the host resource library file that corresponds to a required resource, the emulation bridge module  174  can select the emulation server  170  for providing that required resource. The emulation resources module  178  on the emulation server  170  can instead emulate that required resource. 
         [0060]    In some embodiments, the emulation bridge module  174  provides the host bridge module  114  with a list of resources that the emulation bridge module  174  has selected the host device  110  to provide. On receipt of the list of resources, the host bridge module  114  can respond by initializing the selected resources. 
         [0061]    In some embodiments, the host bridge module  114  can further configure the selected resources to be used for an emulation session. The host bridge module  114  can operate with the resource module  116  so that the selected resources have prioritized access to one or more hardware and software components in the resource module  116 . For example, the host bridge module  114  can operate with a communication module in the resource module  116  so that the selected resources have prioritized access to the communication ports at the host device  110  for communicating with the emulation server  170 . In another example, for an emulation session requiring voice data input from the user, the host bridge module  114  can configure the communication module so that data received by a microphone at the host device  110  has priority. 
         [0062]    In some embodiments, the host bridge module  114  can further configure the selected resources to be used for an emulation session to be prioritize between one or more different emulation sessions. For example, the host device  110  can be connected to two concurrent emulation sessions that both require access to a microphone at the host device  110 , The host bridge module  114  can configure the microphone so that one of the emulation sessions has prioritized access to the microphone over the other emulation session, 
         [0063]      FIG. 3  illustrates a screenshot  300  of a device selection interface  310  for a dictation application provided at an emulation server  170 . It will be understood that the illustrated user interface text and controls are provided as examples only and are not meant to be limiting. Other suitable user interface elements can be used. 
         [0064]    The dictation application requires, at least, a microphone and one or more software components in order to operate. The resources used for providing the 
         [0065]    emulation session of the dictation application is generally illustrated as  320  for resources provided by the host device  110  (“Host”) and generally illustrated as  330  for resources provided by the emulation server  170  (“Server”). As generally shown at  320 , a microphone is available at the host device  110  and has also been selected by the emulation bridge module  174  for use in the emulation session of the dictation application. Similarly, as generally shown at  330 , the software components for providing the dictation application is provided by the emulation server  170 . 
         [0066]    At step  260 , the emulation server  170  provides the emulation session to the host device  110 . 
         [0067]    The emulation server  170  provides the emulation session corresponding to the received emulation session request using resources provided by the host device  110  and the emulation server  170 , as determined at step  250 . It will be generally understood that multiple emulation sessions can be provided on each emulation server  170  as long as sufficient resources are available. 
         [0068]    In some embodiments, the emulation session can be provided using a Software Development Kit (SDK), the host device  110 , an operating system of the emulation server  170 , the host bridge module  114  including a host bridge application, and the emulation bridge module  174  including an emulation bridge application. The emulation session can be provided so that resources at the host, device  110  can be accessible to the emulation server  170 . The emulation session can be enhanced from the limited options otherwise available from the host device  110 . 
         [0069]    In some embodiments, the host bridge module  114  can be installed on the 
         [0070]    host device  110 . When the host bridge module  114  is initialized, the host bridge module  114  operates to search for resources on the host device  110  and to record a current host resource library file. The host bridge module  114  can also designate one or more of the resources on the host device  110  to be shared. The host bridge module  114  can prioritize access to any of the resources that have been designated to be shared between one or more emulation sessions and use for operations at the host device  110 . The host bridge module  114  can designate one or more communication ports on the host device  110  and one or more communication protocols to be used for sharing a resource at the host device  110 . To establish a communication link with the emulation system  160 , the host bridge module  114  can set up and test a synchronization signal by sending the synchronization signal to the emulation bridge module  174 . 
         [0071]    In some embodiments, the emulation bridge module  174  can be installed on one of the emulation servers  170 . When the emulation bridge module  174  is initialized, the emulation bridge module  174 , can accept the synchronization signal from the host bridge module  114  and also receive the current host resource library file from the host bridge module  114 . The emulation bridge module  174  can also indicate to the host bridge module  114  one or more desired resources at the host device  110  to be shared. The emulation bridge module  174  can prioritize access to the one or more resources to be shared from the host device  110  between use by one or more of applications to be provided in an emulation session and use by the emulation server  170 . The emulation bridge module  174  can designate one or more communication ports on the emulation server  170  and one or more communication protocols to be used for using a resource at the host device  110 . 
         [0072]    In some embodiments, the user can select, at the emulation bridge module  174 , one or more resources from the current host resource library file that can be to shared. The user can further select desired prioritization of access to these resources to be shared between use by one or more applications to be provided in emulation sessions and use by the emulation server. The user can further designate a communication interface, such as, e.g., a port and/or protocol, on the emulation server  170  for sharing the resource at the host device  110 . 
         [0073]    In some embodiments, the SDK can be installed on the emulation server  170 . The host bridge module  114  can indicate to the SDK that one or more resources that are to be shared with the emulation server  170  exist at the host device  110  and are accessible through the emulation bridge module  174 . The emulation bridge module  174  can provide an emulation operating system resource interface from which access to the one or more resources that are designated to be shared can be provided. 
         [0074]    In some embodiments, the SDK can be installed in an operating system of a host device  110 . The host bridge module  114  can provide an installation interface line variable for receiving inputs from a user of the host device  110  inputs for indicating that one or more resources can be shared. The resources that can be shared can be provided in an option list. The option list can be presented to the emulation server  170  and can be accessible via the emulation bridge module  174 . 
         [0075]    When the option list is received at the emulation server  170 , the emulation bridge module  174  receives an indication that the resources in the option list (for example, a sound card for an emulation of a smartphone) exists at the host device  110  and therefore, do not need to be provided by the emulation system  160 , the emulation bridge module  174  also receives a notification indicating that the one or more resources in the option list are accessible by the emulation bridge module  174 , regardless of the communication interface of the emulation server  170  (for example, clipped pins to the emulation audio ports, restricted access from the emulation manager). 
         [0076]    In some embodiments, an operating system of the emulation server  170  is designed to enable selections according to installation criteria of the SDK. The standard SDK set up can therefore be enhanced. For example, emulation sessions of applications that would otherwise stop loading due to the absence of a sound card, or an indication that the sound card is off, can now load and seek sound card resources via the emulation bridge module  174 . 
         [0077]    In some embodiments, the emulation bridge module  174  is set up after the host bridge module  114 . The host bridge module  114  can be installed on the host device  110 . The host bridge module  114  reviews the resources available at the host device  110  and records the current host resource library file. The current host resource library file can be accessible by the user of the host device so that the user can designate which of the resources in the resource module  116  can be shared with one or more emulation servers  170 . 
         [0078]    In some embodiments, the host bridge module  114  can also prioritize access to resources selected to be shared with the emulation server  170  between one or more emulation sessions and the host device  110  in accordance with a request received from the user. 
         [0079]    In some embodiments, the host bridge module  114  can permit the user of the user device  110  to designate a communication interface, such as, e.g., a communication port and/or communication protocol, on the host device  110  for sharing the host resource. The types of communication ports can include serial, parallel, Bluetooth, wifi, USB, data, audio, video, networking, and com1. The types of communication protocols can include TCP, UDP, and SCTP. 
         [0080]    In some embodiments, resources can be shared between the communication interfaces selected by the host bridge module  114  and the emulation bridge module  174 . The communication interfaces can be selected from the set up options provided in each of the host bridge module  114  and the emulation bridge module  174 . The SDK kit installation interface line variables can be modified according to the current host resource library file. 
         [0081]    In some embodiments, resources at the host device  110  can be accessed as an extension of a function or an application to be provided by the emulation system  160  depending on a configuration of the emulation system  160 , the host bridge module  114 , and the emulation bridge module  174 . For example, a sound card at the host device  110  can be used in an emulation session as a microphone and/or speaker when testing a telephone application, a voice recognition application, a gaming application, and so on. 
         [0082]    In some embodiments, resources at the host device  110  can be accessed for control by a function or an application to be provided by the emulation system  160 . For example, a HDMI output port at the host device  110  can be accessed for testing the ability of the emulation system  160  to control the HDMI output during an emulation session. 
         [0083]    It will be understood that the systems and methods described above are flexible and can be modified for use with a wide range of communication interfaces, communication ports, and communication protocols and a large variety of host devices  110 , SDKs, emulation sessions. 
         [0084]    The present invention has been described here by way of example only. Various modification and variations can be made to these exemplary embodiments without departing from the spirit and scope of the invention, which is limited only by the appended claims.