// -------------------------------------------------- //
// This file is autogenerated by pioasm; do not edit! //
// -------------------------------------------------- //

#if !PICO_NO_HARDWARE
#include "hardware/pio.h"
#endif

// ------ //
// ws2811 //
// ------ //

#define ws2811_wrap_target 0
#define ws2811_wrap 30

#define ws2811_offset_num_bits_const_1 3u
#define ws2811_offset_num_bits_shift_1 5u
#define ws2811_offset_num_bits_const_2 12u
#define ws2811_offset_num_bits_shift_2 14u

static const uint16_t ws2811_program_instructions[] = {
            //     .wrap_target
    0xa047, //  0: mov    y, osr                     
    0x00dc, //  1: jmp    pin, 28                    
    0x0081, //  2: jmp    y--, 1                     
    0xe038, //  3: set    x, 24                      
    0xa0c1, //  4: mov    isr, x                     
    0x4061, //  5: in     null, 1                    
    0xa026, //  6: mov    x, isr                     
    0xa0c3, //  7: mov    isr, null                  
    0x0049, //  8: jmp    x--, 9                     
    0xa047, //  9: mov    y, osr                     
    0x00d6, // 10: jmp    pin, 22                    
    0x008a, // 11: jmp    y--, 10                    
    0xe058, // 12: set    y, 24                      
    0xa0c2, // 13: mov    isr, y                     
    0x4061, // 14: in     null, 1                    
    0xa046, // 15: mov    y, isr                     
    0x0091, // 16: jmp    y--, 17                    
    0x00b3, // 17: jmp    x != y, 19                 
    0x0003, // 18: jmp    3                          
    0x4061, // 19: in     null, 1                    
    0x0053, // 20: jmp    x--, 19                    
    0x0003, // 21: jmp    3                          
    0xbe42, // 22: nop                           [30]
    0xbe42, // 23: nop                           [30]
    0x4001, // 24: in     pins, 1                    
    0x2020, // 25: wait   0 pin, 0                   
    0x0049, // 26: jmp    x--, 9                     
    0x0000, // 27: jmp    0                          
    0xe001, // 28: set    pins, 1                    
    0x2020, // 29: wait   0 pin, 0                   
    0xe000, // 30: set    pins, 0                    
            //     .wrap
};

#if !PICO_NO_HARDWARE
static const struct pio_program ws2811_program = {
    .instructions = ws2811_program_instructions,
    .length = 31,
    .origin = -1,
};

static inline pio_sm_config ws2811_program_get_default_config(uint offset) {
    pio_sm_config c = pio_get_default_sm_config();
    sm_config_set_wrap(&c, offset + ws2811_wrap_target, offset + ws2811_wrap);
    return c;
}
#endif

