1. 2010.6 임베디드 인터넷 전화기 #


 개발기간 32일 (2010년 5월 19일 ~ 2010년 6월 22일)

● 프로그램 요약
I. Dice(Dongguk ICE) Phone 이란?
▶ ARM 계열 프로세서와 터치스크린, 네트워크 접근이 가능한 장비에서 SIP 프로토콜를 기반으로 구현한 임베디드 리눅스 기반의 인터넷 전화기 프로그램이다.
 인터넷이 연결되어 있는 상황이라면 일반 전화 쓰듯이 전화를 주고 받을 수 있다.

II. 프로그램 개발 언어(SDK) 및 환경
▶ 개발 언어(SDK) : C/C++ (Qt/Embedded 4)
▶ 개발 환경 : Code::Blocks, Fedora 12

호스트 : CPU Intel Core2Duo T5600 1.83GHz, 2GB RAM, 사용OS: 페도라 12
타겟 : PXA270 : Intel Xscale계열,clock speed ,520Mhz, DRAM : 128MB
컴파일러 : ARM-LINUX-GCC 3.3.3
 
III. 사용 환경
▶ Embedded GNU/Linux (kernerl 2.6.X)
 
IV. 주요 기능
①	전화 걸기/받기
▶ SIP 규격으로 초기화를 하고 국내 SIP 프록시 서버에 접근하여 전화를 걸고 받는다. 사용자가 입력한 번호로 전화를 걸거나 받으면서 로그를 출력. 
②	전화번호 입력
▶ 터치스크린을 눌러 전화번호를 입력.

noname01.jpg
[JPG image (21.16 KB)]
그림 1. 시작 화면

시작 시 이루어지는 작업으로 먼저 네트워크 연결을 위한 초기화 작업과 환경파일(/home/dicephonerc)에서 저장된 SIP 설정 정보를 읽어 들이고, 마지막으로 음성 코덱을 읽어오면 초기화가 완료 된다. 본 프로젝트에서 사용된 음성 코덱은 훌륭한 오픈 소스 음성 코덱인 speex와 PCMU/PCMA(G.711)을 사용하였며 실행 시스템에서 사용가능한 음성코덱은 모두 로드된다. 코덱을 모두 읽어 들이면 네트워크 상태(대역폭)에 따라 최적의 코덱이 자동으로 선택된다. speex를 사용하려면 arm계열로 크로스 컴파일 후 라이브러리에 등록을 해야 한다.

noname02.jpg
[JPG image (10.76 KB)]
그림 2. 인증 성공 로그

지금은 SIP 인증은 따로 입력을 받지 않고 자동으로 이루어진다. 인증이 성공하면 SIP 로그에 "Registration on sip:<프록시 주소> success" 라는 메시지가 출력된다.
SIP 규격에 맞추어 프록시 서버에 인증 시도 - 인증 정보 요구 - 인증 정보 전송 등 인증 절차가 완료되면 통화가 가능하며 터치 스크린 혹은 LDS4000 Keypad(option)를 이용하여 번호를 입력 하고 통화를 연결한다.

noname03.jpg
[JPG image (21.77 KB)]
그림 3. 번호 입력

noname04.jpg
[JPG image (16.51 KB)]
그림 4. Target to Cell phone 수신 장면

noname05.jpg
[JPG image (23.58 KB)]
그림 5. 통화 중

noname06.jpg
[JPG image (22.69 KB)]
그림 6. Cell to Target 전화수신

noname07.jpg
[JPG image (19.42 KB)]
그림 7. 상태 및 전송 로그

전송 로그와 클라이언트의 일반 상태(General State) 로그를 보여준다. 이는 LDS 상에도 띄우는 것을 목표로 했었으나 구조적인 문제가 있었다. dicephone의 back-end를 이루는 linphone의 coreapi는 C로 구현되어 있고 수신시, 전송시, 인증 요청시 등 각 SIP 이벤트에 대한 호출 장소는 메인 핸들인 linphone 코어(LinphoneCore *)의 멤버 변수인 가상 함수 테이블 구조체에 의해 참조되는 콜백 함수로 정의되어 있는데, linphone coreapi를 C++로 변환하는 과정에서 메서드의 함수 포인터를 얻기 위해 클래스 안에서 정의되는 콜백 함수들은 정적 함수로 정의 하였으며 이 때문에 메인 위젯 클래스에 포함되는 Qt의 디자인 위젯 클래스 m_ui 멤버에 대한 접근이 불가능 하였다. 이는 언어의 차이에서 오는 구조적인 문제로 이를 해결하기 위해서는 구조를 상당부분 바꾸어야 하는 등 투자하는 비용대비 효과가 작기 때문에 프레임 버퍼상의 Qt 위젯이 아닌 콘솔 창에 로그를 출력하는 것으로 대신하였다.


p2.jpg
[JPG image (62.83 KB)]
그림 8. 시스템 구조

항목 별 설명
1. osip2: GNU의 SIP 라이브러리로 SIP 초기화와 컨트롤 인터페이스를 제공한다.
2. eXosip2: osip2의 확장 라이브러리
3. oRTP: 실시간 전송 프로토콜 라이브러리
4. mediastream2: linphone에서 사용하는 미디어 전송 라이브러리
5. linphone core: 보다 상위 응용 계층 수준으로 추상화된 SIP와 멀티미디어 인터페이스를 제공
6. dicephone: Qt4를 통한 인터페이스, linphone core의 front-end 구성

