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
malte
firmware
Commits
2c026ff2
Commit
2c026ff2
authored
Jun 27, 2020
by
schneider
Browse files
Merge branch 'blink_multi_rocket' into 'master'
flash_rocket See merge request
card10/firmware!325
parents
45f6d33f
3527b3e9
Pipeline
#4659
passed with stages
in 1 minute and 41 seconds
Changes
5
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
epicardium/epicardium.h
View file @
2c026ff2
...
...
@@ -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_FLASH_ROCKET 0x72
#define API_VIBRA_SET 0x70
#define API_VIBRA_VIBRATE 0x71
...
...
@@ -622,6 +623,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 flash for a certain time.
*
* :c:func:`epic_leds_flash_rocket` will set a timer for the flash of a rocket.
*
* :param int led: Number of the rocket that sould flash
* :param uint8_t value: brightness of the 'on'-state of this rocket ( 0 < value < 32)
* :param int millis: time in milliseconds defining the duration of the flash (i.e. how long is the rocket 'on')
*
* .. versionadded:: 1.16
*/
API
(
API_LEDS_FLASH_ROCKET
,
void
epic_leds_flash_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 @
2c026ff2
#include
"leds.h"
#include
"pmic.h"
#include
"FreeRTOS.h"
#include
"timers.h"
#include
"task.h"
#include
"epicardium.h"
#include
"modules.h"
...
...
@@ -128,6 +129,33 @@ int epic_leds_get_rocket(int led)
return
ret
;
}
static
StaticTimer_t
flash_timer_data
[
3
];
static
TimerHandle_t
flash_timer
[]
=
{
NULL
,
NULL
,
NULL
};
static
void
rocket_timer_callback
(
TimerHandle_t
flash_timer
)
{
uint32_t
id
=
(
uint32_t
)
pvTimerGetTimerID
(
flash_timer
);
epic_leds_set_rocket
(
id
,
0
);
}
void
epic_leds_flash_rocket
(
int
led
,
uint8_t
value
,
int
millis
)
{
int
ticks
=
millis
*
(
configTICK_RATE_HZ
/
1000
);
int32_t
id
=
led
;
if
(
flash_timer
[
id
]
==
NULL
)
{
flash_timer
[
id
]
=
xTimerCreateStatic
(
"flashtimer"
,
ticks
,
pdFALSE
,
(
void
*
)
id
,
rocket_timer_callback
,
&
flash_timer_data
[
id
]
);
epic_leds_set_rocket
(
led
,
value
);
}
epic_leds_set_rocket
(
led
,
value
);
xTimerChangePeriod
(
flash_timer
[
id
],
ticks
,
0
);
}
void
epic_set_flashlight
(
bool
power
)
{
hwlock_acquire
(
HWLOCK_I2C
);
...
...
pycardium/modules/py/leds.py
View file @
2c026ff2
...
...
@@ -95,6 +95,20 @@ def get_rocket(led):
return
sys_leds
.
get_rocket
(
led
)
def
flash_rocket
(
led
,
value
,
millis
):
"""
Let one of the rockets flash for a certain time without
blocking the python interpreter.
:param int led: Choose your rocket!
:param int value: brightness value (0 < value < 32)
:param int millis: duration of the rocket being on in milliseconds.
.. versionadded:: 1.??
"""
return
sys_leds
.
flash_rocket
(
led
,
value
,
millis
)
def
dim_top
(
value
):
"""
Set global brightness for top RGB LEDs.
...
...
pycardium/modules/qstrdefs.h
View file @
2c026ff2
...
...
@@ -17,6 +17,7 @@ Q(set_all_hsv)
Q
(
set_flashlight
)
Q
(
set_rocket
)
Q
(
get_rocket
)
Q
(
flash_rocket
)
Q
(
set_powersave
)
Q
(
set_gamma
)
Q
(
dim_top
)
...
...
pycardium/modules/sys_leds.c
View file @
2c026ff2
...
...
@@ -213,6 +213,22 @@ 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_flash_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 be < 32"
);
}
epic_leds_flash_rocket
(
led
,
value
,
time
);
return
mp_const_none
;
}
static
MP_DEFINE_CONST_FUN_OBJ_3
(
leds_flash_rocket_obj
,
mp_leds_flash_rocket
);
static
mp_obj_t
mp_leds_dim_top
(
mp_obj_t
dim_in
)
{
int
dim
=
mp_obj_get_int
(
dim_in
);
...
...
@@ -283,6 +299,8 @@ 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_flash_rocket
),
MP_ROM_PTR
(
&
leds_flash_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