diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2011-12-14 09:37:50 +0100 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2016-09-25 08:11:48 +0200 |
commit | 450a84eafc36e774045733c092a51aaa63bea862 (patch) | |
tree | 13bceb03c2ad123cc02db4c2ab9f7c445ade031a /src/host/layer23/src/common | |
parent | 39f7b1595c33b7df16294f2a97e3b6a2abbfb170 (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.c | 36 |
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); |