Skip to content

Commit

Permalink
Added kernel, got communication working as well as a demonstratable p…
Browse files Browse the repository at this point in the history
…roduct.
  • Loading branch information
Jonathan Sharer committed Nov 23, 2008
1 parent 06dfa51 commit 9e47656
Show file tree
Hide file tree
Showing 5 changed files with 184 additions and 38 deletions.
79 changes: 61 additions & 18 deletions Arduino/valueinc/valueinc.pde
Expand Up @@ -3,41 +3,84 @@
* an attached LCD.
*/

int thePinMode = HIGH;
int defaultPinMode = LOW;

void handle();

void setup()
{
Serial.begin(9600);

int pin = 13;
pinMode(pin, OUTPUT);
digitalWrite(pin, thePinMode);
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(0, defaultPinMode);
digitalWrite(1, defaultPinMode);
digitalWrite(2, defaultPinMode);
digitalWrite(3, defaultPinMode);
digitalWrite(4, defaultPinMode);
digitalWrite(5, defaultPinMode);
digitalWrite(6, defaultPinMode);
digitalWrite(7, defaultPinMode);
digitalWrite(8, defaultPinMode);
digitalWrite(9, defaultPinMode);
digitalWrite(10, defaultPinMode);
digitalWrite(11, defaultPinMode);
digitalWrite(12, defaultPinMode);
digitalWrite(13, defaultPinMode);
}

void loop()
{
// when characters arrive over the serial port...
if (Serial.available()) {
// read all the available characters
char input = 'X';
while (Serial.available() > 0) {
Serial.read();
handle();
input = Serial.read();
if (input != 'S'){
//setPin();
digitalWrite(13, HIGH);
delay(100);
digitalWrite(13, LOW);
}
if (input == 'R'){
// readPin();
}
}
}
}

void handle(){
togglePinLight();
}

