5 #include <config/hardware.h>
10 MM_FIRST_SLOW_SAMPLE
, /* If clock arrives, we stay on the fast path! */
12 MM_FAST_WAIT_FOR_CLOCK
,
15 MM_SLOW_WAIT_FOR_CLOCK_DELAY
,
16 MM_SLOW_WAIT_FOR_CLOCK
,
19 #ifdef MM_USE_REGISTER_VARS
21 uint8_t register shift_command
asm("r2");
22 uint8_t register shift_function
asm("r3");
23 uint8_t register shift_address
asm("r4");
24 uint8_t register recstate
asm("r5");
25 uint8_t register bitno
asm("r6");
27 static void inline __attribute((unused
)) mm_init(void)
40 * mm_switch_command - Callback function!
42 * This function must be defined whenever the mm_switch module is used.
43 * It will be called from interrupt context whenever a new valid command
46 * decoder is in the range from 1 to 25. Other values will not occur.
48 * key is in the range from 0 to 8:
50 * 1 - key1 green pressed
51 * 2 - key1 red pressed
52 * 3 - key2 green pressed
53 * 4 - key2 red pressed
58 void mm_switch_command(uint8_t decoder
, uint8_t key
);
63 void mm_switch_drive_cb(uint8_t address
, uint8_t speed
, uint8_t functions
, uint8_t flags
);
65 void mm_switch_drive(uint8_t decoder
, uint8_t function
, uint8_t command
);
67 void mm_switch_pinchange_callback(void);