add writable expander GPIOs

This commit is contained in:
Philippe G
2021-11-30 23:51:52 -08:00
parent f7a7ece582
commit 970c72d416
5 changed files with 24 additions and 23 deletions

View File

@@ -43,6 +43,7 @@ sure that using rate_delay would fix that
#include "led.h"
#include "monitor.h"
#include "platform_config.h"
#include "gpio_exp.h"
#include "accessors.h"
#include "equalizer.h"
#include "globdefs.h"
@@ -131,10 +132,10 @@ static bool handler(u8_t *data, int len){
if (jack_mutes_amp && jack_inserted_svc()) {
adac->speaker(false);
if (amp_control.gpio != -1) gpio_set_level(amp_control.gpio, !amp_control.active);
if (amp_control.gpio != -1) gpio_set_level_u(amp_control.gpio, !amp_control.active);
} else {
adac->speaker(true);
if (amp_control.gpio != -1) gpio_set_level(amp_control.gpio, amp_control.active);
if (amp_control.gpio != -1) gpio_set_level_u(amp_control.gpio, amp_control.active);
}
}
@@ -157,7 +158,7 @@ static void jack_handler(bool inserted) {
if (jack_mutes_amp) {
LOG_INFO("switching amplifier %s", inserted ? "OFF" : "ON");
adac->speaker(!inserted);
if (amp_control.gpio != -1) gpio_set_level(amp_control.gpio, inserted ? !amp_control.active : amp_control.active);
if (amp_control.gpio != -1) gpio_set_level_u(amp_control.gpio, inserted ? !amp_control.active : amp_control.active);
}
// activate headset
@@ -179,7 +180,7 @@ static void set_amp_gpio(int gpio, char *value) {
gpio_pad_select_gpio(amp_control.gpio);
gpio_set_direction(amp_control.gpio, GPIO_MODE_OUTPUT);
gpio_set_level(amp_control.gpio, !amp_control.active);
gpio_set_level_u(amp_control.gpio, !amp_control.active);
LOG_INFO("setting amplifier GPIO %d (active:%d)", amp_control.gpio, amp_control.active);
}
@@ -455,14 +456,14 @@ static void output_thread_i2s(void *arg) {
LOG_INFO("Output state is %d", output.state);
if (output.state == OUTPUT_OFF) {
led_blink(LED_GREEN, 100, 2500);
if (amp_control.gpio != -1) gpio_set_level(amp_control.gpio, !amp_control.active);
if (amp_control.gpio != -1) gpio_set_level_u(amp_control.gpio, !amp_control.active);
LOG_INFO("switching off amp GPIO %d", amp_control.gpio);
} else if (output.state == OUTPUT_STOPPED) {
adac->speaker(false);
led_blink(LED_GREEN, 200, 1000);
} else if (output.state == OUTPUT_RUNNING) {
if (!jack_mutes_amp || !jack_inserted_svc()) {
if (amp_control.gpio != -1) gpio_set_level(amp_control.gpio, amp_control.active);
if (amp_control.gpio != -1) gpio_set_level_u(amp_control.gpio, amp_control.active);
adac->speaker(true);
}
led_on(LED_GREEN);