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 trạng thái sẵn sàng của sự kiện được xử lý thông qua phương thức triển khai cuộc thăm dò ý kiến/lựa chọn truyền thống trên 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 thông báo/sự kiện.
Hàm khởi tạo và phá huỷ |
|
---|---|
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 uỷ quyền 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 huỷ tính năng hẹn giờ một lần đã bắt đầu trước đó cho đến hết
StartTimer() . |
DispatchEvent(Event aEvent)
|
Error
Thao tác này sẽ gửi sự kiện đã chỉ định để thực thể 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ó tác động đến vòng lặp sự kiện, chờ một hàng đợi phục vụ phiên bản này, kéo các sự kiện ra khỏi hàng đợi đó rồi gửi chúng đi 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 khách được chỉ định cho thực thể đó, nếu đã được thiết lập 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 của hệ thống Weave.
|
HandlePlatformTimer(void)
|
Error
Xử lý sự kiện hết hạn bộ tính giờ nền tảng.
|
HandleSelectResult(int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet)
|
void
Xử lý I/O từ một lệnh 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 một sự kiện / thông báo thuộc loại được chỉ định cùng với đối số được 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() làm việc cùng. |
ScheduleWork(TimerCompleteFunct aComplete, void *aAppState)
|
Error
Lên lịch để một hàm có chữ ký giống hệt với
TimerCompleteFunct chạy càng sớm càng tốt trên luồng Weave. |
SetPlatformData(void *aPlatformData)
|
void
Thao tác này sẽ thiết lập dữ liệu nền tảng dành riêng cho ứng dụng được chỉ định thành thực thể để nền tảng ứng dụng truy xuất sau.
|
Shutdown(void)
|
Error
|
StartTimer(uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState)
|
Error
Phương thức này bắt đầu bộ tính giờ một lần.
|
State(void) const
|
LayerState
Thao tác này trả về trạng thái hiện tại của đối tượng lớp.
|
WakeSelect(void)
|
void
Đánh thức luồng I/O giám sát chỉ số mô tả tệp bằng cách sử dụng Select() bằng cách ghi một byte duy nhất vào đường dẫn đánh thức.
|
Hàm tĩnh công khai |
|
---|---|
GetClock_Monotonic(void)
|
uint64_t
Trả về thời gian của hệ thống đơn điệu theo đơn vị micrô giây.
|
GetClock_MonotonicHiRes(void)
|
uint64_t
Trả về thời gian của hệ thống đơn điệu có độ phân giải cao (có thể) tính bằng đơn vị micrô giây.
|
GetClock_MonotonicMS(void)
|
uint64_t
Trả về thời gian của 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 sự) 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 sự) 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 của nền tảng về thời gian thực (dân sự) hiện tại.
|
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 uỷ quyền 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 | |||||
---|---|---|---|---|---|
Tham số |
|
||||
Giá trị trả về |
|
CancelTimer
void CancelTimer( TimerCompleteFunct aOnComplete, void *aAppState )
Phương thức này huỷ tính năng hẹn giờ một lần đã bắt đầu trước đó cho đến hết StartTimer()
.
Thông tin chi tiết | |||||
---|---|---|---|---|---|
Tham số |
|
DispatchEvent
Error DispatchEvent( Event aEvent )
Thao tác này sẽ gửi sự kiện đã chỉ định để thực thể này xử lý.
Việc tách riêng kiểu và đối số từ sự kiện sẽ được xử lý bằng một hook dành riêng cho nền tảng, sau đó gọi lại Layer::HandleEvent để gửi thực tế.
Thông tin chi tiết | |||
---|---|---|---|
Tham số |
|
||
Trả về |
WEAVE_SYSTEM_NO_ERROR khi thành công; nếu không, một lỗi cụ thể cho biết lý do không khởi động được.
|
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ó tác động đến vòng lặp sự kiện, chờ một hàng đợi phục vụ phiên bản này, kéo các sự kiện ra khỏi hàng đợi đó rồi gửi chúng đi xử lý.
Thông tin chi tiết | |
---|---|
Trả về |
WEAVE_SYSTEM_NO_ERROR khi thành công; nếu không, một lỗi cụ thể cho biết lý do không khởi động được.
|
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 khách được chỉ định cho thực thể đó, nếu đã được thiết lập 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 thiết lập từ trước; nếu không thì 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 của hệ thống Weave.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
||||||
Giá trị trả về |
|
HandlePlatformTimer
Error HandlePlatformTimer( void )
Xử lý sự kiện hết hạn bộ tính giờ nền tảng.
Gọi nl::Weave::System::Timer::HandleLoadedTimers để xử lý mọi hẹn 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 của 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ì hãy nhập mã lỗi.
|
HandleSelectResult
void HandleSelectResult( int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet )
Xử lý I/O từ một lệnh gọi được chọn.
Phương thức này đăng ký sự kiện I/O đang chờ xử lý trong 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 | |||||||||
---|---|---|---|---|---|---|---|---|---|
Tham số |
|
Init
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 một sự kiện / thông báo thuộc loại được chỉ định cùng với đối số được 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 | |||||||||
---|---|---|---|---|---|---|---|---|---|
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()
làm việc cùng.
Thông tin chi tiết | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Tham số |
|
ScheduleWork
Error ScheduleWork( TimerCompleteFunct aComplete, void *aAppState )
Lên lịch để một hàm có chữ ký giống hệt với TimerCompleteFunct
chạy càng sớm càng tốt trên luồng Weave.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
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 dành riêng cho ứng dụng được chỉ định thành thực thể để nền tảng ứng dụng truy xuất sau.
Thông tin chi tiết | |||
---|---|---|---|
Tham số |
|
Tắt
Error Shutdown( void )
StartTimer
Error StartTimer( uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState )
Phương thức này bắt đầu bộ tính giờ một lần.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
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 không thể bắt đầu bộ tính giờ.
|
Tiểu bang
LayerState State( void ) const
Thao tác này trả về trạng thái hiện tại của đối tượng lớp.
WakeSelect
void WakeSelect( void )
Đánh thức luồng I/O giám sát chỉ số mô tả tệp bằng cách sử dụng Select() bằng cách ghi một byte duy nhất vào đường dẫn đánh 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 đường ống đánh thức, vì luồng I/O đã được bật.
Hơn nữa, chúng ta sẽ không quan tâm việc ghi có không thành công hay không vì lỗi duy nhất có thể xảy ra là đường ống đã đầy. Trong trường hợp đó, luồng gọi được chọn sẽ vẫn được đánh thức.
Hàm tĩnh công khai
GetClock_Monotonic
uint64_t GetClock_Monotonic( void )
Trả về thời gian của hệ thống đơn điệu 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 sẽ tăng không ngừng (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 được đảm bảo sẽ hoạt động liên tục trong mọi chế độ ngủ của hệ thống mà không đòi hỏi phải 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ề một giá trị đo lường thời gian kể từ khi hệ thống khởi độ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 hệ thống cho GetClock_Monotonic() không bắt buộc phải giống như thời gian bắt đầu của bất kỳ hàm GetWatch nào khác... Do đó, tính toán thời gian tương đối chỉ có thể được thực hiện trên các giá trị được cùng một hàm trả về.
Hàm này được đảm bảo an toàn cho luồng trên bất kỳ nền tảng nào sử dụng 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 của hệ thống đơn điệu có độ phân giải cao (có thể) 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 do 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 sẽ tăng không ngừng (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 cần 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ộ hẹn giờ có độ phân giải cao có độ chính xác cao hơn GetClock_Monotonic() và không có sự điều chỉnh đồng hồ 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 hệ thống đối với thời gian do GetClock_MonotonicHiRes() trả về không bắt buộc phải giống như thời gian của các hàm GetWatch khác, bao gồm cả GetClock_Monotonic().
Hàm này được đảm bảo an toàn cho luồng trên bất kỳ nền tảng nào sử dụng 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 của 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ừ 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 sẽ tăng không ngừng (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 được đảm bảo sẽ hoạt động liên tục trong mọi chế độ ngủ của hệ thống mà không đòi hỏi phải 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ề một giá trị đo lường thời gian kể từ khi hệ thống khởi độ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 hệ thống cho GetClock_Monotonic() không bắt buộc phải giống như thời gian bắt đầu của bất kỳ hàm GetWatch nào khác... Do đó, tính toán thời gian tương đối chỉ có thể được thực hiện trên các giá trị được cùng một hàm trả về.
Hàm này được đảm bảo an toàn cho luồng trên bất kỳ nền tảng nào sử dụng 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ừ 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 sự) 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 của nền tảng cục bộ về thời gian thực hiện tại, được biểu thị bằng một giá trị thời gian Unix được điều chỉnh theo tỷ lệ theo micrô giây. Đồng hồ cơ bản được đảm bảo sẽ 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ể đóng nhanh hơn.
Nếu nền tảng cơ bản có khả năng theo dõi theo thời gian thực nhưng hệ thống hiện chưa được đồng bộ hoá, thì GetClock_RealTime() sẽ trả về lỗi WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED.
Trên các nền tảng không thể theo dõi theo thời gian thực, có thể không có phương thức GetClock_RealTime(), dẫn đến lỗi đường liên kết cho mọi ứng dụng tham chiếu đến phương thức này. Ngoài ra, các nền tảng đó có thể cung cấp một phương thức triển khai GetClock_RealTime(). Phương thức này luôn trả về lỗi WEAVE_SYSTEM_ERROR_NOT_TIMEOUT.
Hàm này được đảm bảo an toàn cho luồng trên bất kỳ nền tảng nào sử dụng luồng.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
||||||
Giá trị trả về |
|
GetClock_RealTimeMS
Error GetClock_RealTimeMS( uint64_t & curTimeMS )
Trả về thời gian thực (dân sự) 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 của nền tảng cục bộ về thời gian thực hiện tại, được biểu thị bằng một giá trị thời gian Unix được điều chỉnh theo tỷ lệ mili giây. Đồng hồ cơ bản được đảm bảo sẽ 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ể đóng nhanh hơn.
Nếu nền tảng cơ bản có khả năng theo dõi theo thời gian thực nhưng hệ thống hiện chưa được đồng bộ hoá, thì GetClock_RealTimeMS() sẽ trả về lỗi WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED.
Trên các nền tảng không thể theo dõi theo thời gian thực, có thể không có phương thức GetClock_RealTimeMS(), dẫn đến lỗi liên kết cho bất kỳ ứng dụng nào tham chiếu đến phương thức này. Ngoài ra, các nền tảng đó có thể cung cấp phương thức triển khai GetClock_RealTimeMS(). Phương thức này luôn trả về lỗi WEAVE_SYSTEM_ERROR_NOT_TIMEOUT.
Hàm này được đảm bảo an toàn cho luồng trên bất kỳ nền tảng nào sử dụng luồng.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
||||||
Giá trị trả về |
|
SetClock_RealTime
Error SetClock_RealTime( uint64_t newCurTime )
Đặt khái niệm của nền tảng về thời gian thực (dân sự) hiện tại.
Các ứng dụng có thể gọi hàm này để thiết lập khái niệm của nền tảng cục bộ về thời gian thực hiện tại. Thời gian hiện tại mới được biểu thị dưới dạng giá trị thời gian Unix được điều chỉnh theo tỷ lệ 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ế các ứ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 theo thời gian thực, thì hàm SetClock_RealTime() sẽ trả về lỗi WEAVE_SYSTEM_ERROR_ACCESS_DENIED.
Trên các nền tảng không thể theo dõi theo thời gian thực hoặc không cung cấp khả năng đặt thời gian thực, hàm SetClock_RealTime() có thể bị thiếu, dẫn đến lỗi liên kết cho bất kỳ ứng dụng nào tham chiếu hàm đó. Ngoài ra, các nền tảng đó có thể cung cấp phương thức triển khai SetClock_RealTime(). Phương thức này luôn trả về lỗi WEAVE_SYSTEM_ERROR_NOT_supported.
Hàm này được đảm bảo an toàn cho luồng trên bất kỳ nền tảng nào sử dụng luồng.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
||||||
Giá trị trả về |
|