Edge Driver 제작 강좌 #2 기본 파일 구조 이해

0. 이전 게시글

본 게시글을 좀 더 쉽게 이해하기 위해 이전 게시글을 먼저 읽으시길 권장드립니다.

2024.07.28 - [[스마트홈] SmartThings/동그라미 개발자 문서] - #1 - 스마트싱스 작동 원리 이해하기

 

 

1. 샘플파일 준비하기

지난 게시글에 이어서,

엣지드라이버를 만들기 위해서는 이제 엣지드라이버의 기본 파일들을 이해해보겠습니다.

우선, SmartThings 엣지드라이버의 기본 구조를 학습하기 위해,

엣지드라이버 샘플 코드를 다운 받도록 하겠습니다.

 

본 게시글의 첨부파일을 다운로드해주세요.

hello-world.zip
0.00MB

 

아래 링크를 통해서도 다운로드 하실 수 있습니다.

(본 강좌에서는 hello-world 샘플코드를 사용합니다)

https://github.com/SmartThingsDevelopers/SampleDrivers

 

GitHub - SmartThingsDevelopers/SampleDrivers: We are taking events that would have happened on the SmartThings Cloud and moving

We are taking events that would have happened on the SmartThings Cloud and moving them to your SmartThings Hub. This repository contains sample SmartThings Edge Drivers to get you started - SmartTh...

github.com

 

2. 기본 파일 구조

다운받은 샘플 코드 압축파일을 편하신 위치에서 압축을 풀어주세요.

전체적인 구조 파악을 위해 사용하도록 하겠습니다.

 

edge driver는 위 이미지 같은 파일 구조가 가장 기초입니다.

 

폴더: profiles, src

파일: config.yml

 

이제 하나 하나씩 어떤 파일인지 알아보도록 하겠습니다.

 

* 다른 폴더가 있는 엣지드라이버를 많이 보셨을 수도 있습니다만..

위 2개 폴더와 1개 파일이 기본입니다.

기본으로 시작해서 하나씩 확장해 나가도록 하겠습니다 *

 

2-1. config.yml

처음으로 config.yml 파일을 열어보겠습니다.

이 config.yml 파일은 엣지드라이버가 어떤 엣지드라이버인지 정의해주고,

엣지드라이버에게 권한을 부여해주는 파일입니다.

 

1) name

name: 엣지드라이버 표시 이름입니다.

만약 엣지드라이버를 만들고 배포하였다면 사용자들이 실제로 보는 이름입니다.

name은 사용자가 이해하기 쉽도록 이름을 지어서 편하게 입력해주시면 됩니다.

다만 이름은 아래 형식에 맞춰서 작성해주셔야합니다.

 

name 규칙 : 지켜야합니다

- 글자수 제한: 1글자 ~ 50자까지 제한

- 입력가능한 문자: 영문자(대소문자 모두 가능), 숫자, 공백  *한글 입력 불가
- 입력가능 특수 문자: _  /  \  -  (  )  [  ]  {  }  .

 

2) packageKey

packageKey: 패키지 아이디 같은 것으로, 다른 엣지드라이버와 구분하는데 사용됩니다.

이 패키지 아이디가 다른 엣지드라이버와 같은 경우에는 같은 엣지드라이버로 인식하게 됩니다.

즉 엣지드라이버 별로 고유한 패키지 Key를 입력할 수 있도록 하는 것이 중요하며,

다른 개발자들이 쓰지 않을 고유한 Key를 만드는 것이 좋습니다.

 

예를 들어 제 엣지드라이버는 'YJ-엣지드라이버 이름-v1' 과 같은 이름을 사용하고 있습니다.

일반적으로 관례상..소문자만 사용하는 것 같습니다

 

packageKey 규칙 : 지켜야합니다.

- 글자수 제한: 1글자 ~ 36자까지 제한

- 입력가능한 문자: 영문자(대소문자 모두 가능), 숫자, 공백 *한글 입력 불가
- 입력가능 특수 문자: _  /  \  -  (  )  [  ]  {  }  .

3) permissions

마지막으로, permissions입니다.

영어 단어 그대로 권한을 지정해주는 부분입니다.

현재 주어진 권한은 discovery 권한입니다.

 

현재 공개된 코드로 확인 가능했던.. 사용가능한 권한으로는 아래와 같은 권한들이 있습니다.

  lan: {}
  discovery: {}
  matter: {}
  zigbee: {}
  zwave: {}
  aqara_provisioning: {}

 

