app/src/main/java/org/mcopenplatform/muoapi/managerIapi/EngineIapi.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.managerIapi;
 
 import android.content.Context;
 import android.util.Log;
 
 import org.mcopenplatform.muoapi.utils.Utils;
 import org.mcopenplatform.muoapi.BuildConfig;
 
 
 public class EngineIapi {
     private final static String TAG = Utils.getTAG(EngineIapi.class.getCanonicalName());
     private static EngineIapi sInstance;
     private boolean mStarted;
     private ManagerSimService mManagerSimService;
     private ManagerConfigurationService mManagerConfigurationService;
     private ManagerConnectivityService mManagerConnectivityService;
     private ManagerMBMSGroupCom mManagerMBMSGroupCom;
 
     public static EngineIapi getInstance(){
         if(sInstance == null){
             sInstance = new EngineIapi();
         }
         return sInstance;
     }
 
     public EngineIapi() {
         if(BuildConfig.DEBUG)Log.d(TAG,"Start IAPI Engine");
     }
 
175b478c
     public synchronized boolean start(Context context
             ,String connectivityPluginPackageService
             ,String connectivityPluginPackageMain
             ,String simPluginPackageService
             ,String simPluginPackageMain
             ,String configurationPluginPackageService
             ,String configurationPluginPackageMain
             ,String mbmsPluginPackageService
             ,String mbmsPluginPackageMain
     ){
c732d49e
         if(mStarted){
             if(BuildConfig.DEBUG)Log.e(TAG,"Started");
             return true;
         }
         boolean success = true;
         //TODO: Error to the start the service ConfigurationService
175b478c
         success &= getConfigurationService().start(context
                 ,configurationPluginPackageService
                 ,configurationPluginPackageMain
         );
         success &= getConnectivityService().start(context
                 ,connectivityPluginPackageService
                 ,connectivityPluginPackageMain
         );
         success &= getSimService().start(context
                 ,simPluginPackageService
                 ,simPluginPackageMain
         );
         success &= getMBMSGroupCom().start(context
                 ,mbmsPluginPackageService
                 ,mbmsPluginPackageMain
         );
c732d49e
         mStarted = true;
         return success;
     }
 
     public synchronized boolean isStarted(){
         return mStarted;
     }
 
     public synchronized boolean stop() {
         if(!mStarted){
             if(BuildConfig.DEBUG)Log.e(TAG,"Stopped");
             return true;
         }
         boolean success = true;
         success &= getConfigurationService().stop();
         success &= getConnectivityService().stop();
         success &= getSimService().stop();
         success &= getMBMSGroupCom().stop();
 
         if(!success){
             Log.e(TAG, "Failed to stop Services");
         }
         mStarted = false;
         return success;
     }
 
     public ManagerSimService getSimService(){
         if(mManagerSimService == null){
             mManagerSimService = new ManagerSimService();
         }
         return mManagerSimService;
     }
 
     public ManagerConfigurationService getConfigurationService(){
         if(mManagerConfigurationService == null){
             mManagerConfigurationService = new ManagerConfigurationService();
         }
         return mManagerConfigurationService;
     }
 
     public ManagerConnectivityService getConnectivityService(){
         if(mManagerConnectivityService == null){
             mManagerConnectivityService = new ManagerConnectivityService();
         }
         return mManagerConnectivityService;
     }
 
     public ManagerMBMSGroupCom getMBMSGroupCom(){
         if(mManagerMBMSGroupCom == null){
             mManagerMBMSGroupCom = new ManagerMBMSGroupCom();
         }
         return mManagerMBMSGroupCom;
     }
 
     public boolean isConnects() {
         if(!mStarted){
             return false;
         }
         boolean success = true;
         success &= getConfigurationService().isConnect();
         success &= getConnectivityService().isConnect();
         success &= getSimService().isConnect();
         success &= getMBMSGroupCom().isConnect();
         return success;
     }
 }