commit 741d93106ee3ba627c7e91770514796bee4ed277
Author: Miloslav Kovář <kovarm@students.zcu.cz>
Date:   Thu Apr 8 22:10:36 2021 +0200

    Re #8504 - Add testing server (robot mock)

diff --git a/deltarobot-test-server/curve.txt b/deltarobot-test-server/curve.txt
new file mode 100644
index 0000000..2e7e6f7
--- /dev/null
+++ b/deltarobot-test-server/curve.txt
@@ -0,0 +1,1540 @@
+0;0;3900;0
+0;1;3900;0
+0;2;3900;0
+0;3;3900;0
+0;6;3900;0
+0;8;3900;0
+0;11;3900;0
+0;15;3900;0
+0;18;3900;0
+0;23;3900;0
+0;27;3900;0
+0;32;3900;0
+0;38;3900;0
+0;44;3900;0
+0;50;3900;0
+0;56;3900;0
+0;62;3900;0
+0;69;3900;0
+0;76;3900;0
+0;84;3900;0
+0;91;3900;0
+0;99;3900;0
+0;107;3900;0
+0;116;3900;0
+0;124;3900;0
+0;133;3900;0
+0;142;3900;0
+0;151;3900;0
+0;161;3900;0
+0;171;3900;0
+0;180;3900;0
+0;191;3900;0
+0;201;3900;0
+0;212;3900;0
+0;222;3900;0
+0;233;3900;0
+0;243;3900;0
+0;254;3900;0
+0;265;3900;0
+0;275;3900;0
+0;286;3900;0
+0;297;3900;0
+0;307;3900;0
+0;318;3900;0
+0;329;3900;0
+0;340;3900;0
+0;350;3900;0
+0;361;3900;0
+0;371;3900;0
+0;381;3900;0
+0;391;3900;0
+0;400;3900;0
+0;408;3900;0
+0;416;3900;0
+0;423;3900;0
+0;430;3900;0
+0;437;3900;0
+0;443;3900;0
+0;450;3900;0
+0;456;3900;0
+0;462;3900;0
+0;469;3900;0
+0;475;3900;0
+0;482;3900;0
+0;488;3900;0
+0;495;3900;0
+0;501;3900;0
+0;507;3900;0
+0;513;3900;0
+0;518;3900;0
+0;524;3900;0
+0;531;3900;0
+0;537;3900;0
+0;544;3900;0
+0;550;3900;0
+0;557;3900;0
+0;563;3900;0
+0;570;3900;0
+0;576;3900;0
+0;582;3900;0
+0;588;3900;0
+0;594;3900;0
+0;599;3900;0
+0;604;3900;0
+0;609;3900;0
+0;614;3900;0
+0;618;3900;0
+0;622;3900;0
+0;626;3900;0
+0;629;3900;0
+0;632;3900;0
+0;635;3900;0
+0;638;3900;0
+0;641;3900;0
+0;643;3900;0
+0;645;3900;0
+0;647;3900;0
+0;649;3900;0
+0;651;3900;0
+0;653;3900;0
+0;653;3900;0
+0;653;3900;0
+0;653;3900;0
+0;653;3900;0
+1;653;3900;0
+2;653;3900;0
+2;653;3900;0
+3;653;3900;0
+4;653;3900;0
+5;653;3900;0
+6;653;3900;0
+8;653;3900;0
+10;653;3900;0
+12;653;3900;0
+15;653;3900;0
+18;653;3900;0
+20;653;3900;0
+24;653;3900;0
+27;653;3900;0
+31;653;3900;0
+35;653;3900;0
+38;653;3900;0
+42;653;3900;0
+46;653;3900;0
+50;653;3900;0
+55;653;3900;0
+59;653;3900;0
+63;653;3900;0
+68;653;3900;0
+72;653;3900;0
+77;653;3900;0
+82;653;3900;0
+87;653;3900;0
+92;653;3900;0
+97;653;3900;0
+102;653;3900;0
+107;653;3900;0
+112;653;3900;0
+118;653;3900;0
+123;653;3900;0
+129;653;3900;0
+135;653;3900;0
+140;653;3900;0
+146;653;3900;0
+152;653;3900;0
+157;653;3900;0
+163;653;3900;0
+169;653;3900;0
+175;653;3900;0
+181;653;3900;0
+187;653;3900;0
+193;653;3900;0
+200;653;3900;0
+206;653;3900;0
+212;653;3900;0
+218;653;3900;0
+224;653;3900;0
+230;653;3900;0
+236;653;3900;0
+242;653;3900;0
+248;653;3900;0
+255;653;3900;0
+260;653;3900;0
+266;653;3900;0
+272;653;3900;0
+278;653;3900;0
+284;653;3900;0
+289;653;3900;0
+295;653;3900;0
+301;653;3900;0
+306;653;3900;0
+312;653;3900;0
+317;653;3900;0
+322;653;3900;0
+327;653;3900;0
+332;653;3900;0
+337;653;3900;0
+343;653;3900;0
+348;653;3900;0
+353;653;3900;0
+358;653;3900;0
+363;653;3900;0
+369;653;3900;0
+374;653;3900;0
+379;653;3900;0
+384;653;3900;0
+389;653;3900;0
+395;653;3900;0
+400;653;3900;0
+406;653;3900;0
+412;653;3900;0
+418;653;3900;0
+424;653;3900;0
+430;653;3900;0
+436;653;3900;0
+443;653;3900;0
+449;653;3900;0
+455;653;3900;0
+461;653;3900;0
+467;653;3900;0
+473;653;3900;0
+479;653;3900;0
+486;653;3900;0
+492;653;3900;0
+498;653;3900;0
+504;653;3900;0
+511;653;3900;0
+517;653;3900;0
+524;653;3900;0
+530;653;3900;0
+536;653;3900;0
+543;653;3900;0
+549;653;3900;0
+556;653;3900;0
+562;653;3900;0
+568;653;3900;0
+574;653;3900;0
+580;653;3900;0
+586;653;3900;0
+592;653;3900;0
+598;653;3900;0
+604;653;3900;0
+610;653;3900;0
+616;653;3900;0
+622;653;3900;0
+628;653;3900;0
+634;653;3900;0
+640;653;3900;0
+646;653;3900;0
+653;653;3900;0
+659;653;3900;0
+665;653;3900;0
+672;653;3900;0
+678;653;3900;0
+684;653;3900;0
+690;653;3900;0
+696;653;3900;0
+703;653;3900;0
+709;653;3900;0
+715;653;3900;0
+721;653;3900;0
+728;653;3900;0
+733;653;3900;0
+739;653;3900;0
+744;653;3900;0
+748;653;3900;0
+752;653;3900;0
+755;653;3900;0
+757;653;3900;0
+759;653;3900;0
+760;653;3900;0
+761;653;3900;0
+761;653;3900;0
+762;653;3900;0
+763;653;3900;0
+764;653;3900;0
+765;653;3900;0
+766;653;3900;0
+767;653;3900;0
+767;653;3900;0
+768;653;3900;0
+768;653;3900;0
+768;653;3900;0
+768;653;3900;0
+769;653;3900;0
+770;653;3900;0
+771;653;3900;0
+772;653;3900;0
+774;653;3900;0
+776;653;3900;0
+779;653;3900;0
+781;653;3900;0
+783;653;3900;0
+785;653;3900;0
+787;653;3900;0
+789;653;3900;0
+790;653;3900;0
+792;653;3900;0
+793;653;3900;0
+794;653;3900;0
+796;653;3900;0
+798;653;3900;0
+799;653;3900;0
+801;653;3900;0
+803;653;3900;0
+805;653;3900;0
+807;653;3900;0
+809;653;3900;0
+812;653;3900;0
+814;653;3900;0
+816;653;3900;0
+817;653;3900;0
+819;653;3900;0
+821;653;3900;0
+822;653;3900;0
+824;653;3900;0
+826;653;3900;0
+827;653;3900;0
+829;653;3900;0
+831;653;3900;0
+833;653;3900;0
+835;653;3900;0
+837;653;3900;0
+839;653;3900;0
+840;653;3900;0
+842;653;3900;0
+844;653;3900;0
+846;653;3900;0
+848;653;3900;0
+850;653;3900;0
+851;653;3900;0
+853;653;3900;0
+854;653;3900;0
+856;653;3900;0
+858;653;3900;0
+860;653;3900;0
+862;653;3900;0
+865;653;3901;0
+868;653;3901;0
+871;653;3902;0
+875;653;3903;0
+878;653;3904;0
+882;653;3904;0
+886;653;3905;0
+890;653;3905;0
+894;653;3906;0
+898;653;3906;0
+903;653;3906;0
+907;653;3906;0
+911;653;3906;0
+915;653;3906;0
+919;653;3906;0
+924;653;3906;0
+928;653;3906;0
+933;653;3906;0
+937;653;3906;0
+942;653;3906;0
+947;653;3906;0
+952;653;3906;0
+958;653;3906;0
+963;653;3906;0
+969;653;3906;0
+975;653;3906;0
+982;653;3907;0
+989;653;3908;0
+996;653;3909;0
+1003;652;3910;0
+1011;651;3912;0
+1019;650;3914;0
+1027;649;3916;0
+1035;648;3918;0
+1044;646;3921;0
+1053;645;3923;0
+1062;644;3925;0
+1071;643;3927;0
+1079;642;3929;0
+1088;641;3931;0
+1096;640;3933;0
+1103;639;3934;0
+1110;638;3935;0
+1117;638;3936;0
+1123;637;3938;0
+1128;636;3939;0
+1133;635;3940;0
+1137;633;3941;0
+1141;632;3942;0
+1144;629;3944;0
+1148;627;3945;0
+1151;624;3947;0
+1154;622;3949;0
+1158;620;3952;0
+1161;618;3954;0
+1164;616;3957;0
+1168;614;3960;0
+1171;612;3964;0
+1174;611;3968;0
+1178;609;3971;0
+1182;607;3974;0
+1187;605;3977;0
+1192;603;3980;0
+1197;602;3982;0
+1203;600;3985;0
+1209;598;3989;0
+1215;596;3992;0
+1221;594;3995;0
+1227;592;3998;0
+1232;589;4001;0
+1237;586;4005;0
+1242;582;4009;0
+1246;579;4012;0
+1250;575;4016;0
+1255;571;4021;0
+1259;567;4025;0
+1263;563;4030;0
+1268;559;4035;0
+1272;555;4040;0
+1276;550;4044;0
+1281;546;4049;0
+1286;541;4054;0
+1291;536;4058;0
+1296;531;4063;0
+1302;527;4067;0
+1307;522;4072;0
+1312;518;4076;0
+1316;513;4080;0
+1321;509;4083;0
+1325;505;4087;0
+1329;501;4090;0
+1333;496;4094;0
+1337;492;4097;0
+1342;488;4101;0
+1346;484;4105;0
+1350;480;4109;0
+1353;476;4113;0
+1357;472;4117;0
+1361;468;4122;0
+1364;463;4127;0
+1368;459;4132;0
+1370;454;4137;0
+1373;449;4142;0
+1375;445;4146;0
+1377;440;4152;0
+1379;436;4157;0
+1381;432;4161;0
+1382;429;4166;0
+1384;426;4170;0
+1385;424;4174;0
+1386;422;4179;0
+1388;421;4183;0
+1390;420;4188;0
+1391;419;4194;0
+1392;418;4199;0
+1393;417;4205;0
+1394;417;4211;0
+1394;416;4216;0
+1394;416;4221;0
+1394;415;4226;0
+1394;415;4230;0
+1394;414;4234;0
+1394;413;4238;0
+1394;412;4242;0
+1394;411;4245;0
+1394;410;4249;0
+1394;408;4253;0
+1394;407;4258;0
+1394;406;4262;0
+1394;405;4267;0
+1394;403;4272;0
+1394;402;4277;0
+1394;401;4282;0
+1394;400;4287;0
+1394;399;4292;0
+1394;397;4297;0
+1394;396;4303;0
+1394;394;4307;0
+1394;392;4312;0
+1394;390;4317;0
+1394;388;4321;0
+1394;386;4326;0
+1394;383;4330;0
+1394;381;4333;0
+1394;379;4337;0
+1394;377;4341;0
+1394;375;4344;0
+1394;372;4347;0
+1394;370;4351;0
+1394;368;4355;0
+1394;366;4359;0
+1394;364;4363;0
+1394;362;4368;0
+1394;361;4372;0
+1394;359;4377;0
+1394;357;4382;0
+1394;356;4388;0
+1394;354;4393;0
+1394;352;4398;0
+1394;350;4404;0
+1394;348;4409;0
+1394;346;4415;0
+1394;343;4421;0
+1394;341;4427;0
+1394;338;4433;0
+1394;336;4439;0
+1394;334;4445;0
+1394;331;4452;0
+1394;330;4459;0
+1394;328;4466;0
+1394;327;4472;0
+1394;327;4479;0
+1394;327;4485;0
+1394;327;4492;0
+1394;327;4499;0
+1394;327;4506;0
+1394;327;4513;0
+1394;327;4521;0
+1394;327;4530;0
+1394;326;4539;0
+1394;325;4548;0
+1394;325;4557;0
+1394;324;4566;0
+1394;323;4575;0
+1394;322;4583;0
+1394;322;4591;0
+1394;322;4599;0
+1394;322;4606;0
+1394;321;4613;0
+1394;321;4621;0
+1394;320;4628;0
+1394;319;4636;0
+1394;319;4644;0
+1394;318;4653;0
+1394;318;4661;0
+1394;318;4670;0
+1394;318;4678;0
+1394;318;4687;0
+1394;318;4696;0
+1394;318;4705;0
+1394;318;4713;0
+1394;318;4722;0
+1394;318;4730;0
+1394;318;4739;0
+1394;318;4747;0
+1394;318;4755;0
+1394;318;4764;0
+1394;318;4772;0
+1394;318;4780;0
+1394;318;4788;0
+1394;318;4797;0
+1394;317;4805;0
+1394;316;4814;0
+1394;314;4822;0
+1394;313;4831;0
+1394;310;4839;0
+1394;307;4847;0
+1394;304;4855;0
+1394;301;4863;0
+1394;299;4870;0
+1394;296;4877;0
+1394;293;4885;0
+1394;290;4892;0
+1394;287;4900;0
+1394;283;4907;0
+1394;279;4915;0
+1394;275;4923;0
+1394;271;4930;0
+1394;265;4938;0
+1394;260;4945;0
+1394;255;4953;0
+1394;249;4960;0
+1394;243;4967;0
+1394;237;4975;0
+1394;230;4981;0
+1394;224;4988;0
+1394;217;4994;0
+1394;210;5000;0
+1394;202;5006;0
+1394;194;5012;0
+1394;186;5018;0
+1394;177;5023;0
+1394;168;5029;0
+1394;158;5035;0
+1394;149;5042;0
+1394;138;5048;0
+1394;128;5054;0
+1394;117;5060;0
+1394;106;5067;0
+1394;95;5074;0
+1394;83;5081;0
+1394;71;5088;0
+1394;58;5095;0
+1394;46;5101;0
+1394;32;5108;0
+1394;19;5115;0
+1394;6;5122;0
+1394;-8;5128;0
+1394;-22;5135;0
+1394;-36;5141;0
+1394;-50;5148;0
+1394;-64;5154;0
+1394;-79;5160;0
+1394;-93;5166;0
+1394;-108;5172;0
+1394;-123;5178;0
+1394;-138;5184;0
+1394;-154;5189;0
+1394;-169;5195;0
+1394;-185;5200;0
+1394;-201;5206;0
+1394;-217;5212;0
+1394;-233;5218;0
+1394;-250;5224;0
+1394;-267;5230;0
+1394;-284;5235;0
+1394;-301;5240;0
+1394;-318;5245;0
+1394;-334;5249;0
+1394;-349;5253;0
+1394;-363;5256;0
+1394;-377;5259;0
+1394;-389;5262;0
+1394;-400;5265;0
+1394;-411;5268;0
+1394;-421;5272;0
+1394;-431;5275;0
+1394;-439;5279;0
+1394;-447;5282;0
+1394;-455;5285;0
+1394;-462;5288;0
+1394;-468;5291;0
+1394;-473;5294;0
+1394;-478;5298;0
+1394;-483;5301;0
+1394;-488;5305;0
+1394;-493;5308;0
+1394;-498;5312;0
+1394;-502;5315;0
+1394;-506;5319;0
+1394;-509;5322;0
+1394;-512;5326;0
+1394;-513;5330;0
+1394;-513;5334;0
+1394;-513;5339;0
+1394;-513;5344;0
+1394;-513;5348;0
+1394;-513;5353;0
+1394;-513;5359;0
+1394;-513;5365;0
+1394;-513;5370;0
+1394;-513;5376;0
+1394;-513;5382;0
+1394;-513;5387;0
+1394;-513;5393;0
+1394;-513;5397;0
+1394;-513;5402;0
+1394;-513;5405;0
+1394;-513;5409;0
+1394;-513;5412;0
+1394;-513;5416;0
+1394;-513;5419;0
+1394;-513;5422;0
+1394;-513;5426;0
+1394;-513;5429;0
+1394;-513;5433;0
+1394;-513;5437;0
+1394;-513;5442;0
+1394;-513;5448;0
+1394;-513;5453;0
+1394;-513;5459;0
+1394;-513;5465;0
+1394;-513;5471;0
+1394;-513;5476;0
+1394;-513;5481;0
+1394;-513;5486;0
+1394;-513;5490;0
+1394;-513;5494;0
+1394;-513;5498;0
+1394;-513;5503;0
+1394;-513;5507;0
+1394;-513;5512;0
+1394;-513;5517;0
+1394;-513;5522;0
+1394;-514;5527;0
+1394;-515;5532;0
+1394;-516;5537;0
+1394;-518;5542;0
+1394;-519;5548;0
+1394;-520;5553;0
+1394;-521;5559;0
+1394;-522;5566;0
+1394;-524;5573;0
+1394;-526;5580;0
+1393;-530;5588;0
+1393;-534;5597;0
+1392;-539;5605;0
+1391;-545;5614;0
+1390;-552;5623;0
+1389;-559;5633;0
+1389;-568;5642;0
+1388;-577;5651;0
+1388;-587;5660;0
+1387;-597;5670;0
+1387;-607;5680;0
+1386;-618;5689;0
+1384;-629;5700;0
+1383;-640;5710;0
+1381;-651;5721;0
+1379;-662;5733;0
+1376;-673;5745;0
+1374;-684;5757;0
+1371;-695;5769;0
+1368;-707;5781;0
+1365;-718;5794;0
+1362;-729;5806;0
+1359;-741;5819;0
+1356;-752;5831;0
+1353;-764;5843;0
+1350;-776;5855;0
+1347;-788;5867;0
+1344;-800;5878;0
+1341;-813;5890;0
+1338;-825;5901;0
+1335;-837;5913;0
+1331;-850;5924;0
+1328;-862;5936;0
+1325;-874;5947;0
+1322;-885;5959;0
+1318;-897;5971;0
+1315;-909;5983;0
+1311;-920;5995;0
+1308;-931;6007;0
+1304;-942;6019;0
+1301;-953;6031;0
+1297;-965;6043;0
+1293;-977;6055;0
+1289;-989;6067;0
+1285;-1001;6079;0
+1281;-1014;6091;0
+1276;-1027;6103;0
+1272;-1039;6115;0
+1267;-1052;6127;0
+1262;-1065;6139;0
+1256;-1078;6151;0
+1251;-1091;6163;0
+1245;-1103;6175;0
+1239;-1116;6188;0
+1233;-1129;6200;0
+1227;-1141;6212;0
+1221;-1154;6224;0
+1215;-1166;6235;0
+1209;-1178;6247;0
+1202;-1190;6258;0
+1196;-1202;6270;0
+1190;-1214;6282;0
+1184;-1226;6294;0
+1178;-1237;6306;0
+1171;-1249;6318;0
+1163;-1261;6330;0
+1156;-1273;6342;0
+1148;-1286;6355;0
+1140;-1298;6367;0
+1132;-1310;6380;0
+1124;-1322;6392;0
+1117;-1333;6404;0
+1109;-1344;6416;0
+1101;-1355;6428;0
+1094;-1365;6439;0
+1087;-1375;6451;0
+1081;-1384;6463;0
+1074;-1393;6474;0
+1067;-1402;6485;0
+1061;-1410;6496;0
+1054;-1418;6507;0
+1047;-1424;6518;0
+1040;-1429;6528;0
+1033;-1434;6539;0
+1026;-1435;6549;0
+1019;-1436;6559;0
+1013;-1436;6568;0
+1006;-1436;6578;0
+1000;-1436;6587;0
+994;-1436;6596;0
+987;-1436;6605;0
+981;-1436;6613;0
+974;-1436;6621;0
+967;-1436;6629;0
+960;-1436;6636;0
+952;-1436;6642;0
+944;-1436;6648;0
+935;-1436;6654;0
+926;-1436;6659;0
+917;-1436;6663;0
+908;-1436;6666;0
+900;-1436;6669;0
+891;-1436;6673;0
+883;-1436;6677;0
+876;-1436;6682;0
+868;-1436;6687;0
+859;-1436;6693;0
+850;-1436;6699;0
+839;-1436;6704;0
+828;-1437;6709;0
+816;-1438;6713;0
+804;-1439;6716;0
+792;-1440;6718;0
+780;-1441;6720;0
+769;-1442;6720;0
+758;-1442;6720;0
+748;-1442;6720;0
+737;-1442;6720;0
+726;-1444;6720;0
+715;-1446;6720;0
+704;-1450;6720;0
+692;-1456;6720;0
+680;-1462;6720;0
+668;-1469;6720;0
+657;-1476;6720;0
+645;-1484;6720;0
+633;-1492;6720;0
+621;-1500;6720;0
+609;-1508;6720;0
+597;-1516;6720;0
+584;-1525;6720;0
+572;-1533;6720;0
+559;-1542;6720;0
+546;-1552;6720;0
+533;-1561;6720;0
+520;-1571;6720;0
+508;-1581;6720;0
+496;-1591;6720;0
+483;-1600;6720;0
+472;-1608;6720;0
+461;-1616;6720;0
+451;-1624;6720;0
+441;-1631;6720;0
+431;-1638;6720;0
+422;-1645;6720;0
+413;-1652;6720;0
+403;-1659;6720;0
+394;-1666;6720;0
+384;-1673;6720;0
+374;-1680;6720;0
+365;-1687;6720;0
+355;-1694;6720;0
+345;-1700;6720;0
+336;-1706;6720;0
+326;-1712;6720;0
+317;-1717;6720;0
+307;-1722;6720;0
+298;-1727;6720;0
+288;-1731;6720;0
+279;-1735;6720;0
+270;-1739;6720;0
+262;-1743;6720;0
+254;-1746;6720;0
+247;-1750;6720;0
+240;-1753;6720;0
+234;-1755;6720;0
+228;-1756;6720;0
+223;-1757;6720;0
+217;-1758;6720;0
+211;-1758;6720;0
+205;-1758;6720;0
+198;-1758;6720;0
+191;-1758;6720;0
+184;-1758;6720;0
+176;-1758;6720;0
+169;-1758;6720;0
+161;-1758;6720;0
+153;-1758;6720;0
+144;-1758;6720;0
+136;-1758;6720;0
+127;-1758;6720;0
+119;-1758;6720;0
+110;-1758;6720;0
+101;-1758;6720;0
+93;-1758;6720;0
+84;-1758;6720;0
+75;-1758;6720;0
+66;-1758;6720;0
+57;-1758;6720;0
+48;-1758;6720;0
+39;-1758;6720;0
+29;-1758;6720;0
+19;-1758;6720;0
+9;-1758;6720;0
+-2;-1758;6720;0
+-13;-1758;6720;0
+-25;-1758;6720;0
+-36;-1758;6720;0
+-47;-1758;6720;0
+-58;-1758;6720;0
+-69;-1758;6720;0
+-79;-1758;6720;0
+-89;-1758;6720;0
+-98;-1758;6720;0
+-106;-1758;6720;0
+-115;-1758;6720;0
+-123;-1758;6720;0
+-131;-1758;6720;0
+-139;-1758;6720;0
+-146;-1758;6720;0
+-154;-1758;6720;0
+-162;-1758;6720;0
+-171;-1758;6720;0
+-179;-1758;6720;0
+-187;-1758;6720;0
+-196;-1758;6720;0
+-205;-1758;6720;0
+-214;-1758;6720;0
+-224;-1758;6720;0
+-234;-1758;6720;0
+-244;-1758;6720;0
+-255;-1758;6720;0
+-265;-1758;6720;0
+-276;-1758;6720;0
+-286;-1758;6720;0
+-297;-1758;6720;0
+-307;-1758;6720;0
+-316;-1758;6720;0
+-326;-1758;6720;0
+-335;-1758;6720;0
+-343;-1758;6720;0
+-351;-1758;6720;0
+-360;-1758;6720;0
+-369;-1758;6720;0
+-378;-1758;6720;0
+-388;-1758;6720;0
+-398;-1758;6720;0
+-410;-1758;6720;0
+-421;-1758;6720;0
+-433;-1758;6720;0
+-445;-1758;6720;0
+-457;-1758;6720;0
+-468;-1758;6720;0
+-479;-1758;6720;0
+-490;-1758;6720;0
+-501;-1758;6720;0
+-511;-1758;6720;0
+-520;-1758;6720;0
+-530;-1758;6720;0
+-539;-1758;6720;0
+-547;-1758;6720;0
+-556;-1758;6720;0
+-564;-1758;6720;0
+-572;-1758;6720;0
+-579;-1758;6720;0
+-587;-1758;6720;0
+-596;-1758;6720;0
+-604;-1758;6720;0
+-612;-1758;6720;0
+-621;-1758;6720;0
+-630;-1758;6720;0
+-638;-1758;6720;0
+-647;-1758;6720;0
+-656;-1758;6720;0
+-665;-1758;6720;0
+-674;-1758;6720;0
+-682;-1758;6720;0
+-691;-1758;6720;0
+-700;-1758;6720;0
+-708;-1758;6720;0
+-717;-1758;6720;0
+-727;-1758;6720;0
+-736;-1758;6720;0
+-746;-1758;6720;0
+-755;-1758;6720;0
+-765;-1758;6720;0
+-775;-1758;6720;0
+-784;-1758;6720;0
+-794;-1758;6720;0
+-803;-1758;6720;0
+-812;-1758;6720;0
+-821;-1758;6720;0
+-829;-1758;6720;0
+-837;-1758;6720;0
+-845;-1758;6720;0
+-852;-1758;6720;0
+-860;-1758;6720;0
+-867;-1758;6720;0
+-875;-1758;6720;0
+-882;-1758;6720;0
+-890;-1758;6720;0
+-898;-1758;6720;0
+-906;-1758;6720;0
+-915;-1758;6720;0
+-923;-1758;6720;0
+-931;-1758;6720;0
+-940;-1758;6720;0
+-949;-1758;6720;0
+-957;-1758;6720;0
+-966;-1758;6720;0
+-974;-1758;6720;0
+-982;-1758;6720;0
+-990;-1758;6720;0
+-997;-1758;6720;0
+-1004;-1758;6720;0
+-1011;-1758;6720;0
+-1018;-1758;6720;0
+-1024;-1758;6720;0
+-1031;-1758;6720;0
+-1037;-1757;6720;0
+-1043;-1757;6720;0
+-1050;-1757;6720;0
+-1056;-1757;6720;0
+-1062;-1756;6720;0
+-1068;-1754;6720;0
+-1074;-1753;6720;0
+-1080;-1751;6720;0
+-1085;-1748;6720;0
+-1091;-1745;6720;0
+-1096;-1741;6720;0
+-1102;-1738;6720;0
+-1108;-1734;6720;0
+-1113;-1730;6720;0
+-1119;-1725;6720;0
+-1125;-1721;6720;0
+-1131;-1716;6720;0
+-1137;-1711;6720;0
+-1143;-1706;6720;0
+-1150;-1700;6720;0
+-1156;-1694;6720;0
+-1162;-1688;6720;0
+-1169;-1682;6720;0
+-1175;-1675;6720;0
+-1182;-1669;6720;0
+-1188;-1661;6720;0
+-1194;-1654;6720;0
+-1200;-1646;6720;0
+-1206;-1638;6720;0
+-1212;-1630;6720;0
+-1218;-1622;6720;0
+-1223;-1613;6720;0
+-1229;-1605;6720;0
+-1234;-1596;6720;0
+-1239;-1587;6720;0
+-1244;-1579;6720;0
+-1250;-1570;6720;0
+-1255;-1562;6720;0
+-1261;-1553;6720;0
+-1266;-1545;6720;0
+-1272;-1536;6720;0
+-1278;-1528;6720;0
+-1284;-1519;6720;0
+-1290;-1510;6720;0
+-1295;-1501;6720;0
+-1300;-1492;6720;0
+-1306;-1482;6720;0
+-1311;-1473;6720;0
+-1316;-1463;6720;0
+-1321;-1453;6720;0
+-1327;-1443;6720;0
+-1332;-1432;6720;0
+-1338;-1422;6720;0
+-1343;-1412;6720;0
+-1349;-1403;6720;0
+-1354;-1393;6720;0
+-1360;-1384;6720;0
+-1366;-1375;6720;0
+-1372;-1366;6720;0
+-1378;-1357;6720;0
+-1385;-1348;6720;0
+-1392;-1340;6720;0
+-1399;-1331;6720;0
+-1406;-1323;6720;0
+-1413;-1315;6720;0
+-1420;-1308;6720;0
+-1427;-1300;6720;0
+-1434;-1293;6720;0
+-1442;-1286;6720;0
+-1449;-1279;6720;0
+-1456;-1272;6720;0
+-1464;-1265;6720;0
+-1471;-1257;6720;0
+-1478;-1250;6720;0
+-1485;-1242;6720;0
+-1492;-1235;6720;0
+-1499;-1228;6720;0
+-1506;-1220;6720;0
+-1513;-1213;6720;0
+-1520;-1206;6720;0
+-1526;-1199;6720;0
+-1533;-1192;6720;0
+-1539;-1185;6720;0
+-1545;-1178;6720;0
+-1551;-1171;6720;0
+-1557;-1164;6720;0
+-1563;-1157;6720;0
+-1569;-1150;6720;0
+-1575;-1142;6720;0
+-1581;-1135;6720;0
+-1587;-1127;6720;0
+-1593;-1120;6720;0
+-1599;-1112;6720;0
+-1604;-1105;6720;0
+-1610;-1097;6720;0
+-1615;-1089;6720;0
+-1620;-1081;6720;0
+-1625;-1072;6720;0
+-1630;-1063;6720;0
+-1634;-1054;6720;0
+-1639;-1044;6720;0
+-1643;-1035;6720;0
+-1646;-1025;6720;0
+-1650;-1016;6720;0
+-1653;-1006;6720;0
+-1656;-996;6720;0
+-1658;-985;6720;0
+-1660;-975;6720;0
+-1663;-964;6720;0
+-1664;-954;6720;0
+-1666;-942;6720;0
+-1667;-931;6720;0
+-1668;-919;6720;0
+-1669;-908;6720;0
+-1670;-896;6720;0
+-1671;-884;6720;0
+-1673;-872;6720;0
+-1674;-860;6720;0
+-1675;-847;6720;0
+-1676;-835;6720;0
+-1678;-823;6720;0
+-1679;-811;6720;0
+-1680;-799;6720;0
+-1681;-787;6720;0
+-1681;-775;6720;0
+-1682;-763;6720;0
+-1682;-750;6720;0
+-1682;-737;6720;0
+-1682;-724;6720;0
+-1682;-711;6720;0
+-1682;-697;6720;0
+-1682;-683;6720;0
+-1682;-668;6720;0
+-1682;-654;6720;0
+-1682;-640;6720;0
+-1682;-626;6720;0
+-1682;-611;6720;0
+-1682;-597;6720;0
+-1682;-582;6720;0
+-1682;-567;6720;0
+-1682;-552;6720;0
+-1682;-536;6720;0
+-1682;-520;6720;0
+-1682;-504;6720;0
+-1682;-487;6720;0
+-1682;-471;6720;0
+-1682;-455;6720;0
+-1682;-438;6720;0
+-1682;-422;6720;0
+-1682;-406;6720;0
+-1682;-391;6720;0
+-1682;-375;6720;0
+-1682;-360;6720;0
+-1682;-346;6720;0
+-1682;-331;6720;0
+-1682;-317;6720;0
+-1682;-303;6720;0
+-1682;-289;6720;0
+-1682;-275;6720;0
+-1682;-261;6720;0
+-1682;-247;6720;0
+-1682;-234;6720;0
+-1682;-220;6720;0
+-1682;-206;6720;0
+-1682;-193;6720;0
+-1682;-179;6720;0
+-1682;-166;6720;0
+-1682;-152;6720;0
+-1682;-139;6720;0
+-1682;-125;6720;0
+-1682;-111;6720;0
+-1682;-98;6720;0
+-1682;-84;6720;0
+-1682;-70;6720;0
+-1682;-56;6720;0
+-1682;-42;6720;0
+-1682;-27;6720;0
+-1682;-13;6720;0
+-1682;2;6720;0
+-1682;17;6720;0
+-1682;32;6720;0
+-1682;47;6720;0
+-1682;62;6720;0
+-1682;77;6720;0
+-1682;92;6720;0
+-1682;108;6720;0
+-1682;124;6720;0
+-1682;139;6720;0
+-1682;155;6720;0
+-1682;171;6720;0
+-1682;187;6720;0
+-1682;202;6720;0
+-1682;218;6720;0
+-1682;234;6720;0
+-1682;249;6720;0
+-1682;265;6720;0
+-1682;281;6720;0
+-1682;297;6720;0
+-1682;312;6720;0
+-1682;328;6720;0
+-1682;343;6720;0
+-1682;359;6720;0
+-1682;374;6720;0
+-1682;389;6720;0
+-1682;404;6720;0
+-1682;419;6720;0
+-1682;434;6720;0
+-1682;448;6720;0
+-1682;462;6720;0
+-1682;474;6720;0
+-1682;487;6720;0
+-1682;499;6720;0
+-1682;510;6720;0
+-1682;521;6720;0
+-1682;531;6720;0
+-1682;542;6720;0
+-1682;551;6720;0
+-1682;561;6719;0
+-1682;570;6719;0
+-1682;579;6719;0
+-1682;588;6718;0
+-1682;597;6718;0
+-1682;606;6718;0
+-1682;614;6718;0
+-1682;623;6718;0
+-1682;631;6718;0
+-1681;639;6718;0
+-1679;648;6718;0
+-1675;656;6718;0
+-1670;664;6718;0
+-1664;672;6718;0
+-1657;680;6718;0
+-1649;688;6718;0
+-1641;696;6718;0
+-1633;703;6718;0
+-1624;711;6718;0
+-1615;718;6718;0
+-1606;725;6718;0
+-1597;732;6718;0
+-1588;739;6718;0
+-1580;745;6718;0
+-1572;752;6718;0
+-1565;759;6718;0
+-1557;766;6718;0
+-1550;773;6718;0
+-1543;781;6718;0
+-1536;788;6718;0
+-1528;796;6718;0
+-1521;805;6718;0
+-1512;813;6718;0
+-1503;822;6718;0
+-1494;831;6718;0
+-1484;839;6718;0
+-1474;848;6718;0
+-1463;857;6718;0
+-1451;866;6718;0
+-1439;874;6718;0
+-1426;883;6718;0
+-1412;891;6718;0
+-1398;899;6718;0
+-1384;908;6718;0
+-1368;916;6718;0
+-1353;924;6718;0
+-1337;933;6718;0
+-1320;941;6718;0
+-1304;950;6718;0
+-1287;958;6718;0
+-1271;967;6718;0
+-1254;975;6718;0
+-1238;984;6718;0
+-1221;992;6718;0
+-1205;1000;6718;0
+-1188;1009;6718;0
+-1172;1017;6718;0
+-1156;1025;6718;0
+-1141;1034;6718;0
+-1125;1042;6718;0
+-1110;1050;6718;0
+-1095;1058;6718;0
+-1080;1066;6718;0
+-1066;1074;6718;0
+-1051;1081;6718;0
+-1037;1088;6718;0
+-1023;1094;6718;0
+-1010;1100;6718;0
+-998;1106;6718;0
+-986;1112;6718;0
+-974;1116;6718;0
+-963;1120;6718;0
+-953;1124;6718;0
+-943;1127;6718;0
+-933;1129;6718;0
+-924;1131;6718;0
+-914;1132;6718;0
+-905;1132;6718;0
+-896;1132;6718;0
+-887;1132;6718;0
+-879;1132;6718;0
+-871;1132;6718;0
+-864;1132;6718;0
+-858;1132;6718;0
+-852;1132;6718;0
+-847;1132;6718;0
+-842;1132;6718;0
+-837;1132;6718;0
+-831;1132;6718;0
+-826;1132;6718;0
+-821;1132;6718;0
+-816;1132;6718;0
+-810;1132;6718;0
+-804;1132;6718;0
+-797;1132;6718;0
+-790;1132;6718;0
+-782;1132;6718;0
+-773;1132;6718;0
+-763;1132;6718;0
+-752;1132;6718;0
+-740;1132;6718;0
+-726;1132;6718;0
+-710;1132;6718;0
+-693;1132;6718;0
+-676;1132;6718;0
+-657;1132;6718;0
+-638;1132;6718;0
+-619;1132;6718;0
+-601;1132;6718;0
+-582;1132;6718;0
+-564;1132;6718;0
+-547;1132;6718;0
+-530;1132;6718;0
+-513;1132;6718;0
+-497;1132;6718;0
+-482;1132;6718;0
+-467;1132;6718;0
+-453;1132;6718;0
+-439;1132;6718;0
+-426;1132;6718;0
+-414;1132;6718;0
+-402;1132;6718;0
+-390;1132;6718;0
+-377;1132;6718;0
+-364;1132;6718;0
+-351;1132;6718;0
+-337;1132;6718;0
+-324;1132;6718;0
+-310;1132;6718;0
+-297;1132;6718;0
+-284;1132;6718;0
+-272;1132;6718;0
+-260;1132;6718;0
+-249;1132;6718;0
+-238;1132;6718;0
+-228;1132;6718;0
+-217;1132;6718;0
+-206;1132;6718;0
+-196;1132;6718;0
+-186;1132;6718;0
+-176;1132;6718;0
+-166;1132;6718;0
+-155;1132;6718;0
+-146;1132;6718;0
+-136;1132;6718;0
+-127;1132;6718;0
+-118;1132;6718;0
+-110;1132;6718;0
+-102;1132;6718;0
+-94;1132;6718;0
+-86;1132;6718;0
+-78;1132;6718;0
+-71;1132;6718;0
+-63;1132;6718;0
+-56;1132;6718;0
+-49;1132;6718;0
+-42;1132;6718;0
+-36;1132;6718;0
+-29;1132;6718;0
+-23;1132;6718;0
+-16;1132;6718;0
+-10;1132;6718;0
+-4;1132;6718;0
+2;1132;6718;0
+8;1132;6718;0
+14;1132;6718;0
+20;1132;6718;0
+26;1132;6718;0
+31;1132;6718;0
+36;1132;6718;0
+41;1132;6718;0
+45;1132;6718;0
+48;1132;6718;0
+51;1132;6718;0
+53;1131;6718;0
+55;1131;6718;0
+57;1130;6718;0
+60;1130;6718;0
+62;1129;6718;0
+65;1128;6718;0
+68;1127;6718;0
+70;1125;6718;0
+73;1124;6718;0
+76;1122;6718;0
+79;1120;6718;0
+82;1118;6718;0
+84;1116;6718;0
+86;1114;6718;0
+88;1111;6718;0
+90;1109;6718;0
+92;1106;6718;0
+94;1103;6718;0
+95;1099;6718;0
+97;1096;6718;0
+99;1092;6718;0
+101;1089;6718;0
+103;1085;6718;0
+105;1081;6718;0
+107;1076;6718;0
+110;1072;6718;0
+112;1067;6718;0
+115;1062;6718;0
+118;1057;6718;0
+121;1051;6718;0
+125;1045;6718;0
+128;1039;6718;0
+132;1032;6718;0
+136;1025;6718;0
+141;1018;6718;0
+146;1011;6718;0
+151;1004;6718;0
+157;997;6718;0
+163;990;6718;0
+169;983;6718;0
+176;976;6718;0
+182;969;6718;0
+189;962;6718;0
+195;955;6718;0
+202;947;6718;0
+209;940;6718;0
+216;932;6718;0
+224;925;6718;0
+231;917;6718;0
+239;910;6718;0
+247;903;6718;0
+255;896;6718;0
+263;889;6718;0
+271;882;6718;0
+279;875;6718;0
+287;869;6718;0
+296;862;6718;0
+305;855;6718;0
+314;848;6718;0
+324;842;6718;0
+334;836;6718;0
+344;829;6718;0
+355;824;6718;0
+366;818;6718;0
+377;812;6718;0
+388;807;6718;0
+398;802;6718;0
+409;796;6718;0
+419;791;6718;0
+430;786;6718;0
+440;781;6718;0
+451;776;6718;0
+462;771;6718;0
+472;766;6718;0
+482;761;6718;0
+493;756;6718;0
+502;751;6718;0
+512;747;6718;0
+522;743;6718;0
+531;739;6718;0
+540;735;6718;0
+550;732;6718;0
+559;728;6718;0
+568;725;6718;0
+577;723;6718;0
+586;720;6718;0
+595;717;6718;0
+604;715;6718;0
+613;713;6718;0
+621;710;6718;0
+629;708;6718;0
+637;705;6718;0
+645;703;6718;0
+652;701;6718;0
+658;699;6718;0
+665;696;6718;0
+672;694;6718;0
+678;692;6718;0
+684;689;6718;0
+690;687;6718;0
+696;684;6718;0
+701;681;6718;0
+706;678;6718;0
+711;674;6718;0
+716;671;6718;0
+720;667;6718;0
+725;663;6718;0
+729;658;6718;0
+732;654;6718;0
+735;649;6718;0
+739;644;6718;0
+741;639;6718;0
+744;634;6718;0
+747;629;6718;0
+749;624;6718;0
+752;620;6718;0
+755;615;6718;0
+757;610;6718;0
+760;605;6718;0
+762;600;6718;0
+764;595;6718;0
+766;590;6718;0
+768;585;6718;0
+770;579;6718;0
+772;574;6718;0
+774;568;6718;0
+775;562;6718;0
+776;556;6718;0
+777;550;6718;0
+777;544;6718;0
+777;537;6718;0
+777;531;6718;0
+777;524;6718;0
+777;517;6718;0
+777;510;6718;0
+777;503;6718;0
+777;496;6718;0
+777;488;6718;0
+777;480;6718;0
+777;472;6718;0
+777;464;6718;0
+777;456;6718;0
+777;447;6718;0
+777;439;6718;0
+777;431;6718;0
+777;423;6718;0
+777;415;6718;0
+777;407;6718;0
+777;398;6718;0
+777;390;6718;0
+777;382;6718;0
+777;375;6718;0
+777;367;6718;0
+777;359;6718;0
+777;351;6718;0
+777;343;6718;0
+777;336;6718;0
+777;328;6718;0
+777;321;6718;0
+777;313;6718;0
+777;306;6718;0
+777;299;6718;0
+777;293;6718;0
+777;287;6718;0
+777;281;6718;0
+777;276;6718;0
+777;272;6718;0
+777;270;6718;0
+777;269;6718;0
diff --git a/deltarobot-test-server/mbServer.py b/deltarobot-test-server/mbServer.py
new file mode 100644
index 0000000..41e6fbc
--- /dev/null
+++ b/deltarobot-test-server/mbServer.py
@@ -0,0 +1,318 @@
+#!/usr/bin/env python
+"""
+Pymodbus Server With Updating Thread
+--------------------------------------------------------------------------
+
+This is an example of having a background thread updating the
+context while the server is operating. This can also be done with
+a python thread::
+
+    from threading import Thread
+
+    thread = Thread(target=updating_writer, args=(context,))
+    thread.start()
+"""
+# --------------------------------------------------------------------------- #
+# import the modbus libraries we need
+# --------------------------------------------------------------------------- #
+from pymodbus.server.asynchronous import StartTcpServer
+from pymodbus.device import ModbusDeviceIdentification
+from pymodbus.datastore import ModbusSequentialDataBlock
+from pymodbus.datastore import ModbusSlaveContext, ModbusServerContext
+
+# --------------------------------------------------------------------------- #
+# import the twisted libraries we need
+# --------------------------------------------------------------------------- #
+from twisted.internet.task import LoopingCall
+
+# --------------------------------------------------------------------------- #
+# configure the service logging
+# --------------------------------------------------------------------------- #
+import logging
+logging.basicConfig()
+log = logging.getLogger()
+log.setLevel(logging.ERROR)
+
+# random numbers
+import random
+
+# global constants
+
+# discrete input
+# poloha klicku
+BIT_BKEY = 32789
+# bezpecnostni tlacitko
+BIT_SAFETY_BTN = 32785
+
+# holding regs
+# aktualni poloha
+REG_X = 32768
+REG_Y = 32769
+REG_Z = 32770
+REG_A = 32771
+#pozice vektoru, kam se tlaci
+REG_ACT_X = 32772
+REG_ACT_Y = 32773
+REG_ACT_Z = 32774
+#pozice vektoru, kam se ma tlacit
+REG_DIR_X = 32776
+REG_DIR_Y = 32777
+REG_DIR_Z = 32778
+
+#data s krivkou
+REG_INDEX = 32867
+REG_LEN = 32866
+REG_DATA = 32868
+# data s kvalitou cviceni
+REG_Q_1 = 32780
+REG_Q_TOT = 32781
+REG_Q_PART = 32782
+
+#coils
+#info bity 
+BIT_RDY = 32871
+BIT_PC_TO_PLC = 32869
+BIT_PLC_TO_PC = 32870
+BIT_MEASUREMENT_TO_PC = 32874
+#posun motoru
+BIT_M_UP = 32788
+BIT_M_DOWN = 32789
+# uceni
+BIT_TEACH = 32780
+# reset pozice
+BIT_RESET_POS = 32769
+# prehravani naucene krivky
+BIT_BPLAY = 32772
+#cviceni naucene kriky
+BIT_BPLAY_ASSIST = 32773
+#priznak ukonceni jednoho cyklu
+BIT_PART_FINISHED = 32873
+#adresy pro testovaci zmenu DI
+BIT_BKEY_CHANGE = 32950
+BIT_SBTN_CHANGE = 32951
+#test stop coil
+BIT_STOP = 32838
+
+# modbus reg
+MB_CO = 1
+MB_DI = 2
+MB_HR = 3
+MB_IR = 4
+
+# --------------------------------------------------------------------------- #
+# define your callback process
+# --------------------------------------------------------------------------- #
+def prepareMbRegVals(values):
+    vals = []
+    for val in values:
+        if val < 0:
+            val = val & 0xFFFF
+        vals.append(val)
+    return vals
+
+def updating_writer(a,):
+    """ A worker process that runs every so often and
+    updates live values of the context. It should be noted
+    that there is a race condition for the update.
+
+    :param arguments: The input arguments to the call
+    """
+    global bit_teach, bit_play, bit_rdy, bit_data_change, bit_motor, learned_curve, index_curve, meas_array
+    global cycles_no, quality, array_pos
+
+    reset_pos = [0,0,4000]
+    
+    log.debug("updating the context")
+    context = a[0]
+    
+    
+    brdy = context[0].getValues(MB_CO, BIT_RDY, 1)
+    data_change = context[0].getValues(MB_CO, BIT_PC_TO_PLC, 2)
+    measurement_get = context[0].getValues(MB_CO, BIT_MEASUREMENT_TO_PC, 1)
+    motor = context[0].getValues(MB_CO, BIT_M_UP, 2)
+    bteach = context[0].getValues(MB_CO, BIT_TEACH, 1)
+    bplay = context[0].getValues(MB_CO, BIT_BPLAY, 2)
+
+    if (context[0].getValues(MB_CO, BIT_RESET_POS, 1) == [1]):
+        print("Position reset")
+        context[0].setValues(MB_CO, BIT_RESET_POS, [0])
+        context[0].setValues(MB_HR, REG_X, reset_pos)
+    if (bteach != bit_teach):
+        if (bteach == [1]):
+            bplay = [0, 0]
+            context[0].setValues(MB_CO, BIT_BPLAY, bplay)
+            learned_curve = []
+            array_pos = 0
+            f = open("curve.txt")
+            for line in f:
+                line.rstrip()
+                lineStr = line.split(";")
+                onePoint = [int(i) for i in lineStr]
+                learned_curve.extend(prepareMbRegVals(onePoint))
+                print(onePoint)
+            print(len(learned_curve)//4)
+        else:
+            index_curve = 0
+    if (motor != bit_motor):
+        if (motor[0] == 1):
+            context[0].setValues(MB_CO, BIT_STOP, [1])
+            print("Up")
+        elif (motor[1] == 1):
+            context[0].setValues(MB_CO, BIT_STOP, [1])
+            print("Down")
+        else:
+            context[0].setValues(MB_CO, BIT_STOP, [0])
+            print("Stop")
+    if (bit_data_change != data_change):
+        if (data_change == [0,0]):
+            brdy = [0]
+            context[0].setValues(MB_CO, BIT_RDY, brdy)
+    if (data_change[0] == 1):
+        if (bit_rdy != brdy) and (brdy == [1]):
+            val = context[0].getValues(MB_HR, REG_LEN, 2)
+            print("<- Len: " + str(val[0]) + ", Index: " + str(val[1]))
+            points = val[0]-val[1]
+            if (points > 25):
+                points = 25
+            learned_curve.extend(context[0].getValues(MB_HR, REG_DATA, points*4))
+            brdy = [0]
+            context[0].setValues(MB_CO, BIT_RDY, brdy)
+    if (data_change[0] != bit_data_change[0]):
+        if (data_change[0] == 0):
+            index_curve = 0
+            print("curve finish")
+        else:
+            bplay = [0, 0]
+            context[0].setValues(MB_CO, BIT_BPLAY, bplay)
+            learned_curve = []
+    if (data_change[1] == 1):
+        if (brdy == [0]):
+            index_to = index_curve + 25
+            if (len(learned_curve)-(index_curve*4) < 100):
+                index_to = len(learned_curve)//4
+            context[0].setValues(MB_HR, REG_DATA, learned_curve[index_curve*4:index_to*4])
+            brdy = [1]
+            context[0].setValues(MB_HR, REG_LEN, [len(learned_curve)//4])
+            context[0].setValues(MB_HR, REG_INDEX, [index_curve])
+            context[0].setValues(MB_CO, BIT_RDY, brdy)
+            print("-> Len: " + str(len(learned_curve)) + ", Index: " + str(index_curve) + ", to: " + str(index_to))
+            index_curve += 25
+            if (index_curve*4 > len(learned_curve)):
+                context[0].setValues(MB_CO, BIT_PLC_TO_PC, [0])
+                index_curve = 0
+    if (measurement_get == [1]):
+        if (brdy == [0]):
+            index_to = index_curve + 10
+            if (len(meas_array)-(index_curve*10) < 100):
+                index_to = len(meas_array)//10
+            context[0].setValues(MB_HR, REG_DATA, meas_array[index_curve*10:index_to*10])
+            brdy = [1]
+            context[0].setValues(MB_HR, REG_LEN, [len(meas_array)//10])
+            context[0].setValues(MB_HR, REG_INDEX, [index_curve])
+            context[0].setValues(MB_CO, BIT_RDY, brdy)
+            print("-> Len: " + str(len(meas_array)) + ", Index: " + str(index_curve) + ", to: " + str(index_to))
+            index_curve += 10
+            if (index_curve*10 > len(learned_curve)):
+                context[0].setValues(MB_CO, BIT_MEASUREMENT_TO_PC, [0])
+                index_curve = 0
+            print("measure")
+    if (bplay != bit_play):
+        cycles_no = 0
+        array_pos = 0
+        quality = [0,0,0]
+    if (bit_play[1] == 1):
+        onePoint = learned_curve[array_pos*4:array_pos*4+3]
+        context[0].setValues(MB_HR, REG_X, onePoint)
+        
+        values = [random.randint(-500,500),random.randint(-500,500),random.randint(-200,200),0]
+        onePoint = prepareMbRegVals(values)
+        context[0].setValues(MB_HR, REG_ACT_X, onePoint)
+        values = [random.randint(-200,200),random.randint(-200,200),random.randint(-70,70),0]
+        onePoint = prepareMbRegVals(values)
+        context[0].setValues(MB_HR, REG_DIR_X, onePoint)
+        cycles_no += 1
+        array_pos += 3
+        if (array_pos*4 > len(learned_curve)):
+            array_pos = 0
+        if (array_pos == 0):
+            quality[0] = (random.randint(45,100));
+            context[0].setValues(MB_CO, BIT_PART_FINISHED, [1])
+        if (cycles_no%25 == 0):
+            quality[1] = (random.randint(45,100));
+        quality[2] = (random.randint(45,100));
+        context[0].setValues(MB_HR, REG_Q_1, quality)
+    else:
+        if (bteach == [1]):
+            #learned_curve.extend(onePoint);
+            onePoint = learned_curve[array_pos*4:array_pos*4+4]
+            context[0].setValues(MB_HR, REG_X, onePoint)
+            array_pos += 8
+            if (array_pos > len(learned_curve)//4):
+                context[0].setValues(MB_CO, BIT_TEACH, [0])
+        else:
+            values = [random.randint(-1000,1000),random.randint(-1000,1000),random.randint(5000,8000),0]
+            onePoint = prepareMbRegVals(values)
+            context[0].setValues(MB_HR, REG_X, onePoint)
+            context[0].setValues(MB_HR, REG_X, reset_pos)
+    
+    #test: set input register using testing coils
+    #bkey_change = context[0].getValues(MB_CO, BIT_BKEY_CHANGE, 2)
+    bkey_change = [1,1]
+    context[0].setValues(MB_DI, BIT_BKEY, [bkey_change[0]])
+    context[0].setValues(MB_DI, BIT_SAFETY_BTN, [bkey_change[1]])
+        
+    bit_rdy = brdy
+    bit_data_change = data_change
+    bit_motor = motor
+    bit_teach = bteach
+    bit_play = bplay
+
+def run_updating_server():
+    # ----------------------------------------------------------------------- # 
+    # initialize your data store
+    # ----------------------------------------------------------------------- # 
+    
+    store = ModbusSlaveContext(
+        di=ModbusSequentialDataBlock(32768, [0]*200),
+        co=ModbusSequentialDataBlock(32768, [0]*200),
+        hr=ModbusSequentialDataBlock(32768, [0]*200),
+        ir=ModbusSequentialDataBlock(32768, [0]*200),zero_mode=True)
+    context = ModbusServerContext(slaves=store, single=True)
+
+    store.setValues(MB_DI, BIT_SAFETY_BTN, [1])
+    store.setValues(MB_DI, BIT_BKEY, [1])
+    # ----------------------------------------------------------------------- # 
+    # initialize the server information
+    # ----------------------------------------------------------------------- # 
+    identity = ModbusDeviceIdentification()
+    identity.VendorName = 'pymodbus'
+    identity.ProductCode = 'PM'
+    identity.VendorUrl = 'http://github.com/bashwork/pymodbus/'
+    identity.ProductName = 'pymodbus Server'
+    identity.ModelName = 'pymodbus Server'
+    identity.MajorMinorRevision = '1.0'
+
+    # ----------------------------------------------------------------------- # 
+    # run the server you want
+    # ----------------------------------------------------------------------- # 
+    time = 0.333  # 333 mseconds delay
+    loop = LoopingCall(f=updating_writer, a=(context,))
+    loop.start(time, now=False) # initially delay by time
+    StartTcpServer(context, identity=identity, address=("localhost", 1502))
+
+
+bit_teach = 0
+bit_rdy = [0]
+bit_data_change = [0,0]
+bit_motor = [0,0]
+bit_play = [0,0]
+learned_curve = []
+index_curve = 0
+cycles_no = 0
+array_pos = 0
+quality = [0,0,0]
+# array with measurement values created #
+meas_array = [(j) for j in range(270)]
+
+if __name__ == "__main__":
+    run_updating_server()
diff --git a/deltarobot-test-server/modbus_server_instruction.txt b/deltarobot-test-server/modbus_server_instruction.txt
new file mode 100644
index 0000000..7a1c2f9
--- /dev/null
+++ b/deltarobot-test-server/modbus_server_instruction.txt
@@ -0,0 +1,4 @@
+ - modbus server běží na IP adrese: 127.0.0.1:1502
+ - server vyžaduje instalaci pymodbus a twisto balíčků
+ - Qt aplikace se dokáže k serveru připojit po nastavení IP adresy v konstruktoru
+    mainwindow.cpp - "serverIp"
diff --git a/deltarobot-vr/ProjectSettings/ProjectVersion.txt b/deltarobot-vr/ProjectSettings/ProjectVersion.txt
index 4db0bd0..6830e2a 100644
--- a/deltarobot-vr/ProjectSettings/ProjectVersion.txt
+++ b/deltarobot-vr/ProjectSettings/ProjectVersion.txt
@@ -1,2 +1,2 @@
-m_EditorVersion: 2020.3.0f1
-m_EditorVersionWithRevision: 2020.3.0f1 (c7b5465681fb)
+m_EditorVersion: 2020.3.1f1
+m_EditorVersionWithRevision: 2020.3.1f1 (77a89f25062f)
diff --git a/deltarobot/mainwindow.cpp b/deltarobot/mainwindow.cpp
index 7d392da..2dcf62d 100644
--- a/deltarobot/mainwindow.cpp
+++ b/deltarobot/mainwindow.cpp
@@ -193,7 +193,7 @@ MainWindow::MainWindow(QWidget *parent) :
 
     QString stFname = qApp->applicationDirPath() + "/settings.ini";
     QSettings st(stFname, QSettings::IniFormat);
-    serverIp = st.value("serverIP","192.168.254.20:502").toString();
+    serverIp = st.value("serverIP","127.0.0.1:1502").toString(); //puvodni hodnota 192.168.254.20:502
     actCurveType = st.value("curveType", CURVE_NONE).toInt();
     actCurveFileName = st.value("curveFileName","").toString();
     minDistanceFromTarget = st.value("minDistance", 400).toInt();
