diff --git a/start_oss.c b/start_oss.c index 12d09786f..cebcf8ecd 100644 --- a/start_oss.c +++ b/start_oss.c @@ -166,9 +166,11 @@ start_threads_(int *ndevin, int *ndevout, short y1[], short y2[], printf("Rate set = %d\n", rate); // printf("start_threads: creating thread for oss_loop\n"); - iret1 = pthread_create(&thread1,NULL,oss_loop,&iarg1); - printf("start_threads: creating thread for decode1_\n"); - // iret2 = pthread_create(&thread2,NULL,decode1_,&iarg2); + iret1 = pthread_create(&thread1, NULL, + (void *(*)(void *))oss_loop, &iarg1); + // printf("start_threads: creating thread for decode1_\n"); + iret2 = pthread_create(&thread2, NULL, + (void *(*)(void *))decode1_,&iarg2); } /* @@ -229,8 +231,8 @@ oss_loop(int *iarg) data.tbuf[ib++] = stime; if(ib>=FRAMESPERBUFFER) ib=0; - *(data.ibuf)=ib; - in = rcv_buf; // XXX + *(data.ibuf) = ib; + in = (int16_t *)rcv_buf; // XXX for(i=0; i<FRAMESPERBUFFER; i++) { data.y1[ia] = (*in++); data.y2[ia] = (*in++); @@ -256,7 +258,7 @@ oss_loop(int *iarg) } TxOKz = *(data.TxOK); *(data.Transmitting) = *(data.TxOK); - wptr = tx_buf; /* XXX */ + wptr = (int16_t *)tx_buf; /* XXX */ for(i=0 ; i<FRAMESPERBUFFER; i++ ) { if(*(data.TxOK)) { n2 = data.iwave[ic]; @@ -275,7 +277,11 @@ oss_loop(int *iarg) *wptr++ = 0; /* right */ } } - write(data.fd_out, tx_buf, AUDIOBUFSIZE); + + if (write(data.fd_out, tx_buf, AUDIOBUFSIZE) < 0) { + fprintf(stderr, "Can't write to soundcard.\n"); + exit(-1); + } fivehztx_(); /* Call fortran routine */ } }