US20150148915A1 - Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules - Google Patents

Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules Download PDF

Info

Publication number
US20150148915A1
US20150148915A1 US14/611,998 US201514611998A US2015148915A1 US 20150148915 A1 US20150148915 A1 US 20150148915A1 US 201514611998 A US201514611998 A US 201514611998A US 2015148915 A1 US2015148915 A1 US 2015148915A1
Authority
US
United States
Prior art keywords
module
capabilities
self
describing
controlled device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US14/611,998
Inventor
Brigitte Bernadette Birze
Mark Ethard Smith
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harman Professional Inc
Original Assignee
AMX LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by AMX LLC filed Critical AMX LLC
Priority to US14/611,998 priority Critical patent/US20150148915A1/en
Publication of US20150148915A1 publication Critical patent/US20150148915A1/en
Assigned to HARMAN PROFESSIONAL, INC. reassignment HARMAN PROFESSIONAL, INC. MERGER AND CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: AMX LLC, HARMAN PROFESSIONAL, INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B15/00Systems controlled by a computer
    • G05B15/02Systems controlled by a computer electric
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0423Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0428Safety, monitoring
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
    • G05B19/4185Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by the network communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/22Pc multi processor system
    • G05B2219/2231Master slave
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23051Remote control, enter program remote, detachable programmer
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25022LAN local area network for controllers
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25066Configuration stored in each unit
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25101Detect connected module, load corresponding parameters, variables into module
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25418Enter description of capabilities of each module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L12/2805Home Audio Video Interoperability [HAVI] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L12/2807Exchanging configuration information on appliance services in a home automation network

