基本信息
源码名称:hal调用底层示例代码
源码大小:2.10KB
文件格式:.cpp
开发语言:C/C++
更新时间:2015-06-11
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 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;
}