-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathled_123.c
87 lines (71 loc) · 2.28 KB
/
led_123.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
/***************************************************************************
* Copyright (C) 2017 - 2020, Lanka Hsu, <lankahsu@gmail.com>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
#include "utilx9.h"
#define LEDX_GPIOXX "/sys/class/leds/led"
#define LED1_GPIO43 "/sys/class/leds/led1/brightness"
#define LED2_GPIO41 "/sys/class/leds/led2/brightness"
#define LED3_GPIO39 "/sys/class/leds/led3/brightness"
#define LED_ORDER_ON "on"
#define LED_ORDER_OFF "off"
LedOn_t ledon_normal[MAX_OF_LEDON]=
{
{LED_ID_1, LED_ACTION_ID_ON, 200},
{LED_ID_1, LED_ACTION_ID_OFF, 3000},
};
static void led_turn_on_cb(void *usr_data)
{
LedOn_t *ledon = (LedOn_t *)usr_data;
DBG_TR_LN("(id: %d, action: %d, duration: %d)", ledon->id, ledon->action, ledon->duration);
char ledname[LEN_OF_BUF128] = "";
switch (ledon->id)
{
case LED_ID_1:
case LED_ID_2:
case LED_ID_3:
SAFE_SPRINTF_EX(ledname, "%s%d/brightness", LEDX_GPIOXX, ledon->id);
switch (ledon->action)
{
case LED_ACTION_ID_ON:
file_writer(ledname, LED_VAL_1, SAFE_STRLEN(LED_VAL_1));
break;
case LED_ACTION_ID_OFF:
default:
file_writer(ledname, LED_VAL_0, SAFE_STRLEN(LED_VAL_0));
break;
}
break;
default:
DBG_WN_LN("%s (id: %d)", DBG_TXT_WRONG, ledon->id);
break;
}
}
int main(int argc, char* argv[])
{
DBG_TR_LN("enter");
//dbg_lvl_set(DBG_LVL_DEBUG);
LedOn_t *ledon_ary = (LedOn_t*)&ledon_normal;
LedOn_t *ledon = NULL;
ledon = (LedOn_t *)&ledon_ary[0];
DBG_ER_LN("(action: %d, duration: %d)", ledon->action, ledon->duration);
ledon = (LedOn_t *)&ledon_ary[1];
DBG_ER_LN("(action: %d, duration: %d)", ledon->action, ledon->duration);
LedRequest_t *ledreq_1 = led_thread_init("led1", -1, (LedOn_t*)&ledon_normal, led_turn_on_cb);
while (1)
{
sleep(1);
}
SAFE_LED_CLOSE(ledreq_1);
exit(0);
}