Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix parentheses in macros, and in general clean up quantum.h #5021

Merged
merged 14 commits into from
Jul 9, 2019
Merged
106 changes: 48 additions & 58 deletions quantum/quantum.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,24 +24,25 @@
#if defined(PROTOCOL_CHIBIOS)
#include "hal.h"
#endif

#include "wait.h"
#include "matrix.h"
#include "keymap.h"

#ifdef BACKLIGHT_ENABLE
#ifdef LED_MATRIX_ENABLE
#include "ledmatrix.h"
#else
#include "backlight.h"
#endif
#endif
#ifdef RGBLIGHT_ENABLE
#include "rgblight.h"
#else
#ifdef RGB_MATRIX_ENABLE
/* dummy define RGBLIGHT_MODE_xxxx */
#define RGBLIGHT_H_DUMMY_DEFINE
#include "rgblight.h"
#endif

#if defined(RGBLIGHT_ENABLE)
#include "rgblight.h"
#elif defined(RGB_MATRIX_ENABLE)
vomindoraan marked this conversation as resolved.
Show resolved Hide resolved
// Dummy define RGBLIGHT_MODE_xxxx
#define RGBLIGHT_H_DUMMY_DEFINE
#include "rgblight.h"
#endif

#ifdef SPLIT_KEYBOARD
Expand All @@ -54,35 +55,33 @@

#include "action_layer.h"
#include "eeconfig.h"
#include <stddef.h>
#include "bootloader.h"
#include "timer.h"
#include "config_common.h"
#include "led.h"
#include "action_util.h"
#include <stdlib.h>
#include "print.h"
#include "send_string_keycodes.h"
#include "suspend.h"
#include <stddef.h>
#include <stdlib.h>

extern uint32_t default_layer_state;

#ifndef NO_ACTION_LAYER
extern uint32_t layer_state;
#endif

#ifdef MIDI_ENABLE
#ifdef MIDI_ADVANCED
#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)
#include "process_midi.h"
#endif
#endif // MIDI_ENABLE

#ifdef AUDIO_ENABLE
#include "audio.h"
#include "process_audio.h"
#ifdef AUDIO_CLICKY
#include "process_clicky.h"
#endif // AUDIO_CLICKY
#endif
#endif

#ifdef STENO_ENABLE
Expand Down Expand Up @@ -110,7 +109,7 @@ extern uint32_t default_layer_state;
#endif

#ifdef TAP_DANCE_ENABLE
#include "process_tap_dance.h"
#include "process_tap_dance.h"
vomindoraan marked this conversation as resolved.
Show resolved Hide resolved
#endif

#ifdef PRINTING_ENABLE
Expand Down Expand Up @@ -143,50 +142,38 @@ extern uint32_t default_layer_state;
#include "haptic.h"
#endif

//Function substitutions to ease GPIO manipulation
#ifdef __AVR__
#define PIN_ADDRESS(p, offset) _SFR_IO8(ADDRESS_BASE + (p >> PORT_SHIFTER) + offset)

#define pin_t uint8_t
vomindoraan marked this conversation as resolved.
Show resolved Hide resolved
#define setPinInput(pin) PIN_ADDRESS(pin, 1) &= ~ _BV(pin & 0xF)
#define setPinInputHigh(pin) ({\
vomindoraan marked this conversation as resolved.
Show resolved Hide resolved
PIN_ADDRESS(pin, 1) &= ~ _BV(pin & 0xF);\
PIN_ADDRESS(pin, 2) |= _BV(pin & 0xF);\
})
#define setPinInputLow(pin) _Static_assert(0, "AVR Processors cannot impliment an input as pull low")
#define setPinOutput(pin) PIN_ADDRESS(pin, 1) |= _BV(pin & 0xF)

#define writePinHigh(pin) PIN_ADDRESS(pin, 2) |= _BV(pin & 0xF)
#define writePinLow(pin) PIN_ADDRESS(pin, 2) &= ~_BV(pin & 0xF)
static inline void writePin(pin_t pin, uint8_t level){
vomindoraan marked this conversation as resolved.
Show resolved Hide resolved
if (level){
PIN_ADDRESS(pin, 2) |= _BV(pin & 0xF);
} else {
PIN_ADDRESS(pin, 2) &= ~_BV(pin & 0xF);
}
}

#define readPin(pin) ((bool)(PIN_ADDRESS(pin, 0) & _BV(pin & 0xF)))
// Function substitutions to ease GPIO manipulation
#if defined(__AVR__)
typedef uint8_t pin_t;

