gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r18277 - in libmwmodem: . src/include src/main


From: gnunet
Subject: [GNUnet-SVN] r18277 - in libmwmodem: . src/include src/main
Date: Wed, 23 Nov 2011 15:28:43 +0100

Author: ruppa
Date: 2011-11-23 15:28:43 +0100 (Wed, 23 Nov 2011)
New Revision: 18277

Modified:
   libmwmodem/configure.ac
   libmwmodem/src/include/libmwmodem.h
   libmwmodem/src/main/libmwmodem.c
Log:
worked 


Modified: libmwmodem/configure.ac
===================================================================
--- libmwmodem/configure.ac     2011-11-23 14:17:47 UTC (rev 18276)
+++ libmwmodem/configure.ac     2011-11-23 14:28:43 UTC (rev 18277)
@@ -6,9 +6,12 @@
 
 AC_CHECK_FUNCS([memset])
 AC_CHECK_FUNCS([socket])
+AC_CHECK_FUNCS([bind])
 AC_CHECK_HEADERS([malloc.h])
 AC_CHECK_HEADERS([stdint.h])
 AC_CHECK_HEADERS([sys/socket.h])
+AC_CHECK_HEADERS([netinet/in.h])
+AC_CHECK_HEADERS([string.h])
 AC_FUNC_MALLOC
 AC_PROG_CC 
 AC_TYPE_UINT16_T
@@ -17,7 +20,6 @@
 AC_PROG_LIBTOOL
 
 AC_LIBTOOL_WIN32_DLL
