нл:: Переплетение:: Система:: Платформа:: Слой

Краткое содержание

Функции

DidInit ( Layer & aLayer, void *aContext, Error aStatus)
NL_DLL_EXPORT void
Это крючок пост-инициализации уровня системы Weave для конкретной платформы.
DidShutdown ( Layer & aLayer, void *aContext, Error aStatus)
NL_DLL_EXPORT void
Это крючок предварительного завершения работы Weave System Layer для конкретной платформы.
DispatchEvent ( Layer & aLayer, void *aContext, Event aEvent)
NL_DLL_EXPORT Error
Это крючок отправки событий/сообщений, специфичный для платформы.
DispatchEvents ( Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
Это крючок отправки событий/сообщений, специфичный для платформы.
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.
PostEvent ( Layer & aLayer, void *aContext, Object & aTarget, EventType aType, uintptr_t aArgument)
NL_DLL_EXPORT Error
Это крючок для событий/сообщений, специфичный для платформы.
SetClock_RealTime (uint64_t newCurTime)
Error
Специфическая для платформы функция установки текущего реального (гражданского) времени.
StartTimer ( Layer & aLayer, void *aContext, uint32_t aMilliseconds)
NL_DLL_EXPORT Error
Это крючок отправки событий/сообщений, специфичный для платформы.
WillInit ( Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
Это крючок предварительной инициализации уровня системы Weave для конкретной платформы.
WillShutdown ( Layer & aLayer, void *aContext)
NL_DLL_EXPORT Error
Это крючок предварительного завершения работы Weave System Layer для конкретной платформы.

Функции

Дидинит

NL_DLL_EXPORT void DidInit(
  Layer & aLayer,
  void *aContext,
  Error aStatus
)

Это крючок пост-инициализации уровня системы Weave для конкретной платформы.

Это можно переопределить, установив определение препроцессора WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS .

Подробности
Параметры
[in,out] aLayer
Ссылка на инициализируемый экземпляр слоя системы Weave.
[in,out] aContext
Контекстные данные, специфичные для платформы, передаются в метод инициализации уровня ::Init.
[in] anError
Общий статус возвращается через метод Weave System Layer ::Init.

СделалВыключение

NL_DLL_EXPORT void DidShutdown(
  Layer & aLayer,
  void *aContext,
  Error aStatus
)

Это крючок предварительного завершения работы Weave System Layer для конкретной платформы.

Это можно переопределить, установив определение препроцессора WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS .

Подробности
Параметры
[in,out] aLayer
Ссылка на отключаемый экземпляр уровня системы Weave.
[in,out] aContext
Контекстные данные, специфичные для платформы, передаются в метод инициализации уровня ::Shutdown.
[in] anError
Общий статус возвращается через метод Weave System Layer ::Shutdown.
Возврат
WEAVE_SYSTEM_NO_ERROR в случае успеха; в противном случае — конкретная ошибка, указывающая причину сбоя завершения работы. Возврат неуспешного статуса приведет к отмене завершения работы.

DispatchEvent

NL_DLL_EXPORT Error DispatchEvent(
  Layer & aLayer,
  void *aContext,
  Event aEvent
)

Это крючок отправки событий/сообщений, специфичный для платформы.

Это можно переопределить, установив определение препроцессора WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS .

Это отправляет указанное событие для обработки, демаршалируя тип и аргументы события для передачи в Weave System Layer::HandleEvent для фактической отправки.

Подробности
Параметры
[in,out] aLayer
Ссылка на экземпляр слоя, для которого отправляются события/сообщения.
[in,out] aContext
Контекстные данные, специфичные для платформы, передаются в метод инициализации уровня ::Init.
[in] anEvent
Объект события, специфичный для платформы, который необходимо отправить для обработки.
Возвращаемые значения
#WEAVE_SYSTEM_ERROR_BAD_ARGS
Если #aLayer или цель события имеет значение NULL.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
Если тип события не распознан.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Если состояние объекта слоя системы Weave является неожиданным.
WEAVE_SYSTEM_NO_ERROR
Об успехе.

Отправка событий

NL_DLL_EXPORT Error DispatchEvents(
  Layer & aLayer,
  void *aContext
)

Это крючок отправки событий/сообщений, специфичный для платформы.

Это можно переопределить, установив определение препроцессора WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS .

Это создает цикл событий, ожидающий очереди, обслуживающей этот экземпляр, извлекающий события из этой очереди и затем отправляющий их на обработку.

Подробности
Параметры
[in,out] aLayer
Ссылка на экземпляр слоя, для которого отправляются события/сообщения.
[in,out] aContext
Контекстные данные, специфичные для платформы, передаются в метод инициализации уровня ::Init.
Возвращаемые значения
#WEAVE_SYSTEM_ERROR_BAD_ARGS
Если #aLayer или #aContext имеет значение NULL.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Если состояние объекта слоя системы Weave является неожиданным.
#WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
Если тип события не распознан.
WEAVE_SYSTEM_NO_ERROR
Об успехе.

GetClock_Monotonic

uint64_t GetClock_Monotonic(
  void
)

Специфическая для платформы функция для получения монотонного системного времени в микросекундах.

Ожидается, что эта функция вернет время в микросекундах, прошедшее с произвольной, определенной платформой эпохи. Реализации платформы обязаны возвращать значение, которое постоянно увеличивается (т. е. никогда не переносится) между перезагрузками системы. Кроме того, базовый источник времени должен непрерывно работать во время любых режимов сна системы, которые не влекут за собой перезапуск после пробуждения.

Эпоха времени, возвращаемая этой функцией, не обязательно должна совпадать с эпохой для любой другой функции GetClock..., включая GetClock_MonotonicMS().

Ожидается, что эта функция будет потокобезопасной на любой платформе, использующей многопоточность.

Подробности
Возврат
Прошедшее время в микросекундах с произвольной, определяемой платформой эпохи.

GetClock_MonotonicHiRes

uint64_t GetClock_MonotonicHiRes(
  void
)

Специфическая для платформы функция для получения монотонного системного времени высокого разрешения в микросекундах.

Ожидается, что эта функция вернет время в микросекундах, прошедшее с произвольной, определенной платформой эпохи. Значения, возвращаемые GetClock_MonotonicHiRes(), должны быть постоянно возрастающими (т.е. никогда не переноситься). Однако базовый таймер не обязан работать непрерывно во время состояния глубокого сна системы.

Платформе рекомендуется реализовать GetClock_MonotonicHiRes() с использованием таймера высокого разрешения, который не подлежит постепенной корректировке часов (повороту). На платформах без такого таймера GetClock_MonotonicHiRes() может возвращать то же значение, что и GetClock_Monotonic().

Эпоха времени, возвращаемая этой функцией, не обязательно должна совпадать с эпохой для любой другой функции GetClock....

Ожидается, что эта функция будет потокобезопасной на любой платформе, использующей многопоточность.

Подробности
Возврат
Прошедшее время в микросекундах с произвольной, определяемой платформой эпохи.

GetClock_MonotonicMS

uint64_t GetClock_MonotonicMS(
  void
)

Специфическая для платформы функция для получения монотонного системного времени в миллисекундах.

Ожидается, что эта функция вернет время в миллисекундах, прошедшее с произвольной, определенной платформой эпохи. Реализации платформы обязаны возвращать значение, которое постоянно увеличивается (т. е. никогда не переносится) между перезагрузками системы. Кроме того, базовый источник времени должен непрерывно работать во время любых режимов сна системы, которые не влекут за собой перезапуск после пробуждения.

Эпоха времени, возвращаемая этой функцией, не обязательно должна совпадать с эпохой для любой другой функции GetClock..., включая GetClock_Monotonic().

Ожидается, что эта функция будет потокобезопасной на любой платформе, использующей многопоточность.

Подробности
Возврат
Прошедшее время в миллисекундах с произвольной, определяемой платформой эпохи.

GetClock_RealTime

Error GetClock_RealTime(
  uint64_t & curTime
)

Специфическая для платформы функция для получения текущего реального (гражданского) времени в микросекундном формате времени Unix.

Ожидается, что эта функция вернет представление локальной платформы о текущем реальном времени, выраженное как значение времени Unix, масштабированное до микросекунд. Базовые часы должны идти со скоростью не менее целых секунд (значения 1 000 000), но могут идти быстрее.

На тех платформах, которые способны отслеживать реальное время, GetClock_RealTime() должен возвращать ошибку WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED всякий раз, когда система не синхронизирована с реальным временем.

Платформы, которые не способны отслеживать реальное время, не должны реализовывать функцию GetClock_RealTime(), тем самым вызывая сбои во время соединения функций, которые зависят от доступа к реальному времени. В качестве альтернативы такие платформы могут предоставлять реализацию GetClock_RealTime(), которая возвращает ошибку WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.

Ожидается, что эта функция будет потокобезопасной на любой платформе, использующей многопоточность.

Подробности
Параметры
[out] curTime
Текущее время, выраженное как время Unix, масштабированное до микросекунд.
Возвращаемые значения
WEAVE_SYSTEM_NO_ERROR
Если метод удался.
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Если платформа способна отслеживать в реальном времени, но в данный момент она не синхронизирована.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Если платформа не способна отслеживать в реальном времени.

GetClock_RealTimeMS

Error GetClock_RealTimeMS(
  uint64_t & curTimeMS
)

Специфическая для платформы функция для получения текущего реального (гражданского) времени в миллисекундном формате времени Unix.

Ожидается, что эта функция вернет представление локальной платформы о текущем реальном времени, выраженное как значение времени Unix, масштабированное до миллисекунд.

Подробную информацию об ожидаемом поведении смотрите в документации GetClock_RealTime().

Подробности
Параметры
[out] curTime
Текущее время, выраженное как время Unix, масштабированное до миллисекунд.
Возвращаемые значения
WEAVE_SYSTEM_NO_ERROR
Если метод удался.
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Если платформа способна отслеживать в реальном времени, но в данный момент она не синхронизирована.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Если платформа не способна отслеживать в реальном времени.

Сообщение событие

NL_DLL_EXPORT Error PostEvent(
  Layer & aLayer,
  void *aContext,
  Object & aTarget,
  EventType aType,
  uintptr_t aArgument
)

Это крючок для событий/сообщений, специфичный для платформы.

Это можно переопределить, установив определение препроцессора WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS .

Это отправляет событие/сообщение указанного типа с предоставленным аргументом в очередь событий/сообщений, специфичную для платформы этого экземпляра.

Подробности
Параметры
[in,out] aLayer
Указатель на экземпляр слоя, на который отправляется событие/сообщение.
[in,out] aContext
Контекстные данные, специфичные для платформы, передаются в метод инициализации уровня ::Init.
[in,out] aTarget
Указатель на объект слоя системы Weave, делающий запрос на публикацию.
[in] aType
Тип события для публикации.
[in,out] anArg
Аргумент, связанный с событием для публикации.
Возврат
WEAVE_SYSTEM_NO_ERROR в случае успеха; в противном случае — конкретная ошибка, указывающая причину сбоя инициализации.

SetClock_RealTime

Error SetClock_RealTime(
  uint64_t newCurTime
)

Специфическая для платформы функция установки текущего реального (гражданского) времени.

Weave вызывает эту функцию, чтобы установить представление локальной платформы о текущем реальном времени. Новое текущее время выражается как значение времени Unix, масштабированное до микросекунд.

Ожидается, что после установки базовые часы платформы будут отслеживать реальное время с точностью не менее целых секунд.

На платформах, поддерживающих отслеживание в реальном времени, функция SetClock_RealTime() должна возвращать ошибку WEAVE_SYSTEM_ERROR_ACCESS_DENIED, если вызывающее приложение не имеет права устанавливать текущее время.

Платформы, которые не способны отслеживать реальное время или не предлагают возможности устанавливать реальное время, не должны реализовывать функцию SetClock_RealTime(), тем самым вызывая сбои во время соединения функций, которые зависят от настройки реального времени. В качестве альтернативы такие платформы могут предоставлять реализацию SetClock_RealTime(), которая возвращает ошибку WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.

Ожидается, что эта функция будет потокобезопасной на любой платформе, использующей многопоточность.

Подробности
Параметры
[in] newCurTime
Новое текущее время, выраженное как время Unix, масштабированное до микросекунд.
Возвращаемые значения
WEAVE_SYSTEM_NO_ERROR
Если метод удался.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Если платформа не способна отслеживать в реальном времени.
#WEAVE_SYSTEM_ERROR_ACCESS_DENIED
Если вызывающее приложение не имеет права устанавливать текущее время.

Старттаймер

NL_DLL_EXPORT Error StartTimer(
  Layer & aLayer,
  void *aContext,
  uint32_t aMilliseconds
)

Это крючок отправки событий/сообщений, специфичный для платформы.

Это можно переопределить, установив определение препроцессора WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS .

Подробности
Параметры
[in,out] aLayer
Ссылка на экземпляр слоя, для которого отправляются события/сообщения.
[in,out] aContext
Контекстные данные, специфичные для платформы, передаются в метод инициализации уровня ::Init.
[in] aMilliseconds
Количество миллисекунд, которое необходимо установить для таймера.
Возвращаемые значения
WEAVE_SYSTEM_NO_ERROR
Всегда успешен, если его не переопределить.

Уиллинит

NL_DLL_EXPORT Error WillInit(
  Layer & aLayer,
  void *aContext
)

Это крючок предварительной инициализации уровня системы Weave для конкретной платформы.

Это можно переопределить, установив определение препроцессора WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS .

Подробности
Параметры
[in,out] aLayer
Ссылка на инициализируемый экземпляр слоя системы Weave.
[in,out] aContext
Контекстные данные, специфичные для платформы, передаются в метод инициализации уровня ::Init.
Возврат
WEAVE_SYSTEM_NO_ERROR в случае успеха; в противном случае — конкретная ошибка, указывающая причину сбоя инициализации. Возврат неуспешного статуса прервет инициализацию.

БудетВыключение

NL_DLL_EXPORT Error WillShutdown(
  Layer & aLayer,
  void *aContext
)

Это крючок предварительного завершения работы Weave System Layer для конкретной платформы.

Это можно переопределить, установив определение препроцессора WEAVE_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS .

Подробности
Параметры
[in,out] aLayer
Указатель на отключаемый экземпляр уровня системы Weave.
[in,out] aContext
Контекстные данные, специфичные для платформы, передаются в метод инициализации уровня ::Shutdown.
Возврат
WEAVE_SYSTEM_NO_ERROR в случае успеха; в противном случае — конкретная ошибка, указывающая причину сбоя завершения работы. Возврат неуспешного статуса приведет к отмене завершения работы.