app/src/main/java/org/mcopenplatform/muoapi/Engine.java
c732d49e
 /*
  *
74ca6d11
  *   Copyright (C) 2020, University of the Basque Country (UPV/EHU)
c732d49e
  *
  *  Contact for licensing options: <licensing-mcpttclient(at)mcopenplatform(dot)com>
  *
  *  This file is part of MCOP MCPTT Client
  *
  *  This is free software: you can redistribute it and/or modify it under the terms of
  *  the GNU General Public License as published by the Free Software Foundation, either version 3
  *  of the License, or (at your option) any later version.
  *
  *  This is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  *  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  *  See the GNU General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License along
  *  with this program; if not, write to the Free Software Foundation, Inc.,
  *  59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
 
 package org.mcopenplatform.muoapi;
 
 import android.content.Context;
 import android.content.Intent;
 import android.os.IBinder;
 import android.util.Log;
 
 import org.mcopenplatform.muoapi.utils.Utils;
 
 import java.util.ArrayList;
 
 
 public class Engine {
 
     private final static String TAG = Utils.getTAG(Engine.class.getCanonicalName());
     private static Engine sInstance;
     private static ArrayList<ManagerClient> mClients;
     private static int NUM_MAX_CLIENT=1;
 
     public static Engine getInstance(){
         if(sInstance == null){
             sInstance = new Engine();
         }
         return sInstance;
     }
 
     public Engine() {
         mClients=new ArrayList<>();
         Log.d(TAG,"Start engine SDK MCOP");
     }
 
175b478c
     protected IBinder newClient(Intent intent,Context context,boolean isRebind){
c732d49e
         IBinder result=null;
175b478c
         ManagerClient managerClient=null;
         if(mClients.size()==NUM_MAX_CLIENT){
             managerClient=mClients.get(0);
         }if(mClients.size()<NUM_MAX_CLIENT){
c732d49e
             Log.d(TAG,"Create new client");
175b478c
 
             String connectivityPluginPackageMain  = intent.getStringExtra(ConstantsMCOP.CONNECTIVITY_PLUGIN_PACKAGE_ID);
             String connectivityPluginPackageService = intent.getStringExtra(ConstantsMCOP.CONNECTIVITY_PLUGIN_SERVICE_ID);
             String simPluginPackageMain  = intent.getStringExtra(ConstantsMCOP.SIM_PLUGIN_PACKAGE_ID);
             String simPluginPackageService = intent.getStringExtra(ConstantsMCOP.SIM_PLUGIN_SERVICE_ID);
             String configurationPluginPackageMain  = intent.getStringExtra(ConstantsMCOP.CONFIGURATION_PLUGIN_PACKAGE_ID);
             String configurationPluginPackageService = intent.getStringExtra(ConstantsMCOP.CONFIGURATION_PLUGIN_SERVICE_ID);
             String mbmsPluginPackageMain = intent.getStringExtra(ConstantsMCOP.MBMS_PLUGIN_PACKAGE_ID);
             String mbmsPluginPackageService = intent.getStringExtra(ConstantsMCOP.MBMS_PLUGIN_SERVICE_ID);
             managerClient=new ManagerClient(context
             ,connectivityPluginPackageService
             ,connectivityPluginPackageMain
             ,simPluginPackageService
             ,simPluginPackageMain
             ,configurationPluginPackageService
             ,configurationPluginPackageMain
             ,mbmsPluginPackageService
             ,mbmsPluginPackageMain
             );
c732d49e
             mClients.add(managerClient);
175b478c
 
c732d49e
         }else{
             Log.e(TAG,"The number of users of the server to exceeded the allowed maximum number");
         }
175b478c
 
         //Test
         //Only in demo
         String userSelect=null;
         if(managerClient!=null && (userSelect=intent.getStringExtra("PROFILE_SELECT"))!=null && !userSelect.trim().isEmpty()){
             Log.d(TAG,"Select profile:"+userSelect);
             managerClient.selectProfileMCOP2(userSelect);
         }
         if(managerClient!=null)
         result=managerClient.startManagerClient(isRebind);
c732d49e
         return result;
     }
 
     public boolean stopClients(){
         boolean success=false;
         if(mClients!=null){
             success=true;
             for(ManagerClient managerClient:mClients){
                 success &=managerClient.stopManagerClient();
175b478c
                 //mClients.remove(managerClient);
c732d49e
             }
         }
         return success;
     }
 
     public boolean onDestroyClients(){
         boolean success=false;
         if(mClients!=null){
             success=true;
             for(ManagerClient managerClient:mClients){
                 success &=managerClient.onDestroyClient();
175b478c
                 //mClients.remove(managerClient);
c732d49e
             }
         }
         return success;
     }
 
 
 
 
 }