Smart Home/MATTER

MATTER-ESP32 / temperature-measurement-app 분석(2/n)

감자최고 2022. 8. 28. 19:07

소스구조

├── CMakeLists.txt
├── README.md
 
├── main  
│   ├── CHIPDeviceManager.cpp
CHIPDeviceManager::CommonDeviceEventHandler(){}
CHIPDeviceManager::Init(CHIPDeviceManagerCallbacks * cb)
{CHIP 스택초기화
Advertising Enable
PlatformMgr.EventHandler 등록(cb)
PlatformMgr.StartEventLoopTask()...
}
void MatterPostAttributeChangeCallback(...){}
│   ├── CMakeLists.txt  
│   ├── DeviceCallbacks.cpp
void DeviceCallbacks::DeviceEventCallback(){}
 
void DeviceCallbacks::PostAttributeChangeCallback(){
// Controller 에서 보낸 이벤트를 처리하는 콜백을 여기에서 호출
(EndpointId, ClusterId,AttributeId, mask, type, size, *value)
}
│   ├── Kconfig.projbuild  
│   ├── main.cpp ESP32 runtime 의 main 함수: app_main()
CHIPDeviceManager 를 instantiation 하고 delay loop

static DeviceCallbacks EchoCallbacks;

extern
"C" void app_main()
{
    CHIPDeviceManager & deviceMgr = CHIPDeviceManager::GetInstance();

    deviceMgr.Init(&EchoCallbacks);
    chip::Server::GetInstance().Init();

    // Initialize device attestation config
    SetDeviceAttestationCredentialsProvider(Examples::GetExampleDACProvider());

    // Run the UI Loop
}
│   ├── temperature-measurement.zap MATTER data model 정의 파일, https://gamjathebest.tistory.com/24 
│  └── include
│       ├── CHIPDeviceManager.h
 
│       └── DeviceCallbacks.h
class DeviceCallbacks : public chip::DeviceManager::CHIPDeviceManagerCallbacks
{
public:
virtual void DeviceEventCallback(...);
virtual void PostAttributeChangeCallback(...);

private:
void OnInternetConnectivityChange(...);
void OnSessionEstablished(...);
void OnOnOffPostAttributeChangeCallback(...);
void OnIdentifyPostAttributeChangeCallback(...);
};
├── partitions.csv
├── sdkconfig
├── sdkconfig.defaults
├── sdkconfig.old
├── sdkconfig.optimize.defaults
 
└── third_party
    └── connectedhomeip -> ../../../../
 

 

PlantUML 로 Class diagram을 그려보자면 아래 처럼 됨. 링크