Ivan Valkou 5 лет назад
Родитель
Сommit
25a3613637

+ 5 - 0
FreeAPS/Helpers/JSON.swift

@@ -26,3 +26,8 @@ extension JSON {
         self = object
     }
 }
+
+extension String: JSON {
+    func toString() -> String { self }
+    init?(from: String) { self = from }
+}

+ 8 - 0
FreeAPS/OpenAPS/JavaScriptWorker.swift

@@ -34,4 +34,12 @@ final class JavaScriptWorker {
     subscript(key: String) -> JSValue! {
         context.objectForKeyedSubscript(key)
     }
+
+    func stringify(_ string: String) -> JSON {
+        evaluate(string: "JSON.stringify(\(string));")!.toString()!
+    }
+
+    func setValue(_ value: JSON, forEnvKey key: String) {
+        evaluate(string: "freeaps.\(key) = \(value.toString());")
+    }
 }

+ 5 - 3
FreeAPS/OpenAPS/OpenAPS.swift

@@ -35,10 +35,12 @@ final class OpenAPS {
         let autosensData = Autosens(ratio: 1.0).toString()
         let mealData = loadJSON(name: "meal")
 
-        jsWorker.evaluate(string: "var glucoseStatus = getLastGlucose(\(glucose));")
-        let result = jsWorker.evaluate(string: "determine_basal(glucoseStatus, \(currentTemp), \(iobData), \(profile), \(autosensData), \(mealData), tempBasalFunctions, true, 100, 1527924300000);")
-        print(result!.toDictionary()!)
+        let glucoseStatus = jsWorker.stringify("getLastGlucose(\(glucose))")
+        jsWorker.setValue(glucoseStatus, forEnvKey: "glucoseStatus")
+        let result = jsWorker.stringify("determine_basal(freeaps.glucoseStatus, \(currentTemp), \(iobData), \(profile), \(autosensData), \(mealData), tempBasalFunctions, true, 100, 1527924300000)")
+        print(result)
         print(jsWorker["logError"]!.toString()!)
+        
     }
 
     private func loadJSON(name: String) -> String {

+ 1 - 0
javascript/prepare.js

@@ -2,3 +2,4 @@ var require = function(arg) { return function(basal, profile) { return basal; };
 var module = {};
 var logError = "";
 var process = { stderr: { write: console.log } };
+var freeaps = {};