summaryrefslogtreecommitdiffstats
path: root/src/host/layer23/src/common
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2011-12-14 09:37:50 +0100
committerAndreas Eversberg <jolly@eversberg.eu>2016-09-25 08:11:48 +0200
commit450a84eafc36e774045733c092a51aaa63bea862 (patch)
tree13bceb03c2ad123cc02db4c2ab9f7c445ade031a /src/host/layer23/src/common
parent39f7b1595c33b7df16294f2a97e3b6a2abbfb170 (diff)
[HACK] Use display and keypad via L1CTL
This hack is just for demonstration.
Diffstat (limited to 'src/host/layer23/src/common')
-rw-r--r--src/host/layer23/src/common/l1ctl.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/host/layer23/src/common/l1ctl.c b/src/host/layer23/src/common/l1ctl.c
index 70fefec5..3804aae7 100644
--- a/src/host/layer23/src/common/l1ctl.c
+++ b/src/host/layer23/src/common/l1ctl.c
@@ -950,6 +950,38 @@ int l1ctl_tx_ringer_req(struct osmocom_ms *ms, uint8_t volume)
return osmo_send_l1(ms, msg);
}
+static int rx_l1_keypad_ind(struct osmocom_ms *ms, struct msgb *msg)
+{
+ struct l1ctl_keypad_ind *kp_ind;
+ struct osmobb_keypad kp;
+
+ kp_ind = (struct l1ctl_keypad_ind *) msg->l1h;
+
+ kp.ms = ms;
+ kp.key = kp_ind->key;
+ osmo_signal_dispatch(SS_L1CTL, S_L1CTL_KEYPAD, &kp);
+
+ return 0;
+}
+
+/* Transmit L1CTL_NEIGH_PM_REQ */
+int l1ctl_tx_display_req(struct osmocom_ms *ms, int x, int y, char *text)
+{
+ struct msgb *msg;
+ struct l1ctl_display_req *dr;
+
+ msg = osmo_l1_alloc(L1CTL_DISPLAY_REQ);
+ if (!msg)
+ return -1;
+
+ dr = (struct l1ctl_display_req *) msgb_put(msg, sizeof(*dr));
+ dr->x = x;
+ dr->y = y;
+ strncpy(dr->text, text, sizeof(dr->text) - 1);
+
+ return osmo_send_l1(ms, msg);
+}
+
/* Receive incoming data from L1 using L1CTL format */
int l1ctl_recv(struct osmocom_ms *ms, struct msgb *msg)
{
@@ -1016,6 +1048,10 @@ int l1ctl_recv(struct osmocom_ms *ms, struct msgb *msg)
case L1CTL_TRAFFIC_CONF:
msgb_free(msg);
break;
+ case L1CTL_KEYPAD_IND:
+ rc = rx_l1_keypad_ind(ms, msg);
+ msgb_free(msg);
+ break;
default:
LOGP(DL1C, LOGL_ERROR, "Unknown MSG: %u\n", l1h->msg_type);
msgb_free(msg);