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