| /*! \addtogroup sms |
| * @{ |
| * \file gsm0411_smr.h */ |
| |
| #pragma once |
| |
| #include <osmocom/gsm/protocol/gsm_04_11.h> |
| |
| #define GSM411_SM_RL_DATA_REQ 0x401 |
| #define GSM411_SM_RL_DATA_IND 0x402 |
| #define GSM411_SM_RL_MEM_AVAIL_REQ 0x403 |
| #define GSM411_SM_RL_MEM_AVAIL_IND 0x404 |
| #define GSM411_SM_RL_REPORT_REQ 0x405 |
| #define GSM411_SM_RL_REPORT_IND 0x406 |
| |
| struct gsm411_smr_inst { |
| uint64_t id; /* a unique id for the SMS */ |
| int network; /* is this a MO (0) or MT (1) transfer */ |
| int (*rl_recv) (struct gsm411_smr_inst *inst, int msg_type, |
| struct msgb *msg); |
| int (*mn_send) (struct gsm411_smr_inst *inst, int msg_type, |
| struct msgb *msg); |
| |
| enum gsm411_rp_state rp_state; |
| struct osmo_timer_list rp_timer; |
| }; |
| |
| extern const struct value_string gsm411_rp_cause_strs[]; |
| |
| /* init a new instance */ |
| void gsm411_smr_init(struct gsm411_smr_inst *inst, uint64_t id, int network, |
| int (*rl_recv) (struct gsm411_smr_inst *inst, int msg_type, |
| struct msgb *msg), |
| int (*mn_send) (struct gsm411_smr_inst *inst, int msg_type, |
| struct msgb *msg)); |
| |
| /* clear instance */ |
| void gsm411_smr_clear(struct gsm411_smr_inst *inst); |
| |
| /* message from upper layer */ |
| int gsm411_smr_send(struct gsm411_smr_inst *inst, int msg_type, |
| struct msgb *msg); |
| |
| /* message from lower layer */ |
| int gsm411_smr_recv(struct gsm411_smr_inst *inst, int msg_type, |
| struct msgb *msg); |
| |
| /*! @} */ |