int mgetch(void) { int c; forever { WaitSem(kbd, 1); WaitSem(dos, 1); if ( kbhit() ) { c = getch(); SignalSem(dos, 1); return c; } SignalSem(dos, 1); } }
int mfseek(FILE *f, long offset, int whence) { int n; WaitSem(dos, 1); n = fseek(f, offset, whence); SignalSem(dos, 1); return n; }
char * mfgets(char *buf, int size, FILE *f) { char *s; WaitSem(dos, 1); s = fgets(buf, size, f); SignalSem(dos, 1); return s; }
/////////////////////////////////////////////////////////////////////////////////// // // 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; }
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; }
/////////////////////////////////////////////////////////////////////////////////// // // 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); }
/////////////////////////////////////////////////////////////////////////////////// // // 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; }