Definitions

  • the present invention is generally related to control systems and, more particularly, to mechanisms for the production of self-describing controlled device Modules in a control system.
  • control systems such as control systems, monitoring systems, and the like
  • these systems may also discover a device's type thereby allowing basic control and monitoring with no external configuration.
  • APIs application programming interfaces
  • these systems depend on standardized application programming interfaces (APIs) describing Parameters, Properties, and Control Commands for different device types. Once a device of a known device type is found, the system can use a standardized API for the device type to control, configure, or monitor the device.
  • attributes of security system device types include Properties, such as a manufacture and model, Parameters, such as arm-able state (ability to arm a system) and security state, (such as ARM_HOME, ARM, DISARM, and PANIC), and Commands (such as GetSecurityStatus, setSeucrityState, and is OKToArm).
  • Properties such as a manufacture and model
  • Parameters such as arm-able state (ability to arm a system) and security state, (such as ARM_HOME, ARM, DISARM, and PANIC)
  • Commands such as GetSecurityStatus, setSeucrityState, and is OKToArm).
  • the present invention provides a system, method, and computer-readable medium for the discovery and registration of controlled devices associated with self-describing Modules in a control system.
  • a controlled device associated with a self-describing Module is coupled with a master controller on which the self-describing module is installed.
  • a remote monitoring system is communicatively coupled with the master controller, and a remote monitoring system agent is installed on the master controller.
  • the agent discovers a Module associated with the controlled device and queries the Module for a version thereof.
  • the agent evaluates whether the Module is self-describing.
  • the agent requests a run-time capabilities object from the Module and registers the controlled device with the remote monitoring system according to the capabilities object.
  • the agent may generate a capabilities object and register the other device with the remote monitoring system according to the generated capabilities object.
  • a method of discovery and registration of a controlled device for control thereof includes discovering a Module associated with the controlled device by an agent associated with a remote monitoring system, evaluating whether the module is self-describing, responsive to determining the module is self-describing, requesting a run-time capabilities object from the Module, receiving the capabilities object, and registering the controlled device with the remote monitoring system according to the capabilities object.
  • a computer-readable medium having computer-executable instructions for execution by a processing system, the computer-executable instructions for discovery and registration of a controlled device for control thereof.
  • the computer-readable medium includes instructions that, when executed, cause the processing system to discover a Module associated with the controlled device by an agent associated with a remote monitoring system, query the Module for a version of the Module, evaluate whether the Module is self-describing, responsive to determining the Module is self-describing, request a run-time capabilities object from the Module, receive the capabilities object, and register the controlled device with the remote monitoring system according to the capabilities object.
  • a control system for control of controlled devices deployed therein includes a controlled device having a self-describing Module associated therewith, a remote monitoring system, and a master controller on which the self-describing Module and an agent associated with the remote monitoring system are installed.
  • the remote monitoring system and the master controller are OSGi-compliant.
  • the agent discovers the Module by invoking an OSGi method, queries the Module for a version of the Module, determines the Module is self-describing, requests a run-time capabilities object from the Module responsive to determining the Module is self-describing, receives the capabilities object, and registers the controlled device with the remote monitoring system according to the capabilities object.
  • FIG. 1 is a diagrammatic representation of a contemporary control system configuration that provides for control and monitoring of controlled devices deployed in the control system;
  • FIG. 2 is a diagrammatic representation of a control system configuration that facilitates controlled device Module development and deployment in accordance with embodiments;
  • FIG. 3 is a diagrammatic representation of a controlled device Module and controlled device development and deployment work flow implemented in accordance with an embodiment
  • FIG. 4 is a flowchart that depicts a controlled device Module creation routine implemented in accordance with an embodiment
  • FIG. 5 is a diagrammatic representation of a Module package class structure implemented in accordance with disclosed embodiments.
  • FIG. 6 is a flowchart that depicts processing of a remote monitoring system agent discovery and registration routine in accordance with an embodiment
  • FIG. 7 is a flowchart that depicts processing of a control routine for controlling or accessing a controlled device in accordance with an embodiment.
  • a self-describing controlled device Module allows a device to describe itself both at runtime and before installation thereby allowing discovery of the capabilities of the device to enable control, monitoring, and integration of a device with no prior knowledge of the device or the device type. Additionally, custom extensions to a device's capabilities will also be discovered to allow control, monitoring, and integration of these custom extensions without the need for custom code. New devices may then be deployed, or communicatively coupled with, control systems, monitoring systems, configuration tools, or development tools and natively understood with no changes to the systems or tools.
  • Contemporary products may use the application programming interfaces and corresponding device types to provide integration and control of devices in a control system.
  • Exemplary attributes of the Security System device type include Properties, such as manufacture and model, Parameters, and Commands.
  • Properties such as manufacture and model, Parameters, and Commands.
  • devices have capabilities that do not fit into such standardized APIs, and the trend is becoming more prevalent as manufacturers merge multiple capabilities into a single device.
  • a device Module comprises a component that allows a device to be deployed in a control or remote monitoring system (collectively referred to herein simply as a control system).
  • the device Module may be implemented as computer-executable or computer-readable instructions tangibly embodied on a computer-readable medium.
  • a device such as a camera, tuner, or any other device that may be monitored, controlled, or otherwise manipulated via the control system, is referred to herein as a controlled device.
  • a controlled device has a corresponding device Module that facilitates deployment and operation of the controlled device within the control system.
  • the control system may include various system entities or nodes that facilitate controlled device configuration and deployment, management, operation, control, monitoring, or other manipulations of a controlled device.
  • Control system entities are referred to herein as control system devices (or simply system devices).
  • Exemplary system devices include, for example, a master controller, a remote monitoring system (RMS), and any variety of Integrated Development Environment (IDE) systems or tools used for device integration, deployment or configuration.
  • IDE Integrated Development Environment
  • the self-describing device Modules implemented according to disclosed embodiments are able to describe the capabilities of a controlled device both at runtime and before installation.
  • a master controller is able to control the controlled device
  • an RMS is able to monitor the controlled device
  • an integration IDE is able to integrate the device Module with no changes to other control system devices.
  • custom extensions to device APIs may be allowed and may also be discoverable to allow control, monitoring, and integration of these custom extensions without the need for custom code.
  • FIG. 1 is a diagrammatic representation of a contemporary control system 100 configuration that provides for device control and monitoring in control system 100 .
  • a controlled device development IDE 110 may be used by device manufactures, e.g., a manufacturer of a controlled device 170 , to develop a Module for the corresponding controlled device. Alternatively, the development IDE 110 may be used by manufacturers or developers of control system devices.
  • a Module provides customized control and monitoring for a specific controlled device model from a specific manufacturer in a control system 100 .
  • An integration IDE 130 allows device dealers to easily integrate multiple Modules and their associated controlled devices into a single control system 100 .
  • An integration tool run at integration IDE 130 may provide a visual mechanism of generating Touchpanel glue code to tie, for example, touch panel 142 inputs with each device Module's API to control and monitor the associated device.
  • Modules integrated with integration IDE 130 may be loaded onto a master controller 140 to enable control of the corresponding devices in the control system 100 .
  • NetLinx code generated by integration IDE 130 may also be loaded onto the master controller 140 to link touch panels, or other peripheral devices, with the control and monitoring APIs exposed by the device Modules generated by development IDE 110 .
  • a remote monitoring system (RMS) 160 may feature a resource management suite that provides remote monitoring and control of various controlled devices 170 integrated in control system 100 .
  • the RMS 160 may comprise an RMS server that communicates with RMS agents installed on the system master controller 140 .
  • the RMS enables administrators to gather status of controlled devices and to control the devices participating in the control system 100 that are deployed via the master controller 140 .
  • Various control system devices are communicatively coupled with one another, e.g., via a network 150 , a direct connection, or another suitable interface.
  • Contemporary API specifications create a control system which provides rigid device development, yet does not provide effective runtime enforcement. This introduces ambiguity and creates issues for control system devices or products collaborating to provide control and monitoring for controlled devices deployed in control system 100 .
  • SDK control system device software development kit
  • a control system device software development kit composed of SDK components is used to create Modules for controlled devices.
  • SDK components each expose an API that describes the mechanisms for controlling and monitoring the common device component.
  • a Power Supply is a device component used in many device types and thus may have a corresponding Power Supply SDK component at the development IDE 110 .
  • Typical SDK components are grouped into well know device types which are rigid in their structure. These well known device types cannot easily account for device innovations in the form of new functionality or combinations of different device types.
  • a VCR comprises a power supply, a television tuner, and a tape transport.
  • a device type specified as a VCR may then have a respective SDK component for the power supply, television tuner, and the tape transport.
  • a DVD player comprises a power supply and a disc transport.
  • a device type specified as a DVD player may have a respective SDK component for the power supply and the disc transport.
  • well known device types may be accommodated by various automated tools for configuration and deployment in a control system.
  • a manufacturer that has produced a DVD/VCR combination.
  • another device type must be defined for efficient deployment of the DVD/VCR combination since neither the SDK components grouped into the VCR device type nor the SDK components of the DVD device type may appropriately address the combination device.
  • Module developers may add custom capabilities as custom events, but these are not natively understood by any tools or control system devices or products requiring, for example, custom Touchpanel code to utilize the unique device capabilities.
  • a device SDK must be disadvantageously updated periodically to accommodate new or modified device types. Consequently, controlled device deployment issues are often encountered as the system master controller 140 can support only one version of the device APIs. If an updated API “breaks” a legacy Module's existing functionality, the legacy Module must be “reopened” to account for the updated APIs in order to function on new control system installations. This ongoing SDK and Module maintenance consumes software engineering and development time, aggravates system partners that may not be aware of SDK updates, and complicates integration and deployment for product dealers.
  • Integration IDE 130 may import a Module's generated module.xml file to determine the device type and the Commands, Parameters, and Properties available for the Module. This data is checked against the expected Commands, Parameters, and Properties for the device type from the most recent Device SDK API. If there is a mismatch due to an out of date Module, the mismatched commands will not appear in the code builder and thus will not be available to the system integrator. Custom commands and events representing extensions to the standard device type are not exposed to integration IDE 130 and cannot be exposed to the system integrator.
  • a device Module configuration relaxes the rigidity of development while enforcing runtime access to only defined Commands, Parameters, and Properties. This shift in perspective eliminates the frustration of Module developers not being able to “fit” their device capabilities into a pre-defined device SDK. Module developers are able to mix and match standard SDK components to accommodate new device combinations while also creating custom commands and events to capture unique device capabilities in accordance with disclosed embodiments. A development IDE captures this information and generates a framework that describes the capabilities of the Module.
  • a Module's capabilities component When queried, a Module's capabilities component is able to describe its Module's capabilities both as a capabilities object that can be queried at runtime and in an XML format, or other instruction set, that can be saved or passed in messages between control system devices, such as the master controller and RMS. This same capabilities component will be able to create a runtime capabilities object from consuming the self-describing XML file.
  • FIG. 2 is a diagrammatic representation of a control system configuration that facilitates controlled device Module development and deployment in accordance with embodiments.
  • a controlled device Module development IDE 210 may be used by controlled device manufactures, e.g., manufacturers of controlled and monitored devices 270 - 271 , or control system device manufacturers to develop self-describing Modules for corresponding controlled devices.
  • An integration IDE 230 allows device dealers to integrate multiple Modules and their associated controlled devices into a single control system.
  • An integration code builder tool run at integration IDE 230 may provide a visual mechanism of generating Touchpanel glue code to tie, for example, touch panel inputs with each device Module's API to control and monitor the associated controlled device.
  • Modules integrated with integration IDE 230 may be loaded onto a system master controller 240 to enable control of the controlled devices in the control system.
  • An RMS 260 provides remote monitoring and control of various controlled devices 270 - 271 integrated in control system.
  • the RMS may comprise a resource management suite that communicates with RMS agents installed on the system master controller 240 .
  • RMS 260 enables administrators to gather status of controlled devices and to control the devices participating in the control system deployed via master controller 240 .
  • a Module package 290 is produced by development IDE 210 that includes the device Module 292 and a capabilities component (CC) 293 that facilitates device deployment and operation within the control system.
  • a CC is provided for each controlled device type.
  • controlled device 270 may have a CC 293 associated therewith
  • controlled device 271 may have a CC 295 associated therewith.
  • the RMS 260 may access each CC 293 and 295 of associated controlled devices 270 - 271 .
  • the Module package, such as Module package 290 and constituent components are associated with a particular controlled device, such as controlled device 270 .
  • a corresponding capabilities component 293 includes a self-describing XML file 296 , or other suitable instruction set, that specifies the capabilities of the corresponding controlled device 270 including Properties, such as the device manufacturer and model, Parameters, such as controlled device 270 parameter states and status, and commands. As referred to herein, Parameters are mutable values describing the state of the controlled device. Parameters can be queried or delivered as asynchronous events. Properties are immutable values describing the controlled device, such as a manufacturer and model. Control Commands comprise methods which can be invoked to control the device to change the controlled device 270 configuration or state.
  • a capabilities component such as CC 293
  • CC 293 is configured to be queried by one or more control system devices including configuration, integration, and deployment tools, e.g., integration IDE 230 and RMS 260 , and return Module capabilities in response to the query.
  • the Module capabilities may be provided by the capabilities component as the XML file 296 prior to complete operational configuration of the Module 292 and corresponding controlled device 270 . Further, the self-describing XML file 296 may be conveyed between one or more control system devices or components.
  • a corresponding capabilities component 293 may generate a capabilities object 298 from the self-describing XML file 296 . At this point, response to runtime queries issued to the capabilities component 293 may be provided by the capabilities object 298 .
  • Various control system devices such as the integration IDE 230 , RMS 260 , and master controller 240 may access a respective capabilities component, such as CC 293 .
  • the capabilities component allows for strict enforcement during integration of the corresponding controlled device 270 within the control system and during controlled device 270 runtime.
  • the controlled device 270 is coupled with the master controller 240 and is thereby provisioned a communication interface with the corresponding Module 292 .
  • the controlled device Module may communicatively interface with a remote monitoring agent 246 that, itself, may be communicatively coupled with RMS 260 , e.g., via a network connection, a direct connection, or other suitable communication medium.
  • the remote monitoring agent 246 may include or interface with an instance of the self-describing XML file 296 .
  • the remote monitoring agent 246 may obtain the capabilities component 293 in the form of the capabilities object 298 .
  • an administrator may issue control and monitoring commands that are received by the remote monitoring agent 246 associated with the controlled device 270 .
  • the controlled device Module 292 additionally interfaces with a controlled device router 244 that is allocated for, and associated with, the controlled device 270 .
  • the router 244 is identified and loaded by the master controller 240 to enable communications between Touchpanel code 242 and the code environment, e.g., Java, in which Module 292 is deployed.
  • Module 292 may include a manifest that specifies the router 244 to be loaded and associated with Module 292 , and master controller 240 is configured to examine the Module's manifest for such purposes.
  • the router 244 will query the associated Module 292 to discover its capabilities via a returned capabilities object (illustratively represented as a capabilities component 298 ). Only the capabilities described by the Module 292 will be sent to, or received from, the router 244 .
  • Controls or monitoring requests conveyed to the router 244 that are not included in the Module's capabilities object will be returned with a “not implemented” error or other suitable fault.
  • Other controlled devices 271 - 272 may have corresponding Modules, associated RMS agents, and routers configured on master controller 240 .
  • the control system may accommodate controlled devices, such as a controlled device 271 , that has a legacy controlled device Module 294 and a corresponding router 245 .
  • Legacy controlled device Module 294 does not have the ability to provide capabilities of the controlled device 273 , both rather may only provide a device type and version, e.g., to remote monitoring agent 246 .
  • FIG. 3 is a diagrammatic representation of a controlled device Module and controlled device development and deployment work flow 300 implemented in accordance with an embodiment.
  • a device Module is produced at development IDE 210 (step 302 ).
  • the controlled device Module 292 created at the development IDE 210 includes a self-describing capabilities XML file 296 for use prior to complete configuration of the controlled device 270 and corresponding Module 292 within control system.
  • the Module 292 includes suitable logic for creating and exposing a capabilities object 298 and/or a self-describing XML file 296 for use at runtime, i.e., when the controlled device and Module are operationally configured for use in control system.
  • An integration IDE 230 may then access the controlled device Module 292 to obtain the self-describing XML file 296 (step 304 ).
  • the integration IDE 230 use the XML file 296 to integrate the controlled device's exposed capabilities into the control system.
  • the master controller 240 may retrieve the runtime capabilities object from the Module 292 and thereby control access to the Module and the corresponding controlled device (step 306 ).
  • the master controller utilizes the runtime capabilities object 298 to allow or prohibit monitoring requests and commands issued for the controlled device 270 according to the capabilities advertised or otherwise provided by the capabilities object 298 .
  • the remote monitoring system 260 may likewise obtain the controlled device Module's capabilities object (step 308 ), and the remote monitoring system may register the controlled device accordingly (step 310 ).
  • the remote monitoring system uses the capabilities description provided by the capabilities object to advertise the device capabilities to a remote monitoring system administrator.
  • the administrator may then complete a monitoring and control configuration for the device that is constrained by the device capabilities advertised by the controlled device capabilities object.
  • Monitoring and control of the controlled device may then be performed by issuance of suitable commands from the remote monitoring system to the device Module 292 (step 312 ).
  • the development IDE 210 used for creation of the device Module according to step 302 may include an SDK that features low-level, reusable, controlled device SDK component building blocks, e.g., power supply, key pad, sensor device, or other common SDK components.
  • the use of SDK components for creation of a Module 292 implemented in accordance with embodiments advantageously does not rely on module indexing, e.g., the association of one or more SDKs with a particular controlled device type. Rather, SDK components that are available and that may be utilized for Module development are not bound by a particular device type, and thus Module developers may freely mix and match SDK components.
  • the SDK preferably provides mechanisms for creating custom events and commands for the controlled device that may be accommodated by the corresponding Module.
  • Completed controlled device Modules developed at development IDE 210 are packaged for installation on master controllers.
  • Completed Modules employ a capabilities component 293 to allow the Module to provide a description of the services it offers as both a runtime capabilities object 298 and in a self-describing XML file 296 .
  • FIG. 4 is a flowchart 400 that depicts a controlled device Module creation routine implemented in accordance with an embodiment.
  • the processing steps of FIG. 4 may be implemented as computer-executable instructions executable by a processing system, such as the development IDE 210 depicted in FIG. 2 .
  • the Module creation routine is invoked (step 402 ), and the Module designer may be presented with various SDK components for selection to include in the Module for a corresponding device component (step 404 ). If the designer selects an SDK component, the metadata on the API is then specified including valid parameter ranges and values, descriptions, etc. (step 406 ). Specification of the interface API may include specifying one or more commands, parameters, and/or properties and may include the specification of metadata including descriptions, parameters types, and valid ranges. Once the selected SDK component function's interface API has been defined by the designer, the designer may choose an additional SDK component according to step 404 .
  • the designer may be provided an option to specify custom commands (step 408 ). If the designer so chooses, the designer may extend a custom component API by the specification of custom commands or events for the Module 292 (step 410 ).
  • the IDE 210 may provide required fields to facilitate generation of a corresponding custom component. For example, the IDE 210 may require the designer to specify one or more Commands, Properties, and Parameters that are to be associated with the custom command or event, and may require the supply of metadata including descriptive text and valid ranges of the one or more Commands, Properties, or Parameters.
  • the IDE 210 may then generate a self-describing capabilities component for the SDK/custom component (step 412 ).
  • the custom component generated by IDE 210 encapsulates the device's custom commands and events.
  • the IDE 210 may then generate a device class skeleton for the SDK and custom component (step 414 ).
  • a device class implementation is then added to control the specific device (step 416 ).
  • a composite capabilities component may then be generated from each of the capabilities and custom components (step 418 ).
  • the composite capabilities component may comprise a self-describing XML file 296 from which Module 292 may generate a runtime capabilities object when Module 292 is operationally configured and deployed in control system.
  • a manifest may then be generated for Module 292 (step 420 ).
  • the manifest generated for the Module 292 may specify a generic router 244 that is adapted to interface with self-describing Module 292 .
  • the completed Module package 290 is then produced by IDE 210 (step 422 ).
  • the Module package 290 includes the generated manifest, the chosen SDK components, custom components, and the composite capabilities component 293 including the generated self-describing XML file 296 .
  • the Module creation routine cycle may then end (step 424 ).
  • FIG. 5 is a diagrammatic representation of a Module package 290 class structure 500 implemented in accordance with disclosed embodiments.
  • Module package 290 may be implemented as instruction sets tangibly embodied on a computer-readable medium and executable by a processing system, such as development IDE 210 .
  • the Module package 290 class structure 500 depicts an exemplary class diagram of a packaged Module for control of a controlled device comprising a tuner 510 .
  • the module package 290 may include various device SDK component classes including, for example, a Device Power SDK class 531 , a Device Preamp SDK class 532 , and a Device Tuner SDK class 533 .
  • a Device Custom Features class 530 specifies custom commands or events specific to tuner 510 .
  • Corresponding device component classes are generated for each of the SDK classes and the custom class(es). For example, a Power Device Component class 541 is generated and included in the Module package that corresponds to the Device Power SDK class 531 .
  • a Preamp Device Component class 542 is included in the Module package 290 that corresponds to the Device Preamp SDK class 532
  • a Tuner Device Component class 543 is included in the Module package 290 that corresponds to the Device Tuner SDK class 533
  • a Custom Device Component class 540 is generated by the development IDE 210 and provides the API to the custom commands, events, and listeners specific to the tuner 510 that are provided by the Device Custom Functions class 530 . All Device SDK Component classes 541 - 543 inherit from a Device Component base class 570 which provides a consistent interface to the OSGi framework.
  • Each of the Device SDK classes 531 - 533 comprise abstract classes that are selected by the Module developer.
  • the Module developer specifies the interface APIs providing the functionality of the abstract SDK classes 531 - 533 thereby providing the requisite logic for the corresponding device component classes 541 - 543 to implement specific device access codes for properly interfacing with tuner 510 .
  • the Module developer specifies custom commands or events for defining the Device Custom Features class 530 .
  • Custom Device Component class 540 is generated by the development IDE 210 and provides the API to the custom commands, events, and listeners specific to the tuner 510 that are provided by the Device Custom Functions class 530 .
  • a utility access class e.g., Serial Access Utility class 520
  • Module package 290 and control system 200 software entities are implemented in compliance with the OSGi framework, although other suitable frameworks may be substituted therefor.
  • An OSGi Device class 560 and Capabilities class 550 are hidden from the Module developer.
  • the OSGi Device class 560 provides interaction with the OSGi framework and is the communication point for all services outside the Module bundle.
  • the Capabilities class 550 is generated by development IDE 210 and determines all the components and custom commands and listener events specified in the Module.
  • the Capabilities class 550 uses Java reflection to match the commands, parameters, and properties listed in the capabilities Object with the actual methods in the objects that satisfy the capabilities.
  • each Device Component class 540 - 543 will be queried for their runtime capabilities object that includes the commands, parameters, and properties offered by the Module as well as metadata including descriptions, parameters types, and valid ranges.
  • Individual capabilities objects of Component classes 540 - 543 may be accumulated by the Capabilities class 550 for collection of composite capabilities of all device component classes 540 - 543 .
  • the OSGi Device class 560 obtains the composite capabilities from the Capabilities class 550 and returns a composite runtime capabilities object describing the capabilities of device 510 .
  • the OSGi Device class 560 exposes a service interface other services will use to invoke command or request parameter identifiers from the associated Capabilities Object.
  • RMS 260 is comprised of an RMS server that communicates with remote monitoring agents 246 installed on master controller 240 to gather status or control the controlled devices 270 - 273 deployed in the control system.
  • RMS 260 is modified with respect to a legacy RMS, e.g., RMS 160 , to consume, understand, and control self-describing Modules, such as Module 292 .
  • Remote monitoring agents are ported from NetLinx to a Java environment in the form of three Modules: an RMS core Module 246 a , an RMS scheduling Module 246 b , and an RMS dialog Module 246 c .
  • RMS scheduling and dialog Modules 246 b - 246 c are “add on” applications.
  • the RMS Modules 246 a - 246 c are configured to describe their capabilities through capabilities objects. However, the RMS Modules 246 a - 246 c do not use the component SDK class structure because they are applications and thus do not represent a device.
  • Remote monitoring agent 246 is loaded on the master controller 240 in the same manner as other Modules.
  • integration IDE 230 is configured to consume and process self-describing Modules, e.g., Module 292 , it will likewise be configured to consume and understand RMS Modules natively.
  • Router 244 is implemented to query and expose the capabilities of the RMS Modules 246 a - 246 c .
  • NetLinx-based devices may use router 245 to access RMS capabilities and participate in the RMS monitoring system.
  • Remote monitoring agent 246 is configured to use native OSGi methods to discover and access all self-describing Modules, e.g., Module 292 , active on master controller 240 . Agent 246 then queries each Module to determine its version. If the version indicates a self-describing Module, the agent 246 will request the Module return a capabilities object. If the version indicates a non-self describing Module, the module.xml file packaged in the module's jar file will be examined to discover its device type and capabilities. The RMS agent will generate a sparsely populated capabilities object from the retrieved module.xml file to describe the corresponding non-self describing Module.
  • the remote monitoring agent 246 may register each device 270 associated with a self-describing Module 292 by sending a registration to the RMS 260 server.
  • the device registration may include the self-describing Module's XML file 296 that provides a description of the capabilities exposed on the controlled device 270 .
  • the remote monitoring agent 246 utilizes the capabilities object 298 from each self-describing Module 292 to request status or invoke commands on the corresponding self-describing Module 292 .
  • the remote monitoring agent 246 may use reflection on legacy, non-self describing Modules to match the Module's capabilities with associated methods to invoke corresponding capabilities.
  • the remote monitoring agent 246 will simply request status or command invocation from self-describing Modules as they will handle their own reflection on their internal components.
  • the RMS 260 server will use the device's XML description to construct a GUI display for administrators to allow selection of properties to monitor, view acceptable ranges, and invoke commands to control the device.
  • the RMS 260 server may require registration for controlled devices in a self-describing XML format.
  • the remote monitoring agent 246 is responsible for producing this XML from devices controlled by non-self describing Modules, self-describing Modules, or NetLinx code.
  • a remote monitoring agent 246 When a remote monitoring agent 246 is installed on master controller 240 , devices controlled by master controller 240 with corresponding device capabilities will appear on the RMS 260 server GUI for the administrator to configure and control.
  • Remote monitoring agent 246 will automatically discover and describe the standard and custom capabilities of all active Modules.
  • RMS 260 is advantageously not tied to any version of device SDK APIs since the module.xml file of non-self describing Modules will be available to describe corresponding Modules and self-describing Modules will describe themselves.
  • a controlled device associated with a self-describing module is coupled with a master controller on which the self-describing module is installed.
  • a remote monitoring system is communicatively coupled with the master controller, and a remote monitoring system agent is installed on the master controller.
  • the agent discovers a Module associated with the controlled device and queries the Module for a version thereof. The agent then evaluates whether the Module is self-describing. In the event the Module is self-describing, the agent requests a run-time capabilities object from the Module and registers the controlled device with the remote monitoring system according to the capabilities object. In the event a Module associated with another device is discovered that is not self-describing, the agent may generate a capabilities object and register the other device with the remote monitoring system according to the generated capabilities object.
  • FIG. 6 is a flowchart 600 that depicts processing of a remote monitoring agent discovery and registration routine in accordance with an embodiment.
  • the processing steps of FIG. 6 may be implemented as computer-executable instructions executable by a processing system, such as processing of the remote monitoring agent by master controller 240 depicted in FIG. 2 .
  • the discovery and registration routine is invoked (step 602 ), and the remote monitoring agent including ported Modules 246 a - 246 c is installed at the master controller (step 604 ).
  • the remote monitoring agent 246 then discovers a Module, e.g., by using native OSGi methods (step 606 ).
  • the remote monitoring agent 246 queries the Module for the Module version (step 608 ).
  • the remote monitoring agent evaluates the Module version to determine if the Module comprises a self-describing Module (step 610 ). In the event the Module is not a self-describing Module, the RMS agent may then obtain the Module's Module.xml file, e.g., from the Module's jar file (step 612 ).
  • the remote monitoring agent determines the device type and corresponding capabilities (step 614 ) and thereafter generates a capabilities object for the non-self describing Module (step 616 ).
  • the discovery and registration routine may then register the controlled device associated with the Module on the RMS 260 (step 622 ).
  • the remote monitoring agent then issues a request to the Module for the Module's capabilities object (step 618 ), and awaits receipt of the capabilities object (step 620 ). The remote monitoring agent then registers the controlled device on the RMS according to the capabilities object according to step 622 .
  • the remote monitoring agent then may attempt to discover another Module (step 624 ), and if one is identified, the remote monitoring agent queries the Module for the Module version according to step 608 . When no additional Modules are discovered by the RMS agent, the discovery and registration routine cycle ends (step 626 ).
  • FIG. 7 is a flowchart 700 that depicts processing of a control routine for controlling or accessing a controlled device in accordance with an embodiment.
  • the processing steps of FIG. 7 may be implemented as computer-executable instructions executable by a processing system, such as processing of the remote monitoring agent by master controller 240 depicted in FIG. 2 .
  • the control routine is invoked (step 702 ), and the remote monitoring agent receives a command or status request to be performed on a controlled device from RMS 260 (step 704 ).
  • the remote monitoring agent evaluates whether the Module of the corresponding controlled device is self-describing (step 706 ). In the event the Module is not self-describing, the remote monitoring agent may then access the capabilities object of the Module (step 708 ), e.g., the capabilities object generated at step 616 , and thereafter use reflection on the Module (step 710 ).
  • the command/status request may then be evaluated for conformance with the capabilities object (step 714 ).
  • the remote monitoring agent may then access the capabilities object, e.g., the run-time capabilities object obtained at step 620 , of the self-describing Module (step 712 ) and evaluate whether the command/status request conforms to the capabilities object according to step 714 . If the command/status request does not conform to the capabilities object, the remote monitoring agent may issue a fault (step 716 ), and the control routine cycle may then end (step 720 ). If the command/status request conforms to the capabilities object, the command/status request may then be invoked (step 718 ), and the control routine cycle may then end according to step 720 .
  • the capabilities object e.g., the run-time capabilities object obtained at step 620
  • the remote monitoring agent may issue a fault (step 716 ), and the control routine cycle may then end (step 720 ). If the command/status request conforms to the capabilities object, the command/status request may then be invoked (step 718 ), and the control routine cycle may then end according to step 720 .
  • a controlled device associated with a self-describing module is coupled with a master controller on which the self-describing module is installed.
  • a remote monitoring system is communicatively coupled with the master controller, and a remote monitoring system agent is installed on the master controller.
  • the agent discovers a Module associated with the controlled device and queries the Module for a version thereof. The agent then evaluates whether the Module is self-describing. In the event the Module is self-describing, the agent requests a run-time capabilities object from the Module and registers the controlled device with the remote monitoring system according to the capabilities object. In the event a Module associated with another device is discovered that is not self-describing, the agent may generate a capabilities object and register the other device with the remote monitoring system according to the generated capabilities object.
  • FIGS. 4 and 6 - 7 depict process serialization to facilitate an understanding of disclosed embodiments and are not necessarily indicative of the serialization of the operations being performed.
  • the processing steps described in FIGS. 4 and 6 - 7 may be performed in varying order, and one or more depicted steps may be performed in parallel with other steps. Additionally, execution of some processing steps of FIGS. 4 and 6 - 7 may be excluded without departing from embodiments disclosed herein.
  • the illustrative block diagrams depict process steps or blocks that may represent modules, segments, or portions of code that include one or more executable instructions for implementing specific logical functions or steps in the process.
  • process steps or procedures many alternative implementations are possible and may be made by simple design choice. Some process steps may be executed in different order from the specific description herein based on, for example, considerations of function, purpose, conformance to standard, legacy structure, user interface design, and the like.
  • aspects of the present invention may be implemented in software, hardware, firmware, or a combination thereof.
  • the various elements of the system may be implemented as a computer program product tangibly embodied in a machine-readable storage device for execution by a processing unit.
  • Various steps of embodiments of the invention may be performed by a computer processor executing a program tangibly embodied on a computer-readable medium to perform functions by operating on input and generating output.
  • the computer-readable medium may be, for example, a memory, a transportable medium such as a compact disk, a floppy disk, or a diskette, such that a computer program embodying the aspects of the present invention can be loaded onto a computer.
  • the computer program is not limited to any particular embodiment, and may, for example, be implemented in an operating system, application program, foreground or background process, driver, network stack, or any combination thereof, executing on a single processor or multiple processors. Additionally, various steps of embodiments of the invention may provide one or more data structures generated, produced, received, or otherwise implemented on a computer-readable medium, such as a memory.
  • the information sent between various modules can be sent between the modules via at least one of a data network, the Internet, an Internet Protocol network, a wireless source, and a wired source and via plurality of protocols.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Quality & Reliability (AREA)
  • Manufacturing & Machinery (AREA)
  • Stored Programmes (AREA)
  • Programmable Controllers (AREA)
  • Selective Calling Equipment (AREA)
  • Computer And Data Communications (AREA)

