지난시간에 이어 display - driver를 잇는 adapter 부분을 구현해 보도록 하겠습니다. 궁극적으로는 아래와 같은 구조가 되겠네요. display - adapter - driver 다 구현하면 중간에 adapter가 있어 display도 다른 driver처럼 사용할 수 있게 됩니다. 먼저 adapter의 header(interface) 부터 살펴 보도록 하겠습니다. setup_display_adapter을 선언하는 것이 전부입니다. setup_display_adapter를 호출하면 driver_t의 포인터를 전달해 주도록 되어있습니다. 아참 아래와 같은 코드가 많이 나오는데요, 혹시 모르시는 분들이 계실까봐 설명드리자면 여러 파일에서 하나의 header파일을 include할 때 중복선언으로 ..
지난 시간에 이어 계속해서 Adapter 패턴에 대해 알아보겠습니다. 지난 시간에는 Adapter가 필요한 콘크리트 코드에 대해 살펴봤고 이번 시간에는 실제적으로 콘크리트 코드가 interface 화 될 실제 driver interface를 살펴 보도록 하겠습니다. 궁극적으로 Adapter 패턴은 기존의 콘크리트 코드가 새로운 interface에 맞지 않아 중간에 Adapter를 끼워넣어 맞추는 역할을 하게 됩니다. 이번 시간에는 그중에 새로운 interface에 대해 살펴보겠습니다. driver_id_t 를 통해 앞으로 생성될 driver들의 고유 번호를 부여합니다. 그리고 기본적인 Open, Close, Read, Write들을 구현 하도록 되어 있습니다. 필요시 더 많은 기능을 넣을 수 있습니다. ..
[네이버 지식백과]adapter 패턴 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 한빛아카데미(주))남이 작성한 코드를 내 코드에 적용해야 할 때가 아주 많습니다. 그러나 대부분 크기가 다른 볼트와 너트처럼 딱 맞아 떨어지지 않습니다. 이럴 땐 어떻게 해야 할까요? 중간에 양 쪽에 잘 맞는 나사를 하나 덧 대는 것으로 해결 할 수 있습니다. Adapter 패턴은 흔히 레거시 코드(Legacy Code)라고 불리는 예전에 작성된 코드들을 현재의 코드와 맞게 고치는 방법입니다. 다른 사람이 작성한 코드를 자신의 코드에 맞게 고쳐쓰는 방법으로도 좋습니다. 우리는 중간에 Adapter라는 Wrapper 함수를 만들어 Adapter패턴을 구현할 것입니다. 이번 예제에서는 display라는 콘크리트 ..
[네이버 지식백과] factory method 패턴 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 한빛아카데미(주)) 예제1) http://dextto.tistory.com/140예제2) http://kingoh.tistory.com/entry/Factory-Method-%ED%8C%A8%ED%84%B4 우선 위의 예제를 통해 Java에선 어떻게 Factory method를 구현했는지 보고 오시면 더 좋을 거 같습니다. C에선 class라는 개념이 없기 때문에 어떻게 보면 이전 글들에서 계속해서 Factory method를 써왔습니다. 이번엔 다시 한번 재탕으로 Factory method를 살펴 보도록 하겠습니다. 이번 예제는 display를 구현해 보도록 하겠습니다. firmware의 대부..
지난 번에 이어 이번에는 app 자체를 만들어 보도록 하겠습니다. 이 app은 app manager에서 control 되며 각종 메시지 및 키 이벤트를 받습니다. 우선 이해를 위해 지난 시간에 main.c의 코드를 다시 보도록 하겠습니다. 우리가 이번에 만들 app은 27번째 줄 setup_app_scene_1()에서 구현 됩니다. 실제 app의 포인터를 app manager에게 전달하는 부분이지요. 여러번 반복 되었지만, setup으로 시작하는 함수는 객체 인스턴스를 반환한다고 봐도 되겠군요. new로 시작해도 되구요, init으로 시작해도 상관 없습니다면 일관성만 갖춘다면 될거 같습니다. 그럼 app scene 1의 헤더 파일을 보도록 하겠습니다. main.c에서 호출하는 setup_app_scene..
시간이 지나니 이전글에서 많은 부족함이 느껴 다시 한번 글을 쓰기로 했습니다. this는 객체지향 언어에서 class 자신을 나타냅니다. 자기 자신이기 때문에 별도의 이름을 갖는 다는 것도 좀 이상하기 때문에 this라는 키워드는 정말 잘 정한 것 같습니다. 우리는 C에서 this라는 것을 활용해서 사용해보도록 하겠습니다. 다음과 같은 main.c 코드가 있습니다. uart 포인터를 얻어와 uart를 open하고, read, write, close하는 일을 절차적으로 진행하고 있습니다. 사용자의 입장에서는 사용하는 기능을 구현하는 객체의 이름을 알고 있어야 합니다. 따라서 여기서는 uart라고 명시했습니다. uart의 header 파일입니다. driver_t라는 interface를 정의하고 본체 코드에서..
이번 시간에는 main.c에서 실제 app을 어떻게 사용하는지 알아보도록 하겠습니다. main.c에서 app을 만들어 사용하기 전에 전에 만들었던 message process [Message 기반]와 key process [Builder pattern]를 사용해 setup 해줍니다. 메시지가 발생했을 때와 key가 클릭 되었을 때 message에 queue 형태로 쌓일 것입니다. message process에서는 쌓인 메시지를 무한루프를 돌면서 current app에 전달해주게 됩니다.25번 줄에 app manager 를 setup하여 app_manager를 생성합니다. 그리고 26번줄에 create_app에 대망의 첫번째 app을 setup_app_scene_1()을 해서 넣어줍니다.26번줄에 생뚱맞게..
"C에서 Android의 Activity 구현하기""app은 이제껏 우리가 만든 패턴들의 집합체 입니다."그렇습니다. 여태 우리는 완성된 application의 framework를 만들기 위해 계속해서 패턴들을 학습해 오고 있었습니다. 이런 패턴들의 총아인 app을 구현해 보도록 하겠습니다.Android Java API, C# API 등 자원이 풍부한 Application 플랫폼들은 한결 같이 화면 단위 컨트롤들을 가지고 있습니다. 예를 들어 Android 에선 Activity가 생성이 되면, 레이아웃을 통해 화면에 디스플레이도 할 수 있고 각종 메시지(버튼 및 터치 포함)도 받을 수 있도록 되어 있습니다. 하나의 application에서 Activity가 없다는 것은 상상 할 수 없을 것입니다. And..