권한에 대해서 정확히 어떤 권한을 주는지는 모르겠습니다.

 

제가 이해한 내용을 바탕으로 적으면 이렇습니다.

 

discovery: 주변 찾기를 통해 무언가를 실행할 때 필요합니다.

lan: ST허브에서 내부네트워크로 통신을 할 때 필요합니다.

matter, zigbee, zwave: 장치별 통신 규격입니다.

aqara_provisioning: 아카라 도어락을 위해 만들어진 특수한 권한 같습니다.

 

공식문서에도 자세히 설명되어있진 않습니다.

https://developer.smartthings.com/docs/devices/hub-connected/driver-components-and-structure#configuration-file

 

Driver Components and Structure | Developer Documentation | SmartThings

Driver Components

developer.smartthings.com

 

* 공식 문서는 자세히 적어두지 않은 경우가 많습니다. 

   공식 문서를 좀 더 자세히 설명 해주시면 좋겠습니다

   권한에 대한 부분도 어떤 권한을 주는지 제대로 명시가 되어있지 않았습니다.

   그 뿐만아니라...

    name 규칙 packageKey 규칙과 같은 기본적인 내용도 공식 문서에는 작성 되어 있지 않습니다 *

 

 

4) 이게 끝?

실제 엣지드라이버가 배포된 소스코드를 보신적이 있나요?

이때 다른 분들이 작성한 config.yaml 파일을 보면 더 많은 내용이 있습니다.

하지만, 여러분.. 그런 부분들은 나중에 확장해나가면 어렵지 않은 부분들입니다.

 

그래서 본 강좌에서는 진짜로 일단 엣지드라이버를 만들어서 올리는데 

최소한의 필요한 방법만을 다룹니다

 

매번 게시글에 적는거지만, 작게 시작해서 확장해 나가는게 목적입니다.

 

이제 본인만의 config.yml로 수정을 해보도록 하겠습니다.

본 수업에서는 name과 packagekey만 수정해보도록 하겠습니다.

 

5) 나의 첫 config 파일로 만들어보기

이제 모든 config파일을 이해했다면,

스스로 config 파일을 수정해보실 수 있을겁니다.

 

name 규칙packageKey 규칙에 유의해서

작성가능한 문자로만 수정해주세요.

 

본 강좌에서는 name과 packageKey만 수정하도록 하겠습니다 :)

 

name: 'Hello SmartThings'
packageKey: 'com.thelightway.helloworld'
permissions:
  discovery: {}

이렇게 수정했습니다 

 

 

이제 config 파일에 이어서, profiles 폴더에 대해 알아보겠습니다.

 

 

 

2-2. profiles폴더

 

1) 프로파일이 필요했던 이유

잠시 1편 내용을 복습해보겠습니다.

 

스마트싱스 엣지드라이버는 다양한 장치를 연결할 수 있다는 걸 이미 아실겁니다.

이런 다양한 장치들은 각자의 기능들을 가지고 있습니다.

 

앞의 1편에서 설명한대로 프로파일은 장치별로 필요한 기능들을 정의한 파일이 프로파일입니다.

밝기 조절만 가능한 필립스 휴 전구가 있다고 가정하고 예를 들어보겠습니다.

이 전구에는 위 이미지처럼 switch, switchLevel capability가 필요합니다.

 

그런데 똑같은 기능을 하는 전구를 알리익스프레스에서 구매했습니다.

 

그러면 어떻게 되나요?

그러면 알리 전구도 같은 capability가 필요할겁니다.

 

이렇게 똑같은 기능을 계속 가져올겁니다. 전구가 많아지면 똑같은 일을 계속 하겠죠.

 

그러면... 이제 개발자라고 가정을 해봅시다.

 

이 전구들을 추가할 때마다 매번 이 기능들을 가져오라고 명령을 주어야합니다.

만약에 많은 capabilities를 갖는 장치라면.. ? 그걸 하나 하나 가져오라고 명령해주어야할겁니다.

 

한번에 "전구 기능 가져와!" 하면 알아서 전구에 필요한 기능을 딱 가져와 주면 좋겠는데..

지금 이 시스템에서는 안됩니다.

 

그래서 프로파일이라는걸 만들게 됩니다.

 

전구라고 알기 쉽게 bulb라는 프로파일을 만들고,

이제 각 전구들이 연결될 때 bulb 프로파일 가져와 !! 하면 알아서 전구에 필요한 기능들을 모아서 잘 가져와줄겁니다.

 

 

