some more improvements for DLL
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
This commit is contained in:
@ -1,16 +1,16 @@
|
||||
#include "ArcsecDatalinkLayer.h"
|
||||
|
||||
ArcsecDatalinkLayer::ArcsecDatalinkLayer() : decodeRingBuf(4096, true) { slipInit(); }
|
||||
ArcsecDatalinkLayer::ArcsecDatalinkLayer() : decodeRingBuf(BUFFER_LENGTHS, true) { slipInit(); }
|
||||
|
||||
ArcsecDatalinkLayer::~ArcsecDatalinkLayer() {}
|
||||
|
||||
ReturnValue_t ArcsecDatalinkLayer::checkRingBufForFrame(const uint8_t** decodedFrame,
|
||||
size_t& frameLen) {
|
||||
size_t currentLen = decodeRingBuf.getAvailableReadData();
|
||||
decodeRingBuf.readData(decodedRxFrame, currentLen);
|
||||
decodeRingBuf.readData(rxAnalysisBuffer, currentLen);
|
||||
for (size_t idx = 0; idx < currentLen; idx++) {
|
||||
enum arc_dec_result decResult =
|
||||
arc_transport_decode_body(decodedRxFrame[idx], &slipInfo, decodedRxFrame, &rxFrameSize);
|
||||
arc_transport_decode_body(rxAnalysisBuffer[idx], &slipInfo, decodedRxFrame, &rxFrameSize);
|
||||
switch (decResult) {
|
||||
case ARC_DEC_INPROGRESS: {
|
||||
break;
|
||||
@ -52,46 +52,14 @@ ReturnValue_t ArcsecDatalinkLayer::feedData(const uint8_t* rawData, size_t rawDa
|
||||
return decodeRingBuf.writeData(rawData, rawDataLen);
|
||||
}
|
||||
|
||||
void ArcsecDatalinkLayer::slipInit() {
|
||||
slipInfo.buffer = rxBuffer;
|
||||
slipInfo.maxlength = startracker::MAX_FRAME_SIZE;
|
||||
slipInfo.length = 0;
|
||||
slipInfo.unescape_next = 0;
|
||||
slipInfo.prev_state = SLIP_COMPLETE;
|
||||
void ArcsecDatalinkLayer::reset() {
|
||||
slipInit();
|
||||
decodeRingBuf.clear();
|
||||
}
|
||||
|
||||
// ReturnValue_t ArcsecDatalinkLayer::decodeFrame(const uint8_t* rawData, size_t rawDataSize,
|
||||
// size_t* bytesLeft) {
|
||||
// size_t bytePos = 0;
|
||||
// for (bytePos = 0; bytePos < rawDataSize; bytePos++) {
|
||||
// enum arc_dec_result decResult =
|
||||
// arc_transport_decode_body(*(rawData + bytePos), &slipInfo, decodedRxFrame, &rxFrameSize);
|
||||
// *bytesLeft = rawDataSize - bytePos - 1;
|
||||
// switch (decResult) {
|
||||
// case ARC_DEC_INPROGRESS: {
|
||||
// if (bytePos == rawDataSize - 1) {
|
||||
// return DEC_IN_PROGRESS;
|
||||
// }
|
||||
// continue;
|
||||
// }
|
||||
// case ARC_DEC_ERROR_FRAME_SHORT:
|
||||
// return REPLY_TOO_SHORT;
|
||||
// case ARC_DEC_ERROR_CHECKSUM:
|
||||
// return CRC_FAILURE;
|
||||
// case ARC_DEC_ASYNC:
|
||||
// case ARC_DEC_SYNC: {
|
||||
// // Reset length of SLIP struct for next frame
|
||||
// slipInfo.length = 0;
|
||||
// return returnvalue::OK;
|
||||
// }
|
||||
// default:
|
||||
// sif::debug << "ArcsecDatalinkLayer::decodeFrame: Unknown result code" << std::endl;
|
||||
// break;
|
||||
// return returnvalue::FAILED;
|
||||
// }
|
||||
// }
|
||||
// return returnvalue::FAILED;
|
||||
// }
|
||||
void ArcsecDatalinkLayer::slipInit() {
|
||||
slip_decode_init(rxBufferArc, sizeof(rxBufferArc), &slipInfo);
|
||||
}
|
||||
|
||||
void ArcsecDatalinkLayer::encodeFrame(const uint8_t* data, size_t length, const uint8_t** txFrame,
|
||||
size_t& size) {
|
||||
|
Reference in New Issue
Block a user