From 3962018663ebd18df6453597ced434aeb963940d Mon Sep 17 00:00:00 2001 From: cfry Date: Thu, 27 Jun 2019 16:00:00 -0400 Subject: [PATCH] release --- core/dextersim.js | 9 +- core/index.js | 6 + core/instruction.js | 128 ++-- core/instruction_control.js | 24 + core/instruction_dexter.js | 19 +- core/instruction_io.js | 16 + core/job.js | 8 +- core/out.js | 1 + core/robot.js | 40 +- core/socket.js | 60 +- core/storage.js | 27 +- core/to_source_code.js | 3 +- core/utils.js | 10 +- de/de_testsuite.js | 16 +- de/de_testsuite_backup.js | 3 +- doc/eval.html | 2 +- doc/guide.html | 34 +- doc/mental_model_of_memory.html | 2 +- doc/processor_board_jumpers.png | Bin 329930 -> 0 bytes doc/ref_man.html | 985 ++++++++++++++++---------- doc/release_notes.html | 180 ++++- doc_code.js | 2 +- editor.js | 315 +++++++- examples/FindHome.js | 2 +- examples/opencv_locate_object.js | 10 +- examples/opencv_picture_similarity.js | 8 +- index.html | 56 +- job_examples.js | 763 ++++++++++++-------- js_info.js | 147 +++- load_job_engine.js | 8 +- low_level_dexter/ViewEyeRealTime.js | 2 +- make_instruction/make_instruction.js | 50 +- make_instruction/mirecord.js | 4 +- music/note_testsuite.js | 2 +- package.json | 7 +- ready.js | 13 +- robot_status_dialog.js | 2 +- series.js | 14 +- test_suite/loop_testsuite.js | 20 +- test_suite/test_suites.js | 2 +- user_tools/ezTeach_base.js | 18 +- user_tools/ezTeach_template.js | 2 +- 42 files changed, 2056 insertions(+), 964 deletions(-) create mode 100644 core/instruction_control.js create mode 100644 core/instruction_io.js delete mode 100644 doc/processor_board_jumpers.png diff --git a/core/dextersim.js b/core/dextersim.js index 773cfcc2..a8859504 100644 --- a/core/dextersim.js +++ b/core/dextersim.js @@ -146,6 +146,11 @@ DexterSim = class DexterSim{ //so just leave that as it is--apr 2019 if (this.sim_actual === true){ let rob = this.robot + if((rs_copy[Dexter.INSTRUCTION_TYPE] == "r") && + (typeof(payload_string_maybe) == "number") && + (payload_string_maybe > 0)){ + rs_copy[Dexter.ERROR_CODE] = payload_string_maybe + } setTimeout(function(){ Socket.on_receive(rs_copy, rob.name, payload_string_maybe) }, 1) @@ -422,13 +427,11 @@ DexterSim = class DexterSim{ let whole_content try { whole_content = read_file(source) }//errors if path in "source" doesn't exist catch(err){ - return 1 //return the error code + return 2 //return the error code } let start_index = hunk_index * Instruction.Dexter.read_file.payload_max_chars let end_index = start_index + Instruction.Dexter.read_file.payload_max_chars let payload_string = whole_content.substring(start_index, end_index) //ok if end_index is > whole_cotnent.length, it just gets how much it can, no error - //out("some content from " + source + " hunk: " + hunk_index + " payload: " + payload_string) - //Socket.r_payload_grab_aux(instruction_array, payload_string) return payload_string } //Dexter.write_file diff --git a/core/index.js b/core/index.js index 98d97907..817564b4 100644 --- a/core/index.js +++ b/core/index.js @@ -109,7 +109,11 @@ var Coor = require("../math/Coor.js") var Kin = require("../math/Kin.js") var Vector = require("../math/Vector.js") var Job = require("./job.js") + var {Robot, Brain, Dexter, Human, Serial} = require("./robot.js") +var {Control} = require("./instruction_control.js") +var {IO} = require("./instruction_io.js") + var {out} = require("./out.js") var calibrate_build_tables = require("../low_level_dexter/calibrate_build_tables.js") var DXF = require("../math/DXF.js") @@ -119,6 +123,8 @@ global.Dexter = Dexter global.make_ins = Dexter.make_ins global.out = out global.Robot = Robot +global.Control = Control +global.IO = IO global.Job = Job global.Vector = Vector global.Kin = Kin diff --git a/core/instruction.js b/core/instruction.js index 584d577a..21a8e4ab 100644 --- a/core/instruction.js +++ b/core/instruction.js @@ -443,8 +443,8 @@ Instruction.break = class Break extends Instruction{ //class name must be upper do_item (job_instance){ let loop_pc = Instruction.loop.pc_of_enclosing_loop(job_instance) if (loop_pc === null) { - warning("Job " + job_instance.name + ' has a Robot.break instruction at pc: ' + job_instance.program_counter + - "
but there is no Robot.loop instruction above it.") + warning("Job " + job_instance.name + ' has a Control.break instruction at pc: ' + job_instance.program_counter + + "
but there is no Control.loop instruction above it.") job_instance.set_up_next_do(1) } else { @@ -458,7 +458,7 @@ Instruction.break = class Break extends Instruction{ //class name must be upper } } toString(){ return "break" } - to_source_code(args){ return args.indent + "Robot.break()" } + to_source_code(args){ return args.indent + "Control.break()" } } Instruction.debugger = class Debugger extends Instruction{ //class name must be upper case because lower case conflicts with js debugger @@ -468,7 +468,7 @@ Instruction.debugger = class Debugger extends Instruction{ //class name must be job_instance.set_up_next_do(1, true) } toString(){ return "debugger" } - to_source_code(args){ return args.indent + "Robot.debugger()" } + to_source_code(args){ return args.indent + "Control.debugger()" } } Instruction.error = class error extends Instruction{ @@ -489,11 +489,11 @@ Instruction.error = class error extends Instruction{ args = jQuery.extend({}, arguments[0]) args.value = this.reason args.indent = "" - return this_indent + "Robot.error(" + to_source_code(args) + ")" + return this_indent + "Control.error(" + to_source_code(args) + ")" } } -//upper case G to avoid a conflict, but the user instruction is spelled Robot.get_page +//upper case G to avoid a conflict, but the user instruction is spelled Control.get_page Instruction.Get_page = class Get_page extends Instruction{ constructor (url_or_options, response_variable_name="http_response") { super() @@ -535,7 +535,7 @@ Instruction.Get_page = class Get_page extends Instruction{ else { job_instance.set_up_next_do(1)} //got the response, move to next instruction } to_source_code(args){ - return args.indent + "Robot.get_page(" + + return args.indent + "Control.get_page(" + to_source_code({value: this.url_or_options}) + ((this.response_variable_name == "http_response") ? "" : (", " + to_source_code({value: this.response_variable_name}))) + ")" @@ -566,14 +566,14 @@ Instruction.go_to = class go_to extends Instruction{ job_instance.set_up_next_do(0) } } - toString(){ return "Robot.go_to instruction_location: " + this.instruction_location } + toString(){ return "Control.go_to instruction_location: " + this.instruction_location } to_source_code(args){ let this_indent = args.indent args = jQuery.extend({}, arguments[0]) args.value = this.instruction_location args.indent = "" - return this_indent + "Robot.go_to(" + to_source_code(args) + ")" + return this_indent + "Control.go_to(" + to_source_code(args) + ")" } } @@ -634,7 +634,7 @@ Instruction.grab_robot_status = class grab_robot_status extends Instruction{ args.value = this.end_index args.indent = "" let ei_src = to_source_code(args) - return this_indent + "Robot.grab_robot_status(" + + return this_indent + "Control.grab_robot_status(" + ud_src + ", " + si_src + ", " + ei_src + ")" } } @@ -1768,9 +1768,9 @@ Instruction.if_any_errors = class if_any_errors extends Instruction{ let the_error_ins = this.instruction_if_error if (the_error_ins == null){ let message = "In job: " + job_instance.name + - ", an instruction of type: Robot.if_any_errors, " + + ", an instruction of type: Control.if_any_errors, " + "discovered that job: " + job_name + " has errored." - the_error_ins = Robot.error(message) + the_error_ins = Control.error(message) } job_instance.insert_single_instruction(the_error_ins) break; @@ -1778,7 +1778,7 @@ Instruction.if_any_errors = class if_any_errors extends Instruction{ } else { job_instance.stop_for_reason("errored", "In job: " + job_instance.name + - ", an instruction of type: Robot.if_any_errors
" + + ", an instruction of type: Control.if_any_errors
" + "was passed a job name of: " + job_name + "
that doesn't exist.") job_instance.set_up_next_do(0) return @@ -1787,7 +1787,7 @@ Instruction.if_any_errors = class if_any_errors extends Instruction{ job_instance.set_up_next_do(1) } to_source_code(args){ - return args.indent + "Robot.if_any_errors(" + + return args.indent + "Control.if_any_errors(" + to_source_code({value: this.job_names}) + ", " + to_source_code({value: this.instruction_if_error}) + ")" } @@ -1797,7 +1797,7 @@ Instruction.include_job = class include_job extends Instruction{ constructor (job_name, start_loc, end_loc) { super() if(job_name === undefined){ - dde_error("Robot.include_job was not passed a job_name which is required.") + dde_error("Control.include_job was not passed a job_name which is required.") } this.job_name = job_name //It *might* be good to permit job_name to be a job obj, but @@ -1815,7 +1815,7 @@ Instruction.include_job = class include_job extends Instruction{ if(!name_of_job_to_include.startsWith("Job.")) { name_of_job_to_include = "Job." + name_of_job_to_include } let job_to_include = value_of_path(name_of_job_to_include) if(!(job_to_include instanceof Job)) { - dde_error("Robot.include_job passed a job_name: " + this.job_name + + dde_error("Control.include_job passed a job_name: " + this.job_name + "
that is not bound to a Job, but rather: " + job_to_include) } let the_start_loc = ((this.start_loc === null) ? job_to_include.orig_args.program_counter : this.start_loc) @@ -1845,7 +1845,7 @@ Instruction.include_job = class include_job extends Instruction{ if(first_arg.startsWith("Job.")) { resolved_first_arg = value_of_path(first_arg) if(!(resolved_first_arg instanceof Job)){ - dde_error("Robot.include_job's first argument: " + first_arg + + dde_error("Control.include_job's first argument: " + first_arg + "
resolved to: " + resolved_first_arg + "
but was expected to resolve to a Job instance.") } @@ -1866,7 +1866,7 @@ Instruction.include_job = class include_job extends Instruction{ let file_src = read_file(first_arg) let result_obj = eval_js_part2(file_src, false) // warning: calling straight eval often doesn't return the value of the last expr in the src, but my eval_js_part2 usually does. //window.eval(file_src) if(result_obj.error_message){ - dde_error("Robot.include_job's first argument: " + first_arg + + dde_error("Control.include_job's first argument: " + first_arg + "
refers to an existing file but
" + "that file contains the JavaScript error of:
" + err.message) @@ -1881,7 +1881,7 @@ Instruction.include_job = class include_job extends Instruction{ if(file_src.startsWith("var ")){ let equal_sign_pos = file_src.indexOf("=") if(equal_sign_pos == -1){ - dde_error("Robot.include_job's first argument: " + first_arg + + dde_error("Control.include_job's first argument: " + first_arg + "
refers to an existing file containing variable: " + var_name + ".
" + "However, their is no equal sign after 'var'") } @@ -1892,7 +1892,7 @@ Instruction.include_job = class include_job extends Instruction{ do_list_array_to_use = var_val } else { - dde_error("Robot.include_job's first argument: " + first_arg + + dde_error("Control.include_job's first argument: " + first_arg + "
refers to an existing file containing variable: " + var_name + ".
" + "However, the value is not an array of instructions, but rather:
" + var_val) @@ -1902,7 +1902,7 @@ Instruction.include_job = class include_job extends Instruction{ } } else { - dde_error("Robot.include_job's first argument: " + first_arg + " has a dot in it
" + + dde_error("Control.include_job's first argument: " + first_arg + " has a dot in it
" + "so it is presumed to be a file path
" + "but no such file exists.") } @@ -1910,7 +1910,7 @@ Instruction.include_job = class include_job extends Instruction{ else if (window[first_arg]) { resolved_first_arg = window[first_arg] if(!Array.isArray(resolved_first_arg)) { - dde_error("Robot.include_job's first argument: " + first_arg + " is a variable
" + + dde_error("Control.include_job's first argument: " + first_arg + " is a variable
" + "but the value of the variable is not an array:
" + resolved_first_arg) } @@ -1919,20 +1919,20 @@ Instruction.include_job = class include_job extends Instruction{ } } else { - dde_error("Robot.include_job, got a first argument of: " + first_arg + + dde_error("Control.include_job, got a first argument of: " + first_arg + "
which is invalid because, although it is a string,
" + "it isn't a Job name, file name, nor variable name.") } } //end of first_arg is a string processing else { - dde_error("Robot.include_job, got a first argument of: " + first_arg + + dde_error("Control.include_job, got a first argument of: " + first_arg + "
which is invalid because its not a Job, array, or string.") } //at this point either the above code errored, or we have //resolved_first_arg set to a Job or a do_list array and //do_list_array_to_use set to an array if(Instruction.is_oplet_array(do_list_array_to_use)){ - dde_error("Robot.include_job, got a first argument of: " + first_arg + + dde_error("Control.include_job, got a first argument of: " + first_arg + "
but that resolved to an oplet array: " + do_list_array_to_use + "
which is not a valid array of instruction.
" + "If you wrap this oplet array in an outer array, it will be valid.") @@ -1954,12 +1954,12 @@ Instruction.include_job = class include_job extends Instruction{ if(the_end_loc == null) { the_end_loc = do_list_array_to_use.length } } if(!is_non_neg_integer(the_start_loc)){ - dde_error("Robot.include_job passed start_loc of: " + this.start_loc + + dde_error("Control.include_job passed start_loc of: " + this.start_loc + "
but that resolved to: " + the_start_loc + "
which is not a non-negative integer.") } else if(!is_non_neg_integer(the_end_loc)){ - dde_error("Robot.include_job passed end_loc of: " + this.end_loc + + dde_error("Control.include_job passed end_loc of: " + this.end_loc + "
but that resolved to: " + the_end_loc + "
which is not a non-negative integer.") } @@ -1972,7 +1972,7 @@ Instruction.include_job = class include_job extends Instruction{ } to_source_code(args){ - return args.indent + "Robot.include_job(" + + return args.indent + "Control.include_job(" + to_source_code({value: this.job_name}) + ")" } } @@ -1991,7 +1991,7 @@ Instruction.label = class label extends Instruction{ } toString(){ return this.name } to_source_code(args){ - return args.indent + "Robot.label(" + + return args.indent + "Control.label(" + to_source_code({value: this.name}) + ")" } } @@ -2019,7 +2019,7 @@ Instruction.loop = class Loop extends Instruction{ //If on a normal iteration with more to come, the last inst returned will be a //go_to to this loop instruction. (and that go_to might be the ONLY instruction in the returned array) //else if null is returned, we're done with this loop. - //the returned instruction array may contain a Robot.break instruction that + //the returned instruction array may contain a Control.break instruction that //ends this loop. That ending is handled in Job.prototype.do_next_item section that handles loop get_instructions_for_one_iteration(job_instance){ //strategy: compute: //1. iter_index, 2. iter_total,3. iter_val & iter_key, 4. instructions for this iteration & return them @@ -2041,7 +2041,7 @@ Instruction.loop = class Loop extends Instruction{ else if (typeof(fn_result) == "number"){ if(is_non_neg_integer(fn_result)) { this.resolved_times_to_loop = fn_result; this.iter_total = this.resolved_times_to_loop} else { - job_instance.stop_for_reason("errored", "Robot.loop passed times_to_loop that returned a number: " + fn_result + + job_instance.stop_for_reason("errored", "Control.loop passed times_to_loop that returned a number: " + fn_result + "\n but it isn't a non-negative integer.") return null } @@ -2053,13 +2053,13 @@ Instruction.loop = class Loop extends Instruction{ this.iter_total = this.resolved_times_to_loop.length } else if (typeof(fn_result) == "function") { this.resolved_times_to_loop = fn_result} //rare but possible. //leave iter_total at Infinity - else { job_instance.stop_for_reason("errored", "Robot.loop passed function for boolean_int_array_number but that function" + + else { job_instance.stop_for_reason("errored", "Control.loop passed function for boolean_int_array_number but that function" + "\n returned an invalid type: " + fn_result + "\n It must return a boolean, non-negative integer, array, or function") return null } } - else { job_instance.stop_for_reason("errored", "Robot.loop passed times_to_loop of:\n " + + else { job_instance.stop_for_reason("errored", "Control.loop passed times_to_loop of:\n " + this.times_to_loop + "\n but that is not one of the valid types of:\n boolean, non-negative integer, array, or function.") return null @@ -2074,7 +2074,7 @@ Instruction.loop = class Loop extends Instruction{ this.resolved_times_to_loop = null //ready for next start of this job return null } - else if (this.resolved_times_to_loop === true){ iter_val = true } //loop forever or until body_fn returns Robot.break instruction + else if (this.resolved_times_to_loop === true){ iter_val = true } //loop forever or until body_fn returns Control.break instruction else if(is_non_neg_integer(this.resolved_times_to_loop)){ iter_val = this.iter_index } @@ -2093,13 +2093,13 @@ Instruction.loop = class Loop extends Instruction{ } else if (fn_result === true) { iter_val = true } else { - job_instance.stop_for_reason("errored", "Robot.loop passed a function to call to determine if another iteration should occur" + + job_instance.stop_for_reason("errored", "Control.loop passed a function to call to determine if another iteration should occur" + "\n but that function returned: " + fn_result + "\n however, only true and false are valid results.") return null } } - else { shouldnt("Robot.loop has an invalid this.resolved_times_to_loop of: " + this.resolved_times_to_loop)} + else { shouldnt("Control.loop has an invalid this.resolved_times_to_loop of: " + this.resolved_times_to_loop)} if(this.iter_index >= this.iter_total) { //done looping but initialize so if the job is restrted, the loop will restart this.resolved_times_to_loop = null return null @@ -2117,13 +2117,13 @@ Instruction.loop = class Loop extends Instruction{ //below we add the go_to at the end. } //body_fn_result can legitimately be the empty array at this point. - //it might also contain a Robot.break instruction. + //it might also contain a Control.break instruction. let go_to_ins = new Instruction.go_to(job_instance.program_counter) body_fn_result.push(go_to_ins) return body_fn_result } } - //when called, pc of job_instance will (as of Jun 11 ) be to a Robot.break instruction + //when called, pc of job_instance will (as of Jun 11 ) be to a Control.break instruction //Just search backwards for the first loop instruction and return its pc. //If job_instance.program_counter happens to be pointing at a loop, //its just returned. @@ -2135,7 +2135,7 @@ Instruction.loop = class Loop extends Instruction{ return null // not good. we didn't find an enclosing loop. this will become a warning. } to_source_code(args){ - return args.indent + "Robot.loop(" + + return args.indent + "Control.loop(" + to_source_code({value: this.times_to_loop}) + ",\n" + to_source_code({value: this.body_fn}) + ")" @@ -2150,13 +2150,13 @@ Instruction.out = class Out extends Instruction{ this.temp = temp } do_item (job_instance){ - let message = "Job: " + job_instance.name + ", instruction ID: " + job_instance.program_counter + ", Instruction type: Robot.out
" + this.val + let message = "Job: " + job_instance.name + ", instruction ID: " + job_instance.program_counter + ", Instruction type: IO.out
" + this.val out(message, this.color, this.temp) job_instance.set_up_next_do(1) } - toString() { return "Robot.out of: " + this.val } + toString() { return "IO.out of: " + this.val } to_source_code(args){ - return args.indent + "Robot.out(" + + return args.indent + "IO.out(" + to_source_code({value: this.val}) + ((this.color == "black") ? "" : (", " + to_source_code({value: this.color}))) + (this.temp ? (", " + to_source_code({value: this.temp})) : "") + @@ -2235,7 +2235,7 @@ Instruction.send_to_job = class send_to_job extends Instruction{ } } to_source_code(args){ - return args.indent + "Robot.send_to_job({" + + return args.indent + "Control.send_to_job({" + ((this.do_list_item == null) ? "" : ("do_list_item: " + to_source_code({value: this.do_list_item}) + ", ")) + ((this.where_to_insert === undefined) ? "" : ("where_to_insert: " + to_source_code({value: this.where_to_insert}) + ", ")) + ((this.wait_until_done === false) ? "" : ("wait_until_done: " + to_source_code({value: this.wait_until_done}) + ", ")) + @@ -2378,12 +2378,12 @@ Instruction.sent_from_job = class sent_from_job extends Instruction{ Instruction.start_job = class start_job extends Instruction{ constructor (job_name, start_options={}, if_started="ignore", wait_until_job_done=false) { if(!["ignore", "error", "restart"].includes(if_started)){ - dde_error("Robot.start_job has invalid value for if_started of: " + + dde_error("Control.start_job has invalid value for if_started of: " + if_started + '
Valid values are: "ignore", "error", "restart"') } if(![true, false].includes(wait_until_job_done)){ - dde_error("Robot.start_job has invalid value for wait_until_job_done of: " + + dde_error("Control.start_job has invalid value for wait_until_job_done of: " + if_started + '
Valid values are: true and false') } @@ -2412,17 +2412,17 @@ Instruction.start_job = class start_job extends Instruction{ let jobs_in_file = Job.instances_in_file(this.job_name) if(jobs_in_file.length > 0) { this.job_to_start = jobs_in_file[0] } else { - dde_error("Robot.start_job has a job_name that's a path to an existing file: " + this.job_name + "
" + + dde_error("Control.start_job has a job_name that's a path to an existing file: " + this.job_name + "
" + "but that file doesn't define any jobs.") } } else { - dde_error("Robot.start_job has a job_name of: " + this.job_name + + dde_error("Control.start_job has a job_name of: " + this.job_name + "
but it doesn't resolve to a Job or a file containing one.") } } if(!(this.job_to_start instanceof Job)){ - job_instance.stop_for_reason("errored", "Robot.start_job attempted to start non-existent Job." + this.job_name) + job_instance.stop_for_reason("errored", "Control.start_job attempted to start non-existent Job." + this.job_name) job_instance.set_up_next_do(0) } } @@ -2446,14 +2446,14 @@ Instruction.start_job = class start_job extends Instruction{ return } else if(["starting", "running"].includes(stat)) { - job_instance.wait_reason = "Robot.start_job waiting at instruction " + + job_instance.wait_reason = "Control.start_job waiting at instruction " + job_instance.program_counter + " for " + this.job_to_start.name + " to complete." job_instance.set_status_code("waiting") job_instance.set_up_next_do(0) return } else if(stat == "waiting") { - job_instance.wait_reason = "Robot.start_job waiting at instruction " + + job_instance.wait_reason = "Control.start_job waiting at instruction " + job_instance.program_counter + " for " + this.job_to_start.name + " to complete,\n" + "but its now waiting for: " + this.job_to_start.wait_reason job_instance.set_status_code("waiting") @@ -2462,7 +2462,7 @@ Instruction.start_job = class start_job extends Instruction{ } else if (stat == "suspended") { this.job_to_start.unsuspend() - job_instance.wait_reason = "Robot.start_job waiting at instruction " + + job_instance.wait_reason = "Control.start_job waiting at instruction " + job_instance.program_counter + " for " + this.job_to_start.name + " to complete." job_instance.set_status_code("waiting") job_instance.set_up_next_do(0) @@ -2511,7 +2511,7 @@ Instruction.start_job = class start_job extends Instruction{ } else { //if_started is tested for validity in the constructor, but just in case... shouldnt("Job." + job_instance.name + - " has a Robot.start_job instruction with an invalid " + + " has a Control.start_job instruction with an invalid " + "
if_started value of: " + this.if_started) } } @@ -2520,7 +2520,7 @@ Instruction.start_job = class start_job extends Instruction{ job_instance.set_up_next_do(1) } else { - shouldnt("Robot.start_job got a status_code from Job." + + shouldnt("Control.start_job got a status_code from Job." + this.job_to_start.name + " that it doesn't understand.") } } @@ -2528,7 +2528,7 @@ Instruction.start_job = class start_job extends Instruction{ return "start_job: " + this.job_name } to_source_code(args){ - return args.indent + "Robot.start_job(" + + return args.indent + "Control.start_job(" + to_source_code({value: this.job_name}) + (similar(this.start_options, {}) ? "" : (", " + to_source_code({value: this.start_options}))) + ((this.if_started == "ignore") ? "" : (", " + to_source_code({value: this.if_started}))) + @@ -2549,7 +2549,7 @@ Instruction.stop_job = class stop_job extends Instruction{ if (!job_to_stop) { job_to_stop = job_instance } job_to_stop.ending_program_counter = this.instruction_location if (!this.stop_reason){ - this.stop_reason = "Stopped by Job." + job_instance.name + " instruction: Robot.stop_job." + this.stop_reason = "Stopped by Job." + job_instance.name + " instruction: Control.stop_job." } job_to_stop.stop_for_reason("completed", this.stop_reason, this.perform_when_stopped) //this is not an error or interrupted, its a normal stoppage of the job. @@ -2572,7 +2572,7 @@ Instruction.stop_job = class stop_job extends Instruction{ props_args.value = this.perform_when_stopped let pws_src = to_source_code(props_args) let result = indent + - "Robot.stop_job(" + + "Control.stop_job(" + loc_src + ", " + sr_src + ", " + pws_src + @@ -2604,7 +2604,7 @@ Instruction.suspend = class suspend extends Instruction{ } } to_source_code(args){ - return args.indent + "Robot.suspend(" + + return args.indent + "Control.suspend(" + to_source_code({value: this.job_name}) + ((this.reason == "") ? "" : (", " + to_source_code({value: this.reason}))) + ")" @@ -2636,7 +2636,7 @@ Instruction.unsuspend = class unsuspend extends Instruction{ } to_source_code(args){ - return args.indent + "Robot.unsuspend(" + + return args.indent + "Control.unsuspend(" + to_source_code({value: this.job_name}) + ")" } @@ -2711,7 +2711,7 @@ Instruction.sync_point = class sync_point extends Instruction{ } } to_source_code(args){ - return args.indent + "Robot.sync_point(" + + return args.indent + "Control.sync_point(" + to_source_code({value: this.name}) + ", " + to_source_code({value: this.job_names}) + ")" @@ -2730,7 +2730,7 @@ Instruction.wait_until = class wait_until extends Instruction{ else if (Array.isArray(this.fn_date_dur) || (typeof(this.fn_date_dur) == "object")){ if(!Job.instruction_location_to_job(this.fn_date_dur, false)){ - warning("Robot.wait_until passed an array or literal object
" + + warning("Control.wait_until passed an array or literal object
" + "for an instruction location but
" + "it does not contain a job.
" + "That implies this job will wait for itself, and thus forever.
" + @@ -2739,7 +2739,7 @@ Instruction.wait_until = class wait_until extends Instruction{ } else if (fn_data_dur instanceof Job) {} else { - dde_error("Robot.wait_until instruction passed: " + this.fn_date_dur + + dde_error("Control.wait_until instruction passed: " + this.fn_date_dur + '
which is not a number, date, function,
' + '"new_instruction" or instruction location array.') } @@ -2787,7 +2787,7 @@ Instruction.wait_until = class wait_until extends Instruction{ //so that we can keep the tcp connection alive, send a virtual heartbeat let new_wait_dur_in_sec = this.fn_date_dur - (dur_from_start_in_ms / 1000) let new_instructions = [make_ins("g"), //just a do nothing to get a round trip to Dexter. - Robot.wait_until(new_wait_dur_in_sec)] //create new wait_until to wait for the remaining time + Control.wait_until(new_wait_dur_in_sec)] //create new wait_until to wait for the remaining time job_instance.insert_instructions(new_instructions) //job_instance.added_items_count[job_instance.program_counter] += 2 this is done automatically by insert_instructions this.start_time_in_ms = null //essential for the 2nd thru nth call to start() for this job. @@ -2865,7 +2865,7 @@ Instruction.wait_until = class wait_until extends Instruction{ var loc_pc = loc_job_instance.instruction_location_to_id(this.fn_date_dur) if(loc_pc > loc_job_instance.program_counter){ //wait until loc_job_instance advances if(loc_job_instance.stop_reason){ - warning("Robot.wait_until is waiting for job: " + loc_job_instance.name + + warning("Control.wait_until is waiting for job: " + loc_job_instance.name + "
but that job is stopped, so it will probably wait forever.") } job_instance.wait_reason = "a wait_until instruction_location is reached." @@ -2887,7 +2887,7 @@ Instruction.wait_until = class wait_until extends Instruction{ } } to_source_code(args){ - return args.indent + "Robot.wait_until(" + + return args.indent + "Control.wait_until(" + to_source_code({value: this.fn_date_dur, function_names: true}) + ")" } diff --git a/core/instruction_control.js b/core/instruction_control.js new file mode 100644 index 00000000..24b45c01 --- /dev/null +++ b/core/instruction_control.js @@ -0,0 +1,24 @@ +var {Robot} = require('./robot.js') + +class Control{} + +Control.break = Robot.break +Control.go_to = Robot.go_to +Control.loop = Robot.loop +Control.label = Robot.label +Control.suspend = Robot.suspend +Control.unsuspend = Robot.unsuspend +Control.sync_point = Robot.sync_point +Control.wait_until = Robot.wait_until + +Control.include_job = Robot.include_job +Control.send_to_job = Robot.send_to_job +Control.sent_from_job = Robot.sent_from_job +Control.start_job = Robot.start_job +Control.stop_job = Robot.stop_job + +Control.debugger = Robot.debugger +Control.error = Robot.error +Control.if_any_errors = Robot.if_any_errors + +module.exports.Control = Control \ No newline at end of file diff --git a/core/instruction_dexter.js b/core/instruction_dexter.js index b4d755fa..ecf28a29 100644 --- a/core/instruction_dexter.js +++ b/core/instruction_dexter.js @@ -689,7 +689,7 @@ Instruction.Dexter.read_file = class read_file extends Instruction.Dexter{ if(!this.robot) { this.set_instruction_robot_from_job(job_instance) } if (this.first_do_item_call) { const sim_actual = Robot.get_simulate_actual(this.robot.simulate) - //have to check for dexter_file_systems or else the 2nd time I rn the job, it will + //have to check for dexter_file_systems or else the 2nd time I run the job, it will //have a double length path with 2 dexter_file_systems parts if (!this.source.startsWith("/") && (sim_actual === true) && !this.source.startsWith("dexter_file_systems")) { this.fuller_source = "dexter_file_systems/" + this.robot.name + "/" + this.source @@ -703,23 +703,23 @@ Instruction.Dexter.read_file = class read_file extends Instruction.Dexter{ //the below can never happen //if (this.is_done) { // this.processing_r_instruction = false - // return Robot.break() + // return Control.break() //} let read_file_instance = this let robot = this.robot //closed over - job_instance.insert_single_instruction(Robot.loop(true, function(content_hunk_index){ + job_instance.insert_single_instruction(Control.loop(true, function(content_hunk_index){ let job_instance = this if (read_file_instance.is_done) { //init this inst just in case it gets used again read_file_instance.is_done = false read_file_instance.first_do_item_call = true read_file_instance.processing_r_instruction = false - return Robot.break() + return Control.break() } else { read_file_instance.processing_r_instruction = true return [make_ins("r", content_hunk_index, read_file_instance.fuller_source, robot), - Robot.wait_until(function(){ + Control.wait_until(function(){ return !read_file_instance.processing_r_instruction }) ] @@ -744,6 +744,7 @@ Instruction.Dexter.read_file = class read_file extends Instruction.Dexter{ } //called from socket.js + //payload_string_maybe is a string or an error code (an int > 0) static got_content_hunk(job_id, ins_id, payload_string_maybe){ let job_instance = Job.job_id_to_job_instance(job_id) if (job_instance == null){ @@ -764,9 +765,13 @@ Instruction.Dexter.read_file = class read_file extends Instruction.Dexter{ } } - //used by Dexter.write_file too + //used by Dexter.write_file to prepare path for passing it to make_ins("W" ...) + //because the path used for write_file defaults to "srv/samba/share/dde_apps", + //whereas the path for make_ins("W" ...) defaults to srv/samba/share + //see Dexter.srv_samba_share_default_to_absolute_path to do the opposite static add_default_file_prefix_maybe(path){ - if(path.startsWith("/")) { return path } + if (path.startsWith("/")) { return path } + else if (path.startsWith("#")) { return path } else if (path.startsWith("./")) { return "dde_apps/" + path.substring(2) } else if (path.startsWith("../")) { return path.substring(3) } //will go to dexrun's default foler, ie /srv/samba/share/ else { return "dde_apps/" + path } diff --git a/core/instruction_io.js b/core/instruction_io.js new file mode 100644 index 00000000..8089e3c6 --- /dev/null +++ b/core/instruction_io.js @@ -0,0 +1,16 @@ +var {Robot} = require('./robot.js') + +class IO{} + +IO.get_page = Robot.get_page +IO.grab_robot_status = Robot.grab_robot_status +IO.out = Robot.out +IO.show_picture = Robot.show_picture +IO.show_video = Robot.show_video +IO.take_picture = Robot.take_picture +//read_file and write_file are Dexter-specific instructions only, +//so they are under Dexter.read_file and Dexter.write_file + +module.exports.IO = IO + + diff --git a/core/job.js b/core/job.js index 8871b7f8..22b6fa45 100644 --- a/core/job.js +++ b/core/job.js @@ -253,10 +253,10 @@ class Job{ inter_do_item_dur: 0.005, //we don't need to have fast communication with Dexter. Minimize traffic do_list:[ Dexter.write_file("job/run/" + dde_monitor_job_instance.name + ".dde", job_src), - Robot.loop(true, + Control.loop(true, function(){ if(this.user_data.dexter_log !== undefined) { //got a dexter log meaning the monitored job is over. - return Robot.break() + return Control.break() } else if ((this.user_data.stop_job_running_on_dexter) && (!this.user_data.already_handled_stop_job)) { //set by clicking the job button @@ -1658,7 +1658,7 @@ Job.prototype.handle_start_object = function(cur_do_item){ } } else if(cur_do_item.dur) { - this.insert_single_instruction(Robot.wait_until(cur_do_item.dur)) + this.insert_single_instruction(Control.wait_until(cur_do_item.dur)) } if (!start_args) { cur_do_item.start.apply(the_inst_this) } else if (Array.isArray(start_args)) { cur_do_item.start.apply(the_inst_this, start_args) } @@ -2261,7 +2261,7 @@ Job.prototype.increment_added_items_count_for_parent_instruction_of = function(i (type_of(par_loc_index) == "number") && (par_loc_index < this.program_counter)) { //backwards goto in same job let loop_inst_maybe = this.do_list[par_loc_index] - if(loop_inst_maybe instanceof Robot.loop){ //shoot, we can't make the inserted instruction a sub_object of a loop's go_to + if(loop_inst_maybe instanceof Control.loop){ //shoot, we can't make the inserted instruction a sub_object of a loop's go_to //so we've got to climb up the tree and increment the next instr that has a positive added_items_count //but that aic must "contain" the instr_id of the added instruction for(let maybe_par_id = par_loc_index - 1; maybe_par_id >= 0; maybe_par_id--){ diff --git a/core/out.js b/core/out.js index f9626490..05ffdbfb 100644 --- a/core/out.js +++ b/core/out.js @@ -108,6 +108,7 @@ function out_eval_result(text, color="#000000", src){ src = replace_substrings(src, "'", "'") src_formatted = "  " + src_formatted + src_formatted_suffix + " " } + //if (src_formatted == "") { console.log("_____out_eval_result passed src: " + src + " with empty string for src_formatted and text: " + text)} text = "
Result of evaling " + src_formatted + "" + text + "
" append_to_output(text) } diff --git a/core/robot.js b/core/robot.js index db9307c9..81dc2e7b 100644 --- a/core/robot.js +++ b/core/robot.js @@ -114,10 +114,10 @@ var Robot = class Robot { } //Control Instructions - static break(){ //stop a Robot.loop + static break(){ //stop a Control.loop return new Instruction.break() } - static debugger(){ //stop a Robot.loop + static debugger(){ //stop a Control.loop return new Instruction.debugger() } static error(reason){ //declare that an error happened. This will cause the job to stop. @@ -231,7 +231,7 @@ var Robot = class Robot { //default to undefined. static get_page(url_or_options, response_variable_name="http_response"){ if(url_or_options === undefined){ - dde_error("Robot.get_page called with no url_or_options argument
" + + dde_error("Control.get_page called with no url_or_options argument
" + "which is typically the string of a url.") } return new Instruction.Get_page(url_or_options, response_variable_name) @@ -1071,16 +1071,16 @@ Dexter = class Dexter extends Robot { } else if ((this_robot.simulate === false) || (this_robot.simulate === "both")){ this_job.stop_for_reason("errored", "The job: " + this_job.name + " is using robot: " + this_robot.name + - "
\nbut could not connect with a Dexter robot at: " + + "
but could not connect with a Dexter robot at: " + this_robot.ip_address + " port: " + this_robot.port + - "
\nYou can change this robot to simulate=true and run it.") + "
You can change this robot to simulate=true and run it.") } else if (this_robot.simulate === null){ if ((sim_actual === false) || (sim_actual === "both")){ this_job.stop_for_reason("errored", "The job: " + this_job.name + " is using robot: " + this_robot.name + - '
\nwith the Jobs menu "Simulate?" item being: ' + sim_actual + - "
\nbut could not connect with Dexter." + - "
\nYou can use the simulator by switching the menu item to 'true'. ") + '
with the Jobs menu "Simulate?" item being: ' + sim_actual + + "
but could not connect with Dexter." + + "
You can use the simulator by switching the menu item to 'true'. ") out("Could not connect to Dexter.", "red") } else { @@ -1965,8 +1965,9 @@ Dexter.write_file = function(file_name=null, content=""){ return instrs } -//depricated. Note reversed args from Dexter.write_file +//depricated. Note reversed args from Dexter.write_file and default path adjustment Dexter.write_to_robot = function(content="", file_name=null){ + file_name = Dexter.srv_samba_share_default_to_absolute_path(file_name) return Dexter.write_file(file_name, content) } @@ -2009,12 +2010,27 @@ new Job({name: "my_job", do_list: [out(Dexter.write_file(data, "/srv/samba/share/test.txt"))]}) */ -Dexter.read_file = function (source, destination){ +Dexter.read_file = function(source, destination="read_file_content"){ return new Instruction.Dexter.read_file(source, destination) } -Dexter.read_from_robot = Dexter.read_file //depricated +//examples pf path input: +// ./foo.txt => /srv/samba/share/foo.txt +// ../foo.txt => /srv/samba/foo.txt +// foo.txt => /srv/samba/share/foo.txt +Dexter.srv_samba_share_default_to_absolute_path = function(path){ + if (path.startsWith("/")) { return path } + else if (path.startsWith("#")) { return path } + else if (path.startsWith("./")) { return "/srv/samba/share/" + path.substring(2) } + else if (path.startsWith("../")) { return "/srv/samba/" + path.substring(3) } + else { return "/srv/samba/share/" + path } +} + +Dexter.read_from_robot = function (source, destination="read_file_content"){ //depricated. simlar to read_file but differs in that srv_sama_share is the default folder + source = Dexter.srv_samba_share_default_to_absolute_path(source) + return Dexter.read_file(source, destination) +} -Dexter.prototype.read_file = function (source, destination){ +Dexter.prototype.read_file = function (source, destination="read_file_content"){ return new Instruction.Dexter.read_file(source, destination, this) } diff --git a/core/socket.js b/core/socket.js index 86f5937c..0b7b8bb8 100755 --- a/core/socket.js +++ b/core/socket.js @@ -110,7 +110,11 @@ var Socket = class Socket{ const name = instruction_array[Instruction.INSTRUCTION_ARG0] const args = instruction_array.slice(Instruction.INSTRUCTION_ARG1, instruction_array.length) const first_arg = args[0] - if(["MaxSpeed", "StartSpeed", "Acceleration"].includes(name)){ + //first convert degress to arcseconds + if(["MaxSpeed", "StartSpeed", "Acceleration", + "AngularSpeed", "AngularSpeedStartAndEnd", "AngularAcceleration", + "CartesianPivotSpeed", "CartesianPivotSpeedStart", "CartesianPivotSpeedEnd", + "CartesianPivotAcceleration", "CartesianPivotStepSize" ].includes(name)){ let instruction_array_copy = instruction_array.slice() instruction_array_copy[Instruction.INSTRUCTION_ARG1] = Math.round(first_arg * _nbits_cf) return instruction_array_copy @@ -120,6 +124,15 @@ var Socket = class Socket{ instruction_array_copy[Instruction.INSTRUCTION_ARG1] = Math.round(first_arg * 3600) //deg to arcseconds return instruction_array_copy } + else if (["CommandedAngles", "RawEncoderErrorLimits", "RawVelocityLimits"].includes(name)){ + let instruction_array_copy = instruction_array.slice() + for(let i = Instruction.INSTRUCTION_ARG1; i < instruction_array.length; i++){ + let orig_arg = instruction_array_copy[1] + instruction_array_copy[i] = Math.round(orig_arg * 3600) + } + return instruction_array_copy + } + //dynamixel conversion else if (name == "EERoll"){ //J6 no actual conversion here, but this is a convenient place //to put the setting of robot.angles and is also the same fn where we convert // the degrees to dynamixel units of 0.20 degrees @@ -131,15 +144,22 @@ var Socket = class Socket{ rob.angles[6] = first_arg * Socket.DEGREES_PER_DYNAMIXEL_UNIT return instruction_array } - else if (name == "CommandedAngles"){ + //convert meters to microns + else if ((name.length == 5) && name.startsWith("Link")){ let instruction_array_copy = instruction_array.slice() - for(let i = Instruction.INSTRUCTION_ARG1; i < instruction_array.length; i++){ + let new_val = Math.round(first_arg / _um) //convert from meters to microns + instruction_array_copy[Instruction.INSTRUCTION_ARG1] = new_val + } + else if ("LinkLengths" == "name"){ + let instruction_array_copy = instruction_array.slice() + for(let i = Instruction.INSTRUCTION_ARG1; i < instruction_array.length; i++){ let orig_arg = instruction_array_copy[1] - instruction_array_copy[i] = Math.round(orig_arg * 3600) + instruction_array_copy[i] = Math.round(orig_arg / _um) } return instruction_array_copy } - else if ((name.length == 5) && name.startsWith("Link")){ + else if (["CartesianSpeed", "CartesianSpeedStart", "CartesianSpeedEnd", "CartesianAcceleration", + "CartesianStepSize", ].includes(name)){ let instruction_array_copy = instruction_array.slice() let new_val = Math.round(first_arg / _um) //convert from meters to microns instruction_array_copy[Instruction.INSTRUCTION_ARG1] = new_val @@ -247,9 +267,10 @@ var Socket = class Socket{ //rob.robot_done_with_instruction and the rs_status from Dexter, not the simulated one. }*/ + //called both from Dexter returning, and from Sim. //data should be a Buffer object. https://nodejs.org/api/buffer.html#buffer_buffer //payload_string_maybe is undefined when called from the robot, - //and if called from sim is either a string (everything ok) + //and if called from sim and we have an "r" oplet, it is either a string (everything ok) //or an integer (1) when sim get file-not-found. // static on_receive(data, robot_name, payload_string_maybe){ @@ -274,7 +295,7 @@ var Socket = class Socket{ robot_status[Dexter.INSTRUCTION_TYPE] = oplet if(oplet == "r"){ //Dexter.read_file - if(typeof(payload_string_maybe) == "number") { //should be 1 + if(typeof(payload_string_maybe) == "number") { //only can hit im sim.// should be 2 if it hits robot_status[Dexter.ERROR_CODE] = 0 //even though we got an error from file_not_found, //don't set the error in the robot status. Just let that error //be used in r_payload_grab_aux which passes it to got_content_hunk @@ -282,37 +303,38 @@ var Socket = class Socket{ // read_file_instance.is_done = true //so the loop in read_file_instance terminates normally. } + else if ((payload_string_maybe === undefined) && //real. not simulated + (robot_status[Dexter.ERROR_CODE] > 0)) { //got an error, probably file not found + payload_string_maybe = robot_status[Dexter.ERROR_CODE] + robot_status[Dexter.ERROR_CODE] = 0 + } + //now robot_status does NOT have an error code, but if there is an error, + //payload_string_maybe is an int > 0 + //but if no error, payload_string_maybe is a string Socket.r_payload_grab(data, robot_status, payload_string_maybe) } else { Socket.convert_robot_status_to_degrees(robot_status) } - //let job_id = robot_status[Dexter.INSTRUCTION_JOB_ID] - //let job_instance = Job.id_to_job(job_id) - //let robot_name = job_instance.robot.name let rob = Dexter[robot_name] //Socket.robot_is_waiting_for_reply[robot_name] = false rob.robot_done_with_instruction(robot_status) //robot_status ERROR_CODE *might* be 1 } static r_payload_grab(data, robot_status, payload_string_maybe) { - let payload_string - if(payload_string_maybe === undefined) { + if(payload_string_maybe === undefined) { //only in real, not in sim let payload_length = robot_status[Socket.PAYLOAD_LENGTH] let data_start = Socket.PAYLOAD_START let data_end = data_start + payload_length - payload_string = (data.slice(data_start, data_end).toString()) + payload_string_maybe = (data.slice(data_start, data_end).toString()) } else if (payload_string_maybe instanceof Buffer) { //beware, sometimes payload_string_maybe is a buffer. This converts it to a string. - payload_string = payload_string_maybe.toString() - } - else { - payload_string = payload_string_maybe //normally a string, but is an integer if file not found + payload_string_maybe = payload_string_maybe.toString() } - Socket.r_payload_grab_aux(robot_status, payload_string) //payload_string still might be an integer error code, ie 1 when file not found + //else { payload_string_maybe is normally a string, but could be an integer of > 0 if there's an error } + Socket.r_payload_grab_aux(robot_status, payload_string_maybe) //payload_string still might be an integer error code, ie 1 when file not found } - //called by both Socket.r_payload_grab AND DexterSim.process_next_instruction_r //payload_string_maybe could be a string or an integer error code like 1 when no file found static r_payload_grab_aux(robot_status, payload_string_maybe){ let job_id = robot_status[Dexter.JOB_ID] diff --git a/core/storage.js b/core/storage.js index 77435048..7e142c46 100644 --- a/core/storage.js +++ b/core/storage.js @@ -80,7 +80,13 @@ function persistent_save(){ const path = add_default_file_prefix_maybe("dde_persistent.json") var content = JSON.stringify(persistent_values) content = replace_substrings(content, ",", ",\n") //easier to read & edit - content = "//Upon DDE launch, this file is loaded before dde_apps/dde_init.js\n//Use persistent_get(key) and persistent_set(key, new_value)\n//to access each of the below variables.\n\n" + content + content = "//This file content must live in Documents/dde_apps/dde_persistent.json\n" + + "//Upon DDE launch, this file is loaded before Documents/dde_apps/dde_init.js\n" + + "//Because this file is automatically saved while running DDE, only edit it with DDE closed.\n" + + "//It must be syntactically perfect, so edit it with care.\n" + + "//Within DDE, use persistent_get(key) and persistent_set(key, new_value)\n" + + "//to access each of the below variables.\n\n" + + content write_file(path, content) } module.exports.persistent_save = persistent_save @@ -95,12 +101,14 @@ function persistent_load(){ persistent_values = JSON.parse(content) //just in case files got saved out with backslashes, change to only slashes. let files = persistent_values.files_menu_paths - let slashified_files = [] - for(let file of files){ - file = convert_backslashes_to_slashes(file) - slashified_files.push(file) + if(files){ + let slashified_files = [] + for(let file of files){ + file = convert_backslashes_to_slashes(file) + slashified_files.push(file) + } + persistent_values.files_menu_paths = slashified_files } - persistent_values.files_menu_paths = slashified_files } } @@ -177,6 +185,7 @@ function dde_init_dot_js_initialize() { } else { //the folder exists, but no dde_init.js file const initial_dde_init_content = + '//This file content must live in Documents/dde_apps/dde_init.js\n' + '//This file is loaded when you launch DDE.\n' + '//Add whatever JavaScript you like to the end.\n' + '\n' + @@ -418,11 +427,11 @@ module.exports.file_exists = file_exists //only works for dde computer, not dexter computer paths. function make_folder(path){ - path = make_full_path(path) - let path_array = path.split("/") + path = make_full_path(path) //now parh is os_specific + let path_array = path.split(folder_separator()) let path_being_built = "" for(let path_part of path_array){ - path_being_built += ("/" + path_part) + path_being_built += (folder_separator() + path_part) let path_to_use = adjust_path_to_os(path_being_built) if(!file_exists(path_to_use)){ diff --git a/core/to_source_code.js b/core/to_source_code.js index 7c5a5a2f..b9085a2d 100644 --- a/core/to_source_code.js +++ b/core/to_source_code.js @@ -86,7 +86,8 @@ function to_source_code_array(args){ function to_source_code_instruction_array(args){ let inst_array = args.value - let result = args.indent + "make_ins(" + let the_indent = ((args.indent === undefined) ? "" : args.indent) + let result = the_indent + "make_ins(" let prop_args = Object.assign({}, args) //jQuery.extend({}, args) prop_args.indent = "" for(let prop_index in inst_array) { diff --git a/core/utils.js b/core/utils.js index 268d26e8..c8cfc825 100644 --- a/core/utils.js +++ b/core/utils.js @@ -1214,7 +1214,7 @@ module.exports.trim_string_quotes = trim_string_quotes //returns a string that starts with the first char of src //by trimming whitespace and comments from the front of src -//used by Robot.include_job +//used by Control.include_job function trim_comments_from_front(src){ src = src.trimLeft() if(src.startsWith("//")) { @@ -1286,6 +1286,14 @@ function format_number(num, digits_before_point=6, digits_after_point=3, allow_f } module.exports.format_number = format_number +// ordinal_string(0) => "0th" ordinal_string(1) => "1st" +// ordinal_string(11) => "11th" ordinal_string(21) => "21st" +function ordinal_string(n){ + let suffix = ["st","nd","rd"][((n+90)%100-10)%10-1]||"th" + return n + suffix +} +module.exports.ordinal_string = ordinal_string + //used by users in calling DXF.init_drawing for its dxf_filepath arg function text_to_lines(text) { return txt.text_to_lines(text) } module.exports.text_to_lines = text_to_lines diff --git a/de/de_testsuite.js b/de/de_testsuite.js index c54311e9..c250628c 100644 --- a/de/de_testsuite.js +++ b/de/de_testsuite.js @@ -1,6 +1,6 @@ new TestSuite("DE comparison", - ['DE.de_to_js("4 lessasdfsadf with 67.")', '"(4 < 67)"'], + ['DE.de_to_js("4 less with 67.")', '"(4 < 67)"'], ['DE.de_to_js("4 more than with 67.")', '"(4 > 67)"'], ['DE.de_to_js("44 equals with 67.")', '"(44 == 67)"'], ['DE.de_to_js("44 not equals with 67.")', '"(44 != 67)"'], @@ -51,7 +51,10 @@ new TestSuite("DE call", ['DE.de_to_js("launch with .")', '"launch()"'], ['DE.de_to_js("launch with.")', '"launch()"'], ['DE.de_to_js("launch with .")', '"launch()"'], - ['DE.de_to_js("launch with . ")', '"launch()"'] + ['DE.de_to_js("launch with . ")', '"launch()"'], + ['DE.de_to_js("man/Joe launch with 123, 456.")', "man.Joe.launch(123, 456)"] + + ) new TestSuite("DE comment", @@ -101,7 +104,9 @@ new Testsuite("fn def", ['DE.de_to_js("to double with num default 2. do num plus with num.!")', '"function double(num=2){(num + num)}"'], ['DE.de_to_js("to double with num of 2. do num plus with num.!")', - '"function double({num=2}={}){(num + num)}"'] + '"function double({num=2}={}){(num + num)}"'], + ['DE.de_to_js("to unnamed with num of 2. do num plus with num.!"', //not implemented + '"function({num=2}={}){(num + num)}"'] ) new TestSuite("keyword_exprs_block", @@ -109,6 +114,7 @@ new TestSuite("keyword_exprs_block", ['DE.de_to_js("otherwise do 3 plus with 4.!")', '"else{(3 + 4)}"'], ['DE.de_to_js("finally do 3 plus with 4.!")', '"finally{(3 + 4)}"'], ['DE.de_to_js("if error err do out with 234. 22 plus with 44.!")', '"catch(err){out(234)\\n(22 + 44)}"'] + ) new TestSuite("if_but_if", @@ -123,6 +129,10 @@ new TestSuite("if_but_if", ['DE.de_to_js("if true do!")', '"if(true){}"'] ) + + + + DE.eval("loop 5 do loop_result push with loop_value.!") DE.de_to_js("loop 5 do out with loop_value.!") diff --git a/de/de_testsuite_backup.js b/de/de_testsuite_backup.js index 5672e96d..17a31fc8 100644 --- a/de/de_testsuite_backup.js +++ b/de/de_testsuite_backup.js @@ -49,7 +49,8 @@ new TestSuite("DE call", ['DE.de_to_js("launch with .")', '"launch()"'], ['DE.de_to_js("launch with.")', '"launch()"'], ['DE.de_to_js("launch with .")', '"launch()"'], - ['DE.de_to_js("launch with . ")', '"launch()"'] + ['DE.de_to_js("launch with . ")', '"launch()"'], + ['DE.de_to_js("man/Joe launch with 123, 456.")', "man.Joe.launch(123, 456)"] ) new TestSuite("DE comment", diff --git a/doc/eval.html b/doc/eval.html index a614d726..8eebc294 100644 --- a/doc/eval.html +++ b/doc/eval.html @@ -8,7 +8,7 @@ samp { background-color: #cefff3; } .new_code { background-color: #ffd9b4; } -

How to Think Like a Computer

+

How to Think Like a Computer

Fry Sep 13, 2017
Note: most of this content is available in video format at How To Think Like A Computer
diff --git a/doc/guide.html b/doc/guide.html index 0ce05d39..f95cf4cc 100644 --- a/doc/guide.html +++ b/doc/guide.html @@ -330,12 +330,10 @@
Verify Joint Wiring To verify that all 5 joints are wired correctly: -
  1. Verify that the Jumpers on processor board are configured like in this picture.
    - processor board jumpers picture.
    - This is a picture of the lower half of Dexter's processor board. - The 3 jumpers that must be in the right position are the horizontal - black rectangles on the lower left part of the board. -
  2. +
    1. Verify that the jumpers on Dexter's processor board are configured correctly. + See Troubleshooting + for details. +
    2. Choose DDE's Jobs menu/Run Instruction/Show Dialog..."
    3. for J1 through J5, make each Joint's 30 degrees with the others at 0, and click on move_all_joints and observe that that joint should move by 30 degrees. @@ -358,7 +356,7 @@ On Macs, click on the "Radio waves" icon in the upper right of the screen.
      Choose "Turn WiFi Off".

      - + Dexter Networking details.
      Using DDE
      In the Misc pane header simulate radion buttons, choose "real". @@ -724,7 +722,7 @@
      Step 3
      now in the Output pane header to run it.
    4. Debug entire Job by:
      • Looking at its output in the Output pane from - error messages and Robot.out instructions.
      • + error messages and IO.out instructions.
      • Looking at the Simulate Dexter pane (select from the Misc pane header menu).
      • Inspect the Job's data structure @@ -760,7 +758,7 @@
        Step 3
        Checking the pause checkbox will cause running jobs to pause when they have completed their current instruction. Jobs started when the pause button is checked will pause right before the first user instruction - on the do_list is run. If the running Job executes a Robot.debugger + on the do_list is run. If the running Job executes a Control.debugger instruction, that will also cause the job to pause.

        When a job is paused, clicking the button will cause @@ -768,16 +766,16 @@
        Step 3
        pane, and pause. If a job is paused, and you uncheck the pause checkbox, then click the button, the job will begin running normally.

        -
        debugger - The instruction of Robot.debugger() in a do_list will cause +
        debugger + The instruction of Control.debugger() in a do_list will cause the pause checkbox to be checked and the job to pause. - A function that returns the result of Robot.debugger() or - even an array that has an element of the result of Robot.debugger() + A function that returns the result of Control.debugger() or + even an array that has an element of the result of Control.debugger() will cause a pause.

        - You can insert this instruction using the Learn JS menu/Debugging etc/Robot.debugger(). + You can insert this instruction using the Learn JS menu/Debugging etc/Control.debugger().

        - Note that using Robot.debugger() + Note that using Control.debugger() is intentionally similar to using the JavaScript constant debugger. If you have the constant debugger in the body of a function that is a do_list item, or is called by @@ -1073,7 +1071,7 @@
        Step 3
        can run on all robots. These are control instructions because they help manage the flow of instructions in a job. Examples include: Robot.stop to end a job immediately without processing the insructions after the stop instruction, - and Robot.wait_until which pauses execution of the job's instructions until + and Control.wait_until which pauses execution of the job's instructions until the calling of the given JS function returns true.

        See submenu "robot" for details about robots as @@ -1413,10 +1411,10 @@ so that you can distinquish some outputs from others in a complex debugging session. See out.
      • -
      • Robot.out Robot.out("some data") creates an +
      • IO.out IO.out("some data") creates an instruction in a Job's do_list to print content to the output console with similar functionality to out - See Robot.out.
      • + See IO.out.
      • show_instructions new Job({show_instructions=some_fn}) lets you call an arbitrary function (with clever defaults) before each diff --git a/doc/mental_model_of_memory.html b/doc/mental_model_of_memory.html index b941695e..293c572d 100644 --- a/doc/mental_model_of_memory.html +++ b/doc/mental_model_of_memory.html @@ -36,7 +36,7 @@

        A Mental Model of Memory

        Jobs can even modify each other, not just accidentally, but on purpose. A "manager" Job can tell a "worker" job what to do by adding an instruction to its do_list via -the instruction Robot.send_to_job. +the instruction Control.send_to_job.

        Dangerous and Productive
        Isn't this dangerous? Yep, just like a phone that can call any number, diff --git a/doc/processor_board_jumpers.png b/doc/processor_board_jumpers.png deleted file mode 100644 index 27849e28fce41fd8bea96e2bb129b79278e2fcf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329930 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

        - If the function arg to Robot.wait_until returns false when it is called + If the function arg to Control.wait_until returns false when it is called by the job running process, the Job continues waiting. Hit the ESC key on the keyboard to end the wait_until. Because Gamepad.down_keys() @@ -657,8 +657,8 @@
        new Job({
           name: "gamepad_job1",
        -  do_list: [Robot.out("Press RIGHT arrow or ESC to exit."),
        -            Robot.wait_until(function(){
        +  do_list: [IO.out("Press RIGHT arrow or ESC to exit."),
        +            Control.wait_until(function(){
                       let dks = Gamepad.down_keys() //returns array of down key objects
                       if (dks.length == 0){ return false }  //keep waiting
                       else if (dks[0].keyname == "ESCAPE"){ //end the "wait_until"
        @@ -674,7 +674,7 @@
                         return false //keep waiting
                       }
                     }),
        -            Robot.out("done")
        +            IO.out("done")
                    ]})
@@ -956,13 +956,7 @@ "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"}) Another picture displayed in "mycan".

- Robot Instruction
- There is a robot instruction with the same arguments and functionality as the above - method that you can stick directly on the do_list of a job.
- Example: -
new Job({name: "my_job",
-         do_list: [Robot.show_picture()]})
-      
+ There is a corresponding instruction, IO.show_picture
@@ -1015,7 +1009,7 @@
-
show_video +
show_video In order to take a picture for machine vision, you need to set up a video stream and take a snapshot of it. This is quite difficult using web-based sofware so we've made a wrapper for it.
@@ -1074,13 +1068,7 @@ "https://youtu.be/JAiHGA_I-P4"}) -Robot Instruction
-There is a robot instruction with the same arguments and functionality as the above -method that you can stick directly on the do_list of a job.
-Example: -
new Job({name: "my_job",
-     do_list: [Robot.show_video()]})
-      
+There is a corresponding instruction IO.show_video
take_picture @@ -1100,23 +1088,8 @@
 Picture.take_picture() 
 Picture.take_picture({callback: inspect}) 
-Robot Instruction
-There is a robot instruction with the same arguments and functionality as the above -method that you can stick directly on the do_list of a job. -

-The callback is called with this bound to the job -this instruction is running in.
-If the callback is a string, it is considered to be the name of -a user_data variable that you want to set to the mat created -with take_picture. You can then use this mat in further instructions. -
-Example: -
new Job({name: "my_job",
- do_list: [Robot.take_picture({
-             callback: "my_pic"})]})
-  
- Job.my_job.user_data.my_pic
- returns the mat. + +There is a corresponding instruction IO.take_picture
Low Level @@ -2043,14 +2016,17 @@

Midi.init initializes Midi. This is automatically done when you attempt to play a note -and Midi has not been inited, but there will be a slight delay in that case. +and Midi has not been inited, but there will be a slight delay in that case.
+Example:
+Midi.init()
+ If Midi has previously been inited, this calls Midi.all_notes_off. -This can also be called by choosing Insert menu/Sound/Midi.init(). +This can also be called by choosing Insert menu/Sound/Midi.init().
Parameters: None.

Midi.all_notes_off Turns off all curently on notes on all channels. Does not work when using -GarageBand for a synthesizer. +GarageBand for a synthesizer.
Parameters: None.

Midi.describe_midi_event @@ -2945,9 +2921,14 @@
Web
get_page - get_page retrieves the contents of a web page. - You pass in a url and get_page returns the contents as a string. - The argument can either be a string of a url, or a literal JS object.
+ get_page retrieves the contents of a web page.
+ Parameter:
+ url_or_options The url whose contents this instruction gets.
+ Instead of a url as the argument, you can pass a literal JS object with lots of options, described at: + options + These include the HTTP methods of: GET (the default), POST, PUT, PATCH, DELETE, HEAD, OPTIONS, + plus a zillion other options for authentication, etc. +

Example:
get_page("http://ibm.com")
If there is an error, the returned string will start with "Error:" @@ -2969,8 +2950,17 @@ a callback is called and passed an error object, a response object, and the body string of the page.

- It will not eval scripts on the page - so you may see an error when retriving a page containing JavaScript. + Parameters:
+ url_or_options The url whose contents this instruction gets.
+ Instead of a url as the argument, you can pass a literal JS object with lots of options, described at: + options + These include the HTTP methods of: GET (the default), POST, PUT, PATCH, DELETE, HEAD, OPTIONS, + plus a zillion other options for authentication, etc.
+ callback When the content of the web page is retrieved, + this callback is called, passing an error (or not), the response object, + and the string of the content of the page. + JavaScript on the page will not be evaled, but if the page is not found, + there will be an error.

Example:
 get_page_async("http://ibm.com",
   function(err, response, body){
@@ -3034,7 +3024,7 @@
 
new Job({name: "my_job",
          robot: Robot.dexter0,
          do_list: [ Dexter.move_to([0, 0.5, 0.075]),
-                    Robot.wait_until(2)
+                    Control.wait_until(2)
                     //...
                    ]
         })
@@ -3047,7 +3037,7 @@
  • Clicking on a running Job's button, i.e. in the Output pane
  • Calling Job.my_job.stop_for_reason("interrupted", "why you want it stopped")
  • In a running Job, executing the instruction: - Robot.stop_job()
  • + Control.stop_job()
You can stop all jobs by:
    @@ -3058,17 +3048,175 @@ Stopped jobs may be restarted by calling Job.my_job.start() again. This reinitializes the job with the original arguments passed to new Job and runs the do_list instructions again. +

    Webinar videos for Job:
    Making Jobs
    Advanced Jobs
    +
    Definition Time vs Run Time + To fully understand how a job operates, you must understand the difference + between Job Definition Time and Job Run Time. +

    + Job Definition Time
    + When you select and evaluate the source code of a job, you are + defining the Job. This simply uses JavaScript's eval + function to evaluate the source code, just like evaling any source code. + The result of evaling
    + new Job({name: "my_job" ...})
    + is an instance of the + class Job. Once done, you can access the Job instance via + Job.my_job
    + Many properties of the job are accessible via, for example, + Job.my_job.name , which returns the string of the Job's name.
    + Of particular import is the do_list. In the case of: +
    var ang1 = 90
    +new Job({name: "my_job",
    +         do_list: [Dexter.move_all_joints(ang1)]
    +         })
    + , evaluation sets the global variable ang1 to 90.
    + Then it sets Job.my_job to the new Job instance. + Within this instance, the property Job.my_job.do_list will + be effectively set to an array of instructions. + We say "effectively" because the actual do_list isn't bound + until the job is started. It is cached away so that it + can be copied afresh for each starting of the job. + But in any case, the do_list will now be an array containing + just one instance of the move_all_joints instruction. + This instance will have its joint1 angle set to 90 because ang1 + is evaled when the Job definition is evaluated, and ang1 evals + to 90. If you simply eval Dexter.move_all_joints(90), + you can inspect the returned object and see that it has an + array_of_angles property storing where the Dexter's angles will + be commanded to go when the Job is actually run. +

    + Job Run time
    + Now let's walk through Job Run Time. You run a Job + by clicking its button or by calling + Job.my_job.start()
    + One way to think of starting a job is that it is a second evaluation + of the Job. Only this time, it is not using JavaScript's eval, it is using + Job's special evaluator. Instead of taking an input of JavaScript source code, + its taking input of the items on the do_list (created via JS eval when defining the Job) + which can be of many different types. + Each instruction is "evaluated" by the Job differently, depending on its type. + (similar to JavaScript's eval!) + In the case of an instance of the move_all_joints instruction, + that instance is transformed to a lower level instruction + that is very similar to what you get when evaluating + make_ins("a", 90), then the 90 is convertered from + degrees into arcseconds, and sent to the Job's default robot, which better be a Dexter. +

    + Re-Running a Job
    + After a job has finished, you can rerun it by clicking its + button or calling its start method again. + This does not redefine the job. + So for instance, if between two runnings of a Job, we set our + global variable of ang1 to 45, + that will have no effect on + the 2nd running of our job, because we are not re-evaluating + ang1 or even + Dexter.move_all_joints(ang1). + Nor are we re-defining my_job. + That Joint1 inside the instance of move_all_joints is still 90, + so our 2nd running of my_job should behave the same, even + if we modify the value of ang1. + Actually if you do re_run my_job, it won't be exactly the same + because the Dexter robot will now be at a pose with Joint 1 equal to 90, + so in our 2nd running, the robot won't move. But besides this initial + "set up move", following moves would be the same between the two runnings. +

    + Functions on the do_list
    + The most flexible of instruction types is a JavaScript function. + This allows you to execute arbritary JavaScript at Job Run Time. + You might need to do this because you want to use the current environment + to help determine what instruction to run next. That current environment + may not be knowable at Job Definition Time. Perhaps you want to + verify that Dexter really is where you told it to go, or + you want to check on the status of some other Job before + proceeding with this one. +

    + To run arbitrary JS code during the running of a Job, wrap that code + in a function definition like so: +
    new Job({name: "my_job",
    +        do_list: [function(){return Dexter.move_all_joints(ang1)}]
    +        })
    + We could also do: +
    function move_it_buddy(){return Dexter.move_all_joints(ang1)}
    +new Job({name: "my_job",
    +         do_list: [move_it_buddy]
    +        })
    + particulary helpful for long functions or functions we want to + call multiple times. +

    + We are not doing: + do_list: [move_it_buddy()] because + we don't want to CALL move_it_buddy, as that would put its result on + the do_list at define time. We just want to eval the global variable + move_it_buddy to put its value, a function definition, onto the do_list + at define time. +

    + When a JavaScript function is called, + including when a running Job calls a function definition on its do_list, + it sets local variables of the function's parameters to the values passed in, + and evaluates the code in the body of the function. +

    + In the cases above, ang1 will be evaled at Job Run Time, + as will the code that creates the instance of move_all_joints. + Anything returned by a function definition on the do_list will be + dynamically added to the do_list right below the function definition. + Our do_list started out with just one item, but after running + that one item, our do_list is extended by an instance of move_all_joints. + That instance of move_all_joints is inserted into the do_list immediately after + the function that generated it, making it run immediately after the function. + So now, if we change the value of ang1 between two runnings of my_job, + we won't have to redefine the whole job in order to get the effect + of changing the value of ang1. +

    + A function definition on a do_list doesn't + have to return anything. It may just have side effects like calling out + for a print statement. But if it returns something that is not a valid instruction, + the Job will error. +

    + Job Instance Access
    + If you want to access the running Job Instance at run time, use a + function definition on the do_list, and reference this in + the body of that function definition.
    + Example:
    +
    new Job({name: "my_job",
    +         do_list:[function(){ this.user_data.foo = 2},
    +                 function(){ out("foo: " + this.user_data.foo +
    +                                 ", robot: " + this.robot.name) }
    +                 ]})
    +    
    + Note that using user_data is a convenient way to pass values from one + instruction to another, without cluttering the global variable space.
    + Flexibility and Complexity
    + Jobs have a great deal of flexibility. We can use the full power of + a general purpose programming language plus DDE's libraries + to define them. During their + running, Jobs can also use the the full power of + a general purpose programming language plus DDE's libraries, or any + that you import or create. +

    + Though powerful, this flexibility comes + at the cost of complexity. Using JavaScript's function defining + capability, you can hide (but not eliminate) many details. + Also, DDE attempts to make writing JavaScript and Jobs as simple as + possible, but it is still not simple, especially if you want + to understand what's going on beneath the surface. The goal of Dexter + is to enable you to make as many things as possible. This is why DDE needs to be so flexible. +

    + For a more complete understanding of JavaScript eval, see the DDE article: + How to Think like a Computer +
    +
    new Job parameters The parameters used to define a new Job all have defaults.
    new Job()
    is a valid job to define and run, though it will give a warning message:
    Warning: While starting job: job_1, the do_list is empty.
    - The job still requests the status of Dexter but does not cause it to move.

    + The job still requests the status of Dexter, but does not cause it to move.
    You can customize a job with the parameters:
    1. name Default's to an unused name of the format: "job_1", "job_2", "job_3", etc. You can use Job.a_job_name to get the instance programmatically.
    2. @@ -3098,15 +3246,15 @@ Normally a Job definition will look something like:
      
       new Job({name: "my_job",
      -      do_list: [Robot.out("hi")]})
      +      do_list: [IO.out("hi")]})
             
      - The call to Robot.out is evaled when the call to new Job is evaled. - Robot.out("hi") evals to an instruction object. - (Go ahead and select the call to Robot.out and click + The call to IO.out is evaled when the call to new Job is evaled. + IO.out("hi") evals to an instruction object. + (Go ahead and select the call to IO.out and click .) It is that object which is put on the do_list. - If that call to Robot.out was inside a function and returned, - and that function was on the do_list, the result of the Robot.out + If that call to IO.out was inside a function and returned, + and that function was on the do_list, the result of the IO.out would be put on the do_list. If instead we had put on our do_list:
      
      @@ -3214,7 +3362,7 @@
                the initial instructions when running the job.
                This is most commonly a non-negative integer but
                you can use any instruction_location here.
      -        See Robot.go_to
      +        See Control.go_to
               for documentation on all the different kinds of instruction_locations.
               
               
    3. ending_program_counter Default: "end" Declare at the outset of a job that it @@ -3222,7 +3370,7 @@ valid instruction_location that does not include a job. It is evaluated at the start of each instruction, so if labels move as a result of dynamically added instructions, that's OK. - See Robot.go_to + See Control.go_to for documentation on all the different kinds of instruction_locations.

      Use program_counter and ending_program_counter to "play" just a segment @@ -3254,21 +3402,32 @@ A function When the job reaches its normal stopping point, the function is called with a 'this' of the job instance and no arguments. This is effectively a callback when the job is done.
      - An instruction location This is similar to Robot.go_to + An instruction location This is similar to Control.go_to except that the job is re-initialized with its original (as defined) do_list. Any valid instruction location can be used - (see doc in Robot.go_to) except + (see doc in Control.go_to) except that it must have no job or indicate the current job. Using 0 set's the job's program_counter to instruction 0, causing the job to loop. Using an instruction location 'offset' of greater than 0, such as a label, will cause the initial running of the job to execute its top instructions, but then subsequent iterations will start somewhere in the middle.
      - A Robot.stop_job instruction can be used to end a loop. + A Control.stop_job instruction can be used to end a loop.

      See the menu item: Jobs/Insert Example/when_stopped
    4. callback_param An advanced feature of start_object, not normally used.
    + All of these parameters are accessible as properties from the job instance that they help create.
    + Example:
    + Job.my_job.robot gets the default robot for the job.
    + To access these properties from an instruction in a running job, use a function definition + on the do_list. When a running job encounters a function definition on its do_list, + it calls that function with no arguments, but with a this of + the job instance. From that you can get the Job's properties like so:
    +
    new Job ({name: "my_job",
    +          do_list: [function(){out(this.robot.name)}]})
    + where this refers to Job.my_job. + When run, my_job prints its default robot's name to the Output pane.
    start @@ -3285,7 +3444,7 @@
    • program_counter Initialize the program_counter to an instruction id. The default is 0. You can use any instruction_location here. - See Robot.go_to + See Control.go_to for documentation on all the different kinds of instruction_locations.
    • initial_instruction Add an initial instruction to the do_list at @@ -3308,15 +3467,15 @@ instruction The instruction to insert. This can be an array of instructions if you effectively want to insert more than one.
      location Any instruction_location documented under - Robot.go_to literal can be used + Control.go_to literal can be used including integers, names of labels, etc.
      -Example:
       Job.insert_instruction(Robot.out("the end"),
      +Example: 
       Job.insert_instruction(IO.out("the end"),
                              {job: "my_job",
                               offset: "end"})

      Adds an instruction that prints "the end" at the end of Job.my_job.do_list.
      -The instruction Robot.send_to_job performs the core of this functionality +The instruction Control.send_to_job performs the core of this functionality in an instruction format.
      -See Robot.wait_until documentation for its "new_instruction" argument +See Control.wait_until documentation for its "new_instruction" argument on how to continually add and execute a new instruction in a running job.
    @@ -3328,6 +3487,15 @@ A robot is a machine that can execute the instructions in its instruction set. In general, each kind of robot will have its own instruction set. The primary difference between robots is the difference in their instruction sets. +

    + All Jobs have a default robot property. You can access the robot property + from a running job like so:
    +
    new Job ({name: "my_job",
    +          do_list: [function(){ this.robot }]})
    + where this refers to Job.my_job.
    + You might use this to print out the current robot's name, by replacing
    + this.robot with:
    + out(this.robot.name)
    Robot Instructions These instructions can be used for any robot, as can the instructions for @@ -3342,7 +3510,7 @@ Arrays may be nested to any depth.
    Example:
    new Job({name: "Job1",
    -         do_list: [[Dexter.move_all_joints([10, 20, 0, 0, 0]), Robot.out("did it")],
    +         do_list: [[Dexter.move_all_joints([10, 20, 0, 0, 0]), IO.out("did it")],
                         function(){
                             let result = []
                             for(let ang = 0; ang <= 90; ang += 15){
    @@ -3427,14 +3595,14 @@
     }
     
    The above example could better be implemented using -Robot.wait_until, but there are +Control.wait_until, but there are cases where the increased flexibility of the above is convenient.

    You can put both named and anonymous functions on a do_list. A named instruction allows you to add a bit of "documentation" to the function. You can also use the name of a function like a label and "go to" -that name using a Robot.go_to instruction, +that name using a Control.go_to instruction, or use the function's name in any uses of an instruction_location.

    @@ -3449,9 +3617,9 @@ If you have some JavaScript code that you want to go between 2 other instructions on a Job's do_list, your first inclination might be to just stick it on the do_list like so -
     do_list: [Robot.out("hi"),
    +
     do_list: [IO.out("hi"),
               my_fn(12, 34),
    -          Robot.out("bye")
    +          IO.out("bye")
               ]
     
    What happens here is that when the definition of the job is evaled, @@ -3463,7 +3631,7 @@ then you're all set.
    BUT if what you want is for the eval of my_fn(12, 34) -to occur after the instruction returned by Robot.out("hi") is run, +to occur after the instruction returned by IO.out("hi") is run, then you'll want to wrap your code in a function, and put the definition of that wrapper function on the do_list like so:
    function(){ my_fn(12, 34) }
    @@ -3519,9 +3687,9 @@ function* my_gen(){ while(true){ if(Math.random() > 0.2) { - yield Robot.out("my_gen still alive") + yield IO.out("my_gen still alive") } - else { return Robot.out("gotta go") } + else { return IO.out("gotta go") } } } new Job({name: "my_job", @@ -3531,7 +3699,7 @@ for code examples. Related Job facilities are:
    • using instruction -Robot.wait_until("new_instruction")
    • +Control.wait_until("new_instruction")
    • Job parameter: when_stopped
    @@ -3557,7 +3725,7 @@ when "instructions" on the do_list are started. DDE has a number of instruction types that help you control when the next instruction is run. A primary one is called -wait_until +wait_until that blocks the processing of the following instruction.

    In order to provide a more general mechanism to handle such methods @@ -3627,7 +3795,7 @@
    new Job({name: "Job1",
           do_list: [{start: function(){out("wait a sec or 3")},
                      dur: 3},
    -                 Robot.out("done")]})
    +                 IO.out("done")]})
           
  • user_data_variable Default: null If present and non-null, the automatically synthesized callback @@ -3640,7 +3808,7 @@
Examples:
new Job({name: "my_job1",
-         do_list: [Robot.out("hey from my_job1")]})
+         do_list: [IO.out("hey from my_job1")]})
 new Job({name: "my_job2",
          robot: new Brain({name: "brain2"}),
          do_list: [Job.my_job1]})
@@ -3673,7 +3841,7 @@
 new Job({name: "my_job",
          do_list: [{start: function(){out("wait a sec or 3")},
                     dur: 3},
-                   Robot.out("done waiting")]})
+                   IO.out("done waiting")]})
     
Above when the job starts, the first instruction's start method is called, which prints in the Output pane, "wait a sec or 3". @@ -3683,7 +3851,7 @@ and prints out "done waiting".
new Job({name: "my_job",
-    do_list: [Robot.out("hey"),
+    do_list: [IO.out("hey"),
     {start: speak,
      start_args: {speak_data: "Clean my work space.", rate:0.8},
      callback_param: "callback",
@@ -3694,7 +3862,7 @@
      callback_param: "callback",
      user_data_variable: "the_text2"
     },
-    Robot.out("you")
+    IO.out("you")
     ]})
     
The above job first prints out "hey", then speaks @@ -3718,7 +3886,7 @@ callback(b, a, 123) } new Job({name: "my_job", - do_list: [Robot.out("hey"), + do_list: [IO.out("hey"), {start: test_cb, start_args: [11, 22], callback_param: 2, @@ -3758,65 +3926,45 @@ they already were.
-
break - The Robot.break() instruction, when in the body of a - Robot.loop, +
Control + Control instructions can be used in any Job regardless of its default robot. +
break + The Control.break() instruction, when in the body of a + Control.loop, instruction, ends the loop.

Parameters: None.
Example:
new Job({name: "my_job",
-     do_list: [Robot.out("start of job"),
-               Robot.loop(true,
+     do_list: [IO.out("start of job"),
+               Control.loop(true,
                           function(iter_index, iter_val, iter_total){
                               if(iter_index < 3) {
-                                 return Robot.out("index: "       + iter_index +
+                                 return IO.out("index: "       + iter_index +
                                                   " iter_val: "   + iter_val +
                                                   " iter_total: " + iter_total)}
-                              else { return Robot.break() } }),
-               Robot.out("end of job")
+                              else { return Control.break() } }),
+               IO.out("end of job")
                ]})    
- If you have nested loops, Robot.break ends the inner loop only. - If Robot.break is not in a loop, a warning will be printed in the Output pane. + If you have nested loops, Control.break ends the inner loop only. + If Control.break is not in a loop, a warning will be printed in the Output pane.

Note that Javascript also uses the symbol break to end a JavaScript for loop.
- +
debugger - Robot.debugger() allows you to pause and step through the rest of the instructions. - See Robot.debugger + Control.debugger() allows you to pause and step through the rest of the instructions. + See Control.debugger
-
error +
error Causes the job to error, immediately stopping it. The one argument is a string of a reason for the error which - will aid in debugging. Example:
Robot.error("fubar")
+ will aid in debugging. Example:
Control.error("fubar")
-
get_page - Similar to the function get_page, only made into an instruction. - This instruction gets the content of a url and places it in a given user_data variable - on the job instance before allowing the next instruction in the do_list to run.
- Example:
new Job({name: "j1",
-         do_list: [Robot.get_page("http://www.nactem.ac.uk/software/acromine/dictionary.py?sf=BMI"),
-                   function(){out("got response of: " + 
-                                    this.user_data.http_response)}
-         ]}) 
- Parameters:
- url_or_options: The url whose contents this instruction gets.
- Instead of a url as the argument, you can pass a literal JS object with lots of options, described at: - options -

- response_variable_name: Default: "http_response". The name - of the property in the job instance's user_data object to set to the - content of the url. -

-Using make_url can help make constructing calls to get_page a bit easier. -Example:
 Robot.get_page(make_url("www.nactem.ac.uk/software/acromine/dictionary.py",
-                         {sf: "BMI"}))
-make_url is documented in the reference manual under "I/O". -
-
go_to + +
go_to In the 1960's programs were usually characterized by a list of instructions. As more flexible control was needed, the "goto" instruction was added to cause the program_counter that was pointing at the executing instruction to jump to @@ -3881,7 +4029,7 @@ Generally "highest_completed_instruction_or_zero" is more useful than "highest_completed_instruction".
-A literal object The literal object can have up to three properites. +A literal object The literal object can have up to three properites.
  • offset Can be any one of the above instruction_locations.
    Example: {offset: 12}
  • @@ -3922,136 +4070,27 @@
Instruction_locations are also used in initializing a Job's program_counter in defining the job, as well as -in calling a job's start method. The Robot.send_to_job instruction +in calling a job's start method. The Control.send_to_job instruction uses an instruction_location for identifying where within the job to insert the given instruction as does the method Job.insert_instruction.

Much of the time that you'd be tempted to use a backwards - Robot.go_to, - Robot.loop is better. + Control.go_to, + Control.loop is better.
- -
grab_robot_status - robot_status is an array that holds data from the robot, along with aspects of the instruction - that was sent to the robot to capture that data. This array is the value of the robot - instance field robot_status.

- The instruction: Robot.grab_robot_status() provides an easy way to get values out of that array - and made available for other instructions to use.
- Parameters
- user_data_variable Default: "grabbed_robot_status" A string (required) of the name of the job's - user_data variable to shove the grabbed - robot_status data into. If there is already such a variable, - its value is over-written. If not, it is created and intialized - with the new value. -

- After this instruction is run, the grabbed value - is available globally Job.the_job_name.user_data.the_val_of_this_arg.
- For instance, if this job is named "my_job" and the value of - user_data_variable is "my_var" then: - Job.my_job.user_data.my_var - But inside another instruction that is defined as a function, - this will be bound to the current job instance so: - this.user_data.my_var will access the grabbed data.
- - start_index A non-negative integer signifying the - first data item to extract from the robot_status array. - Its default value is the value of Serial.DATA0 - Another normal value would be Dexter.J1_ANGLE - See below for a comprehensive list. -
- Special values:
- "all" The entire 60 element robot_status - array is used. The value of end_index is ignored.
- "data_array" The part of the robot_status array after - the header information is used. For Serial robots, this will be just - the data returned by the serial port. For Dexter robots, this - will be the data about Dexter's joint angles, etc. - The value of end_index is ignored.
- end_index A non-negative integer signifying the last element of the - robot_status array to extract. The default value is null. - If this value is null or not passed, only the data at the start_index - is used. The value stored in the user_data variable will NOT be an array, - just that one element.
- Special value "end" The portion of the robot_status - from start_index through the end of the robot_status array is extracted. -

- If both the start_index and end_index are not passed, - then the value will be: For a Serial robot, the first "item" - returned from the serial port in response to a send. - For Dexter, it will be DMA_READ_DATA. -

- You can use some constants for the values of start_index and end_index.
- For a Dexter robot these are:
- Dexter.JOB_ID
- Dexter.INSTRUCTION_ID
- Dexter.START_TIME //ms since jan 1, 1970 from Dexter's clock
- Dexter.STOP_TIME
- Dexter.INSTRUCTION_TYPE //a letter signifying the instruction type.
-
- Dexter.ERROR_CODE //0 means no error.
- Dexter.DMA_READ_DATA
- Dexter.READ_BLOCK_COUNT
- Dexter.RECORD_BLOCK_SIZE
- Dexter.END_EFFECTOR_IN
-
- Dexter.J1_ANGLE
- Dexter.J1_DELTA
- Dexter.J1_PID_DELTA
- Dexter.J1_FORCE_CALC_ANGLE
- Dexter.J1_A2D_SIN
- Dexter.J1_A2D_COS
- Dexter.J1_PLAYBACK
- Dexter.J1_SENT
- Dexter.J1_SLOPE
-and a similar set of names beginning with J2, J3, J4 and J5. -

-For a Serial robot these are:
- Serial.JOB_ID
- Serial.INSTRUCTION_ID
- Serial.START_TIME // ms since jan 1, 1970 from Dexter's clock
- Serial.STOP_TIME // ms since jan 1, 1970 from Dexter's clock
- Serial.INSTRUCTION_TYPE // A letter indicating the instruction type
- - Serial.ERROR_CODE // means no error.
- Serial.DATA0 // data coming back from the board
- Serial.DATA1
- Serial.DATA2
- Serial.DATA3
- Serial.DATA4
- Serial.DATA5
- Serial.DATA6
- Serial.DATA7
- Serial.DATA8
- Serial.DATA9
-
- -In order to insure that the Dexter robot_status array is up to date, -you should place Dexter.get_robot_status() in your do_list before -the grab_robot_status instruction.
-Examples of 2 adjacent instructions on a job's do_list:
- - Dexter.get_robot_status()
- Robot.grab_robot_status("my_zero_data", Serial.DATA0)
-grab_robot_status can be called with a subject of a job instance in place -of Robot like so:
- Robot.dexter0.grab_robot_status("my_user_data_var") -

-See Job Example: Serial Port for an extended example. -
- -
if_any_errors - Robot.if_any_errors checks to see if any of the supplied jobs have errored. +
if_any_errors + Control.if_any_errors checks to see if any of the supplied jobs have errored. If so, it inserts the supplied instruction into the do_list on the job - that this instruction is on. In either case, Robot.if_any_errors continues + that this instruction is on. In either case, Control.if_any_errors continues the job that its on. Parameters
job_names An array of strings of job names. If a named job doesn't exist, error.
- instruction_if_error Default: Robot.error() An instruction that will be inserted into the do_list + instruction_if_error Default: Control.error() An instruction that will be inserted into the do_list immediately after this instruction IF one of the named jobs has errored. The default for instruction_if_error is a function that - inserts an instance of Robot.error into the do_list of this job, causing it to error. + inserts an instance of Control.error into the do_list of this job, causing it to error. The "reason" for that error instruction is explicit about the cause of the error.

Generally a job should be stopped quickly if there is an error. @@ -4060,13 +4099,13 @@ current job for "this") so that some arbitrary compensation can be made for the error.
-
include_job +
include_job Inserts a do_list or a portion thereof into the current Job, right after this instruction.
The job_name parameter takes a wide variety of data to specify where to get a do_list from. Most of those data formats are not actual Job names, but they perform a similar role to a Job name in referencing a do_list to include.

-Robot.include_job has a large number of very specific error messages to help you correct mistakes.
+Control.include_job has a large number of very specific error messages to help you correct mistakes.
Parameters:
job_name Required. Indicates a do_list, which will be "clipped" by start_loc and end_loc. Formats: @@ -4082,7 +4121,7 @@ instead of Jobs or Arrays is that the string is resolved at instruction run-time whereas Job and Array are resolved at Job definition time. By delaying the resolution, you can place the definition that the string refers to - AFTER the Job definition containing the Robot.include_job instruction. + AFTER the Job definition containing the Control.include_job instruction. String formats:
  • Job.a_job_name Example: "Job.my_job"
    This is the prefered way to reference a Job. @@ -4130,7 +4169,7 @@ If job_name refers to a Job, the default is the Job's orig_args.program_counter, whose default is, in turn, 0 When job_name refers to a job, start_loc can be any 'instruction_location'.
    - See Robot.go_to for details + See Control.go_to for details on the instruction_location format.
    end_loc Grab the instructions from the indicated do_list, up to, but not including, end_loc. If job_name refers to an instructions array, the default for end_loc is @@ -4140,28 +4179,28 @@ When job_name refers to a job, end_loc can be any 'instruction_location', and its default is the ending_program_counter for the job, which is, by default, "end".

    - See Robot.go_to for details + See Control.go_to for details on the instruction_location format.

    Example:
    - Robot.include_job("Job.my_job")
    + Control.include_job("Job.my_job")
    Inserts all the original instructions that are normally run when running "my_job", into the current job, right below this instruction.

    - Robot.include_job makes it easy to build up jobs hierarchically, effectively + Control.include_job makes it easy to build up jobs hierarchically, effectively treating a low level Job as a single instruction in a higher level Job.
    - See also: Robot.start_job + See also: Control.start_job
-
label +
label This instruction is a no-op. However, it provides a target location -for Robot.go_to, initializing the program_counter of a job, and -a location to insert an instruction using Robot.send_to_job.
-Example: Robot.label("lab2") +for Control.go_to, initializing the program_counter of a job, and +a location to insert an instruction using Control.send_to_job.
+Example: Control.label("lab2")
-
loop - Robot.loop lets a Job repeat a sequence of instructions a number of times. +
loop + Control.loop lets a Job repeat a sequence of instructions a number of times. This instruction is one of the most powerful and complex in DDE, providing a wide range of looping behavior.
Parameters (2)
@@ -4169,14 +4208,14 @@ i.e. the iteration count of the loop. It can be one of five types:

boolean
If false, loop no times. This loop becomes a no-op.
- If true, loop forever, or until a Robot.break instruction in the body_fn + If true, loop forever, or until a Control.break instruction in the body_fn is executed. Like all arguments, this is evaluated at Job definition time to supply a value of a boolean (true or false).

non-negative integer
Number of times to call the body_fn. If 0, the loop becomes a no-op, just like when this arg is false. This can be Infinity such that looping would only - be limited by a Robot.break instruction in the body_fn or + be limited by a Control.break instruction in the body_fn or stopping the Job.

array
The length of the array is the number of times to loop. @@ -4209,11 +4248,11 @@ no looping occurs, this loop is a no-op. If true is returned, that "true" is used for the first iteration, and the function is called at the beginning of every subsequent iteration until false - is returned or the body_fn executes a Robot.break instruction. + is returned or the body_fn executes a Control.break instruction. You want to use a function here instead of directly using a boolean, non-neg-integer, or array, when you want those values to be computed at the time - the Robot.loop instruction is executed as opposed to Job definition time. + the Control.loop instruction is executed as opposed to Job definition time.

body_fn This function is called with basically the same args as are used to call times_to_loop when it is a function.
@@ -4248,69 +4287,32 @@ a number 6 and generally appear before normal string-named keys. Its best if you don't depend on an ordering of the properties. - Loop instructions may be nested. Robot.break instructions will - end the inner-most loop that contains the Robot.break. + Loop instructions may be nested. Control.break instructions will + end the inner-most loop that contains the Control.break.

Much of the time that you'd be tempted to use a backwards - Robot.go_to, + Control.go_to, loops are better.

Example
new Job({name: "my_job",
-    do_list: [Robot.out("start of job"),
-              Robot.loop([100, 101, 102, 103, 104],
+    do_list: [IO.out("start of job"),
+              Control.loop([100, 101, 102, 103, 104],
                          function(iter_index, iter_val, iter_total){
                              if(iter_index < 3) {
-                                return Robot.out("index: "       + iter_index +
+                                return IO.out("index: "       + iter_index +
                                                  " iter_val: "   + iter_val +
                                                  " iter_total: " + iter_total)}
-                             else { return Robot.break() }
+                             else { return Control.break() }
                          }
                         ),
-               Robot.out("end of job"),
+               IO.out("end of job"),
 ]})     
- See Jobs menu/Insert Example/Robot.loop for more examples. + See Jobs menu/Insert Example/Control.loop for more examples.
-
out - Very similar to the function out but made for use as a robot instruction. - Prints a message to the Output pane in the color of your choice. - This is the "print statement" as an instruction, so useful in debugging.

- Example:
- Robot.out("hey " + 345, "green")

- Parameters:
- val Any JavaScript data. Most commonly this is a string, but - can be a number, an array etc.
- color A string representing a color. Default "black". Can - be any string in the color series, or have the format:
- "rgb(255, 100, 0)".
- temp Default: false. With the default, printed output stays in the - Output pane until DDE is relaunched. -

- If temp is true, - then val is still printed in the Output pane, but is over-ridden - by subsequence calls to out with temp == true. Calls to out with temp == false - will erase any "temp" output. -

- If temp is a string, then out prints val similarly to temp == true in that - the previous call to out with that temp string will be over-ridden in place. - However, when another call to out with a different value for temp occurs, - the output of out with a temp string will not be erased. - Thus the last call to out with a given temp string remains in the Output pane, - in its place, regardless of other out calls. -

- This is the most basic debugging tool, often used to let you know that - the job its in has reached this instruction. Unlike an instruction such as:
- function(){out("The status is: " + this.status_code)}
- Robot.out cannot access its job instance, but it does print out - its job name and instruction ID right before printing val. -

- See also print statements -
- - -
start_job - Robot.start_job starts another job.
+
start_job + Control.start_job starts another job.
Parameters:
job_name Required. Can be:
  • An instance of the Job to start.
  • @@ -4366,23 +4368,23 @@
    
     new Job({name: "job1",
    -         do_list: [Robot.out("in job 1"),
    -                   Robot.wait_until(5)]})
    +         do_list: [IO.out("in job 1"),
    +                   Control.wait_until(5)]})
     new Job({name: "job2",
              robot: new Brain({name: "b1"}),
    -          do_list: [Robot.start_job("Job.job1"),
    -                    Robot.out("last instruction")
    +          do_list: [Control.start_job("Job.job1"),
    +                    IO.out("last instruction")
                         ]
     })    
    job2 starts job1 and waits for job1 to complete before continuing, because the last arg to start_job is true.
    
     new Job({name: "job1",
    -         do_list: [Robot.out("in job 1"),
    -                   Robot.wait_until(5)]})
    +         do_list: [IO.out("in job 1"),
    +                   Control.wait_until(5)]})
     new Job({name: "job2",
    -          do_list: [Robot.start_job("job1", undefined, undefined, true),
    -                    Robot.out("last instruction")]
    +          do_list: [Control.start_job("job1", undefined, undefined, true),
    +                    IO.out("last instruction")]
     })    
    job2 starts job1 and waits for job1 to complete before continuing, because the last arg to start_job is true. @@ -4392,17 +4394,17 @@ neither can rely on the Dexter being where they last told it to go.
    
     new Job({name: "job1",
    -         do_list: [Robot.out("in job 1"),
    -                   Robot.wait_until(5)]})
    +         do_list: [IO.out("in job 1"),
    +                   Control.wait_until(5)]})
     new Job({name: "job2",
              robot: new Brain({name: "b1"}),
    -          do_list: [Robot.start_job("job1", {start_if_robot_busy: true}, undefined, true),
    -                    Robot.out("last instruction")]
    +          do_list: [Control.start_job("job1", {start_if_robot_busy: true}, undefined, true),
    +                    IO.out("last instruction")]
     })    
    - See also Robot.include_job + See also Control.include_job
-
stop_job +
stop_job Causes the indicated job to stop just before executing a particular instruction.
Parameters:
instruction_location Optional. Determines the job to stop and the instruction within that @@ -4412,18 +4414,18 @@ the offset will be "program_counter", i.e. the job will stop before executing its next instruction. Thus the default is that the current job will be stopped immediately. - See Robot.go_to for details + See Control.go_to for details on the instruction_location format.
reason A string. The reason that the job is being told to stop.
perform_when_stopped A boolean. When false (the default) the job will behave as if its 'when_stopped' parameter is "stop", i.e. the job will end. When true, the job's when_stopped action will be performed.
- Example:Robot.stop_job({job: "my_job", offset: "label1"}) + Example:Control.stop_job({job: "my_job", offset: "label1"}) Job.my_job will stop when it reaches the instruction named "label1".
-
suspend +
suspend Causes the indicated job to pause. It will not execute any more of its instructions until it is unsuspended.
Parameters:
@@ -4433,11 +4435,11 @@ May also be a job_instance to suspend.
reason Default: "". A string of why the job is suspended.
Example: - Robot.suspend().
+ Control.suspend().
Suspends the current job for no reason.
-
unsuspend +
unsuspend Unsuspends a suspended job. If the job to be suspended is not suspended, no action will be taken. Note that a job cannot unsuspend itself, because it is not running. @@ -4448,7 +4450,7 @@ If a string, the job is stopped, with the reason of this stop_reason.

Example:
-Robot.suspend("my_job")

+Control.suspend("my_job")

unsuspend is also a method on a job.
Example:
Job.my_job.unsuspend().
@@ -4458,7 +4460,7 @@
-
sync_point +
sync_point A sync_point instruction causes all running jobs with the same-named sync_point to pause until they all reach the sync_point. Once that happens, they are all allowed to proceed executing their instructions.
@@ -4470,7 +4472,7 @@ you want to all pause at the same place. A sync_point instruction may contain the name of the job its in. Effectly that doesn't matter, but does allow all the same-named sync points to have the same list of job_names.
- Example: Robot.sync_point("midway", ["job_one", "job_two"])
+ Example: Control.sync_point("midway", ["job_one", "job_two"])

If a sync point instruction has no job names, or only its own job name, it will not wait but rather breeze right through its sync_point. @@ -4484,11 +4486,11 @@ because it allows those jobs that can proceed to do so.
-
send_to_job -Robot.send_to_job inserts instructions into another job's do_list. It can also -start, unsuspend and grab data from another job. Robot.send_to_job is complex, powerful, +
send_to_job +Control.send_to_job inserts instructions into another job's do_list. It can also +start, unsuspend and grab data from another job. Control.send_to_job is complex, powerful, and rarely used. Example:
-Robot.send_to_job({do_list_item: Dexter.move_to([0, 0.5, 0.075]),
+Control.send_to_job({do_list_item: Dexter.move_to([0, 0.5, 0.075]),
                    where_to_insert: "end",
                    unsuspend: true,
                    wait_until_done: true})
@@ -4497,7 +4499,7 @@
  • where_to_insert The location in the do_list of the to_job to insert the do_list_item. The full list of instruction_locations for where_to_insert can be seen in the documentation for the - Robot.go_to instruction. + Control.go_to instruction. Particularly useful ones for send_to_job are:
    • {job: "other_job", offset: "next_top_level"} Inserts the do_list_item after the program_counter and just before the next original (top level) do_list item @@ -4545,13 +4547,13 @@ Job.insert_instruction.
  • - -
    wait_until +
    wait_until This instruction causes a job to pause until the supplied condition is met.
    -Example:Robot.wait_until(2)
    +Example:Control.wait_until(2)
    Parameter:
    fn_date_dur Default: 1 This argument can be one of:
    • an integer The number of seconds for the wait.
    • @@ -4587,19 +4589,19 @@ on the do_list, then this job waits until a new instruction is added on the end of a do list.
      Example:
       new Job({name: "my_job",
      -         do_list: [Robot.out("first instruction"),
      -                   Robot.wait_until("new_instruction")]})
      +         do_list: [IO.out("first instruction"),
      +                   Control.wait_until("new_instruction")]})
           
      Evaling Job.my_job.start()
      causes "first instruction" to be printed out, then the job pauses until an instruction is inserted into the do_list right after this "wait_until" instruction.
      - Job.insert_instruction(Robot.out("the end"),
      + Job.insert_instruction(IO.out("the end"),
                              {job: "my_job",
                               offset: "after_program_counter"})
      Causes wait_until to stop waiting, "the end" is printed and the job completes successfully.
      If instead of that argument to Job.insert_instruction, we had instead used:
      - Job.insert_instruction([Robot.out("the middle"),
      -                        Robot.wait_until("new_instruction")],
      + Job.insert_instruction([IO.out("the middle"),
      +                        Control.wait_until("new_instruction")],
                               {job: "my_job",
                                offset: "after_program_counter"})
      then each time we eval that code, it prints "the middle" and @@ -4613,26 +4615,240 @@ to refer to a program_counter that is less than or equal to the program_counter in the job referenced by the instruction_location. This instruction waits until a job gets to a certain instruction. - This performs like a one_sided Robot.sync_point instruction + This performs like a one_sided Control.sync_point instruction where the job this instruction is in will wait for the job specified in the instruction_location, but not the other way around. - Its advantage over Robot.sync_point is that you don't have - to have a Robot.sync_point instruction in the job you're waiting for. + Its advantage over Control.sync_point is that you don't have + to have a Control.sync_point instruction in the job you're waiting for. Thus you can wait for a job reaching one of its instructions that never expected it to be waited for.
      Warning: If the instruction_location specifies the job - that this Robot.wait_until instruction is in, or lets the instruction_location + that this Control.wait_until instruction is in, or lets the instruction_location default to that, this job could wait for itself and thus forever.
    +
    +
    IO + IO instructions can be used in any Job, regardless of its default robot. +
    get_page + Similar to the function get_page, only made into an instruction. + This instruction gets the content of a url and places it in a given user_data variable + on the job instance before allowing the next instruction in the do_list to run.
    + Example:
    new Job({name: "j1",
    +         do_list: [IO.get_page("http://www.nactem.ac.uk/software/acromine/dictionary.py?sf=BMI"),
    +                   function(){out("got response of: " +
    +                                    this.user_data.http_response)}
    +         ]}) 
    + Parameters:
    + url_or_options: The url whose contents this instruction gets.
    + Instead of a url as the argument, you can pass a literal JS object with lots of options, described at: + options + These include the HTTP methods of: GET (the default), POST, PUT, PATCH, DELETE, HEAD, OPTIONS, + plus a zillion other options for authentication, etc. +

    + response_variable_name: Default: "http_response". The name + of the property in the job instance's user_data object to set to the + content of the url. +

    + Using make_url can help make constructing calls to get_page a bit easier. + Example:
     Control.get_page(make_url("www.nactem.ac.uk/software/acromine/dictionary.py",
    +                         {sf: "BMI"}))
    + make_url is documented in the reference manual under "I/O". +
    + +
    grab_robot_status + robot_status is an array that holds data from the robot, along with aspects of the instruction + that was sent to the robot to capture that data. This array is the value of the robot + instance field robot_status.

    + The instruction: IO.grab_robot_status() provides an easy way to get values out of that array + and made available for other instructions to use.
    + Parameters
    + user_data_variable Default: "grabbed_robot_status" A string (required) of the name of the job's + user_data variable to shove the grabbed + robot_status data into. If there is already such a variable, + its value is over-written. If not, it is created and intialized + with the new value. +

    + After this instruction is run, the grabbed value + is available globally Job.the_job_name.user_data.the_val_of_this_arg.
    + For instance, if this job is named "my_job" and the value of + user_data_variable is "my_var" then: + Job.my_job.user_data.my_var + But inside another instruction that is defined as a function, + this will be bound to the current job instance so: + this.user_data.my_var will access the grabbed data.
    + + start_index A non-negative integer signifying the + first data item to extract from the robot_status array. + Its default value is the value of Serial.DATA0 + Another normal value would be Dexter.J1_ANGLE + See below for a comprehensive list. +
    + Special values:
    + "all" The entire 60 element robot_status + array is used. The value of end_index is ignored.
    + "data_array" The part of the robot_status array after + the header information is used. For Serial robots, this will be just + the data returned by the serial port. For Dexter robots, this + will be the data about Dexter's joint angles, etc. + The value of end_index is ignored.
    + end_index A non-negative integer signifying the last element of the + robot_status array to extract. The default value is null. + If this value is null or not passed, only the data at the start_index + is used. The value stored in the user_data variable will NOT be an array, + just that one element.
    + Special value "end" The portion of the robot_status + from start_index through the end of the robot_status array is extracted. +

    + If both the start_index and end_index are not passed, + then the value will be: For a Serial robot, the first "item" + returned from the serial port in response to a send. + For Dexter, it will be DMA_READ_DATA. +

    + You can use some constants for the values of start_index and end_index.
    + For a Dexter robot these are:
    + Dexter.JOB_ID
    + Dexter.INSTRUCTION_ID
    + Dexter.START_TIME //ms since jan 1, 1970 from Dexter's clock
    + Dexter.STOP_TIME
    + Dexter.INSTRUCTION_TYPE //a letter signifying the instruction type.
    +
    + Dexter.ERROR_CODE //0 means no error.
    + Dexter.RECORD_BLOCK_SIZE
    + Dexter.END_EFFECTOR_IN
    +
    + Dexter.J6_MEASURED_ANGLE
    + Dexter.J6_MEASURED_TORQUE
    + Dexter.J7_MEASURED_ANGLE
    + Dexter.J7_MEASURED_TORQUE
    + and, for J1 through J5, +
    + Dexter.J1_ANGLE
    + Dexter.J1_DELTA
    + Dexter.J1_PID_DELTA
    + Dexter.J1_A2D_SIN
    + Dexter.J1_A2D_COS
    + Dexter.J1_MEASURED_ANGLE
    + Dexter.J1_SENT
    +

    + For a Serial robot these are:
    + Serial.JOB_ID
    + Serial.INSTRUCTION_ID
    + Serial.START_TIME // ms since jan 1, 1970 from Dexter's clock
    + Serial.STOP_TIME // ms since jan 1, 1970 from Dexter's clock
    + Serial.INSTRUCTION_TYPE // A letter indicating the instruction type
    + + Serial.ERROR_CODE // means no error.
    + Serial.DATA0 // data coming back from the board
    + Serial.DATA1
    + Serial.DATA2
    + Serial.DATA3
    + Serial.DATA4
    + Serial.DATA5
    + Serial.DATA6
    + Serial.DATA7
    + Serial.DATA8
    + Serial.DATA9
    +
    + + In order to insure that the Dexter robot_status array is up to date, + you should place Dexter.get_robot_status() in your do_list before + the grab_robot_status instruction.
    + Examples of 2 adjacent instructions on a job's do_list:
    + + Dexter.get_robot_status()
    + IO.grab_robot_status("my_zero_data", Serial.DATA0)
    + grab_robot_status can be called with a subject of a job instance in place + of Robot like so:
    + Robot.dexter0.grab_robot_status("my_user_data_var") +

    + See Job Example: Serial Port for an extended example. +
    + +
    out + Very similar to the function out but made for use as a robot instruction. + Prints a message to the Output pane in the color of your choice. + This is the "print statement" as an instruction, so useful in debugging.

    + Example:
    + IO.out("hey " + 345, "green")

    + Parameters:
    + val Any JavaScript data. Most commonly this is a string, but + can be a number, an array etc.
    + color A string representing a color. Default "black". Can + be any string in the color series, or have the format:
    + "rgb(255, 100, 0)".
    + temp Default: false. With the default, printed output stays in the + Output pane until DDE is relaunched. +

    + If temp is true, + then val is still printed in the Output pane, but is over-ridden + by subsequence calls to out with temp == true. Calls to out with temp == false + will erase any "temp" output. +

    + If temp is a string, then out prints val similarly to temp == true in that + the previous call to out with that temp string will be over-ridden in place. + However, when another call to out with a different value for temp occurs, + the output of out with a temp string will not be erased. + Thus the last call to out with a given temp string remains in the Output pane, + in its place, regardless of other out calls. +

    + Unlike an instruction such as:
    + function(){out("The status is: " + this.status_code)}
    + IO.out cannot access its job instance, but it does print out + its job name and instruction ID right before printing val. +

    + See also print statements +
    +
    show_picture + This instruction takes the same arguments and has the same functionality as the method + Picture.show_picture + except that it doesn't take a callback argument.
    + Example: +
    new Job({name: "my_job",
    +         do_list: [IO.show_picture()]})
    +      
    +
    +
    show_video + This instruction takes the same arguments and has the same functionality as the method + Picture.show_video + except that it doesn't take a callback argument.
    + Example: +
    new Job({name: "my_job",
    +     do_list: [IO.show_video()]})
    +      
    +
    +
    take_picture + This instruction takes the same arguments and has similar functionality as the method + Picture.take_picture + except that it doesn't take a camera_id argument. + It does take a callback argument. + The next instruction is run after the callback returns, providing + the callback doesn't take too long, so keep callback computation fairly short + if your next instruction depends on the callback being completed. +

    + The callback is called with this bound to the job + that this instruction is running in.
    + If the callback is a string, it is considered to be the name of + a user_data variable that you want to set to the mat created + with take_picture. You can then use this mat in further instructions. +
    + Example: +
    new Job({name: "my_job",
    +         do_list: [IO.take_picture({callback: "my_pic"})]})
    +  
    + Job.my_job.user_data.my_pic
    + returns the mat. +
    +
    Brain Brain is a virtual robot used to manage other robots or do purely software tasks. -It has no special instructions of its own, but inherits Robot's instructions, just -like all the other robots. +It has no special instructions of its own, but can use Control, Human, IO and the +miscellaneous Robot instructions (function definitions, etc), +just like all the other robots.

    @@ -4889,7 +5105,7 @@ This instruction blocks further processing of the job's do_list instructions until all of the instructions on Dexter's instruction_queue are executed.

    -See also the instruction: Robot.grab_robot_status +See also the instruction: Control.grab_robot_status
    get_robot_status_immediately @@ -4941,7 +5157,7 @@

    If a joint angle is passed in as an array of one number, that number will be used as the "relative" degrees to add to the current joint angle. -So for instance, if the preious move_all_joints instruction +So for instance, if the previous move_all_joints instruction for j1 indicated 30, and the next move_all_joints command for j1 indicated [5], then j1 would be moved to 35 degrees. The syntax of using a number wrapped in an array @@ -5238,7 +5454,12 @@ } ]})
    See also read_file - +

    + Dexter.read_from_robot is a similar instruction, except that the default folder + for the source is "/srv/samba/share/" and not + "/srv/samba/share/dde_apps" as it is for Dexter.read_file. + Dexter.read_from_robot is maintained for backwards compatibility. + Most users are expected to use Dexter.read_file
    run_gcode @@ -5359,19 +5580,27 @@ DDE's socket interface to the Linux OS runnning on Dexter's processor board.
    Parameters:
    + file_name The name of the file to be written on Dexter. + Example: "/srv/samba/share/AdcCenters.txt" is + where calibration data is written.
    content A string. Default: "" The content to be written. This function automatically escapes null, semicolon and percent (the escape character) in a_string for transmission.
    - file_name The name of the file to be written on Dexter. - Example: "/srv/samba/share/AdcCenters.txt" is - where calibration data is written.
    Example:
    Dexter.write_file("/srv/samba/share/greeting.txt", "hello world")
    This instruction requires an upgrade to Dexter's software available May, 2018.

    See also write_file +

    + Dexter.write_to_robot is a similar instruction, + except that the default folder + for the file_name is "/srv/samba/share/" and not + "/srv/samba/share/dde_apps" as it is for Dexter.write_file. + Also write_to_robot has its content argument 1st, and its file_name argument 2nd. + Dexter.write_to_robot is maintained for backwards compatibility. + Most users are expected to use Dexter.write_file
    @@ -5430,15 +5659,34 @@
    RobotStatus + When an instruction is sent to Dexter from DDE, Dexter sends back to DDE + an array of 60 numbers containing robot status information. The DDE menu + item Jobs/Show robot status presents this array in a chart labeling + each number so you can make sense of it. +

    + The Robot status array is stored on each Dexter instance under, for example:
    + Dexter.dexter0.robot_status
    + You can use constants bound to index + values to extract particular values like so: + Dexter.dexter0.robot_status[Dexter.J1_MEASURED_ANGLE]
    + See the full list of such constants in the documentation for + Control.grab_robot_status +

    RobotStatus is a class whose instances store information about - a Dexter robot. Each Dexter robot instance has a field named robot_status - i.e. Robot.dexter0.robot_status + a Dexter robot. Each Dexter robot instance has a field named rs + i.e. Dexter.dexter0.rs whose value is an instance of RobotStatus.

    - The following are instance methods on RobotStatus. + The following are instance methods on RobotStatus that make it easy + to access various robot status values.
    + Examples:
    + Dexter.dexter0.rs.job_id()
    +
    new Job({name: "my_job",
    +         do_list:[function(){out(this.robot.rs.measured_angle(1))}]
    +         })     
    job_id Returns the job_id of the job corresponding to the instruction of this robot_status. - This is usually the last instruciton sent to Dexter.
    + This is usually the last instruction sent to Dexter.
    Takes no parameters.
    instruction_id @@ -5534,9 +5782,6 @@ joint_count Default: 5 An integer from 0 through 7 indicating the number of joints to return their angles on.
    - - -
    measured_angle Returns the a2d_cos of a joint.
    Parameter
    @@ -5809,7 +6054,7 @@ Human.speak({speak_data: "hi there folks", rate: 0.25, wait: true}), - Robot.out("done") + IO.out("done") ]})
    This job doesn't print "done" until after "hi there folks" has been spoken.
    @@ -5844,7 +6089,7 @@ Examples:
     new Job({name: "my_job",
         do_list: [Human.task({task: "Load filament now."}),
    -              Robot.out("We're done.")]})
    +              IO.out("We're done.")]})
                   
     new Job({name: "my_job",
         do_list: [Human.task({title: "<b>Attention</b> Operator!",
    @@ -5855,7 +6100,7 @@
                               width:  300,
                               height: 120,
                               background_color: "rgb(200, 255, 200)"}),
    -    Robot.out("We're done.")]})
    +    IO.out("We're done.")]})
         
    @@ -5951,7 +6196,7 @@ ["dd", '"joe"'], ["ee", 'this.name + " is cool"'], ["ff", 'myfn.call(this)'], - ["gg", 'Robot.out("hey")', true] + ["gg", 'IO.out("hey")', true] ], show_choices_as_buttons: true, add_stop_button: false, @@ -5999,7 +6244,7 @@ user_data_variable_name: "my_file", height: 150}), function(){ - return Robot.out("You chose: " + + return IO.out("You chose: " + this.user_data.my_file) }]})
    @@ -6054,9 +6299,9 @@ this.user_data.a_number)}]})
    In the above example, the 2nd instruction couldn't be simply - Robot.out("Amount: " this.user_data.a_number)
    + IO.out("Amount: " this.user_data.a_number)
    nor even:
    - Robot.out("Amount: " Job.my_job.user_data.a_number)
    + IO.out("Amount: " Job.my_job.user_data.a_number)
    because each of those would be evaluated during the call to
    new Job(...) and thus the new job would not yet be defined, much less have the @@ -6368,7 +6613,7 @@ See Jobs menu/Insert Example/Serial Port for an extended example.
    -
    Robot.grab_robot_status +
    Control.grab_robot_status This is not a Serial instruction, but one that can be used with any robot. It captures the robot_status, or some portion of it, and saves it away in a user_data variable on the Job instance for @@ -6376,10 +6621,10 @@

    When a Serial.string_instruction is run and the device retruns a value, that string is placed in the robot_status. You can then use -Robot.grab_robot_status to extract it from the robot status +Control.grab_robot_status to extract it from the robot status and stick it in a user_data variable. -See - Robot.grab_robot_status +See + Control.grab_robot_status
    @@ -6395,7 +6640,7 @@ In other words, the serial string_instructions run in serial, not parallel.

    -You can also call Robot.grab_robot_status with a subject of +You can also call Control.grab_robot_status with a subject of a robot instance (instead of Robot) so that you can be sure to get the correct return value from a given string_instruction instruction.
    @@ -6414,7 +6659,7 @@ robot: new Brain(), //not used, but prevents the default Robot.dexter0 from being used do_list: [Robot.S1.string_instruction("y"), Robot.S1.grab_robot_status("yes_result"), - Robot.wait_until(2), + Control.wait_until(2), Robot.S1.string_instruction("n"), Robot.S1.grab_robot_status("no_result", Serial.DATA0) ]} diff --git a/doc/release_notes.html b/doc/release_notes.html index 23ecb3fe..d00b09b8 100644 --- a/doc/release_notes.html +++ b/doc/release_notes.html @@ -5,9 +5,173 @@ } .doc_details summary { font-weight: 600; } +
    v 3.4.0, Jun 27, 2019 +Higlights: read_file and write_file, both instructions and functions improved.
    + Click help: new 2nd line decribing "context".
    + New Ref Man/Job/Definition Time Vs Run Time section.
    + set_parameter improved.
    + Robot.instructions deprecated and are now divided into + Control.instructions & IO.instructions.
    + Editor improvements. +
      +
    • Removed the "ws" package from the "dependencies" list in package.json. + This was not being used. Github called it a security risk.
    • + +
    • Click help handles literal strings better.
    • + +
    • Click help improvements for string, "new" calls, keywords.
    • + +
    • New click help printed on a new line just below regular click help + that shows the "context" of what you clicked on. + If you click on the argument of a fn call, it + tells you which argument and the name of the function. + This context help is not implemented for all JS syntactic constructs, + but does supply useful help for many common situations.
    • + +
    • make_folder now works for WindowsOS too. + This fixes a bug in write_file on WindowsOS when hte dir is none-existent.
    • + +
    • Extended Ref Man for how to get the current default robot from a running job + under both Job and Robot.
    • + +
    • Major new Ref Man/Job/Definition Time Vs Run Time section + to help the user's model of how a Job operates.
    • + +
    • to_source_code_instruction_array + fixed bug when the "indent" property doesn't exist on arg.
    • + +
    • Make Instruction fixed bug in inserting a low level Job that has never been + run and we're not attempting to segment its do_list, just print its source + as is in the dialog's do_list item.
    • + +
    • Make Instruction, if you switch instructions to set_parameter, and + the previous instruction had a name field, and that previous value + for "name" isn't a valid set_parameter name, the new name is set to "Acceleration", + i.e. the default set_parameter name.
    • + +
    • Click help now works on textareas presented in the Make Instruction dialog.
    • + +
    • Editor tab has indented to 4 spaces. Now you can "unindent" 4 spaces by typing + ctrl [ (on the PC, or cmd [ (on the mac)
    • + +
    • Slight reorg of DDE's Learn JS menu: + Now "Comments" has its own submenu and its close to the top. + "Debugging, etc" submenu renamed to "Debugging" and + doesn't contain the comment menu items.
    • + +
    • Editor: when you switch to another file, and your current file has not been saved, + and the "Save" checkbox in the output pane is not checked, + You will be prompted as to whether the current file should be saved. + If the "Save" checkbox is checked, the current file will automatically + be saved as always.
    • + +
    • Big fix to Dexter.read_file for real, as well as making Simulator more + compatible with real.
    • + +
    • Ref Man/Robot/Robot Instructions/grab_robot_status + the set of robot_status index constants has been updated.
    • + +
    • Ref Man/Robot/Dexter/RobotStatus doc corrected and extended + with explanation and examples.
    • + +
    • For Dexter.read_file and Dexter.write_file, + if the path starts with a #, + don't modify it by adding "dde_apps", just leave it alone.
    • + +
    • Conversion of Dexter.set_parameter args + from DDE high level (degrees, meters) to + what is actually sent to Dexter (arcseconds, microns) + updated to match https://github.com/HaddingtonDynamics/Dexter/wiki/set-parameter-oplet + which included fixing:
      + AngularSpeed
      + AngularSpeedStartAndEnd
      + AngularAcceleration
      + all the Cartesian parameters
      + RawEncoderErrorLimits
      + RawVelocityLimits.
    • + +
    • User Guide/Configure Dexter/Verify Joint Wiring, + now refers the user to + https://github.com/HaddingtonDynamics/Dexter/wiki/Troubleshooting + for verifying jumper wires.
    • + +
    • Ref Man/Robot/Robot Instructions/get_page, and the functions + get_page & get_page_async extended with: + (Permissible options) include the HTTP methods of:
      + GET (the default)
      + POST
      + PUT
      + PATCH
      + DELETE
      HEAD
      + OPTIONS
      + plus a zillion other options for authentication, etc.
    • + +
    • Reorg of instructions. + The Robot instructions have been moved to + Control and IO classes. + Control now has:
      + "break", "go_to", "loop","label", "suspend", "unsuspend", "sync_point", "wait_until" + "include_job", "send_to_job", "sent_from_job" "start_job", "stop_job" + "debugger", "error", "if_any_errors"
      + IO now has:
      + "get_page", "grab_robot_status", "out", + "show_picture", "show_video", "take_picture"
      + So the preferred way to reference these is: + Control.loop, IO.get_page, etc.
      + Robot.loop and Robot.get_page, etc. + are deprecated but still available. + Ref Man for Robot instructions moved into new sections for Control and IO. + All examples updated.
    • + +
    • IO.show_picture, IO.show_video, IO.take_picture + are now formally documented under Ref Man/Robot/Robot Instructions/IO
    • + +
    • The Jobs examples are better formatted with insert 4 spaces for every indent.
    • + +
    • new Jobs menu item: "New Job", inserts +
      new Job({
      +    name: "my_job",
      +    do_list: [
      +        |   (vert vbar is whare cursor is left)
      +    ]
      +})
      + into the editor. If there is a select, it assumes its one or more do_list items + and wraps the new Job around the selection. + Keystroke Ctrl-j
    • + +
    • New menu item: Editor/Indent Sel(ection) + Indents the selected code, being clever about JS code. + Preserves existing number of lines, + but does a pretty good job at intending semantically. + Keystroke shift-tab
    • + +
    • With save checkbox unchecked, and new buffer that has new content in it, + attempt to switch to a new buffer, you get a dialog of cancel, save, delete. + If you choose delete, it *should* just delete the buffer, + But instead you get the confirm dialog:
      + "before editing ____ save _____ ?
    • + +
    • read_file, write_file both instructions and functions: + their default folder is dde_apps, including on Dexter, srv/samba/share/dde_apps + BUT the "r" and "W" oplets and the older instructions + Dexter.read_from_robot, Dexter.write_to_robot (deprecated) + instructions use srv/samba/share as their default folders. + Ref Man/Robot/Dexter/Dexter Instructions/read_file and write_file documentation updated.
    • + +
    • Instructions Dexter.read_file and + Dexter.read_from_robot given default value + for "destination" param of: "read_file_content".
    • + +
    • New menu on File menu "open special..." shows dialog + for editing or showing DDE and Dexter system files:
      + dde_init.js,
      dde_persistent.json,
      error.logs,
      Defaults.make_ins
    • + +
    • Slight improvement to Ref Man/IO/Sound/Music with MIDI/Synthesizers/Midi.init
    • +
    +
    v 3.3.8, Jun 5, 2019 -Highlight: Improvements to Job Engine, Dexter.set_parameter, Kin.js and +Highlights: Improvements to Job Engine, Dexter.set_parameter, Kin.js and getting dexter-specific link lengths.
    • make_folder fixed to adjust to OS file path conventions. @@ -30,7 +194,7 @@ now handled properly and the user_data.destination is filled with an integer error code, typically 1.
    • -
    • Fixed bugs in Robot.loop that caused it not to initialize correctly +
    • Fixed bugs in Control.loop that caused it not to initialize correctly when restarting a job with a loop instruction in it.
    • new testsuite file: loop_testsuite.js
    • @@ -960,7 +1124,7 @@ advancing program_counter when clicking the Go button. Doc slightly improved. -
    • Robot.if_any_errors ref man doc improved.
    • +
    • Control.if_any_errors ref man doc improved.
    @@ -1871,7 +2035,7 @@
  • Fixed Robot.break instruction to properly handle skipping past end of loop when the loop body has nested instructions.
  • -
  • Improved doc for Robot.go_to
  • +
  • Improved doc for Control.go_to
  • Improved doc for Job.insert_instruction
  • @@ -2896,7 +3060,7 @@
  • bug fixed in inserting instructions into do list that was not properly updating the hierarchical added_items_count array. - This caused some instructions to be skipped when a Robot.go_to + This caused some instructions to be skipped when a Control.go_to backwards instruction was executed.
  • @@ -2963,7 +3127,7 @@
  • Slight improvement to Generator Job Example 4b and Job Example 4c, the job definitions.
  • Jobs menu/Insert Example/ added new item: - Robot.go_to with several jobs using the Robot.go_to instruction
  • + Control.go_to with several jobs using the Control.go_to instruction
  • dde_version_equal, dde_version_less_than dde_version_more_than renamed to not start with "dde_". doc and click_help improved.
  • @@ -3329,7 +3493,7 @@
  • In doc pane, if there is no selection and no text in the find input, the colored sections are removed and the find pane is collapsed.
  • -
  • More intra-Ref-Man clickble links esp for Robot.go_to, +
  • More intra-Ref-Man clickble links esp for Control.go_to, and uman.task references.
  • Kin.is_in_reach() has been updated.
  • @@ -4168,7 +4332,7 @@
  • New Reference manual section Object System/Calling Methods
  • -
  • Ref Man documentation for Robot.go_to now has the word +
  • Ref Man documentation for Control.go_to now has the word "goto" in it so that users can "find" such a string if they type in it.
  • diff --git a/doc_code.js b/doc_code.js index a491eee2..07c9c63e 100644 --- a/doc_code.js +++ b/doc_code.js @@ -78,7 +78,7 @@ function open_doc(details_elt, record=true){ } //fn_name can be the actual fn or a string of its name or a path to the fn, or a class -//fn name might have dots in it like "Robot.go_to" +//fn name might have dots in it like "Control.go_to" function open_doc_show_fn_def(details_elt, fn_name){ if(typeof(details_elt) == "string"){ details_elt = window[details_elt] diff --git a/editor.js b/editor.js index e7c7b853..971dca5b 100644 --- a/editor.js +++ b/editor.js @@ -36,6 +36,7 @@ Editor.init_editor = function(){ lint: true, smartIndent: false, //default is true but that screws up a lot. false is suppose to //indent each line to the line above it when you hit Return + indentUnit: 4, //default is 2. Using 4 makes it same size as tab, then cmd(mac or ctrl(PC) open square will unindent by this amount. extraKeys: //undo z and select_all (a) work automaticaly with proper ctrl and cmd bindings for win and mac ((operating_system === "win") ? {"Alt-Left": Series.ts_or_replace_sel_left, @@ -44,19 +45,22 @@ Editor.init_editor = function(){ "Alt-Up": Series.ts_or_replace_sel_up, "Alt-Down": Series.ts_or_replace_sel_down, "Ctrl-E": eval_button_action, //the correct Cmd-e doesn't work + "Ctrl-J": Editor.insert_new_job, "Ctrl-O": Editor.open, "Ctrl-N": Editor.edit_new_file, "Ctrl-S": Editor.save //windows - } : + } : //Mac {"Alt-Left": Series.ts_or_replace_sel_left, "Alt-Right": Series.ts_or_replace_sel_right, "Shift-Alt-Right": Series.ts_sel_shift_right, //no non ts semantics see above for why cuttong this "Alt-Up": Series.ts_or_replace_sel_up, "Alt-Down": Series.ts_or_replace_sel_down, "Cmd-E": eval_button_action, //the correct Cmd-e doesn't work + "Cmd-J": Editor.insert_new_job, "Cmd-N": Editor.edit_new_file, "Cmd-O": Editor.open, "Cmd-S": Editor.save, //mac + }) @@ -75,6 +79,7 @@ Editor.init_editor = function(){ unfold_all_id.onclick = function(){CodeMirror.commands.unfoldAll(myCodeMirror)} select_expr_id.onclick = function(){Editor.select_expr()} select_all_id.onclick = function(){CodeMirror.commands.selectAll(myCodeMirror); myCodeMirror.focus()} + indent_selection_id.onclick = function(){CodeMirror.commands.indentAuto(myCodeMirror)} set_menu_string(select_all_id, "Select All", "a") myCodeMirror.on("mousedown", @@ -120,7 +125,12 @@ Editor.index_of_path_in_file_menu = function(path){ //returns false if path is not in menu, true if it is. path expected to be a full path, Editor.set_files_menu_to_path = function(path) { - if(!path) { path = Editor.current_file_path } + if(!path) { + if(Editor.current_file_path){ + path = Editor.current_file_path + } + else { return false } + } let i = Editor.index_of_path_in_file_menu(path) if (i === null) { return false } else { @@ -527,6 +537,72 @@ Editor.open_on_dexter_computer = function(dex_name){ setTimeout(function() {open_on_dexter_computer_file_path_id.focus()}, 100) } +handle_open_system_file = function(vals){ + if(vals.clicked_button_value == "edit dde_init.js"){ + Editor.edit_file("dde_init.js") + } + else if (vals.clicked_button_value == "show dde_persistent.json"){ + let content = read_file("dde_persistent.json") + content = replace_substrings(content, "\n", "
    ") + if(sim_actual === true) { + warning("You are getting the content of " + path + + "
    from the DDE computer because the simulate radio button " + + "
    in the Misc pane is selected." + + "
    To get the file content from Dexter," + + "
    select the 'real' radio button.") + } + out(content) + } + else if (vals.clicked_button_value.endsWith("Defaults.make_ins")){ + let path = vals.clicked_button_value.split(" ")[1] + let rob_name = path.split(":")[0] + let rob = Dexter[rob_name] + const sim_actual = Robot.get_simulate_actual(rob.simulate) + if(sim_actual === true) { + warning("You are getting the content of " + path + + "
    from the DDE computer because the simulate radio button " + + "
    in the Misc pane is selected." + + "
    To get the file content from Dexter," + + "
    select the 'real' radio button.") + } + Editor.edit_file(path) + } + else if (vals.clicked_button_value.endsWith("errors.log")){ + let path = vals.clicked_button_value.split(" ")[1] + let rob_name = path.split(":")[0] + read_file_async(path, + undefined, + function(err, content){ + if(err) { + warning("Could not get " + path + "
    Error: " + err) + } + else { + content = replace_substrings(content, "\n", "
    ") + out("" + rob_name + ":/srv/samba/share/errors.log content:
    " + content) + } + }) + } +} + +Editor.open_system_file = function(){ + let cont = "
    on DDE Computer\n" + + "
    " + + "" + + "
    " + for(let dex_name of Dexter.all_names){ + cont += "
    on " + dex_name + "\n" + + "
    " + + "" + + "
    " + } + show_window({title: "Open System File", + content: cont, + width: 275, + height: 450, + callback: handle_open_system_file + }) +} + Editor.remove = function(path_to_remove=Editor.current_file_path){ if(path_to_remove == "new buffer") { let index = Editor.index_of_path_in_file_menu("new buffer") //returns null if none @@ -535,7 +611,7 @@ Editor.remove = function(path_to_remove=Editor.current_file_path){ if (Editor.current_file_path == path_to_remove){ let files_menu_path = file_name_id.childNodes[0].innerHTML let path = Editor.files_menu_path_to_path(files_menu_path) - Editor.current_file_path = path //if I don't do this the next call to edit_file will think we're on new buffer and pop up the 3 choices dialog again. + Editor.current_file_path = false //path //if I don't do this the next call to edit_file will think we're on new buffer and pop up the 3 choices dialog again. Editor.edit_file(path) } } @@ -653,6 +729,14 @@ Editor.edit_file = function(path){ //path could be "new buffer" //so don't do the save in that condition. Editor.save_current_file() } + else if(!persistent_get("save_on_eval")){ + let cur_content = Editor.get_javascript() + let prev_content = read_file(Editor.current_file_path) + if(cur_content != prev_content) { + let save_it = confirm("Before editing:\n" + path + "\nSave:\n" + Editor.current_file_path + " ?") + if(save_it) { Editor.save_current_file() } + } + } } if (path == "new buffer"){ Editor.edit_file_aux(path, "") } else { @@ -817,6 +901,11 @@ Editor.save_to_dexter_as = function(){ } } +//on Jobs menu/insert_new_job +Editor.insert_new_job = function(){ + Editor.wrap_around_selection('new Job({\n name: "my_job",\n do_list: [\n ', + '\n ]\n})\n') +} //replace selected text with new text. Editor.insert = function(text, insertion_pos="replace_selection", select_new_text=false){ //insertion_pos defaults to the current editor selection start. @@ -1206,12 +1295,20 @@ Editor.select_call = function(full_src = Editor.get_javascript(), cursor_pos = E var fwd_nearest_delim_pos = Editor.find_forward_delimiter(full_src, cursor_pos) var delim_char = full_src[fwd_nearest_delim_pos] if (Editor.is_close_delimiter(delim_char)){ + if((delim_char == "}") && (full_src[fwd_nearest_delim_pos + 1] == ")")) { //looks like the end of a keyword call, ie }) + //so advance the delim char to the close paren + delim_char = ")" + fwd_nearest_delim_pos += 1 + } start_and_end = Editor.find_call_start_end_from_end(full_src, fwd_nearest_delim_pos + 1) } else { var bwd_nearest_delim_pos = Editor.find_backward_delimiter(full_src, cursor_pos) var delim_char = full_src[bwd_nearest_delim_pos] if (Editor.is_open_delimiter(delim_char)){ + if((delim_char == "{") && (full_src[bwd_nearest_delim_pos - 1] == "(")) { //looks like keyword call + bwd_nearest_delim_pos -= 1 + } var close_delim = Editor.find_matching_delimiter(full_src, bwd_nearest_delim_pos) if (close_delim == null) {return false} else { start_and_end = Editor.find_call_start_end_from_end(full_src, close_delim + 1)} @@ -1358,10 +1455,19 @@ Editor.find_call_start_end_from_end = function(full_src, cursor_pos){ var last_char_before_whitespace_pos = Editor.backup_over_whitespace(full_src, temp_cur - 1) if (last_char_before_whitespace_pos && (last_char_before_whitespace_pos > 0)){ - var identifier_bounds = Editor.bounds_of_identifier(full_src, last_char_before_whitespace_pos) - var id = full_src.substring(identifier_bounds[0], identifier_bounds[1]) - if (["else", "try"].indexOf(id) != -1){ - return [identifier_bounds[0], cursor_pos] + let identifier_bounds = Editor.bounds_of_identifier(full_src, last_char_before_whitespace_pos) + if(identifier_bounds){ + let id = full_src.substring(identifier_bounds[0], identifier_bounds[1]) + if (["else", "try"].indexOf(id) != -1){ + return [identifier_bounds[0], cursor_pos] + } + } + else { + let last_char_before_whitespace = full_src[last_char_before_whitespace_pos] + if(last_char_before_whitespace == "(") { //looks like we got the ({ of a keyword fn call + let end_paren_pos = Editor.find_matching_close(full_src, last_char_before_whitespace_pos) + return Editor.find_call_start_end_from_end(full_src, end_paren_pos + 1) + } } } } @@ -1537,6 +1643,15 @@ Editor.find_backward_delimiter = function(full_src, cursor_pos){ return result } +//returns non-neg integer or null +Editor.find_backward_open_delimiter = function(full_src, cursor_pos){ + full_src = full_src.substring(0, cursor_pos) + full_src = reverse_string(full_src) + let result = Editor.find_forward_open_delimiter(full_src, 0) //could be null + if(typeof(result) == "number") { result = full_src.length - result - 1 } + return result +} + //does not bypass // comments. Editor.find_forward_open_delimiter = function(full_src, cursor_pos=0){ @@ -1635,7 +1750,7 @@ Editor.find_backwards_string = function(full_src, cursor_pos, string_to_find){ //finds starting pos of occurance of string_to_find that's close to, but before cursor_pos. //skips over // comments -//returns -1 if can't find string_to_find +//returns null if can't find string_to_find Editor.find_backwards = function(full_src, cursor_pos, string_to_find){ var pos = full_src.lastIndexOf(string_to_find, cursor_pos) if (pos == -1) { return null } @@ -2122,21 +2237,201 @@ Editor.variable_info = function(identifier){ return null } -Editor.show_identifier_info = function(full_src=null, pos=null){ +//this is the potential 2nd line output for click_help saying what arg in what fn +//was clicked on. +//returns a string or undefined meaning no help. +Editor.context_help = function(full_src, cursor_pos, identifier){ + if(identifier == "new"){ + let next_identifier_pos = Editor.skip_forward_over_whitespace(full_src, cursor_pos + 3) + let next_identifier_bounds = Editor.bounds_of_identifier(full_src, next_identifier_pos) + if(next_identifier_bounds) { + let next_identifier = full_src.substring(next_identifier_bounds[0], next_identifier_bounds[1]) + let fn = value_of_path(next_identifier) + let next_identifier_html + if(fn) { + next_identifier_html = Editor.get_atag_for_fn_name(next_identifier, full_src, cursor_pos) + } + else { next_identifier_html = "" + next_identifier + + ", which is undefined." + } + return "new " + next_identifier + + " makes an instance of the class " + next_identifier_html + "" + } + else { return } //can't find any context help + } + else { + let [fn_name, arg_index] = Editor.find_arg_index(full_src, cursor_pos) + if(fn_name){ + let result = "This is the " // "Context: " + let prefix + if(typeof(arg_index) == "number"){ + result += ordinal_string(arg_index + 1) + } + else { result += "keyword" } + result += " argument" + let fn + if(fn_name.startsWith("new ")){ + fn = value_of_path(fn_name.substring(4).trim()) + } + else { + fn = value_of_path(fn_name) + } + if(fn){ + let lit_obj = function_param_names_and_defaults_lit_obj(fn) + if(lit_obj){ + let fn_param_names = Object.keys(lit_obj) + let param_name = ((typeof(arg_index) == "number") ? + fn_param_names[arg_index] : + arg_index) + result += " (name: " + '"' + param_name + '"' + let default_val_src = lit_obj[param_name] + if(default_val_src) { + result += ", default_value: " + default_val_src + } + else {result += ", default_value: undefined"} + result += ")" + } + } + let outer_type = "" + if(fn_name.startsWith("new ")) { outer_type = "constructor: "} + else if(fn_name.includes(".")) { outer_type = "method: "} + else if(fn_name) { outer_type = "function: "} + let suffix = "" + if(!fn) { suffix = ", which is undefined" } + let fn_name_html + let fn_name_prefix = "" + /* this screws up for "Job" and "Dexter" because get_atag_for_fn_name returns + their full args, not just a link to "Job" or "Dexter". so + for now, just print out Job and Dexter in plain text. + if(fn_name.startsWith("new ")){ + fn_name_prefix = "new " + let short_fn_name = fn_name.substring(4).trim() + fn_name_html = Editor.get_atag_for_fn_name(short_fn_name, full_src, cursor_pos) + }*/ + fn_name_html = Editor.get_atag_for_fn_name(fn_name, full_src, cursor_pos) + return result + " to " + outer_type + fn_name_prefix + fn_name_html + suffix + "." + } + } +} + + +// return array of fn_name, and +// either the zero_based_arg_index non-neg_int, or string of the param name +Editor.find_arg_index = function(full_src, cursor_pos){ + let call_start_end = Editor.select_call(full_src, cursor_pos) + if(!call_start_end){ return [null, null] } + let open_delim_pos = Editor.find_forward_delimiter(full_src, call_start_end[0]) + if(cursor_pos < open_delim_pos){ //user clicked on fn name, not between parens + let bwd_open_pos = Editor.find_backward_open_delimiter(full_src, call_start_end[0]) + if((bwd_open_pos == null) || (bwd_open_pos < 0)) { return [null, null] } + else { + call_start_end = Editor.select_call(full_src, bwd_open_pos) + if(!call_start_end){ return [null, null] } + else if (call_start_end[1] < cursor_pos) { //the previous call ends before we get to cursor_pos, so we aren't in an OBVIOUS fn call, but neees work to fund unobvious ones + return [null, null] + } + else { + open_delim_pos = Editor.find_forward_delimiter(full_src, call_start_end[0]) + } + } + } + let fn_name = full_src.substring(call_start_end[0], open_delim_pos).trim() + let char_after_open_paren = full_src[open_delim_pos + 1] + if(char_after_open_paren == "{") { //we've got a keyword call ie foo({bar: 12, baz:34}) + let colon_pos + let identifier_at_cursor_bounds = Editor.bounds_of_identifier(full_src, cursor_pos) + if(identifier_at_cursor_bounds && (full_src[identifier_at_cursor_bounds[1]] == ":")) { + //user clicked IN a keyword + colon_pos = identifier_at_cursor_bounds[1] + 1 + } + else { colon_pos = Editor.find_backwards(full_src, cursor_pos, ":") } + if(colon_pos){ + let arg_name_bounds = Editor.bounds_of_identifier(full_src, colon_pos - 2) + if(arg_name_bounds) { + let arg_name = full_src.substring(arg_name_bounds[0], arg_name_bounds[1]) + return [fn_name, arg_name] + } + } + else { return [null, null] } + } + else if(cursor_pos < open_delim_pos){ //user clicked on fn name, not between parens, so not on an arg + return [fn_name, null] + } + else { + let comma_pos = open_delim_pos + for(let i = 0; i < 1000; i++) { + comma_pos = Editor.find_forward_comma_at_level(full_src, comma_pos + 1) + if(!comma_pos) { + if(cursor_pos <= call_start_end[1]) { return [fn_name, i] } + else { return [null, null] } //shouldn't if full src is correct sytnax, but just in case it isn't + } + else if(comma_pos > cursor_pos) { return [fn_name, i] } + } + } + return [null, null] +} + +//search forwards from pos for a comma, but ignore +//commas inside of nested fn calls. +Editor.find_forward_comma_at_level = function(full_src, cursor_pos){ + for(let i = cursor_pos; i < full_src.length; i++){ + let char = full_src[i] + if(char == ",") { return i } + else if("[({".includes(char)) { + let close_pos = Editor.find_matching_close(full_src, i) + if(close_pos) { i = close_pos } + else { return null } + } + } + return null +} + +//return fn_name, or an atag wrapper arond fn_name to click on for more help +Editor.get_atag_for_fn_name = function(fn_name, full_src, cursor_pos) { + let html_string = Js_info.get_info_string(fn_name, undefined, full_src, cursor_pos) + let pos_of_fn_name = html_string.indexOf(fn_name) + if (pos_of_fn_name == -1) { return fn_name } //no atag info so just return fn_name + else { + let atag_start = Editor.find_backwards(html_string, html_string.length, "") + if (atag_end == -1) { //shouldnt but just in case + return fn_name + } + else { + let tag_str = html_string.substring(atag_start, atag_end + 4) + return tag_str + } + } + } +} +//for click help on textarea's and input type ins. Used in Make Instruction textareas. +Editor.show_identifier_info_for_type_in = function(event){ + let full_src = event.target.value + let pos = event.target.selectionStart + Editor.show_identifier_info(full_src, pos) +} + +Editor.show_identifier_info = function(full_src=Editor.get_javascript(), pos=Editor.selection_start()){ var identifier = Editor.identifier_or_operator(full_src, pos) if (identifier){ - var info = Js_info.get_info_string(identifier) + var info = Js_info.get_info_string(identifier, undefined, full_src, pos) /* this is now implemented in identifier_or_operator that returns a potential array with var, let and param into in it. if (!info){ info = Editor.variable_info(identifier) if (info){ info = "" + identifier + " is " + info } }*/ if (info){ + let context_info = Editor.context_help(full_src, pos, identifier) + if(context_info) + info = info + "
    " + context_info out(info, null, true) } } } + var {persistent_initialize, persistent_get, persistent_set, load_files, file_exists, write_file, dde_init_dot_js_initialize} = require('./core/storage.js') var {warning, decode_quotes, is_alphanumeric, is_digit, is_letter, is_letter_or_underscore, is_whitespace, reverse_string} = require("./core/utils.js") diff --git a/examples/FindHome.js b/examples/FindHome.js index 03a5e9ba..a53d6776 100644 --- a/examples/FindHome.js +++ b/examples/FindHome.js @@ -277,7 +277,7 @@ function handleWindowUI(vals){ //vals contains name-value pairs for each // persistent_get(vals.macro_name,function(val){db_fetch = val}) /*Job.j1.user_data.choicemade = function () { var rt = [] - rt.push(Robot.wait_until(function(){return db_fetch})) + rt.push(Control.wait_until(function(){return db_fetch})) rt.push(function(){return replayPointsitr(db_fetch,1)}) return rt }*/ diff --git a/examples/opencv_locate_object.js b/examples/opencv_locate_object.js index d24e2874..f1649017 100644 --- a/examples/opencv_locate_object.js +++ b/examples/opencv_locate_object.js @@ -3,7 +3,7 @@ This demo is an incomplete work-in-progress. If you want to use a different camera than your computer's built in default, 1. Eval Picture.show_video_cameras() 2. Copy the ID of the camera you want to use. -3. Paste it in place of "webcam" in the below call to Robot.show_video +3. Paste it in place of "webcam" in the below call to IO.show_video The pasted ID should be wrapped in quotes. */ function locate_obj(){ @@ -31,7 +31,7 @@ function pick_up_obj(){ out("moving dexter to: " + dex_x + ", " + dex_y) return [Dexter.move_to([dex_x, dex_y, this.user_data.take_pic_point[2]]), //move above obj Dexter.move_to([dex_x, dex_y, this.user_data.dexter_down_z]), //move down to obj - Robot.wait_until(1), //todo grab obj + Control.wait_until(1), //todo grab obj Dexter.move_to([dex_x, dex_y, this.user_data.take_pic_point[2]]), //move up Dexter.move_to([0.5, dex_y, this.user_data.take_pic_point[2]]) //move away //todo drop object @@ -42,16 +42,16 @@ new Job({name: "loc_obj", user_data: {dex_y_offset: 0.15, take_pic_point: [0, (0.747 / 2) + 0.15, 0.3], dexter_down_z: 0.05}, - do_list: [Robot.show_video({content: "webcam", x: 600, y: 60}), + do_list: [IO.show_video({content: "webcam", x: 600, y: 60}), function() {return Dexter.move_to(this.user_data.take_pic_point)}, Human.task({title: "Clear the Scene", task: 'Take a "background" picture.', x: 250, y: 60, height: 120, width: 330}), - Robot.take_picture({callback: "background_pic"}), + IO.take_picture({callback: "background_pic"}), Human.task({title: "Set the Scene", task: "Place an object in view of the camera
    and take a foreground picture.", x: 250, y: 60, height: 140, width: 330}), - Robot.take_picture({callback: "foreground_pic"}), + IO.take_picture({callback: "foreground_pic"}), locate_obj, function(){inspect(this.user_data.loc_obj)}, pick_up_obj diff --git a/examples/opencv_picture_similarity.js b/examples/opencv_picture_similarity.js index 160928c6..9e50c3c3 100644 --- a/examples/opencv_picture_similarity.js +++ b/examples/opencv_picture_similarity.js @@ -3,22 +3,22 @@ Take two pictures and get their similarity score. If you want to use a different camera than your computer's built in default, 1. Eval Picture.show_video_cameras() 2. Copy the ID of the camera you want to use. -3. Paste it in place of "webcam" in the below call to Robot.show_video +3. Paste it in place of "webcam" in the below call to IO.show_video The pasted ID should be wrapped in quotes. */ new Job({name: "pic_sim", user_data: {take_pic_point: [0, (0.747 / 2) + 0.15, 0.3]}, do_list: [ - Robot.show_video({content: "webcam", x: 600, y: 60}), + IO.show_video({content: "webcam", x: 600, y: 60}), function() {return Dexter.move_to(this.user_data.take_pic_point)}, Human.task({title: "Take First Picture", task: 'Click continue to snap the 1st picture.', x: 250, y: 60, height: 120, width: 330}), - Robot.take_picture({callback: "background_pic"}), + IO.take_picture({callback: "background_pic"}), Human.task({title: "Take Second Picture", task: "Click continue to snap the 2nd picture.", x: 250, y: 60, height: 140, width: 330}), - Robot.take_picture({callback: "foreground_pic"}), + IO.take_picture({callback: "foreground_pic"}), function() { let sim = Picture.mats_similarity_by_color( //mats_similarity_by_average_color, mats_similarity_by_detect_blobs {mat_in1: this.user_data.background_pic, diff --git a/index.html b/index.html index ced639be..69796843 100644 --- a/index.html +++ b/index.html @@ -207,6 +207,7 @@