diff --git a/wifi_offload/Android.bp b/wifi_offload/Android.bp index 646994d4..2536d60d 100644 --- a/wifi_offload/Android.bp +++ b/wifi_offload/Android.bp @@ -21,6 +21,7 @@ cc_binary { "service.cpp", "chre_constants.cpp", "chre_interface.cpp", + "offload_server.cpp", ], cflags: ["-Wall", "-Wextra"], shared_libs: [ diff --git a/wifi_offload/offload_server.cpp b/wifi_offload/offload_server.cpp new file mode 100644 index 00000000..6c2e9250 --- /dev/null +++ b/wifi_offload/offload_server.cpp @@ -0,0 +1,75 @@ +#include "offload_server.h" + +#include + +#include + +namespace android { +namespace hardware { +namespace wifi { +namespace offload { +namespace V1_0 { +namespace implementation { + +class OffloadServer; + +OffloadServer::OffloadServer() : mChreInterfaceCallbacks(new ChreInterfaceCallbacksImpl(this)) { + LOG(VERBOSE) << "Wifi Offload HAL impl"; +} + +bool OffloadServer::configureScans(const ScanParam& param, const ScanFilter& filter) { + LOG(INFO) << "configureScans"; + return true; +} + +std::pair OffloadServer::getScanStats() { + LOG(INFO) << "getScanStats"; + return std::make_pair(mScanStats, true); +} + +bool OffloadServer::subscribeScanResults(uint32_t delayMs) { + LOG(INFO) << "subscribeScanResults with delay:" << delayMs; + return true; +} + +bool OffloadServer::unsubscribeScanResults() { + LOG(INFO) << "unsubscribeScanResults"; + return true; +} + +bool OffloadServer::setEventCallback(const sp& cb) { + LOG(INFO) << "Set Event callback"; + bool result = false; + if (cb != nullptr) { + mEventCallback = cb; + result = true; + } else { + LOG(WARNING) << "Invalid callback object"; + } + return result; +} + +ChreInterfaceCallbacksImpl::ChreInterfaceCallbacksImpl(OffloadServer* server) : mServer(server) { +} + +ChreInterfaceCallbacksImpl::~ChreInterfaceCallbacksImpl() { +} + +void ChreInterfaceCallbacksImpl::handleConnectionEvents( + ChreInterfaceCallbacks::ConnectionEvent event) { + LOG(VERBOSE) << "Connection event received " << (int)event; +} + +void ChreInterfaceCallbacksImpl::handleMessage(uint32_t messageType, + const std::vector& message) { + LOG(VERBOSE) << "Message from Nano app " << messageType; +} + +// Methods from ::android::hidl::base::V1_0::IBase follow. + +} // namespace implementation +} // namespace V1_0 +} // namespace offload +} // namespace wifi +} // namespace hardware +} // namespace android diff --git a/wifi_offload/offload_server.h b/wifi_offload/offload_server.h new file mode 100644 index 00000000..c22c4a1e --- /dev/null +++ b/wifi_offload/offload_server.h @@ -0,0 +1,57 @@ +#ifndef WIFI_OFFLOAD_SERVER_H_ +#define WIFI_OFFLOAD_SERVER_H_ + +#include + +#include "chre_interface_callbacks.h" + +namespace android { +namespace hardware { +namespace wifi { +namespace offload { +namespace V1_0 { +namespace implementation { + +class OffloadServer; + +class ChreInterfaceCallbacksImpl : public ChreInterfaceCallbacks { + public: + ChreInterfaceCallbacksImpl(OffloadServer* server); + ~ChreInterfaceCallbacksImpl() override; + + void handleConnectionEvents(ChreInterfaceCallbacks::ConnectionEvent event); + void handleMessage(uint32_t messageType, const std::vector& message); + + private: + OffloadServer* mServer; +}; + +/** + * Interface object to communicate with Offload HAL + */ +class OffloadServer { + public: + OffloadServer(); + + bool configureScans(const ScanParam& param, const ScanFilter& filter); + std::pair getScanStats(); + bool subscribeScanResults(uint32_t delayMs); + bool unsubscribeScanResults(); + bool setEventCallback(const sp& cb); + + private: + ScanStats mScanStats; + std::unique_ptr mChreInterfaceCallbacks; + sp mEventCallback; + + friend class ChreInterfaceCallbacksImpl; +}; + +} // namespace implementation +} // namespace V1_0 +} // namespace offload +} // namespace wifi +} // namespace hardware +} // namespace android + +#endif // WIFI_OFFLOAD_SERVER_H_