임베디드

임베디드250624 임베디드 - Cortex M 시리즈

_KDE_ 2025. 6. 24. 17:03

 

지금까지 한 코드도 결합력이 센 편이다

 

버튼은 처리부가 무엇을 하든 신경 안쓰고 입력만 관리

 

 

이 처리부는 출력부가 FND가 될 수도있고 LED가될 수도 있고 모니터가 될 수도 있고..

본인은 누가 될지 모름.

자기는 처리만 할 뿐

 

입력에서 처리부로 가능 창구가 필요

 

처리에서 출력으로 가는 창구 필요

 

Listener, Controller, Presenter는 임의로 정한 이름

 

Listener는 버튼값에 대해서 확인하고 Controller로 던짐

 

Controller는 시계값을 보내던지, StopWatch를 보내던지 등


Listerner의 역할 : id : btnMode 와 Data : ACT_RELEASED 를 구조체로 묶어서 Controller에 전달

 

 

Controller는 데이터를 받으면 알아서 처리

 

Presenter도 데이터를 받으면 알아서 처리

 

각자 자기할일만 하고 나머지가 하는 일은 모름

 

위 부분을 application에 해당

 

input을 받을 때 input의 구조(구조체)를 알아야 데이터를 받을 수 있음

(Listener <-> Controller, Controller<->Presenter)

 

위의 시퀀스 다이어그램을 보고 아래와 같이 Listener 코드 작성

하지만 각각에 대해서 디테일은 우리가 구현해야 함

 

구현은 사람마다 다름


포인터 복습

Button.h에 구조체를 위와 같이 선언

 

Button.c에 구조체 변수 위와 같이 선언

 

코드1

구조체를 매개변수로 받음

 

Listener에 위와 같이 Button을 설정해 줄 수 있음

 

※주의

코드2

위와 같이 포인터로 접근하지 않으면 "값에 의한 호출 (call by value)"이라 복사본이 전달 됨

-> 예를 들면 hBtnMode의 복사본이 전달되고 Button_Init이 실행돼서 원본에는 영향X