IPOP Controller Framework - GingerNinja23/ipop-notes GitHub Wiki

IPOP Controller Framework

  • Current controllers are not so extensible, so we need a event-driven framework that provides a platform to write new controllers.
  • Different controller modules should be created, which can be easily plugged into a Controller
  • Controllers use these pluggable module depending on the requirement.
  • Components : Control Framework and Controller Modules.
  • CFx maintains the track of all registered modules and maintains the status of loaded modules. Dynamic module loading achieved through the Interface??
  • CFx provides an interface for the user to Load/Unload and Terminate CFx. How can this be achieved ?
  • CFx should also be facilitating inter-modular message passing.
Communication between the modules:
  • This can be achieved using Controller Brokered Tasks (CBTs)
  • CFx requests a controller module by creating a CBT, which is handled by the module asynchronously. CBT gives the input parameters to the module.
  • Once the CBT is updated with the output of the requested module, and CFx is notified.
  • In some cases some controller modules depend on other controller modules. In such cases the module would create a CBT, specifying what it needs. This CBT is sent to CFx which then sends it to the appropriate module. Once the recipient module finishes processing, CBT is updated and sent to CFx.
  • Modules do not know each other's existence. CBT is a broker agent.
  • It's the responsibility of CFx to notify the Initiating module about the completion of its CBT.

Tasks that a controller module can perform:

  1. Receive a request to perform a task
  2. Request services from other modules
  3. Get notification of their completion
  4. Notify the CFx of the completion of its operation