summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas.Eversberg <jolly@eversberg.eu>2010-06-20 18:18:45 +0000
committerAndreas.Eversberg <jolly@eversberg.eu>2010-06-20 18:18:45 +0000
commit562ff2dd8926a880d4f0f98b2023253a95fab774 (patch)
tree73581fca19d7c00718f775eab82f0c05c298231d /src
parent17e0a2c07501fce7ed790845c372878fbe0e52bb (diff)
layer23: Added CLIP and CLIR feature.
Diffstat (limited to 'src')
-rw-r--r--src/host/layer23/include/osmocom/settings.h1
-rw-r--r--src/host/layer23/src/mnccms.c4
-rw-r--r--src/host/layer23/src/vty_interface.c50
3 files changed, 54 insertions, 1 deletions
diff --git a/src/host/layer23/include/osmocom/settings.h b/src/host/layer23/include/osmocom/settings.h
index 70cceea2..95c53a83 100644
--- a/src/host/layer23/include/osmocom/settings.h
+++ b/src/host/layer23/include/osmocom/settings.h
@@ -23,6 +23,7 @@ struct gsm_settings {
/* call related settings */
uint8_t cw; /* set if call-waiting is allowed */
+ uint8_t clip, clir;
};
int gsm_settings_init(struct osmocom_ms *ms);
diff --git a/src/host/layer23/src/mnccms.c b/src/host/layer23/src/mnccms.c
index 1dda80b1..3f6f8661 100644
--- a/src/host/layer23/src/mnccms.c
+++ b/src/host/layer23/src/mnccms.c
@@ -317,6 +317,10 @@ int mncc_call(struct osmocom_ms *ms, char *number)
setup.bearer_cap.speech_ver[1] = -1; /* end of list */
setup.bearer_cap.transfer = 0;
setup.bearer_cap.mode = 0;
+ if (ms->settings.clir)
+ setup.clir.sup = 1;
+ else if (ms->settings.clip)
+ setup.clir.inv = 1;
}
return mncc_send(ms, MNCC_SETUP_REQ, &setup);
diff --git a/src/host/layer23/src/vty_interface.c b/src/host/layer23/src/vty_interface.c
index 8e9f55ff..794ead09 100644
--- a/src/host/layer23/src/vty_interface.c
+++ b/src/host/layer23/src/vty_interface.c
@@ -541,6 +541,8 @@ static void config_write_ms_single(struct vty *vty, struct osmocom_ms *ms)
vty_out(vty, " emergency-imsi %s%s", (ms->settings.emergency_imsi[0]) ?
ms->settings.emergency_imsi : "none", VTY_NEWLINE);
vty_out(vty, " %scall-waiting%s", (set->cw) ? "" : "no ", VTY_NEWLINE);
+ vty_out(vty, " %sclip%s", (set->clip) ? "" : "no ", VTY_NEWLINE);
+ vty_out(vty, " %sclir%s", (set->clir) ? "" : "no ", VTY_NEWLINE);
vty_out(vty, " test-sim%s", VTY_NEWLINE);
vty_out(vty, " imsi %s%s", ms->settings.test_imsi, VTY_NEWLINE);
vty_out(vty, " %sbarred-access%s", (set->test_barr) ? "" : "no ",
@@ -660,7 +662,7 @@ DEFUN(cfg_ms_emerg_imsi, cfg_ms_emerg_imsi_cmd, "emergency-imsi (none|IMSI)",
}
DEFUN(cfg_no_cw, cfg_ms_no_cw_cmd, "no call-waiting",
- "Disallow waiting calls")
+ NO_STR "Disallow waiting calls")
{
struct osmocom_ms *ms = vty->index;
@@ -679,6 +681,48 @@ DEFUN(cfg_cw, cfg_ms_cw_cmd, "call-waiting",
return CMD_SUCCESS;
}
+DEFUN(cfg_clip, cfg_ms_clip_cmd, "clip",
+ "Force caller ID presentation")
+{
+ struct osmocom_ms *ms = vty->index;
+
+ ms->settings.clip = 1;
+ ms->settings.clir = 0;
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_clir, cfg_ms_clir_cmd, "clir",
+ "Force caller ID restriction")
+{
+ struct osmocom_ms *ms = vty->index;
+
+ ms->settings.clip = 0;
+ ms->settings.clir = 1;
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_no_clip, cfg_ms_no_clip_cmd, "no clip",
+ NO_STR "Disable forcing of caller ID presentation")
+{
+ struct osmocom_ms *ms = vty->index;
+
+ ms->settings.clip = 0;
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_no_clir, cfg_ms_no_clir_cmd, "no clir",
+ NO_STR "Disable forcing of caller ID restriction")
+{
+ struct osmocom_ms *ms = vty->index;
+
+ ms->settings.clir = 0;
+
+ return CMD_SUCCESS;
+}
+
DEFUN(cfg_ms_sim, cfg_ms_sim_cmd, "sim (none|test)",
"Set sim card type when powering on\nNo sim interted\n"
"Test sim inserted")
@@ -843,6 +887,10 @@ int ms_vty_init(void)
install_element(MS_NODE, &cfg_ms_emerg_imsi_cmd);
install_element(MS_NODE, &cfg_ms_cw_cmd);
install_element(MS_NODE, &cfg_ms_no_cw_cmd);
+ install_element(MS_NODE, &cfg_ms_clip_cmd);
+ install_element(MS_NODE, &cfg_ms_clir_cmd);
+ install_element(MS_NODE, &cfg_ms_no_clip_cmd);
+ install_element(MS_NODE, &cfg_ms_no_clir_cmd);
install_element(MS_NODE, &cfg_ms_sim_cmd);
install_element(MS_NODE, &cfg_testsim_cmd);