diff --git a/mc/.gitignore b/mc/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..199962005dde4a86cfb232bb22350c8c55d79b89 --- /dev/null +++ b/mc/.gitignore @@ -0,0 +1,5 @@ +/*.mc +/extctrl2014_lc.h +/extctrl2014_lc.c +/mc.globalize +/mc.globalize.c diff --git a/mc/Makefile b/mc/Makefile index 36df281d6fe9ad25df8f79ba36459d8e5b91844e..d77a88f0ff7cea977af84501bb286e0119121177 100644 --- a/mc/Makefile +++ b/mc/Makefile @@ -7,7 +7,8 @@ TARGETS=lth_fixes.mc \ hijacknet_test.mc \ extctrl2014_lc.mc AUTO_GEN=extctrl2014_lc.c \ - extctrl2014_lc.h + extctrl2014_lc.h \ + mc.globalize.c GLOBALIZE=netFuncs \ fei82557Int \ fei82557Send \ diff --git a/mc/README b/mc/README new file mode 100644 index 0000000000000000000000000000000000000000..c1d34e540ba959ad2ae60cff360d4e3e071f979a --- /dev/null +++ b/mc/README @@ -0,0 +1,3 @@ +make +make globalize ROBOT=yoda.b +make commands ROBOT=yoda.b diff --git a/mc/hijacknet_test.c b/mc/hijacknet_test.c new file mode 100644 index 0000000000000000000000000000000000000000..0d4ae8c8453f126add36857adb918a8b63ccde6e --- /dev/null +++ b/mc/hijacknet_test.c @@ -0,0 +1,55 @@ +#include <hijacknet.h> +#include <fppLib.h> +#include <stdio.h> +#include <string.h> + +static int N; +static struct { + int length; + unsigned char data[1520]; +} to_send; + +static int hook(HIJACKNET_DRIVER *driver, + void *data, int length, + void *context) +{ + FP_CONTEXT fp_context; + + fppSave(&fp_context); + N++; + if (to_send.length == 0) { + to_send.length = min(length, sizeof(to_send.data)); + memcpy(to_send.data, data, to_send.length); + } + fppRestore(&fp_context); + return length; +} + +int hijacknet_test(char *device) +{ + HIJACKNET_DRIVER *driver; + int result; + int i; + + printf("%s %d\n", device, N); + driver = hijacknet_open(device); + if (!driver) { + goto out; + } + result = hijacknet_add_receive_hook(driver, HIJACK_ANY_ETHER_TYPE, + hook, NULL); + for (i = 0 ; i < 10000 ; i++) { + if (to_send.length) { + to_send.data[0] = 0xff; + hijacknet_send(driver, to_send.data, to_send.length); + to_send.length = 0; + } + taskDelay(1); + } + result = hijacknet_del_receive_hook(driver, HIJACK_ANY_ETHER_TYPE, + hook, NULL); + printf("%s %d\n", device, N); + hijacknet_close(driver); +out: + return 0; +} diff --git a/mc/labcomm_compat.h b/mc/labcomm_compat.h new file mode 100644 index 0000000000000000000000000000000000000000..841103c8c104d7cbb48881eb5ea5c484be8e6a78 --- /dev/null +++ b/mc/labcomm_compat.h @@ -0,0 +1 @@ +#include <types.h>