From: pa3gsb Date: Wed, 11 Apr 2018 13:16:28 +0000 (+0200) Subject: creating thread using g thread X-Git-Url: https://git.rkrishnan.org/%5B/flags/-?a=commitdiff_plain;h=6bf1cb6d01274f1a37eb6793b80902faa21e22bc;p=pihpsdr.git creating thread using g thread --- diff --git a/radioberry.c b/radioberry.c index 16e3c59..edc450b 100644 --- a/radioberry.c +++ b/radioberry.c @@ -60,9 +60,11 @@ static int sampleSpeed =0; unsigned char iqdata[6]; unsigned char tx_iqdata[6]; -static pthread_t radioberry_thread_id; +static GThread *radioberry_thread_id; +//static pthread_t radioberry_thread_id; static void start_radioberry_thread(); -static void *radioberry_thread(void* arg); +static gpointer radioberry_thread(gpointer arg); +//static void *radioberry_thread(void* arg); static void setSampleSpeed(int r); static void handleReceiveStream(int r); @@ -165,9 +167,17 @@ void radioberry_protocol_init(int rx,int pixels) { } } - start_radioberry_thread(); + //start_radioberry_thread(); + radioberry_thread_id = g_thread_new( "radioberry", radioberry_thread, NULL); + if( ! radioberry_thread_id ) + { + fprintf(stderr,"g_thread_new failed on radioberry_thread\n"); + exit( -1 ); + } + fprintf(stderr, "radioberry_thread: id=%p\n",radioberry_thread_id); } +/* static void start_radioberry_thread() { int rc; fprintf(stderr,"radioberry_protocol starting radioberry thread\n"); @@ -176,9 +186,10 @@ static void start_radioberry_thread() { fprintf(stderr,"radioberry_protocol: pthread_create failed on radioberry_thread: rc=%d\n", rc); exit(-1); } -} +}*/ -static void *radioberry_thread(void* arg) { +//static void *radioberry_thread(void* arg) { +static gpointer radioberry_thread(gpointer arg) { fprintf(stderr, "radioberry_protocol: radioberry_thread\n"); running=1; @@ -277,11 +288,11 @@ static void handleReceiveStream(int r) { double right_sample_double; left_sample = (int)((signed char) iqdata[0]) << 16; - left_sample += (int)((unsigned char)iqdata[1]) << 8; - left_sample += (int)((unsigned char)iqdata[2]); + left_sample |= (int)((((unsigned char)iqdata[1]) << 8)&0xFF00); + left_sample |= (int)((unsigned char)iqdata[2]&0xFF); right_sample = (int)((signed char) iqdata[3]) << 16; - right_sample += (int)((unsigned char)iqdata[4]) << 8; - right_sample += (int)((unsigned char)iqdata[5]); + right_sample |= (int)((((unsigned char)iqdata[4]) << 8)&0xFF00); + right_sample |= (int)((unsigned char)iqdata[5]&0xFF); left_sample_double=(double)left_sample/8388607.0; // 24 bit sample 2^23-1 right_sample_double=(double)right_sample/8388607.0; // 24 bit sample 2^23-1