
#include <bcmos_system.h>
#include <bcmtr_plugin.h>
#include "bcmolt_tr_ud.h"
#include "bcmolt_tr_nl.h"
#include "bcmtr_internal.h"

static bcmos_bool use_inband = BCMOS_FALSE;
void using_inband_set(bcmos_bool using_inband)
{
    use_inband = using_inband;
}
bcmos_bool using_inband_get(void)
{
    return use_inband;
}


/** Initialize plugin callbacks
 * \param[in,out]       driver Transport plugin driver structure
 * \return error code
 */
bcmos_errno bcmtr_plugin_init(bcmtr_plugin_cfg *plugin_cfg, bcmtr_driver *driver)
{
    bcmos_errno rc = BCM_ERR_NOT_SUPPORTED;

#ifdef SIMULATION_BUILD
    rc = bcmtr_plugin_init(plugin_cfg, driver);
#else
    if (using_inband_get())
    {
        rc = bcmtr_ud_plugin_init(plugin_cfg, driver);
    } else
    {
        rc = bcmtr_nl_plugin_init(plugin_cfg, driver);
    }
#endif

    return rc;
}