2) 여러개 만들어지는 이유

그런데 프로파일은 profiles라고 복수형으로 표현하고, 실제로 개발된 파일에도 여러개 프로파일이 있는걸 확인할 수 있을겁니다.

왜 그런건지 함께 알아보도록 하겠습니다.

이번에는 색온도 조절이 가능한 전구를 추가로 연결한다고 가정해보겠습니다.

 

 

그러면 위 이미지처럼 프로필을 'color-temp-bulb'라는 이름으로 하나 더 만들어주면 됩니다.

 

하나의 엣지드라이버에 여러 장치 유형을 연결하다보니, 자연스럽게 여러개의 프로파일이 필요해진겁니다.

 

이 여러개의 프로파일을 만들고 관리하기 위해 가장 편한 방법 중 하나로 폴더가 있겠죠..!?

 

그래서 아마도 "우리 엣지드라이버는 profiles라는 폴더에 이런 프로파일들을 담기로 약속을 하자" 라고 했을겁니다.

 

이제 처음에 보았던 이 이미지형태가 잘 이해가 되실겁니다.

현재는 파일이 1개밖에 없어 1개의 프로파일만 있는 것이지만, 파일이 여러개라면 여러개의 프로파일이 있는겁니다.

 

 

3) name 

이제... profiles 폴더 안의 샘플 프로파일(hello-world.v1.yaml) 을 열어봅시다.

 

name은 프로파일의 이름을 의미합니다.

앞에서 전구는 bulb로 해야겠다고 했죠?

name은 내가 원하는 이름으로 잘 구분할 수 있도록 작명해주면 됩니다.

 

 

 

지금 샘플 엣지드라이버의 프로파일 이름은 hello-world.v1 입니다.

프로파일 이름도 하나의 엣지드라이버 내에서 고유한 이름으로 해주어야합니다.

 

만약 A장치를 hello-world라는 프로파일과 연결해주려고 하는데,

같은 이름이 있으면... 오류가 발생할겁니다.

 

4) components (컴포넌트)

 

 

그리고 이름 바로 아래줄에 components가 있습니다.

components는 이해 하기 쉽게 비유해서, 기능 그룹이라고 생각하시면 됩니다.

현재 hello-world.v1 프로파일은 main 컴포넌트 1개만을 가지고 있습니다.

 

5) capabilities 케파(? capa 라고 채팅할 때 많이 썼습니다)

main 컴포넌트 바로 아래로 capability들을 열거해 프로파일을 구성하고 있습니다.

현재 샘플 프로파일은, 스위치 capability 한 개를 가진 장치임을 정의해줍니다.

 

여기서 version은 capability 버전을 의미하는데, 현재 스마트싱스 엣지드라이버의 모든 capability는 버전을 쓰고 있지 않습니다.

즉 작성일 기준, 모든 capability의 version 값이 1이므로 1을 입력해주시면 됩니다.

 

여기서 ! 중요하게 알아두셔야할 주의점이 하나 있습니다.

지금 스마트싱스의 제약사항으로는 하나의 component에는 똑같은 종류의 capability를 가져올 수 없습니다.

예를 들어 main 컴포넌트에 switch 를 2개를 만들 수는 없습니다.

 

제 경우 이렇듯 동일한 장치에 같은 capability가 필요하거나

기능 단위로 장치의 capability를 분류할 때 사용하고 있습니다.

멀티 컴포넌트 사용 예시

 

 

6) categories 카테고리

마지막으로 capabilites가 어떤 카테고리의 장치인지 정의하게 됩니다.

현재 샘플파일은 Light로 전구로 인식되도록 프로필이 작성되어있습니다.

 

이 categories는 스마트싱스 앱 상에서 표시되는 앱과 관련이 있습니다.

즉 샘플파일의 경우 Light로 정의를 해두어서 앱에는 전구 아이콘이 표시됩니다.

 

만약, 같은 capabilities라도 다른 categories를 사용하면 앱 상에 다른 아이콘이 표시되게 할 수 있습니다.

* 아이콘을 바꾸는 방법은 많은 방법이 존재하지만,

   현재 ST 공식 엣지들은 categories로 장치를 구분하여 표시해주고 있습니다. *

 

 

이번 강좌에서는 프로파일에 대해 알아보기만 하도록하고, 실제로 수정은 하지 않겠습니다.

 

2-3. src폴더

