private void tsmiServerTest_Click(object sender, EventArgs e) { iRobot.Data.Struct6 testData = new Struct6(); // Test 1 testData.Wall = 1; // Test 2 testData.Voltage = 5000; // Test 3 testData.Current = 5000; // Test 4 testData.CliffLeft = 1; // Test 5 testData.CliffFrontLeft = 0; // Test 6 testData.CliffRight = 1; // Test 7 testData.CliffFrontRight = 0; // Test 8 testData.BumpersAndWheelDrops = 1 + 0 + 4 + 0; testData.BatteryTemperature = 22; string stringTestData = JsonConvert.SerializeObject(testData); this.SendTextData(stringTestData); this.LogMessage("Send test data to the server."); }
public Struct6 Foo(Struct5 v, ref Valuesa r, byte t, ref byte tr) { Struct6 ret = new Struct6(); String values = v.ToString() + " " + r.ToString() + " " + t.ToString() + " " + tr.ToString() + " " + "."; if (values != "112 25 216 241 192 138 -21480 225324986 -59" + "58788304505077400 2658617120903057130 486515128 -9446 8 51 51 .") { Console.WriteLine("Struct6 Foo(...): unexpected values: " + values); Fail(21); } r.Randomize(); tr += (byte)Randomizer(); ret.Randomize(); return(ret); }
/// <summary> /// On robot message handler. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void robot_OnMesage(object sender, BytesEventArgs e) { // Get the data. byte[] byteData = e.Message; // Convert it to sensor structure. Struct6 sensros = iRobot.Utils.ByteArrayToStructure <Struct6>(byteData); // Dump all the data. this.sensrosDump = sensros; // Convert the structure to JSON. //string serialSensors = JsonConvert.SerializeObject(sensros); // Send text data to the server. //this.SendTextData(serialSensors); // Log the event. this.LogMessage("Send data to the server."); // Draw the SCADA. //this.DrawSCADA(); }
private static void DumpMenus(string fileName) { if (File.Exists(fileName)) { LoadFuncNames(firmConsts.DFR_file); BinaryReader br = null; byte[] data; using (br = new BinaryReader(File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))) { data = br.ReadBytes((int)br.BaseStream.Length); } Queue <long> q = new Queue <long>(); List <long> resolved = new List <long>(); menus = new Dictionary <long, Struct6>(); elements = new Dictionary <long, Struct14>(); resolved.Add(0); uint addrOffset = firmConsts.Copy_Offset; foreach (var l in firmConsts.MenuRootList) { q.Enqueue(l); } while (q.Count > 0) { var addr = q.Dequeue(); var ss1 = string.Format("Addr 0x{0:X8}", addr); var s6 = new Struct6(data, addr, addrOffset); s6.ReadElements(data); resolved.Add(addr); menus.Add(addr, s6); foreach (var s14 in s6.menu_elements) { if (Array.IndexOf(firmConsts.MenuRootList, s14.menu_ptr) != -1) { } if (resolved.Contains(s14.menu_ptr) == false && q.Contains(s14.menu_ptr) == false) { if (s14.menu_ptr < firmConsts.Copy_To) { int az = 0; } var ss2 = string.Format("Menu 0x{0:X8} MenuEl 0x{1:X8} SubMenu 0x{2:X8}", addr, s14.mem_loc, s14.menu_ptr); q.Enqueue(s14.menu_ptr); } } } using (var sw = new StreamWriter(File.Open(fileName + ".menu.txt", FileMode.Create, FileAccess.Write, FileShare.ReadWrite))) { using (var sw2 = new StreamWriter(File.Open(fileName + ".menu_sym.idc", FileMode.Create, FileAccess.Write, FileShare.ReadWrite))) { sw2.WriteLine("#include <idc.idc>"); sw2.WriteLine("static MakeMenu(ref, txt, type) {"); sw2.WriteLine("\tMakeNameEx(ref, txt, 0 );"); sw2.WriteLine("\tif( type == 0) {"); sw2.WriteLine("\t\tMakeUnknown(ref, 0x20, 0 );"); sw2.WriteLine("\t\tMakeStructEx(ref, 0x20, \"Menu\");"); sw2.WriteLine("\t} else {"); sw2.WriteLine("\t\tMakeUnknown(ref, 0x10, 0 );"); sw2.WriteLine("\t\tMakeStructEx(ref, 0x10, \"MenuEl\");"); sw2.WriteLine("\t}"); sw2.WriteLine("}"); sw2.WriteLine("static main() {"); sw2.WriteLine(" Message(\"Menu Name: Start\\n\");"); foreach (var l in firmConsts.MenuRootList) { MenuDump(sw, sw2, "", l); } sw2.WriteLine("\tMessage(\"Menu Name: Done\\n\");"); sw2.WriteLine("}"); } } } }
static public void RunTests(MainApp This) { String values; Struct1 s1 = new Struct1(); Struct2 s2 = new Struct2(); Struct3 s3 = new Struct3(); Struct4 s4 = new Struct4(); Struct5 s5 = new Struct5(); Struct6 s6 = new Struct6(); Struct8 s8 = new Struct8(); Valuesa v = new Valuesa(); float f; double d; Object o; String s; Enumacek e; sbyte p1; byte p2; short p3; ushort p4; int p5; uint p6; long p7; ulong p8; s1.Randomize(); s2.Randomize(); s3.Randomize(); s4.Randomize(); s5.Randomize(); s6.Randomize(); s8.Randomize(); v.Randomize(); f = (float)Randomizer(); d = (float)Randomizer(); o = This; s = Randomizer().ToString(); e = Enumacek.Hali; p1 = (sbyte)Randomizer(); p2 = (byte)Randomizer(); p3 = (short)Randomizer(); p4 = (ushort)Randomizer(); p5 = (int)Randomizer(); p6 = (uint)Randomizer(); p7 = (long)Randomizer(); p8 = (ulong)Randomizer(); // set all fields This._s1 = s1; This._s2 = s2; This._s3 = s3; This._s4 = s4; This._s5 = s5; This._s6 = s6; This._s8 = s8; This._v = v; This._f = f; This._d = d; This._o = o; This._s = s; This._e = e; This._p1 = p1; This._p2 = p2; This._p3 = p3; This._p4 = p4; This._p5 = p5; This._p6 = p6; This._p7 = p7; This._p8 = p8; values = This.ToString(); if (values != "9 104 225 80 57 184 17 160 105 8 65 240 153 88 113 931407168" + " 201 168 161 144 249 248 209 224 41 20808 639653377 -9016159779942285264" + " -7525944817302140071 1480724632 6961 128 -6.583926E+18 2.21297372164627E+18" + " MainApp -5893266573950244255 Hali -48 185 -16072 17297 -994209504 2046869481" + " 1703311890815005320 1413371402307118785 .") { Console.WriteLine("SetFields: unexpected values: " + values); Fail(101); } Console.WriteLine("Field setters succeeded"); // invoke the methods p1 = This.Foo(p1); p2 = This.Foo(p2); p3 = This.Foo(p3); p4 = This.Foo(p4); p5 = This.Foo(p5); p6 = This.Foo(p6); p7 = This.Foo(p7); p8 = This.Foo(p8); // verify the values of all fields values = p1.ToString() + " " + p2.ToString() + " " + p3.ToString() + " " + p4.ToString() + " " + p5.ToString() + " " + p6.ToString() + " " + p7.ToString() + " " + p8.ToString() + " " + "."; if (values != "-96 114 -32144 34594 -19884190" + "08 4093738962 3406623781630010640 2826742804614237570 .") { Console.WriteLine("Locals after primitive Invoke: unexpected values: " + values); Fail(102); } s1 = This.Foo(s2, ref s3, p1, ref p1); s2 = This.Foo(ref s4, s3, p3, ref p3); s3 = This.Foo(s4, ref s5, p5, ref p5); s4 = This.Foo(ref s8, s5, p7, ref p7); s5 = This.Foo(s8, ref v, p2, ref p2); s6 = This.Foo(s5, ref v, p2, ref p2); s8 = This.Foo(ref f, v, p4, ref p4); v = This.Foo(f, ref d, p6, ref p6); f = This.Foo(ref s1, d, p8, ref p8); d = This.Foo(ref s2, s1, s, ref s); // verify the values of all fields values = This.ToString(); if (values != "9 104 225 80 57 184 17 160 105 8 65 240 " + "153 88 113 931407168 201 168 161 144 249 248 209 224 41 20808 639653377 -9016159" + "779942285264 -7525944817302140071 1480724632 6961 128 -6.583926E+18 2.2129737216" + "4627E+18 MainApp -5893266573950244255 Hali -48 185 -16072 17297 -994209504 20468" + "69481 1703311890815005320 1413371402307118785 .") { Console.WriteLine("Fields after Invoke: unexpected values: " + values); Fail(103); } // verify the values of all locals values = s1.ToString() + " " + s2.ToString() + " " + s3.ToString() + " " + s4.ToString() + " " + s5.ToString() + " " + s6.ToString() + " " + s8.ToString() + " " + v.ToString() + " " + f.ToString() + " " + d.ToString() + " " + o.GetType().ToString() + " " + s.ToString() + " " + e.ToString() + " " + p1.ToString() + " " + p2.ToString() + " " + p3.ToString() + " " + p4.ToString() + " " + p5.ToString() + " " + p6.ToString() + " " + p7.ToString() + " " + p8.ToString() + " " + "."; if (values != "170 233 145 161 144 249 49 128 137 232 1" + "12 25 216 241 192 263746504 217 24 177 0 9 104 225 80 17 7072 -1278944919 567925" + "9233286952200 964207834727950401 -272742416 14745 88 -7.848656E+18 3.16790391993" + "929E+18 MainApp -5893266573950244255 Hali -16 220 21112 49618 -153164056 1655108" + "490 -374121548284004952 17419808404417595330 .") { Console.WriteLine("Locals after Invoke: unexpected values: " + values); Fail(104); } Console.WriteLine("Method invokes succeeded"); // get all fields s1 = This._s1; s2 = This._s2; s3 = This._s3; s4 = This._s4; s5 = This._s5; s6 = This._s6; s8 = This._s8; v = This._v; f = This._f; d = This._d; o = This._o; s = This._s; e = This._e; p1 = This._p1; p2 = This._p2; p3 = This._p3; p4 = This._p4; p5 = This._p5; p6 = This._p6; p7 = This._p7; p8 = This._p8; // verify the values of all locals values = s1.ToString() + " " + s2.ToString() + " " + s3.ToString() + " " + s4.ToString() + " " + s5.ToString() + " " + s6.ToString() + " " + s8.ToString() + " " + v.ToString() + " " + f.ToString() + " " + d.ToString() + " " + o.GetType().ToString() + " " + s.ToString() + " " + e.ToString() + " " + p1.ToString() + " " + p2.ToString() + " " + p3.ToString() + " " + p4.ToString() + " " + p5.ToString() + " " + p6.ToString() + " " + p7.ToString() + " " + p8.ToString() + " " + "."; if (values != "9 104 225 80 57 184 17 160 105 8 65 240 153 88 113" + " 931407168 201 168 161 144 249 248 209 224 41 20808 639653377 -90161597799422852" + "64 -7525944817302140071 1480724632 6961 128 -6.583926E+18 2.21297372164627E+18 M" + "ainApp -5893266573950244255 Hali -48 185 -16072 17297 -994209504 2046869481 1703" + "311890815005320 1413371402307118785 .") { Console.WriteLine("GetFields: unexpected values: " + values); Fail(105); } Console.WriteLine("Field getters succeeded"); This.Foo(This, "O", "S", (float)Randomizer(), (double)Randomizer(), (float)Randomizer(), (double)Randomizer(), (float)Randomizer(), (double)Randomizer(), (long)Randomizer(), (long)Randomizer(), (long)Randomizer(), (long)Randomizer(), (long)Randomizer(), (long)Randomizer(), (sbyte)Randomizer(), (byte)Randomizer(), (short)Randomizer(), (ushort)Randomizer(), (int)Randomizer(), (uint)Randomizer(), (long)Randomizer(), (ulong)Randomizer(), (float)Randomizer(), (double)Randomizer(), (float)Randomizer(), (double)Randomizer(), (float)Randomizer(), (double)Randomizer()); }
public Struct6 Foo(Struct5 v, ref Valuesa r, byte t, ref byte tr) { Struct6 ret = new Struct6(); String values = v.ToString() + " " + r.ToString() + " " + t.ToString() + " " + tr.ToString() + " " + "."; if (values != "112 25 216 241 192 138 -21480 225324986 -59" + "58788304505077400 2658617120903057130 486515128 -9446 8 51 51 .") { Console.WriteLine("Struct6 Foo(...): unexpected values: " + values); Fail(21); } r.Randomize(); tr += (byte)Randomizer(); ret.Randomize(); return ret; }
public static extern bool SendMessage_3(IntPtr intptr_0, int int_20, int int_21, ref Struct6 struct6_0);
private static void DumpMenus(string fileName) { if (File.Exists(fileName)) { LoadFuncNames(firmConsts.DFR_file); BinaryReader br = null; byte[] data; using (br = new BinaryReader(File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))) { data = br.ReadBytes((int)br.BaseStream.Length); } Queue<long> q = new Queue<long>(); List<long> resolved = new List<long>(); menus = new Dictionary<long, Struct6>(); elements = new Dictionary<long, Struct14>(); resolved.Add(0); uint addrOffset = firmConsts.Copy_Offset; foreach (var l in firmConsts.MenuRootList) { q.Enqueue(l); } while (q.Count > 0) { var addr = q.Dequeue(); var ss1 = string.Format("Addr 0x{0:X8}", addr); var s6 = new Struct6(data, addr, addrOffset); s6.ReadElements(data); resolved.Add(addr); menus.Add(addr, s6); foreach (var s14 in s6.menu_elements) { if (Array.IndexOf(firmConsts.MenuRootList, s14.menu_ptr) != -1) { } if (resolved.Contains(s14.menu_ptr) == false && q.Contains(s14.menu_ptr) == false) { if (s14.menu_ptr < firmConsts.Copy_To) { int az = 0; } var ss2 = string.Format("Menu 0x{0:X8} MenuEl 0x{1:X8} SubMenu 0x{2:X8}", addr, s14.mem_loc, s14.menu_ptr); q.Enqueue(s14.menu_ptr); } } } using (var sw = new StreamWriter(File.Open(fileName + ".menu.txt", FileMode.Create, FileAccess.Write, FileShare.ReadWrite))) { using (var sw2 = new StreamWriter(File.Open(fileName + ".menu_sym.idc", FileMode.Create, FileAccess.Write, FileShare.ReadWrite))) { sw2.WriteLine("#include <idc.idc>"); sw2.WriteLine("static MakeMenu(ref, txt, type) {"); sw2.WriteLine("\tMakeNameEx(ref, txt, 0 );"); sw2.WriteLine("\tif( type == 0) {"); sw2.WriteLine("\t\tMakeUnknown(ref, 0x20, 0 );"); sw2.WriteLine("\t\tMakeStructEx(ref, 0x20, \"Menu\");"); sw2.WriteLine("\t} else {"); sw2.WriteLine("\t\tMakeUnknown(ref, 0x10, 0 );"); sw2.WriteLine("\t\tMakeStructEx(ref, 0x10, \"MenuEl\");"); sw2.WriteLine("\t}"); sw2.WriteLine("}"); sw2.WriteLine("static main() {"); sw2.WriteLine(" Message(\"Menu Name: Start\\n\");"); foreach (var l in firmConsts.MenuRootList) { MenuDump(sw, sw2, "", l); } sw2.WriteLine("\tMessage(\"Menu Name: Done\\n\");"); sw2.WriteLine("}"); } } } }