#!/usr/bin/env python

import os
import sys
import time

import ardurpc
from ardurpc.connector.serial import Serial

from PIL import Image


def run():
    if len(sys.argv) < 2:
        print('No image file given')
        sys.exit(0)

    img_file = sys.argv[1]
    if not os.path.exists(img_file):
        print('No image file given')
        sys.exit(0)

    con = Serial('/dev/rfcomm0', 19200)

    rpc = ardurpc.ArduRPC(connector=con)

    print('Version(Protocol): {0}'.format(rpc.getProtocolVersion()))
    print(rpc.getLibraryVersion())
    print('Version(Library): {0}'.format('.'.join([str(i) for i in rpc.getLibraryVersion()])))
    print('Handlers: {0}'.format(', '.join(rpc.get_handler_names())))

    display = rpc.get_handler_by_name("matrix")
    display.setAutoSwapBuffers(True)

    img = Image.open(img_file)
    width, height = img.size
    bitmap = b''
    for y in range(0, height):
       for x in range(0, width):
         pixel = img.getpixel((x,y))
         bitmap += bytes(pixel[:3])

    display.drawBitmap(0, 0, width, height, bitmap)

if __name__ == "__main__":
    run()
