summaryrefslogtreecommitdiffstats
path: root/Kod/bilbana/yc4/display/get_response.m
diff options
context:
space:
mode:
authorDavid Thorén <davth346@student.liu.se>2019-11-13 12:34:55 +0100
committerDavid Thorén <davth346@student.liu.se>2019-11-13 12:34:55 +0100
commitd413cfbac66ff6de32a916d61af6f4ba77fd2eb6 (patch)
treedd55dc8c7c128d6f2b64c163c442a23b5c0a8351 /Kod/bilbana/yc4/display/get_response.m
parent3a421ed7caac62d659424f6631ae841f7ac29a4e (diff)
parent2f0a6f442b8103a95839f0e37d5689ca9cf0fe71 (diff)
downloadtfyy51-d413cfbac66ff6de32a916d61af6f4ba77fd2eb6.tar.gz
Merge branch 'display-io' into car-function
Diffstat (limited to 'Kod/bilbana/yc4/display/get_response.m')
-rw-r--r--Kod/bilbana/yc4/display/get_response.m51
1 files changed, 51 insertions, 0 deletions
diff --git a/Kod/bilbana/yc4/display/get_response.m b/Kod/bilbana/yc4/display/get_response.m
new file mode 100644
index 0000000..1e3e6af
--- /dev/null
+++ b/Kod/bilbana/yc4/display/get_response.m
@@ -0,0 +1,51 @@
+function [ack, start_code, responses] = get_response(display_data)
+% GET RESPONSE
+% In-depth explanation
+% [flag, display_data] = matlabclient(2)
+
+ack = false;
+start_code = '';
+bcc = display_data(length(display_data));
+responses = [];
+
+pointer = 1;
+
+if display_data(pointer) == 6
+ ack = true;
+else
+ return
+end
+
+if pointer > length(display_data)
+ return
+end
+
+pointer = pointer + 1;
+if display_data(1) == 17
+ start_code = 'DC1';
+elseif display_data(1) == 18
+ start_code = 'DC2';
+end
+
+pointer = pointer + 1;
+% total length
+
+data = struct;
+while pointer < length(display_data) - 1 % last value is bcc
+ pointer = pointer + 1;
+ if display_data(pointer) ~= 27
+ % TODO: no ESC?
+ end
+ pointer = pointer + 1;
+ data.id = char(display_data(pointer));
+
+ pointer = pointer + 1;
+ data.length = display_data(pointer);
+ if data.id == 'A'
+ pointer = pointer + 1;
+ data.data = display_data(pointer);
+ else
+ pointer = pointer + data.length;
+ end
+ responses = [responses, data];
+end