Abstract

A system, method, and computer-readable medium for the discovery and registration of controlled devices associated with self-describing Modules in a control system are provided. A controlled device associated with a self-describing module is coupled with a master controller on which the self-describing module is installed. A remote monitoring system is communicatively coupled with the master controller, and a remote monitoring system agent is installed on the master controller. The agent discovers a Module associated with the controlled device and queries the Module for a version thereof. The agent then evaluates whether the Module is self-describing. In the event the Module is self-describing, the agent requests a run-time capabilities object from the Module and registers the controlled device with the remote monitoring system according to the capabilities object.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This application claims priority to and is a continuation of U.S. patent application Ser. No. 12/344,723, entitled “METHOD, COMPUTER-READABLE MEDIUM, AND SYSTEM FOR DISCOVERY AND REGISTRATION OF CONTROLLED DEVICES ASSOCIATED WITH SELF-DESCRIBING MODULES”, by Birze, et al., filed on Dec. 29, 2008, now issued U.S. Pat. No. 8,954,541, issued on Feb. 10, 2015, which claim priority to U.S. provisional patent application Ser. No. 61/017,613, entitled, “Self Describing Devices”, filed Dec. 29, 2007, by Birze, et al. and U.S. provisional patent application Ser. No. 61/017,620, entitled, “Sever Enabled Device Description”, filed Dec. 29, 2007, by Birze, et al., the disclosures of which are incorporated herein by reference.
  • FIELD OF THE INVENTION
  • The present invention is generally related to control systems and, more particularly, to mechanisms for the production of self-describing controlled device Modules in a control system.
  • BACKGROUND OF THE INVENTION
  • Many systems, such as control systems, monitoring systems, and the like, exist that allow discovery at runtime of devices active in the system. These systems may also discover a device's type thereby allowing basic control and monitoring with no external configuration. However, these systems depend on standardized application programming interfaces (APIs) describing Parameters, Properties, and Control Commands for different device types. Once a device of a known device type is found, the system can use a standardized API for the device type to control, configure, or monitor the device. For example, some of the attributes of security system device types include Properties, such as a manufacture and model, Parameters, such as arm-able state (ability to arm a system) and security state, (such as ARM_HOME, ARM, DISARM, and PANIC), and Commands (such as GetSecurityStatus, setSeucrityState, and is OKToArm).
  • Unfortunately, many devices have capabilities that do not fit into standardized device type APIs. This particular trend is becoming more prevalent as manufacturers merge multiple capabilities into a single device, e.g., placing a DVD and a VCR in the same device housing.
  • Companies that support standardized device type APIs must frequently update their APIs to keep up with the latest innovations by device manufactures. This causes deployment issues as the control, monitoring, and integration systems that understand the APIs must be updated to understand devices using the latest APIs.
  • Many device protocols allow manufactures to add extensions to their device type API to allow the manufacturers to expose their devices' unique capabilities. However, custom code must then be developed and installed in the control or monitoring system to allow the system to utilize a device's extensions thereby requiring intimate knowledge of the control or monitoring system's internals. Additionally, custom code in a control or monitoring system hampers the ability to swap one device of a type for another of the same type. For example, custom code written for a receiver with custom capabilities will not perform when the receiver is swapped for one that does not have the custom capabilities.
  • Therefore, what is needed is a mechanism that overcomes the described problems and limitations.
  • SUMMARY OF THE INVENTION
  • The present invention provides a system, method, and computer-readable medium for the discovery and registration of controlled devices associated with self-describing Modules in a control system. A controlled device associated with a self-describing Module is coupled with a master controller on which the self-describing module is installed. A remote monitoring system is communicatively coupled with the master controller, and a remote monitoring system agent is installed on the master controller. The agent discovers a Module associated with the controlled device and queries the Module for a version thereof. The agent then evaluates whether the Module is self-describing. In the event the Module is self-describing, the agent requests a run-time capabilities object from the Module and registers the controlled device with the remote monitoring system according to the capabilities object. In the event a Module associated with another device is discovered that is not self-describing, the agent may generate a capabilities object and register the other device with the remote monitoring system according to the generated capabilities object.
  • In one embodiment of the disclosure, a method of discovery and registration of a controlled device for control thereof is provided. The method includes discovering a Module associated with the controlled device by an agent associated with a remote monitoring system, evaluating whether the module is self-describing, responsive to determining the module is self-describing, requesting a run-time capabilities object from the Module, receiving the capabilities object, and registering the controlled device with the remote monitoring system according to the capabilities object.
  • In a further embodiment of the disclosure, a computer-readable medium having computer-executable instructions for execution by a processing system, the computer-executable instructions for discovery and registration of a controlled device for control thereof is provided. The computer-readable medium includes instructions that, when executed, cause the processing system to discover a Module associated with the controlled device by an agent associated with a remote monitoring system, query the Module for a version of the Module, evaluate whether the Module is self-describing, responsive to determining the Module is self-describing, request a run-time capabilities object from the Module, receive the capabilities object, and register the controlled device with the remote monitoring system according to the capabilities object.
  • In a further embodiment of the disclosure, a control system for control of controlled devices deployed therein is provided. The control system includes a controlled device having a self-describing Module associated therewith, a remote monitoring system, and a master controller on which the self-describing Module and an agent associated with the remote monitoring system are installed. The remote monitoring system and the master controller are OSGi-compliant. The agent discovers the Module by invoking an OSGi method, queries the Module for a version of the Module, determines the Module is self-describing, requests a run-time capabilities object from the Module responsive to determining the Module is self-describing, receives the capabilities object, and registers the controlled device with the remote monitoring system according to the capabilities object.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Aspects of the present disclosure are best understood from the following detailed description when read with the accompanying figures, in which:
  • FIG. 1 is a diagrammatic representation of a contemporary control system configuration that provides for control and monitoring of controlled devices deployed in the control system;
  • FIG. 2 is a diagrammatic representation of a control system configuration that facilitates controlled device Module development and deployment in accordance with embodiments;
  • FIG. 3 is a diagrammatic representation of a controlled device Module and controlled device development and deployment work flow implemented in accordance with an embodiment;
  • FIG. 4 is a flowchart that depicts a controlled device Module creation routine implemented in accordance with an embodiment;
  • FIG. 5 is a diagrammatic representation of a Module package class structure implemented in accordance with disclosed embodiments;
  • FIG. 6 is a flowchart that depicts processing of a remote monitoring system agent discovery and registration routine in accordance with an embodiment; and
  • FIG. 7 is a flowchart that depicts processing of a control routine for controlling or accessing a controlled device in accordance with an embodiment.
  • DETAILED DESCRIPTION OF THE INVENTION
  • It is to be understood that the following disclosure provides many different embodiments or examples for implementing different features of various embodiments. Specific examples of components and arrangements are described below to simplify the present disclosure. These are, of course, merely examples and are not intended to be limiting.
  • In accordance with disclosed embodiments, a self-describing controlled device Module allows a device to describe itself both at runtime and before installation thereby allowing discovery of the capabilities of the device to enable control, monitoring, and integration of a device with no prior knowledge of the device or the device type. Additionally, custom extensions to a device's capabilities will also be discovered to allow control, monitoring, and integration of these custom extensions without the need for custom code. New devices may then be deployed, or communicatively coupled with, control systems, monitoring systems, configuration tools, or development tools and natively understood with no changes to the systems or tools.
  • Contemporary products may use the application programming interfaces and corresponding device types to provide integration and control of devices in a control system. Exemplary attributes of the Security System device type include Properties, such as manufacture and model, Parameters, and Commands. However, many devices have capabilities that do not fit into such standardized APIs, and the trend is becoming more prevalent as manufacturers merge multiple capabilities into a single device.
  • In accordance with disclosed embodiments, mechanisms for provisioning a self-describing controlled device Module are provided. As referred to herein a device Module comprises a component that allows a device to be deployed in a control or remote monitoring system (collectively referred to herein simply as a control system). The device Module may be implemented as computer-executable or computer-readable instructions tangibly embodied on a computer-readable medium. A device, such as a camera, tuner, or any other device that may be monitored, controlled, or otherwise manipulated via the control system, is referred to herein as a controlled device. A controlled device has a corresponding device Module that facilitates deployment and operation of the controlled device within the control system. The control system may include various system entities or nodes that facilitate controlled device configuration and deployment, management, operation, control, monitoring, or other manipulations of a controlled device. Control system entities are referred to herein as control system devices (or simply system devices). Exemplary system devices include, for example, a master controller, a remote monitoring system (RMS), and any variety of Integrated Development Environment (IDE) systems or tools used for device integration, deployment or configuration.
  • The self-describing device Modules implemented according to disclosed embodiments are able to describe the capabilities of a controlled device both at runtime and before installation. Advantageously, the discovery of the capabilities of the device by other system devices with no prior knowledge of the device or its device type is provided. A master controller is able to control the controlled device, an RMS is able to monitor the controlled device, and an integration IDE is able to integrate the device Module with no changes to other control system devices. Additionally, custom extensions to device APIs may be allowed and may also be discoverable to allow control, monitoring, and integration of these custom extensions without the need for custom code.
  • FIG. 1 is a diagrammatic representation of a contemporary control system 100 configuration that provides for device control and monitoring in control system 100. A controlled device development IDE 110 may be used by device manufactures, e.g., a manufacturer of a controlled device 170, to develop a Module for the corresponding controlled device. Alternatively, the development IDE 110 may be used by manufacturers or developers of control system devices. A Module provides customized control and monitoring for a specific controlled device model from a specific manufacturer in a control system 100.
  • An integration IDE 130 allows device dealers to easily integrate multiple Modules and their associated controlled devices into a single control system 100. An integration tool run at integration IDE 130 may provide a visual mechanism of generating Touchpanel glue code to tie, for example, touch panel 142 inputs with each device Module's API to control and monitor the associated device.
  • Modules integrated with integration IDE 130 may be loaded onto a master controller 140 to enable control of the corresponding devices in the control system 100. NetLinx code generated by integration IDE 130 may also be loaded onto the master controller 140 to link touch panels, or other peripheral devices, with the control and monitoring APIs exposed by the device Modules generated by development IDE 110.
  • A remote monitoring system (RMS) 160 may feature a resource management suite that provides remote monitoring and control of various controlled devices 170 integrated in control system 100. The RMS 160 may comprise an RMS server that communicates with RMS agents installed on the system master controller 140. The RMS enables administrators to gather status of controlled devices and to control the devices participating in the control system 100 that are deployed via the master controller 140. Various control system devices are communicatively coupled with one another, e.g., via a network 150, a direct connection, or another suitable interface.
  • Contemporary API specifications create a control system which provides rigid device development, yet does not provide effective runtime enforcement. This introduces ambiguity and creates issues for control system devices or products collaborating to provide control and monitoring for controlled devices deployed in control system 100.
  • A control system device software development kit (SDK) composed of SDK components is used to create Modules for controlled devices. SDK components each expose an API that describes the mechanisms for controlling and monitoring the common device component. For example, a Power Supply is a device component used in many device types and thus may have a corresponding Power Supply SDK component at the development IDE 110.
  • Typical SDK components are grouped into well know device types which are rigid in their structure. These well known device types cannot easily account for device innovations in the form of new functionality or combinations of different device types. For example, a VCR comprises a power supply, a television tuner, and a tape transport. A device type specified as a VCR may then have a respective SDK component for the power supply, television tuner, and the tape transport. In a similar manner, a DVD player comprises a power supply and a disc transport. A device type specified as a DVD player may have a respective SDK component for the power supply and the disc transport. In this manner, well known device types may be accommodated by various automated tools for configuration and deployment in a control system. However, consider a manufacturer that has produced a DVD/VCR combination. In this instance, another device type must be defined for efficient deployment of the DVD/VCR combination since neither the SDK components grouped into the VCR device type nor the SDK components of the DVD device type may appropriately address the combination device.
  • Module developers may add custom capabilities as custom events, but these are not natively understood by any tools or control system devices or products requiring, for example, custom Touchpanel code to utilize the unique device capabilities. Thus, a device SDK must be disadvantageously updated periodically to accommodate new or modified device types. Consequently, controlled device deployment issues are often encountered as the system master controller 140 can support only one version of the device APIs. If an updated API “breaks” a legacy Module's existing functionality, the legacy Module must be “reopened” to account for the updated APIs in order to function on new control system installations. This ongoing SDK and Module maintenance consumes software engineering and development time, aggravates system partners that may not be aware of SDK updates, and complicates integration and deployment for product dealers.
  • Integration IDE 130 may import a Module's generated module.xml file to determine the device type and the Commands, Parameters, and Properties available for the Module. This data is checked against the expected Commands, Parameters, and Properties for the device type from the most recent Device SDK API. If there is a mismatch due to an out of date Module, the mismatched commands will not appear in the code builder and thus will not be available to the system integrator. Custom commands and events representing extensions to the standard device type are not exposed to integration IDE 130 and cannot be exposed to the system integrator.
  • In accordance with disclosed embodiments, a device Module configuration relaxes the rigidity of development while enforcing runtime access to only defined Commands, Parameters, and Properties. This shift in perspective eliminates the frustration of Module developers not being able to “fit” their device capabilities into a pre-defined device SDK. Module developers are able to mix and match standard SDK components to accommodate new device combinations while also creating custom commands and events to capture unique device capabilities in accordance with disclosed embodiments. A development IDE captures this information and generates a framework that describes the capabilities of the Module.
  • Central to the disclosed controlled device Module implementation is the creation of a capabilities component. When queried, a Module's capabilities component is able to describe its Module's capabilities both as a capabilities object that can be queried at runtime and in an XML format, or other instruction set, that can be saved or passed in messages between control system devices, such as the master controller and RMS. This same capabilities component will be able to create a runtime capabilities object from consuming the self-describing XML file.
  • FIG. 2 is a diagrammatic representation of a control system configuration that facilitates controlled device Module development and deployment in accordance with embodiments.
  • A controlled device Module development IDE 210 may be used by controlled device manufactures, e.g., manufacturers of controlled and monitored devices 270-271, or control system device manufacturers to develop self-describing Modules for corresponding controlled devices.
  • An integration IDE 230 allows device dealers to integrate multiple Modules and their associated controlled devices into a single control system. An integration code builder tool run at integration IDE 230 may provide a visual mechanism of generating Touchpanel glue code to tie, for example, touch panel inputs with each device Module's API to control and monitor the associated controlled device.
  • Modules integrated with integration IDE 230 may be loaded onto a system master controller 240 to enable control of the controlled devices in the control system.
  • An RMS 260 provides remote monitoring and control of various controlled devices 270-271 integrated in control system. The RMS may comprise a resource management suite that communicates with RMS agents installed on the system master controller 240. RMS 260 enables administrators to gather status of controlled devices and to control the devices participating in the control system deployed via master controller 240.
  • Each Module facilitates control and monitoring for a corresponding controlled device in control system. In accordance with an embodiment, a Module package 290 is produced by development IDE 210 that includes the device Module 292 and a capabilities component (CC) 293 that facilitates device deployment and operation within the control system. In accordance with an embodiment, a CC is provided for each controlled device type. Thus, controlled device 270 may have a CC 293 associated therewith, and controlled device 271 may have a CC 295 associated therewith. The RMS 260 may access each CC 293 and 295 of associated controlled devices 270-271. The Module package, such as Module package 290, and constituent components are associated with a particular controlled device, such as controlled device 270. A corresponding capabilities component 293 includes a self-describing XML file 296, or other suitable instruction set, that specifies the capabilities of the corresponding controlled device 270 including Properties, such as the device manufacturer and model, Parameters, such as controlled device 270 parameter states and status, and commands. As referred to herein, Parameters are mutable values describing the state of the controlled device. Parameters can be queried or delivered as asynchronous events. Properties are immutable values describing the controlled device, such as a manufacturer and model. Control Commands comprise methods which can be invoked to control the device to change the controlled device 270 configuration or state.
  • A capabilities component, such as CC 293, is configured to be queried by one or more control system devices including configuration, integration, and deployment tools, e.g., integration IDE 230 and RMS 260, and return Module capabilities in response to the query. The Module capabilities may be provided by the capabilities component as the XML file 296 prior to complete operational configuration of the Module 292 and corresponding controlled device 270. Further, the self-describing XML file 296 may be conveyed between one or more control system devices or components. When the device Module 292 and corresponding controlled device 270 are operationally deployed within the control system, a corresponding capabilities component 293 may generate a capabilities object 298 from the self-describing XML file 296. At this point, response to runtime queries issued to the capabilities component 293 may be provided by the capabilities object 298.
  • Various control system devices, such as the integration IDE 230, RMS 260, and master controller 240 may access a respective capabilities component, such as CC 293. The capabilities component allows for strict enforcement during integration of the corresponding controlled device 270 within the control system and during controlled device 270 runtime.
  • The controlled device 270 is coupled with the master controller 240 and is thereby provisioned a communication interface with the corresponding Module 292. When the Module and controlled device are operationally configured within the control system 200, supported control and monitoring commands may be conveyed from the Module 292 to the controlled device 270. To this end, the controlled device Module may communicatively interface with a remote monitoring agent 246 that, itself, may be communicatively coupled with RMS 260, e.g., via a network connection, a direct connection, or other suitable communication medium. The remote monitoring agent 246 may include or interface with an instance of the self-describing XML file 296. At runtime, the remote monitoring agent 246 may obtain the capabilities component 293 in the form of the capabilities object 298. When the controlled device is registered with RMS 260, an administrator may issue control and monitoring commands that are received by the remote monitoring agent 246 associated with the controlled device 270.
  • The controlled device Module 292 additionally interfaces with a controlled device router 244 that is allocated for, and associated with, the controlled device 270. The router 244 is identified and loaded by the master controller 240 to enable communications between Touchpanel code 242 and the code environment, e.g., Java, in which Module 292 is deployed. To this end, Module 292 may include a manifest that specifies the router 244 to be loaded and associated with Module 292, and master controller 240 is configured to examine the Module's manifest for such purposes. When loaded, the router 244 will query the associated Module 292 to discover its capabilities via a returned capabilities object (illustratively represented as a capabilities component 298). Only the capabilities described by the Module 292 will be sent to, or received from, the router 244. Commands or monitoring requests conveyed to the router 244 that are not included in the Module's capabilities object will be returned with a “not implemented” error or other suitable fault. Other controlled devices 271-272 may have corresponding Modules, associated RMS agents, and routers configured on master controller 240.
  • The control system may accommodate controlled devices, such as a controlled device 271, that has a legacy controlled device Module 294 and a corresponding router 245. Legacy controlled device Module 294 does not have the ability to provide capabilities of the controlled device 273, both rather may only provide a device type and version, e.g., to remote monitoring agent 246.
  • FIG. 3 is a diagrammatic representation of a controlled device Module and controlled device development and deployment work flow 300 implemented in accordance with an embodiment.
  • A device Module is produced at development IDE 210 (step 302). The controlled device Module 292 created at the development IDE 210 includes a self-describing capabilities XML file 296 for use prior to complete configuration of the controlled device 270 and corresponding Module 292 within control system. The Module 292 includes suitable logic for creating and exposing a capabilities object 298 and/or a self-describing XML file 296 for use at runtime, i.e., when the controlled device and Module are operationally configured for use in control system. An integration IDE 230 may then access the controlled device Module 292 to obtain the self-describing XML file 296 (step 304). On receipt of the self-describing XML file 296, the integration IDE 230 use the XML file 296 to integrate the controlled device's exposed capabilities into the control system. Once the device's capabilities are integrated into the control system such that the controlled device and Module are operationally configured, the master controller 240 may retrieve the runtime capabilities object from the Module 292 and thereby control access to the Module and the corresponding controlled device (step 306). The master controller utilizes the runtime capabilities object 298 to allow or prohibit monitoring requests and commands issued for the controlled device 270 according to the capabilities advertised or otherwise provided by the capabilities object 298. The remote monitoring system 260 may likewise obtain the controlled device Module's capabilities object (step 308), and the remote monitoring system may register the controlled device accordingly (step 310). The remote monitoring system uses the capabilities description provided by the capabilities object to advertise the device capabilities to a remote monitoring system administrator. The administrator may then complete a monitoring and control configuration for the device that is constrained by the device capabilities advertised by the controlled device capabilities object. Monitoring and control of the controlled device may then be performed by issuance of suitable commands from the remote monitoring system to the device Module 292 (step 312).
  • The development IDE 210 used for creation of the device Module according to step 302 may include an SDK that features low-level, reusable, controlled device SDK component building blocks, e.g., power supply, key pad, sensor device, or other common SDK components. However, the use of SDK components for creation of a Module 292 implemented in accordance with embodiments advantageously does not rely on module indexing, e.g., the association of one or more SDKs with a particular controlled device type. Rather, SDK components that are available and that may be utilized for Module development are not bound by a particular device type, and thus Module developers may freely mix and match SDK components. Further, the SDK preferably provides mechanisms for creating custom events and commands for the controlled device that may be accommodated by the corresponding Module. Advantageously, development and deployment of controlled devices within the control system does not require any rigid notion of a device type and a required SDK components association. Module developers are able to create their own device types or, alternatively, start with a known device type and remove or add SDK component at will.
  • Completed controlled device Modules developed at development IDE 210 are packaged for installation on master controllers. Completed Modules employ a capabilities component 293 to allow the Module to provide a description of the services it offers as both a runtime capabilities object 298 and in a self-describing XML file 296.
  • FIG. 4 is a flowchart 400 that depicts a controlled device Module creation routine implemented in accordance with an embodiment. The processing steps of FIG. 4 may be implemented as computer-executable instructions executable by a processing system, such as the development IDE 210 depicted in FIG. 2.
  • The Module creation routine is invoked (step 402), and the Module designer may be presented with various SDK components for selection to include in the Module for a corresponding device component (step 404). If the designer selects an SDK component, the metadata on the API is then specified including valid parameter ranges and values, descriptions, etc. (step 406). Specification of the interface API may include specifying one or more commands, parameters, and/or properties and may include the specification of metadata including descriptions, parameters types, and valid ranges. Once the selected SDK component function's interface API has been defined by the designer, the designer may choose an additional SDK component according to step 404.
  • When no additional SDK components are selected by the Module designer, the designer may be provided an option to specify custom commands (step 408). If the designer so chooses, the designer may extend a custom component API by the specification of custom commands or events for the Module 292 (step 410). In an embodiment, the IDE 210 may provide required fields to facilitate generation of a corresponding custom component. For example, the IDE 210 may require the designer to specify one or more Commands, Properties, and Parameters that are to be associated with the custom command or event, and may require the supply of metadata including descriptive text and valid ranges of the one or more Commands, Properties, or Parameters. After specification of the custom command or event and corresponding Commands, Properties, and/or Parameters and associated descriptive text and metadata, the IDE 210 may then generate a self-describing capabilities component for the SDK/custom component (step 412). The custom component generated by IDE 210 encapsulates the device's custom commands and events. Thereafter, the IDE 210 may then generate a device class skeleton for the SDK and custom component (step 414). A device class implementation is then added to control the specific device (step 416). A composite capabilities component may then be generated from each of the capabilities and custom components (step 418). In an embodiment, the composite capabilities component may comprise a self-describing XML file 296 from which Module 292 may generate a runtime capabilities object when Module 292 is operationally configured and deployed in control system. A manifest may then be generated for Module 292 (step 420). In an embodiment, the manifest generated for the Module 292 may specify a generic router 244 that is adapted to interface with self-describing Module 292. The completed Module package 290 is then produced by IDE 210 (step 422). In an embodiment, the Module package 290 includes the generated manifest, the chosen SDK components, custom components, and the composite capabilities component 293 including the generated self-describing XML file 296. The Module creation routine cycle may then end (step 424).
  • FIG. 5 is a diagrammatic representation of a Module package 290 class structure 500 implemented in accordance with disclosed embodiments. Module package 290 may be implemented as instruction sets tangibly embodied on a computer-readable medium and executable by a processing system, such as development IDE 210.
  • In the illustrative example, the Module package 290 class structure 500 depicts an exemplary class diagram of a packaged Module for control of a controlled device comprising a tuner 510. The module package 290 may include various device SDK component classes including, for example, a Device Power SDK class 531, a Device Preamp SDK class 532, and a Device Tuner SDK class 533. Additionally, a Device Custom Features class 530 specifies custom commands or events specific to tuner 510. Corresponding device component classes are generated for each of the SDK classes and the custom class(es). For example, a Power Device Component class 541 is generated and included in the Module package that corresponds to the Device Power SDK class 531. Likewise, a Preamp Device Component class 542 is included in the Module package 290 that corresponds to the Device Preamp SDK class 532, and a Tuner Device Component class 543 is included in the Module package 290 that corresponds to the Device Tuner SDK class 533. A Custom Device Component class 540 is generated by the development IDE 210 and provides the API to the custom commands, events, and listeners specific to the tuner 510 that are provided by the Device Custom Functions class 530. All Device SDK Component classes 541-543 inherit from a Device Component base class 570 which provides a consistent interface to the OSGi framework.
  • Each of the Device SDK classes 531-533 comprise abstract classes that are selected by the Module developer. The Module developer specifies the interface APIs providing the functionality of the abstract SDK classes 531-533 thereby providing the requisite logic for the corresponding device component classes 541-543 to implement specific device access codes for properly interfacing with tuner 510. The Module developer specifies custom commands or events for defining the Device Custom Features class 530. Custom Device Component class 540 is generated by the development IDE 210 and provides the API to the custom commands, events, and listeners specific to the tuner 510 that are provided by the Device Custom Functions class 530. A utility access class, e.g., Serial Access Utility class 520, may be provisioned at the development IDE 210 to simplify development of device component classes 540-543 and corresponding API specifications for utility access via SDK Component classes 531-533 and custom classes, e.g., Device Custom Functions class 530.
  • In accordance with an embodiment, Module package 290 and control system 200 software entities are implemented in compliance with the OSGi framework, although other suitable frameworks may be substituted therefor. An OSGi Device class 560 and Capabilities class 550 are hidden from the Module developer. The OSGi Device class 560 provides interaction with the OSGi framework and is the communication point for all services outside the Module bundle. The Capabilities class 550 is generated by development IDE 210 and determines all the components and custom commands and listener events specified in the Module. In an embodiment, the Capabilities class 550 uses Java reflection to match the commands, parameters, and properties listed in the capabilities Object with the actual methods in the objects that satisfy the capabilities.
  • At startup, each Device Component class 540-543 will be queried for their runtime capabilities object that includes the commands, parameters, and properties offered by the Module as well as metadata including descriptions, parameters types, and valid ranges. Individual capabilities objects of Component classes 540-543 may be accumulated by the Capabilities class 550 for collection of composite capabilities of all device component classes 540-543. When queried, the OSGi Device class 560 obtains the composite capabilities from the Capabilities class 550 and returns a composite runtime capabilities object describing the capabilities of device 510. The OSGi Device class 560 exposes a service interface other services will use to invoke command or request parameter identifiers from the associated Capabilities Object.
  • In accordance with another embodiment, RMS 260 is comprised of an RMS server that communicates with remote monitoring agents 246 installed on master controller 240 to gather status or control the controlled devices 270-273 deployed in the control system. RMS 260 is modified with respect to a legacy RMS, e.g., RMS 160, to consume, understand, and control self-describing Modules, such as Module 292.
  • Remote monitoring agents are ported from NetLinx to a Java environment in the form of three Modules: an RMS core Module 246 a, an RMS scheduling Module 246 b, and an RMS dialog Module 246 c. RMS scheduling and dialog Modules 246 b-246 c are “add on” applications.
  • The RMS Modules 246 a-246 c are configured to describe their capabilities through capabilities objects. However, the RMS Modules 246 a-246 c do not use the component SDK class structure because they are applications and thus do not represent a device.
  • Remote monitoring agent 246 is loaded on the master controller 240 in the same manner as other Modules. When integration IDE 230 is configured to consume and process self-describing Modules, e.g., Module 292, it will likewise be configured to consume and understand RMS Modules natively.
  • Router 244 is implemented to query and expose the capabilities of the RMS Modules 246 a-246 c. NetLinx-based devices may use router 245 to access RMS capabilities and participate in the RMS monitoring system.
  • Remote monitoring agent 246 is configured to use native OSGi methods to discover and access all self-describing Modules, e.g., Module 292, active on master controller 240. Agent 246 then queries each Module to determine its version. If the version indicates a self-describing Module, the agent 246 will request the Module return a capabilities object. If the version indicates a non-self describing Module, the module.xml file packaged in the module's jar file will be examined to discover its device type and capabilities. The RMS agent will generate a sparsely populated capabilities object from the retrieved module.xml file to describe the corresponding non-self describing Module.
  • The remote monitoring agent 246 may register each device 270 associated with a self-describing Module 292 by sending a registration to the RMS 260 server. The device registration may include the self-describing Module's XML file 296 that provides a description of the capabilities exposed on the controlled device 270.
  • The remote monitoring agent 246 utilizes the capabilities object 298 from each self-describing Module 292 to request status or invoke commands on the corresponding self-describing Module 292. The remote monitoring agent 246 may use reflection on legacy, non-self describing Modules to match the Module's capabilities with associated methods to invoke corresponding capabilities. The remote monitoring agent 246 will simply request status or command invocation from self-describing Modules as they will handle their own reflection on their internal components.
  • The RMS 260 server will use the device's XML description to construct a GUI display for administrators to allow selection of properties to monitor, view acceptable ranges, and invoke commands to control the device. The RMS 260 server may require registration for controlled devices in a self-describing XML format. The remote monitoring agent 246 is responsible for producing this XML from devices controlled by non-self describing Modules, self-describing Modules, or NetLinx code.
  • When a remote monitoring agent 246 is installed on master controller 240, devices controlled by master controller 240 with corresponding device capabilities will appear on the RMS 260 server GUI for the administrator to configure and control.
  • Remote monitoring agent 246 will automatically discover and describe the standard and custom capabilities of all active Modules. RMS 260 is advantageously not tied to any version of device SDK APIs since the module.xml file of non-self describing Modules will be available to describe corresponding Modules and self-describing Modules will describe themselves.
  • In accordance with embodiments, mechanisms for the discovery and registration of controlled devices associated with self-describing Modules in a control system are provided. A controlled device associated with a self-describing module is coupled with a master controller on which the self-describing module is installed. A remote monitoring system is communicatively coupled with the master controller, and a remote monitoring system agent is installed on the master controller. The agent discovers a Module associated with the controlled device and queries the Module for a version thereof. The agent then evaluates whether the Module is self-describing. In the event the Module is self-describing, the agent requests a run-time capabilities object from the Module and registers the controlled device with the remote monitoring system according to the capabilities object. In the event a Module associated with another device is discovered that is not self-describing, the agent may generate a capabilities object and register the other device with the remote monitoring system according to the generated capabilities object.
  • FIG. 6 is a flowchart 600 that depicts processing of a remote monitoring agent discovery and registration routine in accordance with an embodiment. The processing steps of FIG. 6 may be implemented as computer-executable instructions executable by a processing system, such as processing of the remote monitoring agent by master controller 240 depicted in FIG. 2.
  • The discovery and registration routine is invoked (step 602), and the remote monitoring agent including ported Modules 246 a-246 c is installed at the master controller (step 604). The remote monitoring agent 246 then discovers a Module, e.g., by using native OSGi methods (step 606). Upon discovery of a Module, the remote monitoring agent 246 queries the Module for the Module version (step 608). The remote monitoring agent then evaluates the Module version to determine if the Module comprises a self-describing Module (step 610). In the event the Module is not a self-describing Module, the RMS agent may then obtain the Module's Module.xml file, e.g., from the Module's jar file (step 612). The remote monitoring agent then determines the device type and corresponding capabilities (step 614) and thereafter generates a capabilities object for the non-self describing Module (step 616). The discovery and registration routine may then register the controlled device associated with the Module on the RMS 260 (step 622).
  • Returning again to step 610, if the Module is evaluated as a self-describing Module, the remote monitoring agent then issues a request to the Module for the Module's capabilities object (step 618), and awaits receipt of the capabilities object (step 620). The remote monitoring agent then registers the controlled device on the RMS according to the capabilities object according to step 622.
  • The remote monitoring agent then may attempt to discover another Module (step 624), and if one is identified, the remote monitoring agent queries the Module for the Module version according to step 608. When no additional Modules are discovered by the RMS agent, the discovery and registration routine cycle ends (step 626).
  • FIG. 7 is a flowchart 700 that depicts processing of a control routine for controlling or accessing a controlled device in accordance with an embodiment. The processing steps of FIG. 7 may be implemented as computer-executable instructions executable by a processing system, such as processing of the remote monitoring agent by master controller 240 depicted in FIG. 2.
  • The control routine is invoked (step 702), and the remote monitoring agent receives a command or status request to be performed on a controlled device from RMS 260 (step 704). The remote monitoring agent then evaluates whether the Module of the corresponding controlled device is self-describing (step 706). In the event the Module is not self-describing, the remote monitoring agent may then access the capabilities object of the Module (step 708), e.g., the capabilities object generated at step 616, and thereafter use reflection on the Module (step 710). The command/status request may then be evaluated for conformance with the capabilities object (step 714).
  • Returning again to step 706, in the event the Module is identified as self-describing, the remote monitoring agent may then access the capabilities object, e.g., the run-time capabilities object obtained at step 620, of the self-describing Module (step 712) and evaluate whether the command/status request conforms to the capabilities object according to step 714. If the command/status request does not conform to the capabilities object, the remote monitoring agent may issue a fault (step 716), and the control routine cycle may then end (step 720). If the command/status request conforms to the capabilities object, the command/status request may then be invoked (step 718), and the control routine cycle may then end according to step 720.
  • As described, mechanisms for the discovery and registration of controlled devices associated with self-describing Modules in a control system are provided. A controlled device associated with a self-describing module is coupled with a master controller on which the self-describing module is installed. A remote monitoring system is communicatively coupled with the master controller, and a remote monitoring system agent is installed on the master controller. The agent discovers a Module associated with the controlled device and queries the Module for a version thereof. The agent then evaluates whether the Module is self-describing. In the event the Module is self-describing, the agent requests a run-time capabilities object from the Module and registers the controlled device with the remote monitoring system according to the capabilities object. In the event a Module associated with another device is discovered that is not self-describing, the agent may generate a capabilities object and register the other device with the remote monitoring system according to the generated capabilities object.
  • The flowchart of FIGS. 4 and 6-7 depict process serialization to facilitate an understanding of disclosed embodiments and are not necessarily indicative of the serialization of the operations being performed. In various embodiments, the processing steps described in FIGS. 4 and 6-7 may be performed in varying order, and one or more depicted steps may be performed in parallel with other steps. Additionally, execution of some processing steps of FIGS. 4 and 6-7 may be excluded without departing from embodiments disclosed herein.
  • The illustrative block diagrams depict process steps or blocks that may represent modules, segments, or portions of code that include one or more executable instructions for implementing specific logical functions or steps in the process. Although the particular examples illustrate specific process steps or procedures, many alternative implementations are possible and may be made by simple design choice. Some process steps may be executed in different order from the specific description herein based on, for example, considerations of function, purpose, conformance to standard, legacy structure, user interface design, and the like.
  • Aspects of the present invention may be implemented in software, hardware, firmware, or a combination thereof. The various elements of the system, either individually or in combination, may be implemented as a computer program product tangibly embodied in a machine-readable storage device for execution by a processing unit. Various steps of embodiments of the invention may be performed by a computer processor executing a program tangibly embodied on a computer-readable medium to perform functions by operating on input and generating output. The computer-readable medium may be, for example, a memory, a transportable medium such as a compact disk, a floppy disk, or a diskette, such that a computer program embodying the aspects of the present invention can be loaded onto a computer. The computer program is not limited to any particular embodiment, and may, for example, be implemented in an operating system, application program, foreground or background process, driver, network stack, or any combination thereof, executing on a single processor or multiple processors. Additionally, various steps of embodiments of the invention may provide one or more data structures generated, produced, received, or otherwise implemented on a computer-readable medium, such as a memory.
  • Although embodiments of the present invention have been illustrated in the accompanied drawings and described in the foregoing description, it will be understood that the invention is not limited to the embodiments disclosed, but is capable of numerous rearrangements, modifications, and substitutions without departing from the spirit of the invention as set forth and defined by the following claims. For example, the capabilities of the invention can be performed fully and/or partially by one or more of the blocks, modules, processors or memories. Also, these capabilities may be performed in the current manner or in a distributed manner and on, or via, any device able to provide and/or receive information. Further, although depicted in a particular manner, various modules or blocks may be repositioned without departing from the scope of the current invention. Still further, although depicted in a particular manner, a greater or lesser number of modules and connections can be utilized with the present invention in order to accomplish the present invention, to provide additional known features to the present invention, and/or to make the present invention more efficient. Also, the information sent between various modules can be sent between the modules via at least one of a data network, the Internet, an Internet Protocol network, a wireless source, and a wired source and via plurality of protocols.

