Android HAL 研究开发 FOR LED
来源:互联网 发布:痛快的哀艳 知乎 编辑:程序博客网 时间:2024/06/09 23:39
Led.h hardware\modules\include\Mokoid
#include <hardware/hardware.h>……….struct led_module_t { struct hw_module_t common;};struct led_control_device_t { struct hw_device_t common; /* supporting control APIs go here */ int (*set_on)(struct led_control_device_t *dev, int32_t led); int (*set_off)(struct led_control_device_t *dev, int32_t led);};/*****************************************************************************/struct led_control_context_t { struct led_control_device_t device;};#define LED_HARDWARE_MODULE_ID "led"Led.c hardware\modules\Led
static int led_set_on(struct led_control_device_t *dev){ //FIXME: do system call to control gpio led//可以调用真正的驱动程序,如write,read等 LOGI("led_set_on"); return 0;}static int led_set_off(struct led_control_device_t *dev){ //FIXME: do system call to control gpio led// //可以调用真正的驱动程序,如write,read等 LOGI("led_set_off"); return 0;}static int led_device_open(const struct hw_module_t* module, const char* name, struct hw_device_t** device) { struct led_control_device_t *dev; dev = (struct led_control_device_t *)malloc(sizeof(*dev)); memset(dev, 0, sizeof(*dev)); dev->common.tag = HARDWARE_DEVICE_TAG; dev->common.version = 0; dev->common.module = module; dev->common.close = led_device_close; dev->set_on = led_on; dev->set_off = led_off; *device = &dev->common;success: return 0;}static struct hw_module_methods_t led_module_methods = { open: led_device_open};const struct led_module_t HAL_MODULE_INFO_SYM = { common: { tag: HARDWARE_MODULE_TAG, version_major: 1, version_minor: 0, id: LED_HARDWARE_MODULE_ID, name: "Sample LED Stub", author: "The Mokoid Open Source Project", methods: &led_module_methods, } /* supporting APIs go here */};LedService.java frameworks\base\service\java\com\mokoid\Server
public final class LedService extends…….. { static { System.load("/system/lib/libmokoid_runtime.so"); } public LedService() { Log.i("LedService", "Go to get LED Stub..."); _init(); } /* * Mokoid LED native methods. */ public boolean setOn(int led) { Log.i("MokoidPlatform", "LED On"); return _set_on(led); } public boolean setOff(int led) { Log.i("MokoidPlatform", "LED Off"); return _set_off(led); } private static native boolean _init(); private static native boolean _set_on(int led); private static native boolean _set_off(int led);}com_mokoid_server_LedService.cpp frameworks\base\service\Jni
static jboolean mokoid_setOn(JNIEnv* env, jobject thiz, jint led) {………}static jboolean mokoid_setOff(JNIEnv* env, jobject thiz, jint led) {………}static inline int led_control_open(const struct hw_module_t* module, struct led_control_device_t** device) {………..}static jbooleanmokoid_init(JNIEnv *env, jclass clazz){…………..}static const JNINativeMethod gMethods[] = { {"_init", "()Z", (void*)mokoid_init}, { "_set_on", "(I)Z", (void*)mokoid_setOn }, { "_set_off", "(I)Z", (void*)mokoid_setOff },};static int registerMethods(JNIEnv* env) { static const char* const kClassName = "com/mokoid/server/LedService"; jclass clazz; /* look up the class */ clazz = env->FindClass(kClassName); if (clazz == NULL) { LOGE("Can't find class %s\n", kClassName); return -1; } /* register all the methods */ if (env->RegisterNatives(clazz, gMethods, sizeof(gMethods) / sizeof(gMethods[0])) != JNI_OK) { LOGE("Failed registering methods for %s\n", kClassName); return -1; }/* fill out the rest of the ID cache */ return 0;}jint JNI_OnLoad(JavaVM* vm, void* reserved) { JNIEnv* env = NULL; jint result = -1; if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { LOGE("ERROR: GetEnv failed\n"); goto bail; } assert(env != NULL); if (registerMethods(env) != 0) { LOGE("ERROR: PlatformLibrary native registration failed\n"); goto bail; } /* success -- return valid version number */ result = JNI_VERSION_1_4;bail: return result;}LedManager.java frameworks\base\core\java\mokoid\Hardware
public class LedManager{ private static final String TAG = "LedManager"; private ILedService mLedService; public LedManager() { mLedService = ILedService.Stub.asInterface( ServiceManager.getService("led")); if (mLedService != null) { Log.i(TAG, "The LedManager object is ready."); } } public boolean LedOn(int n) {……………..} public boolean LedOff(int n) {………………}}LedSystemServer.java apps\ledtest\src\com\mokoid\LedTest
public class LedSystemServer extends Service { @Override public IBinder onBind(Intent intent) { return null; } public void onStart(Intent intent, int startId) { Log.i("LedSystemServer", "Start LedService..."); /* Please also see SystemServer.java for your interests. */ LedService ls = new LedService(); try { ServiceManager.addService("led", ls); } catch (RuntimeException e) { Log.e("LedSystemServer", "Start LedService failed."); } }LedTest.java apps\ledtest\src\com\mokoid\LedTest
public class LedTest extends Activity implements View.OnClickListener { private LedManager mLedManager = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Start LedService in a seperated process. startService(new Intent("com.mokoid.ledsystemserver")); Button btn = new Button(this); btn.setText("Click to turn LED 1 On"); btn.setOnClickListener(this); setContentView(btn); }
LedSystemServer.java apps\ledtest\src\com\mokoid\LedTest
LedTest.java apps\ledtest\src\com\mokoid\LedTest
LedManager.java frameworks\base\core\java\mokoid\Hardware
LedService.java frameworks\base\service\java\com\mokoid\Server
com_mokoid_server_LedService.cpp frameworks\base\service\Jni
Led.h hardware\modules\include\Mokoid
Led.c hardware\modules\Led
- Android HAL 研究开发 FOR LED
- Android HAL 研究开发 FOR LED
- Android HAL实例解析LED
- Android HAL实例解析---LED
- Android GPIO LED 驱动与HAL分析
- Android GPIO LED 驱动与HAL分析
- Android GPIO LED 驱动与HAL分析
- Android GPIO LED 驱动与HAL分析
- Android HAL实例解析 led示例
- Android GPIO LED 驱动与HAL分析
- Android HAL JNI实例解析-led
- Android HAL JNI实例解析-led
- 深入浅出 - Android系统移植与平台开发(十) - led HAL简单设计案例分析
- 深入浅出 - Android系统移植与平台开发(十) - led HAL简单设计案例分析
- 深入浅出 - Android系统移植与平台开发(十) - led HAL简单设计案例分析
- 深入浅出 - Android系统移植与平台开发(十) - led HAL简单设计案例分析
- 深入浅出 - Android系统移植与平台开发(十) - led HAL简单设计案例分析
- 深入浅出 - Android系统移植与平台开发(十) - led HAL简单设计案例分析
- 推荐16个最流行的 JavaScript 框架
- Cupertino居民担忧未来苹果“飞船”总部周边交通问题
- Android 的 HAL 技術
- 批处理安装JDK等文件,这里只是写了一个JDK的,其他的按照相同原理写就可以了
- 分享15款很棒的 JavaScript 开发工具
- Android HAL 研究开发 FOR LED
- Oracle 10g 命令从点滴开始
- VTP、STP、Port-channel、HSRP
- Spring MVC原理及简单例子
- Jeff Bezos的深谋远虑成就Amazon今日的霸气外露
- 数据库知识
- ASP.NET+Ext Js4.0---Time--Number控件
- 常用ColorMatrixFilter收集(flex)
- 循环不变式的理解