100d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon/*
200d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * Copyright (C) 2013 The Android Open Source Project
300d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon *
400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License");
500d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * you may not use this file except in compliance with the License.
600d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * You may obtain a copy of the License at
700d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon *
800d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon *      http://www.apache.org/licenses/LICENSE-2.0
900d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon *
1000d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * Unless required by applicable law or agreed to in writing, software
1100d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS,
1200d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1300d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * See the License for the specific language governing permissions and
1400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * limitations under the License.
1500d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon */
1600d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon
1700d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordonpackage com.android.phone;
1800d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon
19cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordonimport android.app.PendingIntent;
2000d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordonimport android.app.Service;
2100d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordonimport android.content.Intent;
2200d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordonimport android.os.IBinder;
2300d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordonimport android.util.Log;
2400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon
2500d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon/**
2600d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon * Service for performing HfaActivation without any UI.
2700d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon */
2800d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordonpublic class HfaService extends Service {
2900d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon    private static final String TAG = HfaService.class.getSimpleName();
3000d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon
31fea89c31ed08c16f230b8d2b6f5ae3b14c032567Wink Saville    private HfaLogic mHfaLogic;
32fea89c31ed08c16f230b8d2b6f5ae3b14c032567Wink Saville
3300d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon    @Override
3400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon    public void onCreate() {
35cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon        Log.i(TAG, "service started");
36cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon    }
37cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon
38cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon    @Override
39cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon    public int onStartCommand(Intent intent, int flags, int startId) {
40cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon        final PendingIntent otaResponseIntent = intent.getParcelableExtra(
41cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon                OtaUtils.EXTRA_OTASP_RESULT_CODE_PENDING_INTENT);
42cd76f8b160e0e4b2e5ccf34c0c5e1e58a0bb8b72Santos Cordon
43fea89c31ed08c16f230b8d2b6f5ae3b14c032567Wink Saville        mHfaLogic = new HfaLogic(this, new HfaLogic.HfaLogicCallback() {
4400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon            @Override
4500d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon            public void onSuccess() {
4600d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon                Log.i(TAG, "onSuccess");
4700d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon                onComplete();
4800d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon            }
4900d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon
5000d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon            @Override
5100d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon            public void onError(String msg) {
5200d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon                Log.i(TAG, "onError: " + msg);
5300d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon                // We do not respond from this service. On success or failure
5400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon                // we do the same thing...finish.
5500d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon                onComplete();
5600d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon            }
57fea89c31ed08c16f230b8d2b6f5ae3b14c032567Wink Saville        }, otaResponseIntent);
58fea89c31ed08c16f230b8d2b6f5ae3b14c032567Wink Saville        mHfaLogic.start();
5900d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon
600a71a2acc39669fb5ec79a47db0828bc4474c8ecEvan Charlton        return START_REDELIVER_INTENT;
6100d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon    }
6200d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon
6300d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon    @Override
6400d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon    public IBinder onBind(Intent intent) {
6500d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon        return null;
6600d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon    }
6700d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon
6800d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon    private void onComplete() {
6900d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon        stopSelf();
7000d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon    }
7100d7a430ac98cd65b7ae3afca5fa9509f1480edaSantos Cordon}
72