Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
François Revol
firmware
Commits
7c16c31f
Commit
7c16c31f
authored
Oct 03, 2019
by
zenox
Browse files
initial try blink_rocket
parent
d70f6e30
Changes
4
Hide whitespace changes
Inline
Side-by-side
epicardium/epicardium.h
View file @
7c16c31f
...
...
@@ -100,6 +100,7 @@ typedef _Bool bool;
#define API_LEDS_CLEAR_ALL 0x6d
#define API_LEDS_GET_ROCKET 0x6e
#define API_LEDS_GET 0x6f
#define API_LEDS_BLINK_ROCKET 0x72
#define API_VIBRA_SET 0x70
#define API_VIBRA_VIBRATE 0x71
...
...
@@ -613,6 +614,19 @@ API(API_LEDS_SET, void epic_leds_set(int led, uint8_t r, uint8_t g, uint8_t b));
*/
API
(
API_LEDS_GET
,
int
epic_leds_get_rgb
(
int
led
,
uint8_t
*
rgb
));
/**
* Set one of the rockets to blink for a certain time.
*
* :c:func:`epic_leds_blink_rocket` will set a timer for blinking of the rocket.
*
* :param int led: Number of rocket to let blink
* :param uint8_t value: brightness of the 'on'-state of this rocket ( 0 < value < 32)
* :param int millis: time in milliseconds the rocket should be 'on'
*
* .. versionadded:: 1.??
*/
API
(
API_LEDS_BLINK_ROCKET
,
void
epic_leds_blink_rocket
(
int
led
,
uint8_t
valiue
,
int
millis
));
/**
* Set one of card10's RGB LEDs to a certain color in HSV format.
*
...
...
epicardium/modules/leds.c
View file @
7c16c31f
#include
"leds.h"
#include
"pmic.h"
#include
"FreeRTOS.h"
#include
"timers.h"
#include
"task.h"
#include
"epicardium.h"
#include
"modules.h"
...
...
@@ -10,6 +11,7 @@
//TODO: create smth like vTaskDelay(pdMS_TO_TICKS(//put ms here)) for us, remove blocking delay from /lib/leds.c to avoid process blocking
#define NUM_LEDS 15
/* Take from lib/card10/leds.c */
#define NUM_ROCKETS
static
void
do_update
()
{
...
...
@@ -144,6 +146,31 @@ int epic_leds_get_rocket(int led)
return
ret
;
}
static
TimerHandle_t
blink_timer
[
NUM_ROCKETS
];
void
bTimerCallback
(
TimerHandle_t
blink_timer
)
{
uint32_t
id
=
(
uint32_t
)
pvTimerGetTimerID
(
blink_timer
);
epic_leds_set_rocket
(
id
,
0
);
}
void
epic_leds_blink_rocket
(
int
led
,
uint8_t
value
,
int
millis
)
{
int
ticks
=
millis
*
(
configTICK_RATE_HZ
/
1000
);
int32_t
id
=
led
;
if
(
blink_timer
[
id
]
==
NULL
)
{
blink_timer
[
id
]
=
xTimerCreate
(
"blinktimer"
,
ticks
,
pdFALSE
,
(
void
*
)
id
,
bTimerCallback
);
}
else
{
epic_leds_set_rocket
(
led
,
value
);
xTimerChangePeriod
(
blink_timer
[
id
],
ticks
,
0
);
}
}
void
epic_set_flashlight
(
bool
power
)
{
while
(
hwlock_acquire
(
HWLOCK_I2C
,
pdMS_TO_TICKS
(
1
))
<
0
)
{
...
...
pycardium/modules/qstrdefs.h
View file @
7c16c31f
...
...
@@ -17,6 +17,7 @@ Q(set_all_hsv)
Q
(
set_flashlight
)
Q
(
set_rocket
)
Q
(
get_rocket
)
Q
(
blink_rocket
)
Q
(
set_powersave
)
Q
(
set_gamma
)
Q
(
dim_top
)
...
...
pycardium/modules/sys_leds.c
View file @
7c16c31f
...
...
@@ -213,6 +213,21 @@ static mp_obj_t mp_leds_get_rocket(mp_obj_t led_in)
}
static
MP_DEFINE_CONST_FUN_OBJ_1
(
leds_get_rocket_obj
,
mp_leds_get_rocket
);
static
mp_obj_t
mp_leds_blink_rocket
(
mp_obj_t
led_in
,
mp_obj_t
value_in
,
mp_obj_t
time_in
)
{
int
led
=
mp_obj_get_int
(
led_in
);
int
value
=
mp_obj_get_int
(
value_in
);
int
time
=
mp_obj_get_int
(
time_in
);
if
(
value
>
31
)
{
mp_raise_ValueError
(
"brightness must by < 32"
);
}
epic_leds_blink_rocket
(
led
,
value
,
time
);
return
mp_const_none
;
}
static
MP_DEFINE_CONST_FUN_OBJ_3
(
leds_blink_rocket_obj
,
mp_leds_blink_rocket
);
static
mp_obj_t
mp_leds_dim_top
(
mp_obj_t
dim_in
)
{
int
dim
=
mp_obj_get_int
(
dim_in
);
...
...
@@ -283,6 +298,7 @@ static const mp_rom_map_elem_t leds_module_globals_table[] = {
{
MP_ROM_QSTR
(
MP_QSTR_set_all_hsv
),
MP_ROM_PTR
(
&
leds_set_all_hsv_obj
)
},
{
MP_ROM_QSTR
(
MP_QSTR_set_rocket
),
MP_ROM_PTR
(
&
leds_set_rocket_obj
)
},
{
MP_ROM_QSTR
(
MP_QSTR_get_rocket
),
MP_ROM_PTR
(
&
leds_get_rocket_obj
)
},
{
MP_ROM_QSTR
(
MP_QSTR_blink_rocket
),
MP_ROM_PTR
(
&
leds_blink_rocket_obj
)
},
{
MP_ROM_QSTR
(
MP_QSTR_set_flashlight
),
MP_ROM_PTR
(
&
leds_set_flashlight_obj
)
},
{
MP_ROM_QSTR
(
MP_QSTR_update
),
MP_ROM_PTR
(
&
leds_update_obj
)
},
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment