Neels Hofmeyr | c27ae2d | 2020-10-04 21:32:52 +0200 | [diff] [blame] | 1 | /* Manage RESET and disconnection detection on BSSMAP and BSSMAP-LE */ |
| 2 | #pragma once |
| 3 | |
| 4 | enum bssmap_reset_fsm_event { |
Neels Hofmeyr | e95b92b | 2020-10-09 17:18:29 +0200 | [diff] [blame] | 5 | BSSMAP_RESET_EV_RX_RESET, |
Neels Hofmeyr | c27ae2d | 2020-10-04 21:32:52 +0200 | [diff] [blame] | 6 | BSSMAP_RESET_EV_RX_RESET_ACK, |
| 7 | BSSMAP_RESET_EV_CONN_CFM_SUCCESS, |
| 8 | BSSMAP_RESET_EV_CONN_CFM_FAILURE, |
| 9 | }; |
| 10 | |
| 11 | struct bssmap_reset_cfg { |
| 12 | int conn_cfm_failure_threshold; |
| 13 | struct { |
| 14 | void (*tx_reset)(void *data); |
Neels Hofmeyr | e95b92b | 2020-10-09 17:18:29 +0200 | [diff] [blame] | 15 | void (*tx_reset_ack)(void *data); |
Neels Hofmeyr | c27ae2d | 2020-10-04 21:32:52 +0200 | [diff] [blame] | 16 | void (*link_up)(void *data); |
| 17 | void (*link_lost)(void *data); |
| 18 | } ops; |
| 19 | void *data; |
| 20 | }; |
| 21 | |
| 22 | struct bssmap_reset { |
| 23 | struct osmo_fsm_inst *fi; |
| 24 | struct bssmap_reset_cfg cfg; |
| 25 | int conn_cfm_failures; |
| 26 | }; |
| 27 | |
| 28 | struct bssmap_reset *bssmap_reset_alloc(void *ctx, const char *label, const struct bssmap_reset_cfg *cfg); |
| 29 | bool bssmap_reset_is_conn_ready(const struct bssmap_reset *bssmap_reset); |