Claims (20)

What is claimed is:
1. A method, comprising:
discovering a module associated with a controlled device by an agent associated with a remote monitoring system;
evaluating whether the module is self-describing at runtime;
responsive to determining that the module is self-describing, requesting a run-time capabilities object of an object-oriented programming language from the module;
receiving the run-time capabilities object; and
registering the controlled device with the remote monitoring system according to the run-time capabilities object.
2. The method of claim 1, wherein discovering the module comprises discovering the module by invoking an OSGi method by the agent.
3. The method of claim 1, wherein evaluating whether the module is self-describing comprises evaluating the version of the module.
4. The method of claim 1, further comprising:
receiving a command for an operation to be performed on the controlled device;
determining the module is self-describing;
accessing the capabilities object; and
invoking the command responsive to determining the command conforms to the capabilities object.
5. The method of claim 1, further comprising:
discovering a second module associated with a second controlled device by the agent;
evaluating whether the second module is self-describing;
responsive to determining the second module is not self-describing, determining a device type and capabilities corresponding thereto; and
generating a second capabilities object based on the capabilities corresponding to the device type.
6. The method of claim 5, further comprising registering the second controlled device with the remote monitoring system according to the second capabilities object.
7. The method of claim 6, further comprising:
receiving a command for an operation to be performed on the second controlled device;
determining the second module is not self-describing;
accessing the second capabilities object;
performing reflection on the second capabilities object; and
invoking the command responsive to determining the command conforms to the second capabilities object.
8. The method of claim 1, further comprising:
querying each of a plurality of device component classes for their respective run-time capabilities objects comprising commands, parameters, and properties; and
accumulating the run-time capabilities of the plurality of device component classes into a device capabilities class.
9. A non-transitory computer-readable medium comprising computer-executable instructions for execution by a processing system, the computer-executable instructions, when executed, configured to cause the processing system to:
discover a module associated with a controlled device by an agent associated with a remote monitoring system;
query the module for a version of the module;
evaluate whether the module is self-describing at runtime;
responsive to determining that the module is self-describing, request a run-time capabilities object of an object-oriented programming language from the module;
receive the run-time capabilities object; and
register the controlled device with the remote monitoring system according to the run-time capabilities object.
10. The non-transitory computer-readable medium of claim 9, wherein the instructions that discover the module comprise instructions that, when executed, cause the processing system to invoke an OSGi method by the agent.
11. The non-transitory computer-readable medium of claim 9, wherein the instructions that evaluate whether the module is self-describing comprise instructions that, when executed, cause the processing system to evaluate the version of the module.
12. The non-transitory computer-readable medium of claim 9, further comprising instructions that, when executed, cause the processing system to:
receive a command for an operation to be performed on the controlled device;
determine the module is self-describing;
access the capabilities object; and
invoke the command responsive to determining the command conforms to the capabilities object.
13. The non-transitory computer-readable medium of claim 9, further comprising instructions that, when executed, cause the processing system to:
discover a second module associated with a second controlled device by the agent;
evaluate whether the second module is self-describing;
responsive to determining the second module is not self-describing, determine a device type and capabilities corresponding thereto; and
generate a second capabilities object based on the capabilities corresponding to the device type.
14. The non-transitory computer-readable medium of claim 13, further comprising instructions that, when executed, cause the processing system to register the second controlled device with the remote monitoring system according to the second capabilities object.
15. The non-transitory computer-readable medium of claim 14, further comprising instructions that, when executed, cause the processing system to:
receive a command for an operation to be performed on the second controlled device;
determine the second module is not self-describing;
access the second capabilities object;
perform reflection on the second capabilities object; and
invoke the command responsive to determining the command conforms to the second capabilities object
16. A control system, comprising:
a controlled device having a self-describing module associated therewith;
a remote monitoring system; and
a master controller on which the self-describing module and an agent associated with the remote monitoring system are installed, wherein
the agent is configured to
discover the module,
query the module for a version of the module,
evaluate whether the module is self-describing at runtime,
determine that the module is self-describing,
request a run-time capabilities object of an object-oriented programming language from the module responsive to determining that the module is self-describing,
receive the run-time capabilities object, and
register the controlled device with the remote monitoring system according to the run-time capabilities object.
17. The system of claim 16, wherein the agent determines the module is self-describing by evaluating the version of the module.
18. The method of claim 16, wherein the agent receives, from the remote monitoring system, a command for an operation to be performed on the controlled device, accesses the capabilities object, and invokes the command responsive to determining the command conforms to the capabilities object.
19. The system of claim 16, wherein the agent discovers a second module associated with a second controlled device, evaluates whether the second module is self-describing, determines a device type and capabilities corresponding thereto responsive to determining the second module is not self-describing, and generates a second capabilities object based on the capabilities corresponding to the device type.
20. The system of claim 19, wherein the agent registers the second controlled device with the remote monitoring system according to the second capabilities object.
US14/611,998 2007-12-29 2015-02-02 Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules Abandoned US20150148915A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/611,998 US20150148915A1 (en) 2007-12-29 2015-02-02 Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US1762007P 2007-12-29 2007-12-29
US1761307P 2007-12-29 2007-12-29
US12/344,723 US8954541B2 (en) 2007-12-29 2008-12-29 Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules
US14/611,998 US20150148915A1 (en) 2007-12-29 2015-02-02 Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US12/344,723 Continuation US8954541B2 (en) 2007-12-29 2008-12-29 Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules

