展锐平台关机充电代码

./sprd/proprietories-source/charge

led的控制部分:

//./sprd/proprietories-source/charge/ui.c

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

#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);
        }
}

  

  

  

posted @ 2024-07-19 17:44  轻轻的吻  阅读(45)  评论(0编辑  收藏  举报