WIPI
This presentation is the property of its rightful owner.
Sponsored Links
1 / 28

WIPI 개발 PowerPoint PPT Presentation


  • 220 Views
  • Uploaded on
  • Presentation posted in: General

WIPI 개발. Introduction. 플랫폼이 제공하는 API 시스템 관련 API Call 수신관련 API Handset Device 관련 API 네트워크 관련 API 시리얼통신 관련 API 미디어 관련 API 타이머 관련 API 유틸리티 관련 API 파일관련 API InputMethod 관련 API 폰트 관련 API 프레임 버퍼 관련 API 가상 키 관련 API 표준 규격 1.2 에서 제외된 규격. Overview.

Download Presentation

WIPI 개발

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Wipi

WIPI 개발


Introduction

Introduction

  • 플랫폼이 제공하는 API

  • 시스템 관련 API

  • Call 수신관련 API

  • Handset Device 관련 API

  • 네트워크 관련 API

  • 시리얼통신 관련 API

  • 미디어 관련 API

  • 타이머 관련 API

  • 유틸리티 관련 API

  • 파일관련 API

  • InputMethod 관련 API

  • 폰트 관련 API

  • 프레임 버퍼 관련 API

  • 가상 키 관련 API

  • 표준 규격 1.2에서 제외된 규격


Overview

Overview

  • 이 장에서는 위피 프로그램을 개발하기 위한 준비에 대하여 알아보고 직접 프로그램을 작성해 본다.

  • 에뮬레이터를 설치하여 Clet과 Jlet을 실행해 보도록 한다.

  • Clet이 이용하는 API를 살펴보고 Jlet이 이용하는 API를 살펴본다.

  • 개발한 어플리케이션을 어떻게 단말기에 로딩하기

  • 2002년 정부가 수행한 “모바일 표준 플래폼” 사업의 예를 들어 설명.


Wipi

준비하기 – (1)

  • 개발 환경을 구성

    • 위피프로그램을 작성하기 위해서 필요한 것은 프로그램을 편집하기 위한 텍스트 에디터, 편집한 프로그램 소스를 컴파일 하기 위한 위피용 SDK, 위피지원 단말기 가 있어야 한다.

  • 위피 소스파일을 컴파일 하기 위해서 자바 컴파일러와 C 컴파일러가 필요

    • 자바 컴파일러는 Sun Microsystem 에서 제공하는 것을 사용

    • C 언어를 컴파일 하기 위해 GCC 등 아무 C 컴파일러가 가능

  • 위피 단말기

  • 위피용 에뮬레이터를 사용

  • 아로마 소프트에서 제작한 에뮬레이터

  • XCE에서 개발한 에뮬레이터


Wipi

준비하기 – (2)

  • 아로마 소프트에서 제작한 위피 에뮬레이터

  • 아로마 에뮬레이터를 설치한 후 디렉토리 구조


Wipi

준비하기 – (3)

  • Clet으로 짜여진 데모 프로그램을

    수행시킨 결과

  • XCE에서 제작한 위피 자바 에뮬레이터

    (SK-VM 에뮬레이터와 같은 모습 )


Hello world clet 1

HELLO WORLD_Clet – (1)

  • Clet 을 개발하기 위해서 Microsoft의 Visual Studio를 이용

  • 프로젝트를 생성

    • 프로젝트생성은 File > New > Project 에서 생성

    • Win32 Dynamic-Link Library 를 선택하고 프로젝트명은 “HelloWorld”

    • Working Directory는 독자의 환경에 적당한 디렉토리

    • 본 예제에서는 E:\project\WIPI\Clet


Hello world clet 2

HELLO WORLD_Clet – (2)

  • An Empty Project를 선택하고 Finish 버튼

  • Clet을 생성하기 위해 필요한 반드시 필요한 파일은 2개

    • 하나는 “WIPIHeader.h”

    • 하나는 “WIPIstub.obj”파일

  • Include Directory 를 추가하기 위하셔 메뉴 > Tools > Options 를 선택

  • 우측의 Show directorys for 항목이 Include를 나타내고 있음을 확인

  • 창의 “Directories :”영역에 “C:\AROMAWIPI\CAPPDEMO”추가

“WIPIHeader.h”

추가하기


Hello world clet 3

HELLO WORLD_Clet – (3)

  • 메뉴> Project >Setting 을 선택하면 Project Settings 창이 생성

  • Library 를 추가하는 메뉴는 Link Tab

  • Category 가 General 임을 확인

  • Object/library modeuls 영역에 에 “WIPIstub.obj”를 추가

  • Output file name 은 client/client.dll로 바꾼다.

WIPIstub.obj

추가


Hello world clet 4

HELLO WORLD_Clet – (4)

  • Clet을 컴파일 하기 위한 환경이 모두 설정

  • 파일은 File> New 선택후 생성되는 New 창에서 Files tab 을 선택하고, C++ Source File을 선택 하여 생성

“WIPIstub.obj”

추가하기 위한

디렉토리 추가


Hello world clet 5

HELLO WORLD_Clet – (5)

  • HelloWorld.c

#include "WIPIHeader.h"

MC_GrpContext cxt;

MC_GrpFrameBuffer bpl;

int clip[] = {0, 0, 120, 160};

int stage;

int width;

int height;

__int64 r;

void startClet(int argc, char* args[]) {

int i;

M_Int64 tl, tl2;

MC_knlPrintk("this is CGrDemo arg num %d!!!\n", argc);

for(i=0; i < argc; i++) {

MC_knlPrintk("args %d : %s\n", i, args[i]);

}


Hello world clet 6

HELLO WORLD_Clet – (6)

tl = 0x1111222233334444L;

tl2 = 0x66667777aaaaffffL;

MC_knlPrintk("test %d, %d, 0x%X, 0x%X\n", argc, argc, tl, tl2);

MC_knlPrintk("start Clet!!!\n");

bpl = MC_grpGetScreenFrameBuffer(0);

}

void pauseClet() {

}

void destroyClet() {

}

void resumeClet() {

}

void paintClet() {

int color;

color = MC_grpGetPixelFromRGB(0xFF, 0x00, 0x00);

MC_grpSetContext(&cxt, MC_GRP_CONTEXT_FG_PIXEL_IDX,color);

MC_grpDrawString(bpl,12, 12 ,"Hello World", -1, &cxt);

}

void handleCletEvent(int type, int parm1, int parm2){

}


Hello world clet 7

HELLO WORLD_Clet – (7)

  • 컴파일이 정상적으로 수행되면 생성된 client.dll 파일과 Clet.class ,Clet$CletCard.class 파일은 모두 client 디렉토리에 존재

  • 모든 파일을 jar 파일로 압축

  • iar 파일은 jar.exe 파일로 압축

  • jar.exe파일이 없는 경우 zip 파일로 압축한 사용하여도 실행은 가능


Hello world clet 8

HELLO WORLD_Clet – (8)

  • 실행시킬 어플리케이션을 설정하는 화면

사용할 Heap

영역의 크기인데

90 KB ~ 1024 KB

까지 조절 가능

Jlet’s Name 영역은

실행할 Jlet의 이름을

쓰는 영역으로 Clet


Hello world clet 9

HELLO WORLD_Clet – (9)

  • Clet HelloWorld 프로그램 수행 결과


Hello world jlet 1

HELLO WORLD_Jlet – (1)

  • HelloWorld.java

import org.kwis.msp.lcdui.*;

import org.kwis.msp.lwc.*;

