[[TracNav(WARPLab/TOC)]] = WARPLab Modules = The WARPLab Framework consists of 5 core modules: the {{{Node}}}, the {{{Baseband}}}, the {{{Interface Group}}}, the {{{Transport}}}, the {{{Trigger Manager}}}, and {{{User Extensions}}}. [[Image(typical.png,width=800)]] The above figure shows how these 5 modules relate to one another in the context of a typical WARPLab example script. A module generally consists of two paired components: a software and hardware design that runs on the board coupled with a MATLAB class that is used to issue commands and handle responses from the hardware/software pair that runs on the board. Additionally, the figure shows another framework element, the {{{Trigger}}}, which is not a part of a WARPLab node, but is one way of coordinating action among the multiple nodes in a WARPLab experiment. === Node === A {{{Node}}} module is responsible for broker commands to other modules within the node and collect responses to those commands to deliver back to the user. The other modules in the system belong to the {{{Node}}} module. Furthermore, the {{{Node}}} may also process commands for the node itself and not any of the other modules. The WARPLab Reference Design's implementation of a {{{Node}}} module is [wiki:../../Reference/Node described here]. === Baseband === A {{{Baseband}}} module is the processing component that is meant to deal with the samples being sent to and from the radio interfaces available to a node. The WARPLab Reference Design's implementations of a {{{Baseband}}} modules are [wiki:../../Reference/Baseband described here]. The MATLAB implementation of {{{Baseband}}} modules are intended to inherit from the [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_baseband.m wl_baseband.m] abstract class. === Interface Group === An {{{Interface Group}}} module is the processing component that deals with configuring radio interfaces. The WARPLab Reference Design's implementations of a {{{Interface Group}}} modules are [wiki:../../Reference/Interface described here]. The MATLAB implementation of {{{Interface Group}}} modules are intended to inherit from the [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_interface_group.m wl_interface_group.m] abstract class. === Transport === A {{{Transport}}} module is responsible for handling messages to and from the WARP hardware. Typically, these messages are exchanged with a host PC. The WARPLab Reference Design's implementations of a {{{Transport}}} modules are [wiki:../../Reference/Transport described here]. A {{{Transport}}} is an object from the [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_transport.m wl_transport] abstract class. === Trigger Manager === A {{{Trigger Manager}}} module is responsible for managing how a WARP node's actions are coordinated with other nodes that are in an experiment. The WARPLab Reference Design's implementations of a {{{Trigger Manager}}} modules are [wiki:../../Reference/TriggerManager described here]. The MATLAB implementation of {{{Trigger Manager}}} modules are intended to inherit from the [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_trigger_manager.m wl_trigger_manager.m] abstract class. == User Extension == A {{{User Extension}}} is meant to deal with extra commands in a WARPLab design that may not be covered by the other modules. By design, the WARPLab Reference Design does not have an implementation of a user extension. Instead, users can add their own module to the WARPLab Reference Design for easy customization. The MATLAB implementation of {{{User Extension}}} modules are intended to inherit from the [browser:ResearchApps/PHY/WARPLAB/WARPLab7/M_Code_Reference/classes/wl_user_ext.m wl_user_ext.m] class.