Publications (1)

Publication Number Publication Date
US20150148915A1 true US20150148915A1 (en) 2015-05-28

Family

ID=40799459

Family Applications (10)

Application Number Title Priority Date Filing Date
US12/344,723 Active 2031-04-11 US8954541B2 (en) 2007-12-29 2008-12-29 Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules
US12/344,716 Active 2031-09-21 US8316343B2 (en) 2007-12-29 2008-12-29 Self-describing device module and system and computer-readable medium for the production thereof
US12/344,866 Active 2031-05-25 US8230113B2 (en) 2007-12-29 2008-12-29 System, method, and computer-readable medium for development and deployment of self-describing controlled device modules in a control system
US13/550,758 Active 2029-05-07 US8825880B2 (en) 2007-12-29 2012-07-17 System, method, and computer-readable medium for development and deployment of self-describing controlled device modules in a control system
US13/674,178 Active 2029-06-12 US9134719B2 (en) 2007-12-29 2012-11-12 Self-describing device module and system and computer-readable medium for the production thereof
US14/471,303 Active 2030-02-17 US9690574B2 (en) 2007-12-29 2014-08-28 System, method, and computer-readable medium for development and deployment of self-describing controlled device modules in a control system
US14/611,998 Abandoned US20150148915A1 (en) 2007-12-29 2015-02-02 Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules
US14/853,170 Active 2029-01-12 US9792113B2 (en) 2007-12-29 2015-09-14 Self-describing device module and system and computer-readable medium for the production thereof
US15/634,788 Abandoned US20170293279A1 (en) 2007-12-29 2017-06-27 System, method, and computer-readable medium for development and deployment of self-describing controlled device modules in a control system
US15/786,024 Abandoned US20180039495A1 (en) 2007-12-29 2017-10-17 Self-describing device module and system and computer-readable medium for the production thereof

