NesC (network embedded systems C)
Последнее изменение этой страницы: 02:29, 22 мая 2016.
Парадигма | императивный |
---|---|
Стабильная версия | 1.1.3 / 14 декабря 2004 |
Лицензия | New BSD |
Портал: | NesC |
Под влиянием | |
C |
NesC (network embedded systems C - сетевой язык Си для встроенных систем) - это компонентный событийно-ориентированный язык программирования, использующийся для создания приложений для платформы TinyOS. NesC - расширение языка Си (то есть код на Си полностью корректен для компилятора nesC), добавляющее дополнительные возможности в TinyOS - среду, созданную для встроенных устройств, которые используются в беспроводных сенсорных сетях.
Содержание
Модули
Модули реализации компонентов спецификации с кодом C:
module-implementation:
implementation { translation-unit }
,где translation-unit
представляет собой список объявлений и определений C.
Заявления верхнего уровня модуля translation-unit
относятся к области применения компонента-реализации модуля. Эти заявления имеют неопределенную степень и могут быть любым стандартным объявлением C или определением, заявлением или определением задач, реализацией команд или событий.
Конфигурации
Конфигурации реализуются компонентной спецификацией путем соединений или проводки, а также набора других компонентов:
configuration-implementation:
implementation { component-listopt connection-list }
Component-list
перечислены компоненты, которые используются для создания этой конфигурации, connection-list
определяет, как эти компоненты соединены друг с другом и со спецификацией к конфигурации.
Пример приложения
Ниже показана структура (компоненты и соединения) простого приложения Blink, который мигает светодиодом раз в секунду:
Исходный код для Blink состоит из двух частей: проводки в Blink и фактической логики приложения (C-код) в BlinkM
Blink:
/*
* Copyright (c) 2000-2002 The Regents of the University of California.
* and Copyright (c) 2002 Intel Corporation
* All rights reserved.
*/
configuration Blink {
}
implementation {
components Main, BlinkM, ClockC, LedsC;
Main.StdControl -> BlinkM.StdControl;
BlinkM.Clock -> ClockC;
BlinkM.Leds -> LedsC;
}
BlinkM:
/*
* Copyright (c) 2000-2002 The Regents of the University of California.
* and Copyright (c) 2002 Intel Corporation
* All rights reserved.
*
* Implementation for Blink application. Toggle the red LED when the
* clock fires.
*/
module BlinkM {
provides interface StdControl;
uses interface Clock;
uses interface Leds;
}
implementation {
bool state; /* the state of the red LED (on or off) */
/* Initialize the component.
* @return Always returns SUCCESS */
command result_t StdControl.init() {
state = FALSE;
call Leds.init();
return SUCCESS;
}
/* Start things up. This just sets the rate for the clock component.
* @return Always returns SUCCESS */
command result_t StdControl.start() {
return call Clock.setRate(TOS_I1PS, TOS_S1PS);
}
/* Halt execution of the application.
* This just disables the clock component.
* @return Always returns SUCCESS */
command result_t StdControl.stop() {
return call Clock.setRate(TOS_I0PS, TOS_S0PS);
}
/* Toggle the red LED in response to the Clock.fire event.
* @return Always returns SUCCESS */
event result_t Clock.fire() {
state = !state;
if (state) {
call Leds.redOn();
} else {
call Leds.redOff();
}
return SUCCESS;
}
}
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.