1ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak/* 2ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * Copyright (c) 2015, Motorola Mobility LLC 3ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * All rights reserved. 4ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * 5ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * Redistribution and use in source and binary forms, with or without 6ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * modification, are permitted provided that the following conditions are met: 7ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * - Redistributions of source code must retain the above copyright 8ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * notice, this list of conditions and the following disclaimer. 9ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * - Redistributions in binary form must reproduce the above copyright 10ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * notice, this list of conditions and the following disclaimer in the 11ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * documentation and/or other materials provided with the distribution. 12ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * - Neither the name of Motorola Mobility nor the 13ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * names of its contributors may be used to endorse or promote products 14ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * derived from this software without specific prior written permission. 15ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * 16ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 18ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MOTOROLA MOBILITY LLC BE LIABLE 20ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 26ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * DAMAGE. 27ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak */ 28ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 29ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakpackage com.android.service.ims.presence; 30ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 31ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport android.content.BroadcastReceiver; 32ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport android.content.Context; 33ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport android.content.Intent; 34ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 35ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport com.android.ims.internal.Logger; 36ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 37ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport com.android.service.ims.RcsStackAdaptor; 38ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport com.android.service.ims.TaskManager; 39ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 40ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakpublic class AlarmBroadcastReceiver extends BroadcastReceiver{ 41ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private Logger logger = Logger.getLogger(this.getClass().getName()); 42ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 43ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private static final String ACTION_RETRY_ALARM = 44ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak RcsStackAdaptor.ACTION_RETRY_ALARM; 45ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private static final String ACTION_TASK_TIMEOUT_ALARM = 46ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak PresenceCapabilityTask.ACTION_TASK_TIMEOUT_ALARM; 47ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private static final String ACTION_RETRY_PUBLISH_ALARM = 48ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak PresencePublication.ACTION_RETRY_PUBLISH_ALARM; 49ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 50ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak @Override 51ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public void onReceive(Context context, Intent intent) { 52ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak String action = intent.getAction(); 53ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak logger.info("onReceive intent: " + action); 54ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 55ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak // this could happen when there is a crash and the previous broadcasted intent 56ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak // coming when the PresenceService is launching. 57ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak RcsStackAdaptor rcsStackAdaptor = RcsStackAdaptor.getInstance(null); 58ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if(rcsStackAdaptor == null){ 59ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak logger.debug("rcsStackAdaptor=null"); 60ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return; 61ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 62ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 63ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if(ACTION_RETRY_ALARM.equals(action)) { 64ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak int times = intent.getIntExtra("times", -1); 65ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak rcsStackAdaptor.startInitThread(times); 66ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak }else if(ACTION_TASK_TIMEOUT_ALARM.equals(action)){ 67ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak int taskId = intent.getIntExtra("taskId", -1); 68ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak TaskManager.getDefault().onTimeout(taskId); 69ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } else if(ACTION_RETRY_PUBLISH_ALARM.equals(action)) { 70ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak // default retry is for 888 71ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak int sipCode = intent.getIntExtra("sipCode", 888); 72ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak PresencePublication publication = PresencePublication.getPresencePublication(); 73ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak if(publication != null) { 74ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak publication.retryPublish(); 75ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 76ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 77ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak else{ 78ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak logger.debug("not interest in intent=" + intent); 79ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 80ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 81ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak}; 82ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 83