예제 #1
0
int
mgetch(void)
{
	int c;

	forever
	{
		WaitSem(kbd, 1);
		WaitSem(dos, 1);
		if ( kbhit() )
		{
			c = getch();
			SignalSem(dos, 1);
			return c;
		}
		SignalSem(dos, 1);
	}
}
예제 #2
0
int
mfseek(FILE *f, long offset, int whence)
{
	int n;

	WaitSem(dos, 1);
	n = fseek(f, offset, whence);
	SignalSem(dos, 1);
	return n;
}
예제 #3
0
char *
mfgets(char *buf, int size, FILE *f)
{
	char *s;

	WaitSem(dos, 1);
	s = fgets(buf, size, f);
	SignalSem(dos, 1);
	return s;
}
예제 #4
0
///////////////////////////////////////////////////////////////////////////////////
// 
// Function Name: hv_gps_stop
// Parameters: 
// Description: 
//        stop GPS 
// Notes: sjchen 2012/09/04
//
///////////////////////////////////////////////////////////////////////////////////
static int hv_gps_stop()
{
	D("About to deinitgbc");
	
	WaitSem(&s_hStopSem,180000); //3 minute

	PAL_CreateThread_JNI( (void *)StopThread, NULL, 0 );

	return 0;
}
예제 #5
0
int 
mprint(int x, int y, char *format, ...)
{
	int n;

	WaitSem(dos, 1);
	gotoxy(x, y);
	n = vprintf(format, ...);
	clreol();
	SignalSem(dos, 1);
	return n;
}
예제 #6
0
///////////////////////////////////////////////////////////////////////////////////
// 
// Function Name: hv_gps_cleanup
// Parameters: 
// Description: 
//        clean GPS
// Notes: sjchen 2012/09/04
//
///////////////////////////////////////////////////////////////////////////////////
static void hv_gps_cleanup(void)
{
	LOGE("hv_gps_cleanup--------------------------");
	
	WaitSem(&s_hStopSem,180000); //3 minute
return;


	g_GPSInited = false;
	g_GPSStarted = false;
	g_location_cb = NULL;
	g_status_cb = NULL;
	g_sv_status_cb = NULL;
	g_nmea_cb = NULL;

	sem_post(&s_hStopSem);
	sem_destroy(&s_hStopSem);
}
예제 #7
0
///////////////////////////////////////////////////////////////////////////////////
// 
// Function Name: hv_gps_start
// Parameters: 
// Description: 
//        Start GPS
// Notes: sjchen 2012/09/04
//
///////////////////////////////////////////////////////////////////////////////////
static int hv_gps_start()
{
	GpsSvStatus sv_inf;

	LOGE("GPS Starting=======================");

	//Clear the SV info 
	memset(&sv_inf,0,sizeof(GpsSvStatus));
	sv_inf.size = sizeof(GpsSvStatus);
	(*g_sv_status_cb)(&sv_inf);

	WaitSem(&s_hStopSem,180000); //3 minute

  if(g_GPSStarted)
  {
         sem_post(&s_hStopSem);
         return -1;
  }

	unsigned long  u32ParameterAge = 604800;

	//for save GPS temporary file
	SetOutputFolder((char *)"/data/gpsdata");

	if(!InitGbc())
	{
		LOGE("InitGbc failed \r\n");
		return -1;
	}

	if(LoadParameter())
	{
		u32ParameterAge = GetParameterAge();
	}	

	if(u32ParameterAge < 7000) //about 2 hours 
	{
		GPS_HotStart();
	}
	else if(u32ParameterAge < 86400) // one day
	{
		GPS_WarmStart();
	}
	else 
	{
		GPS_ColdStart();
	}

	D("GPS Started %d\r\n",u32ParameterAge);

	g_GPSStarted = true;

	D("%s: called", __FUNCTION__);

	LOGE("GPS Starting====================done");


	sem_post(&s_hStopSem);

	return 0;
}