Family Applications Before (6)

Application Number Title Priority Date Filing Date
US12/344,723 Active 2031-04-11 US8954541B2 (en) 2007-12-29 2008-12-29 Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules
US12/344,716 Active 2031-09-21 US8316343B2 (en) 2007-12-29 2008-12-29 Self-describing device module and system and computer-readable medium for the production thereof
US12/344,866 Active 2031-05-25 US8230113B2 (en) 2007-12-29 2008-12-29 System, method, and computer-readable medium for development and deployment of self-describing controlled device modules in a control system
US13/550,758 Active 2029-05-07 US8825880B2 (en) 2007-12-29 2012-07-17 System, method, and computer-readable medium for development and deployment of self-describing controlled device modules in a control system
US13/674,178 Active 2029-06-12 US9134719B2 (en) 2007-12-29 2012-11-12 Self-describing device module and system and computer-readable medium for the production thereof
US14/471,303 Active 2030-02-17 US9690574B2 (en) 2007-12-29 2014-08-28 System, method, and computer-readable medium for development and deployment of self-describing controlled device modules in a control system

Family Applications After (3)

Application Number Title Priority Date Filing Date
US14/853,170 Active 2029-01-12 US9792113B2 (en) 2007-12-29 2015-09-14 Self-describing device module and system and computer-readable medium for the production thereof
US15/634,788 Abandoned US20170293279A1 (en) 2007-12-29 2017-06-27 System, method, and computer-readable medium for development and deployment of self-describing controlled device modules in a control system
US15/786,024 Abandoned US20180039495A1 (en) 2007-12-29 2017-10-17 Self-describing device module and system and computer-readable medium for the production thereof

Country Status (1)

Country Link
US (10) US8954541B2 (en)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8954541B2 (en) * 2007-12-29 2015-02-10 Amx Llc Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules
US7940658B2 (en) * 2008-09-04 2011-05-10 Cisco Technology, Inc. ERSPAN dynamic session negotiation
US8522193B2 (en) * 2009-02-10 2013-08-27 International Business Machines Corporation Program development tool configured to compile source code according to energy consumption requirements
JP5298055B2 (en) * 2010-03-24 2013-09-25 Kddi株式会社 Device control apparatus, program, and method for controlling control target device arranged in resource
US8520540B1 (en) 2010-07-30 2013-08-27 Cisco Technology, Inc. Remote traffic monitoring through a network
US9703680B1 (en) * 2011-12-12 2017-07-11 Google Inc. System and method for automatic software development kit configuration and distribution
US9262250B2 (en) 2011-12-12 2016-02-16 Crashlytics, Inc. System and method for data collection and analysis of information relating to mobile applications
US9087154B1 (en) * 2011-12-12 2015-07-21 Crashlytics, Inc. System and method for providing additional functionality to developer side application in an integrated development environment
US9054967B1 (en) 2012-09-18 2015-06-09 Cisco Technology, Inc. Timestamping packets in a network
US9077619B2 (en) 2012-09-18 2015-07-07 Cisco Technology, Inc. Exporting real time network traffic latency and buffer occupancy
US9094307B1 (en) 2012-09-18 2015-07-28 Cisco Technology, Inc. Measuring latency within a networking device
US9647906B2 (en) 2012-11-02 2017-05-09 Rockwell Automation Technologies, Inc. Cloud based drive monitoring solution
US9081411B2 (en) * 2013-05-10 2015-07-14 Sri International Rapid development of virtual personal assistant applications
KR102218995B1 (en) * 2013-06-18 2021-02-25 시암벨라 리미티드 Method and apparatus for code virtualization and remote process call generation
US9979638B2 (en) * 2013-06-19 2018-05-22 Hcl Technologies Limited Systems and methods to construct engineering environment supporting API enablement for software defined networking
US9692678B2 (en) * 2013-11-01 2017-06-27 Cisco Technology, Inc. Method and system for delegating administrative control across domains
US9619122B2 (en) 2014-01-10 2017-04-11 Ciambella Ltd. Method and apparatus for automatic device program generation
US10116512B2 (en) * 2014-07-10 2018-10-30 Oracle International Corporation Service discovery and/or effort estimation in networked computing environments
US9928151B1 (en) * 2014-12-12 2018-03-27 Amazon Technologies, Inc. Remote device interface for testing computing devices
WO2016170659A1 (en) * 2015-04-23 2016-10-27 株式会社 東芝 Client system, multi-client system and server client system
US10067490B2 (en) 2015-05-08 2018-09-04 Ciambella Ltd. Method and apparatus for modifying behavior of code for a controller-based device
CA2984106C (en) 2015-05-08 2021-12-21 Ciambella Ltd. Method and apparatus for automatic software development for a group of controller-based devices
US10146512B1 (en) 2015-08-28 2018-12-04 Twitter, Inc. Feature switching kits
DE112016002120T5 (en) * 2015-09-02 2018-03-22 Google LLC (n.d.Ges.d. Staates Delaware) Development and sales platform for software
CN106873437B (en) * 2015-12-11 2018-12-04 中广核工程有限公司 The detection of nuclear power station real-time information monitoring system picture and automatic configuration system and method
US10326609B1 (en) * 2016-03-28 2019-06-18 Sanjay Patel System and method for automatic association coordinator module pre-configuration
US10534584B2 (en) * 2016-05-04 2020-01-14 Sap Se Enhanced software application ecosystem
CN106161100B (en) * 2016-08-03 2019-09-27 青岛海信电器股份有限公司 A kind of internet of things equipment configuration method and internet-of-things terminal
EP3596593B1 (en) 2017-03-14 2024-05-01 Ciambella Ltd. Method and apparatus for automatically generating and incorporating code in development environments
EP3608736B1 (en) * 2018-08-09 2023-11-01 ABB Schweiz AG Apparatus comprising a process control system and at least one process module, related method and data storage medium
CN109408256B (en) * 2018-10-17 2021-03-19 麒麟合盛网络技术股份有限公司 Application calling method and device
CN110362014A (en) * 2019-07-23 2019-10-22 甘肃紫光智能交通与控制技术有限公司 A kind of novel lane control cabinet having long-range monitoring and temp regulating function
DE102020125860A1 (en) * 2020-10-02 2022-04-07 Elpro Gmbh Method for integrating a plant component into a plant system
CN112416308B (en) * 2020-11-30 2024-08-09 上海汽车集团股份有限公司 Software optimization method and device and software architecture

