QMK-ify some GPIO macros (#8315)
This commit is contained in:
		@@ -30,8 +30,8 @@
 | 
				
			|||||||
void inline apa102_setleds(LED_TYPE *ledarray, uint16_t leds) { apa102_setleds_pin(ledarray, leds, _BV(RGB_DI_PIN & 0xF), _BV(RGB_CLK_PIN & 0xF)); }
 | 
					void inline apa102_setleds(LED_TYPE *ledarray, uint16_t leds) { apa102_setleds_pin(ledarray, leds, _BV(RGB_DI_PIN & 0xF), _BV(RGB_CLK_PIN & 0xF)); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void static inline apa102_setleds_pin(LED_TYPE *ledarray, uint16_t leds, uint8_t pinmask_DI, uint8_t pinmask_CLK) {
 | 
					void static inline apa102_setleds_pin(LED_TYPE *ledarray, uint16_t leds, uint8_t pinmask_DI, uint8_t pinmask_CLK) {
 | 
				
			||||||
    pinMode(RGB_DI_PIN, PinDirectionOutput);
 | 
					    setPinOutput(RGB_DI_PIN);
 | 
				
			||||||
    pinMode(RGB_CLK_PIN, PinDirectionOutput);
 | 
					    setPinOutput(RGB_CLK_PIN);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    apa102_send_array((uint8_t *)ledarray, leds)
 | 
					    apa102_send_array((uint8_t *)ledarray, leds)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -90,7 +90,7 @@ void apa102_end_frame(uint16_t leds) {
 | 
				
			|||||||
void apa102_send_byte(uint8_t byte) {
 | 
					void apa102_send_byte(uint8_t byte) {
 | 
				
			||||||
    uint8_t i;
 | 
					    uint8_t i;
 | 
				
			||||||
    for (i = 0; i < 8; i++) {
 | 
					    for (i = 0; i < 8; i++) {
 | 
				
			||||||
    digitalWrite(RGB_DI_PIN, !!(byte & (1 << (7-i)));
 | 
					        writePin(RGB_DI_PIN, !!(byte & (1 << (7 - i))));
 | 
				
			||||||
    digitalWrite(RGB_CLK_PIN, PinLevelHigh);
 | 
					        writePinHigh(RGB_CLK_PIN);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include "pincontrol.h"
 | 
					 | 
				
			||||||
#include "config.h"
 | 
					#include "config.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum ssd1306_cmds {
 | 
					enum ssd1306_cmds {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,6 @@
 | 
				
			|||||||
#include "drashna.h"
 | 
					#include "drashna.h"
 | 
				
			||||||
#include "analog.h"
 | 
					#include "analog.h"
 | 
				
			||||||
#include "pointing_device.h"
 | 
					#include "pointing_device.h"
 | 
				
			||||||
#include "pincontrol.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define KC_X0 LT(_FN, KC_ESC)
 | 
					#define KC_X0 LT(_FN, KC_ESC)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include "pincontrol.h"
 | 
					 | 
				
			||||||
#include "action.h"
 | 
					#include "action.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum ssd1306_cmds {
 | 
					enum ssd1306_cmds {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include "pincontrol.h"
 | 
					 | 
				
			||||||
#include "action.h"
 | 
					#include "action.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum ssd1306_cmds {
 | 
					enum ssd1306_cmds {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			|||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
#include "protocol/serial.h"
 | 
					#include "protocol/serial.h"
 | 
				
			||||||
#include "timer.h"
 | 
					#include "timer.h"
 | 
				
			||||||
#include "pincontrol.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
@@ -96,27 +95,27 @@ void pins_init(void) {
 | 
				
			|||||||
 // set pins for pullups, Rts , power &etc. 
 | 
					 // set pins for pullups, Rts , power &etc. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //print ("pins setup\n");
 | 
					    //print ("pins setup\n");
 | 
				
			||||||
    pinMode(VCC_PIN, PinDirectionOutput);
 | 
					    setPinOutput(VCC_PIN);
 | 
				
			||||||
    digitalWrite(VCC_PIN, PinLevelLow);
 | 
					    writePinLow(VCC_PIN);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ( HANDSPRING == 0)
 | 
					#if ( HANDSPRING == 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CY835
 | 
					#ifdef CY835
 | 
				
			||||||
    pinMode(GND_PIN, PinDirectionOutput);
 | 
					    setPinOutput(GND_PIN);
 | 
				
			||||||
    digitalWrite(GND_PIN, PinLevelLow);
 | 
					    writePinLow(GND_PIN);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pinMode(PULLDOWN_PIN, PinDirectionOutput);
 | 
					    setPinOutput(PULLDOWN_PIN);
 | 
				
			||||||
    digitalWrite(PULLDOWN_PIN, PinLevelLow);
 | 
					    writePinLow(PULLDOWN_PIN);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pinMode(DCD_PIN, PinDirectionInput);
 | 
					    setPinInput(DCD_PIN);
 | 
				
			||||||
    pinMode(RTS_PIN, PinDirectionInput); 
 | 
					    setPinInput(RTS_PIN);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* check that the other side isn't powered up. 
 | 
					/* check that the other side isn't powered up. 
 | 
				
			||||||
    test=digitalRead(DCD_PIN);
 | 
					    test=readPin(DCD_PIN);
 | 
				
			||||||
    xprintf("b%02X:", test);
 | 
					    xprintf("b%02X:", test);
 | 
				
			||||||
    test=digitalRead(RTS_PIN);
 | 
					    test=readPin(RTS_PIN);
 | 
				
			||||||
    xprintf("%02X\n", test);
 | 
					    xprintf("%02X\n", test);
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -129,20 +128,20 @@ uint8_t rts_reset(void) {
 | 
				
			|||||||
// On boot, we keep rts as input, then switch roles here
 | 
					// On boot, we keep rts as input, then switch roles here
 | 
				
			||||||
// on leaving sleep, we toggle the same way
 | 
					// on leaving sleep, we toggle the same way
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    firstread=digitalRead(RTS_PIN);
 | 
					    firstread=readPin(RTS_PIN);
 | 
				
			||||||
   // printf("r%02X:", firstread);
 | 
					   // printf("r%02X:", firstread);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pinMode(RTS_PIN, PinDirectionOutput);
 | 
					    setPinOutput(RTS_PIN);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (firstread == PinLevelHigh) {
 | 
					    if (firstread) {
 | 
				
			||||||
        digitalWrite(RTS_PIN, PinLevelLow);
 | 
					        writePinLow(RTS_PIN);
 | 
				
			||||||
    } 
 | 
					    } 
 | 
				
			||||||
     _delay_ms(10);
 | 
					     _delay_ms(10);
 | 
				
			||||||
    digitalWrite(RTS_PIN, PinLevelHigh);  
 | 
					    writePinHigh(RTS_PIN);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* the future is Arm 
 | 
					/* the future is Arm 
 | 
				
			||||||
    if (palReadPad(RTS_PIN_IOPRT) == PinLevelLow)
 | 
					    if (!palReadPad(RTS_PIN_IOPRT))
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    _delay_ms(10);
 | 
					    _delay_ms(10);
 | 
				
			||||||
    palSetPadMode(RTS_PINn_IOPORT, PinDirectionOutput_PUSHPULL);
 | 
					    palSetPadMode(RTS_PINn_IOPORT, PinDirectionOutput_PUSHPULL);
 | 
				
			||||||
@@ -224,9 +223,9 @@ uint8_t handspring_handshake(void) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint8_t handspring_reset(void) {
 | 
					uint8_t handspring_reset(void) {
 | 
				
			||||||
    digitalWrite(VCC_PIN, PinLevelLow);
 | 
					    writePinLow(VCC_PIN);
 | 
				
			||||||
    _delay_ms(5);
 | 
					    _delay_ms(5);
 | 
				
			||||||
    digitalWrite(VCC_PIN, PinLevelHigh);
 | 
					    writePinHigh(VCC_PIN);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( handspring_handshake() ) {
 | 
					    if ( handspring_handshake() ) {
 | 
				
			||||||
        last_activity = timer_read();
 | 
					        last_activity = timer_read();
 | 
				
			||||||
@@ -250,7 +249,7 @@ void matrix_init(void)
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    print("power up\n");
 | 
					    print("power up\n");
 | 
				
			||||||
    digitalWrite(VCC_PIN, PinLevelHigh);
 | 
					    writePinHigh(VCC_PIN);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // wait for DCD strobe from keyboard - it will do this 
 | 
					    // wait for DCD strobe from keyboard - it will do this 
 | 
				
			||||||
    // up to 3 times, then the board needs the RTS toggled to try again
 | 
					    // up to 3 times, then the board needs the RTS toggled to try again
 | 
				
			||||||
@@ -265,7 +264,7 @@ void matrix_init(void)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else  /// Palm / HP  device with DCD
 | 
					#else  /// Palm / HP  device with DCD
 | 
				
			||||||
    while( digitalRead(DCD_PIN) != PinLevelHigh ) {;} 
 | 
					    while( !readPin(DCD_PIN) ) {;} 
 | 
				
			||||||
    print("dcd\n");
 | 
					    print("dcd\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rts_reset(); // at this point the keyboard should think all is well. 
 | 
					    rts_reset(); // at this point the keyboard should think all is well. 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include "pincontrol.h"
 | 
					 | 
				
			||||||
#include "action.h"
 | 
					#include "action.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum ssd1306_cmds {
 | 
					enum ssd1306_cmds {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include "pincontrol.h"
 | 
					 | 
				
			||||||
#include "action.h"
 | 
					#include "action.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum ssd1306_cmds {
 | 
					enum ssd1306_cmds {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include "pincontrol.h"
 | 
					 | 
				
			||||||
#include "action.h"
 | 
					#include "action.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum ssd1306_cmds {
 | 
					enum ssd1306_cmds {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include "pincontrol.h"
 | 
					 | 
				
			||||||
#include "action.h"
 | 
					#include "action.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum ssd1306_cmds {
 | 
					enum ssd1306_cmds {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,50 +0,0 @@
 | 
				
			|||||||
/* Copyright 2016 Wez Furlong
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
 * it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
					 | 
				
			||||||
 * (at your option) any later version.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
 * GNU General Public License for more details.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#pragma once
 | 
					 | 
				
			||||||
// Some helpers for controlling gpio pins
 | 
					 | 
				
			||||||
#include <avr/io.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum {
 | 
					 | 
				
			||||||
    PinDirectionInput  = 0,
 | 
					 | 
				
			||||||
    PinDirectionOutput = 1,
 | 
					 | 
				
			||||||
    PinLevelHigh       = 1,
 | 
					 | 
				
			||||||
    PinLevelLow        = 0,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// ex: pinMode(B0, PinDirectionOutput);
 | 
					 | 
				
			||||||
static inline void pinMode(uint8_t pin, int mode) {
 | 
					 | 
				
			||||||
    uint8_t bv = _BV(pin & 0xf);
 | 
					 | 
				
			||||||
    if (mode == PinDirectionOutput) {
 | 
					 | 
				
			||||||
        _SFR_IO8((pin >> 4) + 1) |= bv;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        _SFR_IO8((pin >> 4) + 1) &= ~bv;
 | 
					 | 
				
			||||||
        _SFR_IO8((pin >> 4) + 2) &= ~bv;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// ex: digitalWrite(B0, PinLevelHigh);
 | 
					 | 
				
			||||||
static inline void digitalWrite(uint8_t pin, int mode) {
 | 
					 | 
				
			||||||
    uint8_t bv = _BV(pin & 0xf);
 | 
					 | 
				
			||||||
    if (mode == PinLevelHigh) {
 | 
					 | 
				
			||||||
        _SFR_IO8((pin >> 4) + 2) |= bv;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        _SFR_IO8((pin >> 4) + 2) &= ~bv;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Return true if the pin is HIGH
 | 
					 | 
				
			||||||
// digitalRead(B0)
 | 
					 | 
				
			||||||
static inline bool digitalRead(uint8_t pin) { return _SFR_IO8(pin >> 4) & _BV(pin & 0xf); }
 | 
					 | 
				
			||||||
@@ -2,7 +2,6 @@
 | 
				
			|||||||
#define SOLENOID_H
 | 
					#define SOLENOID_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <timer.h>
 | 
					#include <timer.h>
 | 
				
			||||||
#include "pincontrol.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SOLENOID_DEFAULT_DWELL 12
 | 
					#define SOLENOID_DEFAULT_DWELL 12
 | 
				
			||||||
@@ -45,7 +44,7 @@ void solenoid_toggle(void) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void solenoid_stop(void) {
 | 
					void solenoid_stop(void) {
 | 
				
			||||||
  digitalWrite(SOLENOID_PIN, PinLevelLow);
 | 
					  writePinLow(SOLENOID_PIN);
 | 
				
			||||||
  solenoid_on = false;
 | 
					  solenoid_on = false;
 | 
				
			||||||
  solenoid_buzzing = false;
 | 
					  solenoid_buzzing = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -59,7 +58,7 @@ void solenoid_fire(void) {
 | 
				
			|||||||
  solenoid_on = true;
 | 
					  solenoid_on = true;
 | 
				
			||||||
  solenoid_buzzing = true;
 | 
					  solenoid_buzzing = true;
 | 
				
			||||||
  solenoid_start = timer_read();
 | 
					  solenoid_start = timer_read();
 | 
				
			||||||
  digitalWrite(SOLENOID_PIN, PinLevelHigh);
 | 
					  writePinHigh(SOLENOID_PIN);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void solenoid_check(void) {
 | 
					void solenoid_check(void) {
 | 
				
			||||||
@@ -80,20 +79,20 @@ void solenoid_check(void) {
 | 
				
			|||||||
    if (elapsed / SOLENOID_MIN_DWELL % 2 == 0){
 | 
					    if (elapsed / SOLENOID_MIN_DWELL % 2 == 0){
 | 
				
			||||||
      if (!solenoid_buzzing) {
 | 
					      if (!solenoid_buzzing) {
 | 
				
			||||||
        solenoid_buzzing = true;
 | 
					        solenoid_buzzing = true;
 | 
				
			||||||
        digitalWrite(SOLENOID_PIN, PinLevelHigh);
 | 
					        writePinHigh(SOLENOID_PIN);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
      if (solenoid_buzzing) {
 | 
					      if (solenoid_buzzing) {
 | 
				
			||||||
        solenoid_buzzing = false;
 | 
					        solenoid_buzzing = false;
 | 
				
			||||||
        digitalWrite(SOLENOID_PIN, PinLevelLow);
 | 
					        writePinLow(SOLENOID_PIN);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void solenoid_setup(void) {
 | 
					void solenoid_setup(void) {
 | 
				
			||||||
  pinMode(SOLENOID_PIN, PinDirectionOutput);
 | 
					  setPinOutput(SOLENOID_PIN);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user