151 error_msg{
"Interface has TX inhibit configured",
"ifacetxinh",
161 struct k_condvar m_cond_var;
163 struct k_work m_work;
171 enum events : uint8_t
190 wait_pending_operation();
193 frame_sent(
bool success);
199 duty_cycle_enabled();
202 timer_handler(k_timer *t);
205 timer_work_handler(k_work *item);
207 class disable_msg :
public etl::message<events::DISABLE>
210 disable_msg() =
default;
213 class tx_frame_msg :
public etl::message<events::TX_FRAME>
216 tx_frame_msg() =
default;
219 class rx_msg :
public etl::message<events::RX_MODE>
225 class idle_msg :
public etl::message<events::IDLE_MODE>
228 idle_msg() =
default;
231 class frame_received_msg :
public etl::message<events::FRAME_RECEIVED>
234 frame_received_msg() =
default;
238 :
public etl::fsm_state<iface_ctrl, disabled_state,
239 static_cast<etl::fsm_state_id_t>(state::DISABLED),
240 rx_msg, tx_frame_msg>
244 on_enter_state()
override;
247 on_event(
const rx_msg &msg);
250 on_event(
const tx_frame_msg &msg);
253 on_event_unknown(
const etl::imessage &msg);
257 :
public etl::fsm_state<iface_ctrl, tx_state,
258 static_cast<etl::fsm_state_id_t>(state::TX),
259 disable_msg, tx_frame_msg, rx_msg>
263 on_enter_state()
override;
266 on_exit_state()
override;
269 on_event(
const disable_msg &msg);
272 on_event(
const tx_frame_msg &msg);
275 on_event(
const rx_msg &msg);
278 on_event_unknown(
const etl::imessage &msg);
282 :
public etl::fsm_state<
283 iface_ctrl, rx_state, static_cast<etl::fsm_state_id_t>(state::RX),
284 disable_msg, tx_frame_msg, idle_msg, frame_received_msg>
288 on_enter_state()
override;
291 on_event(
const disable_msg &msg);
294 on_event(
const tx_frame_msg &msg);
297 on_event(
const idle_msg &msg);
300 on_event(
const frame_received_msg &msg);
303 on_event_unknown(
const etl::imessage &msg);
307 :
public etl::fsm_state<iface_ctrl, idle_state,
308 static_cast<etl::fsm_state_id_t>(state::IDLE),
309 disable_msg, tx_frame_msg, rx_msg>
313 on_enter_state()
override;
316 on_exit_state()
override;
319 on_event(
const disable_msg &msg);
322 on_event(
const tx_frame_msg &msg);
325 on_event(
const rx_msg &msg);
328 on_event_unknown(
const etl::imessage &msg);
332 disabled_state m_disabled_state;
335 idle_state m_idle_state;
336 etl::ifsm_state *m_state_list[4];