1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.car;
18 
19 import com.android.car.internal.util.IndentingPrintWriter;
20 
21 /**
22  * Base class for all Car specific services.
23  */
24 
25 // Note: VehicleHal and CarStatsService will implement CarSystemService directly.
26 // All other Car services will implement CarServiceBase which is a "marker" interface that
27 // extends CarSystemService. This makes it easy for ICarImpl to handle dump differently
28 // for VehicleHal and CarStatsService.
29 public interface CarSystemService {
30 
31     /**
32      * Initializes the service.
33      * <p>All necessary initialization should be done and service should be
34      * functional after this.
35      */
init()36     void init();
37 
38     /**
39      * Called when all other CarSystemService init completes.
40      */
onInitComplete()41     default void onInitComplete() {}
42 
43     /** Releases all reources to stop the service. */
release()44     void release();
45 
46     /** Dumps its state. */
dump(IndentingPrintWriter writer)47     void dump(IndentingPrintWriter writer);
48 }
49