summaryrefslogtreecommitdiffstats
path: root/Kod/bilbana/yc4/display
diff options
context:
space:
mode:
authorGustav Sörnäs <gusso230@student.liu.se>2019-11-27 17:56:01 +0100
committerGustav Sörnäs <gusso230@student.liu.se>2019-11-27 17:56:01 +0100
commit3471a2ad09670ce409ed9009254ebf0801c0d586 (patch)
tree66e61a91e2ead8976720be8d2359b62ab5746844 /Kod/bilbana/yc4/display
parent40258c7d594d85eb3b7d75c059ad5223372ba5ae (diff)
parent2246ff7466c252dff4e22ed894dee3f152f0f4e1 (diff)
downloadtfyy51-3471a2ad09670ce409ed9009254ebf0801c0d586.tar.gz
Merge remote-tracking branch 'origin/display-graphs'
Diffstat (limited to 'Kod/bilbana/yc4/display')
-rw-r--r--Kod/bilbana/yc4/display/bar_graph.m6
-rw-r--r--Kod/bilbana/yc4/display/box.m (renamed from Kod/bilbana/yc4/display/draw_box.m)2
-rw-r--r--Kod/bilbana/yc4/display/continue_line.m2
-rw-r--r--Kod/bilbana/yc4/display/define_bar_graph.m7
-rw-r--r--Kod/bilbana/yc4/display/delete_bar_graph.m7
-rw-r--r--Kod/bilbana/yc4/display/draw_line.m (renamed from Kod/bilbana/yc4/display/draw_single_line.m)2
-rw-r--r--Kod/bilbana/yc4/display/flashing_area.m (renamed from Kod/bilbana/yc4/display/define_flashing_area.m)2
-rw-r--r--Kod/bilbana/yc4/display/flashing_area_with_pattern.m (renamed from Kod/bilbana/yc4/display/define_flashing_area_with_pattern.m)2
-rw-r--r--Kod/bilbana/yc4/display/frame.m (renamed from Kod/bilbana/yc4/display/draw_frame.m)2
-rw-r--r--Kod/bilbana/yc4/display/frame_box.m (renamed from Kod/bilbana/yc4/display/draw_frame_box.m)2
-rw-r--r--Kod/bilbana/yc4/display/get_bars_from_values.m44
-rw-r--r--Kod/bilbana/yc4/display/get_response.m2
-rw-r--r--Kod/bilbana/yc4/display/key.m (renamed from Kod/bilbana/yc4/display/define_touch_key.m)2
-rw-r--r--Kod/bilbana/yc4/display/point.m (renamed from Kod/bilbana/yc4/display/draw_point.m)2
-rw-r--r--Kod/bilbana/yc4/display/put_text.m2
-rw-r--r--Kod/bilbana/yc4/display/scenes/draw_lap_graph.m183
-rw-r--r--Kod/bilbana/yc4/display/scenes/draw_segment_bars.m57
-rw-r--r--Kod/bilbana/yc4/display/set_add_line_spacing.m3
-rw-r--r--Kod/bilbana/yc4/display/set_line_spacing.m3
-rw-r--r--Kod/bilbana/yc4/display/switch.m (renamed from Kod/bilbana/yc4/display/define_touch_switch.m)0
-rw-r--r--Kod/bilbana/yc4/display/toggle.m7
21 files changed, 311 insertions, 28 deletions
diff --git a/Kod/bilbana/yc4/display/bar_graph.m b/Kod/bilbana/yc4/display/bar_graph.m
new file mode 100644
index 0000000..bc04406
--- /dev/null
+++ b/Kod/bilbana/yc4/display/bar_graph.m
@@ -0,0 +1,6 @@
+function pkg = bar_graph(direction, no, x1, y1, x2, y2, start_value, end_value, type, pattern)
+args = [no, get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)];
+args = [args, start_value, end_value, type, pattern]; %TODO get_bytes or no ?
+
+pkg = get_package(strjoin({'B', direction}, ''), args);
+end
diff --git a/Kod/bilbana/yc4/display/draw_box.m b/Kod/bilbana/yc4/display/box.m
index 7ac4b70..786f95e 100644
--- a/Kod/bilbana/yc4/display/draw_box.m
+++ b/Kod/bilbana/yc4/display/box.m
@@ -1,4 +1,4 @@
-function pkg = draw_box(x1, y1, x2, y2, n1)
+function pkg = box(x1, y1, x2, y2, n1)
arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2), n1];
pkg = get_package('RO', arg);
end
diff --git a/Kod/bilbana/yc4/display/continue_line.m b/Kod/bilbana/yc4/display/continue_line.m
index 99b4074..fe863f7 100644
--- a/Kod/bilbana/yc4/display/continue_line.m
+++ b/Kod/bilbana/yc4/display/continue_line.m
@@ -1,4 +1,4 @@
function pkg = continue_line(x2, y2)
arg = [get_bytes(x2), get_bytes(y2)];
-pkg = get_package('GW', arg)
+pkg = get_package('GW', arg);
end
diff --git a/Kod/bilbana/yc4/display/define_bar_graph.m b/Kod/bilbana/yc4/display/define_bar_graph.m
deleted file mode 100644
index d915cf1..0000000
--- a/Kod/bilbana/yc4/display/define_bar_graph.m
+++ /dev/null
@@ -1,7 +0,0 @@
-function pkg = define_bar_graph(direction, no, x1, y1, x2, y2, start_value, end_value, type, pattern)
-pkg = []
-args = [no, get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]
-args = [args, start_value, end_value, type, pattern] %TODO get_bytes or no ?
-
-pkg = get_package(strjoin({'B', direction}, ''), args)
-end
diff --git a/Kod/bilbana/yc4/display/delete_bar_graph.m b/Kod/bilbana/yc4/display/delete_bar_graph.m
deleted file mode 100644
index 093cb2b..0000000
--- a/Kod/bilbana/yc4/display/delete_bar_graph.m
+++ /dev/null
@@ -1,7 +0,0 @@
-function pkg = define_bar_graph(num, keep_visible)
-if keep_visible
- keep_visible = 1
-else
- keep_visible = 0
-pkg = get_package('BD', [num, keep_visible])
-end
diff --git a/Kod/bilbana/yc4/display/draw_single_line.m b/Kod/bilbana/yc4/display/draw_line.m
index c1da8ab..0a43ef7 100644
--- a/Kod/bilbana/yc4/display/draw_single_line.m
+++ b/Kod/bilbana/yc4/display/draw_line.m
@@ -1,4 +1,4 @@
-function pkg = draw_single_line(x1, y1, x2, y2)
+function pkg = draw_line(x1, y1, x2, y2)
arg = [mod(x1, 255), fix(x1 / 255), y1, 0, mod(x2, 255), fix(x2 / 255), y2, 0];
pkg = get_package('GD', arg);
end
diff --git a/Kod/bilbana/yc4/display/define_flashing_area.m b/Kod/bilbana/yc4/display/flashing_area.m
index 3e581ea..e3ba624 100644
--- a/Kod/bilbana/yc4/display/define_flashing_area.m
+++ b/Kod/bilbana/yc4/display/flashing_area.m
@@ -1,4 +1,4 @@
-function pkg = define_flashing_area(x1, y1, x2, y2)
+function pkg = flashing_area(x1, y1, x2, y2)
arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)];
pkg = get_package('QI', arg);
end
diff --git a/Kod/bilbana/yc4/display/define_flashing_area_with_pattern.m b/Kod/bilbana/yc4/display/flashing_area_with_pattern.m
index c5c190f..e6dd61b 100644
--- a/Kod/bilbana/yc4/display/define_flashing_area_with_pattern.m
+++ b/Kod/bilbana/yc4/display/flashing_area_with_pattern.m
@@ -1,4 +1,4 @@
-function pkg = define_flashing_area_with_pattern(x1, y1, x2, y2, n1)
+function pkg = flashing_area_with_pattern(x1, y1, x2, y2, n1)
arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2), n1];
pkg = get_package('QM', arg);
end
diff --git a/Kod/bilbana/yc4/display/draw_frame.m b/Kod/bilbana/yc4/display/frame.m
index 1a6ce3b..093d6b5 100644
--- a/Kod/bilbana/yc4/display/draw_frame.m
+++ b/Kod/bilbana/yc4/display/frame.m
@@ -1,4 +1,4 @@
-function pkg = draw_frame(x1, y1, x2, y2, n1)
+function pkg = frame(x1, y1, x2, y2, n1)
arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)];
pkg = get_package('RR', arg);
end
diff --git a/Kod/bilbana/yc4/display/draw_frame_box.m b/Kod/bilbana/yc4/display/frame_box.m
index f2a247e..b28c61d 100644
--- a/Kod/bilbana/yc4/display/draw_frame_box.m
+++ b/Kod/bilbana/yc4/display/frame_box.m
@@ -1,4 +1,4 @@
-function pkg = draw_frame_box(x1, y1, x2, y2, n1)
+function pkg = frame_box(x1, y1, x2, y2, n1)
arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2), n1];
pkg = get_package('RT', arg);
end
diff --git a/Kod/bilbana/yc4/display/get_bars_from_values.m b/Kod/bilbana/yc4/display/get_bars_from_values.m
new file mode 100644
index 0000000..cbae702
--- /dev/null
+++ b/Kod/bilbana/yc4/display/get_bars_from_values.m
@@ -0,0 +1,44 @@
+function [bars, max_val, min_y, height] = get_bars_from_values(values1, values2)
+bars = [];
+
+% CONSTANT VALUES
+min_y = 200;
+height = 156;
+min_x = 16+13;
+bar_width = 10; % for a single bar, doubled if only one track
+bar_inner_gap_width = 1; % double effect
+bar_gap_width = 10;
+
+% switch 1 and 2 if 1 is empty
+if isempty(values1) && ~isempty(values2)
+ values1 = values2;
+ values2 = [];
+end
+
+max1 = max(values1);
+max2 = 0;
+if ~isempty(values2)
+ max2 = max(values2);
+end
+max_val = max([max1 max2]);
+
+for i = 1:9
+ bar = struct;
+ bar.x_lo = min_x + ((bar_width + bar_width + bar_gap_width) * (i-1));
+ bar.x_hi = bar.x_lo;
+ bar.y_lo = min_y;
+ bar.y_hi = min_y - round(height * (values1(i) / max_val));
+ if isempty(values2)
+ bar.x_hi = bar.x_lo + 2*bar_width;
+ bars = [bars bar];
+ else
+ bar.x_hi = bar.x_lo + bar_width;
+ bar2 = struct;
+ bar2.x_lo = bar.x_hi + bar_inner_gap_width*2;
+ bar2.x_hi = bar2.x_lo + bar_width;
+ bar2.y_lo = min_y;
+ bar2.y_hi = min_y - round((height * (values2(i) / max_val)));
+ bars = [bars bar bar2];
+ end
+end
+end
diff --git a/Kod/bilbana/yc4/display/get_response.m b/Kod/bilbana/yc4/display/get_response.m
index 0c77a00..aab66a6 100644
--- a/Kod/bilbana/yc4/display/get_response.m
+++ b/Kod/bilbana/yc4/display/get_response.m
@@ -36,7 +36,7 @@ pointer = pointer + 1;
% total length
data = struct;
-while pointer < length(display_data) - 1 % last value is bcc
+while pointer < length(display_data) - 1 % (last value is bcc)
pointer = pointer + 1;
if display_data(pointer) ~= 27
% TODO: no ESC?
diff --git a/Kod/bilbana/yc4/display/define_touch_key.m b/Kod/bilbana/yc4/display/key.m
index 69ed130..0187755 100644
--- a/Kod/bilbana/yc4/display/define_touch_key.m
+++ b/Kod/bilbana/yc4/display/key.m
@@ -1,4 +1,4 @@
-function pkg = define_touch_key(x1, y1, x2, y2, down_code, up_code, just, text)
+function pkg = key(x1, y1, x2, y2, down_code, up_code, just, text)
arg_location = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)];
arg_text = double(strjoin({just; text}, ''));
arg_null = 0;
diff --git a/Kod/bilbana/yc4/display/draw_point.m b/Kod/bilbana/yc4/display/point.m
index 34ba683..cfb6b34 100644
--- a/Kod/bilbana/yc4/display/draw_point.m
+++ b/Kod/bilbana/yc4/display/point.m
@@ -1,4 +1,4 @@
-function pkg = draw_point(x1, y1)
+function pkg = point(x1, y1)
arg = [get_bytes(x1), get_bytes(y1)];
pkg = get_package('GP', arg);
end
diff --git a/Kod/bilbana/yc4/display/put_text.m b/Kod/bilbana/yc4/display/put_text.m
index 8455c83..8157a65 100644
--- a/Kod/bilbana/yc4/display/put_text.m
+++ b/Kod/bilbana/yc4/display/put_text.m
@@ -1,5 +1,5 @@
function [pkg] = put_text(x, y, justification, text)
-arg1 = [mod(x, 256), x ./ 256, mod(y, 256), y ./ 256];
+arg1 = [get_bytes(x), get_bytes(y)];
arg2 = text;
arg3 = 0;
diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m
new file mode 100644
index 0000000..ebee57e
--- /dev/null
+++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m
@@ -0,0 +1,183 @@
+function [] = draw_lap_graph(car1_laptimes, car2_laptimes, ref_time, change_car)
+dt = 0.2; % delay for display
+
+% don't have to re-draw static elements, just the graphs
+persistent in_clipboard;
+if isempty(in_clipboard)
+ in_clipboard = false;
+end
+
+% draw the other car every time the function is called if the change_car flag is set
+% (this value is ignored if only one set of lap times are given)
+persistent current_car;
+if isempty(current_car)
+ % first call to function
+ current_car = 1;
+else
+ % switch current_car
+ disp('switching current car');
+ if change_car
+ if current_car == 1
+ current_car = 2;
+ else
+ current_car = 1;
+ end
+ end
+end
+
+%% STRIP EMPTY VALUES
+tmp = [];
+for i = 1:length(car1_laptimes)
+ if car1_laptimes(i) ~= 0
+ tmp = [tmp car1_laptimes(i)];
+ end
+end
+car1_laptimes = tmp;
+
+tmp = [];
+for i = 1:length(car2_laptimes)
+ if car2_laptimes(i) ~= 0
+ tmp = [tmp car2_laptimes(i)];
+ end
+end
+car2_laptimes = tmp;
+
+pause(dt);
+matlabclient(1, get_smallpackage(clear_display()));
+pause(dt);
+
+%% DRAW STATICS (OR COPY STATICS FROM CLIPBOARD)
+if ~(in_clipboard)
+ matlabclient(1, get_smallpackage([ ...
+ put_text(160, 8, 'C', 'Varvtider'), ...
+ key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ...
+ key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ...
+ key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta'), ...
+ key(260, 0 , 320, 24 , 70, 71, 'C', 'Byt bil') ...
+ ]));
+ pause(dt);
+
+ matlabclient(1, get_smallpackage([ ...
+ draw_line(20, 24, 20, 144), ... % y-axis
+ put_text(9, 25, 'C', 's'), ... % label y-axis
+ continue_line(304, 144), ... % x-axis
+ draw_line(16, 32, 20, 24), ... % arrow on y, left part
+ continue_line(24, 32), ... % arrow on y, right part
+ draw_line(304, 140, 304, 148) ... % line on x
+ ]));
+ pause(dt);
+
+ y = 166;
+ margin_top = 6;
+ matlabclient(1, get_smallpackage([ ...
+ draw_line(0, y, 320, y), ...
+ put_text(53 , y + margin_top, 'C', 'target'), ...
+ put_text(160, y + margin_top, 'C', 'mean'), ...
+ put_text(266, y + margin_top, 'C', 'stdev') ...
+ ]));
+ pause(dt);
+
+ car1 = struct;
+ car1.avg = '--.-';
+ car1.dev = '-.--';
+ if ~isempty(car1_laptimes)
+ car1.avg = num2str(mean(car1_laptimes), 3);
+ car1.dev = num2str(std(car1_laptimes), 2);
+ end
+ car2 = struct;
+ car2.avg = '--.-';
+ car2.dev = '-.--';
+ if ~isempty(car2_laptimes)
+ car2.avg = num2str(mean(car2_laptimes), 3);
+ car2.dev = num2str(std(car2_laptimes), 2);
+ end
+
+ line = 12;
+ matlabclient(1, get_smallpackage([ ...
+ put_text(6 , y + 3 + margin_top + line*1, 'L', '1'), ...
+ put_text(6 , y + 3 + margin_top + line*2, 'L', '2'), ...
+ put_text(53 , y + 2 + margin_top + line*1, 'C', num2str(ref_time)), ...
+ put_text(53 , y + 2 + margin_top + line*2, 'C', num2str(ref_time)), ...
+ put_text(160, y + 2 + margin_top + line*1, 'C', car1.avg), ...
+ put_text(160, y + 2 + margin_top + line*2, 'C', car2.avg), ...
+ put_text(266, y + 2 + margin_top + line*1, 'C', car1.dev), ...
+ put_text(266, y + 2 + margin_top + line*2, 'C', car2.dev), ...
+ ]));
+ pause(dt);
+
+ matlabclient(1, get_smallpackage(save_display_to_clipboard()));
+ pause(dt);
+else
+ matlabclient(1, get_smallpackage(restore_display_from_clipboard()));
+ pause(dt);
+end
+
+%% DRAW GRAPH FOR CAR
+
+laps = -1;
+% want to keep the same scale in x-axis for both cars so set laps to max of both
+laps = max(length(car1_laptimes), length(car2_laptimes)); % TODO check if max([]) == 0
+x_min = 20;
+dx_max = 260;
+% x[lap] = x_min + (dx_max * (i / laps)))
+
+y_min_val = ref_time - 1.5; % val for lowest y
+y_max_val = ref_time + 1.5; % val for highest y
+y_min = 144;
+dy_max = -50;
+max_diff_val = 1;
+y_mid = y_min + (dy_max);
+% y[lap] = clamp(y_min, y_mid + (dy_max * (lap[i] / ref_time)), y_min + 2*dy_max)
+
+times = [];
+% choose which lap-times to graph
+car = 0;
+if current_car == 1 && ~isempty(car1_laptimes)
+ times = car1_laptimes;
+ car = 1;
+elseif current_car == 2 && ~isempty(car2_laptimes)
+ times = car2_laptimes;
+ car = 2;
+% ignore current_car and choose the only carn_laptimes that exist
+elseif ~isempty(car1_laptimes)
+ times = car1_laptimes;
+ car = 1;
+elseif ~isempty(car2_laptimes)
+ times = car2_laptimes;
+ car = 2;
+else
+ % not supposed to get here
+end
+
+for i = 1:(length(times))
+ x = round(x_min + (dx_max * (i/laps)));
+ y = clamp(round(y_mid + dy_max), ...
+ round(y_mid + (dy_max * ((times(i) - ref_time) / max_diff_val))), ...
+ round(y_mid - dy_max) ...
+ );
+ matlabclient(1, get_smallpackage([ ...
+ set_point_size(3, 3), ...
+ point(x, y), ...
+ set_point_size(1, 1), ...
+ draw_line(x, 144-2, x, 144+2) ...
+ ]));
+ pause(dt);
+end
+max_lap_nums = 9;
+d_lap = floor(laps/max_lap_nums) + 1;
+% examples:
+% laps = 8
+ % d_lap = floor(8/9) + 1 = 0 + 1 = 1
+% laps = 10
+ % d_lap = floor(10/9) + 1 = 1 + 1 = 2
+for i = 1:(length(times))
+ if mod(i, d_lap) == 0
+ x = round(x_min + (dx_max * (i/laps)));
+ y = y_min + 4;
+ matlabclient(1, get_smallpackage([ ...
+ put_text(x, y, 'C', num2str(i)) ...
+ ]));
+ pause(dt);
+ end
+end
+end
diff --git a/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m
new file mode 100644
index 0000000..6df2dab
--- /dev/null
+++ b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m
@@ -0,0 +1,57 @@
+function [] = draw_segment_bars(values1, values2)
+dt = 0.2; % delay for display
+queue = []; % internal queue for packages to send to display
+
+pause(dt);
+matlabclient(1, get_smallpackage(clear_display()));
+pause(dt);
+
+matlabclient(1, get_smallpackage(put_text(160, 8, 'C', 'Genomsnittlig tid per segment')))
+pause(dt);
+
+% input('');
+matlabclient(1, get_smallpackage([ ...
+ key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ...
+ key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ...
+ key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta') ...
+]));
+pause(dt);
+
+matlabclient(1, get_smallpackage([ ...
+ draw_line(20, 24, 20, 200), ... % y-axis
+ put_text(9, 25, 'C', 's'), ... % label y-axis
+ continue_line(304, 200), ... % x-axis
+ draw_line(16, 32, 20, 24), ... % arrow on y, left part
+ continue_line(24, 32), ... % arrow on y, right part
+ draw_line(304, 196, 304, 204) ... % line on x
+]));
+pause(dt);
+
+[bars, max_val, min_y, max_height] = get_bars_from_values(values1, values2);
+
+for bar = bars
+ matlabclient(1, get_smallpackage(fill_area(bar.x_lo, bar.y_lo, bar.x_hi, bar.y_hi)));
+ pause(dt);
+end
+
+for i = 0:8
+ x = 16+13 + 10 + 30*i;
+ queue = [queue put_text(x, 204, 'C', num2str(i + 1))];
+ if i == 4 || i == 8
+ matlabclient(1, get_smallpackage(queue));
+ queue = [];
+ pause(dt);
+ end
+end
+
+for i = 1:floor(max_val)
+ x = 20;
+ y = min_y - round(max_height * (i/max_val));
+ matlabclient(1, get_smallpackage([...
+ draw_line(x, y, 320, y), ...
+ put_text(x-6, y-2, 'C', num2str(i))...
+ ]));
+ pause(dt);
+end
+end
+
diff --git a/Kod/bilbana/yc4/display/set_add_line_spacing.m b/Kod/bilbana/yc4/display/set_add_line_spacing.m
deleted file mode 100644
index 33a0b4a..0000000
--- a/Kod/bilbana/yc4/display/set_add_line_spacing.m
+++ /dev/null
@@ -1,3 +0,0 @@
-function pkg = set_add_line_spacing(val)
-pkg = get_package('ZY', [val])
-end
diff --git a/Kod/bilbana/yc4/display/set_line_spacing.m b/Kod/bilbana/yc4/display/set_line_spacing.m
new file mode 100644
index 0000000..95bfc49
--- /dev/null
+++ b/Kod/bilbana/yc4/display/set_line_spacing.m
@@ -0,0 +1,3 @@
+function pkg = set_line_spacing(val)
+pkg = get_package('ZY', [val])
+end
diff --git a/Kod/bilbana/yc4/display/define_touch_switch.m b/Kod/bilbana/yc4/display/switch.m
index e45f512..e45f512 100644
--- a/Kod/bilbana/yc4/display/define_touch_switch.m
+++ b/Kod/bilbana/yc4/display/switch.m
diff --git a/Kod/bilbana/yc4/display/toggle.m b/Kod/bilbana/yc4/display/toggle.m
new file mode 100644
index 0000000..9dc42b0
--- /dev/null
+++ b/Kod/bilbana/yc4/display/toggle.m
@@ -0,0 +1,7 @@
+function pkg = toggle(x1, y1, x2, y2, down_code, up_code, just, text)
+arg_location = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)];
+arg_text = double(strjoin({just; text}, ''));
+arg_null = 0;
+
+pkg = get_package('AK', [arg_location, down_code, up_code, arg_text, arg_null]);
+end