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
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
|