-#C_PROG_LIBTOOL
 
 AC_CONFIG_FILES([
 Makefile

Modified: libmwmodem/src/include/libmwmodem.h
===================================================================
--- libmwmodem/src/include/libmwmodem.h 2011-11-23 14:17:47 UTC (rev 18276)
+++ libmwmodem/src/include/libmwmodem.h 2011-11-23 14:28:43 UTC (rev 18277)
@@ -169,16 +169,6 @@
 };
 
 /**
- * This holds the instance of MWMODEM
- */
-struct MWMODEM_Context{
-       const int socket;
-       void *cb;
-       void *cls;
-};
-
-
-/**
  * Higher function for receiving the informations about the microwave 
satellite modem after parsing
  * the received udp package from the modem.
  */
@@ -186,6 +176,15 @@
                                           const struct MWMODEM_Package 
*package);
 
 /**
+ * This holds the instance of MWMODEM
+ */
+struct MWMODEM_Context{
+       int socket;
+       MWMODEM_InformationCallback *cb;
+       void *cls;
+};
+
+/**
  * Initialisation of this library. 
  * @param port number of port for use to receive the package. If you want to 
use the default port set this 0.
  * @param cb higher function for information Callback
@@ -196,7 +195,7 @@
 struct MWMODEM_Context *
 MWMODEM_init (uint16_t port,
              int af_int,
-             MWMODEM_InformationCallback cb,
+             MWMODEM_InformationCallback *cb,
              void *cb_cls);
 
 /**

Modified: libmwmodem/src/main/libmwmodem.c
===================================================================
--- libmwmodem/src/main/libmwmodem.c    2011-11-23 14:17:47 UTC (rev 18276)
+++ libmwmodem/src/main/libmwmodem.c    2011-11-23 14:28:43 UTC (rev 18277)
@@ -22,15 +22,18 @@
 #include <sys/socket.h>
 #include <stdint.h>
 #include <malloc.h>
+#include <netinet/in.h>
+#include <string.h>
 
 uint32_t val;
 
-struct MWMODEM_Context * MWMODEM_init (uint16_t port, int af_int, 
MWMODEM_InformationCallback cb, void *cb_cls)
+struct MWMODEM_Context * MWMODEM_init (uint16_t port, int af_int, 
MWMODEM_InformationCallback *cb, void *cb_cls)
 {
        static struct MWMODEM_Context *context;
-       struct sockaddr_in adress4;
-       struct sockaddr_in6 adress6;
-       void *adress;
+       struct sockaddr_in *adress4;
+       struct sockaddr_in6 *adress6;
+       adress4 = malloc(sizeof(struct sockaddr_in));
+       adress6 = malloc(sizeof(struct sockaddr_in6));
 
        context = malloc(sizeof(struct MWMODEM_Context));
        (*context).cb = cb;
@@ -50,29 +53,38 @@
 
        if (af_int==AF_INET)
        {
-               struct sockaddr_in adress;
+
+               memset (&adress4, 0, sizeof(adress4));
+               (*adress4).sin_family = af_int;
+               if (port == 0)
+                       {
+                               (*adress4).sin_port = htons(MWMODEM_PORT);
+                       }
+                       else
+                       {
+                               (*adress4).sin_port = htons(port);
+                       }
+               bind((*context).socket, adress4, sizeof(adress4));
        }
        else
        {
-               struct sockaddr_in6 adress;
+
+               memset( &adress6, 0, sizeof (adress6));
+               (*adress6).sin6_family = af_int;
+               if (port == 0)
+                       {
+                               (*adress6).sin6_port = htons(MWMODEM_PORT);
+                       }
+                       else
+                       {
+                               (*adress6).sin6_port = htons(port);
+                       }
+               bind((*context).socket, adress6, sizeof(adress6));
        }
-       adress= malloc(sizeof(struct sockaddr_in));
-       memset( &adress, 0, sizeof (adress));
-       (*adress).sin_family = af_int;
        
-       if (port == 0)
-       {
-               (*adress).sin_port = htons(MWMODEM_PORT);
-       }
-       else
-       {
-               (*adress).sin_port = htons(port);
-       }
+       free(adress4);
+       free(adress6);
 
-       bind((*context).socket, adress, sizeof(adress));
-
-       free(adress);   
-
        return context;
 }
 
@@ -92,14 +104,25 @@
 
 void MWMODEM_run (struct MWMODEM_Context *fc)
 {
-       struct MWMODEM_Package package;
+       struct MWMODEM_Package *package;
        char *buffer;
-       buffer = malloc(MWMODEM_MAXMESSLENGTH);
+       char byte4[4];
+       struct MWMODEM_Channel *list;
        struct sockaddr *from;
        socklen_t *from_length;
+       struct MWMODEM_Channel channel;
+
+       package = malloc(sizeof(struct MWMODEM_Package));
+       buffer = malloc(MWMODEM_MAXMESSLENGTH);
        
-       recvfrom((*fc).socket, *buffer, sizeof(buffer), 0, from, from_length);
-       char byte4[4];
+       if (recvfrom((*fc).socket, *buffer, sizeof(buffer), 0, from, 
from_length)==-1)
+       {
+               printf("Error no message received!");
+               return;
+       }
+       else
+       {
+
        byte4[0]= buffer[0];
        byte4[1]= buffer[1];
        byte4[2]= buffer[2];
@@ -107,68 +130,68 @@
 
        if (1==1)//TODO deklination der Erkennungsmerkmale der Message
        {
-               package.header = ntohl(charArrayToInt(byte4));
+               (*package).header = ntohl(charArrayToInt(byte4));
 
                byte4[0]= buffer[4];
                byte4[1]= buffer[5];
                byte4[2]= buffer[6];
         byte4[3]= buffer[7];
-        package.time.tv_nsec = MWMODWM_TACT_NANO_SEC;
-        package.time.tv_sec = ntohl(charArrayToInt(byte4));
+        (*package).time.tv_nsec = MWMODWM_TACT_NANO_SEC;
+        (*package).time.tv_sec = ntohl(charArrayToInt(byte4));
 
                byte4[0]= buffer[8];
         byte4[1]= buffer[9];
         byte4[2]= buffer[10];
         byte4[3]= buffer[11];
-               package.symbolrate = ntohl(charArrayToInt(byte4));
+        (*package).symbolrate = ntohl(charArrayToInt(byte4));
 
-               package.num_channels = (uint8_t) buffer[12];
+        (*package).num_channels = (uint8_t) buffer[12];
 
-               package.channel = malloc(package.num_channels);
+               struct MWMODEM_Channel list2[(*package).num_channels];
+               list = list2;
 
                int i, currentBufferZelle;
                currentBufferZelle = 13;
-               for(i=0;i<=package.num_channels; i++)
+               for(i=0;i<=(*package).num_channels; i++)
                {
-                       struct MWMODEM_Channel channel;
 
                        if(buffer[currentBufferZelle]==i)
                        {
                                currentBufferZelle+=1;
 
-                               
if(buffer[currentBufferZelle]>MWMODEM_ModCode.MWMODEM_MOD_DUMMY
-                                               
&&buffer[currentBufferZelle]<MWMODEM_ModCode.MWMODEM_MOD_RESERVED)
+                               if(buffer[currentBufferZelle]>MWMODEM_MOD_DUMMY
+                                               
&&buffer[currentBufferZelle]<MWMODEM_MOD_RESERVED)
                                {
                                        switch(buffer[currentBufferZelle])
                                        {
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_1_4 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_1_4;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_1_3 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_1_3;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_2_5 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_2_5;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_1_2 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_1_2;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_3_5 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_3_5;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_2_3 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_2_3;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_3_4 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_3_4;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_4_5 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_4_5;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_5_6 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_5_6;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_8_9 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_8_9;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_9_10 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_QPSK_9_10;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_8PSK_3_5 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_8PSK_3_5;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_8PSK_2_3 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_8PSK_2_3;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_8PSK_3_4 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_8PSK_3_4;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_8PSK_5_6 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_8PSK_5_6;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_8PSK_8_9 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_8PSK_8_9;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_8PSK_9_10 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_8PSK_9_10;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_16APSK_2_3 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_16APSK_2_3;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_16APSK_3_4 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_16APSK_3_4;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_16APSK_4_5 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_16APSK_4_5;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_16APSK_5_6 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_16APSK_5_6;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_16APSK_8_9 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_16APSK_8_9;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_16APSK_9_10 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_16APSK_9_10;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_32APSK_3_4 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_32APSK_3_4;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_32APSK_4_5 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_32APSK_4_5;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_32APSK_5_6 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_32APSK_5_6;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_32APSK_8_9 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_32APSK_8_9;
-                                               case 
MWMODEM_ModCode.MWMODEM_MOD_32APSK_9_10 : channel.modcode = 
MWMODEM_ModCode.MWMODEM_MOD_32APSK_9_10;
+                                               case MWMODEM_MOD_QPSK_1_4 : 
channel.modcode = MWMODEM_MOD_QPSK_1_4;
+                                               case MWMODEM_MOD_QPSK_1_3 : 
channel.modcode = MWMODEM_MOD_QPSK_1_3;
+                                               case MWMODEM_MOD_QPSK_2_5 : 
channel.modcode = MWMODEM_MOD_QPSK_2_5;
+                                               case MWMODEM_MOD_QPSK_1_2 : 
channel.modcode = MWMODEM_MOD_QPSK_1_2;
+                                               case MWMODEM_MOD_QPSK_3_5 : 
channel.modcode = MWMODEM_MOD_QPSK_3_5;
+                                               case MWMODEM_MOD_QPSK_2_3 : 
channel.modcode = MWMODEM_MOD_QPSK_2_3;
+                                               case MWMODEM_MOD_QPSK_3_4 : 
channel.modcode = MWMODEM_MOD_QPSK_3_4;
+                                               case MWMODEM_MOD_QPSK_4_5 : 
channel.modcode = MWMODEM_MOD_QPSK_4_5;
+                                               case MWMODEM_MOD_QPSK_5_6 : 
channel.modcode = MWMODEM_MOD_QPSK_5_6;
+                                               case MWMODEM_MOD_QPSK_8_9 : 
channel.modcode = MWMODEM_MOD_QPSK_8_9;
+                                               case MWMODEM_MOD_QPSK_9_10 : 
channel.modcode = MWMODEM_MOD_QPSK_9_10;
+                                               case MWMODEM_MOD_8PSK_3_5 : 
channel.modcode = MWMODEM_MOD_8PSK_3_5;
+                                               case MWMODEM_MOD_8PSK_2_3 : 
channel.modcode = MWMODEM_MOD_8PSK_2_3;
+                                               case MWMODEM_MOD_8PSK_3_4 : 
channel.modcode = MWMODEM_MOD_8PSK_3_4;
+                                               case MWMODEM_MOD_8PSK_5_6 : 
channel.modcode = MWMODEM_MOD_8PSK_5_6;
+                                               case MWMODEM_MOD_8PSK_8_9 : 
channel.modcode = MWMODEM_MOD_8PSK_8_9;
+                                               case MWMODEM_MOD_8PSK_9_10 : 
channel.modcode = MWMODEM_MOD_8PSK_9_10;
+                                               case MWMODEM_MOD_16APSK_2_3 : 
channel.modcode = MWMODEM_MOD_16APSK_2_3;
+                                               case MWMODEM_MOD_16APSK_3_4 : 
channel.modcode = MWMODEM_MOD_16APSK_3_4;
+                                               case MWMODEM_MOD_16APSK_4_5 : 
channel.modcode = MWMODEM_MOD_16APSK_4_5;
+                                               case MWMODEM_MOD_16APSK_5_6 : 
channel.modcode = MWMODEM_MOD_16APSK_5_6;
+                                               case MWMODEM_MOD_16APSK_8_9 : 
channel.modcode = MWMODEM_MOD_16APSK_8_9;
+                                               case MWMODEM_MOD_16APSK_9_10 : 
channel.modcode = MWMODEM_MOD_16APSK_9_10;
+                                               case MWMODEM_MOD_32APSK_3_4 : 
channel.modcode = MWMODEM_MOD_32APSK_3_4;
+                                               case MWMODEM_MOD_32APSK_4_5 : 
channel.modcode = MWMODEM_MOD_32APSK_4_5;
+                                               case MWMODEM_MOD_32APSK_5_6 : 
channel.modcode = MWMODEM_MOD_32APSK_5_6;
+                                               case MWMODEM_MOD_32APSK_8_9 : 
channel.modcode = MWMODEM_MOD_32APSK_8_9;
+                                               case MWMODEM_MOD_32APSK_9_10 : 
channel.modcode = MWMODEM_MOD_32APSK_9_10;
                                        }
                                }
                                else
@@ -200,13 +223,20 @@
                                currentBufferZelle+=1;
                                byte4[3] = buffer[currentBufferZelle];
                                channel.symbolratelimit = 
ntohl(charArrayToInt(byte4));
-                               package.channel+i = channel;
+                               list[i] = channel;
                                currentBufferZelle+=1;
                        }
                }
        }
-       else return; //TODO
-       (*fc).cb((*fc).cls, package);
+       else
+               {
+                       printf("No MWModem compatible message received!");
+                       return;
+               }
+       }
+       (*package).channel = list;
+
+       (*(*fc).cb)((*fc).cls, package);
 }
 
 void MWMODEM_free (struct MWMODEM_Context *fc)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]