[Top][All Lists]
[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)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r18277 - in libmwmodem: . src/include src/main,
gnunet <=