blob: 560c54307fafb8ce3eacea50a9a181dd4e69a34c [file] [log] [blame]
Neels Hofmeyrc27ae2d2020-10-04 21:32:52 +02001/* Manage RESET and disconnection detection on BSSMAP and BSSMAP-LE */
2#pragma once
3
4enum bssmap_reset_fsm_event {
Neels Hofmeyre95b92b2020-10-09 17:18:29 +02005 BSSMAP_RESET_EV_RX_RESET,
Neels Hofmeyrc27ae2d2020-10-04 21:32:52 +02006 BSSMAP_RESET_EV_RX_RESET_ACK,
7 BSSMAP_RESET_EV_CONN_CFM_SUCCESS,
8 BSSMAP_RESET_EV_CONN_CFM_FAILURE,
9};
10
11struct bssmap_reset_cfg {
12 int conn_cfm_failure_threshold;
13 struct {
14 void (*tx_reset)(void *data);
Neels Hofmeyre95b92b2020-10-09 17:18:29 +020015 void (*tx_reset_ack)(void *data);
Neels Hofmeyrc27ae2d2020-10-04 21:32:52 +020016 void (*link_up)(void *data);
17 void (*link_lost)(void *data);
18 } ops;
19 void *data;
20};
21
22struct bssmap_reset {
23 struct osmo_fsm_inst *fi;
24 struct bssmap_reset_cfg cfg;
25 int conn_cfm_failures;
26};
27
28struct bssmap_reset *bssmap_reset_alloc(void *ctx, const char *label, const struct bssmap_reset_cfg *cfg);
29bool bssmap_reset_is_conn_ready(const struct bssmap_reset *bssmap_reset);