public class HelloWorld extends Jlet {

protected void startApp(String args[]) {

Display dis = Display.getDefaultDisplay();

dis.pushCard(new Card() {

int color = 0xffffff;

public void paint(Graphics g) {

// 초기에 밑바탕을 그립니다.

g.setColor(color);

g.fillRect(0, 0, getWidth(), getHeight());

// 문자열을 찍습니다.

g.setColor(0);

g.drawString("Hello WIPI !!! ", 10, 10, g.TOP | g.LEFT);

}


Hello world jlet 2

HELLO WORLD_Jlet – (2)

public boolean keyNotify(int type, int key){

if(color == 0xffffff)

color = 0;

else

color += 0x111111;

repaint();

return true;

}

});

}

protected void pauseApp() { }

protected void resumeApp() { }

protected void destroyApp(boolean b){ }

}


Hello world jlet 3

HELLO WORLD_Jlet – (3)

  • 컴파일 할 때에는 –bootclasspath 옵션을 사용하여 WIPI API 만을 사용

  • bootclasspath의 값으로는 위피 에뮬레이터를 설치하면서 생성되었던 classes.zip 파일을 추가

    • JavaAppDemo\lib\classes.zip 에 존재

  • 생성된 모든 클래스 파일을 jar압축하는 것


Hello world jlet 4

HELLO WORLD_Jlet – (4)

  • java.exe 파일이 C:\jdk1.3.1\bin 에 존재

  • 에뮬레이터를 C:\Mobile\WIPI 에 설치

  • 소스 파일이 C:\Mobile\WIPI\src 디렉토리에 존재

  • batch의 예

    SET JAVA_HOME=C:\jdk1.3.1\bin

    SET WIPI_HOME=C:\Mobile\WIPI

    SET MAINCLASS=HelloWorld

    SET RESULT=HelloWorld

    %JAVA_HOME%\javac -bootclasspath %WIPI_HOME%\JavaAppDemo\lib\classes.zip -d .\classes .\src\*.java

    cd classes

    %JAVA_HOME%\jar cvf ../%RESULT%.jar *

    cd ..

    .%WIPI_HOME%\Emulator\WIPIEmul.exe -HEAPSIZE=230 -classpath %RESULT%.jar org.kwis.msp.lcdui.Main %MAINCLASS%


Hello world jlet 5

HELLO WORLD_Jlet – (5)

  • c:\xcewipi에 설치되어 있고 java 디렉토리가 C:\j2sdk1.4.0_03 일때 컴파일

C:\xcewipi>C:\j2sdk1.4.0_03\bin\javac

-bootclasspath classes.jar HelloWorld.java

  • XCE 위피 자바 에뮬레이터에서

  • Run 버튼을 눌렀을 때 화면


Hello world jlet 6

HELLO WORLD_Jlet – (6)

  • XCE 위피 자바 에뮬레이터의 실행결과


Clet jlet 2

Clet& Jlet – (2)

  • 자바로 개발된 어플리케이션을 Jlet

  • C언어를 사용하여 개발된 위피 프로그램을 Clet

  • void CletHandleEvent(int type, int param1, int param2)

  • void startClet(int argc, char *argv[]);

  • void pauseClet();

  • void resumeClet();

  • void destroyClet();

  • void paintClet(int x, int y, int w, int h);


Clet jlet 3

Clet& Jlet – (3)

  • Clet이 사용할 수 있는 함수들은 커널용 함수, 그래픽용 함수,데이터베이스용 함수, 파일시스템용 함수, NETWORK용 함수, 매체 처리기용 함수, SERIAL 통신용 함수, 호 제어용 함수, 폰 제어용 함수,타입 변경용 함수, 사용자 인터페이스 컴포넌트, 표준 C 라이브러리 함수 등으로 구성됨

  • 커널용 함수는 동적 메모리 할당/해제, 프로그램의 생성/종료, 타이머, 시스템 정보, 공유 메모리에 관한 함수들이 제공된다

    • 플래폼이 제공하는 오버레이 기능은 heap보다 큰 프로그램을 수행 함

    • DLL을 지원

    • 프로그램간에 자료공유는 공유메모리를 이용

  • 그래픽용 함수는 화면이나 오프 스크린 프레임 버퍼(Off Screen Frame Buffer)에 다양한 그리기를 할 수 있는 API들

  • 데이터 베이스용 함수는 데이터를 레코드를 삽입, 삭제 하기 위한 API들이다. 레코드는 문자 배열의 형태로 저장

  • 파일시스템용 함수에는 파일을 열고 읽고, 쓰며, 파일의 정보를 읽어오는 것과 관련된 API들이 포함


