From ed92d46fd336d65b0795ad661f78e27130fecf70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Fri, 18 Mar 2016 22:32:51 +0100 Subject: [PATCH] Add script to serialize the JSON configuration as binary. --- model/.gitignore | 1 + model/BufferWriter.js | 45 +++++++++++++++++++++++ model/serializeConfig.js | 17 +++++++++ model/{uhkConfig.json => uhk-config.json} | 0 4 files changed, 63 insertions(+) create mode 100644 model/.gitignore create mode 100644 model/BufferWriter.js create mode 100755 model/serializeConfig.js rename model/{uhkConfig.json => uhk-config.json} (100%) diff --git a/model/.gitignore b/model/.gitignore new file mode 100644 index 00000000..1ef20017 --- /dev/null +++ b/model/.gitignore @@ -0,0 +1 @@ +uhk-config.bin diff --git a/model/BufferWriter.js b/model/BufferWriter.js new file mode 100644 index 00000000..032ba39c --- /dev/null +++ b/model/BufferWriter.js @@ -0,0 +1,45 @@ +var BufferWriter = function(bufferParam) { + var offset = 0; + self = {}; + var buffer = bufferParam; + + self.int8 = function(value) { + buffer.writeInt8(value, offset); + offset += 1; + }; + + self.uint8 = function(value) { + buffer.writeUInt8(value, offset); + offset += 1; + }; + + self.int16 = function(value) { + buffer.writeInt16LE(value, offset); + offset += 2; + }; + + self.uint16 = function(value) { + buffer.writeUInt16LE(value, offset); + offset += 2; + }; + + self.int32 = function(value) { + buffer.writeInt32LE(value, offset); + offset += 4; + }; + + self.uint32 = function(value) { + buffer.writeUInt32LE(value, offset); + offset += 4; + }; + + self.string = function(string) { + buffer.write(string, offset, string.length, 'ascii'); + offset += string.length; + self.uint8(0); + }; + + return self; +}; + +module.exports = BufferWriter; diff --git a/model/serializeConfig.js b/model/serializeConfig.js new file mode 100755 index 00000000..3e73d0b9 --- /dev/null +++ b/model/serializeConfig.js @@ -0,0 +1,17 @@ +#!/usr/bin/env node + +var fs = require('fs'); +var BufferWriter = require('./BufferWriter'); + +var buffer = new Buffer(1000); +buffer.fill(0); +var writer = BufferWriter(buffer); + +var uhkConfig = JSON.parse(fs.readFileSync('uhk-config.json')); +var keyActions = uhkConfig.keymaps[0].modules[0].layers[0].keyActions; + +writer.uint8(0x66); +writer.uint16(0x1122); +writer.string("Hi there!"); +writer.uint8(0x66); +fs.writeFileSync('uhk-config.bin', buffer); diff --git a/model/uhkConfig.json b/model/uhk-config.json similarity index 100% rename from model/uhkConfig.json rename to model/uhk-config.json