/* decode receiver raw/rtcm data ---------------------------------------------*/ static int decoderaw(rtksvr_t *svr, int index) { obs_t *obs; nav_t *nav; sbsmsg_t *sbsmsg=NULL; int i,ret,sat,fobs=0; tracet(4,"decoderaw: index=%d\n",index); rtksvrlock(svr); for (i=0;i<svr->nb[index];i++) { /* input rtcm/receiver raw data from stream */ if (svr->format[index]==STRFMT_RTCM2) { ret=input_rtcm2(svr->rtcm+index,svr->buff[index][i]); obs=&svr->rtcm[index].obs; nav=&svr->rtcm[index].nav; sat=svr->rtcm[index].ephsat; } else if (svr->format[index]==STRFMT_RTCM3) { ret=input_rtcm3(svr->rtcm+index,svr->buff[index][i]); obs=&svr->rtcm[index].obs; nav=&svr->rtcm[index].nav; sat=svr->rtcm[index].ephsat; } else { ret=input_raw(svr->raw+index,svr->format[index],svr->buff[index][i]); obs=&svr->raw[index].obs; nav=&svr->raw[index].nav; sat=svr->raw[index].ephsat; sbsmsg=&svr->raw[index].sbsmsg; } #if 0 /* record for receiving tick */ if (ret==1) { trace(0,"%d %10d T=%s NS=%2d\n",index,tickget(), time_str(obs->data[0].time,0),obs->n); } #endif /* update rtk server */ if (ret>0) updatesvr(svr,ret,obs,nav,sat,sbsmsg,index,fobs); /* observation data received */ if (ret==1) { if (fobs<MAXOBSBUF) fobs++; else svr->prcout++; } } svr->nb[index]=0; rtksvrunlock(svr); return fobs; }
//--------- Begin of function FirmFactory::next_day ---------// // void FirmFactory::next_day() { //----- call next_day() of the base class -----// Firm::next_day(); //----------- update population -------------// recruit_worker(); //-------- train up the skill ------------// update_worker(); //--------- daily manufacturing activities ---------// if( info.game_date%PROCESS_GOODS_INTERVAL == firm_recno%PROCESS_GOODS_INTERVAL ) { input_raw(); production(); set_next_output_firm(); // set next output firm } }