Bladeren bron

fix expander as output (works now on 9535)

Philippe G 3 jaren geleden
bovenliggende
commit
c0f5ca1e10
3 gewijzigde bestanden met toevoegingen van 9 en 9 verwijderingen
  1. 3 3
      components/services/led.c
  2. 4 4
      components/services/services.c
  3. 2 2
      components/squeezelite/output_i2s.c

+ 3 - 3
components/services/led.c

@@ -181,9 +181,9 @@ bool led_config(int idx, gpio_num_t gpio, int onstate, int pwm) {
 	leds[idx].onstate = onstate;
 	leds[idx].pwm = -1;
 
-	if (pwm < 0) {	
-		gpio_pad_select_gpio(gpio);
-		gpio_set_direction(gpio, GPIO_MODE_OUTPUT);
+	if (pwm < 0 || gpio >= GPIO_NUM_MAX) {	
+		if (gpio < GPIO_NUM_MAX) gpio_pad_select_gpio(gpio);
+		gpio_set_direction_u(gpio, GPIO_MODE_OUTPUT);
 	} else {	
 		leds[idx].channel = pwm_system.base_channel++;
 		leds[idx].pwm = pwm_system.max * powf(pwm / 100.0, 3);

+ 4 - 4
components/services/services.c

@@ -43,12 +43,12 @@ void set_power_gpio(int gpio, char *value) {
 	bool parsed = true;
 	
 	if (!strcasecmp(value, "vcc") ) {
-		gpio_pad_select_gpio(gpio);
-		gpio_set_direction(gpio, GPIO_MODE_OUTPUT);
+		if (gpio < GPIO_NUM_MAX) gpio_pad_select_gpio(gpio);
+		gpio_set_direction_u(gpio, GPIO_MODE_OUTPUT);
 		gpio_set_level_u(gpio, 1);
 	} else if (!strcasecmp(value, "gnd")) {
-		gpio_pad_select_gpio(gpio);
-		gpio_set_direction(gpio, GPIO_MODE_OUTPUT);
+		if (gpio < GPIO_NUM_MAX) gpio_pad_select_gpio(gpio);
+		gpio_set_direction_u(gpio, GPIO_MODE_OUTPUT);
 		gpio_set_level_u(gpio, 0);
 	} else parsed = false;
 	

+ 2 - 2
components/squeezelite/output_i2s.c

@@ -178,8 +178,8 @@ static void set_amp_gpio(int gpio, char *value) {
 		amp_control.gpio = gpio;
 		if ((p = strchr(value, ':')) != NULL) amp_control.active = atoi(p + 1);
 		
-		gpio_pad_select_gpio(amp_control.gpio);
-		gpio_set_direction(amp_control.gpio, GPIO_MODE_OUTPUT);
+		if (amp_control.gpio < GPIO_NUM_MAX) gpio_pad_select_gpio(amp_control.gpio);
+		gpio_set_direction_u(amp_control.gpio, GPIO_MODE_OUTPUT);
 		gpio_set_level_u(amp_control.gpio, !amp_control.active);
 		
 		LOG_INFO("setting amplifier GPIO %d (active:%d)", amp_control.gpio, amp_control.active);