You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
1.7 KiB
C

#ifndef __PINCFG_H__
#define __PINCFG_H__
typedef enum: uint8_t {
PIN_MODE_DIG_IN = 0,
PIN_MODE_ANA_IN,
PIN_MODE_DIG_OUT,
PIN_MODE_ANA_OUT,
PIN_MODE_UNUSED = 0xFF
} PIN_MODES;
typedef enum: uint8_t {
PULLUP_OFF,
PULLUP_ON
} PULLUP_MODES;
typedef enum: uint8_t {
EDGE_RISING,
EDGE_FALLING
} EDGE_POLARITY;
typedef enum: uint8_t {
MIDI_CMD_SNAPSHOT = 0, // call snapshot
MIDI_CMD_FADER_ABS, // direct set fader value
MIDI_CMD_FADER_REL, // inc/dec fader value
MIDI_CMD_MUTE, // direct set mute state
MIDI_CMD_MUTE_TOGGLE, // toggle mute state
MIDI_CMD_PAN, // direct set panorama
MIDI_CMD_NONE = 0xFF // no command assigned
} MIDI_CMD_TYPES;
struct MidiSelVal {
uint8_t chsel; // control element select (channel ID)
uint8_t val; // value of control element
};
struct MidiFaderRel {
uint8_t chsel; // fader chan ID
int8_t step; // step size (neg:downward, pos:upward)
uint8_t min; // lowest fader value
uint8_t max; // highest fader value
};
struct MidiMute {
uint8_t chsel; // mute chan ID
uint8_t edgecfg; // -1:
};
union MidiCmdCfg {
uint8_t Snapshot;
MidiSelVal FaderAbs;
MidiSelVal Mute;
MidiSelVal Pan;
MidiFaderRel FaderRel;
MidiMuteToggle MuteToggle;
};
struct PinCfg {
uint8_t PinSel;
PIN_MODES Mode;
union {
struct {
PULLUP_MODES Pullup;
MIDI_CMD_TYPES MidiCmd;
} CfgDigIn;
struct {
uint8_t todo;
} CfgAnaIn;
struct {
uint8_t todo;
} CfgDigOut;
struct {
uint8_t todo;
} CfgAnaOut;
};
};
#endif