fixed the bug, caused by partly inited units trying to de-init pins

This commit is contained in:
2018-01-02 16:49:30 +01:00
parent 39ad4a8d28
commit 64592c3bb6
5 changed files with 30 additions and 22 deletions
+1
View File
@@ -91,6 +91,7 @@ void LockJumper_Check(void)
if (debo_ticks > 0) {
if (--debo_ticks == 0) {
dbg("Debo finished, state %d", (int)state);
// we've reached a change
#if PLAT_LOCK_BTN
if (state == true) {
+4 -4
View File
@@ -106,8 +106,8 @@ void Indicator_Tick(void)
else if (active_effect == STATUS_DISK_ATTACHED) {
if (effect_time == 0) led_on();
else if (effect_time == 100) led_off();
else if (effect_time == 200) led_on();
else if (effect_time == 700) {
else if (effect_time == 250) led_on();
else if (effect_time == 750) {
led_off();
active_effect = STATUS_NONE;
}
@@ -115,8 +115,8 @@ void Indicator_Tick(void)
else if (active_effect == STATUS_DISK_REMOVED) {
if (effect_time == 0) led_on();
else if (effect_time == 500) led_off();
else if (effect_time == 600) led_on();
else if (effect_time == 700) {
else if (effect_time == 650) led_on();
else if (effect_time == 750) {
led_off();
active_effect = STATUS_NONE;
}
+2
View File
@@ -167,6 +167,7 @@ static void DI_deInit(Unit *unit)
{
struct priv *priv = unit->data;
if (unit->status == E_SUCCESS) {
bool suc = true;
uint16_t mask = 1;
for (int i = 0; i < 16; i++, mask <<= 1) {
@@ -178,6 +179,7 @@ static void DI_deInit(Unit *unit)
LL_GPIO_SetPinMode(priv->port, ll_pin, LL_GPIO_MODE_ANALOG);
}
}
}
// Release all resources
rsc_teardown(unit);
+3
View File
@@ -156,6 +156,8 @@ static void DO_deInit(Unit *unit)
{
struct priv *priv = unit->data;
// de-init the pins only if inited correctly
if (unit->status == E_SUCCESS) {
bool suc = true;
uint16_t mask = 1;
for (int i = 0; i < 16; i++, mask <<= 1) {
@@ -168,6 +170,7 @@ static void DO_deInit(Unit *unit)
LL_GPIO_SetPinMode(priv->port, ll_pin, LL_GPIO_MODE_ANALOG);
}
}
}
// Release all resources
rsc_teardown(unit);
+2
View File
@@ -125,8 +125,10 @@ static void Npx_deInit(Unit *unit)
{
struct priv *priv = unit->data;
if (unit->status == E_SUCCESS) {
// configure the pin as analog
LL_GPIO_SetPinMode(priv->port, priv->ll_pin, LL_GPIO_MODE_ANALOG);
}
// Release all resources
rsc_teardown(unit);