CallManager.java 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224
  1. package kr.co.icontrols.callengine.engine;
  2. import android.content.Context;
  3. import android.util.Log;
  4. import com.util.LogUtil;
  5. import java.util.Timer;
  6. import kr.co.icontrols.wallpadcall.declare.DataClasses.MultiCallInfo;
  7. import kr.co.icontrols.wallpadcall.declare.Declare;
  8. import kr.co.icontrols.wallpadcall.declare.Declare.DEVICENAME;
  9. import kr.co.icontrols.wallpadcall.declare.Global;
  10. import kr.co.icontrols.wallpadcall.declare.Global.ConfigValues;
  11. public class CallManager {
  12. static String TAG = "CallManager";
  13. boolean bLOG = true;
  14. private void LOG(String log) {
  15. if (bLOG) Log.v(TAG, log);
  16. }
  17. boolean bLOG_DEBUG = false;
  18. private void LOG_DEBUG(String log) {
  19. if (bLOG_DEBUG) Log.d(TAG, log);
  20. }
  21. boolean bLOG_INFO = true;
  22. private void LOG_INFO(String log) {
  23. if (bLOG_INFO) Log.i(TAG, log);
  24. }
  25. Context mContext;
  26. // 통화주체를 다루는 enum
  27. public enum CALLOWNER {
  28. NONE,
  29. WALLPAD,
  30. SUB_WALLPAD,
  31. KITCHEN_TV_01,
  32. KITCHEN_TV_02,
  33. KITCHEN_TV_03,
  34. KITCHEN_TV_04,
  35. KITCHEN_TV_05,
  36. KITCHEN_TV_06,
  37. KITCHEN_TV_07,
  38. KITCHEN_TV_08,
  39. KITCHEN_TV_09,
  40. KITCHEN_TV_10,
  41. BATH_PHONE_01,
  42. BATH_PHONE_02,
  43. BATH_PHONE_03,
  44. BATH_PHONE_04,
  45. BATH_PHONE_05,
  46. BATH_PHONE_06,
  47. BATH_PHONE_07,
  48. BATH_PHONE_08,
  49. BATH_PHONE_09,
  50. BATH_PHONE_10,
  51. BATH_TV_01,
  52. BATH_TV_02,
  53. BATH_TV_03,
  54. BATH_TV_04,
  55. BATH_TV_05,
  56. BATH_TV_06,
  57. BATH_TV_07,
  58. BATH_TV_08,
  59. BATH_TV_09,
  60. BATH_TV_10,
  61. UNIVERSAL_DEVICE,
  62. MOBILE,
  63. ERROR;
  64. public static CALLOWNER getCALLOWNER(String value) {
  65. try {
  66. if (value.equals(NONE.toString())) {
  67. return NONE;
  68. } else if (value.equals(WALLPAD.toString())) {
  69. return WALLPAD;
  70. } else if (value.equals(SUB_WALLPAD.toString())) {
  71. return SUB_WALLPAD;
  72. } else if (value.equals(KITCHEN_TV_01.toString())) {
  73. return KITCHEN_TV_01;
  74. } else if (value.equals(KITCHEN_TV_02.toString())) {
  75. return KITCHEN_TV_02;
  76. } else if (value.equals(KITCHEN_TV_03.toString())) {
  77. return KITCHEN_TV_03;
  78. } else if (value.equals(KITCHEN_TV_04.toString())) {
  79. return KITCHEN_TV_04;
  80. } else if (value.equals(KITCHEN_TV_05.toString())) {
  81. return KITCHEN_TV_05;
  82. } else if (value.equals(KITCHEN_TV_06.toString())) {
  83. return KITCHEN_TV_06;
  84. } else if (value.equals(KITCHEN_TV_07.toString())) {
  85. return KITCHEN_TV_07;
  86. } else if (value.equals(KITCHEN_TV_08.toString())) {
  87. return KITCHEN_TV_08;
  88. } else if (value.equals(KITCHEN_TV_09.toString())) {
  89. return KITCHEN_TV_09;
  90. } else if (value.equals(KITCHEN_TV_10.toString())) {
  91. return KITCHEN_TV_10;
  92. } else if (value.equals(BATH_PHONE_01.toString())) {
  93. return BATH_PHONE_01;
  94. } else if (value.equals(BATH_PHONE_02.toString())) {
  95. return BATH_PHONE_02;
  96. } else if (value.equals(BATH_PHONE_03.toString())) {
  97. return BATH_PHONE_03;
  98. } else if (value.equals(BATH_PHONE_04.toString())) {
  99. return BATH_PHONE_04;
  100. } else if (value.equals(BATH_PHONE_05.toString())) {
  101. return BATH_PHONE_05;
  102. } else if (value.equals(BATH_PHONE_06.toString())) {
  103. return BATH_PHONE_06;
  104. } else if (value.equals(BATH_PHONE_07.toString())) {
  105. return BATH_PHONE_07;
  106. } else if (value.equals(BATH_PHONE_08.toString())) {
  107. return BATH_PHONE_08;
  108. } else if (value.equals(BATH_PHONE_09.toString())) {
  109. return BATH_PHONE_09;
  110. } else if (value.equals(BATH_PHONE_10.toString())) {
  111. return BATH_PHONE_10;
  112. } else if (value.equals(BATH_TV_01.toString())) {
  113. return BATH_TV_01;
  114. } else if (value.equals(BATH_TV_02.toString())) {
  115. return BATH_TV_02;
  116. } else if (value.equals(BATH_TV_03.toString())) {
  117. return BATH_TV_03;
  118. } else if (value.equals(BATH_TV_04.toString())) {
  119. return BATH_TV_04;
  120. } else if (value.equals(BATH_TV_05.toString())) {
  121. return BATH_TV_05;
  122. } else if (value.equals(BATH_TV_06.toString())) {
  123. return BATH_TV_06;
  124. } else if (value.equals(BATH_TV_07.toString())) {
  125. return BATH_TV_07;
  126. } else if (value.equals(BATH_TV_08.toString())) {
  127. return BATH_TV_08;
  128. } else if (value.equals(BATH_TV_09.toString())) {
  129. return BATH_TV_09;
  130. } else if (value.equals(BATH_TV_10.toString())) {
  131. return BATH_TV_10;
  132. } else if (value.equals(UNIVERSAL_DEVICE.toString())) {
  133. return UNIVERSAL_DEVICE;
  134. } else if (value.equals(MOBILE.toString())) {
  135. return MOBILE;
  136. } else if (value.equals(ERROR.toString())) {
  137. return ERROR;
  138. } else {
  139. return null;
  140. }
  141. } catch (RuntimeException re) {
  142. LogUtil.errorLogInfo("", TAG, re);
  143. return null;
  144. } catch (Exception e) {
  145. Log.e(TAG, "[Exception] getCALLOWNER()");
  146. //e.printStackTrace();
  147. LogUtil.errorLogInfo("", TAG, e);
  148. return null;
  149. }
  150. }
  151. }
  152. // 통화패스를 다루는 enum
  153. public enum CALLPATH {
  154. NORMAL,
  155. FRONT,
  156. FRONT_VOICE,
  157. MOIP,
  158. MOIP_IHN750_RESIDENCE,
  159. MOIP_V40_RESIDENCE,
  160. MOIP_IHND101_LOBBY,
  161. MOIP_IHND101_GUARD,
  162. MOIP_IHN1010_LOBBY_GUARD,
  163. PSTN,
  164. PSTN_MIC,
  165. PSTN_SPEAKER,
  166. PSTN_ARS,
  167. ANALOG,
  168. SUBPHONE_FRONT,
  169. SUBPHONE_MOIP,
  170. SUBPHONE_PSTN,
  171. SUBPHONE_ANALOG,
  172. DOORMUSIC, // 현관초인종
  173. DTMF, // DTMF 톤 PhoneOut
  174. SUBWALLPAD, // 서브월패드와 통화할 경우 메인월패드 통화패스
  175. SUB_FRONT_SUBWALLPAD, // 서브월패드일때 현관 통화패스
  176. SUB_MOIP_SUBWALLPAD, // 서브월패드일때 MoIP 통화패스
  177. DOOR_RELIEFCALL, // 현관통화 안심통화
  178. DOOR_REMOTECALL, // 현관통화 방문객원격통화
  179. NONE,
  180. ERROR
  181. }
  182. // 통화상태정보를 다루는 enum
  183. public enum CALLTYPE {
  184. NONE,
  185. FRONT,
  186. RESIDENCE,
  187. RENTRESIDENCE,
  188. LOBBY,
  189. GUARD,
  190. PSTN,
  191. IHUB,
  192. HISTORY_CALL,
  193. HISTORY_VISITORPIC,
  194. ERROR;
  195. public static CALLTYPE getCALLTYPE(String value) {
  196. try {
  197. if (value.equals(NONE.toString())) {
  198. return NONE;
  199. }
  200. else if (value.equals(FRONT.toString())) {
  201. return FRONT;
  202. }
  203. // else if (value.equals(FRONT_RECORD.toString())) {
  204. // return FRONT_RECORD;
  205. // }
  206. // else if (value.equals(FRONT_TAKEPIC.toString())) {
  207. // return FRONT_TAKEPIC;
  208. // }
  209. else if (value.equals(RESIDENCE.toString())) {
  210. return RESIDENCE;
  211. }
  212. else if (value.equals(LOBBY.toString())) {
  213. return LOBBY;
  214. }
  215. else if (value.equals(GUARD.toString())) {
  216. return GUARD;
  217. }
  218. else if (value.equals(PSTN.toString())) {
  219. return PSTN;
  220. }
  221. else if (value.equals(IHUB.toString())) {
  222. return IHUB;
  223. }
  224. else if (value.equals(HISTORY_CALL.toString())) {
  225. return HISTORY_CALL;
  226. }
  227. else if (value.equals(HISTORY_VISITORPIC.toString())) {
  228. return HISTORY_VISITORPIC;
  229. }
  230. else if (value.equals(ERROR.toString())) {
  231. return ERROR;
  232. }
  233. else {
  234. return null;
  235. }
  236. } catch (RuntimeException re) {
  237. LogUtil.errorLogInfo("", TAG, re);
  238. return null;
  239. } catch (Exception e) {
  240. Log.e(TAG, "[Exception] getCALLTYPE()");
  241. //e.printStackTrace();
  242. LogUtil.errorLogInfo("", TAG, e);
  243. return null;
  244. }
  245. }
  246. }
  247. public enum CALLSTATUS {
  248. IDLE, // 대기중
  249. TRYING_CALL, // 통화가능여부 확인중
  250. WAITNG_INVITE_ACK, // 호출에 대한 응답 대기중
  251. CALLING, // 호출중
  252. CALLED, // 호출수신중
  253. TALKING, // 통화중
  254. REJECT, // 거절
  255. BUSY, // 통화중 거절
  256. FORWARD, // 착신전환
  257. CANCEL, // 호출 취소
  258. END, // 종료
  259. TIMEOUT_1STCALL, // 1st Call Timeout
  260. TIMEOUT_2NDCALL, // 2nd Call Timeout
  261. TIMEOUT_3RDCALL, // 3rd Call Timeout
  262. CALLERID, // CALLERID
  263. DOOR_OPEN, // 문열림 요청
  264. PSTN_RING, // ARS 동작을 위해, Ring 카운트를 한다.
  265. HOMEVIEW; // 방문객원격통화 홈뷰어
  266. public static CALLSTATUS getCALLSTATUS(String value) {
  267. try {
  268. if (value.equals(IDLE.toString())) {
  269. return IDLE;
  270. } else if (value.equals(TRYING_CALL.toString())) {
  271. return TRYING_CALL;
  272. } else if (value.equals(WAITNG_INVITE_ACK.toString())) {
  273. return WAITNG_INVITE_ACK;
  274. } else if (value.equals(CALLING.toString())) {
  275. return CALLING;
  276. } else if (value.equals(CALLED.toString())) {
  277. return CALLED;
  278. } else if (value.equals(TALKING.toString())) {
  279. return TALKING;
  280. } else if (value.equals(REJECT.toString())) {
  281. return REJECT;
  282. } else if (value.equals(BUSY.toString())) {
  283. return BUSY;
  284. } else if (value.equals(FORWARD.toString())) {
  285. return FORWARD;
  286. } else if (value.equals(CANCEL.toString())) {
  287. return CANCEL;
  288. } else if (value.equals(END.toString())) {
  289. return END;
  290. } else if (value.equals(TIMEOUT_1STCALL.toString())) {
  291. return TIMEOUT_1STCALL;
  292. } else if (value.equals(TIMEOUT_2NDCALL.toString())) {
  293. return TIMEOUT_2NDCALL;
  294. } else if (value.equals(TIMEOUT_3RDCALL.toString())) {
  295. return TIMEOUT_3RDCALL;
  296. } else if (value.equals(CALLERID.toString())) {
  297. return CALLERID;
  298. } else if (value.equals(DOOR_OPEN.toString())) {
  299. return DOOR_OPEN;
  300. } else if (value.equals(PSTN_RING.toString())) {
  301. return PSTN_RING;
  302. } else if (value.equals(HOMEVIEW.toString())) {
  303. return HOMEVIEW;
  304. } else {
  305. return null;
  306. }
  307. } catch (RuntimeException re) {
  308. LogUtil.errorLogInfo("", TAG, re);
  309. return null;
  310. } catch (Exception e) {
  311. Log.e(TAG, "[Exception] getCALLSTATUS()");
  312. //e.printStackTrace();
  313. LogUtil.errorLogInfo("", TAG, e);
  314. return null;
  315. }
  316. }
  317. }
  318. public void setCallManagerContext(Context context) {
  319. mContext = context;
  320. }
  321. public class CallInfo {
  322. private CALLOWNER eCallOwner = CALLOWNER.NONE;
  323. public void setCallOwner(CALLOWNER eCallowner) {
  324. LOG_INFO("[setCallOwner] eCallOwner [" + eCallowner + "]");
  325. eCallOwner = eCallowner;
  326. }
  327. public CALLOWNER getCallOwner() {
  328. return eCallOwner;
  329. }
  330. protected Status mStatus = new Status();
  331. protected class Status {
  332. CALLSTATUS FRONT = CALLSTATUS.IDLE;
  333. CALLSTATUS LOBBY = CALLSTATUS.IDLE;
  334. CALLSTATUS GUARD = CALLSTATUS.IDLE;
  335. CALLSTATUS RESI = CALLSTATUS.IDLE;
  336. CALLSTATUS IHUB = CALLSTATUS.IDLE;
  337. CALLSTATUS PSTN = CALLSTATUS.IDLE;
  338. }
  339. public void setCallStatus(CALLTYPE eType, CALLSTATUS eStatus) {
  340. LOG_INFO("[setCallStatus] eType [" + eType + "], eStatus [" + eStatus + "]");
  341. if (eType == CALLTYPE.FRONT) mStatus.FRONT = eStatus;
  342. else if (eType == CALLTYPE.LOBBY) mStatus.LOBBY = eStatus;
  343. else if (eType == CALLTYPE.GUARD) mStatus.GUARD = eStatus;
  344. else if (eType == CALLTYPE.RESIDENCE) mStatus.RESI = eStatus;
  345. else if (eType == CALLTYPE.IHUB) mStatus.IHUB = eStatus;
  346. else if (eType == CALLTYPE.PSTN) mStatus.PSTN = eStatus;
  347. }
  348. public CALLSTATUS getFRONT() {
  349. return mStatus.FRONT;
  350. }
  351. public CALLSTATUS getLOBBY() {
  352. return mStatus.LOBBY;
  353. }
  354. public CALLSTATUS getGUARD() {
  355. return mStatus.GUARD;
  356. }
  357. public CALLSTATUS getRESI() {
  358. return mStatus.RESI;
  359. }
  360. public CALLSTATUS getIHUB() {
  361. return mStatus.IHUB;
  362. }
  363. public CALLSTATUS getPSTN() {
  364. return mStatus.PSTN;
  365. }
  366. public int IDLECNT_MAX = 6;
  367. public int getIDLECnt() {
  368. int nIdleCnt = 0;
  369. if (mStatus.FRONT == CALLSTATUS.IDLE) nIdleCnt++;
  370. if (mStatus.LOBBY == CALLSTATUS.IDLE) nIdleCnt++;
  371. if (mStatus.RESI == CALLSTATUS.IDLE) nIdleCnt++;
  372. if (mStatus.GUARD == CALLSTATUS.IDLE) nIdleCnt++;
  373. if (mStatus.IHUB == CALLSTATUS.IDLE) nIdleCnt++;
  374. if (mStatus.PSTN == CALLSTATUS.IDLE) nIdleCnt++;
  375. LOG_INFO("[getIDLECnt] nIdleCnt = " + nIdleCnt);
  376. return nIdleCnt;
  377. }
  378. public int getCallingCnt() {
  379. int nCallingCnt = 0;
  380. if (mStatus.FRONT == CALLSTATUS.CALLING) nCallingCnt++;
  381. if (mStatus.LOBBY == CALLSTATUS.CALLING) nCallingCnt++;
  382. if (mStatus.GUARD == CALLSTATUS.CALLING) nCallingCnt++;
  383. if (mStatus.RESI == CALLSTATUS.CALLING || mStatus.RESI == CALLSTATUS.HOMEVIEW) nCallingCnt++;
  384. if (mStatus.IHUB == CALLSTATUS.CALLING) nCallingCnt++;
  385. if (mStatus.PSTN == CALLSTATUS.CALLING) nCallingCnt++;
  386. LOG_INFO("[getCallingCnt] nCallingCnt = " + nCallingCnt);
  387. return nCallingCnt;
  388. }
  389. public int getCalledCnt() {
  390. int nCalledCnt = 0;
  391. if (mStatus.FRONT == CALLSTATUS.CALLED) nCalledCnt++;
  392. if (mStatus.LOBBY == CALLSTATUS.CALLED) nCalledCnt++;
  393. if (mStatus.GUARD == CALLSTATUS.CALLED) nCalledCnt++;
  394. if (mStatus.RESI == CALLSTATUS.CALLED) nCalledCnt++;
  395. if (mStatus.IHUB == CALLSTATUS.CALLED) nCalledCnt++;
  396. if (mStatus.PSTN == CALLSTATUS.CALLED) nCalledCnt++;
  397. LOG_INFO("[getCalledCnt] nCalledCnt = " + nCalledCnt);
  398. return nCalledCnt;
  399. }
  400. public int getTalkingCnt() {
  401. int nTalkingCnt = 0;
  402. if (mStatus.FRONT == CALLSTATUS.TALKING) nTalkingCnt++;
  403. if (mStatus.LOBBY == CALLSTATUS.TALKING) nTalkingCnt++;
  404. if (mStatus.GUARD == CALLSTATUS.TALKING) nTalkingCnt++;
  405. if (mStatus.RESI == CALLSTATUS.TALKING) nTalkingCnt++;
  406. if (mStatus.IHUB == CALLSTATUS.TALKING) nTalkingCnt++;
  407. if (mStatus.PSTN == CALLSTATUS.TALKING) nTalkingCnt++;
  408. LOG_INFO("[getTalkingCnt] nTalkingCnt = " + nTalkingCnt);
  409. return nTalkingCnt;
  410. }
  411. public CALLTYPE getCallingType() {
  412. CALLTYPE eRemoteType = CALLTYPE.NONE;
  413. if (getCallingCnt() > 1) {
  414. eRemoteType = CALLTYPE.ERROR;
  415. } else {
  416. if (mStatus.FRONT == CALLSTATUS.CALLING) eRemoteType = CALLTYPE.FRONT;
  417. else if (mStatus.LOBBY == CALLSTATUS.CALLING) eRemoteType = CALLTYPE.LOBBY;
  418. else if (mStatus.GUARD == CALLSTATUS.CALLING) eRemoteType = CALLTYPE.GUARD;
  419. else if (mStatus.RESI == CALLSTATUS.CALLING) eRemoteType = CALLTYPE.RESIDENCE;
  420. else if (mStatus.IHUB == CALLSTATUS.CALLING) eRemoteType = CALLTYPE.IHUB;
  421. else if (mStatus.PSTN == CALLSTATUS.CALLING) eRemoteType = CALLTYPE.PSTN;
  422. else eRemoteType = CALLTYPE.NONE;
  423. }
  424. LOG_INFO("[getCallingType] eRemoteType = " + eRemoteType);
  425. return eRemoteType;
  426. }
  427. public CALLTYPE getCalledType() {
  428. CALLTYPE eRemoteType = CALLTYPE.NONE;
  429. if (getCalledCnt() > 1) {
  430. eRemoteType = CALLTYPE.ERROR;
  431. } else {
  432. if (mStatus.FRONT == CALLSTATUS.CALLED) eRemoteType = CALLTYPE.FRONT;
  433. else if (mStatus.LOBBY == CALLSTATUS.CALLED) eRemoteType = CALLTYPE.LOBBY;
  434. else if (mStatus.GUARD == CALLSTATUS.CALLED) eRemoteType = CALLTYPE.GUARD;
  435. else if (mStatus.RESI == CALLSTATUS.CALLED) eRemoteType = CALLTYPE.RESIDENCE;
  436. else if (mStatus.IHUB == CALLSTATUS.CALLED) eRemoteType = CALLTYPE.IHUB;
  437. else if (mStatus.PSTN == CALLSTATUS.CALLED) eRemoteType = CALLTYPE.PSTN;
  438. else eRemoteType = CALLTYPE.NONE;
  439. }
  440. LOG_INFO("[getCalledType] eRemoteType = " + eRemoteType);
  441. return eRemoteType;
  442. }
  443. public CALLTYPE getTalkingType() {
  444. CALLTYPE eRemoteType = CALLTYPE.NONE;
  445. if (getTalkingCnt() > 1) {
  446. eRemoteType = CALLTYPE.ERROR;
  447. } else {
  448. if (mStatus.FRONT == CALLSTATUS.TALKING) eRemoteType = CALLTYPE.FRONT;
  449. else if (mStatus.LOBBY == CALLSTATUS.TALKING) eRemoteType = CALLTYPE.LOBBY;
  450. else if (mStatus.GUARD == CALLSTATUS.TALKING) eRemoteType = CALLTYPE.GUARD;
  451. else if (mStatus.RESI == CALLSTATUS.TALKING) eRemoteType = CALLTYPE.RESIDENCE;
  452. else if (mStatus.IHUB == CALLSTATUS.TALKING) eRemoteType = CALLTYPE.IHUB;
  453. else if (mStatus.PSTN == CALLSTATUS.TALKING) eRemoteType = CALLTYPE.PSTN;
  454. else eRemoteType = CALLTYPE.NONE;
  455. }
  456. LOG_INFO("[getTalkingType] eRemoteType = " + eRemoteType);
  457. return eRemoteType;
  458. }
  459. public void printCallStatus() {
  460. try {
  461. LOG_INFO("[printCallStatus] RESI [" + getRESI() + "]");
  462. LOG_INFO("[printCallStatus] LOBBY [" + getLOBBY() + "]");
  463. LOG_INFO("[printCallStatus] GUARD [" + getGUARD() + "]");
  464. LOG_INFO("[printCallStatus] FRONT [" + getFRONT() + "]");
  465. LOG_INFO("[printCallStatus] PSTN [" + getPSTN() + "]");
  466. LOG_INFO("[printCallStatus] IHUB [" + getIHUB() + "]");
  467. } catch (RuntimeException re) {
  468. LogUtil.errorLogInfo("", TAG, re);
  469. } catch (Exception e) {
  470. Log.e(TAG, "[Exception] printCallStatus() : " + e);
  471. //e.printStackTrace();
  472. LogUtil.errorLogInfo("", TAG, e);
  473. }
  474. }
  475. public void resetCallStatus() {
  476. mStatus.RESI = CALLSTATUS.IDLE;
  477. mStatus.LOBBY = CALLSTATUS.IDLE;
  478. mStatus.GUARD = CALLSTATUS.IDLE;
  479. mStatus.FRONT = CALLSTATUS.IDLE;
  480. mStatus.PSTN = CALLSTATUS.IDLE;
  481. mStatus.IHUB = CALLSTATUS.IDLE;
  482. }
  483. public void resetAllCallInfo() {
  484. resetCallStatus();
  485. resetMultiCallInfo();
  486. }
  487. // MultiCall 관련
  488. private CALLTYPE eBaseMultiCallType = CALLTYPE.NONE; // 멀티콜이 수신될때의 통화중인 기기정보
  489. private CALLTYPE eMultiCallType = CALLTYPE.NONE;
  490. private CALLSTATUS eMultiCallStatus = CALLSTATUS.IDLE;
  491. private CALLOWNER eMultiCallOwner = CALLOWNER.NONE;
  492. private boolean bMultiCallAccept = false;
  493. private boolean bMultiCallPSTNReject = false;
  494. private String strMultiCall_ID = ""; // SIPID/CID
  495. private String strMultiCall_ID_H = ""; // 동정보
  496. private String strMultiCall_ID_L = ""; // 호/ID 정보
  497. private String strMultiCall_Name = ""; // 기기이름/CID
  498. private String strMultiCall_IP = ""; // IP
  499. // 국선홀드 관련
  500. private boolean bPSTNCallHold = false;
  501. private String strPSTNHoldInfo = "";
  502. public void setPSTNCallHold(boolean bHold, String strHoldInfo) {
  503. try {
  504. LOG_INFO("[setPSTNCallHold] bHold [" + bHold + "], strHoldInfo [" + strHoldInfo + "]");
  505. bPSTNCallHold = bHold;
  506. strPSTNHoldInfo = strHoldInfo;
  507. } catch (RuntimeException re) {
  508. LogUtil.errorLogInfo("", TAG, re);
  509. } catch (Exception e) {
  510. Log.e(TAG, "[Exception] setPSTNCallHold(boolean bHold, String strHoldInfo)");
  511. //e.printStackTrace();
  512. LogUtil.errorLogInfo("", TAG, e);
  513. }
  514. }
  515. public boolean getPSTNCallHold() {
  516. try {
  517. return bPSTNCallHold;
  518. } catch (RuntimeException re) {
  519. LogUtil.errorLogInfo("", TAG, re);
  520. return false;
  521. } catch (Exception e) {
  522. Log.e(TAG, "[Exception] getPSTNCallHold()");
  523. //e.printStackTrace();
  524. LogUtil.errorLogInfo("", TAG, e);
  525. return false;
  526. }
  527. }
  528. public String getPSTNCallInfo() {
  529. try {
  530. return strPSTNHoldInfo;
  531. } catch (RuntimeException re) {
  532. LogUtil.errorLogInfo("", TAG, re);
  533. return null;
  534. } catch (Exception e) {
  535. Log.e(TAG, "[Exception] getPSTNCallInfo()");
  536. //e.printStackTrace();
  537. LogUtil.errorLogInfo("", TAG, e);
  538. return null;
  539. }
  540. }
  541. public void resetPSTNCallHold() {
  542. try {
  543. bPSTNCallHold = false;
  544. strPSTNHoldInfo = null;
  545. } catch (RuntimeException re) {
  546. LogUtil.errorLogInfo("", TAG, re);
  547. } catch (Exception e) {
  548. Log.e(TAG, "[Exception] resetPSTNCallHold()");
  549. //e.printStackTrace();
  550. LogUtil.errorLogInfo("", TAG, e);
  551. }
  552. }
  553. public void printMultiCallStatus() {
  554. try {
  555. LOG_INFO("[printMultiCallStatus] eBaseMultiCallType [" + eBaseMultiCallType + "]");
  556. LOG_INFO("[printMultiCallStatus] eMultiCallType [" + eMultiCallType + "]");
  557. LOG_INFO("[printMultiCallStatus] eMultiCallStatus [" + eMultiCallStatus + "]");
  558. LOG_INFO("[printMultiCallStatus] bMultiCallAccept [" + bMultiCallAccept + "]");
  559. LOG_INFO("[printMultiCallStatus] bMultiCallPSTNReject [" + bMultiCallPSTNReject + "]");
  560. LOG_INFO("[printMultiCallStatus] strMultiCall_ID [" + strMultiCall_ID + "]");
  561. LOG_INFO("[printMultiCallStatus] strMultiCall_ID_H [" + strMultiCall_ID_H + "]");
  562. LOG_INFO("[printMultiCallStatus] strMultiCall_ID_L [" + strMultiCall_ID_L + "]");
  563. LOG_INFO("[printMultiCallStatus] strMultiCall_Name [" + strMultiCall_Name + "]");
  564. LOG_INFO("[printMultiCallStatus] strMultiCall_IP [" + strMultiCall_IP + "]");
  565. } catch (RuntimeException re) {
  566. LogUtil.errorLogInfo("", TAG, re);
  567. } catch (Exception e) {
  568. Log.e(TAG, "[Exception] printMultiCallStatus() : " + e);
  569. //e.printStackTrace();
  570. LogUtil.errorLogInfo("", TAG, e);
  571. }
  572. }
  573. public void setMultiCallInfo(CALLTYPE eBaseCall, CALLTYPE eType, CALLSTATUS eStatus, CALLOWNER eCallOwner, boolean bAccept, String sID, String sID_H, String sID_L, String sName, String sIP) {
  574. try {
  575. LOG_INFO("[setMultiCallInfo] eBaseCall [" + eBaseCall + "], eType [" + eType + "], eStatus [" + eStatus + "], eCallOwner [" + eCallOwner + "], bAccept [" + bAccept + "], sID [" + sID + "], sID_H [" + sID_H + "], sID_L [" + sID_L + "], sName [" + sName + "], sIP [" + sIP + "]");
  576. eBaseMultiCallType = eBaseCall;
  577. eMultiCallType = eType;
  578. eMultiCallStatus = eStatus;
  579. eMultiCallOwner = eCallOwner;
  580. bMultiCallAccept = bAccept;
  581. strMultiCall_ID = sID;
  582. strMultiCall_ID_H = sID_H;
  583. strMultiCall_ID_L = sID_L;
  584. strMultiCall_Name = sName;
  585. strMultiCall_IP = sIP;
  586. } catch (RuntimeException re) {
  587. LogUtil.errorLogInfo("", TAG, re);
  588. } catch (Exception e) {
  589. Log.e(TAG, "[Exception] setMultiCallInfo(CALLTYPE eBaseCall, CALLTYPE eType, CALLSTATUS eStatus, CALLOWNER eCallOwner, boolean bAccept, String sID, String sID_H, String sID_L, String sName, String sIP)");
  590. //e.printStackTrace();
  591. LogUtil.errorLogInfo("", TAG, e);
  592. }
  593. }
  594. public void setMultiCallInfo(MultiCallInfo Info) {
  595. try {
  596. Info.printMultiCallInfo();
  597. eBaseMultiCallType = Info.getBaseMultiCallType();
  598. eMultiCallType = Info.getMultiCallType();
  599. eMultiCallStatus = Info.getMultiCallStatus();
  600. eMultiCallOwner = Info.getMultiCallOwner();
  601. bMultiCallAccept = Info.getMultiCallFlag();
  602. strMultiCall_ID = Info.getID();
  603. strMultiCall_ID_H = Info.getID_High();
  604. strMultiCall_ID_L = Info.getID_Low();
  605. strMultiCall_Name = Info.getName();
  606. strMultiCall_IP = Info.getIP();
  607. } catch (RuntimeException re) {
  608. LogUtil.errorLogInfo("", TAG, re);
  609. } catch (Exception e) {
  610. Log.e(TAG, "[Exception] setMultiCallInfo(MultiCallInfo Info)");
  611. //e.printStackTrace();
  612. LogUtil.errorLogInfo("", TAG, e);
  613. }
  614. }
  615. public void setMultiCallOwner(CALLOWNER eCallOwner) {
  616. try {
  617. LOG_INFO("[setMultiCallOwner] eCallOwner [" + eCallOwner + "]");
  618. eMultiCallOwner = eCallOwner;
  619. } catch (RuntimeException re) {
  620. LogUtil.errorLogInfo("", TAG, re);
  621. } catch (Exception e) {
  622. Log.e(TAG, "[Exception] setMultiCallOwner(CALLOWNER eCallOwner)");
  623. //e.printStackTrace();
  624. LogUtil.errorLogInfo("", TAG, e);
  625. }
  626. }
  627. public void setMultiCallAcceptFlag(boolean bAccept) {
  628. try {
  629. LOG_INFO("[setMultiCallAcceptFlag] bAccept [" + bAccept + "]");
  630. bMultiCallAccept = bAccept;
  631. } catch (RuntimeException re) {
  632. LogUtil.errorLogInfo("", TAG, re);
  633. } catch (Exception e) {
  634. Log.e(TAG, "[Exception] setMultiCallAcceptFlag(String bAccept)");
  635. //e.printStackTrace();
  636. LogUtil.errorLogInfo("", TAG, e);
  637. }
  638. }
  639. public void setPSTNRejectFlag(boolean bReject) {
  640. try {
  641. LOG_INFO("[setPSTNRejectFlag] RESI [" + bReject + "]");
  642. bMultiCallPSTNReject = bReject;
  643. } catch (RuntimeException re) {
  644. LogUtil.errorLogInfo("", TAG, re);
  645. } catch (Exception e) {
  646. Log.e(TAG, "[Exception] setPSTNRejectFlag(String bReject)");
  647. //e.printStackTrace();
  648. LogUtil.errorLogInfo("", TAG, e);
  649. }
  650. }
  651. public void updateMultiCallName(String sName) {
  652. try {
  653. LOG_INFO("[updateMultiCallName] sID [" + sName + "]");
  654. strMultiCall_Name = sName;
  655. } catch (RuntimeException re) {
  656. LogUtil.errorLogInfo("", TAG, re);
  657. } catch (Exception e) {
  658. Log.e(TAG, "[Exception] updateMultiCallName(String sID)");
  659. //e.printStackTrace();
  660. LogUtil.errorLogInfo("", TAG, e);
  661. }
  662. }
  663. public void resetMultiCallInfo() {
  664. try {
  665. LOG_INFO("[resetMultiCallInfo]");
  666. eBaseMultiCallType = CALLTYPE.NONE;
  667. eMultiCallType = CALLTYPE.NONE;
  668. eMultiCallStatus = CALLSTATUS.IDLE;
  669. bMultiCallAccept = false;
  670. bMultiCallPSTNReject = false;
  671. strMultiCall_ID = "";
  672. strMultiCall_ID_H = "";
  673. strMultiCall_ID_L = "";
  674. strMultiCall_Name = "";
  675. strMultiCall_IP = "";
  676. } catch (RuntimeException re) {
  677. LogUtil.errorLogInfo("", TAG, re);
  678. } catch (Exception e) {
  679. Log.e(TAG, "[Exception] resetMultiCallInfo()");
  680. //e.printStackTrace();
  681. LogUtil.errorLogInfo("", TAG, e);
  682. }
  683. }
  684. public CALLTYPE getBaseMultiCallType() {
  685. try {
  686. return eBaseMultiCallType;
  687. } catch (RuntimeException re) {
  688. LogUtil.errorLogInfo("", TAG, re);
  689. return CALLTYPE.ERROR;
  690. } catch (Exception e) {
  691. Log.e(TAG, "[Exception] getBaseMultiCallType()");
  692. //e.printStackTrace();
  693. LogUtil.errorLogInfo("", TAG, e);
  694. return CALLTYPE.ERROR;
  695. }
  696. }
  697. public boolean isBaseMultiCallMoIP() {
  698. try {
  699. CALLTYPE eCallType = getBaseMultiCallType();
  700. if (eCallType == CALLTYPE.LOBBY || eCallType == CALLTYPE.GUARD || eCallType == CALLTYPE.RESIDENCE)
  701. return true;
  702. else return false;
  703. } catch (RuntimeException re) {
  704. LogUtil.errorLogInfo("", TAG, re);
  705. return false;
  706. } catch (Exception e) {
  707. Log.e(TAG, "[Exception] isBaseMultiCallMoIP()");
  708. //e.printStackTrace();
  709. LogUtil.errorLogInfo("", TAG, e);
  710. return false;
  711. }
  712. }
  713. public CALLTYPE getMultiCallType() {
  714. try {
  715. return eMultiCallType;
  716. } catch (RuntimeException re) {
  717. LogUtil.errorLogInfo("", TAG, re);
  718. return CALLTYPE.ERROR;
  719. } catch (Exception e) {
  720. Log.e(TAG, "[Exception] getMultiCallType()");
  721. //e.printStackTrace();
  722. LogUtil.errorLogInfo("", TAG, e);
  723. return CALLTYPE.ERROR;
  724. }
  725. }
  726. public CALLSTATUS getMultiCallStatus() {
  727. try {
  728. return eMultiCallStatus;
  729. } catch (RuntimeException re) {
  730. LogUtil.errorLogInfo("", TAG, re);
  731. return CALLSTATUS.IDLE;
  732. } catch (Exception e) {
  733. Log.e(TAG, "[Exception] getMultiCallStatus()");
  734. //e.printStackTrace();
  735. LogUtil.errorLogInfo("", TAG, e);
  736. return CALLSTATUS.IDLE;
  737. }
  738. }
  739. public CALLOWNER getMultiCallOwner() {
  740. try {
  741. return eMultiCallOwner;
  742. } catch (RuntimeException re) {
  743. LogUtil.errorLogInfo("", TAG, re);
  744. return CALLOWNER.NONE;
  745. } catch (Exception e) {
  746. Log.e(TAG, "[Exception] getMultiCallOwner()");
  747. //e.printStackTrace();
  748. LogUtil.errorLogInfo("", TAG, e);
  749. return CALLOWNER.NONE;
  750. }
  751. }
  752. public boolean getMultiCallAccept() {
  753. try {
  754. LOG("[getMultiCallAccept] bMultiCallAccept [" + bMultiCallAccept + "]");
  755. return bMultiCallAccept;
  756. } catch (RuntimeException re) {
  757. LogUtil.errorLogInfo("", TAG, re);
  758. return false;
  759. } catch (Exception e) {
  760. Log.e(TAG, "[Exception] getMultiCallAccept()");
  761. //e.printStackTrace();
  762. LogUtil.errorLogInfo("", TAG, e);
  763. return false;
  764. }
  765. }
  766. public boolean getMultiCallPSTNReject() {
  767. try {
  768. return bMultiCallPSTNReject;
  769. } catch (RuntimeException re) {
  770. LogUtil.errorLogInfo("", TAG, re);
  771. return false;
  772. } catch (Exception e) {
  773. Log.e(TAG, "[Exception] getMultiCallPSTNReject()");
  774. //e.printStackTrace();
  775. LogUtil.errorLogInfo("", TAG, e);
  776. return false;
  777. }
  778. }
  779. public String getMultiCall_ID() {
  780. try {
  781. return strMultiCall_ID;
  782. } catch (RuntimeException re) {
  783. LogUtil.errorLogInfo("", TAG, re);
  784. return "ERROR";
  785. } catch (Exception e) {
  786. Log.e(TAG, "[Exception] getMultiCall_ID()");
  787. //e.printStackTrace();
  788. LogUtil.errorLogInfo("", TAG, e);
  789. return "ERROR";
  790. }
  791. }
  792. public String getMultiCall_ID_H() {
  793. try {
  794. return strMultiCall_ID_H;
  795. } catch (RuntimeException re) {
  796. LogUtil.errorLogInfo("", TAG, re);
  797. return "ERROR";
  798. } catch (Exception e) {
  799. Log.e(TAG, "[Exception] getMultiCallID_H()");
  800. //e.printStackTrace();
  801. LogUtil.errorLogInfo("", TAG, e);
  802. return "ERROR";
  803. }
  804. }
  805. public String getMultiCall_ID_L() {
  806. try {
  807. return strMultiCall_ID_L;
  808. } catch (RuntimeException re) {
  809. LogUtil.errorLogInfo("", TAG, re);
  810. return "ERROR";
  811. } catch (Exception e) {
  812. Log.e(TAG, "[Exception] getMultiCallID_L()");
  813. //e.printStackTrace();
  814. LogUtil.errorLogInfo("", TAG, e);
  815. return "ERROR";
  816. }
  817. }
  818. public String getMultiCall_Name() {
  819. try {
  820. return strMultiCall_Name;
  821. } catch (RuntimeException re) {
  822. LogUtil.errorLogInfo("", TAG, re);
  823. return "ERROR";
  824. } catch (Exception e) {
  825. Log.e(TAG, "[Exception] getMultiCall_Name()");
  826. //e.printStackTrace();
  827. LogUtil.errorLogInfo("", TAG, e);
  828. return "ERROR";
  829. }
  830. }
  831. public String getMultiCall_IP() {
  832. try {
  833. return strMultiCall_IP;
  834. } catch (RuntimeException re) {
  835. LogUtil.errorLogInfo("", TAG, re);
  836. return "ERROR";
  837. } catch (Exception e) {
  838. Log.e(TAG, "[Exception] getMultiCall_IP()");
  839. //e.printStackTrace();
  840. LogUtil.errorLogInfo("", TAG, e);
  841. return "ERROR";
  842. }
  843. }
  844. }
  845. public enum PSTNEVENTTYPE {
  846. RINGING,
  847. RINGING_END,
  848. CID
  849. }
  850. public enum CALLEVENTTYPE {
  851. RECEIVE_CALL, // 호출 수신 (호출 수신)
  852. TRYING_CALL, // 호출 시도중 (호출 발신)
  853. RECEIVE_CALL_2ND, // 멀티콜 수신 (호출 수신)
  854. RECEIVE_CALL_ACK, // 호출응답 수신 (호출 발신)
  855. REQUEST_FRONT_MONITORING, // 호출응답 수신 (호출 발신)
  856. REQUEST_RESIDENCE_CALL, // 이웃통화 요청 수신 (호출 발신)
  857. CONNECT_CALL, // 통화 시작
  858. TERMINATE_CALL, // 통화 종료
  859. CANCEL_CALL, // 호출 취소
  860. CANCEL_CALL_2ND, // 멀티콜 호출 취소
  861. REJECT_CALL, // 호출수신 거절
  862. REJECT_BUSY_CALL, // 통화중 호출수신 거절
  863. FORWARD_CALL, // 착신전환 설정
  864. CALLERID, // Caller ID
  865. TIMEOUT_1STCALL, // 1st Call Timeout
  866. TIMEOUT_2NDCALL, // 2nd Call Timeout
  867. TIMEOUT_3RDCALL, // 3rd Call Timeout
  868. MOIP_VIDEO_SET, // MoIP 영상통화 설정
  869. DOOR_OPEN, // 문열림 설정
  870. PSTN_RING, // PSTN ARS동작을 위해, UI에서 Ring을 카운트 하기위한 이벤트
  871. PSTN_DTMF, // PSTN DTMF 수신
  872. INITIALIZE_ALLCALL, // 초기화 (서브월패드인 경우에만 사용함)
  873. NONE;
  874. public static CALLEVENTTYPE getCALLEVENTTYPE(String value) {
  875. try {
  876. if (value.equals(RECEIVE_CALL.toString())) {
  877. return RECEIVE_CALL;
  878. } else if (value.equals(TRYING_CALL.toString())) {
  879. return TRYING_CALL;
  880. } else if (value.equals(RECEIVE_CALL_2ND.toString())) {
  881. return RECEIVE_CALL_2ND;
  882. } else if (value.equals(RECEIVE_CALL_ACK.toString())) {
  883. return RECEIVE_CALL_ACK;
  884. } else if (value.equals(REQUEST_FRONT_MONITORING.toString())) {
  885. return REQUEST_FRONT_MONITORING;
  886. } else if (value.equals(CONNECT_CALL.toString())) {
  887. return CONNECT_CALL;
  888. } else if (value.equals(TERMINATE_CALL.toString())) {
  889. return TERMINATE_CALL;
  890. } else if (value.equals(CANCEL_CALL.toString())) {
  891. return CANCEL_CALL;
  892. } else if (value.equals(REJECT_CALL.toString())) {
  893. return REJECT_CALL;
  894. } else if (value.equals(REJECT_BUSY_CALL.toString())) {
  895. return REJECT_BUSY_CALL;
  896. } else if (value.equals(FORWARD_CALL.toString())) {
  897. return FORWARD_CALL;
  898. } else if (value.equals(CALLERID.toString())) {
  899. return CALLERID;
  900. } else if (value.equals(TIMEOUT_1STCALL.toString())) {
  901. return TIMEOUT_1STCALL;
  902. } else if (value.equals(TIMEOUT_2NDCALL.toString())) {
  903. return TIMEOUT_2NDCALL;
  904. } else if (value.equals(TIMEOUT_3RDCALL.toString())) {
  905. return TIMEOUT_3RDCALL;
  906. } else if (value.equals(MOIP_VIDEO_SET.toString())) {
  907. return MOIP_VIDEO_SET;
  908. } else if (value.equals(DOOR_OPEN.toString())) {
  909. return DOOR_OPEN;
  910. } else if (value.equals(PSTN_RING.toString())) {
  911. return PSTN_RING;
  912. } else if (value.equals(PSTN_DTMF.toString())) {
  913. return PSTN_DTMF;
  914. } else if (value.equals(INITIALIZE_ALLCALL.toString())) {
  915. return INITIALIZE_ALLCALL;
  916. } else if (value.equals(REQUEST_RESIDENCE_CALL.toString())) {
  917. return REQUEST_RESIDENCE_CALL;
  918. } else if (value.equals(NONE.toString())) {
  919. return NONE;
  920. } else {
  921. return null;
  922. }
  923. } catch (RuntimeException re) {
  924. LogUtil.errorLogInfo("", TAG, re);
  925. return null;
  926. } catch (Exception e) {
  927. Log.e(TAG, "[Exception] getCALLEVENTTYPE()");
  928. //e.printStackTrace();
  929. LogUtil.errorLogInfo("", TAG, e);
  930. return null;
  931. }
  932. }
  933. }
  934. public String makeSIPID(CALLTYPE eCallType, String strDong, String strHo) {
  935. try {
  936. LOG_INFO("[makeSIPID] eCallType : " + eCallType + ", strDong : " + strDong + ", strHo : " + strHo);
  937. String SIPID = "12345678_Resi_0101_0101_01";
  938. String strDeviceCnt = "01";
  939. String strType = DEVICENAME.strType_Resi;
  940. if (eCallType == CALLTYPE.RESIDENCE) strType = DEVICENAME.strType_Resi;
  941. else if (eCallType == CALLTYPE.LOBBY) strType = DEVICENAME.strType_Lobby;
  942. else if (eCallType == CALLTYPE.GUARD) strType = DEVICENAME.strType_Guard;
  943. else if (eCallType == CALLTYPE.IHUB) strType = DEVICENAME.strType_Ihub;
  944. else if (eCallType == CALLTYPE.RENTRESIDENCE) strType = DEVICENAME.strType_RentResi;
  945. else if (eCallType == CALLTYPE.FRONT) strType = DEVICENAME.strType_Front;
  946. SIPID = Global.ZeroPadding_Head(8, Global.getSitecodeString()) + "_" + strType + "_" + Global.ZeroPadding_Head(4, strDong) + "_" + Global.ZeroPadding_Head(4, strHo) + "_" + strDeviceCnt;
  947. LOG_INFO("[makeSIPID] SIPID : " + SIPID);
  948. return SIPID;
  949. } catch (RuntimeException re) {
  950. LogUtil.errorLogInfo("", TAG, re);
  951. return "ERROR";
  952. } catch (Exception e) {
  953. Log.e(TAG, "[Exception] MakeSIPID(...) : " + e);
  954. //e.printStackTrace();
  955. LogUtil.errorLogInfo("", TAG, e);
  956. return "ERROR";
  957. }
  958. }
  959. public String makeSIPID(String strIPAddress) {
  960. try {
  961. LOG_INFO("[makeSIPID] strIPAddress : " + strIPAddress);
  962. String SIPID = "12345678_Resi_0101_0101_01";
  963. String dong = "101";
  964. String ho = "101";
  965. String strType = DEVICENAME.strType_Resi;
  966. String strDeviceCnt = "01";
  967. String[] IP_Parse = strIPAddress.split("\\.");
  968. // Log.d(TAG, "[makeSIPID] IP_Parse.length = " + IP_Parse.length);
  969. // for (int i = 0; i < IP_Parse.length; i++)
  970. // {
  971. // Log.d(TAG, "IP_Parse[" + i + "] : " + IP_Parse[i]);
  972. // }
  973. if (ConfigValues.bIPExpansion) {
  974. if (IP_Parse[1].equals("0")) {
  975. dong = "100";
  976. } else {
  977. dong = Integer.toString(((Integer.parseInt(IP_Parse[0]) * 100) + Integer.parseInt(IP_Parse[1])));
  978. }
  979. } else {
  980. dong = Integer.toString((((Integer.parseInt(Global.getDongString()) / 100) * 100) + Integer.parseInt(IP_Parse[1])));
  981. }
  982. if (IP_Parse[2].equals("128")) {
  983. // 경비실폰
  984. strType = DEVICENAME.strType_Guard;
  985. ho = IP_Parse[3];
  986. } else if (IP_Parse[2].equals("0")) {
  987. // 로비폰
  988. strType = DEVICENAME.strType_Lobby;
  989. ho = IP_Parse[3];
  990. if(IP_Parse[3].equals("11"))
  991. strType = DEVICENAME.strType_Front;
  992. } else if (IP_Parse[2].equals("201")) {
  993. // 아이허브
  994. strType = DEVICENAME.strType_Ihub;
  995. ho = IP_Parse[3];
  996. } else if (IP_Parse[2].equals("129")) {
  997. // Ihub
  998. strType = DEVICENAME.strType_Front;
  999. ho = IP_Parse[3];
  1000. } else {
  1001. strType = Declare.DEVICENAME.strType_Resi;
  1002. ho = IP_Parse[2] + Global.ZeroPadding_Head(2, IP_Parse[3]);
  1003. if (ConfigValues.bSetRentHouse) strDeviceCnt = "11";
  1004. }
  1005. // Log.d(TAG, "[makeSIPID] dong = " + dong + ", ho = " + ho);
  1006. SIPID = Global.ZeroPadding_Head(8, Global.getSitecodeString()) + "_" + strType + "_" + Global.ZeroPadding_Head(4, dong) + "_" + Global.ZeroPadding_Head(4, ho) + "_" + strDeviceCnt;
  1007. LOG_INFO("[makeSIPID] SIPID : " + SIPID);
  1008. return SIPID;
  1009. } catch (RuntimeException re) {
  1010. LogUtil.errorLogInfo("", TAG, re);
  1011. return "ERROR";
  1012. } catch (Exception e) {
  1013. Log.e(TAG, "[Exception] MakeSIPID(...) : " + e);
  1014. //e.printStackTrace();
  1015. LogUtil.errorLogInfo("", TAG, e);
  1016. return "ERROR";
  1017. }
  1018. }
  1019. int nSIPPort = 5060;
  1020. public String makeCallForwarInfo(String strIPAddress) {
  1021. try {
  1022. String strForwardInfo = makeSIPID(strIPAddress) + "@" + strIPAddress + ":" + nSIPPort;
  1023. LOG_INFO("[makeCallForwarInfo] strForwardInfo [" + strForwardInfo + "]");
  1024. return strForwardInfo;
  1025. } catch (RuntimeException re) {
  1026. LogUtil.errorLogInfo("", TAG, re);
  1027. return "ERROR";
  1028. } catch (Exception e) {
  1029. Log.e(TAG, "[Exception] makeCallForwarInfo(String strIPAddress)");
  1030. //e.printStackTrace();
  1031. LogUtil.errorLogInfo("", TAG, e);
  1032. return "ERROR";
  1033. }
  1034. }
  1035. public CALLTYPE getCallType(String strIPAddress) {
  1036. try {
  1037. LOG("[getCallType] strIPAddress = " + strIPAddress);
  1038. String[] IP_Parse = strIPAddress.split("\\.");
  1039. if (IP_Parse[2].equals("128")) return CALLTYPE.GUARD;
  1040. else if (IP_Parse[2].equals("0"))
  1041. {
  1042. if(IP_Parse[3].equals("11"))
  1043. return CALLTYPE.FRONT;
  1044. return CALLTYPE.LOBBY;
  1045. }
  1046. else if (IP_Parse[2].equals("201")) return CALLTYPE.IHUB;
  1047. else if (IP_Parse[2].equals("129")) return CALLTYPE.FRONT;
  1048. else return CALLTYPE.RESIDENCE;
  1049. } catch (RuntimeException re) {
  1050. LogUtil.errorLogInfo("", TAG, re);
  1051. return CALLTYPE.NONE;
  1052. } catch (Exception e) {
  1053. Log.e(TAG, "[getCallType] getCallType(strIPAddress) + e");
  1054. //e.printStackTrace();
  1055. LogUtil.errorLogInfo("", TAG, e);
  1056. return CALLTYPE.NONE;
  1057. }
  1058. }
  1059. public CALLTYPE getTargetID(String strIPAddress) {
  1060. try {
  1061. LOG("[getCallType] strIPAddress = " + strIPAddress);
  1062. String[] IP_Parse = strIPAddress.split("\\.");
  1063. if (IP_Parse[2].equals("128")) return CALLTYPE.GUARD;
  1064. else if (IP_Parse[2].equals("0"))
  1065. {
  1066. if(IP_Parse[3].equals("11"))
  1067. return CALLTYPE.FRONT;
  1068. return CALLTYPE.LOBBY;
  1069. }
  1070. else if (IP_Parse[2].equals("201")) return CALLTYPE.IHUB;
  1071. else if (IP_Parse[2].equals("129")) return CALLTYPE.FRONT;
  1072. else return CALLTYPE.RESIDENCE;
  1073. } catch (RuntimeException re) {
  1074. LogUtil.errorLogInfo("", TAG, re);
  1075. return CALLTYPE.NONE;
  1076. } catch (Exception e) {
  1077. Log.e(TAG, "[getCallType] getCallType(strIPAddress) + e");
  1078. //e.printStackTrace();
  1079. LogUtil.errorLogInfo("", TAG, e);
  1080. return CALLTYPE.NONE;
  1081. }
  1082. }
  1083. public boolean bTalkTestModeEnable = false;
  1084. public Timer CallTimer = null;
  1085. CALLTYPE eCallTypeTimer;
  1086. public class CTT { // CTT = Call Timeout Table, 단위 Sec
  1087. public int TIMEOUT_SEC_1 = 1;
  1088. public int TIMEOUT_SEC_10 = 10;
  1089. public int TIMEOUT_SEC_30 = 30;
  1090. public int TIMEOUT_SEC_60 = 60;
  1091. public int TIMEOUT_SEC_180 = 180;
  1092. public int WAITNG_INVITE_ACK = 10;
  1093. public int CALLING = 30;
  1094. public int CALLED = 35;
  1095. public int RESIDENCEnRESIDENCE = 180;
  1096. public int RESIDENCEnLOBBY = 60;
  1097. public int RESIDENCEnGUARD = 180;
  1098. public int RESIDENCEnFRONT = 60;
  1099. public int LOBBYnGUARD = 60;
  1100. public int GUARDnGUARD = 180;
  1101. public int GUARDnIHUB = 180;
  1102. public int KILLTIMER = -99;
  1103. public void setTalkTestMode() {
  1104. RESIDENCEnRESIDENCE = 9999999;
  1105. RESIDENCEnLOBBY = 999999;
  1106. RESIDENCEnGUARD = 999999;
  1107. RESIDENCEnFRONT = 999999;
  1108. LOBBYnGUARD = 999999;
  1109. GUARDnGUARD = 999999;
  1110. GUARDnIHUB = 999999;
  1111. }
  1112. public void setTalkNormalMode() {
  1113. RESIDENCEnRESIDENCE = 180;
  1114. RESIDENCEnLOBBY = 60;
  1115. RESIDENCEnGUARD = 180;
  1116. RESIDENCEnFRONT = 60;
  1117. LOBBYnGUARD = 60;
  1118. GUARDnGUARD = 180;
  1119. GUARDnIHUB = 180;
  1120. }
  1121. }
  1122. }