#define PIN_ADDRESS(p, offset) (_SFR_IO8(ADDRESS_BASE + ((p) >> PORT_SHIFTER) + (offset)))
#define setPinInput(pin) (PIN_ADDRESS(pin, 1) &= ~_BV((pin) & 0xF))
#define setPinInputHigh(pin) (PIN_ADDRESS(pin, 1) &= ~_BV((pin) & 0xF), \
PIN_ADDRESS(pin, 2) |= _BV((pin) & 0xF))
#define setPinInputLow(pin) _Static_assert(0, "AVR processors cannot implement an input as pull low")
#define setPinOutput(pin) (PIN_ADDRESS(pin, 1) |= _BV((pin) & 0xF))

#define writePinHigh(pin) (PIN_ADDRESS(pin, 2) |= _BV((pin) & 0xF))
#define writePinLow(pin) (PIN_ADDRESS(pin, 2) &= ~_BV((pin) & 0xF))
#define writePin(pin, level) ((level) ? writePinHigh(pin) : writePinLow(pin))

#define readPin(pin) ((bool)(PIN_ADDRESS(pin, 0) & _BV((pin) & 0xF)))
#elif defined(PROTOCOL_CHIBIOS)
#define pin_t ioline_t
#define setPinInput(pin) palSetLineMode(pin, PAL_MODE_INPUT)
#define setPinInputHigh(pin) palSetLineMode(pin, PAL_MODE_INPUT_PULLUP)
#define setPinInputLow(pin) palSetLineMode(pin, PAL_MODE_INPUT_PULLDOWN)
#define setPinOutput(pin) palSetLineMode(pin, PAL_MODE_OUTPUT_PUSHPULL)

#define writePinHigh(pin) palSetLine(pin)
#define writePinLow(pin) palClearLine(pin)
static inline void writePin(pin_t pin, uint8_t level){
if (level){
palSetLine(pin);
} else {
palClearLine(pin);
}
}

#define readPin(pin) palReadLine(pin)
typedef ioline_t pin_t;

#define setPinInput(pin) palSetLineMode(pin, PAL_MODE_INPUT)
#define setPinInputHigh(pin) palSetLineMode(pin, PAL_MODE_INPUT_PULLUP)
#define setPinInputLow(pin) palSetLineMode(pin, PAL_MODE_INPUT_PULLDOWN)
#define setPinOutput(pin) palSetLineMode(pin, PAL_MODE_OUTPUT_PUSHPULL)

#define writePinHigh(pin) palSetLine(pin)
#define writePinLow(pin) palClearLine(pin)
#define writePin(pin, level) ((level) ? writePinHigh(pin) : writePinLow(pin))

#define readPin(pin) palReadLine(pin)
#endif

// Send string macros
#define STRINGIZE(z) #z
#define ADD_SLASH_X(y) STRINGIZE(\x ## y)
#define SYMBOL_STR(x) ADD_SLASH_X(x)
Expand All @@ -195,6 +182,7 @@ extern uint32_t default_layer_state;
#define SS_DOWN(keycode) "\2" SYMBOL_STR(keycode)
#define SS_UP(keycode) "\3" SYMBOL_STR(keycode)

// `string` arguments must not be parenthesized
#define SS_LCTRL(string) SS_DOWN(X_LCTRL) string SS_UP(X_LCTRL)
#define SS_LGUI(string) SS_DOWN(X_LGUI) string SS_UP(X_LGUI)
#define SS_LCMD(string) SS_LGUI(string)
Expand All @@ -204,9 +192,11 @@ extern uint32_t default_layer_state;
#define SS_RALT(string) SS_DOWN(X_RALT) string SS_UP(X_RALT)
#define SS_ALGR(string) SS_RALT(string)

#define SEND_STRING(str) send_string_P(PSTR(str))
#define SEND_STRING(string) send_string_P(PSTR(string))

extern const bool ascii_to_shift_lut[0x80];
extern const uint8_t ascii_to_keycode_lut[0x80];

void send_string(const char *str);
void send_string_with_delay(const char *str, uint8_t interval);
void send_string_P(const char *str);
Expand Down Expand Up @@ -268,8 +258,8 @@ void breathing_period_set(uint8_t value);
void breathing_period_inc(void);
void breathing_period_dec(void);
#endif

#endif

void send_dword(uint32_t number);
void send_word(uint16_t number);
void send_byte(uint8_t number);
Expand Down