한재중 : 인수인계 학습/질의 내용

4. Bypass/CADU Converter

Bypass/CADU Converter



분류내용/질문상태답변비고
1​내용
  • ​Bypass → CADU 변환 과정
    • Bypass 데이터 읽기
    • ASM 찾기
      • byte array 에서 0x1ACFFC1D 를 찾고 ASM 의 위치 정보를 byte 와 bit 단위로 반환함
        • 시작 위치? 종료 위치?
    • Descramble
    • RSDecoding
    • MissionAnalysis
    • MakeCADU

N/A

N/A​
2질문
  • ASM 의 경우, 0x1ACFFC1D 만 사용하는 것으로 알고 있음
  • K3ASMDetector.cs 에는 8개의 ASM 이 정의되어 있으나 0x1ACFFC1D 만 사용하고 있음
    •         const uint ASM0 = 0x1ACFFC1D;
              const uint ASM1 = 0xB06556B7;
              const uint ASM2 = 0x4F9AA948;
              const uint ASM3 = 0xE53003E2;
      
              const uint ASM4 = 0x25CFFC2E;
              const uint ASM5 = 0x8F655684;
              const uint ASM6 = 0x709AA97B;
              const uint ASM7 = 0xDA3003D1;
  • 왜 그런 것인가?

답변 대기

  • 주성하
    • ASM 이 여러 개가 있는 것이 아니라 QPSK 에 따라서 ASM 가 bit shift 되서 HDR 로부터 전달되는 경우가 있음
    • K3/K3A, CAS 때까지만 해도 그것을 체크하는 코드가 없었음
    • 그 다음 버전부터 ASM 를 bit shift 해서 찾는 코드가 있을 것임

3질문
  • bypass data 를 처리하기 위한 queue 의 최대 크기가 5,000 으로 하드코딩 되어 있음. 왜 그런 숫자가 결정된 것인가? Config 로 뺄 필요는 없는가?
    • 현재 구현되어 있는 모든 위성 (K3/K3A/K5/CAS500_1) 모두 동일함

답변 대기

  • 주성하
    • 그 당시의 경험치로 결정한 것으로 기억함

4




5. MWD

5.1. Reader

  • Console 프로그램


MWD Reader

분류내용/질문상태답변비고
1​내용
  • ​executer 를 통해 메인 기능 수행함
  • 콘솔에 입력을 받아서 아래 동작을 수행할 수 있음
    • exception: exception 발생
    • quit: 프로그램 종료
    • restart: 프로그램 종료 후, command 를 통해 재시작하고 프로그램은 종료
      • executer 동작을 종료시키고 재시작하는 것이기 때문에 port 충돌은 발생하지 않음

N/A

N/A​
2
  • executer 동작
    • WorkOrderLogPath 의 파일



3
  • MWDReaderConfig: executer 에서 사용하는 설정 정보
    • 항목내용비고
      ​WorkOrderLogPath​WorkOrder의 MWD Reader 실행 로그를 저장할 폴더 경로
      WorkOrderPath감시할 WorkOrder 폴더 경로
      L0FPathL0F가 저장되는 폴더 경로
      LoopbackPathLOOPBACK 테스트 결과가 저장되는 폴더 경로
      ReaderNameMWDReader의 이름
      AcceptableSatellitesReading process를 할 위성 코드들의 목록 (,로 분리)

      값이 null 인 경우에는 하드코딩된 초기값이 사용됨

      ConnectionRetryDIS.MWD.Viewer로 접속하는 횟수
      SatelliteElements위성 별 처리 정보별도의 클래스로 정의됨
    • SatelliteElement 정보
      • 항목내용비고
        ​Satellite​위성 코드 문자열
        ServerIP데이터를 전송할 서버 IP
        ServerPort데이터를 전송할 서버 Port
        K3K3ADisplayAPIDPAN의 4 영역(APID로 분리됨) 중 시현 영역 설정
        • K3/K3A 전용필드로서 enumeration 으로 정의되어 있음
          • APIDContent
            •     /// <summary>
                  /// Telemetry Constants (APID)
                  /// </summary>
                  /// <remarks>
                  /// Doc. No: K3A-D0-620-002 
                  /// Issue: F.00 Date: 15 
                  /// September 2014 
                  /// Page: 8 of 25 
                  /// </remarks>
                  public enum APIDContent
                  {
                      PAN0_X,
                      PAN0_Y,
                      PAN1_X,
                      PAN1_Y,
                      PAN2_X,
                      PAN2_Y,
                      PAN3_X,
                      PAN3_Y,
                      MS_BLUE1,
                      MS_BLUE2,
                      MS_GREEN1,
                      MS_GREEN2,
                      MS_RED1,
                      MS_RED2,
                      MS_NIR1,
                      MS_NIR2,
                      IR,
                  }

N/A



4

L0F Reader 의 경우, 모든 위성들에 대한 Class 가 동일하게 'L0FReader' 라는 class 명을 갖고 있음

위성 별로 구분은 namespace 를 통해 이뤄지고 있음 (→ 그냥 클래스 명으로 구분하는게 더 낫지 않을까??)




5
각 위성의 L0FReader 는 각자 읽을 파일의 확장자, 구조 등을 해당 class 내부에서 결정해서 사용하고 있음


6

L0FReader 의 입출력

  • 입력: *.raw, *.idx
  • 출력: source packet



7

MWD Viewer 를 실행/종료하는 주체

  • DIS Client 가 수신 시작/종료 시각을 기준으로 MWD Viewer 를 실행/종료함



8
MWD Reader 와 Viewer 는 TCP/IP 기반의 Socket 통신을 수행


9

MWD Reader 가 Viewer 로 초기 패킷 전달할 때, 유효성 검사하는데 그 때만 검사하고 그 결과를 사용하지 않는 것으로 보임

처음에 에러 찍고 끝임




10

현재 구조 상, 한번에 1개 SP 를 보내는 구조가 아니라 1번에 n개 SP 를 보낼 수 있는 구조임

idx 파일에서 stream index 의 차이가 12가 되지 않으면 유효한 SP 를 얻을 수 없다고 판단하고 있음 → 왜 12?




11
MWD Viewer 의 SP Parser 가 Reader 로부터 전달된 byte stream 을 SP 로 변환 → 변환된 SP 를 Decompressor 에서 각 편파 별로 밴드 별로 SP 를 저장