/* O_TIMER */ #include #include #include #include GLREF_D WSERV_SPEC *wserv_channel; GLREF_D VOID *w_am; GLDEF_C VOID main(VOID) { IN_HWIMMAN app; IN_WSERV ws; p_linklib(0); app.flags=FLG_APPMAN_RSCFILE|FLG_APPMAN_CLEAN|FLG_APPMAN_SRSCFILE; app.wserv_cat=p_getlibh(CAT_TIMER_TIMER); ws.com_cat=p_getlibh(CAT_TIMER_HWIM); app.wserv_class=C_TIMERWS; ws.com_class=C_COMMAN; p_send4(p_new(CAT_TIMER_HWIM,C_HWIMMAN),O_AM_INIT,&app,&ws); } #pragma METHOD_CALL METHOD VOID timerws_ws_dyn_init(PR_TIMERWS *self) { self->wserv.cli=f_new(CAT_TIMER_TIMER,C_TIMERBW); p_send2(self->wserv.cli,O_WN_INIT); f_newsend(CAT_TIMER_TIMER,C_MYTIMER,O_AO_INIT,"TIM:",-1); } METHOD VOID timerbw_wn_init(PR_TIMERBW *self) { W_WINDATA wd; wd.extent.tl.x=0; wd.extent.tl.y=0; wd.extent.width=wserv_channel->conn.info.pixels.x; wd.extent.height=wserv_channel->conn.info.pixels.y; p_send5(self,O_WN_CONNECT,NULL,W_WIN_EXTENT,&wd); p_send3(self,O_WN_VISIBLE,WV_INITVIS); p_send3(self,O_WN_EMPHASISE,TRUE); } METHOD VOID mytimer_ao_init(PR_MYTIMER *self,TEXT *devname,INT mode) { p_supersend4(self,O_AO_INIT,devname,mode); self->active.priority=PRIORITY_ACTIVE_REPEATER; p_send3(w_am,O_AM_ADD_TASK,self); p_send2(self,O_AO_QUEUE); } METHOD VOID mytimer_ao_queue(PR_MYTIMER *self) { LONG delay; delay=20; p_ioc4(self->active.pcb,P_FREAD,&self->active.stat,&delay); self->active.isactive=TRUE; } METHOD INT mytimer_ao_run(PR_MYTIMER *self) { self->mytimer.count+=1; hInfoPrint(TIMER_INFO,self->mytimer.count); p_send2(self,O_AO_QUEUE); return(RUN_ACTIVE_USED); }