From 40db2e569ab8a47ea5cec441d6854e7cee388cd7 Mon Sep 17 00:00:00 2001 From: bossiel Date: Wed, 14 Apr 2010 23:58:39 +0000 Subject: [PATCH] Update GSM SMS (LTE part). --- trunk/documentation/SMS_Architecture.png | Bin 0 -> 12130 bytes trunk/documentation/programmer-guide-1.0.doc | Bin 391168 -> 428032 bytes .../include/tinysms/tpdu/tsms_tpdu_submit.h | 23 +++++++++++++- trunk/tinySMS/src/tpdu/tsms_tpdu_submit.c | 30 ++++++++++++++++-- trunk/tinySMS/src/tsms_address.c | 4 +-- trunk/tinySMS/src/tsms_common.c | 9 +++++- trunk/tinySMS/test/test.c | 4 +-- trunk/tinySMS/test/test_tpdu.h | 13 +++++--- trunk/tinySMS/tinySMS.vcproj | 8 ----- 9 files changed, 71 insertions(+), 20 deletions(-) create mode 100644 trunk/documentation/SMS_Architecture.png diff --git a/trunk/documentation/SMS_Architecture.png b/trunk/documentation/SMS_Architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..ed79b47915c7571489688c4cc221eac5d41a0b33 GIT binary patch literal 12130 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 delta 54997 zcmeF)2YgJ~|M>s8lSzoxq68sCCu)>fB?v2)6$FVIghUt7y9u&-i+1&1R|~?`77>dj zdRU#PVR!Yu!T=iGbGJ?+-HbLUR@G?(zlIi{7&>tHY# zUK#l#ugnI+8{!Jl_a8odFc{Rm!yQ~SrwE4y%5-BMJNMVd8TpI_G8pU(S*s{Im-{ms z8fTiFU1TPMA!XQ@;ZBS{Xm2pMyD5eSWWDhVJ(*$oc*U@TSwRZ+3d7k8l%ePXq>w7ei}9(##Bno{?DCpzHP)x`M}|j|GLV)!Gkl?u zWwuX4$xJG7mt=S$;c6CJ!Ge-fUY~}tpyfqKy2AED=##cGN0m=g+JRBf zn$&LU*0EP;zmP%w+y-{-(Zj7zNO1qHH7_XX&E@MhZtT{qNxAZ+D_5%Q<{cUuGRUoV z6}KiKz5911m0Q!Uoon|Zr^X?DI`!()GbprUNQMmcLc8|s8q}lfkf45Ddxd6b9MmVM zXGp)0K7BLTl81d9l@Nh(z}%}UB0+mP@fRD{(ak1M895AxlUa> z_h(eUE+KCIUj_KO1%(E?b?g!p+Bw9nYrnp39fQJxI&|$pxgmW^x`hOF?Bdp|Q>TzV zT|+y&1-S)xm3T;KKewQsz4{aM>f|=CSD)@(L$}!!^h%u$^=1??7-nKS4&ofn;}KrqC4NKEq6R}TbU{~i!vZYCBCJyvhAKI8&wVy4 za`LRnv%Z}*d{&>~U5C#KVP$Y|?(%Es4)sW=(%mjop^|F#UdowTYspj!-HoBe42B3y z!WgF(IhkEooV+Qq`-}v(`PRXEtFN2Shh{<3+N;laV zItR}k)QeaqV&(>n)W_Yda!wuCTN!80wvGlwV;^Gh2#-;n^1nd?_@OB}Vlak4>OB!s z@0m~`^t{?%@o+rpa{j(uEoQr>LFt`$tMwUbsB)xwA`tj>~Cl1H%jy(|_ zwSLXwIWs4Zm*CqGLq_zC>J{9YmSxV~Wlzo32Inr)rn2>2v_pNAQi_?r*86;7`%H#{ zl3P{OMFTWLcl1UdjDQ&%AYHs2yC7YC6nAkSwr+n%+|FIPpWO+{paMKm4K>`oDU3)1 z_@WI4VHidr;p+LT=Z_!WyL`d;Z-@2o-K|r%4%V=3D{DkuI#|i3{y0E6n?7X|)!74; z7F`SlrD!Rx2BZYZbu4D#5KiGboJtrBxljZFXosFygjLvzTlg8T(TZJM2oe!cO6}!f zS6n?F#+o#|KYymK;*UN!!okkvpNkFmW?pk?y9{cTa8}QOAq<`vs^m4xs_E|^MRyvA z70CZIdDSE)tLx=5{yG@y3xjSk z8!8gSlI7(#O>#%hm{nEazC9z)75gEce%V3#U>BgFgb$30;tYn|Ov7 z$X1#S7qK{mjAiI(xFJ6(V_z9VJ;Qz?F*t-vxQs`5jHDM2lkUX*khEv(`juPvY+Z!) zi_{sagp)=O>DwbDC{W*;Ck%4cb_`Q$C>;w)rKBQKnB*<_<>0)aFN%Ax8^V5Ez$GN% z9nzJfVkn4GsDXGCD$ni=hj15(<<+QkN^y0n%6ht?rsAS*JU}e@&v(U)F6xpxtjeGJ z!yFlu^Xk%?N|8_InX%C1q)r{Glu<7XRWholLKKsFXsF_3&M93XO~?aR^no-d0%I^1 zv#xRR`kKhCzLAv5Sj5Iwvl3wRwZ~IH4{JW8O?nc~= z#3Kjy@0mMv?$8$C?8RAIGeT*knDa{Ve2`u&30p6AC*Bj$I1B03=lB47dNea~q9CNV zJy8wK&Ok9Wc*norh0kZgx;{@Vy zANCbkPf-CCwaO97VWnH5b$nLq_%On0*pC}1P?1W)6ONTQ+vLRg5sFvlh=`sDLj-1F zHKMTt2hpwy%MKA$)W|K$Ks9WqQdC{CgEdJ1qwh#htx{U6?N&2EAKbfDspVIZvU@}7 z5(BAA0&XJ_Pw@h8@db6u45_Qsvn7gh%32boQ63dFzcI=tC9op#FHr^6(GDS44-Gr8 z6Sr{(&+r^C@d|0^gS3#oXn}SJLQf3U0>>%K6~CdxzeQ&H$qo5Y5QR_?p728xEQ9pv zSzN?JNdG>^3uK@Vi)(%psJp+d&ucKQ4t($p`d|<=*!ta_J}-r8@PchQ3?M!bqc9o~ zn*Staoe~s5d;%sy#RL2Tx2hZ~IOy|{}9c!MOQ@iG{uU>UY}sWGdRZYfr& zC0mp(>NMF=4d2Ng%(j|2&RAmE2W3*vuU6c>c2j{pa3(`r1xgbygUYA^sZcf4LTxlc zW2lFa2Fq7s%|jkh8sLl8MP3E4hTjhR4m0VT#w=3l8BW5H1ix~q|!}Fe2aI;Maqh( z0dGi-Q?U?Ba0qraI8-7VoKX^$PzAn7SCic=CxrFjkI6_vhFYq}3nfym`9f)^hL7Pu zl6;EPYnd#wk7rE!V5{RwA-nBO@~bf!jM>dZ3Q)NnVXI$p>Q@@oPz(MDKy$RfBuvI09K|u*)CSK}#wztB{s@m@piR=wuOV%125D~x zbi@cug0%lSeuMObsTOtA>Mc+-#mAm_1{6aXl!Yg1qaNB|Fos|RW@8_Y;}M?YWi8ET ziLy)SV9Usxk&=PTI1Upq3n^!Q#c-|KR36c|g9WX)Kqg1aS?FW<6N&G`LHvLpaSGB=UOpUj&6nRGSgrZ3VTWI8HSzVxQ*E+d4cl=Vzo9wr zF#Dh{1|tGb@fHK?v0p)s`mA{EQb0gBuD# z?;y>4qq0viOGlMLO?(A^1fl~%&uN%kppiAPVXJ{ty(?5RdKH)HSU|D+|k5mV*{eG z2S;!VtteOO)e*ty0=(m|!+CAxE~T~7Ng5&*v}GunooD(zB*N&& zNiUkBHzwgb97F;-G+{r3{g~dAPHV=#(4SQjaVQ?Zd&dB|#Fj@Lu}I+rehTMPVN=<- z*_w;WxC-iixjLdx-8)rDtDjl5ddJFeW2%y`dM>HXHC)GEsn!i^)qW;aG_O5!TBK0D zv~WZ<vj;Min$hdjvt6G#=Bj4z}iHp?T#{0X5MTz0n^75eeynl~{#19LJj%Pc-vh zwlcE}oxpY6z;nDndO9r|vLh#Qp*m`yEjpnadO$jOCgx!!qHq$=kd+S4hSI2n%8-T8 z5Z(L@84W{;OvNUgR)6nB7PaaA_?#C9=V%yghF-HKu?6C7Y1M;Mq(7EVF4ClG1egpI}n2d zIE<%vE*y(}x_#rac@vk7ShjIMuTFuQ`4HV7AhmdCEnP~LT*F#$oJNyYgqQ^t>#-3> z@DuLhC0@a`HM?_^My=M?b=$$NsJ`>E9JBQ6bML<73^ZSHqqqF2ptdj0!R*~*qwL@E zs_l*|_UeV>YyxXzxk}kLjWN4=AXX{ZHoG+92!6y-9K%IiLRzXCgi!Q?t@_^)Ux$mh zgv+>zTjEqt|faORxda*ohNxqF|8A(L()pRdT59U?8YNx z4y4=B4suaz51!&Tq-jU}VQ5d^bzuAKDCd{8<=B!zxvuu^ujEqqyfqe87v^DM=zmyB z71Ty{T#IdE$EhcO^2kYrqk2bW7c}^|Qq_)=OLfC>rAU?Rl_~#gNWH#+)NLrt2*)Ul z#x6*GPaz}q%A{33#WfRiCgM{6FHr-wHgqID3S+Po(b$IFcmiAdYPO}n(HrOBKwE8X z&P3b;_0bMN=!AY40dqS(gdMMqJj3qLJf0B~a1y5wkN1#{^FuH?p$kd{v5-&?&CmfI z(E~lv7yU2=8?YHa;|<;;Jqw~bYM~AWbueTx3?(uK-(em0YLVxaUW$1y@mL(ekC3I9 zvm?766hZ((5r*DagS9w`vq;1j!4!%NsEC^IK|?e`Hw?f)48jqx*|+`|Jr z!egWjVgG=1$c5Y}j|vDtbBw}h?7&VOLmc8m45ba{h}^~<+{H7z#8;hI&(IBXun#fX zh8s###YHNuK`Jd3mdZ*+Zv<;DHp4=Td`QXyGWG?e6Q%Q1={Q`&E4=Qc6?m*%Q!2~IL)Hnm^a;ER zBXsS|yJ6Hv0}R9*mU8kSFQg9DQ5#>O z9fCEFm&!@S985d}Qb#kSo)MUVvyeJphSd8Zr0x!o`saeQp$w!QwIOY34QWq1NSit! z1UC+>KCpUxr}5t;|I^H`IsfpIsa+v0?}_1v!e;D-b2n){D=G4#3L2vYT54Wz<$8fk zZ;3uw1IO+hVBjZuaB%6#N{zbMiCwq{r%+aU6hmLkz;dkA{F1m{&{Fd3ZOu0=c}cz* zAbDqnI~qgE2|zo1i@Ep?$8a8(@CbI)>7BgxIcEHwbX>xW*lig7ljnM=h5sXmu)4Ytv zSfye=;-fJUE3p>qupWDG94B!D`FpYBM>(yc$#_f&ko1!F7Vh9K9GLzw9q~}~f@>H% zYiz(qY{PaO#1A-zQ-}|Qn;kw?!I`3)ehVlmbu5A#YHRnP!U z5r9GX7Gp6E(=h`}G{3aQO^SI5@nu+nmH4wd#xwmIuHy|p;EUcI6p8M3X0`uGNI z&=q~q7lSYuLogJ>FdP#x3A?ZxQauNXt^%oMb=az!^!iES^(U{NBwb9rcqVZ#@g&Wh zky`jjL%v2JIv^ZlFdvJt4br%CxP%*!2HwF_yu*k7nonlqE~WAZ28^^e2c!oIp*TEH z0bjxwLogcSFbngw%2|wul^{u14l>=037CrMn2E($ie*SdwSnw$a1oba7(~-i7xl0P zn^AKJs}$_Cplrs)O6B<}^0{x#r#bV7p%2Dk0+wJ0_TU08X_cL&o>JBoIFa|4s3v9L zYe>1{FdhrB7)!7Ut08sTgeXYe&LaV@VI0gJ74@{BoYd1?k9Y_kp$7H0wWG^WRuLS8 zaTx7_GjgC3e9;h%;g446j=t!JF_?xm_zs(~6+a^FaQ4*TJ|E5O!Ya~Aa+kSMrYJ&+ zmS}~3*oN&m1!V-ig5Kzl4ajKb6bduKsmVxcf|8>w?{k07V|3A`W}r zQG8{*R9}Ns{{f!jIo=~T)h~+TsE8(Li}naYPlRF`)@!~6j9V4+dg9XTP1ufycmzAT zzyaxz0k&?*N4x}@U>dgIFpeW0mvI$0aUW0d8XsUsm)au@YQrbokkK%mNM`!j8QrwW zg^Ya_b2sAB_kAG!KM*4@6SJ@y8?X^k*nyqchZ8u5LZdkFp#(~zHQJyfg7GbGo&WK` z-UHh=tX{f$>9_+Cdn3XlhD8kOqM3`x+9Y$y9FltEXqt&vFhuZ9@LP5;$U26uKo6|P zChS4RvFzGW937xy9=7AnSj%lue0-llgN0ZJ2Z~7xDfU}Tz#K>wUP7vo zg=*wSArwXlR6sQ}#TZP&6wJhI%*A{x#!{@ocM%46!zLn|u?-q_VIL0S3_hR$?JcUU zbvHIwS{5Z<0TodRU!p0bUzT7g)?h89pB^F!2Kq*U100bB(udA)MJ26eNlt0$ zh|5B%4L_}TIpa@CeLvz&(F`rn5^d2A!w`Wnn280Dg?bbxa1v+m8gIsG^(z>+D}~=M zkOaGNv=S9j8GaatDcGbH_B38r{3LB9>$FJ1nTSIA@tl#vX#(ees0Y`H>_O2K6(;cp z43QWynH|a$Rwt~|{JxYEoK4nzVhIo82!6zIoWMz($2Hi>%1L?oP!XP}hFYkL7HElf z=#PuEqf@zS> zTd#REkORGR;6|LqPmm5wgsl^w5YIpdUfs87REHV`NA2T4pI!55$l0k`#!Cmg!qUlX z8pIc23$|f5_TU+wBlC35s*n#w&=JEh16$!VgEbv)sDi4fjvm;F7@WlU8GIMyCn6Nm`$vG?%j=?Id#(HePRz%}_9K??}s`)l!y>aeAT;`GV zl2+0koh4TqJ@xB_T(b<Lhu{{4!rh1Zz$`81Jvg8J>VBY{p5P!c|NQ%W%!94>ijoIW5F; z+{Hb8uHstNe#RdZ^8)MCrG(2MsV?9;EU8%`=CRCB4&~7hjnEox&>lhPfQ|^qD2&Hc zOhY8LVLPtjI$r#GM>7v#`_FZc(xe2*U2>LOCAVp+Q@`J>0Xf*!Gfi@o+$5*pP(>}% z!k9}dJ;ZoMX(=P$S|_BP&w7mv$cRkHj8Z5APgH{!sv`uQFa=W)jcwS4-CE0GoU%Ge zfs&`>rO&51ji9q#Wqz4A<$Svtj=>9+G_D$-avV}x%E*1#Z=LvD65u6XA?*SRKxufu z6O~X04bT!JF%R=`8+VXJYdMMvW=WZs5hDHTK#@-1TnMN4$WGQ=*Ea{*6{dlADGa~5*T3TL>X0Lq{oYN8feArPI>72VJu z127l!un_C95xcP$r*RfP<00PR0}Ryk3#4CUa4@(M@zA~ALHNPUtherf9KabSI*zrI%DgkUwbs@p_wPKt@ua^A2dWG zw8k)ufEnRfie*@i6<7-mJCJ~+C7RC^PCopT7|6*Ic0q3BM?)f<3G47Z_CnT* zSUkd8lwobCh_9fpA)5a*c3Tx?O$ozDEQPE!YY>aWcm})Wyq!dK_@aYWaXMF-t4JDq zhKr$rj7KyMA?*svLT60GeB@fm_KaRDWvwi(e~_Yu%`{F^JY?3c7=p>zfUS`1_Fx}= zfMk6Xahk_$>sK5q}8>vM-5psDLV{1~1fvHwI!jCcsvuWyH7QkXCPwQBz7CB7PT{ zsAd-AgjCxNg-{aG1P=sirRMQ2piUt1o|udoh{G8q;3XVZv0Fo4c)$+>FdQQ>2XnPL z3yiy!D!oWQ7kh96w)rLfT%1D^@~viLM@w|Y`PG&#mFw~<*X6l!AdTGKk)%}6jx91) zRJ>&FSe(T(yhIu1tO&`e1#G#65g&<}h{k!%YY87o)H_f7K1!@%!6F(z;Ws#~WyQo% z+(wb_SRt?p*I``8I8?*0YS=Pk5siDGBb7i~roWPLE;1^PM({^-1fm_YvkUfwoT-d_n~}URO|H}ee7k+wkcT$V*pg_M=Va@ zA*9#>CiOtJ0hWCE*4`cmSH7U;V@3%85F8n30`OqTh#{TAE^OUUA|j;E#JJww+ior+@Rxdl0<1qWH`B5KKfQW?(Mn zV*wUp369|mF5oJz;|8AN1xjq9y=Vr1&3_Af$a=Yn*N|a^z&VN)8C@_HJCK043sYAI$=(Xv?ez84kx(MByT?;1M#BsjV<~;sIL4?d*2V0mM6D zEGA(iw&5pSgFS_&MLOg~9ej=YXp5PchwovlJZ@dml5tWFgn||2C9tpX>=U9yS zxDBVh>{Icz=C?=ABBaFZa7GTe!X4#N1NG1W9UFw%`cjaSm6Ii8^LS z0hB-`RE0NMqSZD-IzwwB(wM>8_`Sw~ig_^cQJ9H2n2$wRj{`V?llTc2@EA|=1`c#c zCget8R7VX+NBN=|+Mq2$&4JG4CM06Q^(n7jYMl z@Ehz|5_ypivQ$c;0=!TIKB$WTv_c@-BNP#shDgl8F`ULV+`}`?5MX#k_k;Ext)jjk|bA|_!bW@+aR7)vPTS;RMB6SgB3akzk+_zg*r)hr#W zStjH_F4RD6_@Ew|p*ebDFos|hM&s(aqp|z6eH&w!&zm`K{Kz2#hV+~{BxHbQJ}8@- zq?m^VSdJ*{#1A-$MBIn0=&z6jdsg@~$b`%&1rJm}CDcM4v_@xiK`$)B8f?Q}9NlGT zWjH}39>3sMJcMjfNl@6TzCZ?KhchaoGOD2l>cbZu(F1M{#N zQP_h+xQ-i;E%+gxBMI+e$JSf`MNk|iQ3+nC3)$lR(Hg<%gdXS#Yqx9WBht+>W&)-l z5;L(FtFRHW--yEZh{bW7#5tVD3%o%RJ|G?YmCSH~>~C754f&v<;om|3YOxhLW| ze95UX{Lm7u5C|!0I;6C9*o{3n2Pyp$`105(PRCo?Q>xUY8Cszoq(;*)2lKE3Yaul} zjRZKx@SYi8q6(_Q7Y)$}1GJWBIOhnsMcOnBOIlAzI+;Ej8}S2fASa0T79UT@SAT?jE59% z%gUYEOQAOEpaUfP&X^7%33J<7uql~5Z~FatBO1lw@{M{pU=$0!@sPy;p583Qp4 z!!a5W_!eU@9)}T!+sF90@gb2kaqJ~f4nAmv7HEl9+S0px+!!d8mP$rhD{zJI8Jw73 z3ho3coJ{q+S~2ffEJXs|qQr4J48yPl+i()`T3{lb;U)95Mq7-B%zFXXa0`-0Hqz%o zUKB$qNS^+h*8|>}x%(3jz+eo4l(h^})@htYJnkOX+<)O?NUysL+(ROM#xDpy!DfJg zIEAx_#|=D%;UsShQCRbONTGg`q0BGy4984tK>{RwVbc1b!YMlHEGHP~k0$3i^G5Zb zIHSHm=U!x2dx=loHNVGl<}LFTK^fG6DdF|*^qo-m{WZ*U4LRwuDweS^IVGVX*7ohKrF(XFK2(l)8T)KRJ-MM-utOGRe!L>)B7 z%3B=Ga2hx87{zY0<3uD5;s-pxt&V(Y^wg%kl)Hwc;0j2Y(;S9BKp}@mDRQ#q@J!Ez z>31j{33!8YcUi$v0X^^o4&e+6++%U0B7D&SgYOx*v74QLljr0px!LBNlVZ-2iEOU- zSuR-nfa4IR{mhDn6x_* zN50>_B~JcDVf~u875cxiaps|xf7C`^JbJ5UpKJyvLnga!GHe<2PphccOm)M+K`%4^Og?H(vIPNiuO!~)W*=uRkAECs1z zSx6PDpem}NE?S@^I-nzh5rR<|jY*h{DVT?Msz-UdT&h=jzD@Z1KQ3z7@^-D&N9F9g zs1wWE^*2kAc?)sd>SLVE;3s%5K^R3`!xFcDHUsn%4?!fedJ zTu4>dzcQK)8;ER0G`2y*4*Y}*xPcEayfzxLAS;TZ7z=aNUA-WRoW*3t<-%YB}|vX6X5~ z!4!)AX%)s!E)=asRkZuEwV|vuVI63OUi0mQw%VU3Zfk+9_EPg~$PQ=Zf(t%v%_}u% z2;Uvk_q>yCuub+H!WOF!CdrpEyy6v?u5q>&NccZFpnAkBMbu$Dkdnv87SX>rY$tuS zvyz>=y0W~Tdv=8yq;WRb6*2}DGIkDrkgF#BxBW}IeC^eG0j6@Q-yFNrMzf|4#XxUXVC1MpB~cvTz!#wi$EaFn-q{jSF&78$1kaGJHr+jH*w^8BhTQN(6b_<+55sloF$}?Z^Vb}kkqBcwuH~R9dSep4 z!$BmVLw!zUupiUEVKZyMBJ$;05aLk0A!|P#;vModqH+jp%!OezX+nruP$AE}FmL3~ z5&VR^c!^hVZOWT5ltwLdf;{-*4AM1YT|h%bU^gBivp;Fk4nf$1r}zzNnsa>uh8Dc* zXhj2Cb6VM&<-dzahBlnp!Wjin0TodRH6h=?Z;dtxLN^S=Sd7CIs8|IJJ0Rc8KZrB9 zfdt&cV>kx#wg|ZcS^jy66h(P>qZWM72muH|Cv-z!j6x))V>T9H2M*&1;&2Xk@EkAj z65ZNTNyOk9Ug5QwKXu#Dofv>!xB&b1Y#ykBp$Nx$+=mjxrV4jdM+*cZ2*K!%^SFr1 zxPm0)=)jd2^uZc9c4YZyr6V)riGgHtDZ2*uDBGq4;hu@1Lz2Y2Dn znO!alpd3Qc3$9&QJlKGZ*oN(0SpElz{D5OPg?L;?=WcW#u6AdWf_zD|YERz1pbmz^ zjJb%zX}!R|1GE#!@UpBC7SGg}8`IFoaP!>Y^Uj zU^8m=VHXU$e(W2t6+a?ve~xr$iB{+b`QqMooPsidO&z_>{OOMk$T*O-5;F#|3|+9>Ewnl$8vxU>L@m`QfbD$U1^;8$BT3bCT~k?SXukDHDpL160hzcDzBQaC*a! zKarS;D5M|B$_1xUtP7|I*U{`Y(G>F4n^B0wh;OO<7!D>_h1Jlo10G}9qEG|FFdQop z565xrQNi~<%!YMD*5eH1OBpwifctoW$H+LI%@l3%962Yj8%1M;LxbBywg%Kd$w?e^ za2aJMQxVA58S26h%@KqSlj(*YM8;q>HXs^DaSWI62KlCN?F}VR3$@W0Juw|~un60* z9Wl6y53rxgo)2>Oe}2?PJ49frnLo2|24`^h^hlI;LK}3zG(^I@oj=#{8ysh_!oUl1dwVBLMKrcyH)8MtFYyYF zGuif$gweBDfoF5zK^+W5JmhxhIF;o;m-7K6A>TZDVjj!CC6TUJhFI9oXGenu=zwS( zLfQpv`{;~`kXt`u_7X99hc}4yq;yffgRLFR=iDY zF;Sco;K61N)mzAGE2m=7EdNdX$-Rwj8FKr>Z8&YGtMD~?U?k>a38HZmZ{ehIDGO~e z1~YITb~{*s5r_d;jcvGvG&@;8;EAd`S^kZP%*IB@XYaR=Wf$k{XpE`Y13oi1yoP)P z9*AyOf^9g7cqF3j9twqg=)4sB@DSO)=lv2Q5Q|4hx0mJr#+wX za1C;4{0ZK}=?1-+z#_g$Yw;9GIB<*fx6B-BZ&Q;y9AxgX_QK^pYbaci4{j)cf+&n4 zD1)-_KsETHA)2EFTA~#OVh~1R6h>nzmS8Eq^Wo1rtj7i%LmZCdIplh6+6Sx?NQWiqWZ{r2r>&^CwdRtW$Up;y#LY{FveCy{0@$LG|HYQ|>$k zZRK*}Vl6q{$Ar>W<1Ia>|PsuDwX*7?Hq!Q9rdYS|c5T3ftmsGX*q|2;8V-6br2EcNoLqK-U9|9uP=9!tG`)>EIz^p8PMoIdn# z2C4H5Jf6DDTI%NGl=A06{u6oF z)`)4lOxf%uHdytJXVZ9EQ+8G^w$Suc63HI=zb9s^yM&9*u-YUyPwA&VIYa;ddx5cE zZGD@vg|2dGF!_~y;7l&q7*$8_S68_jXnWcA5VFN4C*}CHnI%Dx|J=V7SaV4c7(MG+ zHl!4#tyg=WrS zQL-i}Jmu;qri7^;7yg5RHO~}To8(%jWf{X7+v+0~Nik^6Bj{3!Lv5JKpj2AM zs?#oUsI|t|TjHt9|Mik7N6JPUpZcpsE}J}!X_{Nslutq)Zoc_4I}f=snnv}wOHpgp z`E(F5}k;Ib<goWfSyPo$k?n z|BJ!t#FXV(hf)WH?{j{1+q>xP&u@v__JtBA z@80!kl0zk9d>6}hPN?tn;?>9p>=NXHwr$i^b>u^8cvbEFvmPj)3#`-rs{?B@B`{v? zt{;L^b;KI=iF8D&z_=#N(s66lphx<||A`<)xvp{<-}bV-9g|@hZ>?HJHUAUpl2P?~ z!oE6rg0cHxOJ%#Ok;zk}!X~+1ub*Wb+YGU!X`?DnQ?CieS3@l;i#0UKMSaVu`Ts)f zUoHL9`D9qG2slWcZ7oVaQg4}?e3Fp-O1>swNo#Gb>>OUuzus!87i^clYVVBpxd}$T zptt2S2VYfr!#Xr7!qStY)S#CnAEiE#xjqf7)BY^UXXpEmk4#bD$k)l$w~dxiKPyeq z!sp}Fyl*(^CagkOMLy?9e$6p_;g(6i5W~3e&rOpPNXs;JiZvg(5+eD18pmSaXIqknO^W%R!^FOS>FOL7P0;&7svmN~;-Deg_>iJR+eKr>sS5`Go`oCJC zKg>hFjLSL{{s+r4byYq)^!vPBn)r5>RWlu($Vu?G- zg>_!x`e1Hbip-flrcg^J$Ms9#mehWk=vixi;mIk~1}O!<|`O#;B>= z^B1!+j?pYD=f^(&vuskgq+ZT{*n!qsq@M2&NB+gie71(EM{ahp&*7l2L6&XLBp=3F zR_p(LG5;y0k3ZDy1@)@|E zA(QhL&{KUjh_p=mY>;9GtJ3w3QkxWm(mx*ubJ$y=`nqyWU0cw;lJUtk z%X&$ue-=QfU)7b5)otSj-?Y5@laJPk>u)pm-&FMzySj|4YaKW3mSx%>gr;e?Xns;T z`+Vx7GWPcBo-+1%lsMI?tbL{51tZJaf2l4l!^hc~Hk;C_waeLOQ)_teVYhcV`!5xP zdZHX_eRzr#C(GG4k%`VKUmhutV!~gVwY$TSEOBY(7}U%j_PNxZJ58?YuAQbl|M-uK zDcm}ni`J)t{er)5wC8@b65OYPzi+hv`$qc%wf?@*o=av;xPzxDw;AE@8}0wT(f;on z?f<^fUakTBeWU%~H`@Pwqy67E+W&o{{ogm*|5x8=Z@I}{?y=9D`X+m~2U`u7F7o5kD`$0cavGW0__KA& z&oU*eWAZKMde)w5q!jO|D*jANzT;e@>9aYh3I1G@ zk}u8MUba@JP1))^mUIE1N#~d{U2bKOo|53*Cq>=TC&=yQO#--f(n^g9;7Z+s04@(( z;vYY6&{4?IHjBng(3?<|3J zq&4sh)|15ivq6enZ1tP+T2KOy>%pb;CgY6^zFqJ{6xr|jChj9@8SgLil$T0fQdT+hn(cET! zG>jv68dd4dyr}}Y_xxcrXH}M4c=ZHp)ya~MTgE>Zyt9n-==+%@PW|+eOD)s>PGal9 zf4W~H2Xa=)-PQW`#tr?0^nU$67T6m2X(-=dpus6e?`@oV6?Igf45dp_1+H>mx$R{; z8J1!Fo^v&57$=AF@Df!{=96RGS$djD|Iy%gxm!laS!t?Ckt6hiQwKke;E=aURm=n% zCCI8aFmw96UF~h=RM&DpIZ-|>H}h^Gd077l*E0A6Gt2Gf`u3k9)Hikgesk52y`xE< zonqPdUR7gcclm!cNN#CzjK+FL(4)!y!R_XoBj|-c2=afcPy3$;QWraU4ArvSN-h&j z^57TCV#=r{d@@ZQ1fx%r8_r9|u$@?Dlv-NuG}ljt^n1=_1$33z$5)DzfaGql+-t6{ zt@^#@$uT`Eecb;>Ov;rz$Ym|I)akF5np|UB9#h6}7Vz=Tav7_nSA!<7K+~(kCvZ0L zahhI+JlV$57y)6COvHn$FQv$=Y03U6l!-x8+2G2NP0-URYWePgG$JIXzMp}{tMgGH- z)?EIc;ZOVXzpR&r&#}*)R=&=_Idxg}##H-kf3&{Ha@W83KuUcjbz_a?mEwyJ-g7zG zw%(&|*-gov>G~OlyR~h>T+UagZ+aU{%pRb3;(tGMlSk? z^Zi+|%+B|97yof1tuv<%KHGB1%2BRY@Zuiu)N}mV&>!Ze?qB*>EB42E>{<3#^Z0BX zf1h#Ql((cCQe4`z9whV?mAk!HuwcfjOIOgr?N?9-YkXL8Tt7{f-qI(1OnoXjh5Ac! z+)E0gnXlN@)HXQfzDkF=zg3c1NWyS7)#cLtVwd952P_mV%6dH!-> z9I;K`hMD8^Dt$(4@Q2yR91q#L^VXcR%6|ZUPjpiJs{@IdTt+VTS*j9VF+^4U7`lf2Vn_Lc3mOI%0$71?kxtv2Q=hbU+fVK?f zNpUNB%C#bSKFjUq`gL58)a*Px) zJ2(a?5;|WRO9)YUOdpZI!~CZ$sO3W zct$4Nzv6MGb$CFd56{x8%Y*#tF<*V2Lir7kv24J1fO&+=`NovZeX7T~M|GY*5A3@X zz+-5e^RT{_+_c)7M-sLnVIaQ&)Q-ndcHlvM!8|3j6A$F;%)|M3_CZKjo`=_s=O6aq zNrOFko?<9Z7wp9|@WOa9XkVTp*q^5gV*UW0w>pp~&T_@WaX9lJ8uCcnZXB4{Oaeh36aM31&{^`FPVP1nZF@lBWpHG#HM~ zqE}|~phlI)6wcwt+UD|5PtN}3$LZx4-Q|bW7cAycs7rWSAi6H2hnDkfJ~Myh_pIgj zspZ$7<%gE#hmhsBjO7P`J=W6_9=s_(o-4mcE59o%zv?Q#eL9$Lt;sKY$`4@5&rixP zG|KNI%1;u?kNny1=h2lhJZUhN{2)KBCcil*zaJ*Q? zLk%3@klWRbXh9T#J4(R=6;Me{AW3m=qP0*PU%>}oqaNy`0esO=jXi8%P;EcZA#=sH z47WoNIv^M!=!`Dtitgxvp6G=zwagLw9Oe;34Gui=F(WHQ4(@!($Ld>zcbV?25T#gd zLh);ubBryaMAYlzjfUt+KZy~H%2oOU87$O9^1Hvd|6j?09 z93Av1j3R<4?OPv4nrlN>}(dehGiThwuPGNQKX! z(JGD=>XH(3;R-AzHSR(DEA$>*DrFK?QbLr~B?Bb#Mbdd0G1Yt9RAzDA!G;N8QRWlH zHxV`ywJ1?h5>Xz}XAxx&iPAYZYay@?+BzU}v`s+9XdeNYq3r@Tr5%LBa16cxCR8EH z^i@x(VA1Z;Zo$t`1#$<#0{&1F0--U4Koe*N%^?iJ;R$E~kjPz$};xHjpq8ft4ah)IqC5*}@2w$xsTu z&FFp@375m^ktdi28{!ABJt%;;2NE*y6?}si8!VzXAcY>Z!5SD%h8Msb$flOO1Mfi+ z9rG-dz!mbm{y{>g2`)ZPp=m&mi8fwWl70ph!5R<=y9%gBH}rwQa2f)RkeDzEmcRnRfI$5b+Y35LCoUTUK%p?9TE)dXvPGYXbSvv|KaDr2yZ*tISssCVj@&*4nmp_~=8} z3JdVf5;z8p@XsxX$2W`MFa$QGjKG`lEo9)M)A%Spg5$+U1M!iHrKIAcq4=m5J}SgF z3*cv%)17wsC=nlR$43XnM}NaNRS-0QV8BO}_{bk0{TUxsPsj22Xg$990CvLxI1I<& zEPRKLHsYiD_-HylO2|zNm>tJQek*K5G(LLqZALiwXc<28 z-6K9?BM+>a+k{;6i6>tF}34snU6{f*- zmSoPx6;=|(u&v=IJi4w8EkTazFMBo8Id zHo*HJIVmxB6YfCUa7Jj54f*hH3u+5|0DB;|6*~@>;3m|F#--22Qy2smIbSi4c|KoVX8S~Ou6fM~sRfvHdg1wA=(SOPk{3L8Nq z_-jBN2($4}zc1$;5RI3~Ao?zE!l!T!>L+tP0?~X~4L6}0qXmDc33K2D5G@!oO8XQ} zK#LT-1Zj{9``{EzBhlpau@r2jJnVwKa1c&{9~oF3nnO55Kud^%HV^|Hpc5p(l;La? z?hw7dzyq+3A~xU-+z0;;iqxd}lNId4H>HlqrN%b^6o3@C)T@Eo+C$&e5B&7%L$P&aOXPa$ty z#Mu_E!%YaA%bUZJ12z&{m z3y}^PFbT3@D&)X4u;uYk1R@?$3L+NK2SgX*HndrRyTDG7TnJrOapr+hFS7wCdxcUC znQs#ZAOZw`1Q8*yg9s5k4I)O61|mq%1w@pf-A4LflnLr>a;Xzo-*+h#JhIuPQc%TG zlnOFnBOHQVTj+Dhp;9jd(F+KKo-hFXKH-uSL@2%%gg`i4-cE2r>TbFbCPLh3W)KQd&=Us1{&LPg5Ol~jNZR`uI|ecn{x*==@Q;AZh<^@bR{S5} z!!tY&GtP3lfngUIEe__P?o~DhGWonQ0lhH^{jW_#pGo^XFy@T^oWD6~IEufwo-^w+ zf3%LZJwpXw0{h_@$iPQV?5&|A7}eaU;zsp0s< zAd;}2;Uba()j`50p!Xj9ku z9FafgdEC(VyNfO3YSH#P0iy5sZgVbRK)zos+I}GsgpG*x$)H>G^OD+KeACx#OaBV2=aL$ORmy<`9{5?V5d?*%fD7xgMbwMqu=o50X^k^#KvI>{hj zG@WE1FIrAAn6C|n>fJFF5ev2rda*NoHA?Ra>`MkawH-e$l zV`%c6c+DlPW60+ivNwjZja-q4VvSsti13Vv$%ueV)2$rTR{CEwSLEkkhF*$Xwum%} z-1H3vqaKTlNdm})rzn@mMW?8j$OUH}%mGm{ksIJiV5pWDY9td*QvX2|NsdA{>hs() z^uMT&ya=K)k`AIW@&m}7<)5GuegT>OWFCmJ$UTrBJspDIlBJTQA|#RwlB@;tgeZl) z29mW0z{pw=1qu4rm9aa2wvICCb?;e+>mS{-#&rIzZ)$9l?AP;uv<5l4RawV3H#Ks+ z5u%Qn^tYO-0!Mf=Rc@;DvDtO;;77z>0{OR9uNJDpf>JCNty))$HrQg-o(!~Vn-i?s zqpEmG+tLRD+?zS{b-P_;!*4pSw1MVLx5XSUHJ!d0%LG+afR9(i``Q0?9EL$xze z!}N1cs2(+=T8+_epvIRmVT@K0J61C%=-nbzC*2;Q8rJF)lBF$+%hFz%ou#E&CTW!+ zlk|@xR3p72LJiepTByQ$x$|sVU$b57?q}Cl2HCZBBkfv)iFW;P3$;?uj#P2_x=59# z`?XXZ^rV)maP5wk%B1gUrGi8IP2R2**4v?t?z=;)Gi?X^v`c$BewQ|@_b%<(fZf{A z#=EupY5L<)s;8bErGoX6C>6=1HENYUGFm13U-bV*+dA_bt&gT}i&hQvifA=nPi(Db z+WvPkht!NQq||>~=J5YoYrm$o*6BadTKiWzYuv0!jZvM<;SUmh>?W;{8Y7(VeN8j* zU;dVV#?qXpN48f@``;!@UG(E_HdVdakzR_>}N)}md!@00Wm7$GjC-5K z)7fU3vCe4)jCHqkT4`R^dM~TW%Ss;S`MOdMtEql{oag(+jrVL>VpyA|$nkkukrUi4 zo$HFcta2}_;lzh6IlhVR_jA6k%wt_+Js|yI%f@<|m$lxoE=*)!s=Tb^4EO7t>qBQoWs#RvZdhH1urCcKxm*5jv=7HO$^CxLb!EmnrxlRx zZt1krysY(JR+X2PJlXSgr5+Z?H`)Du`Tf|JxGCS;mrBpFTUZL7=ay=P0 zTb;M`HuGfg9M!?>dNOUUYUui_Xs${!-PbS7Q$gmtX8ry=)#N3+%JE<7`%zn|s+DHF wz^>-0Vm5m_NUyZ3+3GR2HspDIcCq3EEWNUrl68`1^VK}_IkV%Z`O4q=cWS!Jg8%>k diff --git a/trunk/tinySMS/include/tinysms/tpdu/tsms_tpdu_submit.h b/trunk/tinySMS/include/tinysms/tpdu/tsms_tpdu_submit.h index 7d18433a..a0c68367 100644 --- a/trunk/tinySMS/include/tinysms/tpdu/tsms_tpdu_submit.h +++ b/trunk/tinySMS/include/tinysms/tpdu/tsms_tpdu_submit.h @@ -37,7 +37,7 @@ TSMS_BEGIN_DECLS -/** SMS TPDU SMS-SUBMIT message as per 3GPP TS 23.040 section 9.2.2.2 +/** SMS @a SMS-SUBMIT message as per 3GPP TS 23.040 section 9.2.2.2 */ typedef struct tsms_tpdu_submit_s { @@ -88,6 +88,27 @@ tsms_tpdu_submit_t; TINYSMS_API tsms_tpdu_submit_t* tsms_tpdu_submit_create(uint8_t mr, const tsms_address_string_t smsc, const tsms_address_string_t dest); +/**@ingroup tsms_tpdu_group +* @def tsms_tpdu_submit_serialize +* Serializes a @a SMS-SUBMIT message as binary content. +* @param self A pointer to the @a SMS-SUBMIT (@ref tsms_tpdu_submit_t) message to serialize. +* @param output A pointer to the output buffer. Should be valid. +* @retval Zero if succeed and non-zero error code otherwise. +*/ +/**@ingroup tsms_tpdu_group +* @def tsms_tpdu_submit_tohexastring +* Serializes a @a SMS-SUBMIT message as hexa-string content. +* @param self A pointer to the @a SMS-SUBMIT (@ref tsms_tpdu_submit_t) message to serialize. +* @retval A pointer to the hexa-string if succeed and Null otherwise. +*/ +/**@ingroup tsms_tpdu_group +* @def tsms_tpdu_submit_set_userdata +* Sets the content of the @a SMS-SUBMIT message. +* @param self A pointer to the @a SMS-SUBMIT (@ref tsms_tpdu_submit_t). +* @param udata A pointer the content. +* @param alpha The alphabet used to encode the content. +* @retval Zero if succeed and non-zero error code otherwise. +*/ #define tsms_tpdu_submit_serialize(self, output) tsms_tpdu_message_serialize(TSMS_TPDU_MESSAGE(self), output, tsk_true) #define tsms_tpdu_submit_tostring(self) tsms_tpdu_message_tostring(TSMS_TPDU_MESSAGE(self), tsk_true) #define tsms_tpdu_submit_tohexastring(self) tsms_tpdu_message_tohexastring(TSMS_TPDU_MESSAGE(self), tsk_true) diff --git a/trunk/tinySMS/src/tpdu/tsms_tpdu_submit.c b/trunk/tinySMS/src/tpdu/tsms_tpdu_submit.c index 5aac89cd..90bb88ec 100644 --- a/trunk/tinySMS/src/tpdu/tsms_tpdu_submit.c +++ b/trunk/tinySMS/src/tpdu/tsms_tpdu_submit.c @@ -153,6 +153,9 @@ bail: return TSMS_TPDU_MESSAGE(self); } + +/** internal function used to serialize a SMS-SUBMIT message +*/ int _tsms_tpdu_submit_serialize(const tsms_tpdu_submit_t* self, tsk_buffer_t* output) { uint8_t _1byte; @@ -198,8 +201,21 @@ int _tsms_tpdu_submit_serialize(const tsms_tpdu_submit_t* self, tsk_buffer_t* ou tsk_buffer_append(output, &TSMS_TPDU_MESSAGE(self)->dcs, 1); /*1o*/ /* 3GPP TS 23.040 ==> 9.2.3.12 TP-Validity-Period - * Only TP-VP (Relative format) is supported. This field is used in conjonction with TP-VPF. */ - tsk_buffer_append(output, &self->vp, 1); /*1o*/ + * 1o for Relative format (9.2.3.12.1) + * 7o for Absolute format (9.2.3.12.2) + * 7o for Enhanced format (9.2.3.12.3)*/ + switch(self->vpf){ + case tsms_tpdu_vpf_relative: + tsk_buffer_append(output, &self->vp, 1); + break; + case tsms_tpdu_vpf_enhanced: + case tsms_tpdu_vpf_absolute: + tsk_buffer_append(output, &self->vp, 7); + break; + default: + case tsms_tpdu_vpf_not_present: + break; + } /* 3GPP TS 23.040 ==> 9.2.3.16 TP-User-Data-Length (TP-UDL) */ tsk_buffer_append(output, &TSMS_TPDU_MESSAGE(self)->udl, 1); /*1o*/ @@ -210,6 +226,16 @@ int _tsms_tpdu_submit_serialize(const tsms_tpdu_submit_t* self, tsk_buffer_t* ou return 0; } +/**@ingroup tsms_tpdu_group +* Creates new SMS-SUBMIT message. +* @a SMS-SUBMIT messages are used to convey short messages from the MS (Mobile Station) to the SC (Service Center). +* @a SMS-SUBMIT-REPORT messages are used for positive or negative acknowledgement to an @a SMS-DELIVER or @a SMS-STATUS-REPORT. +* For more information, please refer to 3GPP TS 23.040 section 9.2.2.2. +* @param mr TP-Message-Reference (TP-MR) as per 3GPP TS 23.040 section 9.2.3.6. +* @param smsc SMSC address. e.g. "+331253688". +* @param dest The destination address. e.g. "+331253688". +* @retval @a SMS-SUBMIT message. +*/ tsms_tpdu_submit_t* tsms_tpdu_submit_create(uint8_t mr, const tsms_address_string_t smsc, const tsms_address_string_t dest) { tsms_tpdu_submit_t* ret = tsk_null; diff --git a/trunk/tinySMS/src/tsms_address.c b/trunk/tinySMS/src/tsms_address.c index 7cfbd30e..0854a685 100644 --- a/trunk/tinySMS/src/tsms_address.c +++ b/trunk/tinySMS/src/tsms_address.c @@ -151,7 +151,7 @@ tsms_address_t* tsms_address_deserialize(const void* data, size_t size, tsms_add address = TSMS_ADDRESS_CREATE(tsk_null, xtype); *length = 1 /*Address-Length*/ + 1 /*Type-of-Address*/ + addr_len /* digits */; } - + /* 2 - Type-of-Address +----+----+----+----+----+----+----+----+ | 1 | TON | NPI | @@ -173,7 +173,7 @@ tsms_address_t* tsms_address_deserialize(const void* data, size_t size, tsms_add tsk_strcat_2(&address->digits, "%.2x", _1byte); } } - + bail: return address; } diff --git a/trunk/tinySMS/src/tsms_common.c b/trunk/tinySMS/src/tsms_common.c index 4b51c580..4c058f5a 100644 --- a/trunk/tinySMS/src/tsms_common.c +++ b/trunk/tinySMS/src/tsms_common.c @@ -37,6 +37,11 @@ #include /* strlen() */ +/**@defgroup tsms_tpdu_group Service provided by the SM-TL (Transport) +*/ +/**@defgroup tsms_rpdu_group Service provided by the SM-RL (Relay) +*/ + /* ======================== TPDU ======================== =========================================================*/ @@ -65,7 +70,7 @@ int tsms_tpdu_message_init(tsms_tpdu_message_t* self, tsms_tpdu_mti_t mti) return -1; } -/** +/** Serialize any TP-Message. */ int tsms_tpdu_message_serialize(const tsms_tpdu_message_t* self, tsk_buffer_t* output, tsk_bool_t MobOrig) { @@ -101,6 +106,8 @@ int tsms_tpdu_message_serialize(const tsms_tpdu_message_t* self, tsk_buffer_t* o } } +/** Deserialize any TP-Message. +*/ tsms_tpdu_message_t* tsms_tpdu_message_deserialize(const void* data, size_t size, tsk_bool_t MobOrig) { tsms_tpdu_mti_t mti; diff --git a/trunk/tinySMS/test/test.c b/trunk/tinySMS/test/test.c index 4a3932ed..88f0abda 100644 --- a/trunk/tinySMS/test/test.c +++ b/trunk/tinySMS/test/test.c @@ -71,8 +71,8 @@ tsk_bool_t bin_equals(const uint8_t* b1, const uint8_t* b2, size_t size) #define RUN_TEST_ALL 0 #define RUN_TEST_PACKING 0 -#define RUN_TEST_TPDU 0 -#define RUN_TEST_RPDU 1 +#define RUN_TEST_TPDU 1 +#define RUN_TEST_RPDU 0 #ifdef _WIN32_WCE diff --git a/trunk/tinySMS/test/test_tpdu.h b/trunk/tinySMS/test/test_tpdu.h index 38fb4ca3..90e2b0c3 100644 --- a/trunk/tinySMS/test/test_tpdu.h +++ b/trunk/tinySMS/test/test_tpdu.h @@ -32,11 +32,15 @@ void test_submit() tsms_tpdu_submit_t* submit = tsk_null; tsk_buffer_t* buffer = tsk_null; char* hex; + const char* smsc = "+331000009"; + const char* destination = "+333361234567"; + const char* short_message = "hello world"; + uint8_t mr = 0xF5; - submit = tsms_tpdu_submit_create(__pdu_last_mr++, "+3310000095", "+3361234567"); + submit = tsms_tpdu_submit_create(mr, smsc, destination); - /* sending */ - if((buffer = tsms_pack_to_7bit(USER_DATA))){ + /* encode the user data to GSM 7-bit alphabet */ + if((buffer = tsms_pack_to_7bit(short_message))){ ret = tsms_tpdu_submit_set_userdata(submit, buffer, tsms_alpha_7bit); if((hex = tsms_tpdu_submit_tohexastring(submit))){ TSK_DEBUG_INFO("SMS-SUBMIT=%s", hex); @@ -47,7 +51,8 @@ void test_submit() /* receiving */ buffer = TSK_BUFFER_CREATE_NULL(); - tsms_tpdu_submit_serialize(submit, buffer); + ret = tsms_tpdu_submit_serialize(submit, buffer); + // send(socket, buffer->data, buffer->size); TSK_OBJECT_SAFE_FREE(submit); submit = (tsms_tpdu_submit_t*)tsms_tpdu_message_deserialize_mo(buffer->data, buffer->size); diff --git a/trunk/tinySMS/tinySMS.vcproj b/trunk/tinySMS/tinySMS.vcproj index acba56a9..7f67aaf4 100644 --- a/trunk/tinySMS/tinySMS.vcproj +++ b/trunk/tinySMS/tinySMS.vcproj @@ -203,10 +203,6 @@ - - @@ -261,10 +257,6 @@ - -