summaryrefslogtreecommitdiffstats
path: root/src/target/firmware/layer1/l23_api.c
diff options
context:
space:
mode:
authorAndreas.Eversberg <jolly@eversberg.eu>2010-09-11 12:10:31 +0000
committerAndreas.Eversberg <jolly@eversberg.eu>2010-09-11 12:10:31 +0000
commitfa686fd4c9601a7ded99c38e2497ce2099140e98 (patch)
tree386d640684e9a2877bc0935682f5660f46c9a123 /src/target/firmware/layer1/l23_api.c
parent09c2e5344c429362075361bfac484b2e2f4ae919 (diff)
[layer23 / layer1] Added interface for changing crypto mode of DSP
The layer23 will now set crypto mode and key when CIPHERING MODE COMMAND is received. After crypto mode has been set, CIPHERING MODE COMPLETE is sent. NOTE: Layer1 implements only the interface, there is no functionality to it yet.
Diffstat (limited to 'src/target/firmware/layer1/l23_api.c')
-rw-r--r--src/target/firmware/layer1/l23_api.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/target/firmware/layer1/l23_api.c b/src/target/firmware/layer1/l23_api.c
index 8cd8ad00..e103a78c 100644
--- a/src/target/firmware/layer1/l23_api.c
+++ b/src/target/firmware/layer1/l23_api.c
@@ -201,6 +201,20 @@ static void l1ctl_rx_dm_est_req(struct msgb *msg)
l1a_mftask_set(1 << chan_nr2mf_task(ul->chan_nr));
}
+/* receive a L1CTL_CRYPTO_REQ from L23 */
+static void l1ctl_rx_crypto_req(struct msgb *msg)
+{
+ struct l1ctl_hdr *l1h = (struct l1ctl_hdr *) msg->data;
+ struct l1ctl_info_ul *ul = (struct l1ctl_info_ul *) l1h->data;
+ struct l1ctl_crypto_req *cr = (struct l1ctl_crypto_req *) ul->payload;
+ uint8_t key_len = msg->len - sizeof(*l1h) - sizeof(*ul) - sizeof(*cr);
+
+ printd("L1CTL_CRYPTO_REQ (algo=A5/%u, len=%u)\n", cr->algo, key_len);
+
+ // for dieter: (cr->alog, cr->key, key_len);
+
+}
+
/* receive a L1CTL_DM_REL_REQ from L23 */
static void l1ctl_rx_dm_rel_req(struct msgb *msg)
{
@@ -389,6 +403,9 @@ static void l1a_l23_rx_cb(uint8_t dlci, struct msgb *msg)
case L1CTL_PARAM_REQ:
l1ctl_rx_param_req(msg);
break;
+ case L1CTL_CRYPTO_REQ:
+ l1ctl_rx_crypto_req(msg);
+ break;
case L1CTL_RACH_REQ:
l1ctl_rx_rach_req(msg);
break;