点灯的总结
属于D.Willam的第一篇博客…自己写的,如有雷同,那就雷同
本篇文档将要描述的就是通过点灯的动作沿着这幅图片做纵向的分析,从
当然,非常感谢 关于
#include <stdlib.h> #include <fcntl.h> #define LED_DEVICE_NAME “/dev/myled” int main(int argc, char ** argv) { int fd = -1; int cmd = 0; int arg = 0; if (argc != 3) { printf(“usage : ./led_app cmd statusn”); return -1; } fd = open(LED_DEVICE_NAME, O_RDWR); if (fd == -1) { printf(“failed to open device %s.n”, LED_DEVICE_NAME); return -1; } cmd = atoi(argv[1]); arg = atoi(argv[2]); printf(“cmd = %d, arg = %dn”, cmd, arg); ioctl(fd, cmd, arg); close(fd); return 0; } 请忽略掉那些参数的判断和返回值的判断,一切只是为了流程去干活,砍掉细枝末节,最终达到共同富裕。 如果
其实很纠结,因为说到
对于程序员来说,有一句话非常经典,模仿是程序员的第一技能,我们可以看一下 这里很明白的事情就是
include $(CLEAR_VARS) LOCAL_MODULE := led.default # HAL module implementation stored in # hw/<VIBRATOR_HARDWARE_MODULE_ID>.default.so LOCAL_MODULE_RELATIVE_PATH := hw LOCAL_C_INCLUDES := hardware/libhardware LOCAL_SRC_FILES := led_hal.c LOCAL_SHARED_LIBRARIES := liblog LOCAL_MODULE_TAGS := optional include $(BUILD_SHARED_LIBRARY) 这种时候,我觉得,对比一下就可以看得出区别了,就像看看别人的女朋友,就知道自己的女朋友有多好了。 好,假设你的
所以,实际上的代码我写成如下的样子 /* * The led Module */ struct hw_module_t HAL_MODULE_INFO_SYM = { .tag = HARDWARE_MODULE_TAG, .id = LED_HARDWARE_MODULE_ID, .name = “dengjinzhe led Module”, .author = “dengjinzhe”, .methods = &led_module_methods, }; 这里,
里面只实现了几个函数,我们一一列出: int hw_get_module(const char *id, const struct hw_module_t **module) int hw_get_module_by_class(..) static int hw_module_exists(…) static int load(…) 大致看一下
int hw_get_module(const char *id, const struct hw_module_t **module) { ALOGE(“%s, %dn”, __func__, id); return hw_get_module_by_class(id, NULL, module); } 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!