투케이2K

84. (TWOK/WORK) [업무 이슈] 모바일 - Esptouch SmartConfig 스마트 콘피그 타임 아웃 발생 및 무한 연결 대기 이슈 - 핸들러 작업 예약 지정 본문

투케이2K 업무정리

84. (TWOK/WORK) [업무 이슈] 모바일 - Esptouch SmartConfig 스마트 콘피그 타임 아웃 발생 및 무한 연결 대기 이슈 - 핸들러 작업 예약 지정

투케이2K 2024. 8. 25. 15:23
반응형

[제 목]

[업무 이슈] 모바일 - Esptouch SmartConfig 스마트 콘피그 타임 아웃 발생 및 무한 연결 대기 이슈 - 핸들러 작업 예약 지정

 

[내 용]

 

------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------

1. 특정 기기 등록 시 Esptouch 에스프레소 SmartConfig 동작 무한 로딩 연결 상태 체크 이슈 문의

------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------

1. 하드웨어 기기 고장 점검 체크

  >> 다른 휴대폰 기종으로 기기 등록 과정 다중 테스트 수행 및 정상 기기 등록 확인


2. 모바일 로직 점검 수행

  >> 스마트 콘피그 활성 수행 후 >> 정상 연결 완료 시 TCP/IP 통신 수행 로직 확인

  >> 스마트 콘피그 기기 연결 체크를 위한 브로드 캐스팅 이후 추가 보완 로직 없는 상태 확인 (무한 연결 체크 현상 확인)

  >> 실제 스마트 콘피그 라이브러리에서는 최대 60초 이후 타임 아웃이 발생하는 로그 확인

       Welcome Esptouch 1.1.1 // TODO [초기화 성공]
       agSocket(113) with statsTag=0xffffffff, statsUid=-1
       tagSocket(117) with statsTag=0xffffffff, statsUid=-1
       mServerSocket is created, socket read timeout: 60000, port: 18266 // TODO [타임 아웃 시간]
       receiveSpecLenBytes() entrance: len = 11

       received len : 11 // TODO [실제 브로드 캐스팅 전파 후 >> 콜백 연결 메시지 수신 받음]
       recDatas[0]:24
       recDatas[1]:36
       recDatas[2]:-95
       recDatas[3]:96
       recDatas[4]:-88
       recDatas[5]:77
       recDatas[6]:-24
       recDatas[7]:-64
       recDatas[8]:-88
       recDatas[9]:0
       recDatas[10]:17
       receiveSpecLenBytes: $�`�M���??

------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------

1. 모바일 로직 보완 및 스마트 콘피그 브로드 캐스팅 이후 Handler 핸들러 작업 예약으로 타임 아웃 처리 로직 작성

                            // --------------------------------------------------------

                            // TODO [브로드 캐스팅 알림 전파]
                            esptouchTask.setPackageBroadcast(true);

                            // --------------------------------------------------------

                            // TODO [최대 대기 브로드 캐스팅 및 연결 대기 시간]
                            Handler handler = new Handler(Looper.getMainLooper());
                            handler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    S_Log._E_(ACTIVITY_NAME + " : EsptouchTask 브로드 캐스트 타임 아웃", null);

                                }

                            }, (broadCastSeconds * 1000) );

                            // --------------------------------------------------------

                            // TODO [브로드 캐스팅 알림 전파 이벤트 결과 확인]
                            esptouchTask.setEsptouchListener(new IEsptouchListener() {
                                @Override
                                public void onEsptouchResultAdded(IEsptouchResult result) {
                                    S_Log._W_(ACTIVITY_NAME + " : EsptouchTask 브로드 캐스트 연결 상태 콜백 결과 확인", new String[]{ result.toString() });

                                }
                            });

                            // --------------------------------------------------------

                            // TODO [브로드 캐스팅 알림 결과 확인 대기]
                            int expectResultCount = 1;
                            List<IEsptouchResult> results = esptouchTask.executeForResults(expectResultCount);
                            IEsptouchResult first = results.get(0);

                            if (first.isCancelled()){
                                S_Log._E_(ACTIVITY_NAME + " : EsptouchTask 결과 확인 에러", new String[]{ "esptouchTask isCancelled" });

                                // [로직 종료]
                                return;
                            }

                            if (first.isSuc()) {

                                // TODO [ip 주소 확인] : [LOG :: DESCRIPTION :: EsptouchTaskBroadcast :: onNext :: 192.168.0.17]
                                String resultData = first.getInetAddress().getHostAddress();

                            }
                            else {
                                S_Log._E_(ACTIVITY_NAME + " : EsptouchTask 결과 확인 에러", new String[]{ "esptouchTask isSuc false" });
                            }

                            // --------------------------------------------------------

                        }
                        else {
                            S_Log._E_(ACTIVITY_NAME + " : EsptouchTask 브로드 캐스트 에러", new String[]{ "esptouchTask Is Null" });
                        }

------------------------------------------------------------------------------

반응형
Comments