#!/usr/bin/python

import time
import smbus

from picamera import PiCamera
camera = PiCamera()


#USerdata
CircularDedrees =0
NumberPhotos = 0
Vertical = "NO"
VerticalDegrees = 0;
VerticalSteps = 0;

Folder ="/home/pi/scan_xx/"

# Comunication i2C steup
slaveAddress = 0x18
i2c = smbus.SMBus(1)




def RequisitaDatosArduino():
    msg_recebida =""
    palavra =""
    valor_recebido = ""
    
    dados_recebidos_Arduino = i2c.read_i2c_block_data(slaveAddress, 0,11)
    #for i in range(len(dados_recebidos_Arduino)):
    #   msg_recebida += chr(dados_recebidos_Arduino[i])
    #print(msg_recebida)
    
    print("Length of arduino massage:", len(dados_recebidos_Arduino))
    #print(len(dados_recebidos_Arduino))

    for i in range(0, 6): palavra += chr(dados_recebidos_Arduino[i])
    print("LaberlArduino: " + palavra)

    

    for i in range(7,len(dados_recebidos_Arduino)):
      valor_recebido += chr(dados_recebidos_Arduino[i])
    print("ValorArduino: " + valor_recebido)
    dados_recebidos_Arduino ="&"
    msg_recebida = "+"
   
msg_recebida = "*****"
#fotos += 1

#function that send to Arduino just a simple int
def EnviaDadosArduino():
    global fotos
    fotos += 1
    
    print("fotos:", fotos)
    #print(fotos)
    i2c.write_byte(slaveAddress, fotos)
    
#function that send to Arduino a set of control number's    
def enviaControlosArduino():
    #message will have:  control01, control02, control03, control04)
    message = [1, 2, 3, 4]
    print("controlos:", message)
    i2c.write_i2c_block_data(slaveAddress, 3, message)


def UserInterface():
    global CircularDedrees
    global NumberPhotos
    global Vertical
    global VerticalDegrees
    global VerticalSteps
    CircularDedrees = 0
    while (int(CircularDedrees) == 0 or int(CircularDedrees) >= 360):
        print("Circular Degrees (1-360): ")
        CircularDedrees = input()
        
    while (int(NumberPhotos) == 0 or (int(NumberPhotos) > int(CircularDedrees))):
        print("Number of Photos around (1 - Circular Degrees): ")
        NumberPhotos = input()
   
    print("Use Vertical Movement? (YES / NO: ")
    Vertical = input()
    if Vertical == "YES":
        while (int(VerticalDegrees) == 0 or (int(VerticalDegrees) >= 90)):
            print("Vertical Degrees (1-90): ")
            VerticalDegrees = input()
            while (int(VerticalSteps) == 0 or int(VerticalSteps) >= 10):
                print("Vertical Steps (1-10): ")
                VerticalSteps = input()
    


def UserCalculos():
    #Circular stops per photo
    global Circular_Sep
    global camera
    global VerticalSteps
    Circular_Sep = 0
    Circular_Sep = int(int(CircularDedrees) / (int(NumberPhotos)-1))

    camera.resolution = (320, 249)

    print("Circular Stepes=" + str(Circular_Sep))
    print("Number of Photos=" + str(NumberPhotos))

    if Vertical == "NO":
        for i in  range (int(NumberPhotos)):
            gggg = IntToString3long(i)
            print("C" + IntToString3long(i))
            fotoname = Folder + "V00"+ "C" + IntToString3long(i) +".jpg"

            print(fotoname)
            camera.capture(fotoname)
    else:
        for v in range (int(VerticalSteps)):
            for c in  range (int(NumberPhotos)):
                vvvv = IntToString3long(v+1)
                cccc = IntToString3long(c+1)
                fotoname = Folder + "V" + vvvv + "C" + cccc +".jpg"
                print()
                
                print(fotoname)

            
    
    
def IntToString3long(x):
    if len(str(x)) < 3:
        if len(str(x)) == 2:
            return "0" + str(x)
        else:
            return "00" + str(x)
    else:
        return str(x)

while 1:
    #RequisitaDatosArduino()
    #EnviaDadosArduino()
    #enviaControlosArduino()
    #time.sleep(5)

    UserInterface()
    UserCalculos()
    break
