svghmi/svghmi.js
branchsvghmi
changeset 2826 1e5abecc3cde
parent 2822 9101a72a1da0
child 2827 af32e80d108f
--- a/svghmi/svghmi.js	Tue Jan 14 11:04:18 2020 +0100
+++ b/svghmi/svghmi.js	Tue Jan 14 11:09:26 2020 +0100
@@ -46,9 +46,17 @@
 ws.binaryType = 'arraybuffer';
 
 const dvgetters = {
-    INT: [DataView.prototype.getInt16, 2],
-    BOOL: [DataView.prototype.getInt8, 1]
-    /* TODO */
+    INT: (dv,offset) => [dv.getInt16(offset, true), 2],
+    BOOL: (dv,offset) => [dv.getInt8(offset, true), 1],
+    STRING: (dv, offset) => {
+        size = dv.getInt8(offset);
+        return [
+            String.fromCharCode.apply(null, new Uint8Array(
+                dv.buffer, /* original buffer */
+                offset + 1, /* string starts after size*/
+                size /* size of string */
+            )), size + 1]; /* total increment */
+    }
 };
 
 // Register message reception handler 
@@ -70,8 +78,8 @@
             i += 4;
             let iectype = hmitree_types[index];
             if(iectype != undefined){
-                let [dvgetter, bytesize] = dvgetters[iectype];
-                let value = dvgetter.call(dv,i,true);
+                let dvgetter = dvgetters[iectype];
+                let [value, bytesize] = dvgetter(dv,i);
                 dispatch_value(index, value);
                 i += bytesize;
             } else {