Skip to content

Instantly share code, notes, and snippets.

@mdobson
Created March 28, 2014 17:11
Show Gist options
  • Save mdobson/9837823 to your computer and use it in GitHub Desktop.
Save mdobson/9837823 to your computer and use it in GitHub Desktop.
Send message to pebble over serial
var packet = require('packet');
var SerialPort = require('serialport');
var serializer = packet.createSerializer();
var sender = 'libpebble';
var subject = 'Hello, Pebble!';
var body = 'I hate you.';
var ts = Date.now().toString();
var data = [ sender, subject, ts, body ];
var packetLength = sender.length + subject.length + body.length + ts.length + 5
var serialPort = '/dev/tty.PebbleE8EA-SerialPortSe';
var serial = new SerialPort.SerialPort(serialPort, {
baudrate: 19200
});
serial.on('open', function() {
console.log('opened connection to pebble');
var buf = createPacket(data);
serial.write(buf, function(err, results) {
console.log(arguments);
});
});
function createPacket(data) {
var packetLength = 5;
data.forEach(function(d) {
packetLength += d.length;
});
var buffer = new Buffer(packetLength);
buffer[0] = 0x00;
var idx = 1;
data.forEach(function(field) {
var fieldBuf = new Buffer(field.length + 1);
fieldBuf[0] = field.length;
var tmp = new Buffer(field);
tmp.copy(fieldBuf, 1);
fieldBuf.copy(buffer, idx);
idx += fieldBuf.length;
});
var packetSize = new Buffer(2);
var packetCode = new Buffer(2);
serializer.serialize('b16', buffer.length);
serializer.write(packetSize);
serializer.serialize('b16', 3000);
serializer.write(packetCode);
var pack = new Buffer(buffer.length + 4);
packetSize.copy(pack, 0);
packetCode.copy(pack, 2);
buffer.copy(pack,4);
return pack;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment