dev(SF-60): Параметризирован таймаут по таймеру
This commit is contained in:
parent
f0cbde9013
commit
7f9e7659b8
@ -20,7 +20,7 @@ EthEcat::EthEcat(Eth& eth)
|
|||||||
|
|
||||||
void EthEcat::Init(TEthMacPorts port_id, uint32_t period_microsec = 250) {
|
void EthEcat::Init(TEthMacPorts port_id, uint32_t period_microsec = 250) {
|
||||||
port_id_ = port_id;
|
port_id_ = port_id;
|
||||||
telegram_.init(port_id);
|
telegram_.init(port_id, period_microsec, 6);
|
||||||
|
|
||||||
Timer::Settings ecat_tmr_sett = {
|
Timer::Settings ecat_tmr_sett = {
|
||||||
.input_clk_Hz = 25000000, // 25MHz
|
.input_clk_Hz = 25000000, // 25MHz
|
||||||
|
|||||||
@ -68,8 +68,11 @@ public:
|
|||||||
virtual int32_t Process(uint8_t *p_data, uint32_t len) override;
|
virtual int32_t Process(uint8_t *p_data, uint32_t len) override;
|
||||||
virtual uint32_t Sender(uint8_t *p_data, size_t scatter_segment) override;
|
virtual uint32_t Sender(uint8_t *p_data, size_t scatter_segment) override;
|
||||||
|
|
||||||
void init(TEthMacPorts port_id) {
|
void init(TEthMacPorts port_id, uint32_t period_microsec, uint32_t max_transfer_attempts) {
|
||||||
port_id_ = port_id;
|
port_id_ = port_id;
|
||||||
|
period_microsec_ = period_microsec;
|
||||||
|
counter_timeout_ticks_ = (semaphore_timeout_ticks_*1000)/period_microsec;
|
||||||
|
max_transfer_attempts_ = max_transfer_attempts;
|
||||||
eth_.getEthStackPtr()->Register(ETH_PROT_ECAT_LE, this);
|
eth_.getEthStackPtr()->Register(ETH_PROT_ECAT_LE, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,14 +93,16 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
static constexpr uint32_t semaphore_timeout_ticks_ = 2;
|
static constexpr uint32_t semaphore_timeout_ticks_ = 2;
|
||||||
static constexpr uint32_t counter_timeout_ticks_ = 8;
|
|
||||||
static constexpr uint32_t max_transfer_attempts_ = 6;
|
|
||||||
|
|
||||||
Eth& eth_;
|
Eth& eth_;
|
||||||
Timer& ecat_timer_;
|
Timer& ecat_timer_;
|
||||||
EthTxFlowIface& tx_flow_;
|
EthTxFlowIface& tx_flow_;
|
||||||
EthStackIface& eth_stack_;
|
EthStackIface& eth_stack_;
|
||||||
|
|
||||||
TEthMacPorts port_id_;
|
TEthMacPorts port_id_;
|
||||||
|
uint32_t period_microsec_{250};
|
||||||
|
uint32_t counter_timeout_ticks_{8};
|
||||||
|
uint32_t max_transfer_attempts_{6};
|
||||||
|
|
||||||
free_rtos::Semaphore rx_sem_;
|
free_rtos::Semaphore rx_sem_;
|
||||||
uint8_t idx_{0x00};
|
uint8_t idx_{0x00};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user