基本信息
源码名称:hal调用底层示例代码
源码大小:2.10KB
文件格式:.cpp
开发语言:C/C++
更新时间:2015-06-11
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
#include <utils/Log.h> #include "../HAL/minicom.h" #include "jni.h" static int fd; //定义两个指针 struct usb_hw_module_t *pModule; struct usb_hw_device_t *pDevice; jint open_led(JNIEnv *env, jobject thiz) { LOGD("------%s-----\n", __FUNCTION__); jint ret; ret = hw_get_module(MINICOM_ID, (const struct hw_module_t * *) &pModule); if(ret == 0) { LOGD("get hal module ok\n"); //调用module对象的open方法,实际上是调用usb_module_open方法 pModule->common.methods->open(&pModule->common, NULL, (struct hw_device_t * *)&pDevice); if(pDevice != NULL) { //调用pDevice中的方法 pDevice->open(); } } else{ LOGD("get hal module failed \n"); return -1; } return 0; } jint led_on(JNIEnv *env, jobject thiz, jint a) { LOGD("------%s-----\n", __FUNCTION__); if(pDevice != NULL) { pDevice->control_dev(1); } return 0; } jint led_off(JNIEnv *env, jobject thiz, jint a) { LOGD("------%s-----\n", __FUNCTION__); if(pDevice != NULL) { pDevice->control_dev(0); } return 0; } jint close_led(JNIEnv *env, jobject thiz) { LOGD("------%s-----\n", __FUNCTION__); if(pDevice != NULL) { pDevice->common.close((struct hw_device_t*)pDevice); } return 0; } static JNINativeMethod myMethods[] = { {"openDev", "()I", (void *)open_led}, {"onLed", "()I", (void *)led_on}, {"offLed", "()I", (void *)led_off}, {"closeDev", "()I", (void *)close_led}, }; jint JNI_OnLoad(JavaVM * vm, void * reserved) { LOGD("------%s-----\n", __FUNCTION__); JNIEnv *env = NULL; jint ret; //通过vm获取到环境变量对象,提供操作java代码的方法 ret = vm->GetEnv((void **)&env, JNI_VERSION_1_4); if(ret != JNI_OK) { LOGE("vm->GetEnv error \n"); return -1; } //注册映射表 jclass cls = env->FindClass("com/caiii/minicom/MainActivity"); if(cls == NULL) { LOGE("env->FindClass error \n"); return -1; } ret = env->RegisterNatives(cls, myMethods, sizeof(myMethods)/sizeof(myMethods[0])); if(ret < 0) { LOGE("env->RegisterNatives error\n"); return -1; } return JNI_VERSION_1_4; }