9
0
Fork 0

isup: Start with isup support in the cellmgr.

Start parsing the ISUP messages. This just adds what
we need to handle now and will not grow it a lot.
This commit is contained in:
Holger Hans Peter Freyther 2010-12-09 17:08:06 +01:00
parent 58d0c24f03
commit 03ba4f485b
6 changed files with 108 additions and 1 deletions

View File

@ -44,4 +44,5 @@ AC_OUTPUT(
tests/Makefile
tests/mtp/Makefile
tests/patching/Makefile
tests/isup/Makefile
Makefile)

View File

@ -34,4 +34,9 @@ Eval [
msg := #(2 0 0 1 0 0 0 0 0 0 0 6 192 232 197 7 0 23) asByteArray.
datagram data: msg.
socket nextPut: datagram.
"ISUP GSR"
msg := #(2 0 0 1 0 0 0 0 0 0 0 11 197 8 197 7 224 3 0 23 1 1 28) asByteArray.
datagram data: msg.
socket nextPut: datagram.
]

49
include/isup_types.h Normal file
View File

@ -0,0 +1,49 @@
/*
* (C) 2010 by Holger Hans Peter Freyther <zecke@selfish.org>
* (C) 2010 by On-Waves
* All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#ifndef isup_types_h
#define isup_types_h
#include <stdint.h>
struct msgb;
struct mtp_link;
/* This is from Table 4/Q.763 */
#define ISUP_MSG_GRS 0x17
#define ISUP_MSG_GRA 0x29
struct isup_msg_hdr {
uint16_t cic : 12,
spare : 4;
uint8_t msg_type;
uint8_t data[0];
} __attribute__((packed));
struct isup_msg_grs {
uint8_t pointer_int;
};
int mtp_link_forward_isup(struct mtp_link *link, struct msgb *msg, int sls);
int isup_parse_grs(const uint8_t *data, uint8_t length);
#endif

View File

@ -1 +1 @@
SUBDIRS = mtp patching
SUBDIRS = mtp patching isup

4
tests/isup/Makefile.am Normal file
View File

@ -0,0 +1,4 @@
INCLUDES = $(all_includes) -I$(top_srcdir)/include -Wall
noinst_PROGRAMS = isup_parse_test
isup_parse_test_SOURCES = isup_parse_test.c

View File

@ -0,0 +1,48 @@
/*
* (C) 2010 by Holger Hans Peter Freyther <zecke@selfish.org>
* (C) 2010 by On-Waves
* All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#include <isup_types.h>
#include <stdlib.h>
#include <stdio.h>
#define ASSERT(got,want) \
if (got != want) { \
fprintf(stderr, "Values should be the same 0x%x 0x%x at %s:%d\n", \
got, want, __FILE__, __LINE__); \
abort(); \
}
static void test_cic_parsing()
{
static const uint8_t isup_grs[] = {3, 0, 23, 1, 1, 28};
struct isup_msg_hdr *hdr;
hdr = (struct isup_msg_hdr *) isup_grs;
ASSERT(hdr->cic, 3);
ASSERT(hdr->msg_type, ISUP_MSG_GRS);
}
int main(int argc, char **argv)
{
test_cic_parsing();
return 0;
}