From f695e6ca1918511b092aec28ae852e57cf9f8904 Mon Sep 17 00:00:00 2001 From: Sven Robertz <sven@cs.lth.se> Date: Wed, 14 Dec 2011 12:01:38 +0100 Subject: [PATCH] merged example: sending works --- examples/simple_java/thr_compile.sh | 6 +- examples/simple_java/thr_example.c | 125 ++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 examples/simple_java/thr_example.c diff --git a/examples/simple_java/thr_compile.sh b/examples/simple_java/thr_compile.sh index 53b9865..5779c8a 100644 --- a/examples/simple_java/thr_compile.sh +++ b/examples/simple_java/thr_compile.sh @@ -1,3 +1,5 @@ -gcc -o thr_encoder -L ../../lib/c -I . -I ../../lib/c thr_encoder.c gen/simple.c ../../lib/c/labcomm_thr_reader_writer.c ../../lib/c/ThrottleDrv/*.c -llabcomm +#gcc -o thr_encoder -L ../../lib/c -I . -I ../../lib/c thr_encoder.c gen/simple.c ../../lib/c/labcomm_thr_reader_writer.c ../../lib/c/ThrottleDrv/*.c -llabcomm -gcc -o thr_decoder -L ../../lib/c -I . -I ../../lib/c thr_decoder.c gen/simple.c ../../lib/c/labcomm_thr_reader_writer.c ../../lib/c/ThrottleDrv/*.c -llabcomm +#gcc -o thr_decoder -L ../../lib/c -I . -I ../../lib/c thr_decoder.c gen/simple.c ../../lib/c/labcomm_thr_reader_writer.c ../../lib/c/ThrottleDrv/*.c -llabcomm + +gcc -o thr_example -L ../../lib/c -I . -I ../../lib/c thr_example.c gen/simple.c ../../lib/c/labcomm_thr_reader_writer.c ../../lib/c/ThrottleDrv/*.c -llabcomm diff --git a/examples/simple_java/thr_example.c b/examples/simple_java/thr_example.c new file mode 100644 index 0000000..7575712 --- /dev/null +++ b/examples/simple_java/thr_example.c @@ -0,0 +1,125 @@ +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <labcomm_thr_reader_writer.h> +#include "gen/simple.h" +#include "ThrottleDrv/throttle_drv.h" + + +static int encode(int argc, char *argv[]) { + struct thr_chn_t *p_thr_chn = NULL; + struct labcomm_encoder *encoder; + int i, j; +// unsigned char dest_mac[ETH_ADR_SIZE] = {0x00, 0x09, 0x6b, 0x10, 0xf3, 0x80}; /* other host MAC address, hardcoded...... :-( */ + unsigned char dest_mac[ETH_ADR_SIZE] = {0x00, 0x09, 0x6b, 0xe3, 0x81, 0xbf}; /* other host MAC address, hardcoded...... :-( */ + unsigned char chn_id = 0x01; + unsigned short frag_size = 60; + unsigned short freq = 1000; /* milliseconds */ + + char *ifname = argv[1]; + char *dest_mac_str = argv[2]; + + if(parse_MAC_address(dest_mac_str, dest_mac)) { + printf("failed to parse dest MAC address\n"); + return 1; + } + + if (-1 == thr_init(ifname)) + { + printf("Throttle Init failure."); + } + else + { + p_thr_chn = thr_open_chn(dest_mac, chn_id, frag_size, freq, NULL); + encoder = labcomm_encoder_new(labcomm_thr_writer, p_thr_chn); + labcomm_encoder_register_simple_TwoInts(encoder); + labcomm_encoder_register_simple_IntString(encoder); + simple_IntString is; + is.x = 24; + is.s = "Hello, LabComm!"; + printf("Encoding IntString, x=%d, s=%s\n", is.x, is.s); + labcomm_encode_simple_IntString(encoder, &is); + + simple_TwoInts ti; + ti.a = 13; + ti.b = 37; + printf("Encoding TwoInts, a=%d, b=%d\n", ti.a, ti.b); + labcomm_encode_simple_TwoInts(encoder, &ti); + + //client_exit(fd); + } +} +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <labcomm_thr_reader_writer.h> +#include "gen/simple.h" +#include "ThrottleDrv/throttle_drv.h" + +static void handle_simple_TwoInts(simple_TwoInts *v,void *context) { + printf("Got TwoInts. a=%d, b=%d\n", v->a, v->b); +} + +static void handle_simple_IntString(simple_IntString *v,void *context) { + printf("Got IntString. x=%d, s=%s\n", v->x, v->s); +} + +static int decode(int argc, char *argv[]) { + struct thr_chn_t *p_thr_chn = NULL; + struct labcomm_decoder *decoder; + void *context = NULL; + int ret = 0; + unsigned char dest_mac[ETH_ADR_SIZE] = {0x06, 0x05, 0x04, 0x03, 0x02, 0x01}; /* other host MAC address, hardcoded...... :-( */ + unsigned char chn_id = 0x01; + unsigned short frag_size = 60; + unsigned short freq = 1000; /* milliseconds */ + unsigned char data[200]; + + char *ifname = argv[1]; + char *dest_mac_str = argv[2]; + + if(parse_MAC_address(dest_mac_str, dest_mac)) { + printf("failed to parse dest MAC address\n"); + return 1; + } + + if (-1 == thr_init(ifname)) + { + printf("Throttle Init failure."); + } + else + { + p_thr_chn = thr_open_chn(dest_mac, chn_id, frag_size, freq, labcomm_decoder_decode_one); + decoder = labcomm_decoder_new(labcomm_thr_reader, p_thr_chn); + if (!decoder) + { + printf("Failed to allocate decoder %s:%d\n", __FUNCTION__, __LINE__); + return 1; + } + labcomm_decoder_register_simple_TwoInts(decoder, handle_simple_TwoInts, context); + labcomm_decoder_register_simple_IntString(decoder, handle_simple_IntString, context); + + printf("Decoding:\n"); + do { + ret = thr_receive(p_thr_chn, data, decoder); + } while(-1 != ret); + { + printf("Throttle Send receive failure."); + } + printf("--- End Of File ---:\n"); + labcomm_decoder_free(decoder); + + //server_exit(fd); + } +} + +int main(int argc, char *argv[]) { + if(argc == 2) { + return decode(argc, argv); + } else if(argc == 3) { + return encode(argc, argv); + } else { + printf("Usage: \n For encoding ethN xx:xx:xx:xx:xx:xx\n For decoding ethN\n"); + return 1; + } +} -- GitLab