From a4712140e604a075483714a197513aa7a1d72580 Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Thu, 6 Dec 2012 15:09:04 +0000 Subject: [PATCH] Made serial port's state volatile, added method for stopping modem. --- briar-core/libs/jssc-0.9-briar.jar | Bin 120364 -> 120365 bytes .../src/net/sf/briar/plugins/modem/Modem.java | 8 +++++++- .../net/sf/briar/plugins/modem/ModemImpl.java | 19 ++++++++++++++---- .../sf/briar/plugins/modem/ModemPlugin.java | 11 ++++++++-- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/briar-core/libs/jssc-0.9-briar.jar b/briar-core/libs/jssc-0.9-briar.jar index e977fe43f8f79abde82413a41ea140a5b6c2cdbf..3c4ae47c7c60ac49e6d25798daecba9eabc0cd83 100644 GIT binary patch delta 3605 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 Gn*RXM$mQq& delta 3585 zcmYM1c{J2-8^-5r8B3|gk}O%Kh>;~DyRl4T8T*ngrIIjqNk1~amh5F`CdAlALiR0d zDYC>EYa}EL5lXf!FYoWX=RMCk&vmZPxt??GKdwLSr?iBrq=f0Di9S68CxrRv@cAa5 zRG~Y%^(b_lzR7%mFddt36$&8GAL}SX5c82HTd`dQZy0lEavqQe{qEQ-=jzVo!q1A8 z)>a4S+BKaq#Jx(YzG9k{RvGf4k~kS|KW!|8A|>eNHf;+<Gf1--qjus0O;nMLuO^{Y zT}o9`JAL^1&egKNkjnZAW;Q$`I!O52w?`TnBs(Ih9{&D1qj=6Bf>&nj$;nFA2+os8 z+SgFff%gGs(5BL@9l3CB3>i^gce|lNGa_v-_eUC)aj@d)uZ_ytXNlflDkVLWa<2ZY zI;DDt*+{bg`N_m4$BcN(wEKpI&b?_YGkr0JvQoOA82iQ4K<B0edBzLhr_WzEO~HuQ zcR-+$P7`G0b$Po{U!L848`ltP?X$VO1xbr<z=~d>hg4tB;p%4Wy$BEcgfaU~uu131 z*5S4svZlQ0TT1WWH0P^kBIL8ruA|$<ugUoey_%8hbEXWyjZ7IwuRi@25s^XqTsv|v zQBUrvgI4(^t}j$CzDMVjjm08I5I*Fd2(@ff=ytC`+~#5i=df+q^&9;$BNIz*HXX`$ z*}xN)<Wt3G6Gi4FN0Bbs4#N;MT*Gq`(&^5r+F7~KCC<B**N|y#J*u}zqpPRFO(Xp5 zm0d`m@-l9jAe&1e`0A?~qaWTdvv6ol<f(kdf_hyLc=UIv&}g+M?19{FOy8(kB1No7 zd-Memqsx~Y8OLYRrpL{Z-8QmLv{*xe@BC2%sb8kv{ZlE?W1gXVy?39h>K7ZEu|%h~ zo)FAnMRPxt47mjz+kCsV5*Dvg>6O?VDWI~g%z3~IJAj(DgrHiYnS8V6Jx!-?C|>H; zVQwW!I6LL3!`Rgx@)O3<pn-1|^N7pJd9A(XQ|Vpd=mW-g4c{+qwH5D`N4*=xZb0qc z7odOoQ{jG5+T1U7R^B=arfUDnNy92RRIc2D$KdE_`76O%&iRe7ZF&=ZCT4Rl+Eg(e z1R})<f&9PmM|CzmLp^S{2<+^CTdu}AMR)84xH*`P+l~|%Kend@;m5WLDN4@*eiYrx zSJjwn84j>}Xd7Q_^}~Asx1So&YV|{(hUj&8V>^43e%F?M|0-pahxS8r>Nd%fVgDgL zo`aUbwjoJsy+iV3#Ak#Yh|(t5HtICM35`{Hd}K%q$Hq<Qt_Nl79PP2@ssd#zq-9D2 zWZHPdwn0y7bt0V(K4=L!0BE2fFHJB6<xB!k?p}iKYEmLE{}8M!0mmv23Zc6&N~Gj( z9m(DE71M$>C5O))_e@WGz0$MSd3jr1fzqj|?m^0i?B|CBv2F}PcX=rNyfpjZgMtt0 z{WcqaQ!%XzlDqrkxl>a%wAQ+kL#Dxij1-4)h1Xg;;^!QsDY4FnjG#p@=hHKv*3Jt@ z8Y>wXx!6%(wk);hZ^xNh_QQMx$;*+|+3p8iE1W(#lSY2&dNy*gq7*j->AYMtbWv_R z+U8JOdXc@m#$Jh;7N6iF#yB%Xyx<I?rJaaNs?N_5^39<|^6pFc@09w5t|7dI*HcwB zcw5Ho3$G_Wf?FXU!LuD=bLYu{fpZg^8D#$&m+6HUa;G_+>HX^81)2QLpvj!@V>fC! zajE58Vc=OKKS`ra*39`~#SeVmIEC5j7Q|ArnW`)MzGYBRQuh7z!>a)|t@Z-V^nxb- z>@<bzynOkkCELRB1K>kY*-CD2(Hd20tuAT$=usC>eP7L<JOi?7eN^<mSXD9XuZY4Z z27OTUDZ^3S{EcG2DEKzq5VDdlo$vW5>BFgn)D42JR3+@4&<#431TuED3h4aG*hrJ| ze=TsA5#@R1Vj;sbYW{{mV~u#3Mq9BcvCdqkKgxc<^N+ti<Uxw)YF=P<+~clirz}%; zv8T;l7S-B1e>Q-pghEBqR+!k}Jx0=v?d209UwuBWTygEDlBF@e9Q&|zJVYVzn)#x` z`|V2>hS^lrq3u7uNqr>qp{HKU_xarKg$I1r+b_YrUQclK$$DXI!ss+%Slf(VU8?;< zA~?U^^e?<uYZ(5fKpd^@g0t0>hD4wE*cC3v!!>Tf>AVYO8OXC%ce%>7>q*pP%4NlE zZf&eO)Rnz!!Vg}a=zKszmv+71l6`BS(4Kie+=h-=AbL*qXUDr<nKp}fs)2;TiQBe@ zGKZMM()J-Zk)h+q?>_c(e;sh~X1wPLK3k@EkQfZa4$+6jc@}xxDR$X)W+o)eb!e23 zP%TmD;I<;jAD6GzQVp-WN4>`^(=JNff~Bz#gVvUl$bnyRZ5D!{!HS7xij`n%_Agv_ zagVDf%kuT@wxTWkRprVVyWb)jEh&{dvWV#(7@8n#Sw;yP-Bg;Zr_mp9df!iZ#=SNs zS#)J}ITL-B!y}ZGVJP!YCHeNU9?`aqKd(UzbsOwe(Rye}d<;}gG5pqJ?I?6bzFjEg zcE>jV)^Q2pn$Z;EuN2y|(b+y9ps?$%_r%n8Y|-5sXT{6^AWd06vy;yb8)ln-w&7>t zJiAk(ZL3`I$BKB-^Ldzh1UEs*RXQY_@RUj|@ViiTQKG9xL2>idSVAXuInu1rH1-R2 zPZ9Ke9ICo^ac<pwEU~aCB0EPpD9v_<Q2jg`9pIm?wbxXOj@4BP|Et)80q=0*mvZ|l z-+mxFOi`LunqBpSs&V1kv&NK#H|tC@D7`;F@LwI@toNwk;tn(C{Sa)M@W*U$oQq*% z^QPDf6jmZl8OxvN3zbS{pEO#<Rt)A$fQv-)d(z&%t2OOIP7C>xf1)FI9Iba*FXL02 z_HH0%M_(q{M;3Tea6z%kZ9nE8$w?fIqlb}F7LRyAQXX65R_t+Z7Z;t3$nYkAk8$7d z=X=OE|2CrYiwnp7_9r`!61kV=kSyLUhY-iG6wg-js^`gF+^9MT!5=c<)$;?vgDC8d zLwaAf#+0!O3k|vbz;HCMGCN-@ljmiR<7?xb*v0AF4(tK1hX-{kg1oegT>KX&zfYsn zyImGJKJaH`WY)TM*ZPZ%riJ;4S|vxM;OUmEPYvrkV20wj2Hdzzp|H6#R~X@Bt@qX5 zn7|~xYx~x);u1Jc_^#Bo-moZ8If|&>!d$xuABUy*{4vJHDmGsh&MmQ3pVa1&5YB_i zrVHiq$l7+KdWWV~+`r7{+M!h(B^5=Bh=N=ziHv$S8>9GPvjT405o7JaHE<dx95u!Y zqdx-^Fn+SPT^LI&<Yo^?c@_(E$5U|yBR<(<egIg<()pal=^0Na3JN+&d%c#Osh1rN za-VOUF_7pj4Q}|vkVhUW8XkW8uz4iksF7<9Mf&2Y)zzJE5NY$=NTL@V>_29$(q+6A zup)=H>PWV1_w*kf)2?_IremqKhTTt+PV4MG|J^Vxd-&@^GdwC~e4B-RzV=d=<Kr07 z@vH%PJK-#6S+Pr8CQz_0)6qwtFxOJm40(J@F2_Jutzd*ER)F%X<G~cw^h`{X?uyI1 zm(l-ZL)13wiPSzyvP~ndJwVPd^=@yjuN^}6wn7edra>Z)x-`c@0J6n_KTz>=kqnoF zJi?U!`TB3<jHk@3N@sgNQw#StV_P<nXDT*EEd(@+k88w#1)s45{yFuA?uDzMBtfD6 zQzX@E@J<qOQSVlj(`<xcljmIS`GN=cyi(+QklJb*H&H`;3m$u|QpT+b@&WzGPG=4Q zFh3J|!pS5~Hkmcmrrbx~&>Z0sZibPJiC0ch8Y&&4iaJWYDC^DBPf;E(9vWoB(oYs# z9#Q=UpF=KLgNd%|*qooKOdAVd8??*hcDfI;OQ@{ujK<IcF3VCfog<r}+4xH>rDP+k z5h|kK#W<I`yJa7BuzUrH>%UqM1?L~S7Ne*?3;Wc!mh_uH@2dbU=pe^|b9sFoHlEbC zXG>=iFg^6i;&mn=u#@Z6nxQuWo;`Tseq;Xx;g{h!Sda2-J($q$H)Y-7^!{u*u8gH; zdF0mUE_f?_-02@d!{jopaTGR;>1Fw3F#CYXcY@GgP2!+d&{FP;H)OUHdc(T*J1W!V zn$CPVJl$t@QtsH2?Sf^Z674@fyC@rKGKRr-W2y}stgCcI3RHi7)AJ`cOY41B$hS|a zL9HfufK#ZZU>%o#9CkNumN)qd&gBP{`lOLh&-m&J&EaT%Y`%?YP2CUWFb!E`2?dJV zoc1eI4=S26ucj#y(IaO(*JY<XpBVULdBpxT`7Vx!06rINxVOZam44@y<lqo%R+=VI zdmtds1yi_bFhA(b-DPf+qlk(AWwC^5<?CbS%xz6@0~wFEx@D>jpD{ZG!iY##Pv;LC zQmh+N1pY}q`oj>6`T(V4jqU?9j(#(Qo<88p(FR92=mW6FitPssnAv<IG><n!LRLSZ zb4(Zd0i$D8pa9y(3R3>%A1Q#@vF9HE(8qdb0Kl*uzy9w8gt7s^8fYLeQvq4v3qgen zDAF-1C0{Y&Pev(03GRcy8A2fy;HBd<If8<OH-i8IcuZg$1eEE>_mhE8f&b+Ybl*dc zyzsvf4Z_?}1aKt?4FQJ0bArbZfCcmk4MTtm-J@{A`Y^yxC=Ul%3H-wVg6=}bzr-#B jI7#q2Cf+5-M37Kga+LXSM1T;&+AyF1Rqq2J5XgT3Qx&<0 diff --git a/briar-core/src/net/sf/briar/plugins/modem/Modem.java b/briar-core/src/net/sf/briar/plugins/modem/Modem.java index 87ac4532c0..ffb372f983 100644 --- a/briar-core/src/net/sf/briar/plugins/modem/Modem.java +++ b/briar-core/src/net/sf/briar/plugins/modem/Modem.java @@ -13,7 +13,13 @@ interface Modem { /** * Call this method after creating the modem and before making any calls. */ - void init() throws IOException; + void start() throws IOException; + + /** + * Call this method when the modem is no longer needed. If a call is in + * progress it will be terminated. + */ + void stop() throws IOException; /** * Initiates an outgoing call and returns true if the call connects. If the diff --git a/briar-core/src/net/sf/briar/plugins/modem/ModemImpl.java b/briar-core/src/net/sf/briar/plugins/modem/ModemImpl.java index 2576d7dacd..633ac11812 100644 --- a/briar-core/src/net/sf/briar/plugins/modem/ModemImpl.java +++ b/briar-core/src/net/sf/briar/plugins/modem/ModemImpl.java @@ -51,7 +51,7 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener { reliabilityLayer = new ReliabilityLayer(this); } - public void init() throws IOException { + public void start() throws IOException { if(LOG.isLoggable(INFO)) LOG.info("Initialising"); try { if(!port.openPort()) @@ -90,6 +90,14 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener { throw new IOException("Modem did not respond"); } + public void stop() throws IOException { + try { + port.closePort(); + } catch(SerialPortException e) { + throw new IOException(e.toString()); + } + } + public boolean dial(String number) throws IOException { if(!offHook.tryAcquire()) { if(LOG.isLoggable(INFO)) @@ -178,9 +186,8 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener { if(LOG.isLoggable(INFO)) LOG.info("Modem status: " + s); if(s.startsWith("CONNECT")) { synchronized(connected) { - if(connected.getAndSet(true)) - throw new IOException("Connected twice"); - connected.notifyAll(); + if(!connected.getAndSet(true)) + connected.notifyAll(); } // There might be data in the buffer as well as text int off = i + 1; @@ -190,6 +197,10 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener { reliabilityLayer.handleRead(data); } return; + } else if(s.equals("BUSY") || s.equals("NO DIALTONE")) { + synchronized(connected) { + connected.notifyAll(); + } } else if(s.equals("OK")) { synchronized(initialised) { if(!initialised.getAndSet(true)) diff --git a/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java b/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java index 1b65b619ed..eaa8536bdd 100644 --- a/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java +++ b/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java @@ -72,7 +72,7 @@ class ModemPlugin implements DuplexPlugin, Modem.Callback { LOG.info("Trying to initialise modem on " + portName); modem = modemFactory.createModem(this, portName); try { - modem.init(); + modem.start(); if(LOG.isLoggable(INFO)) LOG.info("Initialised modem on " + portName); running = true; @@ -86,6 +86,13 @@ class ModemPlugin implements DuplexPlugin, Modem.Callback { public void stop() { running = false; + if(modem != null) { + try { + modem.stop(); + } catch(IOException e) { + if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); + } + } } private boolean resetModem() { @@ -93,7 +100,7 @@ class ModemPlugin implements DuplexPlugin, Modem.Callback { for(String portName : SerialPortList.getPortNames()) { modem = modemFactory.createModem(this, portName); try { - modem.init(); + modem.start(); if(LOG.isLoggable(INFO)) LOG.info("Initialised modem on " + portName); return true; -- GitLab