[asterisk-commits] may: branch may/smpp r401329 - /team/may/smpp/branches/10/addons/res_smpp.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Oct 21 14:57:05 CDT 2013
Author: may
Date: Mon Oct 21 14:57:03 2013
New Revision: 401329
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=401329
Log:
fill & parse tlv tags from libsmpp
Modified:
team/may/smpp/branches/10/addons/res_smpp.c
Modified: team/may/smpp/branches/10/addons/res_smpp.c
URL: http://svnview.digium.com/svn/asterisk/team/may/smpp/branches/10/addons/res_smpp.c?view=diff&rev=401329&r1=401328&r2=401329
==============================================================================
--- team/may/smpp/branches/10/addons/res_smpp.c (original)
+++ team/may/smpp/branches/10/addons/res_smpp.c Mon Oct 21 14:57:03 2013
@@ -75,7 +75,19 @@
static pthread_t listener = AST_PTHREADT_NULL;
static char system_id[16] = "asterisk";
AST_MUTEX_DEFINE_STATIC(smpp_lock);
-//
+
+
+#define OPERACION( p_tlv_id ) \
+ { .tlv = #p_tlv_id,\
+ .tlvid = p_tlv_id },
+
+static struct tlvdesc {
+ char *tlv;
+ uint16_t tlvid;
+} tlvs[] = {
+#include "def_list/tlv_id.list"
+ { .tlv = "", .tlvid = 0, }
+};
struct smpp_smsc;
@@ -128,8 +140,6 @@
static int send_bind_resp_fail(int socket, int sequence, int command_status);
//
-// return conference parameters to channel driver
-//
static char* generate_msgid(char *msgid)
{
@@ -315,7 +325,21 @@
while (tlv) { \
tlvnum++; \
snprintf(tmp2, sizeof(tmp2), "tlv.%d.tag", tlvnum); \
- snprintf(tmp, sizeof(tmp), "%d" , tlv->tag); \
+ tmp[0] = 0; \
+ int k; \
+ for (k = 0; tlvs[k].tlvid; k++) { \
+ if (tlvs[k].tlvid == tlv->tag) { \
+ strcpy(tmp, tlvs[k].tlv); \
+ char *space = strchr(tmp, ' '); \
+ if (space) { \
+ *space = 0; \
+ } \
+ break; \
+ } \
+ } \
+ if (!tmp[0]) { \
+ snprintf(tmp, sizeof(tmp), "%d" , tlv->tag); \
+ } \
ast_msg_set_var(msg, tmp2, tmp); \
snprintf(tmp2, sizeof(tmp2), "tlv.%d.length", tlvnum); \
snprintf(tmp, sizeof(tmp), "%d" , tlv->length); \
@@ -1293,6 +1317,16 @@
snprintf(tmp, sizeof(tmp), "tlv.%d.tag", tlvnum); \
if (ast_msg_get_var(message, tmp)) { \
tlv->tag = atoi(ast_msg_get_var(message, tmp)); \
+ if (!tlv->tag) { \
+ const char *tag = ast_msg_get_var(message, tmp); \
+ int k; \
+ for(k = 0; tlvs[k].tlvid; k++) { \
+ if (!strncmp(tag, tlvs[k].tlv, strlen(tag))) { \
+ tlv->tag = tlvs[k].tlvid; \
+ break; \
+ } \
+ } \
+ } \
} \
snprintf(tmp, sizeof(tmp), "tlv.%d.length", tlvnum); \
if (ast_msg_get_var(message, tmp)) { \
More information about the asterisk-commits
mailing list