int16_t RectifierParser::getAnswer() { errorCounter_++; parseCounter_++; int16_t receiveRxBufferResult = serial_.receiveRxBuffer(); // get minimum bytes with message length if (receiveRxBufferResult < 0) { return receiveRxBufferResult; // Error code, if receiveRxBuffer() get error } uint16_t bytesRead = (uint16_t)receiveRxBufferResult; if (bytesRead < RECTIFIER_MIN_LENGTH) { return RectifierParseState::GET_MINIMAL_FRAME_ERROR; } const char* data = serial_.getBuffer(); if (!checkByte(0x7e, data, bytesRead)) { return RectifierParseState::CHECK_START_TAIL_BYTE_ERROR; } BUFFER_READ_BCD(frame_.address, data, bytesRead); BUFFER_READ_BCD(frame_.length, data, bytesRead); if (frame_.length < (bytesRead - RECTIFIER_CS_TAIL_LENGTH)) { return RectifierParseState::GET_MINIMAL_FRAME_ERROR; } //data = serial_.getBuffer(); BUFFER_READ(frame_.cid, data, bytesRead); if (!RectifierInfoParser::makeRectifierInfoParser((int16_t)frame_.cid, parser_)) return RectifierParseState::MAKE_INFO_PARSER_ERROR; int8_t parserResult = parser_->parseInfo(data, bytesRead, frame_.length); if (RectifierParseState::OK != parserResult) return parserResult; pParsedMesage_ = parser_->getData(); errorCounter_--; return parser_->getCid(); }
void logicalaccess::MifarePlusISO7816ResultChecker::CheckResult(const void *data, size_t datalen) { assert(datalen); checkByte(static_cast<const uint8_t *>(data)[0]); }