Clet jlet 4

Clet& Jlet – (4)

  • 네트워크용 함수는 TCP/IP 인터넷 통신에 관련된 모듈이다. 인터넷 접근, TCP/UDP 소켓, HTTP 연결에 관련된 API 들이 포함

  • 미디어 관련 함수는 사운드나 동영상등의 모든 Media에 대해서 처리를 해주는 매체 처리기와 관련된 함수와 톤 재생 및 음성녹음 및 볼륨 조절에 관련한 패키지

  • 시리얼통신용 함수는 시리얼 통신에 관련한 API

  • 폰 제어용 함수는 단말기에서 지원되는 부가장치들 예를 들어 BackLight와 LED를 제어하는 함수

  • 유틸리티 함수는 네트워크 사용시 유용하게 사용할 수 있는 함수가 존재

  • 사용자 인터페이스 컴포넌트에는 컴포넌트 , 텍스트 박스 컴포넌트 , 날짜/시간 컴포넌트 , 메뉴 컴포넌트 , 라벨 컴포넌트 , 리스트 컴포넌트 가 제공된다. 컴포넌트는 컴포넌트 클래스 구조체를 이용하여 생성


Clet jlet 5

Clet& Jlet – (5)

  • Jlet 용 API

    • java 패기지

    • kwis 패키지


Packing deployment 1

Packing & Deployment – (1)

  • 위피 서비스도 최종적으로는 사용자들이 어플리케이션을 네트워크로 다운받아서 사용하게 될 것

  • 2002년 “모바일 표준 플랫폼” 개발의 배포

  • 개발자가 SDK를 이용하여 어플리케이션을 개발 한 뒤 jar 파일과 ADF(application desctription File)을 Application 인증 서버에 전달한다.

  • 개발 결과물을 전달받은 Application 인증 서버는 응용 프로그램의 안전성 여부를 판정하며 이를 통과할 경우 ADF 파일에 안전성 확인 마크를 붙인다.

  • 안정성이 확인된 jar, adf 파일을 다시 COD 서버에 전달한다.

  • COD서버는 java byte코드를 바이너리 코드로 컴파일하여 단말기에서 다운로드 가능한 형태로 저장한다.

  • 단말기의 다운로드 요청 시 jar 파일이 다운로드 되며, 다운로드 된 어플리케이션은 WIPI 플랫폼 상에서 수행되게 된다.


Packing deployment 2

Packing & Deployment – (2)

  • ADF 파일

    • Application의 개발언어, 어플리케이션의 이름, 버전, 제작자의 이름, expire date 등의 기본적인 정보

    • Access Level, access할 디렉토리, 타겟 단말의 컬러레벨과 사운드 레벨 등의 보안 및 프로비저닝 정보를 담고 있는 파일

  • javaex1.adf

  • Type= Java

  • Name= Javaex1

  • Vendor= Aromasoft

  • Version= 1.0.0

  • Platform_Version= 1.0.0

  • Access_Level= Public

  • Jar_URL= http://127.0.0.1/apps/javaex1.jar

  • Expire_Count= 1000

  • Main_Class= Example1

  • Jar_Size=1234

  • Data_Size=10


Packing deployment 3

Packing & Deployment – (3)

  • 아로마소프트의 위피에뮬레이터는 위피 어플리케이션을 네트워크를 통해 다운로드 받을 수 있는 다운로드 에이전트를 제공

  • 클라이언트의 접속을 받은 다운로드 에이전트는 자료실의 목록을 자료실 웹 서버에서 가지고 와 자료실에 전달

  • 위피

  • 다운로드 자료실


  • Login