jfo planet

Hope is the best gift that tomorrow gives.

  • 首页
  • 分类
  • 归档
  • 标签
  • 搜索
close

sensors data get/set from android emulator console

发表于 2014-11-08   |   分类于 Android
模拟器启动后telnet进入模拟器console telenet 127.0.0.1:5554 help Android console command help: help|h|? print a list of commands event simulate hardware events geo Geo-location commands gsm GSM related commands cdma CDMA related commands kill kill the emulator instance network manage network settings power power related commands quit|exit quit control session redir ...
阅读全文 »

sensors data sent to / requested from android HAL

发表于 2014-11-08   |   分类于 Android
模拟器在硬件上为android提供虚拟sensors,通过模拟器console,或者模拟器sensors socket通道,我们可以从外界(比如eclipse调试工具)设置这些虚拟sensors的值 模拟器中运行的android,通过qemu sensor HAL拿到这些sensors值,qemu sensor HAL与实体手机的sensor HAL的区别在于:实体手机的sensor HAL通过底层Linux驱动获取真实sensors数据,qemu sensor HAL通过qemud的socket通道获取前面设置的虚拟sensors值 关于qemud,代码(qemud.c)中有一段介绍,很好说明了qemud与模拟器、qemu sensor HAL之间的关系: the qemud daemon program is only used within Android as a bridge between the emulator program and the emulated system. it really works as a simple stream mult ...
阅读全文 »

sensor service的初始化

发表于 2014-11-07   |   分类于 Android
基于android-4.4源码分析 sensor service init首先是SystemServer中的初始化入口,位于frameworks/base/services/java/com/android/server/SystemServer.java在main()函数中调用nativeInit(),它位于frameworks/base/services/jni/com_android_server_SystemServer.cpp static JNINativeMethod gMethods[] = { /* name, signature, funcPtr */ { "nativeInit", "()V", (void*) android_server_SystemServer_nativeInit }, }; static void android_server_SystemServer_nativeInit(JNIEnv* env, jobject clazz) { char propBuf[PROPER ...
阅读全文 »

sensors HAL

发表于 2014-11-06   |   分类于 Android
补充《sensor service的初始化》中提到的onFirstRef主要是在Android的HAL层对底层驱动封装 frameworks/native/services/sensorservice/SensorDevice.cpp SensorDevice::SensorDevice() : mSensorDevice(0), mSensorModule(0) { status_t err = hw_get_module(SENSORS_HARDWARE_MODULE_ID, (hw_module_t const**)&mSensorModule); ALOGE_IF(err, "couldn't load %s module (%s)", SENSORS_HARDWARE_MODULE_ID, strerror(-err)); if (mSensorModule) { err = sensors_open_1(&mSensorM ...
阅读全文 »

关于UsbDeviceConnection的claimInterface

发表于 2014-10-30   |   分类于 Android
对于usb手柄而言,调用后会将/dev/input/eventX设备remove掉(getevent将不会接收到任何该usb设备的输入事件) frameworks/base/core/jni/android_hardware_UsbDeviceConnection.cpp static jboolean android_hardware_UsbDeviceConnection_claim_interface(JNIEnv *env, jobject thiz, int interfaceID, jboolean force) { struct usb_device* device = get_device_from_object(env, thiz); if (!device) { ALOGE("device is closed in native_claim_interface"); return -1; } int ret = usb_device_claim_interface ...
阅读全文 »

Android之监听Usb设备插拔

发表于 2014-10-30   |   分类于 Android
SystemServer.java在服务启动时会启动UsbService(frameworks/base/services/java/com/android/server/usb/UsbService.java),UsbService会构造UsbHostManager和UsbDeviceManager frameworks/base/services/jni/com_android_server_UsbHostManager.cpp static void android_server_UsbHostManager_monitorUsbHostBus(JNIEnv *env, jobject thiz) { struct usb_host_context* context = usb_host_init(); if (!context) { ALOGE("usb_host_init failed"); return; } // this will never return so it is safe ...
阅读全文 »

Linux uhid分析之输入事件传递

发表于 2014-09-09   |   分类于 Linux
向/dev/uhid写输入数据时,uhid_char_write调用uhid_dev_input static int uhid_dev_input(struct uhid_device *uhid, struct uhid_event *ev) { if (!uhid->running) return -EINVAL; hid_input_report(uhid->hid, HID_INPUT_REPORT, ev->u.input.data, min_t(size_t, ev->u.input.size, UHID_DATA_MAX), 0); return 0; } // 写入数据格式为 struct uhid_event { __u32 type; union { struct uhid_create_req create; struct uhid_input_req input; struct uhid_outpu ...
阅读全文 »

Linux uhid分析之创建HID设备

发表于 2014-09-08   |   分类于 Linux
对/dev/uhid的说明可参考Linux源码的Documentation/hid/uhid.txt,还附带了一个示例samples/uhid/uhid-example.c 另外还有一篇文章UHID: User-Space HID I/O drivers(PDF)大致介绍了一下uhid是什么,以及与uinput的区别 下面分析通过uhid创建HID设备的过程,分析之前可以先看看uhid-example 分析过程涉及到以下文件 drivers/hid/uhid.c drivers/hid/hid-core.c drivers/base/core.c drivers/base/bus.c drivers/base/dd.c drivers/hid/usbhid/hid-core.c uhid的fops结构体中指定了open为uhid_char_open,write为uhid_char_write static const struct file_operations uhid_fops = { .owner = THIS_MODULE, .open ...
阅读全文 »

Linux Input子系统分析之eventX设备创建和事件传递

发表于 2014-09-04   |   分类于 Linux
Linux Input子系统整体架构   注册eventX设备注册过程大致如下:input_register_device -> input_attach_handler -> input_match_device -> connect input_register_device对input_handler_list中的每一个handler尝试input_attach_handler list_for_each_entry(handler, &input_handler_list, node) input_attach_handler(dev, handler); input_attach_handler调用input_match_device,如果match,则调用该handler的connect evdev默认match所有的input_dev设备,evdev_handler的connect为evdev_handler 它会分配一个evdev,初始化handle的dev和handler,将input_dev和input_handler绑 ...
阅读全文 »

Android读取USB Descriptor获取manufacture和product信息

发表于 2014-08-06   |   分类于 Android
Android中通过UsbDevice.getDeviceName()返回类似/dev/usb/002/002,不能获取真正的设备名称,只能通过读取Raw USB Descriptors获取manufacturer名称 private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION"; private PendingIntent mPermissionIntent; protected static final int STD_USB_REQUEST_GET_DESCRIPTOR = 0x06; protected static final int LIBUSB_DT_STRING = 0x03; private String getUsbDetail(UsbDevice device) { String manufacturer = "", product = "", serial = ""; UsbManager manager = (UsbMan ...
阅读全文 »
1…345…61
jfo

jfo

605 日志
38 分类
4 标签
RSS
GitHub 微博
友情链接
  • 收藏夹
  • 网络剪贴板
  • 爱逛吧
© 2007 - 2018 jfo
由 Hexo 强力驱动
主题 - NexT.Pisces