-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathindex.js
More file actions
300 lines (258 loc) · 10.7 KB
/
Copy pathindex.js
File metadata and controls
300 lines (258 loc) · 10.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
global.dde_version = "3.9.2" //require("../package.json").version
global.dde_release_date = "Apr 5, 2024" //require("../package.json").release_dat9
console.log("dde_version: " + global.dde_version + " dde_release_date: " + global.dde_release_date +
"\nRead electron_dde/core/job_engine_doc.txt for how to use the Job Engine.\n")
console.log("in file: " + module.filename)
function node_on_ready() {
console.log("top of node_on_ready\n")
const os = require('os');
global.operating_system = os.platform().toLowerCase() //for Ubuntu, ths returns "linux"
if (operating_system == "darwin") { operating_system = "mac" }
else if (operating_system.startsWith("win")) { operating_system = "win" }
try{dde_apps_folder}
catch(err){
global.dde_apps_folder = "/srv/samba/share/dde_apps" //process.env.HOME //ie /Users/Fry
//+ "/Documents/dde_apps"
}
init_storage()
//not needed for node version
//var pckg = require('../package.json');
//global.dde_version = pckg.version
//global.dde_release_date = pckg.release_date
global.platform = "node" //"node" means we're in the job_engine, "dde" would mean we're not.
global.Root = Root
global.window = global //window is needed in storage.js and elsewhere
console.log("operating_system: " + operating_system + "\ndde_apps_folder: " + dde_apps_folder)
FPGA.init() //does not depend on Series.
Coor.init()
init_units()
//see also ready.js that has this same code
Dexter.calibrate_build_tables = calibrate_build_tables
window.calibrate_build_tables = undefined
Dexter.prototype.calibrate_build_tables = function() {
let result = Dexter.calibrate_build_tables()
for(let oplet_array of result){
if(Array.isArray(oplet_array)){
oplet_array.push(this)
}
}
return result
}
//new Dexter({name: "dexter0"})
persistent_initialize()
dde_init_dot_js_initialize()
Job.class_init()
Dexter.class_init()
serial_port_init()
}
function run_node_command(args){
console.log("top of run_node_command with: " + args)
node_on_ready()
let cmd_name = args[2]
//let fn = eval(cmd_name)
let the_args = args.slice(3)
//console.log("cmd_name: " + cmd_name + " args: " + the_args)
//fn.apply(null, the_args)
let cmd = cmd_name + "(\"" + the_args.join(", ") + "\");"
console.log(cmd)
eval(cmd)
}
function start_job(job_name){
console.log("now starting Job: " + job_name)
console.log(Job)
let a_job = Job[job_name]
if(a_job) { a_job.start() }
else { console.log("can't find Job named: " + job_name) }
}
/*function define_and_start_job(job_file_path){
console.log("top of define_and_start_job with: " + job_file_path)
console.log("top of define_and_start_job with Job.job_id_base: " + Job.job_id_base)
let starting_job_id_base = Job.job_id_base
try { load_files(job_file_path)}
catch(err){
console.log("Could not find Job file: " + job_file_path + " " + err.message)
return
}
console.log("middle of define_and_start_job with new Job.job_id_base: " + Job.job_id_base)
if(starting_job_id_base == Job.job_id_base){
console.log("apparently there is no job definition in " + job_file_path)
}
else {
let latest_job = Job.job_id_to_job_instance(Job.job_id_base)
start_job(latest_job.name)
}
}
*/
function define_and_start_job(job_file_path){
if(job_file_path.endsWith("/keep_alive")) {
global.keep_alive_value = true //set to false by stdio readline evaling "set_keep_alive_value(false)" made in httpd.js
//and sent to job engine process stdin.
}
else {
Job.define_and_start_job(job_file_path)
}
}
//____________
const {exec} = require('child_process')
function run_shell_cmd_default_cb (error, stdout, stderr){
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
}
//one useful option is cwd: dir_path_string
function run_shell_cmd(cmd_string, options={}, cb=run_shell_cmd_default_cb){
exec(cmd_string, options, cb)
}
var child_process = require("child_process")
var WebSocket = require('ws')
var fs = require('fs')
var mathjs = require('mathjs')
var Socket = require("./socket.js")
var {to_source_code} = require("./to_source_code.js")
var {adjust_path_to_os, append_to_file,
choose_file, choose_save_file, choose_file_and_get_content, choose_folder,
copy_file_async, copy_folder_async,
dde_init_dot_js_initialize, file_content, //file_content is deprecated
file_exists, folder_listing, folder_separator, folder_name_version_extension,
get_latest_path, get_page, get_page_async,
init_storage, is_folder, load_files,
make_folder, make_full_path, make_unique_path,
persistent_get, persistent_initialize, persistent_remove, persistent_save,
read_file, read_file_async, write_file, write_file_async} = require('./storage.js')
var {Root} = require("./object_system.js")
var Coor = require("../math/Coor.js")
var Kin = require("../math/Kin.js")
var Vector = require("../math/Vector.js")
var DH = require("../math/DH.js")
var {sind, cosd, tand, asind, acosd, atand, atan2d} = require("../math/Trig_in_Degrees.js")
var Job = require("./job.js")
var {Robot, Brain, Dexter, Human, Serial} = require("./robot.js")
var {RobotStatus} = require("./robot_status.js")
//todo dde4 all the human_enter_... are now globals after you load instruction.js
var {Instruction, make_ins, human_task_handler, human_enter_choice_handler,
human_enter_filepath_handler, human_enter_number_handler, human_enter_position_handler,
human_enter_instruction_handler,
human_enter_text_handler,
human_notify_handler,
human_show_window_handler,
} = require("./instruction.js")
var {Control} = require("./instruction_control.js")
var {IO} = require("./instruction_io.js")
require("./dex.js") //makes Dex global
require("./je_and_browser_code.js") // must be before loading out.js as it defines SW used by out.js
var {beep, beeps, format_text_for_code, speak, show_window} = require("./out.js")
var calibrate_build_tables = require("../low_level_dexter/calibrate_build_tables.js")
var DXF = require("../math/DXF.js")
var {init_units} = require("./units.js")
var {FPGA} = require("./fpga.js")
require('./dexter_defaults.js') //bug: needed to take out /core from the path
var {convertArrayBufferToString, convertStringToArrayBuffer,
SerialPort, serial_connect, serial_connect_low_level,
serial_devices, serial_devices_async,
serial_disconnect, serial_disconnect_all, serial_flush,
serial_get_or_make_port, serial_path_to_port_map,
serial_port_path_to_info_map, serial_port_init, serial_send, serial_send_low_level} = require("./serial.js")
require("./servo.js") //defines globalThis.Servo
var {close_readline, set_keep_alive_value, write_to_stdout} = require("./stdio.js")
var {html_db, is_dom_elt, make_dom_elt, make_html} = require("./html_db.js")
var {Messaging, MessStat} = require("./messaging.js")
var {Py} = require("./py.js")
// see also je_and_browser_code.js for global vars.
global.child_process = child_process
global.WebSocket = WebSocket
global.fs = fs
global.mathjs = mathjs
global.Socket = Socket
global.to_source_code = to_source_code
global.keep_alive_value = false
global.Brain = Brain
global.Dexter = Dexter
global.Human = Human
global.Robot = Robot
global.RobotStatus = RobotStatus
global.Serial = Serial
global.make_ins = Dexter.make_ins
global.beep = beep
global.beeps = beeps
global.format_text_for_code = format_text_for_code
global.speak = speak
global.show_window = show_window
global.Instruction = Instruction
global.human_task_handler = human_task_handler
global.human_enter_choice_handler = human_enter_choice_handler
global.human_enter_filepath_handler = human_enter_filepath_handler
global.human_enter_number_handler = human_enter_number_handler
global.human_enter_position_handler = human_enter_position_handler
global.human_enter_instruction_handler = human_enter_instruction_handler
global.human_enter_text_handler = human_enter_text_handler
global.human_notify_handler = human_notify_handler
global.human_show_window_handler = human_show_window_handler
global.Control = Control
global.IO = IO
global.Job = Job
global.Vector = Vector
global.DH = DH
global.Kin = Kin
global.FPGA = FPGA
global.sind = sind
global.cosd = cosd
global.tand = tand
global.asind = asind
global.acosd = acosd
global.atand = atand
global.atan2d = atan2d
global.adjust_path_to_os = adjust_path_to_os
global.append_to_file = append_to_file
global.copy_file_async = copy_file_async
global.copy_folder_async = copy_folder_async
global.file_content = file_content //deprecated
global.file_exists = file_exists
global.folder_listing = folder_listing
global.folder_separator = folder_separator
global.folder_name_version_extension = folder_name_version_extension
global.get_latest_path = get_latest_path
global.get_page = get_page
global.get_page_async = get_page_async
global.is_folder = is_folder
global.load_files = load_files
global.make_unique_path = make_unique_path
global.make_folder = make_folder
global.persistent_get = persistent_get
global.persistent_remove = persistent_remove
global.persistent_save = persistent_save
global.read_file = read_file
global.read_file_async = read_file_async
global.write_file = write_file
global.write_file_async = read_file_async
global.close_readline = close_readline
global.set_keep_alive_value = set_keep_alive_value
global.write_to_stdout = write_to_stdout
global.convertArrayBufferToString = convertArrayBufferToString
global.convertStringToArrayBuffer = convertStringToArrayBuffer
global.SerialPort = SerialPort
global.serial_connect = serial_connect
global.serial_connect_low_level = serial_connect_low_level
global.serial_devices = serial_devices
global.serial_devices_async = serial_devices_async
global.serial_disconnect = serial_disconnect
global.serial_disconnect_all = serial_disconnect_all
global.serial_flush = serial_flush
global.serial_get_or_make_port = serial_get_or_make_port
global.serial_path_to_port_map = serial_path_to_port_map //depricated
global.serial_port_path_to_info_map = serial_port_path_to_info_map
global.serial_port_init = serial_port_init
global.serial_send = serial_send
global.serial_send_low_level = serial_send_low_level
global.html_db = html_db
global.is_dom_elt = is_dom_elt
global.make_html = make_html
global.make_dom_elt = make_dom_elt
global.Py = Py
run_node_command(process.argv)
/*
node core start_job myjob
node core define_and_start_job /Users/Fry/Documents/dde_apps/node_test_job.js
*/