앞에서 살펴본 profiles 폴더와 config.yml 파일은 실제 엣지드라이버를 만들기 위해,

필요한 준비물을 준비하는 느낌이었습니다.

 

이 엣지드라이버가 어떤 엣지드라이버인지 알려주는 파일 (config), 

실제 장치들이 구성될 기능들이 어떤게 있는지 미리 정의하는 파일 (profile)이 있었습니다.

 

이제 이 준비물을 가지고, 실제로 엣지드라이버가 작동하는 부분을 만들어야합니다.

 

이 작동하는 부분을 만드는 파일이 저장된 곳이 src폴더입니다.

 

**이제부터 어려워질 수 있습니다 이해가 안되시면 댓글로 마음껏 물어봐주세요 **

 

 

 

 

1) init.lua

엣지드라이버가 시작되면 처음 기본 폴더인 src 폴더의 init.lua 파일을 시작하게 됩니다.

즉 init파일은 엣지드라이버 작동 시작과 함께 실행됩니다.

우선 처음 실행된다!로 생각하시면 되겠습니다.

 

init파일은 나중에 다시 살펴보도록 하고, 먼저 다른 파일을 살펴보겠습니다.

 

2) 다른 파일들

지금 샘플코드에는 discovery폴더와 command_handlers 폴더가 있습니다.

이 파일들은 각각 역할별로 분리된 파일이라고 생각하시면 됩니다.

 

이 파일들은 있어도 되고, 없어도 되는 파일입니다.

꼭 파일로 역할을 분리해서 만들지 않고, 하나의 init파일에서 작업해도 잘 작동합니다.

 

그런데 왜? 파일을 나눠놓았을까요??

파일을 나눠놓으면 코드를 찾기가 쉽다라고 생각하시면 될 것 같아요.

각각 역할이 분리되어 있기에 특정 역할을 수정해야한다면 그 역할 파일에 들어가서 수정하면 됩니다.

 

사실 이게 정확한 설명은 아닐겁니다. 그렇지만, 이 강좌를 보시는 분들은 프로그래머가 아니고,

그렇게 되려고 하시지도 않으실겁니다.

즉 나눠놓으면 편리한 점도 있다. 생각하시고 시작하시고,

나중에 하다보면 자연스레 나누게 되실겁니다.

 

다른 파일들이 꼭 필요한 것은 아니지만,

엣지드라이버를 만들 때 꼭 필요한 역할들을 분리해놓은 것이므로,

해당 파일들을 살펴보면서.. 어떤 각 파일들이 어떤 역할들을 담당하고 있는지 확인해보겠습니다.

 

2-1) command_handlers

command_handlers라는 파일이 보일겁니다.

엣지드라이버에서 handlers는 각 기능들의 명령이 주어졌을 때 어떤 행동을 해야할지를 정해두는겁니다.

 

유사하게 비유를 들어 설명드리면,

자동차를 운전하실 때 핸들을 조작해서 방향을 조작하실겁니다.

 

핸들을 왼쪽으로 조작하면 자동차 바퀴가 왼쪽으로 돌아가고

핸들을 오른쪽으로 돌리면 자동차 바퀴가 오른쪽으로 돌아갑니다.

 

그런 의미의 handler라고 생각하시면 됩니다. 

명령이 주어졌을 때 스마트싱스 허브가 무엇을 해야할지를 정해주는겁니다.

 

만약 switch의 핸들러라고 한다면,

스위치 ON 명령이 들어오면 어떤 명령을 수행할지

반대로 OFF명령이 들어오면 어떤 명령을 수행할지를 정해주게 됩니다.

 

지금까지 만들어진 엣지드라이버의 스위치 핸들러는

ON명령 >> ON_Handler: 조명 ON

OFF명령 >> OFF_Handler: 조명 OFF 라고 명령을 정의해두었습니다.

 

반대로 어떤 이상한 사람이 스위치 핸들러를

ON명령 >> 조명 OFF

OFF명령 >> 조명 ON

와 같이 만들고 배포한다면, 조명이 명령과 반대로 조작이 될 것입니다.

 

이제 실제 파일을 열어보면..

대략 이런 파일로 구성이 되어있는 걸 보실 수 있습니다.

 

우선 이번 시간에는 이런 코드에 대해서는 설명하지 않겠습니다.

아 대충 이렇게 되어있구나 ~ 라고 보시면 됩니다.

 

지금까지 내용을 그림으로 정리해보겠습니다.

