MCPcopy Create free account
hub / github.com/CANopenNode/CANopenNode / CO_fifo_read

Function CO_fifo_read

301/CO_fifo.c:118–162  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

116}
117
118size_t
119CO_fifo_read(CO_fifo_t* fifo, uint8_t* buf, size_t count, bool_t* eof) {
120 size_t i;
121 const uint8_t* bufSrc;
122 bool_t alive_cycle = true;
123
124 if (eof != NULL) {
125 *eof = false;
126 }
127 if ((fifo == NULL) || (buf == NULL) || (fifo->readPtr == fifo->writePtr)) {
128 return 0;
129 }
130
131 bufSrc = &fifo->buf[fifo->readPtr];
132 for (i = count; (i > 0U) && alive_cycle;) {
133 const uint8_t c = *bufSrc;
134
135 /* is circular buffer empty */
136 if (fifo->readPtr == fifo->writePtr) {
137 alive_cycle = false;
138 } else {
139 *buf = c;
140 buf++;
141
142 /* increment variables */
143 if (++fifo->readPtr == fifo->bufSize) {
144 fifo->readPtr = 0;
145 bufSrc = &fifo->buf[0];
146 } else {
147 bufSrc++;
148 }
149 i--;
150
151#if ((CO_CONFIG_FIFO)&CO_CONFIG_FIFO_ASCII_COMMANDS) != 0
152 /* is delimiter? */
153 if ((eof != NULL) && (c == DELIM_COMMAND)) {
154 *eof = true;
155 alive_cycle = false;
156 }
157#endif
158 }
159 }
160
161 return count - i;
162}
163
164#if ((CO_CONFIG_FIFO)&CO_CONFIG_FIFO_ALT_READ) != 0
165size_t

Callers 15

CO_gateway_ascii.cFile · 0.85
CO_fifo_readU82aFunction · 0.85
CO_fifo_readU162aFunction · 0.85
CO_fifo_readU322aFunction · 0.85
CO_fifo_readU642aFunction · 0.85
CO_fifo_readX82aFunction · 0.85
CO_fifo_readX162aFunction · 0.85
CO_fifo_readX322aFunction · 0.85
CO_fifo_readX642aFunction · 0.85
CO_fifo_readI82aFunction · 0.85
CO_fifo_readI162aFunction · 0.85
CO_fifo_readI322aFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected