66 static const uint8_t
Version = 1;
67 static const uint8_t TimeoutUnit = 3;
70 uint32_t locTryPeriod_;
73 uint8_t locMaxBuffers_;
74 uint16_t locMaxSegment_;
75 uint16_t locCumAckTout_;
76 uint16_t locRetranTout_;
77 uint16_t locNullTout_;
78 uint8_t locMaxRetran_;
79 uint8_t locMaxCumAck_;
82 uint8_t curMaxBuffers_;
83 uint16_t curMaxSegment_;
84 uint16_t curCumAckTout_;
85 uint16_t curRetranTout_;
86 uint16_t curNullTout_;
87 uint8_t curMaxRetran_;
88 uint8_t curMaxCumAck_;
91 enum States : uint32_t { StClosed = 0, StWaitSyn = 1, StSendSynAck = 2, StSendSeqAck = 3, StOpen = 4, StError = 5 };
94 std::shared_ptr<rogue::protocols::rssi::Transport> tran_;
95 std::shared_ptr<rogue::protocols::rssi::Application> app_;
97 std::shared_ptr<rogue::Logging> log_;
103 std::atomic<uint32_t> dropCount_;
106 std::atomic<bool> remBusy_;
107 std::atomic<bool> locBusy_;
113 std::map<uint8_t, std::shared_ptr<rogue::protocols::rssi::Header>> oooQueue_;
123 std::condition_variable stCond_;
126 struct timeval stTime_;
127 std::atomic<uint32_t> downCount_;
128 std::atomic<uint32_t> retranCount_;
129 std::atomic<uint32_t> locBusyCnt_;
130 std::atomic<uint32_t> remBusyCnt_;
135 std::shared_ptr<rogue::protocols::rssi::Header> txList_[256];
137 uint8_t txListCount_;
139 uint8_t locSequence_;
140 struct timeval txTime_;
143 struct timeval retranToutD1_;
144 struct timeval tryPeriodD1_;
145 struct timeval tryPeriodD4_;
146 struct timeval cumAckToutD1_;
147 struct timeval cumAckToutD2_;
148 struct timeval nullToutD3_;
149 struct timeval zeroTme_;
153 std::thread* thread_ =
nullptr;
154 std::atomic<bool> threadEn_{
false};
159 struct timeval timeout_;
178 static std::shared_ptr<rogue::protocols::rssi::Controller>
create(
180 std::shared_ptr<rogue::protocols::rssi::Transport> tran,
181 std::shared_ptr<rogue::protocols::rssi::Application> app,
197 std::shared_ptr<rogue::protocols::rssi::Transport> tran,
198 std::shared_ptr<rogue::protocols::rssi::Application> app,
212 std::shared_ptr<rogue::interfaces::stream::Frame>
reqFrame(uint32_t size);
218 void transportRx(std::shared_ptr<rogue::interfaces::stream::Frame> frame);
224 std::shared_ptr<rogue::interfaces::stream::Frame>
applicationTx();
230 void applicationRx(std::shared_ptr<rogue::interfaces::stream::Frame> frame);
421 void transportTx(std::shared_ptr<rogue::protocols::rssi::Header> head,
bool seqUpdate,
bool txReset);
424 int8_t retransmit(uint8_t
id);
427 static void convTime(
struct timeval& tme, uint32_t rssiTime);
430 static bool timePassed(
struct timeval& lastTime,
struct timeval& tme);
436 struct timeval& stateClosedWait();
439 struct timeval& stateSendSynAck();
442 struct timeval& stateSendSeqAck();
445 struct timeval& stateOpen();
448 struct timeval& stateError();