From 4836c94e6893a52340a77164940f3f1e029af5ea Mon Sep 17 00:00:00 2001 From: Patrick Hornecker Date: Mon, 28 Dec 2009 16:46:45 +0100 Subject: changes in receiver, sender and gui --- friendfinder/gui.c | 76 +++++++++++++++++++++++------------------------ friendfinder/gui.h | 7 ++++- friendfinder/handler.c | 11 +++++-- friendfinder/msg_sender.c | 32 ++++++-------------- friendfinder/receiver.c | 39 ++++++++++++++++-------- friendfinder/receiver.h | 7 +++++ friendfinder/sender.c | 19 +++++++----- 7 files changed, 105 insertions(+), 86 deletions(-) (limited to 'friendfinder') diff --git a/friendfinder/gui.c b/friendfinder/gui.c index 0a39335..647ef28 100644 --- a/friendfinder/gui.c +++ b/friendfinder/gui.c @@ -6,9 +6,9 @@ #include "Elementary.h" #include "msg_sender.h" +#include "receiver.h" #include "gui.h" #include "handler.h" -#include "receiver.h" #include "sender.h" int h= 600; @@ -20,7 +20,7 @@ time_t now; const char* msg_text; char *from, *to, *current_msg, *last_msg; -static Evas_Object *win, *bbx; +static Evas_Object *win, *bbx, *map; static void on_cancel(void *data, Evas_Object *obj, void *event_info) { @@ -168,6 +168,14 @@ char* get_current_time() return text; } +void print_users(struct position *pos) +{ + Evas_Object *ic; + + elm_icon_add(map); + elm_icon_file_set(ic, "data/sl_bt_0.png", NULL); + evas_object_show(ic); +} /* sets the username, time-text and the text in the bubble */ void set_bubble_text(Evas_Object *bb, char *username, char *text) @@ -302,29 +310,29 @@ void init_options() init_toolbar(bg); bx = elm_box_add(win); - evas_object_size_hint_weight_set(bx, 1.0, 1.0); + evas_object_size_hint_weight_set(bx, 1.0, 0.2); evas_object_size_hint_align_set(bx, -1.0, -1.0); evas_object_resize(bx, w, h); evas_object_show(bx); bx2 = elm_box_add(win); elm_box_horizontal_set(bx2, 1); - evas_object_size_hint_weight_set(bx2, 1.0, 0.0); + evas_object_size_hint_weight_set(bx2, 1.0, 1.0); evas_object_size_hint_align_set(bx2, -1.0, -1.0); elm_box_pack_end(bx, bx2); evas_object_show(bx2); - +/* bt = elm_button_add(win); elm_button_label_set(bt, "Find friends"); - evas_object_size_hint_weight_set(bt, 1.0, 0.0); + evas_object_size_hint_weight_set(bt, 1.0, 0.2); evas_object_size_hint_align_set(bt, -1.0, -1.0); elm_box_pack_end(bx, bt); evas_object_smart_callback_add(bt, "clicked", NULL, NULL); evas_object_show(bt); - +*/ bt2 = elm_button_add(win); elm_button_label_set(bt2, "Send own position"); - evas_object_size_hint_weight_set(bt2, 1.0, 0.0); + evas_object_size_hint_weight_set(bt2, 1.0, 0.2); evas_object_size_hint_align_set(bt2, -1.0, -1.0); elm_box_pack_end(bx, bt2); evas_object_smart_callback_add(bt2, "clicked", on_own_position, NULL); @@ -332,7 +340,7 @@ void init_options() bt3 = elm_button_add(win); elm_button_label_set(bt3, "Show other users"); - evas_object_size_hint_weight_set(bt3, 1.0, 0.0); + evas_object_size_hint_weight_set(bt3, 1.0, 0.2); evas_object_size_hint_align_set(bt3, -1.0, -1.0); elm_box_pack_end(bx, bt3); evas_object_smart_callback_add(bt3, "clicked", on_show_users, NULL); @@ -341,7 +349,7 @@ void init_options() void init_map() { - Evas_Object *bg, *bx, *bx2, *bx3, *map, *bt1, *bt2, *bt3; + Evas_Object *bg, *bx, *bx2, *bx3, *bt; /* add a standard bg */ bg = elm_bg_add(win); @@ -359,9 +367,9 @@ void init_map() evas_object_show(bx); bx2 = elm_box_add(win); - evas_object_size_hint_weight_set(bx2, 1.0, 0.0); + evas_object_size_hint_weight_set(bx2, 0.5, 0.2); evas_object_size_hint_align_set(bx2, -1.0, -1.0); - evas_object_resize(bx2, w*1.3, h*0.7); + evas_object_resize(bx2, w*1.3, h*0.5); elm_box_pack_end(bx, bx2); evas_object_show(bx2); @@ -369,41 +377,31 @@ void init_map() elm_box_horizontal_set(bx2, 1); evas_object_size_hint_weight_set(bx3, 1.0, 0.0); evas_object_size_hint_align_set(bx3, -1.0, 0.0); - evas_object_resize(bx3, w*0.9, h*0.2); + evas_object_resize(bx3, w*0.9, h*0.1); elm_box_pack_end(bx, bx3); evas_object_show(bx3); map = e_smart_map_add(win, "data/maps/fr_map.eet"); e_smart_map_set_pos(map, 47.996578,7.840171); - evas_object_size_hint_min_set(map, w-2*8, h-10*8-40); - evas_object_size_hint_max_set(map, w-2*8, h-10*8-40); - //evas_object_resize(map, w*0.92, h*0.7); + evas_object_size_hint_min_set(map, w-2*8, h-10*8-60); + evas_object_size_hint_max_set(map, w-2*8, h-10*8-120); +// evas_object_resize(map, w, h*0.7); elm_box_pack_end(bx2, map); - evas_object_show(map); +// evas_object_show(map); - bt1 = elm_button_add(win); - elm_button_label_set(bt1, "Show friends"); - evas_object_size_hint_weight_set(bt1, 1.0, 1.0); - evas_object_size_hint_align_set(bt1, -1.0, -1.0); - elm_box_pack_end(bx3, bt1); - evas_object_smart_callback_add(bt1, "clicked", NULL, NULL); - evas_object_show(bt1); - - bt2 = elm_button_add(win); - elm_button_label_set(bt2, "Hide friends"); - evas_object_size_hint_weight_set(bt2, 1.0, 1.0); - evas_object_size_hint_align_set(bt2, -1.0, -1.0); - elm_box_pack_end(bx3, bt2); - evas_object_smart_callback_add(bt2, "clicked", NULL, NULL); - evas_object_show(bt2); + Evas_Object *ic; - bt3 = elm_button_add(win); - elm_button_label_set(bt3, "Exit"); - evas_object_size_hint_weight_set(bt3, 1.0, 1.0); - evas_object_size_hint_align_set(bt3, -1.0, -1.0); - elm_box_pack_end(bx3, bt3); - evas_object_smart_callback_add(bt3, "clicked", on_cancel, NULL); - evas_object_show(bt3); + elm_icon_add(map); + elm_icon_file_set(ic, "data/sl_bt_0.png", NULL); +// evas_object_show(ic); + + bt = elm_button_add(win); + elm_button_label_set(bt, "Exit"); + evas_object_size_hint_weight_set(bt, 1.0, 1.0); + evas_object_size_hint_align_set(bt, -1.0, -1.0); + elm_box_pack_end(bx3, bt); + evas_object_smart_callback_add(bt, "clicked", on_cancel, NULL); + evas_object_show(bt); } void init_buttons(Evas_Object *box) diff --git a/friendfinder/gui.h b/friendfinder/gui.h index fec52e2..67235c3 100644 --- a/friendfinder/gui.h +++ b/friendfinder/gui.h @@ -1,10 +1,13 @@ #ifndef __GUI_H_ #define __GUI_H_ +#include "receiver.h" +#include "Evas.h" //structs //typedef struct _ginfo ginfo; //callback functions +/* static void on_cancel(void *data, Evas_Object *obj, void *event_info); static void on_send_message(void *data, Evas_Object *obj, void *event_info); static void on_own_position(void *data, Evas_Object *obj, void *event_info); @@ -13,12 +16,14 @@ static void on_message(void *data, Evas_Object *obj, void *event_info); static void on_options(void *data, Evas_Object *obj, void *event_info); static void on_chat(void *data, Evas_Object *obj, void *event_info); static void on_map(void *data, Evas_Object *obj, void *event_info); - +*/ //other functions void set_bubble_text(Evas_Object *bb, char *username, char *text); void show_message(char *current_msg); char* get_current_time(); +void print_users(struct position* pos); + //init functions void init_options(); void init_window_parts(); diff --git a/friendfinder/handler.c b/friendfinder/handler.c index 8d15ed7..fad9b8b 100644 --- a/friendfinder/handler.c +++ b/friendfinder/handler.c @@ -15,19 +15,26 @@ void init_msg_thread(char *from, char *to) nicknames->to = to; pthread_create(&msg_thread, NULL, msg_main_loop, (void*) nicknames); + + printf("HANDLER: msg thread init...\n"); } void init_receiver_thread(char *from) { - pthread_create(&sender_thread, NULL, sender_main, (void*) from); + pthread_create(&receiver_thread, NULL, receiver_main, (void*) from); + + printf("HANDLER: receiver thread init...\n"); } void init_sender_thread(char *from) { - pthread_create(&receiver_thread, NULL, receiver_main, (void*) from); + pthread_create(&sender_thread, NULL, sender_main, (void*) from); + + printf("HANDLER: sender thread init...\n"); } void close_threads() { pthread_exit(NULL); + printf("HANDLER: all threads are closed...\n"); } diff --git a/friendfinder/msg_sender.c b/friendfinder/msg_sender.c index 4994ce2..e9b4d7a 100644 --- a/friendfinder/msg_sender.c +++ b/friendfinder/msg_sender.c @@ -16,7 +16,7 @@ char* received_msg; char* msg_to_send; irc_dcc_t dccid; -irc_dcc_t buddy_dccid; +irc_dcc_t buddy_dccid = 1; BF_KEY key; @@ -55,7 +55,6 @@ void set_txt_msg(char *msg) { if (msg != NULL) { - printf("input msg_sender: %s \n", msg); send_message(session, msg); } } @@ -67,13 +66,7 @@ void dump_message(char *msg) void dcc_recv_callback (irc_session_t * session, irc_dcc_t id, int status, void * ctx, const char * data, unsigned int length) { - - if( run_session = 0) - { - irc_run(session); - run_session = 1; - } - + printf("dcc_recv_callback() \n"); switch (status) { case LIBIRC_ERR_CLOSED: @@ -101,7 +94,6 @@ void dcc_recv_callback (irc_session_t * session, irc_dcc_t id, int status, void printf ("MSG_SENDER: DCC %d: error %s\n", id, irc_strerror(status)); break; } - irc_cmd_quit(session, "dcc_recv_callback: 99"); } int i = 0; @@ -119,22 +111,19 @@ void send_message(irc_session_t *session, char *msg) BF_ecb_encrypt(msg, crypted_msg, &key, BF_ENCRYPT); - if ( run_session == 0) + int i = irc_dcc_msg(session, buddy_dccid, crypted_msg); + + if (i == 0) { - irc_run(session); - run_session = 1; + printf("MSG_SENDER: message '%s' sent successful \n", msg); } - - irc_dcc_msg(session, buddy_dccid, crypted_msg); - //TODO: irc_cmd_quit an richtiger stelle einbauen und ablaufen checken!!! - irc_cmd_quit(session, "send_message()"); } else return; } void on_join(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count) { -// printf("on_join()\n"); + printf("on_join()\n"); char sender_name[90]; @@ -178,11 +167,10 @@ void on_channel(irc_session_t * session, const char * event, const char * origin buddy_dccid = atoi(params[1]); printf("MSG_SENDER: buddy_dccid: %d \n", buddy_dccid); } -// irc_cmd_quit(session, "continue"); } void on_dcc_req(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count) { -// printf("on_dcc_req()\n"); + printf("on_dcc_req()\n"); if(irc_dcc_accept (session, 1, 0, dcc_recv_callback) != 0) { printf("MSG_SENDER: ddc_chat_decline \n"); @@ -192,7 +180,6 @@ void on_dcc_req(irc_session_t * session, const char * event, const char * origin { printf("MSG_SENDER: dcc_chat_accepted \n"); } -// irc_cmd_quit(session, "continue"); } @@ -213,7 +200,6 @@ void msg_main_loop(void *nicknames) if (init_connection("127.0.0.1", nick_from) == 0) { printf("MSG_SENDER: connection succesfull\n"); + irc_run(session); } - - irc_run(session); } diff --git a/friendfinder/receiver.c b/friendfinder/receiver.c index 10a7d94..d50b9ff 100644 --- a/friendfinder/receiver.c +++ b/friendfinder/receiver.c @@ -5,6 +5,7 @@ #include #include "openssl/blowfish.h" +#include "gui.h" static irc_session_t *session; irc_callbacks_t callbacks; @@ -43,15 +44,16 @@ void disconnect_receiver() printf("RECEIVER: disconnected...\n"); } -char* dump_event (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count) +void dump_data(char* lat, char* lon, char* nick) { - char* msg = " "; - - //msg = params[2]; - //printf("%c: \n",params[2]); - - - return msg; + /* + struct postion *pos = (struct postion*) malloc(sizeof(struct position)); + pos->lat = lat; + pos->lon = lon; + pos->nick = nick; + + print_users(pos); + */ } void get_position(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count) @@ -60,9 +62,12 @@ void get_position(irc_session_t * session, const char * event, const char * orig char *decrypted_lat = (char*) malloc(sizeof(params[1])); char *decrypted_lon = (char*) malloc(sizeof(params[1])); + decrypted_lat = NULL; + decrypted_lon = NULL; + irc_target_get_nick(origin, sender_name, sizeof(sender_name)); - if (sender_name != NULL && strcmp(sender_name, "sender") == 1) + if (sender_name != NULL && strcmp(sender_name, "_s") == 1) { //first message is the ret param, which is needed for message decryption @@ -84,8 +89,13 @@ void get_position(irc_session_t * session, const char * event, const char * orig printf("RECEIVER: lon %s , origin: %s \n", decrypted_lon, sender_name); printf("====\n"); } - - //send an aknowledge to the sender (=sendername, to differ between multiple sender) + + if(decrypted_lon != NULL && decrypted_lat != NULL) + { + dump_data(decrypted_lat, decrypted_lon, sender_name); + decrypted_lon = NULL; + decrypted_lat = NULL; + } // if (strcmp(params[1], "128") != 0) { irc_cmd_msg(session, "#test", sender_name); @@ -101,7 +111,7 @@ void get_position(irc_session_t * session, const char * event, const char * orig void on_connect_receiver(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count) { - printf("on_connect_receiver"); + printf("RECEIVER: on_connect_receiver \n"); BF_set_key(&key, 5, "abcde"); irc_cmd_join(session, "#test", NULL); @@ -116,8 +126,11 @@ void receiver_main(void *user) callbacks.event_connect = on_connect_receiver; char *username = (char*) user; - + //TODO pointer zeigt immer auf gleiche variable....damit wird immer gleicher from wert genutzt und _r _s angehängt....fixen + strcat(username, "_r"); + init_connection_receiver("127.0.0.1", username); irc_run(session); + printf("done\n"); } diff --git a/friendfinder/receiver.h b/friendfinder/receiver.h index 2398cbc..bc3f9eb 100644 --- a/friendfinder/receiver.h +++ b/friendfinder/receiver.h @@ -1,6 +1,13 @@ #ifndef __GUI_H_ #define __GUI_H_ +struct position +{ + char *nick; + char *lat; + char *lon; +}; + /* calls main for receiver */ void receiver_main(void *user); diff --git a/friendfinder/sender.c b/friendfinder/sender.c index 3719ded..6652afb 100644 --- a/friendfinder/sender.c +++ b/friendfinder/sender.c @@ -23,7 +23,7 @@ int init_connection_sender(char* server_ip, char* user) printf("SENDER: initialising connection...\n"); session = irc_create_session(&callbacks); - int con = irc_connect(session, server_ip, 6667, NULL, user, user, user); + int con = irc_connect(session, server_ip, 6669, NULL, user, user, user); if (irc_is_connected(session) == 1) { @@ -68,7 +68,8 @@ void send_position(irc_session_t * session, const char * event, const char * ori { BF_set_key(&key, 5, "abcde"); - irc_cmd_join(session, "#test", NULL); + irc_cmd_join(session, "#test", NULL); + irc_cmd_msg(session, "#test", "connected"); } for(int i = 0; i < 2; i++) @@ -86,9 +87,6 @@ void send_position(irc_session_t * session, const char * event, const char * ori BF_ecb_encrypt(lat_char, crypted_lat, &key, BF_ENCRYPT); BF_ecb_encrypt(lon_char, crypted_lon, &key, BF_ENCRYPT); - - BF_ecb_encrypt(crypted_lat, lat_char, &key, BF_DECRYPT); - printf("self-test: %s \n", lat_char); int _x = irc_cmd_msg(session, "#test", crypted_lat); int _y = irc_cmd_msg(session, "#test", crypted_lon); @@ -124,7 +122,7 @@ void send_position(irc_session_t * session, const char * event, const char * ori void get_aknowledge(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count) { - if(strcmp(params[1], nick) == 0) + if(strcmp(params[1], "_r") > 0) { //use count variable, to count number of aknowledged positions! second number has to be twice as big, as the number of //for-runs in send_position @@ -150,9 +148,14 @@ void sender_main(void *user) callbacks.event_channel = get_aknowledge; char *username = (char*)user; + //TODO pointer zeigt immer auf gleiche variable....damit wird immer gleicher from wert genutzt und _r _s angehängt....fixen + strcat(username, "_s"); - init_connection_sender("127.0.0.1", username); + if (init_connection_sender("127.0.0.1", username) == 0) + { + printf("SENDER: connection succesfull...\n"); - irc_run(session); + irc_run(session); + } } -- cgit v1.2.3-55-g7522