mediastream2 이하 모든 라이브러리는 적절한 소스 수정과 컴파일 옵션을 통해 arm 용으로 크로스 컴파일 하여야 한다.

버전 정보
speex >= 1.2rc , ortp >= 0.16.3 (qt4 >= 4.5.3)
osip2 >= 3.1.0, eXosip2 >= 3.1.0


noname09.jpg
[JPG image (38.32 KB)]
그림 9. dicephone-1.0.0.0



마지막.
IMG_4881.JPG
[JPG image (324.09 KB)]

(※음성 코덱 테스트하며 생긴 기록 ;; )


코드 샘플 #1


2. 2010.7 퀄리스타.ITS #

intro-01.jpg
[JPG image (36.16 KB)]

 개발기간 60일 (2010년 7월 1일 ~ 2010년 8월 31일)

● 프로그램 요약
I. 퀄리스타.ITS 란?
▶ 프로젝트를 진행하다 보면, 크고 작은 이슈들에 직면하게 되는데 프로젝트에서 발생하는 버그 및 이슈를 추적, 관리하는 프로그램이다.
  이슈 추적시스템(ITS)은 Mantis, Trac, Bugzilla 등 여러 종류가 있지만 퀄리스타.ITS는 국내 환경에 맞추어 사용자 편의와 보다 빠르고 쉬운 작업을 목적으로 비전문가들도 쉽게 사용할 수 있도록 제작되었다.

II. 프로그램 개발 언어 및 환경
▶ 개발 언어 : C#.NET 3.5 (Winform)
▶ 개발 환경 : Visual Studio 2010, Windows 7 UltimateK
 
III. 사용 환경
▶ Windows XP, Windows 7 (32bit)

IV. 주요 기능
①	 이슈추적
②	 체크리스트
③	 오프라인 동기화 작업지원 
 
V. 담당 업무

UI 개발 담당. (커스텀 리스트 뷰, 이슈 등록, 데이터 동기화 상태 변화, 첨부파일 추가 및 파일 전송 컴포넌트, 체크리스트 프리셋 내보내기/가져오기 등.)

p-0.jpg
[JPG image (168.47 KB)]

p-1.jpg
[JPG image (169.76 KB)]

p-2.jpg
[JPG image (133.1 KB)]


코드 샘플 #2

3. 2010.12 안드로이드 기반 모니터 좌표 인식 데이터 전송 애플리케이션 #

an_p-1.PNG
[PNG image (1.32 MB)]


● 프로그램 요약
I. Aero Snap 이란?
▶ 안드로이드 카메라를 통해 모니터 화면을 표시하면 그 좌표에 위치한 오브젝트(파일, 사진, 글, 주소창 주소 등)를 Wi-Fi를 통해 안드로이드로 가져오는 데이터 전송 애플리케이션.
  USB가 필요한 데이터 매니저와 달리 무선으로 스마트폰과 PC의 파일을 교환할 수 있다는 장점을 지니며, 촬용을 통해 사용자가 쉽게 원하는 파일을 주고 받을 수 있는 장점을 가진다.

II. 프로그램 개발 언어(SDK) 및 환경
▶ 개발 언어(SDK) : (Android)Java, (PC)C#.NET 4.0 (Win32API, OpenCV)
▶ 개발 환경 : Eclipse Helios, Visual Studio 2010, Windows 7 UltimateK
 
 III. 사용 환경
▶ Android : Android 2.1
▶ PC : Windows XP, Windows 7 (32bit)
 
V. 주요 기능
①	안드로이드와 같은 네트워크의 PC 검색 
▶ 안드로이드와 같은 공유기에 연결된 PC를 검색해 Aero Snap PC가 실행되어 접속을 기다리고 있는 PC를 출력한다.
②	사진을 통한 좌표 인식
▶ 클라이언트에서 사진 촬영을 하면 셔터가 닫히기 직전 서버(PC)에서 순간적으로 좌표 인식을 돕기 위한 마커를 표시하며 표시된 마커를 통해 좌표를 인식한다. 검색 알고리즘은 정규화 과정을 거친 템플리트 매칭 알고리즘을 사용한다.

~marker.jpg
[JPG image (428.42 KB)]

그림 1. 인식용 마커. 마커는 GDI+로 직접 그렸다. 패턴은 임의로 그렸는데 나중에 인식률을 높일 수 있는 마커를 더 연구해 볼 수 있겠다.
단, 파란색과 빨간색 사각형은 좌표 인식 과정에 빠질 수 없는 성분이며 정규화에 사용된다. 정규화는 몇 가지 절차를 거치는데 크게 먼저 카메라 distortion을 보정(undistortion)하고, 허프 변환을 통해 빨간색 사각형의 직선 성분을 검출하여 회전을 보정한 다음, 파란색 사각형을 레퍼런스 사각형으로 삼아 크기를 정규화(size normalization)한다.

~src.jpg
[JPG image (315.35 KB)]

그림 2. 안드로이드 RAW 영상

~nor.jpg
[JPG image (3.26 KB)]

그림 3. 정규화 과정을 거친 이미지

Retrieved from http://hyacinth.byus.net/moniwiki/wiki.php/학부/4학년
last modified 2014-12-24 11:10:40