diff options
author | Daniel Willmann <daniel@totalueberwachung.de> | 2008-12-29 03:45:50 +0000 |
---|---|---|
committer | Daniel Willmann <daniel@totalueberwachung.de> | 2008-12-29 03:45:50 +0000 |
commit | aecbbed5e439d03c613531c2f64d9c3eacde66fa (patch) | |
tree | cdbf22ec6ed4ec82ebfc8f07ada634829a0caa2e /src | |
parent | 9dfbf253c69401ebd78066ea53f2187530ad5cea (diff) |
RP-ACK needs to be sent in a CP-DATA
Diffstat (limited to 'src')
-rw-r--r-- | src/gsm_04_11.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/gsm_04_11.c b/src/gsm_04_11.c index a409a59db..59ab6d356 100644 --- a/src/gsm_04_11.c +++ b/src/gsm_04_11.c @@ -127,10 +127,12 @@ static int gsm411_send_rp_ack(struct gsm_lchan *lchan, u_int8_t trans_id, msg->lchan = lchan; gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh)); - gh->proto_discr = GSM48_PDISC_SMS | trans_id<<4; - gh->msg_type = GSM411_MT_CP_ACK; + // Outgoing needs the highest bit set + gh->proto_discr = GSM48_PDISC_SMS | trans_id<<4 | 0x80; + gh->msg_type = GSM411_MT_CP_DATA; rp = (struct gsm411_rp_hdr *)msgb_put(msg, sizeof(*rp)); + rp->len = 2; rp->msg_type = GSM411_MT_RP_ACK_MT; rp->msg_ref = msg_ref; @@ -149,8 +151,9 @@ static int gsm411_send_rp_error(struct gsm_lchan *lchan, u_int8_t trans_id, msg->lchan = lchan; gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh)); - gh->proto_discr = GSM48_PDISC_SMS | trans_id<<4; - gh->msg_type = GSM411_MT_CP_ERROR; + // Outgoing needs the highest bit set + gh->proto_discr = GSM48_PDISC_SMS | trans_id<<4 | 0x80; + gh->msg_type = GSM411_MT_CP_DATA; rp = (struct gsm411_rp_hdr *)msgb_put(msg, sizeof(*rp)); rp->msg_type = GSM411_MT_RP_ERROR_MT; |