Приветствую.
Начал смотреть scmRTOS. Сразу начал резать глаз способ реализации функции процесса:
Код
typedef OS::process<OS::pr0, 300> TProc1;
namespace OS
{
template <>
OS_PROCESS void TProc1::exec()
{
for(;;)
{
ef.wait();
PB0.Off();
}
}
}
Необходимость реализовывать функцию процесса внутри поля имён OS, а добавление template <> вызывает некоторое удивление
Подумалось, почему-бы не сделать ф-цию exec просто ф-цией своего собственного класса? На скорую руку сделал несколько изменений в исходниках scmRTOS и весь код декларации и реализации процесса превратился в:
Код
class TProc1 : public OS::process<TProc1, OS::pr0, 300>
{
public:
static void exec()
{
for(;;)
{
ef.wait();
PB0.Off();
}
}
};
Что мы в итоге имеем? 1) Класс, в котором можно инкапсулировать данные и методы процесса. Закрытые и используемые только в TProc1 данные можно объявить в секции private класса и никто к ним не получит доступ. 2) Более привычный способ реализации ф-ции.
Кто что думает на этот счёт?