Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
card10
firmware
Commits
2cd151e7
Commit
2cd151e7
authored
Jan 24, 2020
by
schneider
Browse files
Merge branch 'rahix/more-mutex' into 'master'
Fix LED mutex stuff See merge request
card10/firmware!369
parents
3b436505
cb1712d5
Pipeline
#4465
passed with stages
in 58 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
epicardium/modules/leds.c
View file @
2cd151e7
...
...
@@ -7,19 +7,22 @@
#include
<stdbool.h>
//TODO: create smth like vTaskDelay(pdMS_TO_TICKS(//put ms here)) for us, remove blocking delay from /lib/leds.c to avoid process blocking
/*
* 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 */
static
void
do_update
()
static
void
do_update
(
void
)
{
while
(
hwlock_acquire_timeout
(
HWLOCK_LED
,
portMAX_DELAY
)
<
0
)
{
vTaskDelay
(
pdMS_TO_TICKS
(
1
));
}
hwlock_acquire
(
HWLOCK_LED
);
hwlock_acquire
(
HWLOCK_I2C
);
leds_update_power
();
leds_update
();
hwlock_release
(
HWLOCK_I2C
);
hwlock_release
(
HWLOCK_LED
);
}
...
...
@@ -96,13 +99,7 @@ void epic_leds_dim_top(uint8_t value)
{
leds_set_dim_top
(
value
);
if
(
personal_state_enabled
()
==
0
)
{
while
(
hwlock_acquire_timeout
(
HWLOCK_I2C
,
portMAX_DELAY
)
<
0
)
{
vTaskDelay
(
pdMS_TO_TICKS
(
1
));
}
leds_update
();
hwlock_release
(
HWLOCK_I2C
);
do_update
();
}
}
...
...
@@ -110,35 +107,22 @@ void epic_leds_dim_bottom(uint8_t value)
{
leds_set_dim_bottom
(
value
);
if
(
personal_state_enabled
()
==
0
)
{
while
(
hwlock_acquire_timeout
(
HWLOCK_I2C
,
portMAX_DELAY
)
<
0
)
{
vTaskDelay
(
pdMS_TO_TICKS
(
1
));
}
leds_update
();
hwlock_release
(
HWLOCK_I2C
);
do_update
();
}
}
void
epic_leds_set_rocket
(
int
led
,
uint8_t
value
)
{
while
(
hwlock_acquire_timeout
(
HWLOCK_I2C
,
portMAX_DELAY
)
<
0
)
{
vTaskDelay
(
pdMS_TO_TICKS
(
1
));
}
value
=
value
>
31
?
31
:
value
;
pmic_set_led
(
led
,
value
);
hwlock_acquire
(
HWLOCK_I2C
);
pmic_set_led
(
led
,
value
>
31
?
31
:
value
);
hwlock_release
(
HWLOCK_I2C
);
}
int
epic_leds_get_rocket
(
int
led
)
{
int
ret
=
0
;
while
(
hwlock_acquire_timeout
(
HWLOCK_I2C
,
portMAX_DELAY
)
<
0
)
{
vTaskDelay
(
pdMS_TO_TICKS
(
1
));
}
hwlock_acquire
(
HWLOCK_I2C
);
ret
=
pmic_get_led
(
led
);
hwlock_release
(
HWLOCK_I2C
);
return
ret
;
...
...
@@ -146,12 +130,8 @@ int epic_leds_get_rocket(int led)
void
epic_set_flashlight
(
bool
power
)
{
while
(
hwlock_acquire_timeout
(
HWLOCK_I2C
,
portMAX_DELAY
)
<
0
)
{
vTaskDelay
(
pdMS_TO_TICKS
(
1
));
}
hwlock_acquire
(
HWLOCK_I2C
);
leds_flashlight
(
power
);
hwlock_release
(
HWLOCK_I2C
);
}
...
...
@@ -162,12 +142,8 @@ void epic_leds_update(void)
void
epic_leds_set_powersave
(
bool
eco
)
{
while
(
hwlock_acquire_timeout
(
HWLOCK_I2C
,
portMAX_DELAY
)
<
0
)
{
vTaskDelay
(
pdMS_TO_TICKS
(
1
));
}
hwlock_acquire
(
HWLOCK_I2C
);
leds_powersave
(
eco
);
hwlock_release
(
HWLOCK_I2C
);
}
...
...
epicardium/modules/personal_state.c
View file @
2cd151e7
...
...
@@ -31,15 +31,8 @@ int epic_personal_state_set(uint8_t state, bool persistent)
personal_state_persistent
=
persistent
;
if
(
was_enabled
&&
!
_personal_state_enabled
)
{
while
(
hwlock_acquire_timeout
(
HWLOCK_LED
,
portMAX_DELAY
)
<
0
)
{
vTaskDelay
(
pdMS_TO_TICKS
(
1
));
}
leds_prep
(
PERSONAL_STATE_LED
,
0
,
0
,
0
);
leds_update_power
();
leds_update
();
hwlock_release
(
HWLOCK_LED
);
epic_leds_update
();
}
return
0
;
...
...
@@ -60,11 +53,6 @@ void vLedTask(void *pvParameters)
const
int
led_animation_rate
=
1000
/
25
;
/* 25Hz -> 40ms*/
while
(
1
)
{
if
(
_personal_state_enabled
)
{
while
(
hwlock_acquire_timeout
(
HWLOCK_LED
,
portMAX_DELAY
)
<
0
)
{
vTaskDelay
(
pdMS_TO_TICKS
(
1
));
}
led_animation_ticks
++
;
if
(
personal_state
==
STATE_NO_CONTACT
)
{
leds_prep
(
PERSONAL_STATE_LED
,
255
,
0
,
0
);
...
...
@@ -130,10 +118,8 @@ void vLedTask(void *pvParameters)
(
float
)(
1000
/
led_animation_rate
))));
}
leds_update_power
();
leds_update
();
hwlock_release
(
HWLOCK_LED
);
epic_leds_update
(
);
}
vTaskDelay
(
led_animation_rate
/
portTICK_PERIOD_MS
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a 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