nl:: Weave:: System:: Layer
#include <src/system/SystemLayer.h>
This provides access to timers according to the configured event handling model.
Tóm tắt
Đối với WEAVE_SYSTEM_CONFIG_USE_SOCKETS
, thông báo về trạng thái sẵn sàng của sự kiện được xử lý thông qua cách triển khai cuộc thăm dò ý kiến/chọn kiểu truyền thống trên việc điều chỉnh nền tảng.
Đối với WEAVE_SYSTEM_CONFIG_USE_LWIP
, thông báo trạng thái sẵn sàng của sự kiện được xử lý thông qua các sự kiện / thông báo cũng như các hook dành riêng cho nền tảng và hệ thống đối với hệ thống sự kiện/thông báo.
Hàm khởi tạo và hàm phá |
|
---|---|
Layer(void)
|
Loại công khai |
|
---|---|
EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)
|
typedefError(*
|
TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
|
typedefvoid(*
|
Hàm công khai |
|
---|---|
AddEventHandlerDelegate(LwIPEventHandlerDelegate & aDelegate)
|
Error
Thao tác này sẽ thêm một lớp uỷ quyền của trình xử lý sự kiện vào lớp hệ thống để mở rộng khả năng xử lý các sự kiện LwIP.
|
CancelTimer(TimerCompleteFunct aOnComplete, void *aAppState)
|
void
Phương thức này sẽ huỷ đồng hồ hẹn giờ một lần, bắt đầu từ trước đến hết
StartTimer() . |
DispatchEvent(Event aEvent)
|
Error
Thao tác này sẽ gửi sự kiện được chỉ định để trường hợp này xử lý.
|
DispatchEvents(void)
|
Error
Đây là một trình bao bọc cú pháp xung quanh một hook dành riêng cho nền tảng có ảnh hưởng đến vòng lặp sự kiện, chờ đợi trong một hàng đợi dịch vụ thực thể này, kéo các sự kiện ra khỏi hàng đợi đó rồi gửi chúng để xử lý.
|
GetPlatformData(void) const
|
void *
Thao tác này sẽ trả về mọi dữ liệu nền tảng dành riêng cho ứng dụng được chỉ định cho phiên bản này, nếu phiên bản này đã được đặt trước đó.
|
HandleEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
Thao tác này sẽ triển khai việc điều phối và xử lý thực tế sự kiện Layer (Lớp) của hệ thống Weave.
|
HandlePlatformTimer(void)
|
Error
Xử lý sự kiện hết hạn của bộ tính giờ cho nền tảng.
|
HandleSelectResult(int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet)
|
void
Xử lý I/O trong một cuộc gọi được chọn.
|
Init(void *aContext)
|
Error
|
NewTimer(Timer *& aTimerPtr)
|
Error
|
PostEvent(Object & aTarget, EventType aEventType, uintptr_t aArgument)
|
Error
Thao tác này sẽ đăng sự kiện / thông báo thuộc loại được chỉ định với đối số đã cung cấp vào hàng đợi sự kiện dành riêng cho nền tảng của phiên bản này.
|
PrepareSelect(int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime)
|
void
Chuẩn bị bộ chỉ số mô tả tệp để
select() xử lý. |
ScheduleWork(TimerCompleteFunct aComplete, void *aAppState)
|
Error
Lên lịch để chạy một hàm có chữ ký giống hệt với
TimerCompleteFunct trên luồng Weave ngay khi có thể. |
SetPlatformData(void *aPlatformData)
|
void
Thao tác này sẽ thiết lập dữ liệu nền tảng của riêng ứng dụng được chỉ định thành phiên bản để nền tảng ứng dụng truy xuất sau này.
|
Shutdown(void)
|
Error
|
StartTimer(uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState)
|
Error
Phương thức này sẽ bắt đầu hẹn giờ một lần.
|
State(void) const
|
LayerState
Thao tác này sẽ trả về trạng thái hiện tại của đối tượng lớp.
|
WakeSelect(void)
|
void
Đánh thức chuỗi I/O giám sát chỉ số mô tả tệp bằng cách sử dụng hàm select() bằng cách ghi một byte đơn vào đường dẫn thức.
|
Hàm tĩnh công khai |
|
---|---|
GetClock_Monotonic(void)
|
uint64_t
Trả về thời gian đơn điệu của hệ thống theo đơn vị micrô giây.
|
GetClock_MonotonicHiRes(void)
|
uint64_t
Trả về thời gian hệ thống đơn điệu (có thể) có độ phân giải cao tính bằng đơn vị micrô giây.
|
GetClock_MonotonicMS(void)
|
uint64_t
Trả về thời gian hệ thống đơn điệu theo đơn vị mili giây.
|
GetClock_RealTime(uint64_t & curTime)
|
Error
Trả về thời gian thực (dân dụng) hiện tại ở định dạng thời gian Unix micrô giây.
|
GetClock_RealTimeMS(uint64_t & curTimeMS)
|
Error
Trả về thời gian thực (dân dụng) hiện tại ở định dạng thời gian Unix mili giây.
|
SetClock_RealTime(uint64_t newCurTime)
|
Error
Đặt khái niệm về thời gian thực (dân sự) hiện tại cho nền tảng.
|
Loại công khai
EventHandler
Error(* EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)
TimerCompleteFunct
void(* TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)
Hàm công khai
AddEventHandlerDelegate
Error AddEventHandlerDelegate( LwIPEventHandlerDelegate & aDelegate )
Thao tác này sẽ thêm một lớp uỷ quyền của trình xử lý sự kiện vào lớp hệ thống để mở rộng khả năng xử lý các sự kiện LwIP.
Thông tin chi tiết | |||||
---|---|---|---|---|---|
Các tham số |
|
||||
Giá trị trả về |
|
CancelTimer
void CancelTimer( TimerCompleteFunct aOnComplete, void *aAppState )
Phương thức này sẽ huỷ đồng hồ hẹn giờ một lần, bắt đầu từ trước đến hết StartTimer()
.
Thông tin chi tiết | |||||
---|---|---|---|---|---|
Các tham số |
|
DispatchEvent
Error DispatchEvent( Event aEvent )
Thao tác này sẽ gửi sự kiện được chỉ định để trường hợp này xử lý.
Việc huỷ sắp xếp kiểu và đối số từ sự kiện được xử lý bằng một hook dành riêng cho nền tảng, sau đó gọi lại Layer::HandleEvent để điều phối thực tế.
Thông tin chi tiết | |||
---|---|---|---|
Các tham số |
|
||
Trả về |
WEAVE_SYSTEM_NO_ERROR khi thành công; nếu không thì một lỗi cụ thể cho biết lý do khởi động không thành công.
|
DispatchEvents
Error DispatchEvents( void )
Đây là một trình bao bọc cú pháp xung quanh một hook dành riêng cho nền tảng có ảnh hưởng đến vòng lặp sự kiện, chờ đợi trong một hàng đợi dịch vụ thực thể này, kéo các sự kiện ra khỏi hàng đợi đó rồi gửi chúng để xử lý.
Thông tin chi tiết | |
---|---|
Trả về |
WEAVE_SYSTEM_NO_ERROR khi thành công; nếu không thì một lỗi cụ thể cho biết lý do khởi động không thành công.
|
GetPlatformData
void * GetPlatformData( void ) const
Thao tác này sẽ trả về mọi dữ liệu nền tảng dành riêng cho ứng dụng được chỉ định cho phiên bản này, nếu phiên bản này đã được đặt trước đó.
Thông tin chi tiết | |
---|---|
Trả về |
Dữ liệu nền tảng dành riêng cho ứng dụng, nếu đã được đặt trước đó; nếu không thì giá trị là NULL.
|
HandleEvent
Error HandleEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
Thao tác này sẽ triển khai việc điều phối và xử lý thực tế sự kiện Layer (Lớp) của hệ thống Weave.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
||||||
Giá trị trả về |
|
HandlePlatformTimer
Error HandlePlatformTimer( void )
Xử lý sự kiện hết hạn của bộ tính giờ cho nền tảng.
Lệnh gọi nl::Weave::System::Timer::HandleSavedTimers để xử lý mọi bộ tính giờ đã hết hạn. Giả định rằng API này chỉ được gọi khi ở trên luồng sở hữu đối tượng Lớp hệ thống Weave.
Thông tin chi tiết | |
---|---|
Trả về |
WEAVE_SYSTEM_NO_ERROR khi thành công, nếu không thì sẽ là mã lỗi.
|
HandleSelectResult
void HandleSelectResult( int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet )
Xử lý I/O trong một cuộc gọi được chọn.
Phương thức này đăng ký sự kiện I/O đang chờ xử lý cho từng điểm cuối đang hoạt động, sau đó gọi các hàm xử lý I/O tương ứng cho các điểm cuối đó.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Các tham số |
|
Bắt đầu
Error Init( void *aContext )
Lớp
Layer( void )
NewTimer
Error NewTimer( Timer *& aTimerPtr )
PostEvent
Error PostEvent( Object & aTarget, EventType aEventType, uintptr_t aArgument )
Thao tác này sẽ đăng sự kiện / thông báo thuộc loại được chỉ định với đối số đã cung cấp vào hàng đợi sự kiện dành riêng cho nền tảng của phiên bản này.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Các tham số |
|
||||||||
Giá trị trả về |
|
PrepareSelect
void PrepareSelect( int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime )
Chuẩn bị bộ chỉ số mô tả tệp để select()
xử lý.
Thông tin chi tiết | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Các tham số |
|
ScheduleWork
Error ScheduleWork( TimerCompleteFunct aComplete, void *aAppState )
Lên lịch để chạy một hàm có chữ ký giống hệt với TimerCompleteFunct
trên luồng Weave ngay khi có thể.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
||||||
Giá trị trả về |
|
SetPlatformData
void SetPlatformData( void *aPlatformData )
Thao tác này sẽ thiết lập dữ liệu nền tảng của riêng ứng dụng được chỉ định thành phiên bản để nền tảng ứng dụng truy xuất sau này.
Thông tin chi tiết | |||
---|---|---|---|
Các tham số |
|
Tắt
Error Shutdown( void )
StartTimer
Error StartTimer( uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState )
Phương thức này sẽ bắt đầu hẹn giờ một lần.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
||||||
Trả về |
WEAVE_SYSTEM_NO_ERROR Khi thành công.
|
||||||
Trả về |
WEAVE_SYSTEM_ERROR_NO_MEMORY Nếu không thể phân bổ bộ tính giờ.
|
||||||
Trả về |
Giá trị khác cho biết bộ tính giờ không bắt đầu được.
|
Tiểu bang
LayerState State( void ) const
Thao tác này sẽ trả về trạng thái hiện tại của đối tượng lớp.
WakeSelect
void WakeSelect( void )
Đánh thức chuỗi I/O giám sát chỉ số mô tả tệp bằng cách sử dụng hàm select() bằng cách ghi một byte đơn vào đường dẫn thức.
Lưu ý: Nếu WakeSelect()
đang được gọi từ trong HandleSelectResult()
, thì bạn có thể bỏ qua việc ghi vào dấu hiệu ống thức (wake pipe) vì luồng I/O đã bật.
Hơn nữa, chúng tôi không quan tâm liệu lượt ghi này có thành công hay không vì lỗi duy nhất có thể xảy ra một cách hợp lý là đường dẫn đã đầy. Trong trường hợp đó, luồng lệnh gọi đã chọn sẽ vẫn bật.
Hàm tĩnh công khai
GetClock_Monotonic
uint64_t GetClock_Monotonic( void )
Trả về thời gian đơn điệu của hệ thống theo đơn vị micrô giây.
Hàm này trả về thời gian đã trôi qua tính bằng micrô giây kể từ thời gian bắt đầu của hệ thống tuỳ ý do nền tảng xác định. Giá trị được trả về được đảm bảo luôn tăng dần (tức là không bao giờ gói) giữa các lần khởi động lại hệ thống. Ngoài ra, nguồn thời gian cơ bản sẽ được đảm bảo sẽ liên tục hoạt động trong mọi chế độ ngủ của hệ thống không dẫn đến việc khởi động lại khi thức dậy.
Mặc dù một số nền tảng có thể chọn trả về giá trị đo lường thời gian kể từ khi khởi động cho hệ thống, nhưng các ứng dụng không được dựa vào giá trị này. Ngoài ra, thời gian bắt đầu của GetClock_Monotonic() không bắt buộc phải giống như thời gian của bất kỳ hàm GetClock... nào khác. Do đó, chỉ có thể thực hiện phép tính thời gian tương đối trên các giá trị do cùng một hàm trả về.
Hàm này được đảm bảo an toàn theo luồng trên mọi nền tảng sử dụng tính năng tạo luồng.
Thông tin chi tiết | |
---|---|
Trả về |
Thời gian đã trôi qua tính bằng micrô giây kể từ một thời gian bắt đầu của hệ thống tuỳ ý do nền tảng xác định.
|
GetClock_MonotonicHiRes
uint64_t GetClock_MonotonicHiRes( void )
Trả về thời gian hệ thống đơn điệu (có thể) có độ phân giải cao tính bằng đơn vị micrô giây.
Hàm này trả về thời gian đã trôi qua tính bằng micrô giây kể từ thời gian bắt đầu của hệ thống tuỳ ý do nền tảng xác định. Giá trị được trả về được đảm bảo luôn tăng dần (tức là không bao giờ gói) giữa các lần khởi động lại hệ thống. Tuy nhiên, bộ tính giờ cơ bản không bắt buộc phải đánh dấu liên tục trong trạng thái ngủ sâu của hệ thống.
Một số nền tảng có thể triển khai GetClock_MonotonicHiRes() bằng cách sử dụng bộ tính giờ có độ phân giải cao có độ chính xác cao hơn GetClock_Monotonic() và không phải điều chỉnh xung nhịp dần dần (xoay vòng). Các hệ thống không có bộ tính giờ như vậy có thể chỉ trả về cùng một giá trị như GetClock_Monotonic().
Thời gian bắt đầu của thời gian mà GetClock_MonotonicHiRes() trả về không bắt buộc phải giống với thời gian của bất kỳ hàm GetClock... nào khác, bao gồm cả GetClock_Monotonic().
Hàm này được đảm bảo an toàn theo luồng trên mọi nền tảng sử dụng tính năng tạo luồng.
Thông tin chi tiết | |
---|---|
Trả về |
Thời gian đã trôi qua tính bằng micrô giây kể từ một thời gian bắt đầu của hệ thống tuỳ ý do nền tảng xác định.
|
GetClock_MonotonicMS
uint64_t GetClock_MonotonicMS( void )
Trả về thời gian hệ thống đơn điệu theo đơn vị mili giây.
Hàm này trả về thời gian đã trôi qua tính bằng mili giây kể từ một thời gian bắt đầu của hệ thống tuỳ ý do nền tảng xác định. Giá trị được trả về được đảm bảo luôn tăng dần (tức là không bao giờ gói) giữa các lần khởi động lại hệ thống. Ngoài ra, nguồn thời gian cơ bản sẽ được đảm bảo sẽ liên tục hoạt động trong mọi chế độ ngủ của hệ thống không dẫn đến việc khởi động lại khi thức dậy.
Mặc dù một số nền tảng có thể chọn trả về giá trị đo lường thời gian kể từ khi khởi động cho hệ thống, nhưng các ứng dụng không được dựa vào giá trị này. Ngoài ra, thời gian bắt đầu của GetClock_Monotonic() không bắt buộc phải giống như thời gian của bất kỳ hàm GetClock... nào khác. Do đó, chỉ có thể thực hiện phép tính thời gian tương đối trên các giá trị do cùng một hàm trả về.
Hàm này được đảm bảo an toàn theo luồng trên mọi nền tảng sử dụng tính năng tạo luồng.
Thông tin chi tiết | |
---|---|
Trả về |
Thời gian đã trôi qua tính bằng mili giây kể từ một khoảng thời gian bắt đầu của hệ thống tuỳ ý do nền tảng xác định.
|
GetClock_RealTime
Error GetClock_RealTime( uint64_t & curTime )
Trả về thời gian thực (dân dụng) hiện tại ở định dạng thời gian Unix micrô giây.
Phương thức này trả về khái niệm thời gian thực hiện tại của nền tảng cục bộ, được biểu thị bằng giá trị thời gian Unix được chia tỷ lệ theo micrô giây. Đồng hồ cơ bản được đảm bảo hoạt động với tốc độ ít nhất là toàn bộ giây (giá trị 1.000.000), nhưng trên một số nền tảng có thể quay nhanh hơn.
Nếu nền tảng cơ bản có thể theo dõi theo thời gian thực, nhưng hệ thống hiện chưa được đồng bộ hoá, GetClock_RealTime() sẽ trả về lỗi WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED.
Trên các nền tảng không có khả năng theo dõi theo thời gian thực, phương thức GetClock_RealTime() có thể không có, dẫn đến lỗi liên kết cho mọi ứng dụng tham chiếu đến phương thức đó. Ngoài ra, các nền tảng như vậy có thể cung cấp phương thức triển khai GetClock_RealTime() luôn trả về lỗi WEAVE_SYSTEM_ERROR_NOT_ id.
Hàm này được đảm bảo an toàn theo luồng trên mọi nền tảng sử dụng tính năng tạo luồng.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
||||||
Giá trị trả về |
|
GetClock_RealTimeMS
Error GetClock_RealTimeMS( uint64_t & curTimeMS )
Trả về thời gian thực (dân dụng) hiện tại ở định dạng thời gian Unix mili giây.
Phương thức này trả về khái niệm thời gian thực hiện tại của nền tảng cục bộ, được biểu thị bằng giá trị thời gian Unix được chia tỷ lệ thành mili giây. Đồng hồ cơ bản được đảm bảo hoạt động với tốc độ ít nhất là toàn bộ giây (giá trị 1.000.000), nhưng trên một số nền tảng có thể quay nhanh hơn.
Nếu nền tảng cơ bản có thể theo dõi theo thời gian thực, nhưng hệ thống hiện chưa được đồng bộ hoá, GetClock_RealTimeMS() sẽ trả về lỗi WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED.
Trên các nền tảng không có khả năng theo dõi theo thời gian thực, phương thức GetClock_RealTimeMS() có thể không có, dẫn đến lỗi liên kết cho mọi ứng dụng tham chiếu đến phương thức đó. Ngoài ra, các nền tảng như vậy có thể cung cấp phương thức triển khai GetClock_RealTimeMS() luôn trả về lỗi WEAVE_SYSTEM_ERROR_NOT_ id.
Hàm này được đảm bảo an toàn theo luồng trên mọi nền tảng sử dụng tính năng tạo luồng.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
||||||
Giá trị trả về |
|
SetClock_RealTime
Error SetClock_RealTime( uint64_t newCurTime )
Đặt khái niệm về thời gian thực (dân sự) hiện tại cho nền tảng.
Các ứng dụng có thể gọi hàm này để đặt khái niệm về thời gian thực hiện tại của nền tảng cục bộ. Thời gian hiện tại mới được biểu thị bằng giá trị thời gian Unix được chia tỷ lệ theo micrô giây.
Sau khi bạn đặt, đồng hồ nền tảng cơ bản sẽ đảm bảo theo dõi thời gian thực với độ chi tiết ít nhất là toàn bộ giây.
Một số nền tảng có thể hạn chế những ứng dụng hoặc quy trình có thể đặt theo thời gian thực. Nếu phương thức gọi không được phép thay đổi thời gian thực, hàm SetClock_RealTime() sẽ trả về lỗi WEAVE_SYSTEM_ERROR_ACCESS_DENIED.
Trên các nền tảng không có khả năng theo dõi theo thời gian thực hoặc không có khả năng đặt theo thời gian thực, hàm SetClock_RealTime() có thể không có, dẫn đến lỗi liên kết cho mọi ứng dụng tham chiếu đến hàm này. Ngoài ra, các nền tảng như vậy có thể cung cấp phương thức triển khai SetClock_RealTime() luôn trả về lỗi WEAVE_SYSTEM_ERROR_NOT_ id.
Hàm này được đảm bảo an toàn theo luồng trên mọi nền tảng sử dụng tính năng tạo luồng.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các tham số |
|
||||||
Giá trị trả về |
|