Пример #1
0
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]);
}