3 int uloi_i_open(ULOI_PARAM_coninfo UL_ARGPTRTYPE ul_msginfo *imsginfo)
5 #ifndef UL_WITHOUT_HANDLE
15 ret=ul_acceptmsg(coninfo->ul_fd, &msginfo);
20 if((msginfo.cmd!=coninfo->cmd)||
22 (msginfo.flg&UL_BFL_FAIL))
24 coninfo->adr=msginfo.sadr;
26 if((imsginfo->cmd!=coninfo->cmd)||
28 (imsginfo->flg&UL_BFL_FAIL))
30 coninfo->adr=imsginfo->sadr;
34 if(uloi_i_read(ULOI_ARG_coninfo uloi_tmpbuf, 3)!=3)
37 coninfo->bcmd=uloi_tmpbuf[0];
38 coninfo->bsn=uloi_tmpbuf[1];
39 /* We could need our loop-back serial number for messages tracking */
40 coninfo->sn=uloi_tmpbuf[2];
46 ul_i_close(coninfo->ul_fd);
48 ul_abortmsg(coninfo->ul_fd);
56 int uloi_o_open(ULOI_PARAM1_coninfo)
58 #ifndef UL_WITHOUT_HANDLE
64 if(coninfo->state&ULOI_CONINFO_OUTOPEN)
67 msginfo.dadr=coninfo->adr;
69 msginfo.cmd=coninfo->bcmd;
70 msginfo.flg=UL_BFL_SND|UL_BFL_ARQ;
72 ret=ul_newmsg(coninfo->ul_fd1, &msginfo);
75 uloi_i_close(ULOI_ARG1_coninfo);
79 uloi_tmpbuf[0]=coninfo->cmd;
80 /* We do not run own sequence numbers in the device */
81 uloi_tmpbuf[1]=0; /*coninfo->sn;*/
82 uloi_tmpbuf[2]=coninfo->bsn;
84 if(uloi_o_write(ULOI_ARG_coninfo uloi_tmpbuf, 3)!=3){
86 uloi_o_close(ULOI_ARG1_coninfo);
90 coninfo->state|=ULOI_CONINFO_OUTOPEN;
95 int uloi_i_close(ULOI_PARAM1_coninfo)
98 return ul_i_close(coninfo->ul_fd);
101 return ul_abortmsg(coninfo->ul_fd);
103 return ul_freemsg(coninfo->ul_fd);
107 int uloi_o_close(ULOI_PARAM1_coninfo)
109 if(!(coninfo->state&ULOI_CONINFO_OUTOPEN))
112 coninfo->state&=~ULOI_CONINFO_OUTOPEN;
117 return ul_o_close(coninfo->ul_fd1);
120 return ul_abortmsg(coninfo->ul_fd1);
122 return ul_freemsg(coninfo->ul_fd1);
126 ul_ssize_t uloi_i_read(ULOI_PARAM_coninfo void *buffer, size_t size)
131 ret=ul_read(coninfo->ul_fd, buffer, size);
137 ul_ssize_t uloi_o_write(ULOI_PARAM_coninfo const void *buffer, size_t size)
142 ret=ul_write(coninfo->ul_fd1, buffer, size);