Skip to content

Commit

Permalink
Implemented class structure for servo module
Browse files Browse the repository at this point in the history
  • Loading branch information
jamestaylr committed Jul 30, 2015
1 parent f8e31f7 commit 3f15276
Showing 1 changed file with 15 additions and 19 deletions.
34 changes: 15 additions & 19 deletions src/modules/servo.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,10 @@
#!/usr/bin/python
import socket, sys, time, json, threading, logging
from thread import *

def generate_error(message):
print '\033[31m\033[1m%s\033[0m\033[39m' % message

try:
import RPi.GPIO as GPIO
except ImportError:
generate_error('[Servo Socket]: GPIO not configured properly!')
sys.exit(1)
from utils import setup_logging

class ServoController():

class Servo():

def blink(self, angle, pin, scale_factor, zero_point, ticks):
a = (((angle)/180.0) * scale_factor + zero_point)/1000.0

Expand All @@ -27,7 +17,16 @@ def blink(self, angle, pin, scale_factor, zero_point, ticks):
# Time between pulses
time.sleep(0.015)

def __init__(self, port, pin, scale_factor, zero_point):
def __init__(self, name, port, pin, scale_factor, zero_point):
logger = logging.getLogger('log')
setup_logging(name)

try:
import RPi.GPIO as GPIO
except ImportError:
logger.critical('[Servo Socket]: GPIO not configured properly!')
sys.exit(1)

self.port = port
self.pin = pin
self.scale_factor = scale_factor
Expand All @@ -42,13 +41,13 @@ def __init__(self, port, pin, scale_factor, zero_point):
PORT = self.port

connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connection.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
connection.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# Bind socket to local host and port
try:
connection.bind((HOST, PORT))
except socket.error, msg:
generate_error('[Servo Socket]: Bind failed. Error Code: ' + str(msg[0]) + ' Message ' \
logger.critical('[Servo Socket]: Bind failed. Error Code: ' + str(msg[0]) + ' Message ' \
+ msg[1])
sys.exit()

Expand All @@ -65,7 +64,6 @@ def clientthread(conn):

# Infinite loop so that function do not terminate and thread do not end
while True:

# Receive data from the client
data = conn.recv(16)
if not data:
Expand All @@ -74,14 +72,13 @@ def clientthread(conn):
try:
servo.blink(float(data), self.pin, self.scale_factor, self.zero_point, 10)
except ValueError:
generate_error('[Servo Socket]: Recieved extraneous angle value: %s' % data)
logger.critical('[Servo Socket]: Recieved extraneous angle value: %s' % data)

# Close the connection if the client if the client and server connection is interfered
conn.close()

# Main loop to keep the server process going
while True:

try:
# Wait to accept a connection in a blocking call
(conn, addr) = connection.accept()
Expand All @@ -96,5 +93,4 @@ def clientthread(conn):
connection.close()
break

ServoController(int(sys.argv[1]), int(sys.argv[2]), float(sys.argv[3]), float(sys.argv[4]))

ServoController(sys.argv[1], int(sys.argv[2]), int(sys.argv[3]), float(sys.argv[4]), float(sys.argv[5]))

0 comments on commit 3f15276

Please sign in to comment.