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 = {