Citations (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020035621A1 (en) * 1999-06-11 2002-03-21 Zintel William Michael XML-based language description for controlled devices
US20020078161A1 (en) * 2000-12-19 2002-06-20 Philips Electronics North America Corporation UPnP enabling device for heterogeneous networks of slave devices
US20020116477A1 (en) * 1999-12-08 2002-08-22 Parvathi Somashekar Technique for configuring network deliverable components
US20040049609A1 (en) * 2002-08-29 2004-03-11 Peter Simonson Mechanism for integrating programmable devices into software based frameworks for distributed computing
US20040133704A1 (en) * 2003-01-07 2004-07-08 Openpeak Inc. Legacy device bridge for residential or non-residential networks
US20040194059A1 (en) * 2003-03-27 2004-09-30 International Business Machines Corporation Method to deploy software using an open service gateway initiative (OSGi) framework
US20050097203A1 (en) * 2003-10-30 2005-05-05 Nortel Networks Limited Autodiscovery for virtual networks
US20050114491A1 (en) * 2003-11-25 2005-05-26 Dennis Bushmitch SIP service for home network device and service mobility
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US20050144262A1 (en) * 2003-12-26 2005-06-30 Kang Dong O. Apparatus for home network middleware interoperability service using home gateway and OSGi platform and method thereof
US20050149712A1 (en) * 2003-12-18 2005-07-07 International Business Machines Corporation Post-install configuration of modules during startup of a modular application platform
US20050154785A1 (en) * 2004-01-09 2005-07-14 Reed Benjamin C. Method and system of mapping at least one web service to at least one OSGi service and exposing at least one local service as at least one web service
US20050193388A1 (en) * 2004-02-26 2005-09-01 International Business Machines Corporation Method, system and program product for controlling native applications using open service gateway initiative (OSGi) bundles
US20050195390A1 (en) * 2004-02-25 2005-09-08 Samsung Electronics Co., Ltd. Method of testing open services gateway initiative service platform and test tool using the method
US20050223101A1 (en) * 2004-03-22 2005-10-06 International Business Machines Corporation Computer-implemented method, system and program product for resolving prerequisites for native applications utilizing an open service gateway initiative ( OSGi) framework
US20050232283A1 (en) * 2004-03-26 2005-10-20 Stanley Moyer Bridging local device communications across the wide area
US20060025132A1 (en) * 2004-04-16 2006-02-02 Jeyhan Karaoguz Remote configuration and control of local devices via a broadband access gateway
US20060067341A1 (en) * 2004-09-09 2006-03-30 Barber Ronald W Method, system and computer program using standard interfaces for independent device controllers
US20060140199A1 (en) * 2004-12-28 2006-06-29 Matsushita Electric Industrial Co., Ltd. SIP/UPnP bridging middleware architecture for a service gateway framework
US20060159110A1 (en) * 2005-01-17 2006-07-20 Samsung Electronics Co., Ltd. Open service gateway initiative-based home gateway apparatus and device registration method thereof
US20060184615A1 (en) * 2005-02-16 2006-08-17 Samsung Electronics Co., Ltd. Service framework for home network
US20060209857A1 (en) * 2005-03-15 2006-09-21 Bellsouth Intellectual Property Corporation Broadband home applications gateway/residential gateway systems, methods and computer program products
US20060233126A1 (en) * 2005-03-24 2006-10-19 Nokia Corporation Managing midlet suites in OSGI environment
US20070043550A1 (en) * 2005-08-16 2007-02-22 Tzruya Yoav M System and method for providing a remote user interface for an application executing on a computing device
US20070067062A1 (en) * 2005-08-22 2007-03-22 Mairs Susan M Building automation system facilitating user customization
US20070192818A1 (en) * 2004-10-12 2007-08-16 Mikael Bourges-Sevenier System and method for creating, distributing, and executing rich multimedia applications
US20070233881A1 (en) * 2006-03-31 2007-10-04 Zoltan Nochta Active intervention in service-to-device mapping for smart items
US20070240134A1 (en) * 2006-02-28 2007-10-11 Joydeep Buragohain Software packaging model supporting multiple entity types
US20070236346A1 (en) * 2006-02-21 2007-10-11 Abdelsalam Helal Modular Platform Enabling Heterogeneous Devices, Sensors and Actuators to Integrate Automatically Into Heterogeneous Networks
US20070294385A1 (en) * 2006-06-08 2007-12-20 Vivek Kapadekar Device management in a network
US20080095179A1 (en) * 2006-10-20 2008-04-24 Kuen-Ming Lee System And Method For Controlling The Devices Connected To Control Gateway
US20080178198A1 (en) * 2007-01-22 2008-07-24 Media Ripple, Llc Distributed digital media management
US20080256225A1 (en) * 2005-12-08 2008-10-16 Youngho Suh Osgi-Based Dynamic Service Management Method for Context-Aware Systems
US20090031396A1 (en) * 2007-07-24 2009-01-29 Samsung Electronics Co., Ltd. METHOD OF AND APPARATUS FOR MANAGING ACCESS PRIVILEGES IN CLDC OSGi ENVIRONMENT
US20090113088A1 (en) * 2004-06-08 2009-04-30 Dartdevices Corporation Method and device for interoperability in heterogeneous device environment
US20090125612A1 (en) * 2007-11-08 2009-05-14 Christian Rabetge Configuration domains for the configuration of web services and consumer proxies
US20090144728A1 (en) * 2007-12-04 2009-06-04 Bea Systems, Inc. Module based software system linking runtime to install time
US20090171484A1 (en) * 2007-12-29 2009-07-02 Amx, Llc Self-describing device module and system and computer-readable medium for the production thereof
US20090172137A1 (en) * 2001-11-30 2009-07-02 Qst Holdings, Llc Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US20090300578A1 (en) * 2001-01-09 2009-12-03 Nextair Corporation System and Method For Developing An Application For Extending Access to Local Software Of A Wireless Device
US7797698B2 (en) * 2004-11-17 2010-09-14 International Business Machines Corporation Method and apparatus for dynamic middleware assembly

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6304918B1 (en) * 1997-03-11 2001-10-16 Microsoft Corporation Object interface control system
US6216158B1 (en) * 1999-01-25 2001-04-10 3Com Corporation System and method using a palm sized computer to control network devices
US20020066071A1 (en) * 1999-02-25 2002-05-30 Sing-Ban Robert Tien Local environment for integrated multiple-tier client-server concurrent program developement
US6513153B1 (en) * 1999-03-03 2003-01-28 Cisco Technology, Inc. Automatically integrating and executing application software modules
US7165041B1 (en) * 1999-05-27 2007-01-16 Accenture, Llp Web-based architecture sales tool
US6564377B1 (en) * 1999-07-26 2003-05-13 Microsoft Corporation Self-describing components within a software catalog
US6654948B1 (en) * 1999-10-12 2003-11-25 International Business Machines Corporation Methods and apparatus for partial and consistent monitoring of object-oriented programs and systems
US6775825B1 (en) * 2000-10-31 2004-08-10 Hewlett-Packard Development Company, L.P. Common software application definition for resource management
US6947995B2 (en) * 2000-11-20 2005-09-20 Flexiworld Technologies, Inc. Mobile and pervasive output server
US7171475B2 (en) * 2000-12-01 2007-01-30 Microsoft Corporation Peer networking host framework and hosting API
US7131111B2 (en) * 2001-01-19 2006-10-31 Sun Microsystems, Inc. Development of manifest for java embedded server bundle
US7024257B2 (en) * 2001-02-09 2006-04-04 Motion Engineering, Inc. System for motion control, method of using the system for motion control, and computer-readable instructions for use with the system for motion control
US20040015811A1 (en) * 2001-02-16 2004-01-22 Freitas Nathanial X. Method and apparatus for the creation of software applications
US20030236657A1 (en) * 2001-03-12 2003-12-25 Martin Ryzl Method of developing wireless device applications using an integrated emulator and an IDE
US7533187B1 (en) * 2001-04-05 2009-05-12 Marcellino Tanumihardja Wireless device detection
US20030237073A1 (en) * 2001-05-17 2003-12-25 Karel Gardas Software synchronization of interface and class implementation
US7017148B2 (en) * 2001-07-10 2006-03-21 Intel Corporation Apparatus and method for UPnP device code generation using XML
US7117504B2 (en) * 2001-07-10 2006-10-03 Microsoft Corporation Application program interface that enables communication for a network software platform
US7225430B2 (en) * 2001-07-26 2007-05-29 Landesk Software Limited Software code management method and apparatus
US7228547B2 (en) * 2001-07-30 2007-06-05 International Business Machines Corporation Method, system, and program for enabling access to a plurality of services
US7275235B2 (en) * 2001-08-29 2007-09-25 Molinari Alfred A Graphical application development system for test, measurement and process control applications
US7660887B2 (en) * 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
DE10151750A1 (en) * 2001-10-19 2003-05-08 Siemens Ag Process for creating a data processing program
US20030101251A1 (en) * 2001-11-27 2003-05-29 Varros Telecom Customizable element management system and method using element modeling and protocol adapters
US20030120707A1 (en) * 2001-12-21 2003-06-26 Sander Bogdan Systems and methods for exporting functionality of a modularized system
US20030140332A1 (en) * 2001-12-21 2003-07-24 Norton Jeffrey B. Method and apparatus for generating a software development tool
JP2003241964A (en) * 2002-02-13 2003-08-29 Fujitsu Ltd Software maintenance data generation device and generation program
US7127700B2 (en) * 2002-03-14 2006-10-24 Openwave Systems Inc. Method and apparatus for developing web services using standard logical interfaces to support multiple markup languages
US6986108B2 (en) * 2002-03-21 2006-01-10 Toshiba Tec Kabushiki Kaisha System for accessing digital imaging devices
US7228353B1 (en) * 2002-03-28 2007-06-05 Emc Corporation Generating and launching remote method invocation servers for individual client applications
KR100440583B1 (en) * 2002-05-16 2004-07-19 한국전자통신연구원 A Method and Apparatus of Management and Control of UPnP Device in Home Network from the Internet
US20050076327A1 (en) * 2003-01-15 2005-04-07 University Of Florida Server-side wireless development tool
DE10302678A1 (en) * 2003-01-24 2004-07-29 Robert Bosch Gmbh Controlling home audio video inoperability equipment through device control module of open service gateway initiative platform, employs device control module
US7954086B2 (en) * 2003-05-19 2011-05-31 Hewlett-Packard Development Company, L.P. Self-describing kernel modules
US8069435B1 (en) * 2003-08-18 2011-11-29 Oracle America, Inc. System and method for integration of web services
US20050079327A1 (en) * 2003-10-10 2005-04-14 Christina Stiles Baby burp cloth and diaper and method
US7752603B2 (en) * 2003-12-08 2010-07-06 Notable Solutions, Inc. Systems and methods for data interchange among autonomous processing entities
US7580994B1 (en) * 2004-01-21 2009-08-25 Nortel Networks Limited Method and apparatus for enabling dynamic self-healing of multi-media services
US20050198352A1 (en) * 2004-02-23 2005-09-08 Nokia Corporation Automated data migration
CN101006425A (en) * 2004-03-10 2007-07-25 汉德马克公司 Data access architecture
US8291375B2 (en) * 2004-03-29 2012-10-16 Sybase, Inc. Attribute-based component programming system and methodology for object-oriented languages
US20060031497A1 (en) * 2004-05-21 2006-02-09 Bea Systems, Inc. Systems and methods for collaborative content storage
US7610577B1 (en) * 2004-05-29 2009-10-27 Sun Microsystems, Inc. Method for developing platform independent launchable applications
US8321573B2 (en) * 2004-09-17 2012-11-27 Sanyo Electric Co., Ltd. Communications terminal with optimum send interval
US7680758B2 (en) * 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US20060090154A1 (en) * 2004-10-07 2006-04-27 International Business Machines Corp. System and method for contributing remote object content to an integrated development environment type-ahead
US7533376B2 (en) * 2004-10-12 2009-05-12 Picsel (Research) Limited Dynamic linking in constrained environment
US8458467B2 (en) * 2005-06-21 2013-06-04 Cisco Technology, Inc. Method and apparatus for adaptive application message payload content transformation in a network infrastructure element
US20060112141A1 (en) * 2004-11-24 2006-05-25 Morris Robert P System for automatically creating a metadata repository for multimedia
US20060112067A1 (en) * 2004-11-24 2006-05-25 Morris Robert P Interactive system for collecting metadata
US20090083289A1 (en) * 2004-11-24 2009-03-26 Morris Robert P System For Accessing A Service Associated With A Resource
US9766953B2 (en) * 2004-12-16 2017-09-19 Openspan, Inc. System and method for non-programmatically constructing software solutions
US20060140144A1 (en) * 2004-12-27 2006-06-29 Motorola, Inc. Method and system for providing an open gateway initiative bundle over the air
US20060153072A1 (en) * 2004-12-28 2006-07-13 Matsushita Electric Industrial Co., Ltd. Extending universal plug and play messaging beyond a local area network
US20060150150A1 (en) * 2005-01-06 2006-07-06 International Business Machines Corporation Editor support for modifying generated source code
US7647582B2 (en) * 2005-01-20 2010-01-12 Microsoft Corporation Application domain manager
US8140985B2 (en) * 2005-01-20 2012-03-20 Microsoft Corporation Transactions for an application domain manager
US20060200759A1 (en) * 2005-03-04 2006-09-07 Microsoft Corporation Techniques for generating the layout of visual content
US8554916B2 (en) * 2005-04-11 2013-10-08 Accenture Global Services Gmbh Service delivery platform and development of new client business models
US20070011271A1 (en) * 2005-05-20 2007-01-11 Baker David V Multi-source data retrieval system
US7917232B2 (en) * 2005-08-22 2011-03-29 Trane International Inc. Building automation system data management
US8099178B2 (en) * 2005-08-22 2012-01-17 Trane International Inc. Building automation system facilitating user customization
US7904186B2 (en) * 2005-08-22 2011-03-08 Trane International, Inc. Building automation system facilitating user customization
US20070093243A1 (en) * 2005-10-25 2007-04-26 Vivek Kapadekar Device management system
US8099716B2 (en) * 2005-11-28 2012-01-17 Ubiquity Software Corporation Limited Service structured application development architecture
US7765519B2 (en) * 2005-12-16 2010-07-27 International Business Machines Corporation Efficient builds for installation software
TWI295432B (en) * 2005-12-22 2008-04-01 Ind Tech Res Inst Method and system for converting service type of device connected to control gateway
JP4828271B2 (en) * 2006-03-20 2011-11-30 富士通株式会社 Software generation apparatus for multiple OS versions and software generation support program for multiple OS versions
US20070250810A1 (en) * 2006-04-20 2007-10-25 Tittizer Abigail A Systems and methods for managing data associated with computer code
US8613056B2 (en) * 2006-05-26 2013-12-17 Cisco Technology, Inc. Extensible authentication and authorization of identities in an application message on a network device
US7735060B2 (en) * 2006-06-29 2010-06-08 Augusta Systems, Inc. Method and system for rapidly developing and deploying sensor-enabled software applications
US8015547B2 (en) * 2006-06-29 2011-09-06 Augusta Systems, Inc. Reconfigurable, hierarchical component-based architecture and framework and methods for rapidly developing sensor device-enabling software applications
US7742482B1 (en) * 2006-06-30 2010-06-22 Juniper Networks, Inc. Upstream label assignment for the resource reservation protocol with traffic engineering
CN101101547B (en) * 2006-07-04 2012-07-18 霍尼韦尔(北京)技术研发实验有限公司 Dynamic computer system and structure
US8020146B2 (en) * 2006-07-24 2011-09-13 International Business Machines Corporation Applying deferred refactoring and API changes in an IDE
US8656271B2 (en) * 2006-07-31 2014-02-18 Sap Ag Adapting a spreadsheet for use with a complex object
US9128727B2 (en) * 2006-08-09 2015-09-08 Microsoft Technology Licensing, Llc Generation of managed assemblies for networks
JP2008123484A (en) * 2006-10-20 2008-05-29 Canon Inc Print processing apparatus and method of controlling print processing apparatus
US7552113B2 (en) * 2006-11-16 2009-06-23 Roe Robert D System and method for managing search results and delivering advertising and enhanced effectiveness
US8375360B2 (en) * 2006-11-22 2013-02-12 Hewlett-Packard Development Company, L.P. Provision of services over a common delivery platform such as a mobile telephony network
US7950024B2 (en) * 2006-12-27 2011-05-24 Oracle America, Inc. Mechanism for transparently interfacing with a third party version control system
US8387004B2 (en) * 2007-02-09 2013-02-26 Microsoft Corporation Compositional application programming interface and literal syntax
US8392880B2 (en) * 2007-04-27 2013-03-05 International Business Machines Corporation Rapid application development for database-aware applications
US8234620B1 (en) * 2007-04-30 2012-07-31 Oracle America, Inc. Method and system for software development using distributed computing resources
US20080313620A1 (en) * 2007-06-15 2008-12-18 Spirent Communications, Inc. System and method for saving and restoring a self-describing data structure in various formats
US8832650B2 (en) * 2007-09-26 2014-09-09 Ncr Corporation Automated code generation for an automated teller machine

Patent Citations (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020035621A1 (en) * 1999-06-11 2002-03-21 Zintel William Michael XML-based language description for controlled devices
US20020116477A1 (en) * 1999-12-08 2002-08-22 Parvathi Somashekar Technique for configuring network deliverable components
US20020078161A1 (en) * 2000-12-19 2002-06-20 Philips Electronics North America Corporation UPnP enabling device for heterogeneous networks of slave devices
US20090300578A1 (en) * 2001-01-09 2009-12-03 Nextair Corporation System and Method For Developing An Application For Extending Access to Local Software Of A Wireless Device
US20090172137A1 (en) * 2001-11-30 2009-07-02 Qst Holdings, Llc Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US20040049609A1 (en) * 2002-08-29 2004-03-11 Peter Simonson Mechanism for integrating programmable devices into software based frameworks for distributed computing
US20040133704A1 (en) * 2003-01-07 2004-07-08 Openpeak Inc. Legacy device bridge for residential or non-residential networks
US20040194059A1 (en) * 2003-03-27 2004-09-30 International Business Machines Corporation Method to deploy software using an open service gateway initiative (OSGi) framework
US20050097203A1 (en) * 2003-10-30 2005-05-05 Nortel Networks Limited Autodiscovery for virtual networks
US20050114491A1 (en) * 2003-11-25 2005-05-26 Dennis Bushmitch SIP service for home network device and service mobility
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US20050149712A1 (en) * 2003-12-18 2005-07-07 International Business Machines Corporation Post-install configuration of modules during startup of a modular application platform
US20050144262A1 (en) * 2003-12-26 2005-06-30 Kang Dong O. Apparatus for home network middleware interoperability service using home gateway and OSGi platform and method thereof
US20050154785A1 (en) * 2004-01-09 2005-07-14 Reed Benjamin C. Method and system of mapping at least one web service to at least one OSGi service and exposing at least one local service as at least one web service
US20050195390A1 (en) * 2004-02-25 2005-09-08 Samsung Electronics Co., Ltd. Method of testing open services gateway initiative service platform and test tool using the method
US20050193388A1 (en) * 2004-02-26 2005-09-01 International Business Machines Corporation Method, system and program product for controlling native applications using open service gateway initiative (OSGi) bundles
US20050223101A1 (en) * 2004-03-22 2005-10-06 International Business Machines Corporation Computer-implemented method, system and program product for resolving prerequisites for native applications utilizing an open service gateway initiative ( OSGi) framework
US20050232283A1 (en) * 2004-03-26 2005-10-20 Stanley Moyer Bridging local device communications across the wide area
US20060025132A1 (en) * 2004-04-16 2006-02-02 Jeyhan Karaoguz Remote configuration and control of local devices via a broadband access gateway
US20090113088A1 (en) * 2004-06-08 2009-04-30 Dartdevices Corporation Method and device for interoperability in heterogeneous device environment
US20060067341A1 (en) * 2004-09-09 2006-03-30 Barber Ronald W Method, system and computer program using standard interfaces for independent device controllers
US20070192818A1 (en) * 2004-10-12 2007-08-16 Mikael Bourges-Sevenier System and method for creating, distributing, and executing rich multimedia applications
US7797698B2 (en) * 2004-11-17 2010-09-14 International Business Machines Corporation Method and apparatus for dynamic middleware assembly
US20060140199A1 (en) * 2004-12-28 2006-06-29 Matsushita Electric Industrial Co., Ltd. SIP/UPnP bridging middleware architecture for a service gateway framework
US20060159110A1 (en) * 2005-01-17 2006-07-20 Samsung Electronics Co., Ltd. Open service gateway initiative-based home gateway apparatus and device registration method thereof
US20060184615A1 (en) * 2005-02-16 2006-08-17 Samsung Electronics Co., Ltd. Service framework for home network
US20060209857A1 (en) * 2005-03-15 2006-09-21 Bellsouth Intellectual Property Corporation Broadband home applications gateway/residential gateway systems, methods and computer program products
US20060233126A1 (en) * 2005-03-24 2006-10-19 Nokia Corporation Managing midlet suites in OSGI environment
US20070043550A1 (en) * 2005-08-16 2007-02-22 Tzruya Yoav M System and method for providing a remote user interface for an application executing on a computing device
US20070067062A1 (en) * 2005-08-22 2007-03-22 Mairs Susan M Building automation system facilitating user customization
US20080256225A1 (en) * 2005-12-08 2008-10-16 Youngho Suh Osgi-Based Dynamic Service Management Method for Context-Aware Systems
US20070236346A1 (en) * 2006-02-21 2007-10-11 Abdelsalam Helal Modular Platform Enabling Heterogeneous Devices, Sensors and Actuators to Integrate Automatically Into Heterogeneous Networks
US20070240134A1 (en) * 2006-02-28 2007-10-11 Joydeep Buragohain Software packaging model supporting multiple entity types
US20070233881A1 (en) * 2006-03-31 2007-10-04 Zoltan Nochta Active intervention in service-to-device mapping for smart items
US20070294385A1 (en) * 2006-06-08 2007-12-20 Vivek Kapadekar Device management in a network
US20080095179A1 (en) * 2006-10-20 2008-04-24 Kuen-Ming Lee System And Method For Controlling The Devices Connected To Control Gateway
US20080178198A1 (en) * 2007-01-22 2008-07-24 Media Ripple, Llc Distributed digital media management
US20090031396A1 (en) * 2007-07-24 2009-01-29 Samsung Electronics Co., Ltd. METHOD OF AND APPARATUS FOR MANAGING ACCESS PRIVILEGES IN CLDC OSGi ENVIRONMENT
US20090125612A1 (en) * 2007-11-08 2009-05-14 Christian Rabetge Configuration domains for the configuration of web services and consumer proxies
US20090144728A1 (en) * 2007-12-04 2009-06-04 Bea Systems, Inc. Module based software system linking runtime to install time
US20090171484A1 (en) * 2007-12-29 2009-07-02 Amx, Llc Self-describing device module and system and computer-readable medium for the production thereof

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Redondo, RP Diaz, et al. "Enhancing residential gateways: OSGi service composition." IEEE Transactions on Consumer Electronics 53.1 (2007). *

Also Published As

Publication number Publication date
US20140371879A1 (en) 2014-12-18
US9792113B2 (en) 2017-10-17
US20160004532A1 (en) 2016-01-07
US20090171475A1 (en) 2009-07-02
US20090171484A1 (en) 2009-07-02
US20170293279A1 (en) 2017-10-12
US8825880B2 (en) 2014-09-02
US8316343B2 (en) 2012-11-20
US20180039495A1 (en) 2018-02-08
US20090171474A1 (en) 2009-07-02
US20120283852A1 (en) 2012-11-08
US8230113B2 (en) 2012-07-24
US8954541B2 (en) 2015-02-10
US9134719B2 (en) 2015-09-15
US9690574B2 (en) 2017-06-27
US20130074031A1 (en) 2013-03-21

Similar Documents

Publication Publication Date Title
US8954541B2 (en) Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules
US8407349B2 (en) Discovering and identifying manageable information technology resources
US7171659B2 (en) System and method for configurable software provisioning
US8479153B2 (en) Abstracting transformation for model driven architecture
US7085851B2 (en) SNMP interface to existing resource management extension-enabled management agents
US20120109383A1 (en) Dynamically extensible and automatically configurable building automation system and architecture
US20060095551A1 (en) Extensible service processor architecture
US20080256225A1 (en) Osgi-Based Dynamic Service Management Method for Context-Aware Systems
US20050066086A1 (en) Generic emulator of devices in a device communications protocol
US7770159B2 (en) Virtual types
CN116088855B (en) Development method, development device, electronic device, and storage medium
US7734640B2 (en) Resource discovery and enumeration in meta-data driven instrumentation
WO2009086524A1 (en) Development and deployment of self-describing controlled device modules in a control system
US20080040466A1 (en) System and method for object-oriented meta-data driven instrumentation
US7562084B2 (en) System and method for mapping between instrumentation and information model
JP2008287699A (en) Extensible system for network discovery
US20120317538A1 (en) Apparatus for Intermediating Network Operators and Developers
US20070299846A1 (en) System and method for meta-data driven instrumentation
Giannakakis Adopting Existing Communication Platforms for Security Enabling Technologies
Lampe et al. Generic adaptation of Jini services
KR101195535B1 (en) COMPUTER-READABLE RECORDING MEDIUM HAVING GENERAL UPnP MIDDLEWARE ADAPTOR PROGRAM AND CONTROL METHOD USING THE SAME
Lednicki Component-based development for software and hardware components
Anantalapochai et al. Integration of BACNET OPC UA-Devices Using a JAVA OPC UA SDK Server with BACNET Open Source Library Implementation
US20070299847A1 (en) System and method for instrumentation using a native-asset-interface repository
US20110208856A1 (en) Method for Intermediating Network Operators and Developers

Legal Events

Date Code Title Description
STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

AS Assignment

Owner name: HARMAN PROFESSIONAL, INC., CALIFORNIA

Free format text: MERGER AND CHANGE OF NAME;ASSIGNORS:AMX LLC;HARMAN PROFESSIONAL, INC.;REEL/FRAME:049976/0124

Effective date: 20180723

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION