Skip to content

Commit

Permalink
Notify, trim, move
Browse files Browse the repository at this point in the history
  • Loading branch information
hugokernel committed Sep 17, 2013
1 parent 854e0ff commit 21a8e58
Show file tree
Hide file tree
Showing 9 changed files with 462 additions and 226 deletions.
2 changes: 1 addition & 1 deletion src/BleuettePi/Python/config.py
@@ -1,7 +1,7 @@

SERIAL_DEV='/dev/ttyAMA0'

FAKE_MODE=True
FAKE_MODE=False

if FAKE_MODE:
HOST='localhost'
Expand Down
11 changes: 1 addition & 10 deletions src/BleuettePi/Python/data.json
@@ -1,10 +1 @@
{
"log": {"default": "debug", "js": "debug"},
"servo": {
"trims": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"limits": [
[ 1, 254 ], [ 1, 254 ], [ 1, 254 ], [ 1, 254 ], [ 1, 254 ], [ 1, 254 ],
[ 1, 254 ], [ 1, 254 ], [ 1, 254 ], [ 1, 254 ], [ 1, 254 ], [ 1, 254 ]
]
}
}
{"log": {"default": "debug", "js": "debug"}, "servo": {"trims": [-5, 20, 6, -11, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0], "limits": [[81, 168], [68, 163], [84, 186], [70, 152], [69, 167], [66, 183], [93, 207], [94, 204], [79, 188], [90, 219], [69, 190], [93, 220]]}}
184 changes: 94 additions & 90 deletions src/BleuettePi/Python/ws.py
Expand Up @@ -171,104 +171,108 @@ def on_message(self, message):

import Servo

if data['cmd'] == 'set':
if data['type'] == 'trim':
Servo.Servo_Trim.values[data['servo']] = data['value'];
B.Sequencer.Servo.sendValues()
elif data['type'] == 'limit':
Servo.Servo_Limit.values[data['servo']] = [ data['min'], data['max'] ];
B.Sequencer.Servo.sendValues()
elif data['type'] == 'position':
B.Sequencer.Servo.setValue(data['servo'], data['value'])
B.Sequencer.Servo.sendValues()
elif data['type'] == 'speed':
global speed
speed = data['value']
elif data['type'] == 'livemode':
if data['status']:
B.Sequencer.Servo.setCallback(self.livemode)
else:
B.Sequencer.Servo.removeCallback()
elif data['type'] == 'loglevel':

if data['which'] == 'js':
_logger = jsHandler
#Data.Instance().set(['log', 'js'], data['level'])
else:
_logger = rainbowHandler
#Data.Instance().set(['log', 'default'], data['level'])
print(data);
#Data.Instance().save()

if data['level'] == 'debug':
_logger.setLevel(logging.DEBUG)
elif data['level'] == 'info':
_logger.setLevel(logging.INFO)
elif data['level'] == 'warning':
_logger.setLevel(logging.WARNING)
elif data['level'] == 'error':
_logger.setLevel(logging.ERROR)
elif data['level'] == 'warning':
_logger.setLevel(logging.CRITICAL)

#print logger.getEffectiveLevel()

elif data['cmd'] == 'drive':

if data['status'] == 'begin':
if data['direction'] == 'forward':
B.Drive.forward()
elif data['direction'] == 'reverse':
B.Drive.reverse()
elif data['direction']== 'left':
B.Drive.left()
elif data['direction']== 'right':
B.Drive.right()
elif data['status'] == 'end':
B.Drive.end()

elif data['cmd'] == 'config':
if data['action'] == 'save':
Data.Instance().set(['servo', 'trims'], Servo.Servo_Trim.values)
Data.Instance().set(['servo', 'limits'], Servo.Servo_Limit.values)
Data.Instance().save()
elif data['action'] == 'get':
config = {
'type': 'config',
'data': {
'trims': Data.Instance().get(['servo', 'trims']),
'limits': Data.Instance().get(['servo', 'limits'])
try:
if data['cmd'] == 'set':
if data['type'] == 'trim':
Servo.Servo_Trim.values[data['servo']] = data['value'];
B.Sequencer.Servo.sendValues()
elif data['type'] == 'limit':
Servo.Servo_Limit.values[data['servo']] = [ data['min'], data['max'] ];
B.Sequencer.Servo.sendValues()
elif data['type'] == 'position':
B.Sequencer.Servo.setValue(data['servo'], data['value'])
B.Sequencer.Servo.sendValues()
elif data['type'] == 'speed':
global speed
speed = data['value']
elif data['type'] == 'livemode':
if data['status']:
B.Sequencer.Servo.setCallback(self.livemode)
else:
B.Sequencer.Servo.removeCallback()
elif data['type'] == 'loglevel':

if data['which'] == 'js':
_logger = jsHandler
#Data.Instance().set(['log', 'js'], data['level'])
else:
_logger = rainbowHandler
#Data.Instance().set(['log', 'default'], data['level'])
print(data);
#Data.Instance().save()

if data['level'] == 'debug':
_logger.setLevel(logging.DEBUG)
elif data['level'] == 'info':
_logger.setLevel(logging.INFO)
elif data['level'] == 'warning':
_logger.setLevel(logging.WARNING)
elif data['level'] == 'error':
_logger.setLevel(logging.ERROR)
elif data['level'] == 'warning':
_logger.setLevel(logging.CRITICAL)

#print logger.getEffectiveLevel()

elif data['cmd'] == 'drive':

if data['status'] == 'begin':
if data['direction'] == 'forward':
B.Drive.forward()
elif data['direction'] == 'reverse':
B.Drive.reverse()
elif data['direction']== 'left':
B.Drive.left()
elif data['direction']== 'right':
B.Drive.right()
elif data['status'] == 'end':
B.Drive.end()

elif data['cmd'] == 'config':
if data['action'] == 'save':
Data.Instance().set(['servo', 'trims'], Servo.Servo_Trim.values)
Data.Instance().set(['servo', 'limits'], Servo.Servo_Limit.values)
Data.Instance().save()
elif data['action'] == 'get':
config = {
'type': 'config',
'data': {
'trims': Data.Instance().get(['servo', 'trims']),
'limits': Data.Instance().get(['servo', 'limits'])
}
}
}
self.write(json.dumps(config))
self.write(json.dumps(config))

elif data['cmd'] == 'control':

elif data['cmd'] == 'control':
if data['action'] == 'reset':
B.BPi.reset()

if data['action'] == 'reset':
B.BPi.reset()
elif data['cmd'] == 'sequence':

elif data['cmd'] == 'sequence':
if data['name'] == 'middle':
B.Sequencer.forward(Sequences['middle'], 1)
elif data['name'] == 'pushup':
B.Sequencer.forward(Sequences['pushup'], 1)
elif data['name'] == 'standby':
B.Sequencer.forward(Sequences['standby'], 1)
elif data['name'] == 'release':
B.Sequencer.forward(Sequences['release'], 1)

if data['name'] == 'middle':
B.Sequencer.forward(Sequences['middle'], 1)
elif data['name'] == 'pushup':
B.Sequencer.forward(Sequences['pushup'], 1)
elif data['name'] == 'standby':
B.Sequencer.forward(Sequences['standby'], 1)
elif data['name'] == 'release':
B.Sequencer.forward(Sequences['release'], 1)
elif data['cmd'] == 'servo':

elif data['cmd'] == 'servo':
if data['name'] == 'init':
B.Sequencer.Servo.init()
elif data['name'] == 'pause':
B.Sequencer.Servo.pause()
elif data['name'] == 'resume':
B.Sequencer.Servo.resume()

if data['name'] == 'init':
B.Sequencer.Servo.init()
elif data['name'] == 'pause':
B.Sequencer.Servo.pause()
elif data['name'] == 'resume':
B.Sequencer.Servo.resume()
else:
logger.warning("Message : %s" % message)

else:
logger.warning("Message : %s" % message)
except Exception, e:
logger.critical("Exception ! " + str(e));

def on_close(self):
if self in cl:
Expand Down
22 changes: 14 additions & 8 deletions src/BleuettePi/Python/www/index.html
Expand Up @@ -3,16 +3,16 @@
<head>
<title>Bleuette</title>

<link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="/static/slider/css/slider.css" rel="stylesheet">
<link rel="stylesheet" href="/static/jquery-ui.min.css">
<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css" media="all" type="text/css">
<link rel="stylesheet" href="/static/jquery-ui.min.css" media="all" type="text/css">
<link rel="stylesheet" href="/static/jquery.pnotify.default.css" media="all" type="text/css">
<link rel="stylesheet" href="/static/jquery.pnotify.default.icons.css" media="all" type="text/css" />

<script type="text/javascript" src="/static/jquery.min.js"></script>
<script type="text/javascript" src="/static/jquery-ui.min.js"></script>
<script type="text/javascript" src="/static/jquery.pnotify.min.js"></script>
<script type="text/javascript" src="/static/jquery.mousewheel.js"></script>
<script type="text/javascript" src="/static/ws.js"></script>
<!--
<script type="text/javascript" src="/static/slider/js/bootstrap-slider.js"></script>
-->
<script type="text/javascript" src="/static/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/static/dygraph-combined.js"></script>

Expand Down Expand Up @@ -45,6 +45,12 @@
margin-top: 10px;
}

.slider-tip {
opacity:1;
bottom:120%;
margin-left: -1.36em;
}

</style>

<script>
Expand Down Expand Up @@ -190,7 +196,7 @@ <h2>Ground sensor</h2>

<div class="span1">
Speed :
<input id="speed-slide" class="slider" type="text" />
<div id="speed-slide" class="slider"></div>
</div>
</div>

Expand Down Expand Up @@ -343,7 +349,7 @@ <h2>Ground sensor</h2>
</div>
</div>

<button type="button" class="btn btn-default btn-save" data-action="save">Save</button>
<button type="button" class="btn btn-action btn-save" data-action="save">Save</button>
</div>

<div class="tab-pane" id="limit">
Expand Down
117 changes: 117 additions & 0 deletions src/BleuettePi/Python/www/jquery.mousewheel.js
@@ -0,0 +1,117 @@
/*! Copyright (c) 2013 Brandon Aaron (http://brandonaaron.net)
* Licensed under the MIT License (LICENSE.txt).
*
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
* Thanks to: Seamus Leahy for adding deltaX and deltaY
*
* Version: 3.1.3
*
* Requires: 1.2.2+
*/

(function (factory) {
if ( typeof define === 'function' && define.amd ) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS style for Browserify
module.exports = factory;
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {

var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'];
var toBind = 'onwheel' in document || document.documentMode >= 9 ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'];
var lowestDelta, lowestDeltaXY;

if ( $.event.fixHooks ) {
for ( var i = toFix.length; i; ) {
$.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
}
}

$.event.special.mousewheel = {
setup: function() {
if ( this.addEventListener ) {
for ( var i = toBind.length; i; ) {
this.addEventListener( toBind[--i], handler, false );
}
} else {
this.onmousewheel = handler;
}
},

teardown: function() {
if ( this.removeEventListener ) {
for ( var i = toBind.length; i; ) {
this.removeEventListener( toBind[--i], handler, false );
}
} else {
this.onmousewheel = null;
}
}
};

$.fn.extend({
mousewheel: function(fn) {
return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
},

unmousewheel: function(fn) {
return this.unbind("mousewheel", fn);
}
});


function handler(event) {
var orgEvent = event || window.event,
args = [].slice.call(arguments, 1),
delta = 0,
deltaX = 0,
deltaY = 0,
absDelta = 0,
absDeltaXY = 0,
fn;
event = $.event.fix(orgEvent);
event.type = "mousewheel";

// Old school scrollwheel delta
if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta; }
if ( orgEvent.detail ) { delta = orgEvent.detail * -1; }

// New school wheel delta (wheel event)
if ( orgEvent.deltaY ) {
deltaY = orgEvent.deltaY * -1;
delta = deltaY;
}
if ( orgEvent.deltaX ) {
deltaX = orgEvent.deltaX;
delta = deltaX * -1;
}

// Webkit
if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY; }
if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = orgEvent.wheelDeltaX * -1; }

// Look for lowest delta to normalize the delta values
absDelta = Math.abs(delta);
if ( !lowestDelta || absDelta < lowestDelta ) { lowestDelta = absDelta; }
absDeltaXY = Math.max(Math.abs(deltaY), Math.abs(deltaX));
if ( !lowestDeltaXY || absDeltaXY < lowestDeltaXY ) { lowestDeltaXY = absDeltaXY; }

// Get a whole value for the deltas
fn = delta > 0 ? 'floor' : 'ceil';
delta = Math[fn](delta / lowestDelta);
deltaX = Math[fn](deltaX / lowestDeltaXY);
deltaY = Math[fn](deltaY / lowestDeltaXY);

// Add event and delta to the front of the arguments
args.unshift(event, delta, deltaX, deltaY);

return ($.event.dispatch || $.event.handle).apply(this, args);
}

}));

0 comments on commit 21a8e58

Please sign in to comment.