예제 #1
0
파일: keyd.c 프로젝트: hdkippa/ghpsdr2
DttSP_EXP void
DeleteKeyer ()
{
	StopKeyer();
//	if (clock_fired)
//	{
		sem_destroy (&clock_fired);
//		clock_fired = NULL;
//	}
//	if (poll_fired)
//	{
		sem_destroy (&poll_fired);
//		poll_fired = NULL;
//	}
//	if (keyer_started)
//	{
		sem_destroy (&keyer_started);
	//	keyer_started = NULL;
	//}
	delCWToneGen (gen);
	delKeyerState (ks);
	delKeyerLogic (kl);
#ifndef INTERLEAVED
	ringb_float_free (lring);
	ringb_float_free (rring);
#else
	ringb_float_free (lring);
#endif
	if (cs_cw)
	{
		DeleteCriticalSection (cs_cw);
		cs_cw = NULL;
	}
}
예제 #2
0
void
closeup ()
{
	unsigned int thread;
	for(thread = 0; thread<3;thread++) {
		top[thread].running = FALSE;
		top[thread].susp = TRUE;
		Sleep (96);
		ringb_float_free (top[thread].jack.auxr.i.l);
		ringb_float_free (top[thread].jack.auxr.i.r);
		ringb_float_free (top[thread].jack.auxr.o.l);
		ringb_float_free (top[thread].jack.auxr.o.r);

		ringb_float_free (top[thread].jack.ring.o.r);
		ringb_float_free (top[thread].jack.ring.o.l);
		ringb_float_free (top[thread].jack.ring.i.r);
		ringb_float_free (top[thread].jack.ring.i.l);

		destroy_workspace (thread);
	}
	Sleep(100);
	//fprintf(stderr,"Done with destructor\n"),fflush(stderr);
}