1 /* 2 * Copyright (C) 2006 Raul Tremsal 3 * File : smpp34_structs.h 4 * Author: Raul Tremsal <ultraismo@yahoo.com> 5 * 6 * This file is part of libsmpp34 (c-open-smpp3.4 library). 7 * 8 * The libsmpp34 library is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public License as 10 * published by the Free Software Foundation; either version 2.1 of the 11 * License, or (at your option) any later version. 12 * 13 * This library is distributed in the hope that it will be useful, but 14 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 16 * License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public License 19 * along with this library; if not, write to the Free Software Foundation, 20 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 * 22 */ 23 #ifndef _STB_H_ 24 #define _STB_H_ 25 26 #include <sys/types.h> 27 28 #define SMALL_BUFF 30 29 /* Identify PDUs ident ********************************************************/ 30 #define MAX_TLV_SIZE 1024 31 #define MAX_DAD_SIZE 21 32 #define SERVICE_TYPE_LENGTH 6 33 #define ADDRESS_LENGTH 21 34 #define TIME_LENGTH 17 35 #define SHORT_MESSAGE_LENGTH 255 36 37 /* Globals for definitions ****************************************************/ 38 extern int smpp34_errno; 39 extern char smpp34_strerror[2048]; 40 41 /* Define structures **********************************************************/ 42 typedef struct tlv_t tlv_t; 43 typedef struct dad_t dad_t; 44 typedef struct udad_t udad_t; 45 typedef struct bind_transmitter_t bind_transmitter_t; 46 typedef struct bind_transmitter_resp_t bind_transmitter_resp_t; 47 typedef struct bind_receiver_t bind_receiver_t; 48 typedef struct bind_receiver_resp_t bind_receiver_resp_t; 49 typedef struct bind_transceiver_t bind_transceiver_t; 50 typedef struct bind_transceiver_resp_t bind_transceiver_resp_t; 51 typedef struct outbind_t outbind_t; 52 typedef struct unbind_t unbind_t; 53 typedef struct unbind_resp_t unbind_resp_t; 54 typedef struct generic_nack_t generic_nack_t; 55 typedef struct submit_sm_t submit_sm_t; 56 typedef struct submit_sm_resp_t submit_sm_resp_t; 57 typedef struct submit_multi_t submit_multi_t; 58 typedef struct submit_multi_resp_t submit_multi_resp_t; 59 typedef struct deliver_sm_t deliver_sm_t; 60 typedef struct deliver_sm_resp_t deliver_sm_resp_t; 61 typedef struct data_sm_t data_sm_t; 62 typedef struct data_sm_resp_t data_sm_resp_t; 63 typedef struct query_sm_t query_sm_t; 64 typedef struct query_sm_resp_t query_sm_resp_t; 65 typedef struct cancel_sm_t cancel_sm_t; 66 typedef struct cancel_sm_resp_t cancel_sm_resp_t; 67 typedef struct replace_sm_t replace_sm_t; 68 typedef struct replace_sm_resp_t replace_sm_resp_t; 69 typedef struct enquire_link_t enquire_link_t; 70 typedef struct alert_notification_t alert_notification_t; 71 72 /* TYPEDEFs structs ***********************************************************/ 73 #define instancia 0 74 #define U32( inst, par, _str ) uint32_t par; 75 #define U16( inst, par, _str ) uint16_t par; 76 #define U08( inst, par, _str ) uint8_t par; 77 78 #define O_C_OCTET( inst, par, size ) uint8_t par[ size ]; 79 #define C_OCTET( inst, par, size ) uint8_t par[ size ]; 80 #define OCTET8( inst, par, size ) uint8_t par[ size ]; 81 #define OCTET16( inst, par, size ) uint8_t par[ size ]; 82 83 #define TLV( inst, par, do_tlv ) tlv_t *par; 84 #define UUU( inst, par, size ) union { \ 85 U08( inst, val08, valueDec_08 ); \ 86 U16( inst, val16, valueDec_16 ); \ 87 U32( inst, val32, valueDec_32 ); \ 88 OCTET16( inst, octet, size ); \ 89 } par; 90 91 #define DAD( inst, par, do_dest_address ) dad_t *par; 92 #define UU2( inst, par, size ) union { \ 93 struct { \ 94 U08( instancia, dest_addr_ton, str_addr_ton ); \ 95 U08( instancia, dest_addr_npi, str_addr_npi ); \ 96 C_OCTET( instancia, destination_addr, size ); \ 97 } sme; \ 98 C_OCTET( instancia, dl_name, size ); \ 99 } par; 100 101 #define UDAD( inst, par, do_dest_address ) udad_t *par; 102 103 struct dad_t { 104 #include "def_frame/dad.frame" 105 }; 106 107 struct udad_t { 108 #include "def_frame/udad.frame" 109 }; 110 111 struct tlv_t { 112 #include "def_frame/tlv.frame" 113 }; 114 115 struct bind_transmitter_t { 116 #include "def_frame/header.frame" 117 #include "def_frame/bind_transmitter.frame" 118 }; 119 120 struct bind_transmitter_resp_t { 121 #include "def_frame/header.frame" 122 #include "def_frame/bind_transmitter_resp.frame" 123 }; 124 125 struct bind_receiver_t { 126 #include "def_frame/header.frame" 127 #include "def_frame/bind_receiver.frame" 128 }; 129 130 struct bind_receiver_resp_t { 131 #include "def_frame/header.frame" 132 #include "def_frame/bind_receiver_resp.frame" 133 }; 134 135 struct bind_transceiver_t { 136 #include "def_frame/header.frame" 137 #include "def_frame/bind_transceiver.frame" 138 }; 139 140 struct bind_transceiver_resp_t { 141 #include "def_frame/header.frame" 142 #include "def_frame/bind_transceiver_resp.frame" 143 }; 144 145 struct outbind_t { 146 #include "def_frame/header.frame" 147 #include "def_frame/outbind.frame" 148 }; 149 150 struct unbind_t { 151 #include "def_frame/header.frame" 152 }; 153 154 struct unbind_resp_t { 155 #include "def_frame/header.frame" 156 }; 157 158 struct generic_nack_t { 159 #include "def_frame/header.frame" 160 }; 161 162 struct submit_sm_t { 163 #include "def_frame/header.frame" 164 #include "def_frame/submit_sm.frame" 165 }; 166 167 struct submit_sm_resp_t { 168 #include "def_frame/header.frame" 169 #include "def_frame/submit_sm_resp.frame" 170 }; 171 172 struct submit_multi_t { 173 #include "def_frame/header.frame" 174 #include "def_frame/submit_multi.frame" 175 }; 176 177 struct submit_multi_resp_t { 178 #include "def_frame/header.frame" 179 #include "def_frame/submit_multi_resp.frame" 180 }; 181 182 struct deliver_sm_t { 183 #include "def_frame/header.frame" 184 #include "def_frame/deliver_sm.frame" 185 }; 186 187 struct deliver_sm_resp_t { 188 #include "def_frame/header.frame" 189 #include "def_frame/deliver_sm_resp.frame" 190 }; 191 192 struct data_sm_t { 193 #include "def_frame/header.frame" 194 #include "def_frame/data_sm.frame" 195 }; 196 197 struct data_sm_resp_t { 198 #include "def_frame/header.frame" 199 #include "def_frame/data_sm_resp.frame" 200 }; 201 202 struct query_sm_t { 203 #include "def_frame/header.frame" 204 #include "def_frame/query_sm.frame" 205 }; 206 207 struct query_sm_resp_t { 208 #include "def_frame/header.frame" 209 #include "def_frame/query_sm_resp.frame" 210 }; 211 212 struct cancel_sm_t { 213 #include "def_frame/header.frame" 214 #include "def_frame/cancel_sm.frame" 215 }; 216 217 struct cancel_sm_resp_t { 218 #include "def_frame/header.frame" 219 }; 220 221 struct replace_sm_t { 222 #include "def_frame/header.frame" 223 #include "def_frame/replace_sm.frame" 224 }; 225 226 struct replace_sm_resp_t { 227 #include "def_frame/header.frame" 228 }; 229 230 struct enquire_link_t { 231 #include "def_frame/header.frame" 232 }; 233 234 typedef struct enquire_link_resp_t enquire_link_resp_t; 235 struct enquire_link_resp_t { 236 #include "def_frame/header.frame" 237 }; 238 239 struct alert_notification_t { 240 #include "def_frame/header.frame" 241 #include "def_frame/alert_notification.frame" 242 }; 243 244 #include "def_frame/clean.frame" 245 246 #define PUTLOG( format, param, value, parse ){\ 247 int lenerror = 0;\ 248 lenerror = snprintf((char*)ptrerror,lefterror,format,#param,value,parse);\ 249 ptrerror += lenerror; lefterror -= lenerror;\ 250 } 251 252 /* Prototypes *****************************************************************/ 253 int smpp34_dumpBuf(uint8_t *dest, int destL, uint8_t *src, int srcL); 254 255 int smpp34_dumpPdu(uint32_t type, uint8_t *dest, int size_dest, void* tt); 256 int smpp34_dumpPdu2(uint8_t *dest, int size_dest, void* tt); 257 258 int smpp34_pack(uint32_t type,uint8_t *ptrBuf,int ptrSize,int *ptrLen,void* tt); 259 int smpp34_pack2(uint8_t *ptrBuf,int ptrSize,int *ptrLen,void* tt); 260 261 int smpp34_unpack(uint32_t type, void* tt, uint8_t *ptrBuf, int ptrLen); 262 int smpp34_unpack2(void* tt, uint8_t *ptrBuf, int ptrLen); 263 #endif /* _STB_H_ */ 264