展锐平台关机充电代码
./sprd/proprietories-source/charge
led的控制部分:
//./sprd/proprietories-source/charge/ui.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | static void led_control( int level) { static int led_flag = 0; LOGE( "***led_control***level=%d*led_flag=%d***\n" ,level,led_flag); if (level > 100) level = 100; else if (level < 0) level = 0; if (level < 90) { if (led_flag != LED_RED) { led_on(LED_RED); led_flag = LED_RED; } } else { if (led_flag != LED_GREEN) { led_on(LED_GREEN); led_flag = LED_GREEN; } } } |
//./sprd/proprietories-source/charge/backlight.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #define LED_GREEN_DEV "/sys/class/leds/green/brightness" #define LED_GREEN_MAX_DEV "/sys/class/leds/green/max_brightness" #define LED_RED_DEV "/sys/class/leds/red/brightness" #define LED_RED_MAX_DEV "/sys/class/leds/red/max_brightness" #define LED_BLUE_DEV "/sys/class/leds/blue/brightness" #define LED_BLUE_MAX_DEV "/sys/class/leds/blue/max_brightness" #define LED_GREEN_DEV_K414 "/sys/class/leds/sc27xx:green/brightness" #define LED_GREEN_MAX_DEV_K414 "/sys/class/leds/sc27xx:green/max_brightness" #define LED_RED_DEV_K414 "/sys/class/leds/sc27xx:red/brightness" #define LED_RED_MAX_DEV_K414 "/sys/class/leds/sc27xx:red/max_brightness" #define LED_BLUE_DEV_K414 "/sys/class/leds/sc27xx:blue/brightness" #define LED_BLUE_MAX_DEV_K414 "/sys/class/leds/sc27xx:blue/max_brightness" static int eng_led_red_test( int brightness) { int fd; int ret; char buffer[8]; fd = open(LED_RED_DEV, O_RDWR); if (fd < 0) { SPRD_DBG( "%s: open %s fail" , __func__, LED_RED_DEV); fd = open(LED_RED_DEV_K414,O_RDWR); if (fd < 0) { SPRD_DBG( "%s: open %s fail" , __func__, LED_RED_DEV_K414); return -1; } } memset (buffer, 0, sizeof (buffer)); sprintf (buffer, "%d" , brightness); ret = write(fd, buffer, strlen (buffer)); close(fd); return 0; } static int eng_led_blue_test( int brightness) { int fd; int ret; char buffer[8]; fd = open(LED_BLUE_DEV, O_RDWR); if (fd < 0) { SPRD_DBG( "%s: open %s fail" , __func__, LED_BLUE_DEV); fd = open(LED_BLUE_DEV_K414,O_RDWR); if (fd < 0) { SPRD_DBG( "%s: open %s fail" , __func__, LED_BLUE_DEV_K414); return -1; } } memset (buffer, 0, sizeof (buffer)); sprintf (buffer, "%d" , brightness); ret = write(fd, buffer, strlen (buffer)); close(fd); return 0; } void led_off( void ) { SPRD_DBG( "%s: *********led_off****" , __func__); eng_led_green_test(0); eng_led_red_test(0); eng_led_blue_test(0); } void led_on( int color) { SPRD_DBG( "%s: *********led_on****" , __func__); if (color == 1) { eng_led_green_test(max_green_led/2); eng_led_red_test(0); eng_led_blue_test(0); } else if (color == 2) { eng_led_red_test(max_red_led/2); eng_led_green_test(0); eng_led_blue_test(0); } else if (color == 3) { eng_led_blue_test(0); eng_led_red_test(max_green_led/2); eng_led_green_test(max_red_led/2); } else { SPRD_DBG( "%s: color is %d invalid\n" , __func__, color); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)