void clearSerialLinkBuffer(const SerialLink* serialLink) { if (serialLink != NULL) { StreamLink* streamLink = serialLink->streamLink; // Serial Input Buffer Buffer* serialInputBuffer = streamLink->inputBuffer; deepClearBuffer(serialInputBuffer); // Serial Output Buffer Buffer* serialOutputBuffer = streamLink->outputBuffer; deepClearBuffer(serialOutputBuffer); } }
void initBuffer(Buffer* buffer, char (*array)[], unsigned char length, char* name, char* type) { buffer->s = array; buffer->length = length; deepClearBuffer(buffer); // inputStream initInputStream( &(buffer->inputStream), &_openBufferInputStream, &_closeBufferInputStream, &_bufferReadChar, &_bufferAvailableData, (int*) buffer ); // outputStream initOutputStream( &(buffer->outputStream), &_openBufferOutputStream, &_closeBufferOutputStream, &_bufferWriteChar, &_bufferFlush, (int*) buffer ); buffer->name = name; buffer->type = type; }
/** * @private * Try to clear the buffer if it contains some 'z' char. Very usefull when we have made a mistake taping an instruction. * @return true if it was cleared (=> buffer will be cleared), false else */ bool clearBufferIfNeeded(Buffer* inputBuffer) { int i; int inputBufferCount = getBufferElementsCount(inputBuffer); for (i = 0; i < inputBufferCount; i++) { char bufferElement = bufferGetCharAtIndex(inputBuffer, i); if (bufferElement == HEADER_CLEAR_INPUT_STREAM) { deepClearBuffer(inputBuffer); return true; } // remove all informations to the latest char if (bufferElement == HEADER_WRITE_CONTENT_AND_DEEP_CLEAR_BUFFER) { printDebugBuffer(getAlwaysOutputStreamLogger(), inputBuffer); deepClearBuffer(inputBuffer); return true; } } return false; }
/** * @private */ void _closeBufferInputStream(InputStream* inputStream) { Buffer* buffer = (Buffer*) inputStream->object; deepClearBuffer(buffer); }
/** * @private */ void _openBufferInputStream(InputStream* inputStream, int param1) { Buffer* buffer = (Buffer*) inputStream->object; deepClearBuffer(buffer); }
/** * @private */ void _closeBufferOutputStream(OutputStream* outputStream) { Buffer* buffer = (Buffer*) outputStream->object; deepClearBuffer(buffer); }
/** * @private */ void _openBufferOutputStream(OutputStream* outputStream, int param1) { Buffer* buffer = (Buffer*) outputStream->object; deepClearBuffer(buffer); }