MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/configuration/software/AppInfo.hh
2024-06-07 11:12:56 +03:00

104 lines
2.9 KiB
C++

/*!\file
* \brief \todo пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ.
*/
/*
* AppInfo.h
*
* Created on: 24 пїЅпїЅпїЅ. 2019 пїЅ.
* Author: titov
*/
#ifndef SOURCE_APPLICATION_SOFTWARE_APPINFO_H_
#define SOURCE_APPLICATION_SOFTWARE_APPINFO_H_
#include "AppId.hh"
#include <cstddef>
#include <iterator>
#include <utility>
namespace configuration { namespace software {
class AppInfo {
public:
static const CpuId incorret_cpu_id_by_default = 0xFFFFu;
static void reset( CpuId incorrect_cpu_id = incorret_cpu_id_by_default );
static bool notice( InitializerStepId initializer_id, CpuId cpu_id,
std::pair<const char *, std::size_t> links,
std::pair<const char *, std::size_t> setting,
std::pair<const char *, std::size_t> proc );
struct Initializers {
friend AppInfo;
struct InitializerInfo {
InitializerStepId initializer_id;
std::pair<const char *, std::size_t> links;
std::pair<const char *, std::size_t> setting;
std::pair<const char *, std::size_t> proc;
};
struct InitializerIterator : public std::iterator<
std::input_iterator_tag,
InitializerInfo, std::size_t> {
friend Initializers;
InitializerIterator & operator++();
InitializerIterator operator++(int);
bool operator==( InitializerIterator other ) const;
bool operator!=( InitializerIterator other ) const;
InitializerInfo operator*() const;
private:
InitializerIterator( CpuId cpu_id, std::size_t pos );
CpuId cpu_id;
std::size_t position;
};
InitializerIterator begin();
InitializerIterator end();
std::size_t getSize();
private:
Initializers( CpuId );
CpuId cpu_id;
};
static Initializers getInitializers( CpuId cpu_id );
struct Record {
InitializerStepId initializer_id;
CpuId cpu_id;
const char * links; uint32_t links_size;
const char * setting; uint32_t setting_size;
const char * proc; uint32_t proc_size;
Record( InitializerStepId, CpuId,
std::pair<const char *, std::size_t> links,
std::pair<const char *, std::size_t> setting,
std::pair<const char *, std::size_t> proc );
Record() : initializer_id(0), cpu_id(incorret_cpu_id_by_default) {}
};
static void initialize( Record * table, std::size_t quantity );
private:
static std::size_t search_from( std::size_t i, CpuId cpu_id );
static Record * table;
static std::size_t size;
static std::size_t num_records;
};
}}
#endif /* SOURCE_APPLICATION_SOFTWARE_APPINFO_H_ */