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