void togglePinLight(){
if(thePinMode == HIGH){
thePinMode = LOW;
}else{
thePinMode = HIGH;
}

digitalWrite(13,thePinMode);
void setPin(){
char type = 'D';
char pin0 = '0';
char pin1 = '0';
char value = 'L';
int pin = 0;

type = Serial.read();
pin0 = Serial.read();
pin1 = Serial.read();
value = Serial.read();

pin = ( int(pin0) * 10 ) + int(pin1);

if(type == 'D'){
if(value == 'L'){
digitalWrite(pin, LOW);
}else{
digitalWrite(pin, HIGH);
}
}
}
50 changes: 45 additions & 5 deletions Core/Arduino/arduino-shell.py
Expand Up @@ -20,32 +20,72 @@ def __init__(self,path):

def getOpts(self):
"""docstring for getOpts"""
sys.stdout.write("1. Read\n2. Write\n3. Abort\n")
sys.stdout.write("1. Debug Mode\n2. Write\n3. Abort\n")

def opIsValid(self,op):
if op == "1":
print "It's 1 - read"
print "It's 1 - Debug Mode"
return True
elif op == "2":
print "It's 2 - write"
print "It's 2 - Write"
return True
elif op == "3":
print "It's 3 - abort"
print "It's 3 - Abort"
return True
return False

def handleOp(self,op):
"""docstring for handleOp"""
print "OP: ", op
if op == "1":
self.handleRead()
self.handleDebug()
elif op == "2":
self.handleWrite()
elif op == "3":
self.handleAbort()
return True
return False

def handleDebug(self):
while True:
print "Debug Menu"
print "----------\n"
print "1. Read Digital Pin"
print "2. Set Digital Pin"
print "3. Read Analog Pin"
print "4. Set Analog Pin"
print "0. Leave"
dopt = sys.stdin.readline().rstrip()

if dopt == "1":
print "Pin Number(0-13):"
pinNo = int(sys.stdin.readline().rstrip())
if pinNo >= 0 & pinNo <= 13:
value = self.board.readDPin(pinNo)
print value
elif dopt == "2":
print "Pin Number(0-13):"
pinNo = int(sys.stdin.readline().rstrip())
if pinNo >= 0 & pinNo <= 13:
print "On or Off (1/0)?"
value = int(sys.stdin.readline().rstrip())
if value >=0 & value <=1:
self.board.setDPin(pinNo, value)
else:
print "Value out of range."
else:
print "Value out of range."
elif dopt == "3":
print "Pin Number (0-5):"
pinNo = int(sys.stdin.readline().rstrip())
if pinNo >= 0 & pinNo <= 13:
print self.board.readAPin(pinNo)
elif dopt == "0":
break
else:
print "Value out of range."
return True

def handleRead(self):
"""docstring for handleRead"""
print "Reading: ", self.board.readLine()
Expand Down
39 changes: 36 additions & 3 deletions Core/Arduino/arduino.py
Expand Up @@ -10,6 +10,7 @@
import sys
import os
import unittest
import time

#from device import Device
import serial
Expand All @@ -18,7 +19,7 @@ class Arduino:
serialConnection = None

def __init__(self, path):
self.serialConnection = serial.Serial(path,9600)
self.serialConnection = serial.Serial(path,4800)
pass

def __del__(self):
Expand All @@ -38,15 +39,47 @@ def canAccessConnection(self):
def readLine(self):
"""docstring for readLine"""
if self.canAccessConnection():
return self.serialConnection.readline()
if self.serialConnection.inWaiting() > 0:
return self.serialConnection.readline()
else:
print "No data"
else:
return None
pass

def writeLine(self,line):
"""docstring for writeLine"""
if self.canAccessConnection():
self.serialConnection.write(line)
for i in range(0, len(line)):
self.serialConnection.write(line[i])
time.sleep(0.1)

def readDPin(self,pin):
command = "R1" + str(pin)
self.serialConnection.flushInput()
self.serialConnection.flushOutput()
self.writeLine(command)
result = self.readLine()
result = result[result.find("Value: ")+7:result.find("Value: ")+10]
if result[2] == '-':
result = result[:1]
return result

def setDPin(self,pin,value):
command = "S1" + str(pin) + str(value)
self.writeLine(command)
return True

def readAPin(self,pin):
command = "R0" + str(pin)
self.serialConnection.flushInput()
self.serialConnection.flushOutput()
self.writeLine(command)
result = self.readLine()
result = result[result.find("Value: ")+7:result.find("Value: ")+10]
if result[2] == '-':
result = result[:1]
return result

class ArduinoTests(unittest.TestCase):
def setUp(self):
Expand Down
51 changes: 40 additions & 11 deletions Core/HALServer/hald.py
@@ -1,24 +1,53 @@
#!/usr/bin/env python
# encoding: utf-8
"""
HALd.py
hald.py
Bootstrapping code to initiate the server and load debugging information
Created by Steve Streza on 2008-09-10.
Copyright (c) 2008 Steve Streza. All rights reserved.
Created by Jonathan Sharer on 2008-11-22.
Copyright (c) 2008 __MyCompanyName__. All rights reserved.
"""

import sys
import os
from halserver import HALServer
import arduino


def main():
"Initiate the HAL Server and start the run loop"
server = HALServer()
server.run()
pass
class hald:
switch = {'testLight': 'A113'} # address format: <Controller(char)><Digital(1/0)><Pin Number>
analog = {'testAnalog': 'A00'}
arduino = {}

def __init__(self):
pass

def setSwitch(self,name,state):
address = self.switch[name]
controller = address[0:1]
digital = address[1:2]
pinNo = address[2:4]
#command = "S" + str(digital) + str(pinNo) + str(state)
#self.arduino[controller].writeLine(command)
self.arduino[controller].setDPin(pinNo, state)

def readSwitch(self,name):
address = self.switch[name]
controller = address[0:1]
digital = address[1:2]
pinNo = address[2:4]
return self.arduino[controller].readDPin(pinNo)

def getSwitches():
return switch

def readAnalog(self,name):
address = self.analog[name]
controller = address[0:1]
digital = address[1:2]
pinNo = address[2:3]
return self.arduino[controller].readAPin(pinNo)

def addArduino(self,name,newArduino):
self.arduino[name] = newArduino

if __name__ == '__main__':
main()
Expand Down
3 changes: 2 additions & 1 deletion Core/HALServer/halserver.py
Expand Up @@ -10,8 +10,9 @@
import sys
import os
import unittest
import threading

class HALServer:
class HALServer ():
mAbortRunLoop = False
def __init__(self):
pass
Expand Down

0 comments on commit 9e47656

Please sign in to comment.