스마트싱스 앱에서 스위치 ON명령을 내리면

허브가 그 명령을 받고, 엣지드라이버에게 물어봅니다.

"스위치 켜라는 명령이 왔어!"

 

그러면, 엣지드라이버는 그 명령에 대해 무슨 행동을 할지 찾습니다.

'어! switch on 핸들러가 있네!'

하고 switch on 핸들러의 코드가 작동하게 됩니다.

 

만약 그림과 같이 switch on 핸들러에 장치에 스위치를 켜라는 신호를 보내라! 라는 명령이 있다면,

스위치 ON 신호를 장치에 보내게 됩니다.

 

구체적인 코드는 어렵지 않으니 천천히 알아가셔도 됩니다.

 

오늘은 원리만 이해를 하겠습니다.

 

2-2) discovery 

샘플파일은 주변 찾기가 수행되면, 엣지드라이버가 장치를 추가하는 가상 장치 엣지드라이버입니다.

그러므로, 주변 찾기가 시작될 때 수행될 명령이 필요합니다.

그 부분이 discovery 파일에 담겨 있습니다.

 

 

discovery 명령이 들어오면 .. 이 명령에 어떻게 작동할지 정해둔 handler 파일이라고 생각하면 됩니다. 

사실상... 이 파일도 handler인데,  따로 개발자가 분리해둔 것이겠죠.

이 부분도 지금은 넘어가겠습니다.

 

3) 다시 init파일로..

이제, 다시 처음으로 돌아와서 init 파일을 살펴보겠습니다.

한번 열어볼까요?

 

이런 내용들이 보일겁니다.

 

이미지는 원래 코드 내용 앞 부분에 제가 빨간 글자로 설명을 적어두었습니다.

 

 

3-1) 주석

첫번째 줄의 초록색으로 써져있는 코드들은 주석이라는 겁니다.

 

주석은 나중에 오랜 시간이 지나도 이 코드가 어떤 코드인지 이해하기 쉽도록 설명해주는 부분입니다.

 

대략 이렇게 수정을 해보겠습니다.

어떤가요? 

빨간색 네모칸을 친 부분이 ST가 제공하는 라이브러리를 가져오는 명령이구나

라고 설명을 해주고 있다고 보시면 됩니다.

 

이런 식으로 주석으로 시작과 끝을 명시해주면 더욱 확실하게 알아볼 수도 있겠죠.

 

이런듯 주석은 나중에 내가 오랜시간이 지나도 코드를 이해하기 쉽게,

그리고 다른 사람이 코드를 봐도 이해하기 쉽게,

코드의 설명을 적어두는겁니다.

 

 

3-2) 라이브러리

그러면 이제 ST가 제공하는 라이브러리 가져오기

이게 무슨 소리야? 라는 의문이 드실겁니다.

 

이걸 이해하려면 라이브러리가 뭔지를 이해하셔야합니다.

여기서 라이브러리는..

엣지드라이버를 쉽게 만들 수 있도록 스마트싱스에서 제공하는 도구입니다.

 

비유를 들어 설명을 드리자면..

아무런 도구 없이 십자 나사를 풀어보라고 하면 어떨까요?

 

꽉 조여져 있는 십자나사를 풀기 위해..

드라이버 비슷한 무언가를 만들어서.. 십자나사를 풀거나,

손으로 꽉 잡아서 십자나사를 풀거나... 그렇게 하겠죠.

 

그런데 만약 드릴이라는 도구가 주어지면요?

드릴 안에는 "시계 방향 회전, 시계 반대 방향 회전, 힘 설정 (토크설정)" 등의 기능들이 있을겁니다.

우리는 쉽게 시계 반대 방향 회전 기능을 선택해서 나사를 풀기만 하면 되는겁니다.

 

즉, 우리는 십자 나사를 풀어야할 일이 있으면 어떻게 하면 될까요?

그냥 드릴을 가져와서 드릴 안에 있는 "시계 반대 방향 회전" 기능을 사용하기만 하면 됩니다.

 

여기서 바로 "드릴"이 라이브러리입니다.

만약 이 도구가 없다면, 앞에 설명한 십자드라이버를 푸는 아주 쉬운일 조차 어려운 것처럼..

ST에서 제공하는 라이브러리가 없다면... 엣지드라이버 개발이 굉장히 어려운 일이 되었을 겁니다.

 

그래서 미리 ST에서 엣지드라이버를 만드는데 필요한 최소한의 도구를 준비해주는겁니다.

 

 

 

