diff options
author | Pablo Neira Ayuso <pablo@gnumonks.org> | 2012-08-15 22:33:08 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@gnumonks.org> | 2012-08-15 23:34:38 +0200 |
commit | b2f62cea7d44ab2affadfe3e8c5346742b373c2f (patch) | |
tree | 7adb7f08a5a21fe35fee2e7e87411fadd498075a /src | |
parent | c12d9d97e469b7e84ba4809b7f2e9022d82fe2cd (diff) |
add ipa_unit
This adds the generic ipa_unit object that is allocated and set
by the BTS while initializing the channels.
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/ipa_unit.c | 118 |
2 files changed, 119 insertions, 0 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index ba47a36..ea204b5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -16,6 +16,7 @@ libosmonetif_la_SOURCES = amr.c \ channel.c \ datagram.c \ ipa.c \ + ipa_unit.c \ osmux.c \ rs232.c \ rtp.c \ diff --git a/src/ipa_unit.c b/src/ipa_unit.c new file mode 100644 index 0000000..ccf8841 --- /dev/null +++ b/src/ipa_unit.c @@ -0,0 +1,118 @@ +#include <osmocom/core/talloc.h> + +#include <stdint.h> +#include <string.h> + +struct ipaccess_unit { + uint16_t site_id; + uint16_t bts_id; + uint16_t trx_id; + char *name; + char *hwvers; + char *swvers; + uint8_t mac_addr[6]; + char *location1; + char *location2; + char *serno; +}; + +struct ipaccess_unit *osmo_ipa_unit_alloc() +{ + struct ipaccess_unit *unit; + + unit = talloc_zero(NULL, struct ipaccess_unit); + if (unit == NULL) + return NULL; + + unit->name = strdup(""); + unit->hwvers = strdup(""); + unit->swvers = strdup(""); + unit->location1 = strdup(""); + unit->location2 = strdup(""); + unit->serno = strdup(""); + + return unit; +} + +void osmo_ipa_unit_free(struct ipaccess_unit *unit) +{ + if (unit->name) + free(unit->name); + if (unit->hwvers) + free(unit->hwvers); + if (unit->swvers) + free(unit->swvers); + if (unit->location1) + free(unit->location1); + if (unit->location2) + free(unit->location2); + if (unit->serno) + free(unit->serno); + + talloc_free(unit); +} + +void osmo_ipa_unit_set_site_id(struct ipaccess_unit *unit, uint16_t site_id) +{ + unit->site_id = site_id; +} + +void osmo_ipa_unit_set_bts_id(struct ipaccess_unit *unit, uint16_t bts_id) +{ + unit->bts_id = bts_id; +} + +void osmo_ipa_unit_set_trx_id(struct ipaccess_unit *unit, uint16_t trx_id) +{ + unit->trx_id = trx_id; +} + +void osmo_ipa_unit_set_unit_name(struct ipaccess_unit *unit, const char *name) +{ + if (unit->name) + free(unit->name); + + unit->name = strdup(name); +} + +void osmo_ipa_unit_set_unit_hwvers(struct ipaccess_unit *unit, const char *vers) +{ + if (unit->hwvers) + free(unit->hwvers); + + unit->hwvers = strdup(vers); +} + +void osmo_ipa_unit_set_unit_swvers(struct ipaccess_unit *unit, const char *vers) +{ + if (unit->swvers) + free(unit->swvers); + + unit->swvers = strdup(vers); +} + +void osmo_ipa_unit_set_unit_mac_addr(struct ipaccess_unit *unit, uint8_t *addr) +{ + memcpy(unit->mac_addr, addr, sizeof(unit->mac_addr)); +} + +void osmo_ipa_unit_set_unit_loc1(struct ipaccess_unit *unit, const char *loc) +{ + if (unit->location1) + free(unit->location1); + + unit->location1 = strdup(loc); +} + +void osmo_ipa_unit_set_unit_loc2(struct ipaccess_unit *unit, const char *loc) +{ + if (unit->location2) + free(unit->location2); + + unit->location2 = strdup(loc); +} + +void osmo_ipa_unit_set_unit_serno(struct ipaccess_unit *unit, const char *serno) +{ + unit->serno = strdup(serno); +} |