ICommonTimeConfig.cpp revision 951bd8d1ad9581a414e171ad8605a9515d0ad667
1951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen/*
2951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen * Copyright (C) 2011 The Android Open Source Project
3951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen *
4951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen * Licensed under the Apache License, Version 2.0 (the "License");
5951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen * you may not use this file except in compliance with the License.
6951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen * You may obtain a copy of the License at
7951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen *
8951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen *      http://www.apache.org/licenses/LICENSE-2.0
9951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen *
10951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen * Unless required by applicable law or agreed to in writing, software
11951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen * distributed under the License is distributed on an "AS IS" BASIS,
12951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen * See the License for the specific language governing permissions and
14951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen * limitations under the License.
15951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen */
16951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen#include <linux/socket.h>
17951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
18951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen#include <common_time/ICommonTimeConfig.h>
19951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen#include <binder/Parcel.h>
20951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
21951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen#include "utils.h"
22951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
23951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chennamespace android {
24951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
25951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen/***** ICommonTimeConfig *****/
26951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
27951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chenenum {
28951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    GET_MASTER_ELECTION_PRIORITY = IBinder::FIRST_CALL_TRANSACTION,
29951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    SET_MASTER_ELECTION_PRIORITY,
30951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    GET_MASTER_ELECTION_ENDPOINT,
31951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    SET_MASTER_ELECTION_ENDPOINT,
32951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    GET_MASTER_ELECTION_GROUP_ID,
33951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    SET_MASTER_ELECTION_GROUP_ID,
34951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    GET_INTERFACE_BINDING,
35951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    SET_INTERFACE_BINDING,
36951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    GET_MASTER_ANNOUNCE_INTERVAL,
37951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    SET_MASTER_ANNOUNCE_INTERVAL,
38951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    GET_CLIENT_SYNC_INTERVAL,
39951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    SET_CLIENT_SYNC_INTERVAL,
40951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    GET_PANIC_THRESHOLD,
41951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    SET_PANIC_THRESHOLD,
42951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    GET_AUTO_DISABLE,
43951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    SET_AUTO_DISABLE,
44951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    FORCE_NETWORKLESS_MASTER_MODE,
45951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen};
46951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
47951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chenconst String16 ICommonTimeConfig::kServiceName("common_time.config");
48951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
49951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chenclass BpCommonTimeConfig : public BpInterface<ICommonTimeConfig>
50951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen{
51951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen  public:
52951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    BpCommonTimeConfig(const sp<IBinder>& impl)
53951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        : BpInterface<ICommonTimeConfig>(impl) {}
54951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
55951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t getMasterElectionPriority(uint8_t *priority) {
56951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
57951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
58951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(GET_MASTER_ELECTION_PRIORITY,
59951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
60951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
61951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
62951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
63951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
64951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                *priority = static_cast<uint8_t>(reply.readInt32());
65951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
66951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
67951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
68951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
69951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
70951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
71951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t setMasterElectionPriority(uint8_t priority) {
72951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
73951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
74951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInt32(static_cast<int32_t>(priority));
75951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(SET_MASTER_ELECTION_PRIORITY,
76951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
77951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
78951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
79951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
80951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
81951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
82951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
83951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
84951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
85951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t getMasterElectionEndpoint(struct sockaddr_storage *addr) {
86951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
87951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
88951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(GET_MASTER_ELECTION_ENDPOINT,
89951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
90951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
91951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
92951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
93951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
94951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                deserializeSockaddr(&reply, addr);
95951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
96951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
97951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
98951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
99951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
100951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
101951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t setMasterElectionEndpoint(
102951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            const struct sockaddr_storage *addr) {
103951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
104951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
105951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (!canSerializeSockaddr(addr))
106951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return BAD_VALUE;
107951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (NULL == addr) {
108951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            data.writeInt32(0);
109951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } else {
110951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            data.writeInt32(1);
111951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            serializeSockaddr(&data, addr);
112951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
113951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(SET_MASTER_ELECTION_ENDPOINT,
114951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
115951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
116951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
117951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
118951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
119951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
120951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
121951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
122951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
123951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t getMasterElectionGroupId(uint64_t *id) {
124951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
125951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
126951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(GET_MASTER_ELECTION_GROUP_ID,
127951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
128951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
129951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
130951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
131951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
132951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
133951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                *id = static_cast<uint64_t>(reply.readInt64());
134951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
135951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
136951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
137951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
138951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
139951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
140951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t setMasterElectionGroupId(uint64_t id) {
141951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
142951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
143951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInt64(id);
144951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(SET_MASTER_ELECTION_GROUP_ID,
145951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
146951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
147951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
148951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
149951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
150951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
151951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
152951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
153951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
154951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
155951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t getInterfaceBinding(String16& ifaceName) {
156951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
157951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
158951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(GET_INTERFACE_BINDING,
159951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
160951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
161951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
162951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
163951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
164951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                ifaceName = reply.readString16();
165951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
166951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
167951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
168951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
169951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
170951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
171951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t setInterfaceBinding(const String16& ifaceName) {
172951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
173951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
174951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeString16(ifaceName);
175951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(SET_INTERFACE_BINDING,
176951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
177951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
178951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
179951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
180951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
181951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
182951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
183951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
184951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
185951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t getMasterAnnounceInterval(int *interval) {
186951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
187951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
188951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(GET_MASTER_ANNOUNCE_INTERVAL,
189951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
190951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
191951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
192951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
193951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
194951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                *interval = reply.readInt32();
195951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
196951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
197951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
198951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
199951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
200951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
201951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t setMasterAnnounceInterval(int interval) {
202951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
203951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
204951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInt32(interval);
205951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(SET_MASTER_ANNOUNCE_INTERVAL,
206951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
207951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
208951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
209951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
210951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
211951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
212951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
213951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
214951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
215951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t getClientSyncInterval(int *interval) {
216951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
217951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
218951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(GET_CLIENT_SYNC_INTERVAL,
219951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
220951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
221951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
222951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
223951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
224951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                *interval = reply.readInt32();
225951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
226951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
227951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
228951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
229951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
230951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
231951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t setClientSyncInterval(int interval) {
232951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
233951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
234951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInt32(interval);
235951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(SET_CLIENT_SYNC_INTERVAL,
236951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
237951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
238951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
239951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
240951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
241951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
242951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
243951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
244951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
245951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t getPanicThreshold(int *threshold) {
246951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
247951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
248951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(GET_PANIC_THRESHOLD,
249951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
250951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
251951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
252951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
253951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
254951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                *threshold = reply.readInt32();
255951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
256951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
257951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
258951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
259951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
260951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
261951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t setPanicThreshold(int threshold) {
262951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
263951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
264951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInt32(threshold);
265951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(SET_PANIC_THRESHOLD,
266951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
267951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
268951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
269951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
270951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
271951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
272951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
273951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
274951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
275951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t getAutoDisable(bool *autoDisable) {
276951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
277951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
278951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(GET_AUTO_DISABLE,
279951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
280951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
281951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
282951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
283951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
284951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                *autoDisable = (0 != reply.readInt32());
285951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
286951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
287951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
288951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
289951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
290951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
291951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t setAutoDisable(bool autoDisable) {
292951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
293951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
294951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInt32(autoDisable ? 1 : 0);
295951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(SET_AUTO_DISABLE,
296951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
297951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
298951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
299951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
300951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
301951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
302951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
303951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
304951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
305951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
306951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    virtual status_t forceNetworklessMasterMode() {
307951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        Parcel data, reply;
308951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        data.writeInterfaceToken(ICommonTimeConfig::getInterfaceDescriptor());
309951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        status_t status = remote()->transact(FORCE_NETWORKLESS_MASTER_MODE,
310951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             data,
311951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                             &reply);
312951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
313951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        if (status == OK) {
314951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status = reply.readInt32();
315951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        }
316951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
317951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        return status;
318951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
319951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen};
320951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
321951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. ChenIMPLEMENT_META_INTERFACE(CommonTimeConfig, "android.os.ICommonTimeConfig");
322951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
323951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chenstatus_t BnCommonTimeConfig::onTransact(uint32_t code,
324951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                   const Parcel& data,
325951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                   Parcel* reply,
326951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                                   uint32_t flags) {
327951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    switch(code) {
328951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case GET_MASTER_ELECTION_PRIORITY: {
329951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
330951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            uint8_t priority;
331951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = getMasterElectionPriority(&priority);
332951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
333951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
334951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                reply->writeInt32(static_cast<int32_t>(priority));
335951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
336951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
337951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
338951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
339951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case SET_MASTER_ELECTION_PRIORITY: {
340951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
341951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            uint8_t priority = static_cast<uint8_t>(data.readInt32());
342951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = setMasterElectionPriority(priority);
343951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
344951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
345951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
346951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
347951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case GET_MASTER_ELECTION_ENDPOINT: {
348951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
349951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            struct sockaddr_storage addr;
350951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = getMasterElectionEndpoint(&addr);
351951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
352951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if ((status == OK) && !canSerializeSockaddr(&addr)) {
353951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                status = UNKNOWN_ERROR;
354951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
355951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
356951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
357951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
358951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
359951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                serializeSockaddr(reply, &addr);
360951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
361951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
362951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
363951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
364951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
365951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case SET_MASTER_ELECTION_ENDPOINT: {
366951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
367951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            struct sockaddr_storage addr;
368951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            int hasAddr = data.readInt32();
369951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
370951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status;
371951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (hasAddr) {
372951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                deserializeSockaddr(&data, &addr);
373951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                status = setMasterElectionEndpoint(&addr);
374951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            } else {
375951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                status = setMasterElectionEndpoint(&addr);
376951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
377951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
378951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
379951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
380951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
381951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
382951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case GET_MASTER_ELECTION_GROUP_ID: {
383951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
384951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            uint64_t id;
385951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = getMasterElectionGroupId(&id);
386951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
387951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
388951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                reply->writeInt64(id);
389951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
390951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
391951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
392951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
393951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case SET_MASTER_ELECTION_GROUP_ID: {
394951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
395951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            uint64_t id = static_cast<uint64_t>(data.readInt64());
396951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = setMasterElectionGroupId(id);
397951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
398951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
399951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
400951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
401951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case GET_INTERFACE_BINDING: {
402951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
403951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            String16 ret;
404951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = getInterfaceBinding(ret);
405951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
406951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
407951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                reply->writeString16(ret);
408951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
409951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
410951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
411951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
412951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case SET_INTERFACE_BINDING: {
413951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
414951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            String16 ifaceName;
415951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            ifaceName = data.readString16();
416951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = setInterfaceBinding(ifaceName);
417951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
418951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
419951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
420951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
421951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case GET_MASTER_ANNOUNCE_INTERVAL: {
422951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
423951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            int interval;
424951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = getMasterAnnounceInterval(&interval);
425951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
426951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
427951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                reply->writeInt32(interval);
428951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
429951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
430951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
431951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
432951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case SET_MASTER_ANNOUNCE_INTERVAL: {
433951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
434951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            int interval = data.readInt32();
435951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = setMasterAnnounceInterval(interval);
436951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
437951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
438951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
439951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
440951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case GET_CLIENT_SYNC_INTERVAL: {
441951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
442951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            int interval;
443951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = getClientSyncInterval(&interval);
444951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
445951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
446951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                reply->writeInt32(interval);
447951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
448951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
449951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
450951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
451951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case SET_CLIENT_SYNC_INTERVAL: {
452951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
453951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            int interval = data.readInt32();
454951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = setClientSyncInterval(interval);
455951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
456951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
457951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
458951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
459951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case GET_PANIC_THRESHOLD: {
460951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
461951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            int threshold;
462951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = getPanicThreshold(&threshold);
463951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
464951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
465951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                reply->writeInt32(threshold);
466951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
467951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
468951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
469951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
470951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case SET_PANIC_THRESHOLD: {
471951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
472951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            int threshold = data.readInt32();
473951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = setPanicThreshold(threshold);
474951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
475951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
476951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
477951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
478951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case GET_AUTO_DISABLE: {
479951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
480951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            bool autoDisable;
481951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = getAutoDisable(&autoDisable);
482951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
483951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            if (status == OK) {
484951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen                reply->writeInt32(autoDisable ? 1 : 0);
485951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            }
486951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
487951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
488951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
489951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case SET_AUTO_DISABLE: {
490951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
491951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            bool autoDisable = (0 != data.readInt32());
492951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = setAutoDisable(autoDisable);
493951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
494951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
495951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
496951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
497951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        case FORCE_NETWORKLESS_MASTER_MODE: {
498951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            CHECK_INTERFACE(ICommonTimeConfig, data, reply);
499951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            status_t status = forceNetworklessMasterMode();
500951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            reply->writeInt32(status);
501951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen            return OK;
502951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen        } break;
503951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    }
504951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen    return BBinder::onTransact(code, data, reply, flags);
505951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen}
506951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
507951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen}; // namespace android
508951bd8d1ad9581a414e171ad8605a9515d0ad667Mike J. Chen
509