즉 여기서 2번째줄은 ST에서 capabilities에 대해 만든 도구들을 내가 여기서 쓸게.

3번째 줄은 ST에서 제공하는 driver에 대해 만든 도구들 내가 여기서 쓸게.

라고 말해주는겁니다.

 

우선 라이브러리에 대해서는 여기까지만 이해하시면 됩니다.

잘 만들어진 도구를 가져온다.

그 이상 알 필요는 없다고 생각합니다.

 

이 강의의 목적은 여러분을 프로그래머로 만드는게 아닙니다.

ST엣지드라이버를 만드는 법만 알면 되는겁니다.

 

마찬가지로 7~9번째 줄은 앞에 말했던 따로 존재했던 command_handlers 와 discovery 파일을 기억하시나요?

 

처음에 작동이 시작되면 init.lua가 제일 먼저 불러와진다고 말씀드렸던 것과 달리

이 파일들은 엣지드라이버 작동이 시작될 때 자동으로 가져와지지 않습니다.

 

그래서 init.lua 파일이 다른 파일들을 불러와서 사용하게 됩니다.

 

나머지..
"local discovey ="
이런 부분들은 나중에 엣지드라이버를 실제로 만드는 과정에서 자세히 알려드리도록 하겠습니다.

 

오늘은 대략적으로 각각의 파일들이 어떻게 가져와져서 작동을 하는구나 정도만 이해하시면 되겠습니다.

 

3. 정리하기

오늘 작성한 내용들을 정리해보겠습니다.

 

1) 기본 파일 구조

엣지드라이버는 기본적으로

- config.yml

- profiles 폴더

  - 1개 이상의 프로파일

- src폴더

  - src 폴더 내의 init.lua 파일

 

로 구성되어있습니다.

 

이게 기본 파일 구조인 이유는 이 중 1개라도 빠진다면, 그것은 엣지드라이버로 작동할 수 없게 됩니다.

즉 최소한의 파일구조이며, 이 구조에서 조금씩 다른 파일들을 추가해 나갈 수 있는 것입니다.

 

2) config.yml 파일

이 엣지드라이버가 도대체 어떤 엣지드라이버인지 알려주지 않으면 알 수가 없습니다.

이 엣지드라이버가 어떤 것인지 알려주고, 다른 엣지드라이버와 구분될 수 있도록 구분을 해준 파일입니다.

 

3) profiles 폴더

엣지드라이버는 기본적으로 여러 장치를 연결할 수 있습니다.

 

이런 여러 장치들이 공통적으로 필요한 기능들을 묶어서 "전구", "스위치", "커튼" 과 같이 이해하기 쉽게 이름을 짓고 저장해두었습니다.

 

이렇게 기능들을 하나로 묶어둔 것을 우리는 프로파일이라고 했습니다.

 

그리고 나중에 엣지드라이버에서 이 장치는 "커튼" 프로파일을 쓸거야 라고 하면,

커튼 프로파일에 해당하는 기능들을 가져오게 되는겁니다.

 

4) src폴더

config.yml 파일과 profiles 폴더는 엣지드라이버를 만들기 위해 존재하는 구성 파일이라면,

src폴더는 실제 작동하기 위한 코드가 존재하는 곳입니다.

 

init.lua 라는 파일이 처음에 실행되기 때문에 꼭 이 파일은 존재해야합니다.

 

또한 command_handlers와 같이 파일을 분리해 코드를 작성할 수도 있고,

하나의 init.lua 파일에 모든 코드를 작성할 수도 있습니다.

 

5) 라이브러리 개념

엣지드라이버를 만들 때 도구가 없다면 굉장히 만들기가 어려웠을겁니다.

그렇기에 ST는 엣지드라이버 도구를 제공해주었습니다.

 

저희는 이 도구를 ST제공 라이브러리 라고 말합니다.

이 라이브러리를 활용해서 엣지드라이버를 쉽게 만들면 됩니다.

 

4. 다음 시간에는

이제 엣지드라이버 기본 파일 구조를 이해하고

config파일로 어떤 엣지드라이버인지 정의하는 법까지 알게 되었습니다.

 

다음 시간에는 프로파일과 이미 ST가 만들어준 production capabilities에 대해 알아보고,

이 내용을 토대로 제가 만든 예제 샘플 코드를 수정하여 직접 커스텀 가상 장치를 만들어보겠습니다.