Neels Hofmeyr | 31f525e | 2018-05-14 18:14:15 +0200 | [diff] [blame] | 1 | /* osmo-bsc API to manage BSSMAP Assignment Command */ |
| 2 | #pragma once |
| 3 | |
| 4 | #include <osmocom/gsm/protocol/gsm_04_08.h> |
| 5 | |
| 6 | #include <osmocom/bsc/debug.h> |
| 7 | |
| 8 | /* This macro automatically includes a final \n, if omitted. */ |
| 9 | #define LOG_ASSIGNMENT(conn, level, fmt, args...) do { \ |
| 10 | if (conn->assignment.fi) \ |
| 11 | LOGPFSML(conn->assignment.fi, level, "%s%s" fmt, \ |
| 12 | conn->assignment.new_lchan ? gsm_lchan_name(conn->assignment.new_lchan) : "", \ |
| 13 | conn->assignment.new_lchan ? " " : "", \ |
| 14 | ## args); \ |
| 15 | else \ |
| 16 | LOGP(DMSC, level, "Assignment%s%s: " fmt, \ |
| 17 | conn->assignment.new_lchan ? " of " : "", \ |
| 18 | conn->assignment.new_lchan ? gsm_lchan_name(conn->assignment.new_lchan) : "", \ |
| 19 | ## args); \ |
| 20 | } while(0) |
| 21 | |
| 22 | enum assignment_fsm_state { |
| 23 | ASSIGNMENT_ST_WAIT_LCHAN_ACTIVE, |
| 24 | ASSIGNMENT_ST_WAIT_RR_ASS_COMPLETE, |
| 25 | ASSIGNMENT_ST_WAIT_LCHAN_ESTABLISHED, |
| 26 | ASSIGNMENT_ST_WAIT_MGW_ENDPOINT_TO_MSC, |
| 27 | }; |
| 28 | |
| 29 | enum assignment_fsm_event { |
| 30 | ASSIGNMENT_EV_LCHAN_ACTIVE, |
| 31 | ASSIGNMENT_EV_LCHAN_ESTABLISHED, |
| 32 | ASSIGNMENT_EV_LCHAN_ERROR, |
| 33 | ASSIGNMENT_EV_MSC_MGW_OK, |
| 34 | ASSIGNMENT_EV_MSC_MGW_FAIL, |
| 35 | ASSIGNMENT_EV_RR_ASSIGNMENT_COMPLETE, |
| 36 | ASSIGNMENT_EV_RR_ASSIGNMENT_FAIL, |
| 37 | ASSIGNMENT_EV_CONN_RELEASING, |
| 38 | }; |
| 39 | |
| 40 | void assignment_fsm_init(); |
| 41 | |
| 42 | void assignment_fsm_start(struct gsm_subscriber_connection *conn, struct gsm_bts *bts, |
| 43 | struct assignment_request *req); |
| 44 | void assignment_reset(struct gsm_subscriber_connection *conn); |