xua_msg: Add support for msg_event_maps
msg_event_maps facilitate the mapping from a xUA message (class + type) to an integer event. This is useful when passing xUA messages to a osmo_fsm. Change-Id: Iee1c7fc2bf64219ebb71a0dbe6fd210749332413
This commit is contained in:
parent
d75e8967ef
commit
c96db7fa58
|
@ -60,6 +60,12 @@ struct xua_dialect {
|
|||
const struct xua_msg_class *class[256];
|
||||
};
|
||||
|
||||
struct xua_msg_event_map {
|
||||
uint8_t msg_class;
|
||||
uint8_t msg_type;
|
||||
int event;
|
||||
};
|
||||
|
||||
extern const struct xua_dialect xua_dialect_sua;
|
||||
extern const struct xua_dialect xua_dialect_m3ua;
|
||||
|
||||
|
@ -94,3 +100,6 @@ char *xua_hdr_dump(struct xua_msg *xua, const struct xua_dialect *dialect);
|
|||
char *xua_msg_dump(struct xua_msg *xua, const struct xua_dialect *dialect);
|
||||
int xua_dialect_check_all_mand_ies(const struct xua_dialect *dialect, struct xua_msg *xua);
|
||||
|
||||
int xua_msg_event_map(const struct xua_msg *xua,
|
||||
const struct xua_msg_event_map *maps,
|
||||
unsigned int num_maps);
|
||||
|
|
|
@ -361,6 +361,27 @@ int xua_msg_add_sccp_addr(struct xua_msg *xua, uint16_t iei, const struct osmo_s
|
|||
return rc;
|
||||
}
|
||||
|
||||
/*! \brief Map from a xua_msg (class+type) to an event
|
||||
* \param[in] xua xUA message which is to be mapped
|
||||
* \param[in] maps Table containing msg type+class -> event maps
|
||||
* \[aram[in] num_maps number of entries in \ref maps
|
||||
* \returns event >= 0; negative on error (no map found) */
|
||||
int xua_msg_event_map(const struct xua_msg *xua,
|
||||
const struct xua_msg_event_map *maps,
|
||||
unsigned int num_maps)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i= 0; i < num_maps; i++) {
|
||||
const struct xua_msg_event_map *map = &maps[i];
|
||||
if (xua->hdr.msg_class == map->msg_class &&
|
||||
xua->hdr.msg_type == map->msg_type) {
|
||||
return map->event;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
const char *xua_class_msg_name(const struct xua_msg_class *xmc, uint16_t msg_type)
|
||||
{
|
||||
static char class_buf[64];
|
||||
|
|
Loading…
Reference in New Issue