#! /usr/bin/env python3

def deinterlace( number):
    mask = 0x80000000

    even = 0
    odd = 0

    while( mask > 0):
        even = even << 1
        if ( mask & number) > 0:
            even += 1
        mask >>= 1

        odd = odd << 1
        if (mask & number) > 0:
            odd += 1
        mask >>= 1

    return ( even << 4) | odd

def test():
    for index in range( 16):
        eo = deinterlace( index)
        print( "{0:04b}:  {1:04b}  {2:04b}".format( index, eo >> 4, eo & 0xf))

def print_list( l,header, footer):
    print( header)
    for index, e in enumerate( l):
        print( "{0:3d}".format( e), end=''),
        if index < len( l) - 1:
            print( ",", end='')
        if( index % 16) == 15:
            print( "")
    print( footer)

#test()
#exit()

evenodds = [deinterlace( x) for x in range( 256)]

print( "#ifndef DEINTERLEAVE_H")
print( "#define DEINTERLEAVE_H")
print( "#include <inttypes.h>")
print_list( evenodds, "const __flash uint8_t even_odd_bits[] = {", "};")
print( "#endif //DEINTERLEAVE_H")
