nl:: Weave:: System:: Layer
#include <src/system/SystemLayer.h>
This provides access to timers according to the configured event handling model.
요약
WEAVE_SYSTEM_CONFIG_USE_SOCKETS
의 경우 이벤트 준비 알림은 플랫폼 적응의 기존 폴링/선택 구현을 통해 처리됩니다.
WEAVE_SYSTEM_CONFIG_USE_LWIP
의 경우 이벤트 준비 알림은 이벤트 / 메시지 시스템의 플랫폼 및 시스템별 후크와 이벤트/메시지를 통한 핸들입니다.
생성자 및 소멸자 |
|
---|---|
Layer(void)
|
공개 유형 |
|
---|---|
EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)
|
typedefError(*
|
TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
|
typedefvoid(*
|
공개 함수 |
|
---|---|
AddEventHandlerDelegate(LwIPEventHandlerDelegate & aDelegate)
|
Error
이렇게 하면 이벤트 핸들러 위임을 시스템 레이어에 추가하여 LwIP 이벤트를 처리하는 기능을 확장합니다.
|
CancelTimer(TimerCompleteFunct aOnComplete, void *aAppState)
|
void
이 메서드는 이전에
StartTimer() 를 통해 시작된 원샷 타이머를 취소합니다. |
DispatchEvent(Event aEvent)
|
Error
이 메서드는 이 인스턴스에서 처리할 지정된 이벤트를 전달합니다.
|
DispatchEvents(void)
|
Error
이는 이벤트 루프에 영향을 미치고, 이 인스턴스를 처리하는 큐에서 대기하고, 큐에서 이벤트를 가져온 다음, 처리를 위해 이벤트를 전달하는 플랫폼별 후크 주변의 구문 래퍼입니다.
|
GetPlatformData(void) const
|
void *
이렇게 하면 인스턴스에 할당된 모든 클라이언트별 플랫폼 데이터가 반환됩니다(이전에 설정된 경우).
|
HandleEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
이는 Weave System Layer 이벤트의 실제 전달 및 처리를 구현합니다.
|
HandlePlatformTimer(void)
|
Error
플랫폼 타이머 만료 이벤트를 처리합니다.
|
HandleSelectResult(int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet)
|
void
특정 호출에서 I/O를 처리합니다.
|
Init(void *aContext)
|
Error
|
NewTimer(Timer *& aTimerPtr)
|
Error
|
PostEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
제공된 인수를 사용하여 지정된 유형의 이벤트 / 메시지를 이 인스턴스의 플랫폼별 이벤트 큐에 게시합니다.
|
PrepareSelect(int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime)
|
void
select() 가 사용할 파일 설명자 집합을 준비합니다. |
ScheduleWork(TimerCompleteFunct aComplete, void *aAppState)
|
Error
서명이
TimerCompleteFunct 인 함수가 Weave 스레드에서 최대한 빨리 실행되도록 예약합니다. |
SetPlatformData(void *aPlatformData)
|
void
이렇게 하면 지정된 클라이언트별 플랫폼 데이터가 나중에 클라이언트 플랫폼에서 가져올 수 있는 인스턴스로 설정됩니다.
|
Shutdown(void)
|
Error
|
StartTimer(uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState)
|
Error
이 메서드는 원샷 타이머를 시작합니다.
|
State(void) const
|
LayerState
이렇게 하면 레이어 객체의 현재 상태가 반환됩니다.
|
WakeSelect(void)
|
void
단일 바이트를 절전 모드 해제 파이프에 작성하여 select()를 사용하여 파일 설명자를 모니터링하는 I/O 스레드의 절전 모드를 해제합니다.
|
공개 정적 함수 |
|
---|---|
GetClock_Monotonic(void)
|
uint64_t
단조 시스템 시간을 마이크로초 단위로 반환합니다.
|
GetClock_MonotonicHiRes(void)
|
uint64_t
고해상도 단조 시스템 시간을 마이크로초 단위로 반환합니다.
|
GetClock_MonotonicMS(void)
|
uint64_t
단조 시스템 시간을 밀리초 단위로 반환합니다.
|
GetClock_RealTime(uint64_t & curTime)
|
Error
현재 실제 (상용) 시간을 마이크로초 Unix 시간 형식으로 반환합니다.
|
GetClock_RealTimeMS(uint64_t & curTimeMS)
|
Error
현재 실제 (상용) 시간을 밀리초 Unix 시간 형식으로 반환합니다.
|
SetClock_RealTime(uint64_t newCurTime)
|
Error
플랫폼의 현재 실제 (상용) 시간 개념을 설정합니다.
|
공개 유형
EventHandler
Error(* EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)
TimerCompleteFunct
void(* TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
공개 함수
AddEventHandlerDelegate
Error AddEventHandlerDelegate( LwIPEventHandlerDelegate & aDelegate )
이렇게 하면 이벤트 핸들러 위임을 시스템 레이어에 추가하여 LwIP 이벤트를 처리하는 기능을 확장합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
||||
반환 값 |
|
CancelTimer
void CancelTimer( TimerCompleteFunct aOnComplete, void *aAppState )
이 메서드는 이전에 StartTimer()
를 통해 시작된 원샷 타이머를 취소합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
DispatchEvent
Error DispatchEvent( Event aEvent )
이 메서드는 이 인스턴스에서 처리할 지정된 이벤트를 전달합니다.
이벤트에서 유형 및 인수의 언마샬링은 플랫폼별 후크에 의해 처리되며, 이후 실제 전달의 경우 Layer::HandleEvent를 다시 호출해야 합니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
||
반환 |
성공 시 WEAVE_SYSTEM_NO_ERROR를 반환하고 그렇지 않으면 초기화 실패 이유를 나타내는 특정 오류입니다.
|
DispatchEvents
Error DispatchEvents( void )
이는 이벤트 루프에 영향을 미치고, 이 인스턴스를 처리하는 큐에서 대기하고, 큐에서 이벤트를 가져온 다음, 처리를 위해 이벤트를 전달하는 플랫폼별 후크 주변의 구문 래퍼입니다.
세부정보 | |
---|---|
반환 |
성공 시 WEAVE_SYSTEM_NO_ERROR를 실행하고 그렇지 않은 경우 초기화 실패 이유를 나타내는 특정 오류입니다.
|
GetPlatformData
void * GetPlatformData( void ) const
이렇게 하면 인스턴스에 할당된 모든 클라이언트별 플랫폼 데이터가 반환됩니다(이전에 설정된 경우).
세부정보 | |
---|---|
반환 |
클라이언트별 플랫폼 데이터(이전에 설정된 경우) 또는 NULL
|
HandleEvent
Error HandleEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
이는 Weave System Layer 이벤트의 실제 전달 및 처리를 구현합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
HandlePlatformTimer
Error HandlePlatformTimer( void )
플랫폼 타이머 만료 이벤트를 처리합니다.
nl::Weave::System::타이머::Handle축소타이머를 호출하여 만료된 타이머를 처리합니다. 이 API는 Weave System Layer 객체를 소유하는 스레드에서만 호출된다고 가정합니다.
세부정보 | |
---|---|
반환 |
성공 시 WEAVE_SYSTEM_NO_ERROR를 반환하고 그렇지 않으면 오류 코드입니다.
|
HandleSelectResult
void HandleSelectResult( int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet )
특정 호출에서 I/O를 처리합니다.
이 메서드는 각 활성 엔드포인트에서 대기 중인 I/O 이벤트를 등록한 다음 해당 엔드포인트에 대한 각 I/O 처리 함수를 호출합니다.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
Init
Error Init( void *aContext )
레이어
Layer( void )
NewTimer
Error NewTimer( Timer *& aTimerPtr )
PostEvent
Error PostEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
제공된 인수를 사용하여 지정된 유형의 이벤트 / 메시지를 이 인스턴스의 플랫폼별 이벤트 큐에 게시합니다.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||
반환 값 |
|
PrepareSelect
void PrepareSelect( int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime )
select()
가 사용할 파일 설명자 집합을 준비합니다.
세부정보 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
ScheduleWork
Error ScheduleWork( TimerCompleteFunct aComplete, void *aAppState )
서명이 TimerCompleteFunct
인 함수가 Weave 스레드에서 최대한 빨리 실행되도록 예약합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
SetPlatformData
void SetPlatformData( void *aPlatformData )
이렇게 하면 지정된 클라이언트별 플랫폼 데이터가 나중에 클라이언트 플랫폼에서 가져올 수 있는 인스턴스로 설정됩니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
종료
Error Shutdown( void )
StartTimer
Error StartTimer( uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState )
이 메서드는 원샷 타이머를 시작합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 |
WEAVE_SYSTEM_NO_ERROR 성공 시
|
||||||
반환 |
WEAVE_SYSTEM_ERROR_NO_MEMORY 타이머를 할당할 수 없는 경우
|
||||||
반환 |
타이머 시작 실패를 나타내는 기타 값입니다.
|
상태
LayerState State( void ) const
이렇게 하면 레이어 객체의 현재 상태가 반환됩니다.
WakeSelect
void WakeSelect( void )
단일 바이트를 절전 모드 해제 파이프에 작성하여 select()를 사용하여 파일 설명자를 모니터링하는 I/O 스레드의 절전 모드를 해제합니다.
참고: WakeSelect()
가 HandleSelectResult()
내에서 호출되고 있는 경우 I/O 스레드가 이미 절전 모드에서 해제되어 있으므로 절전 모드 해제 파이프에 쓰는 작업을 건너뛸 수 있습니다.
또한 이 쓰기가 실패해도 문제가 되지는 않습니다. 합리적으로 가능성이 있는 유일한 실패는 파이프가 가득 차는 것이고 이 경우 select 호출 스레드가 어차피 절전 모드에서 해제된다는 것이기 때문입니다.
공개 정적 함수
GetClock_Monotonic
uint64_t GetClock_Monotonic( void )
단조 시스템 시간을 마이크로초 단위로 반환합니다.
이 함수는 플랫폼에서 정의한 임의의 에포크 이후 경과된 시간(단위: 마이크로초)을 반환합니다. 반환된 값은 시스템 재부팅 사이에 계속해서 증가 (즉, 래핑되지 않음)됩니다. 또한 기본 시간 소스는 절전 모드 해제 시 다시 시작할 필요가 없는 모든 시스템 절전 모드 중에 계속 틱하도록 보장됩니다.
일부 플랫폼에서는 시스템 부팅 이후 시간을 측정하는 값을 반환하도록 선택할 수도 있지만, 애플리케이션은 이 값에 의존해서는 안 됩니다. 또한 GetClock_Monotonic()의 에포크는 다른 GetClock... 함수의 에포크와 동일할 필요가 없습니다. 따라서 동일한 함수에서 반환된 값에 대해서만 상대적 시간을 계산할 수 있습니다.
이 함수는 스레딩을 사용하는 모든 플랫폼에서 스레드로부터 안전합니다.
세부정보 | |
---|---|
반환 |
플랫폼에서 정의한 임의의 에포크 이후 경과된 시간(단위: 마이크로초)입니다.
|
GetClock_MonotonicHiRes
uint64_t GetClock_MonotonicHiRes( void )
고해상도 단조 시스템 시간을 마이크로초 단위로 반환합니다.
이 함수는 플랫폼에서 정의한 임의의 에포크 이후 경과된 시간(단위: 마이크로초)을 반환합니다. 반환된 값은 시스템 재부팅 사이에 계속해서 증가 (즉, 래핑되지 않음)됩니다. 하지만 시스템의 완전 절전 상태에서 기본 타이머가 계속 틱할 필요는 없습니다.
일부 플랫폼은 GetClock_MonotonicHiRes()를 GetClock_Monotonic()보다 정밀도가 높고 점진적인 클록 조정 (돌출)이 적용되지 않는 고해상도 타이머를 사용하여 구현할 수 있습니다. 이러한 타이머가 없는 시스템은 단순히 GetClock_Monotonic()과 동일한 값을 반환할 수 있습니다.
GetClock_MonotonicHiRes()에서 반환된 시간의 에포크는 GetClock_Monotonic()을 비롯한 다른 GetClock... 함수의 에포크와 동일하지 않아도 됩니다.
이 함수는 스레딩을 사용하는 모든 플랫폼에서 스레드로부터 안전합니다.
세부정보 | |
---|---|
반환 |
플랫폼에서 정의한 임의의 에포크 이후 경과된 시간(단위: 마이크로초)입니다.
|
GetClock_MonotonicMS
uint64_t GetClock_MonotonicMS( void )
단조 시스템 시간을 밀리초 단위로 반환합니다.
이 함수는 플랫폼에서 정의한 임의의 에포크 이후 경과된 시간을 밀리초 단위로 반환합니다. 반환된 값은 시스템 재부팅 사이에 계속해서 증가 (즉, 래핑되지 않음)됩니다. 또한 기본 시간 소스는 절전 모드 해제 시 다시 시작할 필요가 없는 모든 시스템 절전 모드 중에 계속 틱하도록 보장됩니다.
일부 플랫폼에서는 시스템 부팅 이후 시간을 측정하는 값을 반환하도록 선택할 수도 있지만, 애플리케이션은 이 값에 의존해서는 안 됩니다. 또한 GetClock_Monotonic()의 에포크는 다른 GetClock... 함수의 에포크와 동일할 필요가 없습니다. 따라서 동일한 함수에서 반환된 값에 대해서만 상대적 시간을 계산할 수 있습니다.
이 함수는 스레딩을 사용하는 모든 플랫폼에서 스레드로부터 안전합니다.
세부정보 | |
---|---|
반환 |
임의의 플랫폼에서 정의한 에포크 이후 경과된 시간(밀리초)입니다.
|
GetClock_RealTime
Error GetClock_RealTime( uint64_t & curTime )
현재 실제 (상용) 시간을 마이크로초 Unix 시간 형식으로 반환합니다.
이 메서드는 마이크로초 단위로 조정된 Unix 시간 값으로 표현되는 로컬 플랫폼의 현재 실시간 개념을 반환합니다. 기본 시계는 최소 1초 이상의 속도 (값 1,000,000)로 틱이 보장되지만 일부 플랫폼에서는 더 빠르게 틱이 발생할 수 있습니다.
기본 플랫폼에서 실시간으로 추적할 수 있지만 시스템이 현재 동기화되지 않은 경우 GetClock_RealTime()에서 WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED 오류를 반환합니다.
실시간으로 추적할 수 없는 플랫폼에서는 GetClock_RealTime() 메서드가 없으면 이 메서드를 참조하는 애플리케이션에 링크 오류가 발생할 수 있습니다. 또는 이러한 플랫폼에서 항상 WEAVE_SYSTEM_ERROR_NOT_SUPPORTED 오류를 반환하는 GetClock_RealTime()의 구현을 제공할 수도 있습니다.
이 함수는 스레딩을 사용하는 모든 플랫폼에서 스레드로부터 안전합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
GetClock_RealTimeMS
Error GetClock_RealTimeMS( uint64_t & curTimeMS )
현재 실제 (상용) 시간을 밀리초 Unix 시간 형식으로 반환합니다.
이 메서드는 밀리초 단위로 조정된 Unix 시간 값으로 표현되는 로컬 플랫폼의 현재 실시간 개념을 반환합니다. 기본 시계는 최소 1초 이상의 속도 (값 1,000,000)로 틱이 보장되지만 일부 플랫폼에서는 더 빠르게 틱이 발생할 수 있습니다.
기본 플랫폼에서 실시간으로 추적할 수 있지만 시스템이 현재 동기화되지 않은 경우 GetClock_RealTimeMS()는 WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED 오류를 반환합니다.
실시간으로 추적할 수 없는 플랫폼에서는 GetClock_RealTimeMS() 메서드가 없으면 이 메서드를 참조하는 애플리케이션에 링크 오류가 발생할 수 있습니다. 또는 이러한 플랫폼에서 항상 WEAVE_SYSTEM_ERROR_NOT_SUPPORTED 오류를 반환하는 GetClock_RealTimeMS()의 구현을 제공할 수도 있습니다.
이 함수는 스레딩을 사용하는 모든 플랫폼에서 스레드로부터 안전합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
SetClock_RealTime
Error SetClock_RealTime( uint64_t newCurTime )
플랫폼의 현재 실제 (상용) 시간 개념을 설정합니다.
애플리케이션은 이 함수를 호출하여 로컬 플랫폼의 현재 실시간 개념을 설정할 수 있습니다. 새로운 현재 시간은 마이크로초 단위의 Unix 시간 값으로 표현됩니다.
일단 설정되면 기본 플랫폼 시계가 최소 1초 이상의 단위로 실시간 추적을 보장합니다.
일부 플랫폼에서는 실시간으로 설정할 수 있는 애플리케이션 또는 프로세스를 제한할 수 있습니다. 호출자가 실시간 변경이 허용되지 않는 경우 SetClock_RealTime() 함수는 WEAVE_SYSTEM_ERROR_ACCESS_DENIED 오류를 반환합니다.
실시간 추적이 불가능하거나 실시간 설정 기능을 제공하지 않는 플랫폼에서는 SetClock_RealTime() 함수가 없으면 이 함수를 참조하는 애플리케이션에 링크 오류가 발생할 수 있습니다. 또는 이러한 플랫폼에서 항상 WEAVE_SYSTEM_ERROR_NOT_SUPPORTED 오류를 반환하는 SetClock_RealTime()의 구현을 제공할 수도 있습니다.
이 함수는 스레딩을 사용하는 모든 플랫폼에서 스레드로부터 안전합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|