随笔-HAL回调接口
HAL:
- IDemo.hal
package vendor.tcl.hongxi@1.0;
import ISignalCb;interface IDemo {setCallback(ISignalCb cb) generates (bool value);
}
- ISignalCb.hal
package vendor.tcl.hongxi@1.0;interface ISignalCb {signalEvent(int32_t status);
};
- 同级Android.bp
// This file is autogenerated by hidl-gen -Landroidbp.hidl_interface {name: "vendor.tcl.hongxi@1.0",root: "vendor.tcl.hongxi",srcs: ["IDemo.hal","types.hal","ISignalCb.hal",],interfaces: ["android.hidl.base@1.0",],types: [...],...
}...
subdirs = ["default",
]
- Demo.cpp
using vendor::tcl::hongxi::V1_0::ISignalCb;
...
Return<bool> IDemo::setCallback(const sp<ISignalCb>& callback) {ALOGD("hongxi.zhu: client call setCallback()");return android::HongxiManager::getInstance().setCallback(callback);
}
...
- DemoManager.cpp
using vendor::tcl::hongxi::V1_0::ISignalCb;sp<vendor::tcl::hongxi::V1_0::ISignalCb> sigCb = NULL;
...
bool HongxiManager::setCallback(const sp<ISignalCb>& callback) {bool bRet = false;sigCb = callback;
}
...
//when the signal change we should notify client by this callback.
bool HongxiManager::updateSignal(int32_t status) {sigCb.signalEvent(status);
}
...
Client:
- signal_cb.h
#ifndef __SIGNAL_CB_H__
#define __SIGNAL_CB_H__#include using namespace vendor::tcl::hongxi::V1_0;
using namespace android::hardware;namespace android {
class SignalInterface : public virtual vendor::tcl::hongxi::V1_0::ISignalCb{
public:SignalInterface(){}::android::hardware::Return<void> signalEvent(int32_t status) override;
};
}
#endif
#include "signal_cb.h"#define LOG_TAG "SignalInterface"namespace android {
using namespace vendor::tcl::hongxi::V1_0;
using namespace android::hardware;::android::hardware::Return<void> SignalInterface::signalEvent(int32_t status) {//TO DOALOGD("HAL return signal %d", status);return ::android::hardware::Void();
}} //android
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
