1 /*******************************************************************
4 bth_inface.c - fce for reading and getting and putting chars to a data queue
6 Copyright (C) 2006 by Petr Kovacik petr_kovacik@gmail.com
8 *******************************************************************/
18 #include "bth_inface.h"
19 #include "bth_inface.h"
21 #include <periph/sci_rs232.h>
23 /* the number of communication structures i.e. how many channels can be used for communication. It alse specifies howmany
24 independent couples of I/O buffers is here.*/
25 /*pocet komunikacnich struktur - tj. pres kolik kanalu je mozno komunikovat,
26 to zaroven znamena, kolik je nezavislych dvojic I/O bufferu*/
27 bth_inface_info_t bth_inface_chan_array[BTH_INFACE_CHANAL];
29 //-- --- ----- ----- ---- ------ ----- -- ---- --
30 //-- --- ----- ----- ---- ------ ----- -- ---- --
33 * fce write one char to in-buffer. Fce return a code of char. If a value is -1 its signal for error
35 int bth_inface_r_isr(int chan, int val)
37 if(bth_inface_que_put(&(bth_inface_chan_array[chan].bth_inface_que_in),val)<0)
43 * fce read one char of out-buffer. Fce return a code of char. If is a value -1 than is not new char
45 int bth_inface_t_isr(int chan)
48 if((val=bth_inface_que_get(&(bth_inface_chan_array[chan].bth_inface_que_out)))>=0)
56 * fce write one char to out-buffer. Fce return a code of char. If a value is -1 its signal for error
58 int bth_inface_sendch(int val, int chan)
60 if(bth_inface_que_put(&(bth_inface_chan_array[chan].bth_inface_que_out),val)<0)
67 * fce read one char of in-buffer. Fce return a code of char. If is a value -1 than is not new char
69 int bth_inface_recch(int chan)
72 if((val=bth_inface_que_get(&(bth_inface_chan_array[chan].bth_inface_que_in)))>=0)
74 sci_rs232_sendch(val,sci_rs232_chan_default);
82 * init buffer for first chanal - 0 (nm. is index of array)
84 int bth_inface_setup(int chan)
86 bth_inface_info_t *bth_inface;
87 bth_inface = &(bth_inface_chan_array[chan]); // the number of communication interfaces bth - PC
88 bth_inface->bth_inface_que_in.buf_beg = bth_inface->bth_inface_buff_in;
89 bth_inface->bth_inface_que_in.buf_end = bth_inface->bth_inface_que_in.buf_beg+BTH_INFACE_BUF_LEN;
90 bth_inface->bth_inface_que_in.ip = bth_inface->bth_inface_que_in.buf_beg;
91 bth_inface->bth_inface_que_in.op = bth_inface->bth_inface_que_in.buf_beg;
93 bth_inface->bth_inface_que_out.buf_beg = bth_inface->bth_inface_buff_out;
94 bth_inface->bth_inface_que_out.buf_end = bth_inface->bth_inface_que_out.buf_beg+BTH_INFACE_BUF_LEN;
95 bth_inface->bth_inface_que_out.ip = bth_inface->bth_inface_que_out.buf_beg;
96 bth_inface->bth_inface_que_out.op = bth_inface->bth_inface_que_out.buf_beg;
102 /****************************************************************************/
103 /****************************************************************************/
107 * init using in your program
113 bth_inface_r_isr(&bth_inface_chan_array[0],'c'); //internal-fce
114 bth_inface_recch(0); //read one char of buffer
115 bth_inface_sendch('a', 0); //write one char to out buffer for chanal 0
116 bth_inface_t_isr(&bth_inface_chan_array[0]); //internal-fce