NesC - NesC

другие (произносится как "NES-see") компонентный, событийный язык программирования используется для создания приложений для TinyOS Платформа. TinyOS - это рабочая среда предназначен для работы на встроенных устройствах, используемых в распределенных беспроводные сенсорные сети. nesC построен как расширение Язык программирования C с компонентами, «соединенными» вместе для запуска приложений на TinyOS. Название другие это сокращение от «встроенные сетевые системы C».

Компоненты и интерфейсы

Программы nesC строятся из компонентов, которые собираются («соединяются») в целые программы. Компоненты имеют внутренний параллелизм в виде задач. Потоки управления могут проходить в компонент через его интерфейсы. Эти потоки связаны либо с задачей, либо с аппаратным прерыванием.

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

В nesC интерфейсы являются двунаправленными: они определяют набор функций, которые должны быть реализованы поставщиком интерфейса (команды), и набор, который будет реализован пользователем интерфейса (события). Это позволяет единому интерфейсу представлять сложное взаимодействие между компонентами (например, регистрацию интереса в каком-то событии с последующим обратным вызовом, когда это событие происходит). Это очень важно, потому что все длинные команды в TinyOS (например, отправка пакета) не блокируют; об их завершении сигнализирует событие (отправка выполнена). Указывая интерфейсы, компонент не может вызвать команду send, если он не обеспечивает реализацию события sendDone. Обычно команды вызывают вниз, т. Е. От компонентов приложения к компонентам, расположенным ближе к оборудованию, а события вызывают вверх. Некоторые примитивные события связаны с аппаратными прерываниями.

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

внешняя ссылка