MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/systemic/ProcScheduler.hh

59 lines
1.2 KiB
C++

/*!\file
* \brief \todo Îïèñàíèå ôàéëà.
*/
/*
* ProcScheduler.h
*
* Created on: 21 ìàÿ 2019 ã.
* Author: titov
*/
#ifndef SOURCE_SYSTEMIC_PROCSCHEDULER_H_
#define SOURCE_SYSTEMIC_PROCSCHEDULER_H_
#include "IProcessor.hh"
#include <cstddef>
#include <stdint.h>
namespace systemic {
class ProcScheduler {
private:
IProcessor * * const processors;
const std::size_t size;
public:
typedef unsigned short ProcessorId;
typedef unsigned short Id;
struct ProcessParameter {
uint16_t priority;
uint16_t period;
uint16_t phase;
uint16_t controlled:1;
uint16_t reserved:15;
// ProcessParameter() : priority(0), period(1), phase(0), controlled(false), reserved() {}
};
bool registerProcess( ProcessorId processor_id, IProcess & proc, ProcessParameter parameters );
bool addProcessor( IProcessor * processor, ProcessorId processor_id );
ProcScheduler( IProcessor * * providers, std::size_t size );
};
template<std::size_t num>
struct ProcSchedulerBox {
IProcessor * records[num];
ProcScheduler manager;
ProcSchedulerBox( ) :
records(), manager( records, num ) {}
};
}
#endif /* SOURCE_SYSTEMIC_PROCSCHEDULER_H_ */