14 {
15 uint8_t src = *brightness_src;
16 if (*brightness_dst == 0 || src == 0) {
17 return 0;
18 }
19
20
21
22
23
24 uint8_t curr = *brightness_dst;
25 uint8_t shifts = 0;
26 for (uint8_t i = 0; i < max_shifts && src > 1; i++) {
27 if (curr & 0b10000000) {
28
29 break;
30 }
31 curr <<= 1;
32 src >>= 1;
33 shifts++;
34 }
35
36 *brightness_dst = curr;
37 *brightness_src = src;
38 return shifts;
39}