16c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen/* * Copyright (C) 2012 The Android Open Source Project
26c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen *
36c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen * Licensed under the Apache License, Version 2.0 (the "License");
46c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen * you may not use this file except in compliance with the License.
56c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen * You may obtain a copy of the License at
66c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen *
76c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen *      http://www.apache.org/licenses/LICENSE-2.0
86c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen *
96c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen * Unless required by applicable law or agreed to in writing, software
106c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen * distributed under the License is distributed on an "AS IS" BASIS,
116c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
126c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen * See the License for the specific language governing permissions and
136c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen * limitations under the License.
146c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen */
156c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen
166c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen#ifndef ANDROID_COMMON_TIME_CONFIG_SERVICE_H
176c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen#define ANDROID_COMMON_TIME_CONFIG_SERVICE_H
186c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen
19778c859bfdcce2fa6658c09e65656afc34d3b4e0Elliott Hughes#include <sys/socket.h>
20778c859bfdcce2fa6658c09e65656afc34d3b4e0Elliott Hughes#include <common_time/ICommonTimeConfig.h>
21778c859bfdcce2fa6658c09e65656afc34d3b4e0Elliott Hughes
226c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chennamespace android {
236c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen
246c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chenclass String16;
256c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chenclass CommonTimeServer;
266c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen
276c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chenclass CommonTimeConfigService : public BnCommonTimeConfig {
286c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen  public:
296c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    static sp<CommonTimeConfigService> instantiate(CommonTimeServer& timeServer);
306c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen
316c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t dump(int fd, const Vector<String16>& args);
326c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen
336c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t getMasterElectionPriority(uint8_t *priority);
346c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t setMasterElectionPriority(uint8_t priority);
356c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t getMasterElectionEndpoint(struct sockaddr_storage *addr);
366c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t setMasterElectionEndpoint(const struct sockaddr_storage *addr);
376c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t getMasterElectionGroupId(uint64_t *id);
386c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t setMasterElectionGroupId(uint64_t id);
396c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t getInterfaceBinding(String16& ifaceName);
406c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t setInterfaceBinding(const String16& ifaceName);
416c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t getMasterAnnounceInterval(int *interval);
426c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t setMasterAnnounceInterval(int interval);
436c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t getClientSyncInterval(int *interval);
446c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t setClientSyncInterval(int interval);
456c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t getPanicThreshold(int *threshold);
466c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t setPanicThreshold(int threshold);
476c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t getAutoDisable(bool *autoDisable);
486c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t setAutoDisable(bool autoDisable);
496c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    virtual status_t forceNetworklessMasterMode();
506c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen
516c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen  private:
526c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    CommonTimeConfigService(CommonTimeServer& timeServer)
536c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen        : mTimeServer(timeServer) { }
546c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen    CommonTimeServer& mTimeServer;
556c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen
566c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen};
576c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen
586c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen};  // namespace android
596c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen
606c929510474caa14dc9d56826b2c65552861d6b3Mike J. Chen#endif  // ANDROID_COMMON_TIME_CONFIG_SERVICE_H
61