rspro_server: Split CONNECTED into CLIENT and BANKD specific states
Change-Id: I5b2205393de62b16439b49fb7a39ee640f750cc5
diff --git a/src/server/rspro_server.c b/src/server/rspro_server.c
index 90f0ba7..f4e09e6 100644
--- a/src/server/rspro_server.c
+++ b/src/server/rspro_server.c
@@ -66,7 +66,8 @@
CLNTC_ST_INIT,
CLNTC_ST_ESTABLISHED,
CLNTC_ST_WAIT_CONF_RES, /* waiting for ConfigClientRes */
- CLNTC_ST_CONNECTED,
+ CLNTC_ST_CONNECTED_BANKD,
+ CLNTC_ST_CONNECTED_CLIENT,
};
enum remsim_server_client_event {
@@ -142,7 +143,7 @@
conn->client.slot.slot_nr);
resp = rspro_gen_ConnectClientRes(&conn->srv->comp_id, ResultCode_ok);
client_conn_send(conn, resp);
- osmo_fsm_inst_state_chg(fi, CLNTC_ST_CONNECTED, 0, 0);
+ osmo_fsm_inst_state_chg(fi, CLNTC_ST_CONNECTED_CLIENT, 0, 0);
}
/* reparent us from srv->connections to srv->clients */
@@ -175,7 +176,7 @@
client_conn_send(conn, resp);
/* the state change will associate any pre-existing slotmaps */
- osmo_fsm_inst_state_chg(fi, CLNTC_ST_CONNECTED, 0, 0);
+ osmo_fsm_inst_state_chg(fi, CLNTC_ST_CONNECTED_BANKD, 0, 0);
osmo_fsm_inst_dispatch(fi, CLNTC_E_PUSH, NULL);
break;
@@ -188,14 +189,14 @@
{
switch (event) {
case CLNTC_E_CONFIG_CL_RES:
- osmo_fsm_inst_state_chg(fi, CLNTC_ST_CONNECTED, 0, 0);
+ osmo_fsm_inst_state_chg(fi, CLNTC_ST_CONNECTED_CLIENT, 0, 0);
break;
default:
OSMO_ASSERT(0);
}
}
-static void clnt_st_connected_cl_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+static void clnt_st_connected_client_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
{
#if 0
struct rspro_client_conn *conn = fi->priv;
@@ -209,7 +210,7 @@
#endif
}
-static void clnt_st_connected_bk_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+static void clnt_st_connected_bankd_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
{
struct rspro_client_conn *conn = fi->priv;
struct slotmaps *slotmaps = conn->srv->slotmaps;
@@ -225,22 +226,19 @@
slotmaps_unlock(slotmaps);
}
-static void clnt_st_connected_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+static void clnt_st_connected_client(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
struct rspro_client_conn *conn = fi->priv;
- switch (conn->comp_id.type) {
- case ComponentType_remsimClient:
- clnt_st_connected_cl_onenter(fi, prev_state);
- break;
- case ComponentType_remsimBankd:
- clnt_st_connected_bk_onenter(fi, prev_state);
- break;
+ struct slotmaps *slotmaps = conn->srv->slotmaps;
+ const struct RsproPDU_t *rx = NULL;
+
+ switch (event) {
default:
OSMO_ASSERT(0);
}
}
-static void clnt_st_connected(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+static void clnt_st_connected_bankd(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
struct rspro_client_conn *conn = fi->priv;
struct slotmaps *slotmaps = conn->srv->slotmaps;
@@ -347,22 +345,30 @@
[CLNTC_ST_ESTABLISHED] = {
.name = "ESTABLISHED",
.in_event_mask = S(CLNTC_E_CLIENT_CONN) | S(CLNTC_E_BANK_CONN),
- .out_state_mask = S(CLNTC_ST_CONNECTED) | S(CLNTC_ST_WAIT_CONF_RES),
+ .out_state_mask = S(CLNTC_ST_CONNECTED_CLIENT) | S(CLNTC_ST_WAIT_CONF_RES) |
+ S(CLNTC_ST_CONNECTED_BANKD),
.action = clnt_st_established,
},
[CLNTC_ST_WAIT_CONF_RES] = {
.name = "WAIT_CONFIG_RES",
.in_event_mask = S(CLNTC_E_CONFIG_CL_RES),
- .out_state_mask = S(CLNTC_ST_CONNECTED),
+ .out_state_mask = S(CLNTC_ST_CONNECTED_CLIENT),
.action = clnt_st_wait_cl_conf_res,
},
- [CLNTC_ST_CONNECTED] = {
- .name = "CONNECTED",
+ [CLNTC_ST_CONNECTED_CLIENT] = {
+ .name = "CONNECTED_CLIENT",
+ .in_event_mask = 0,
+ .action = clnt_st_connected_client,
+ .onenter = clnt_st_connected_client_onenter,
+ },
+ [CLNTC_ST_CONNECTED_BANKD] = {
+ .name = "CONNECTED_BANKD",
.in_event_mask = S(CLNTC_E_CREATE_MAP_RES) | S(CLNTC_E_REMOVE_MAP_RES) |
S(CLNTC_E_PUSH),
- .action = clnt_st_connected,
- .onenter = clnt_st_connected_onenter,
+ .action = clnt_st_connected_bankd,
+ .onenter = clnt_st_connected_bankd_onenter,
},
+
};
static struct osmo_fsm remsim_server_client_fsm = {