diff options
| author | Piotr Krysik <perper@o2.pl> | 2009-06-13 12:39:25 +0200 | 
|---|---|---|
| committer | Piotr Krysik <perper@o2.pl> | 2009-06-13 12:39:25 +0200 | 
| commit | 8d22cd691b045295fd2de22e37868346ab0b0c45 (patch) | |
| tree | 925affe91eeddcc73aecffe2ddd009eb4ddaf441 /src/lib | |
| parent | f19e4b58d3ae359539b73612bf8509ccc9889ac2 (diff) | |
cch decoding works now - should be removed in the future, it shouldn't be done in receiver which works in physical layer
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/decoder/burst_types.h | 1 | ||||
| -rw-r--r-- | src/lib/decoder/cch.c | 1 | ||||
| -rw-r--r-- | src/lib/decoder/gsmstack.c | 54 | ||||
| -rw-r--r-- | src/lib/decoder/gsmstack.h | 4 | ||||
| -rw-r--r-- | src/lib/decoder/sch.c | 2 | 
5 files changed, 37 insertions, 25 deletions
| diff --git a/src/lib/decoder/burst_types.h b/src/lib/decoder/burst_types.h index 990e8f1..ee51f9a 100644 --- a/src/lib/decoder/burst_types.h +++ b/src/lib/decoder/burst_types.h @@ -17,6 +17,7 @@ static const unsigned char tail_bits[] = {0, 0, 0};   * The normal burst is used to carry information on traffic and control   * channels.   */ +  static const int N_TSC_NUM	= 8;	// number of training sequence codes  static const int N_TSC_CODE_LEN	= 26;	// length of tsc  static const int N_TSC_OS	= 61;	// tsc offset diff --git a/src/lib/decoder/cch.c b/src/lib/decoder/cch.c index 468c1f3..f1da56d 100644 --- a/src/lib/decoder/cch.c +++ b/src/lib/decoder/cch.c @@ -13,6 +13,7 @@  #include "cch.h"  #include "fire_crc.h" +  /*   * GSM SACCH -- Slow Associated Control Channel   * diff --git a/src/lib/decoder/gsmstack.c b/src/lib/decoder/gsmstack.c index 0f2aca6..cf94939 100644 --- a/src/lib/decoder/gsmstack.c +++ b/src/lib/decoder/gsmstack.c @@ -1,4 +1,3 @@ -//TODO: this file shouldn't be part of the GSM Receiver  /*   * Invoke gsmstack() with any kind of burst. Automaticly decode and retrieve   * information. @@ -9,14 +8,25 @@  #include <errno.h>  #include <string.h>  #include "gsmstack.h" -#include "gsm_constants.h" -#include "gsm_receiver_config.h" +//#include "gsm_constants.h"  #include "interleave.h" -#include "sch.h" +//#include "sch.h"  #include "cch.h" -//#include "out_pcap.h" +static const int USEFUL_BITS = 142; +//#include "out_pcap.h" +enum BURST_TYPE { +        UNKNOWN, +        FCCH,  +        PARTIAL_SCH,            //successful correlation, but missing data ^ +        SCH, +        CTS_SCH, +        COMPACT_SCH,  +        NORMAL, +        DUMMY, +        ACCESS +};  static void out_gsmdecode(char type, int arfcn, int ts, int fn, char *data, int len);  /* encode a decoded burst (1 bit per byte) into 8-bit-per-byte */ @@ -74,17 +84,17 @@ GS_new(GS_CTX *ctx)  	ctx->fn = -1;  	ctx->bsic = -1; -	ctx->tun_fd = mktun("gsm", ctx->ether_addr); -	if (ctx->tun_fd < 0) -		fprintf(stderr, "cannot open 'gsm' tun device, did you create it?\n"); +//	ctx->tun_fd = mktun("gsm", ctx->ether_addr); +//	if (ctx->tun_fd < 0) +//		fprintf(stderr, "cannot open 'gsm' tun device, did you create it?\n"); -	ctx->pcap_fd = open_pcap_file("tvoid.pcap"); -	if (ctx->pcap_fd < 0) -		fprintf(stderr, "cannot open PCAP file: %s\n", strerror(errno)); +//	ctx->pcap_fd = open_pcap_file("tvoid.pcap"); +//	if (ctx->pcap_fd < 0) +//		fprintf(stderr, "cannot open PCAP file: %s\n", strerror(errno)); -	ctx->burst_pcap_fd = open_pcap_file("tvoid-burst.pcap"); -	if (ctx->burst_pcap_fd < 0) -		fprintf(stderr, "cannot open burst PCAP file: %s\n", strerror(errno)); +//	ctx->burst_pcap_fd = open_pcap_file("tvoid-burst.pcap"); +//	if (ctx->burst_pcap_fd < 0) +//		fprintf(stderr, "cannot open burst PCAP file: %s\n", strerror(errno));  	return 0;  } @@ -108,8 +118,8 @@ GS_process(GS_CTX *ctx, int ts, int type, const unsigned char *src)  	/* write burst to burst PCAP file */  	burst_octify(octified, src, USEFUL_BITS); -	write_pcap_packet(ctx->burst_pcap_fd, 0 /* arfcn */, ts, ctx->fn, -			  1, type, octified, BURST_BYTES); +//	write_pcap_packet(ctx->burst_pcap_fd, 0 /* arfcn */, ts, ctx->fn, +//			  1, type, octified, BURST_BYTES);  #if 0  	if (ts != 0) { @@ -117,13 +127,13 @@ GS_process(GS_CTX *ctx, int ts, int type, const unsigned char *src)  		data = decode_cch(ctx, ctx->burst, &len);  		if (data == NULL)  			return -1; -		write_pcap_packet(ctx->pcap_fd, 0 /* arfcn */, ts, ctx->fn, data, len); +//		write_pcap_packet(ctx->pcap_fd, 0 /* arfcn */, ts, ctx->fn, data, len);  		return;  	}  #endif  	if (ts == 0) { -		if (type == sch_burst) { +		if (type == SCH) {  			ret = decode_sch(src, &fn, &bsic);  			if (ret != 0)  				return 0; @@ -144,7 +154,7 @@ GS_process(GS_CTX *ctx, int ts, int type, const unsigned char *src)  		ctx->fn++;  	} -	if (type == normal_burst) { +	if (type == NORMAL) {  		/* Interested in these frame numbers (cch)   		 * 2-5, 12-15, 22-25, 23-35, 42-45   		 * 6-9, 16-19, 26-29, 36-39, 46-49 @@ -167,9 +177,9 @@ GS_process(GS_CTX *ctx, int ts, int type, const unsigned char *src)  		//DEBUGF("OK TS %d, len %d\n", ts, len);  		out_gsmdecode(0, 0, ts, ctx->fn - 4, data, len); -		write_interface(ctx->tun_fd, data+1, len-1, ctx->ether_addr); -		write_pcap_packet(ctx->pcap_fd, 0 /* arfcn */, ts, ctx->fn, -				  0, normal_burst, data, len); +//		write_interface(ctx->tun_fd, data+1, len-1, ctx->ether_addr); +//		write_pcap_packet(ctx->pcap_fd, 0 /* arfcn */, ts, ctx->fn, +//				  0, NORMAL, data, len);  #if 0  		if (ctx->fn % 51 != 0) && ( (((ctx->fn % 51 + 5) % 10 == 0) || (((ctx->fn % 51) + 1) % 10 ==0) ) )  			ready = 1; diff --git a/src/lib/decoder/gsmstack.h b/src/lib/decoder/gsmstack.h index 9c5730e..fb88334 100644 --- a/src/lib/decoder/gsmstack.h +++ b/src/lib/decoder/gsmstack.h @@ -29,8 +29,8 @@ typedef struct  	int tun_fd;  	unsigned char ether_addr[ETH_ALEN]; -	int pcap_fd; -	int burst_pcap_fd; +//	int pcap_fd; +//	int burst_pcap_fd;  } GS_CTX;  int GS_new(GS_CTX *ctx); diff --git a/src/lib/decoder/sch.c b/src/lib/decoder/sch.c index e16d14b..6f141dd 100644 --- a/src/lib/decoder/sch.c +++ b/src/lib/decoder/sch.c @@ -3,7 +3,7 @@  #include <stdlib.h>  #include <unistd.h>  #include <string.h> -#include <gsm_constants.h> +#include "gsm_constants.h"  /*   * Synchronization channel. | 
