blob: fe864f5af857943f64eb1ff8c8cf6b4bc9a21a4a [file] [log] [blame]
/*
* Copyright 2021 HIMSA II K/S - www.himsa.com.
* Represented by EHIMA - www.ehima.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include "base/callback.h"
#include "bind_helpers.h"
#include "bta/include/bta_groups.h"
#include "hardware/bt_csis.h"
namespace bluetooth {
namespace csis {
using CsisLockCb = base::OnceCallback<void(int group_id, bool locked,
CsisGroupLockStatus status)>;
class CsisClient {
public:
virtual ~CsisClient() = default;
static void Initialize(bluetooth::csis::CsisClientCallbacks* callbacks,
base::Closure initCb);
static void AddFromStorage(const RawAddress& addr,
const std::vector<uint8_t>& in, bool autoconnect);
static bool GetForStorage(const RawAddress& addr, std::vector<uint8_t>& out);
static void CleanUp();
static CsisClient* Get();
static void DebugDump(int fd);
static bool IsCsisClientRunning();
virtual void Connect(const RawAddress& addr) = 0;
virtual void Disconnect(const RawAddress& addr) = 0;
virtual void RemoveDevice(const RawAddress& address) = 0;
virtual int GetGroupId(
const RawAddress& addr,
bluetooth::Uuid uuid = bluetooth::groups::kGenericContextUuid) = 0;
virtual void LockGroup(int group_id, bool lock, CsisLockCb cb) = 0;
virtual std::vector<RawAddress> GetDeviceList(int group_id) = 0;
};
} // namespace csis
} // namespace bluetooth