summaryrefslogtreecommitdiffstats
path: root/friendfinder
diff options
context:
space:
mode:
authorPatrick Hornecker2010-02-14 16:47:11 +0100
committerPatrick Hornecker2010-02-14 16:47:11 +0100
commitd87ceaf676e137bffa3e6fb57ee3260a92db0f28 (patch)
tree0de81397eb0b529fd4c40ea886bb9b90cd59a4bd /friendfinder
parenttex source (diff)
downloadfriendfinder-d87ceaf676e137bffa3e6fb57ee3260a92db0f28.tar.gz
friendfinder-d87ceaf676e137bffa3e6fb57ee3260a92db0f28.tar.xz
friendfinder-d87ceaf676e137bffa3e6fb57ee3260a92db0f28.zip
improved sender and receiver
Diffstat (limited to 'friendfinder')
-rw-r--r--friendfinder/.gui.c.swobin0 -> 53248 bytes
-rw-r--r--friendfinder/.receiver.c.swnbin0 -> 32768 bytes
-rw-r--r--friendfinder/.receiver.c.swobin0 -> 16384 bytes
-rw-r--r--friendfinder/barcode.pngbin0 -> 235 bytes
-rwxr-xr-xfriendfinder/guibin202829 -> 203594 bytes
-rw-r--r--friendfinder/gui.c55
-rw-r--r--friendfinder/handler.c4
-rw-r--r--friendfinder/msg_sender.c12
-rw-r--r--friendfinder/receiver.c147
-rw-r--r--friendfinder/receiver.h1
-rw-r--r--friendfinder/sender.c57
-rw-r--r--friendfinder/sender.h1
12 files changed, 215 insertions, 62 deletions
diff --git a/friendfinder/.gui.c.swo b/friendfinder/.gui.c.swo
new file mode 100644
index 0000000..bc7927e
--- /dev/null
+++ b/friendfinder/.gui.c.swo
Binary files differ
diff --git a/friendfinder/.receiver.c.swn b/friendfinder/.receiver.c.swn
new file mode 100644
index 0000000..2061762
--- /dev/null
+++ b/friendfinder/.receiver.c.swn
Binary files differ
diff --git a/friendfinder/.receiver.c.swo b/friendfinder/.receiver.c.swo
new file mode 100644
index 0000000..bc7ecb3
--- /dev/null
+++ b/friendfinder/.receiver.c.swo
Binary files differ
diff --git a/friendfinder/barcode.png b/friendfinder/barcode.png
new file mode 100644
index 0000000..acceb0f
--- /dev/null
+++ b/friendfinder/barcode.png
Binary files differ
diff --git a/friendfinder/gui b/friendfinder/gui
index c4046d5..824959f 100755
--- a/friendfinder/gui
+++ b/friendfinder/gui
Binary files differ
diff --git a/friendfinder/gui.c b/friendfinder/gui.c
index 6e9f057..499b0c1 100644
--- a/friendfinder/gui.c
+++ b/friendfinder/gui.c
@@ -26,7 +26,7 @@ double current_lat = 47.996578;
double current_lon = 7.840171;
const char *msg_text, *key, *ip = NULL, *nickname = NULL, *partner_nickname = NULL;
-char *from = NULL, *to = NULL, *current_msg, *last_msg;
+char *from = NULL, *to = NULL, *number = NULL, *current_msg, *last_msg;
static Evas_Object *win, *bbx, *map, *img, *bcb;
@@ -489,8 +489,8 @@ void init_barcode()
void init_options()
{
- Evas_Object *bg, *bx, *bx2, *bx3, *bx4 ,*bt, *bt2, *bt3, *bt4, *bt5 ,*bt6;
- Evas_Object *en1, *sc1, *en2, *sc2, *en3, *sc3, *lb1, *lb2, *lb3;
+ Evas_Object *bg, *bx, *bx2, *bx3, *bx4, *bx5, *bt, *bt2, *bt3, *bt4, *bt5 ,*bt6, *bt7;
+ Evas_Object *en1, *sc1, *en2, *sc2, *en3, *sc3, *en4, *sc4, *lb1, *lb2, *lb3, *lb4;
/* add a standard bg */
bg = elm_bg_add(win);
@@ -514,7 +514,7 @@ void init_options()
evas_object_size_hint_weight_set(bx2, 1.0, 1.0);
evas_object_size_hint_align_set(bx2, -1.0, -1.0);
evas_object_resize(bx2, w*0.8, h*0.04);
- evas_object_move(bx2, w*0.1, h*0.25);
+ evas_object_move(bx2, w*0.1, h*0.2);
evas_object_show(bx2);
bx3 = elm_box_add(win);
@@ -522,7 +522,7 @@ void init_options()
evas_object_size_hint_weight_set(bx3, 1.0, 1.0);
evas_object_size_hint_align_set(bx3, -1.0, -1.0);
evas_object_resize(bx3, w*0.8, h*0.04);
- evas_object_move(bx3, w*0.1, h*0.35);
+ evas_object_move(bx3, w*0.1, h*0.3);
evas_object_show(bx3);
bx4 = elm_box_add(win);
@@ -530,9 +530,17 @@ void init_options()
evas_object_size_hint_weight_set(bx4, 1.0, 1.0);
evas_object_size_hint_align_set(bx4, -1.0, -1.0);
evas_object_resize(bx4, w*0.8, h*0.04);
- evas_object_move(bx4, w*0.1, h*0.45);
+ evas_object_move(bx4, w*0.1, h*0.4);
evas_object_show(bx4);
+ bx5 = elm_box_add(win);
+ elm_box_horizontal_set(bx5, 1);
+ evas_object_size_hint_weight_set(bx5, 1.0, 1.0);
+ evas_object_size_hint_align_set(bx5, -1.0, -1.0);
+ evas_object_resize(bx5, w*0.8, h*0.04);
+ evas_object_move(bx5, w*0.1, h*0.5);
+ evas_object_show(bx5);
+
bt = elm_button_add(win);
elm_button_label_set(bt, "Distance = 100 m");
evas_object_size_hint_weight_set(bt, 1.0, 1.0);
@@ -660,6 +668,41 @@ void init_options()
elm_box_pack_end(bx4, bt6);
evas_object_smart_callback_add(bt6, "clicked", set_partner_nickname, NULL);
evas_object_show(bt6);
+
+ /* enter number of visible sender */
+
+ sc4 = elm_scroller_add(win);
+ evas_object_size_hint_weight_set(sc4, 1.0, 1.0);
+ evas_object_size_hint_align_set(sc4, -1.0, -1.0);
+ elm_box_pack_end(bx5, sc4);
+
+ en4 = elm_entry_add(win);
+ evas_object_size_hint_weight_set(en4, 1.0, 1.0);
+ evas_object_size_hint_align_set(en4, 0.0, 0.0);
+ elm_scroller_content_set(sc4, en4);
+ evas_object_smart_callback_add(en4, "changed", NULL, NULL);
+ evas_object_show(en4);
+
+ if (number != NULL)
+ {
+ elm_entry_entry_set(en4, to);
+ }
+
+ lb4 = elm_label_add(win);
+ elm_label_label_set(lb4, "Visible sender");
+ elm_box_pack_end(bx5, lb4);
+ evas_object_show(lb4);
+
+ evas_object_show(sc4);
+
+ bt7 = elm_button_add(win);
+ elm_button_label_set(bt7, "Set visible sender");
+ evas_object_size_hint_weight_set(bt7, 1.0, 1.0);
+ evas_object_size_hint_align_set(bt7, -1.0, -1.0);
+ elm_box_pack_end(bx5, bt7);
+ evas_object_smart_callback_add(bt7, "clicked", NULL, NULL);
+ evas_object_show(bt7);
+
}
diff --git a/friendfinder/handler.c b/friendfinder/handler.c
index b1a6075..333ba87 100644
--- a/friendfinder/handler.c
+++ b/friendfinder/handler.c
@@ -51,5 +51,9 @@ void init_sender_thread(char *from)
void close_threads()
{
printf("HANDLER: all threads are closed...\n");
+
+ set_receiver_exit();
+ set_sender_exit();
+
exit(0);
}
diff --git a/friendfinder/msg_sender.c b/friendfinder/msg_sender.c
index 05d0010..9ef7fc6 100644
--- a/friendfinder/msg_sender.c
+++ b/friendfinder/msg_sender.c
@@ -46,13 +46,6 @@ int init_connection(char* server_ip, char* user)
}
}
-void disconnect_msg_sender()
-{
- irc_disconnect(session);
- irc_destroy_session(session);
- printf("MSG_SENDER: disconnected...\n");
-}
-
struct msg_part* prepare_msg(char *msg)
{
int len = strlen(msg);
@@ -81,7 +74,7 @@ struct msg_part* prepare_msg(char *msg)
if (len > 6 && len > 0)
{
- int i = 0, n = 0;
+ int i = 0;
while (i <= msg_p->part_count)
{
@@ -195,6 +188,9 @@ void on_connect(irc_session_t * session, const char * event, const char * origin
// printf("keyd->key %s :: keyd->key_length %i \n", keyd->key, keyd->key_length);
BF_set_key(&key, keyd->key_length - 1, keyd->key);
+
+ free(keyd->key);
+ free(keyd);
}
void on_channel(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
diff --git a/friendfinder/receiver.c b/friendfinder/receiver.c
index e1ab333..28018b0 100644
--- a/friendfinder/receiver.c
+++ b/friendfinder/receiver.c
@@ -12,6 +12,8 @@
static irc_session_t *session;
irc_callbacks_t callbacks;
+int _exit = 0;
+
char sender_name[100];
char own_nickname[100];
char *receiver_server_ip;
@@ -28,6 +30,11 @@ void receiver_set_ip(char *_ip)
receiver_server_ip = _ip;
}
+void set_receiver_exit()
+{
+ _exit = 1;
+}
+
int init_connection_receiver(char* server_ip, char* user)
{
printf("RECEIVER: initialising connection...\n");
@@ -49,11 +56,49 @@ int init_connection_receiver(char* server_ip, char* user)
}
}
-void disconnect_receiver()
+void disconnect_receiver(irc_session_t * session, const char * event, const char * origin, const unsigned char ** params, unsigned int count)
{
irc_disconnect(session);
- irc_destroy_session(session);
- printf("RECEIVER: disconnected...\n");
+ //irc_destroy_session(session);
+ char *sender_org = (char*) malloc(username_length + 1);
+
+ irc_target_get_nick(origin, sender_name, sizeof(sender_name));
+ if (strcmp(sender_name, own_nickname) == 0)
+ {
+ irc_disconnect(session);
+ //irc_destroy_session(session);
+
+ for (int i = 0; i < s_sender_size; i++)
+ {
+ free(s_sender[i]->nick);
+ free(s_sender[i]->lat);
+ free(s_sender[i]->lon);
+
+ free(s_sender[i]->is_init);
+ free(s_sender[i]->is_init);
+
+ free(s_sender[i]->lat_set);
+ free(s_sender[i]->lat_set);
+
+ free(s_sender[i]->lon_set);
+ free(s_sender[i]->lon_set);
+
+
+ free(s_sender[i]->lat_first);
+ free(s_sender[i]->lat_second);
+
+ free(s_sender[i]->lon_first);
+ free(s_sender[i]->lon_second);
+
+ free(s_sender[i]);
+
+ }
+
+ free(s_sender);
+
+ printf("RECEIVER: disconnected...\n");
+
+ }
}
int get_sender_array_pos(char* nick)
@@ -79,55 +124,74 @@ void repair_position(struct sender *_sender, unsigned char *decrypted)
{
if (decrypted[5] == 'a')
{
- _sender->lat_first = decrypted;
+ memcpy(_sender->lat_first, decrypted, sizeof(decrypted));
_sender->lat_first[5] = '\0';
_sender->lat_first_set = 1;
-
// return;
}
- if (decrypted[4] == 'b')
+ else if (decrypted[4] == 'b')
{
- _sender->lat_second = decrypted;
+ memcpy(_sender->lat_second, decrypted, sizeof(decrypted));
_sender->lat_second[4] = '\0';
_sender->lat_second_set = 1;
-
// return;
}
- if (decrypted[5] == 'c')
+ else if (decrypted[5] == 'c')
{
- _sender->lon_first = decrypted;
+ memcpy(_sender->lon_first, decrypted, sizeof(decrypted));
_sender->lon_first[5] = '\0';
_sender->lon_first_set = 1;
-
// return;
}
- if (decrypted[4] == 'd')
+ else if (decrypted[3] == 'd')
{
- _sender->lon_second = decrypted;
- _sender->lon_second[4] = '\0';
+ memcpy(_sender->lon_second, decrypted, sizeof(decrypted));
+ _sender->lon_second[3] = '\0';
_sender->lon_second_set = 1;
-
// return;
}
if (_sender->lat_first_set == 1 && _sender->lat_second_set == 1)
{
- _sender->lat = _sender->lat_first;
- strcat(_sender->lat, _sender->lat_second);
+ memcpy(_sender->lat, _sender->lat_first, sizeof(_sender->lat_first)); //FIXME IM A ANGRY SEGFAULT
+
+ strcat(_sender->lat, _sender->lat_second);//FIXME TOO
+
_sender->lat_set = 1;
+ _sender->lat_first_set = 0;
+ _sender->lat_second_set = 0;
+
+ _sender->lat_first[0] = '\0';
+ _sender->lat_second[0] = '\0';
+
+ // printf("lat: %s \n", _sender->lat);
+
+ // _sender->lat[0] = '\0';
}
if (_sender->lon_first_set == 1 && _sender->lon_second_set == 1)
{
- _sender->lon = _sender->lon_first;
- strcat(_sender->lon, _sender->lon_second);
+ memcpy(_sender->lon, _sender->lon_first, sizeof(_sender->lon_first));//FIXME ALSO PLEASE
+
+ strcat(_sender->lon, _sender->lon_second);//FIXME IS THE WORD OF THE HOUR
+
_sender->lon_set = 1;
+ _sender->lon_first_set = 0;
+ _sender->lon_second_set = 0;
+
+ _sender->lon_first[0] = '\0';
+ _sender->lon_second[0] = '\0';
+
+ // printf("lon: %s \n", _sender->lon);
+
+ // _sender->lat[0] = '\0';
}
}
+
void dump_data(char* lat, char* lon, char* nick)
{
struct position *pos = (struct position*) malloc(sizeof(struct position));
@@ -143,6 +207,9 @@ void get_position(irc_session_t * session, const char * event, const char * orig
unsigned char *decrypted;
char *sender_org = (char*) malloc(username_length + 1);
+
+// if (_exit == 1)
+// disconnect_receiver();
irc_target_get_nick(origin, sender_name, sizeof(sender_name));
strncpy(sender_org, sender_name, username_length);
@@ -160,7 +227,7 @@ void get_position(irc_session_t * session, const char * event, const char * orig
BF_ecb_encrypt(params[1], decrypted, &key, BF_DECRYPT);
decrypted[strlen(decrypted)] = '\0';
- printf("decrypted %s \n", decrypted);
+ // printf("decrypted %s \n", decrypted);
repair_position(s_sender[pos], decrypted);
@@ -173,19 +240,23 @@ void get_position(irc_session_t * session, const char * event, const char * orig
BF_ecb_encrypt(params[1], decrypted, &key, BF_DECRYPT);
decrypted[strlen(decrypted)] = '\0';
- printf("decrypted %s \n", decrypted);
+ // printf("decrypted %s \n", decrypted);
repair_position(s_sender[pos], decrypted);
free(decrypted);
}
-
+
if(s_sender[pos]->lon_set == 1 && s_sender[pos]->lat_set == 1)// && lon != NULL && lat != NULL)
{
double _lat, _lon;
_lat = atof(s_sender[pos]->lat);
_lon = atof(s_sender[pos]->lon);
-
+
+ printf("%f %f \n", _lat, _lon);
+
+ printf("char lat: %s char lon: %s \n", s_sender[pos]->lat, s_sender[pos]->lon);
+
if (_lat > _lon && _lat == _lat && _lon == _lon)
{
dump_data(s_sender[pos]->lat, s_sender[pos]->lon, s_sender[pos]->nick);
@@ -198,10 +269,11 @@ void get_position(irc_session_t * session, const char * event, const char * orig
s_sender[pos]->lon_set = 0;
s_sender[pos]->lat_set = 0;
-
- free(sender_org);
+ // s_sender[pos]->lat = '\0';
+ // s_sender[pos]->lon = '\0';
}
-
+ free(sender_org);
+
irc_cmd_msg(session, "#test", "ack");
}
}
@@ -216,24 +288,27 @@ void init_sender_struct(int number)
s_sender[i] = (struct sender*) malloc(sizeof(struct sender));
s_sender[i]->nick = (char*) malloc(sizeof(char) * 20);
- s_sender[i]->lat = (char*) malloc(sizeof(char) * 8);
- s_sender[i]->lon = (char*) malloc(sizeof(char) * 8);
+ s_sender[i]->lat = (char*) malloc(sizeof(char) * 9);
+ s_sender[i]->lon = (char*) malloc(sizeof(char) * 9);
s_sender[i]->is_init = (int) malloc(sizeof(int));
s_sender[i]->is_init = 0;
- s_sender[i]->lat_set = (int) malloc(sizeof(int));
+ //s_sender[i]->lat_set = (int) malloc(sizeof(int));
s_sender[i]->lat_set = 0;
- s_sender[i]->lon_set = (int) malloc(sizeof(int));
+ //s_sender[i]->lon_set = (int) malloc(sizeof(int));
s_sender[i]->lon_set = 0;
- s_sender[i]->lat_first = (char*) malloc(sizeof(char) * 5);
- s_sender[i]->lat_second = (char*) malloc(sizeof(char) * 5);
+ s_sender[i]->lat_first = (char*) malloc(sizeof(char) * 6);
+ s_sender[i]->lat_second = (char*) malloc(sizeof(char) * 6);
- s_sender[i]->lon_first = (char*) malloc(sizeof(char) * 5);
- s_sender[i]->lon_second = (char*) malloc(sizeof(char) * 5);
+ s_sender[i]->lon_first = (char*) malloc(sizeof(char) * 6);
+ s_sender[i]->lon_second = (char*) malloc(sizeof(char) * 6);
+
+// s_sender[i]->lat[0] = '\0';
+// s_sender[i]->lon[0] = '\0';
}
}
@@ -252,6 +327,9 @@ void on_connect_receiver(irc_session_t * session, const char * event, const char
irc_cmd_join(session, "#test", NULL);
irc_cmd_msg(session, "#test", "connected");
+
+ free(keyd->key);
+ free(keyd);
}
void receiver_main(void *user)
@@ -260,6 +338,7 @@ void receiver_main(void *user)
callbacks.event_channel = get_position;
callbacks.event_connect = on_connect_receiver;
+ callbacks.event_quit = disconnect_receiver;
char username[20];
sprintf(username, "%s", (char*) user);
diff --git a/friendfinder/receiver.h b/friendfinder/receiver.h
index 7b8f1be..95b5238 100644
--- a/friendfinder/receiver.h
+++ b/friendfinder/receiver.h
@@ -35,4 +35,5 @@ void receiver_main(void *user);
/* sets the ip of irc-server, to whom the receiver will connect */
void receiver_set_ip(char *_ip);
+void set_receiver_exit();
#endif
diff --git a/friendfinder/sender.c b/friendfinder/sender.c
index edb5b61..cc0ef0b 100644
--- a/friendfinder/sender.c
+++ b/friendfinder/sender.c
@@ -11,6 +11,9 @@
static irc_session_t *session;
irc_callbacks_t callbacks;
+int exit_ = 0;
+int lat_first_set = 0;
+
int msg_count = 0;
int ack_count = 0;
int resend = 0;
@@ -28,6 +31,11 @@ void sender_set_ip(char *_sender_server_ip)
sender_server_ip = _sender_server_ip;
}
+void set_sender_exit()
+{
+ exit_ = 1;
+}
+
int init_connection_sender(char* server_ip, char* user)
{
printf("SENDER: initialising connection...\n");
@@ -57,9 +65,19 @@ void disconnect_sender()
void set_sender_position(double lat, double lon)
{
- own_lat = lat;
- own_lon = lon;
- printf("%f || %f \n", lat, lon);
+ if (lat_first_set = 0)
+ {
+ own_lat = lat;
+ own_lon = lon;
+
+ lat_first_set = 1;
+ }
+
+ if (((own_lat - lat) > 0.000130 || (own_lat - lat) < 0.000130) || ((own_lon - lon) > 0.000130 || (own_lon - lon) < 0.000130))
+ {
+ own_lat = lat;
+ own_lon = lon;
+ }
}
struct sender_data* prepare_position(const unsigned char* lat, const unsigned char* lon)
@@ -102,13 +120,11 @@ struct sender_data* prepare_position(const unsigned char* lat, const unsigned ch
pos->lon_first[5] = 'c';
pos->lon_first[6] = '\0';
- pos->lon_second[4] = 'd';
- pos->lon_second[5] = '\0';
-
-
- printf(" %s %s \n", pos->lat_first, pos->lat_second);
- printf(" %s %s \n", pos->lon_first, pos->lon_second);
+ pos->lon_second[3] = 'd';
+ pos->lon_second[4] = '\0';
+// printf(" %s %s \n", pos->lat_first, pos->lat_second);
+// printf(" %s %s \n", pos->lon_first, pos->lon_second);
return pos;
}
@@ -133,8 +149,14 @@ void send_position(irc_session_t * session, const char * event, const char * ori
irc_cmd_msg(session, "#test", "connected");
first_send = 1;
+
+ free(keyd->key);
+ free(keyd);
}
+ if (exit_ == 1)
+ disconnect_sender();
+
const unsigned char *lat_char = (char*) malloc(sizeof(char) * 9);
sprintf(lat_char, "%f", own_lat);
@@ -152,15 +174,13 @@ void send_position(irc_session_t * session, const char * event, const char * ori
BF_ecb_encrypt(pos->lon_second, crypted_lon_second, &key, BF_ENCRYPT);
irc_cmd_msg(session, "#test", crypted_lat_first);
- sleep(1);
+
irc_cmd_msg(session, "#test", crypted_lat_second);
- sleep(1);
irc_cmd_msg(session, "#test", crypted_lon_first);
- sleep(1);
- irc_cmd_msg(session, "#test", crypted_lon_second);
- sleep(1);
+ irc_cmd_msg(session, "#test", crypted_lon_second);
+
//increase counter variable, which counts number of send positions!
msg_count = msg_count + 2;
@@ -179,6 +199,12 @@ void send_position(irc_session_t * session, const char * event, const char * ori
free(crypted_lon_first);
free(crypted_lon_second);
+
+ free(pos->lon_first);
+ free(pos->lon_second);
+ free(pos->lat_first);
+ free(pos->lat_second);
+ free(pos);
}
void get_aknowledge(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
@@ -196,6 +222,9 @@ void get_aknowledge(irc_session_t * session, const char * event, const char * or
if (ack_count == 2 && msg_count == 0)
{
resend = 1;
+
+ sleep(5);
+
send_position(session, event, origin, params, count);
}
}
diff --git a/friendfinder/sender.h b/friendfinder/sender.h
index 57435bb..ac80c75 100644
--- a/friendfinder/sender.h
+++ b/friendfinder/sender.h
@@ -18,4 +18,5 @@ void set_sender_position(double lat, double lon);
/* sets ip address of irc-server, to whom the sender will connect */
void sender_set_ip(char *_sender_server_ip);
+void set_sender_exit();
#endif