2014-07-14 2 views
2

다른 기기에서는 LED 밝기 제어 인터페이스에 /sys/class/leds/red/brightness과 같은 값을 써서 LED를 켜고 끌 수 있습니다. 그러나 Nexus 5에서는 작동하지 않습니다.Nexus 5 : sysfs 인터페이스를 통해 LED 색상을 변경할 수 없음

LED 밝기가 지속적으로 변경되는 앱을 작성 중이므로 알림을 통한 설정은 나를위한 옵션이 아닙니다.

커널 드라이버 소스 인 leds-qpnp.c를 읽었습니다. Xperia Z2의 경우와 약간 다릅니다 :

  1. duty_pcts 길이가 20으로 증가되었습니다. LPG 모드에서 부드럽게 전환하는 것이 좋습니다.
  2. 코드 설정 밝기에서 보간 코드를 참조하십시오.
  3. rgb_config_data에서 start, calibrated_max, on_ms 및 off_ms : 이전에는 본 적이 없습니다.
  4. N5에는 PWM_DIRECT_MODE 및 LPG_SYNC_MODE가 없습니다. 그 결과 N5에는 rgb_duration_config가 있고 Z2에는 qpnp_rgb_set_direct가 있습니다.
  5. schedule_work에서 qpnp_rgb_set을 호출하지 않습니다! qpnp_rgb_start_set에서만 호출됩니다. 그것은 LED를 시작하는 방아쇠 인 것 같습니다.

    1. 에코 TARGET_BRIGHTNESS> 밝기
    2. 에코 SOME_u8_VALUE> rgb_start

    을하지만 여전히 주도 전원이 거부 :이 정보에서

, 나는 계획을 내놓았다. 그리고 내 rgb_start는이 작업을 수행하는 코드를 보면 다시 0

에 지워졌습니다 :

/* Checking lut flags is used to glean if the led really was started */ if (!(led_array[i].rgb_cfg->pwm_cfg->lut_params.flags & PM_PWM_LUT_RAMP_UP)) led_array[i].rgb_cfg->start = 0;

나는 lut_params.flags 이미 LPG를 활용하는 설정되어 있는지 알고있다. 그러나이 시점에서 커널에 더러운 해킹이없는 깨끗한 방법으로 플래그를 지우는 방법을 알지 못합니다.

누구나?

답변

1

좋아. 방금 대답을 찾았습니다.

밝기를 설정 한 다음 on_off_ms를 설정 한 다음 rgb_start를 통해 트리거하십시오. 두 트랜잭션이 rgb_start에 다른 번호로 전송되어야 함을 유의하십시오.

관련 문제