import boto3
import importlib
import os
import sys
import linuxcnc

MODES = {
    linuxcnc.MODE_MANUAL: 'MANUAL',
    linuxcnc.MODE_AUTO  : 'AUTO',
    linuxcnc.MODE_MDI   : 'MDI'
    }


s=linuxcnc.stat()
c=linuxcnc.command()

def print_mode():
	s.poll()
	print "Current MODE: ", MODES[s.task_mode]



sqs_client = boto3.client(
	'sqs',
	region_name='eu-central-1',
	aws_access_key_id='AKIAS5AWEKP2OBREGAQW',
	aws_secret_access_key='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'
)

s3_client = boto3.client(
	's3',
	aws_access_key_id='AKIAS5AWEKP2OBREGAQW',
	aws_secret_access_key='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'
)
print("Retrieving orders...\n")

response = sqs_client.receive_message(
	QueueUrl='https://sqs.eu-central-1.amazonaws.com/199762400244/devmssn',
	AttributeNames=[
		'All',
	],
	MessageAttributeNames=[
		'All',
	],
	MaxNumberOfMessages=10,
	VisibilityTimeout=5,
	WaitTimeSeconds=20,
)

def ok_for_mdi():
	c.mode(linuxcnc.MODE_MDI)
	s.poll()
	return not s.estop and s.enabled and (s.homed.count(1) == s.axes) and (s.interp_state == linuxcnc.INTERP_IDLE)

for message in response['Messages']:
	print("Order ID:"+message['MessageAttributes']['Order']['StringValue']+"\n")
	print("GCODE file name: "+message['Body']+"\n")
	
	s3_client.download_file('devmssn', 'orders/'+message['MessageAttributes']['Order']['StringValue']+'/'+message['Body'], message['Body'])

	print("GCODE downloaded...\n")

	f = open(message['Body'], "r")
	while 1:
		gcode_line=f.readline()
		#print(gcode_line)
		if gcode_line == '':
			break

		if ok_for_mdi():
			c.mdi(gcode_line)
			c.wait_complete()

	r=sqs_client.delete_message(
		QueueUrl='https://sqs.eu-central-1.amazonaws.com/199762400244/devmssn',
		ReceiptHandle=message['ReceiptHandle']
	)

	

