Commit 81bdb330 authored by Pavel Vainerman's avatar Pavel Vainerman

Небольшие правки документации и коментариев

parent dce8fb8b
...@@ -2,16 +2,13 @@ ...@@ -2,16 +2,13 @@
- Внести в проект реализацию протокола PLCNet // нужно ли - Внести в проект реализацию протокола PLCNet // нужно ли
- написать "uniset-check" автоматический тест основных функций - написать "uniset-check" автоматический тест основных функций (getValue/setValue и т.п.)
(saveState/Value, getState/Value, setState/Value и т.п.)
- сделать, чтобы можно было Debug пускать через syslog (да ещё и на другую машину) - сделать, чтобы можно было Debug пускать через syslog (да ещё и на другую машину)
- Подумать и реализовать механизм хранения ссылок (IOR) с использованием разделяемой памяти... - Подумать и реализовать механизм хранения ссылок (IOR) с использованием разделяемой памяти...
(сейчас есть IORFile и omniNames). // нужно ли (сейчас есть IORFile и omniNames). // нужно ли
- Сделать ObjectIndex_ArrayXML. т.е. использовать vector, при этом считывая индексы из XML. // нужно ли
- (IONotifyController): Разработать механизм заказа переодических уведомлений (msec), независимо от того, менялись ли датчики.. - (IONotifyController): Разработать механизм заказа переодических уведомлений (msec), независимо от того, менялись ли датчики..
- (IONotifyController): Разработать механизм заказа группы датчиков сразу (и ответ тоже группой) - (IONotifyController): Разработать механизм заказа группы датчиков сразу (и ответ тоже группой)
...@@ -27,6 +24,4 @@ codegen: ...@@ -27,6 +24,4 @@ codegen:
Version 2.0 Version 2.0
============ ============
- написать документацию по ModbusSlave - написать документацию по ModbusSlave
- рефакторинг класса логов (DebugStream)
- циклическое хранилище для аварийных следов на основе SQLite - циклическое хранилище для аварийных следов на основе SQLite
...@@ -81,7 +81,7 @@ class SQLiteResult; ...@@ -81,7 +81,7 @@ class SQLiteResult;
// Памятка: // Памятка:
// Включение режима для журнала - "вести в памяти" (чтобы поберечь CompactFlash) // Включение режима для журнала - "вести в памяти" (чтобы поберечь CompactFlash)
// PRAGMA journal_mode = MEMORY // PRAGMA journal_mode = MEMORY
// // При этом конечно есть риск потерять данные при выключении..
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class SQLiteInterface class SQLiteInterface
{ {
......
...@@ -7,9 +7,8 @@ ...@@ -7,9 +7,8 @@
#include <ostream> #include <ostream>
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
/*! /*!
Класс позволяющий загружать калибровочные Класс позволяющий загружать калибровочную
характеристики из конфигурационного файла характеристику из конфигурационного (xml)файла и получать по ней точки.
и получать по ней точки.
\code \code
C, калиброванное значение C, калиброванное значение
^ ^
...@@ -20,6 +19,33 @@ C, калиброванное значение ...@@ -20,6 +19,33 @@ C, калиброванное значение
--------> -------->
R(raw value), сырое значение R(raw value), сырое значение
\endcode \endcode
Сами диаграммы представляют из себя следующую секцию в xml
x - сырое значение (по которому ведётся поиск)
y - калиброванное значение
\code
<Calibrations name="Calibrations">
<diagram name="testcal">
<point x="-200" y="-60"/>
<point x="-100" y="-60"/>
<point x="-50" y="-20"/>
<point x="0" y="0"/>
<point x="50" y="20"/>
<point x="100" y="60"/>
<point x="200" y="60"/>
</diagram>
<diagram name="NNN">
...
</diagram>
<diagram name="ZZZ">
...
</diagram>
...
</Calibrations>
\endcode
Диаграмма позволяет задать множество точек. На отрезках между точками используется линейная аппроксимация.
*/ */
class Calibration class Calibration
{ {
......
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// Цифровой фильтр с двумя (опционально) уровнями фильтрации сигнала // Реализация различных цифровых фильтров
// Первый уровень фильтра усредняет несколько значений, переданных через массив
// Второй уровень - математическая реалезация RC фильтра
// После вызова конструктора фильтра, его необходимо еще проинициализировать
// вызвав функцию FirstValue
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#ifndef DigitalFilter_H_ #ifndef DigitalFilter_H_
#define DigitalFilter_H_ #define DigitalFilter_H_
......
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// --------------------------------------------------------------------------
#ifndef _MTR_H_ #ifndef _MTR_H_
#define _MTR_H_ #define _MTR_H_
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
......
...@@ -17,19 +17,19 @@ namespace VTypes ...@@ -17,19 +17,19 @@ namespace VTypes
vtUnknown, vtUnknown,
vtF2, /*!< двойное слово float(4 байта). В виде строки задаётся как \b "F2". */ vtF2, /*!< двойное слово float(4 байта). В виде строки задаётся как \b "F2". */
vtF4, /*!< 8-х байтовое слово (double). В виде строки задаётся как \b "F4". */ vtF4, /*!< 8-х байтовое слово (double). В виде строки задаётся как \b "F4". */
vtByte, /*!< байт. В виде строки задаётся как \b "byte". */ vtByte, /*!< байт. В виде строки задаётся как \b "byte". */
vtUnsigned, /*!< беззнаковое целое (2 байта). В виде строки задаётся как \b "unsigned". */ vtUnsigned, /*!< беззнаковое целое (2 байта). В виде строки задаётся как \b "unsigned". */
vtSigned, /*!< знаковое целое (2 байта). В виде строки задаётся как \b "signed". */ vtSigned, /*!< знаковое целое (2 байта). В виде строки задаётся как \b "signed". */
vtI2, /*!< целое (4 байта). В виде строки задаётся как \b "I2".*/ vtI2, /*!< целое (4 байта). В виде строки задаётся как \b "I2".*/
vtU2 /*!< беззнаковое целое (4 байта). В виде строки задаётся как \b "U2".*/ vtU2 /*!< беззнаковое целое (4 байта). В виде строки задаётся как \b "U2".*/
}; };
std::ostream& operator<<( std::ostream& os, const VType& vt ); std::ostream& operator<<( std::ostream& os, const VType& vt );
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
std::string type2str( VType t ); /*!< преобразование строки в тип */ std::string type2str( VType t ); /*!< преобразование строки в тип */
VType str2type( const std::string& s ); /*!< преобразование названия в строку */ VType str2type( const std::string& s ); /*!< преобразование названия в строку */
int wsize( VType t ); /*!< длина данных в словах */ int wsize( VType t ); /*!< длина данных в словах */
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
class F2 class F2
{ {
......
...@@ -21,7 +21,7 @@ class ComPort485F: ...@@ -21,7 +21,7 @@ class ComPort485F:
{ {
public: public:
ComPort485F( std::string comDevice, int gpio_num, bool tmit_ctrl=false ); ComPort485F( const std::string& comDevice, int gpio_num, bool tmit_ctrl=false );
virtual void sendByte( unsigned char x ); virtual void sendByte( unsigned char x );
virtual void setTimeout( int timeout ); virtual void setTimeout( int timeout );
......
...@@ -34,14 +34,15 @@ ...@@ -34,14 +34,15 @@
#include "IORFile.h" #include "IORFile.h"
#include "Debug.h" #include "Debug.h"
class SystemGuard;
/* /*
В функции main нужно вызвать конструктор класса Configuration В функции main нужно вызвать конструктор класса Configuration
fileConf - название файла конфигурации, который будет открываться fileConf - название файла конфигурации, который будет открываться.
из в каталоге conf того каталога, откуда была запущена программа. Если в каталоге conf того каталога, откуда была запущена программа.
getTopDir позволяет получить каталог, откуда запущена программа getTopDir позволяет получить каталог, откуда запущена программа.
*/
Современный способ инициализации:
UniSetTypes::uniset_init(argc,argv);
*/
namespace UniSetTypes namespace UniSetTypes
{ {
/*! /*!
...@@ -54,10 +55,10 @@ namespace UniSetTypes ...@@ -54,10 +55,10 @@ namespace UniSetTypes
public: public:
virtual ~Configuration(); virtual ~Configuration();
/*! конфигурирование xml-файлом ( предпочтительный способ ) */ /*! конфигурирование xml-файлом ( предпочтительный способ ) */
Configuration( int argc, const char* const* argv, const std::string& xmlfile="" ); Configuration( int argc, const char* const* argv, const std::string& xmlfile="" );
/*! конфигурирование xml-файлом */ /*! конфигурирование xml-файлом */
Configuration( int argc, const char* const* argv, ObjectIndex* oind, const std::string& xmlfile="" ); Configuration( int argc, const char* const* argv, ObjectIndex* oind, const std::string& xmlfile="" );
/*! устаревший вариант, для поддержки старых проектов */ /*! устаревший вариант, для поддержки старых проектов */
...@@ -184,8 +185,6 @@ namespace UniSetTypes ...@@ -184,8 +185,6 @@ namespace UniSetTypes
std::string getPort( const std::string& port="" ); std::string getPort( const std::string& port="" );
friend class ::SystemGuard;
// friend bool SystemGuard::pingNode();
std::string rootDir; std::string rootDir;
UniXML unixml; UniXML unixml;
......
/* File: This file is part of the UniSet project /* File: This file is part of the UniSet project
* Copyright (C) 2002 Vitaly Lipatov * Copyright (C) 2002 Vitaly Lipatov, Pavel Vainerman
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
......
...@@ -110,8 +110,8 @@ namespace UniSetTypes ...@@ -110,8 +110,8 @@ namespace UniSetTypes
bool tryrlock(); bool tryrlock();
bool trywrlock(); bool trywrlock();
uniset_rwmutex (const uniset_rwmutex& r); uniset_rwmutex (const uniset_rwmutex& r);
const uniset_rwmutex &operator=(const uniset_rwmutex& r); const uniset_rwmutex &operator=(const uniset_rwmutex& r);
inline std::string name(){ return nm; } inline std::string name(){ return nm; }
inline void setName( const std::string& name ){ nm = name; } inline void setName( const std::string& name ){ nm = name; }
......
...@@ -33,7 +33,10 @@ ...@@ -33,7 +33,10 @@
#include "IONotifyController.h" #include "IONotifyController.h"
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
Это абстрактный интерфейс. В чистом виде не используется. Интерфейс для записи в файл и восстановления из файла списка заказчиков по датчикам для
IONotifyController-а (NC).
\note Это абстрактный интерфейс. В чистом виде не используется.
*/ */
class NCRestorer class NCRestorer
{ {
...@@ -99,8 +102,9 @@ class NCRestorer ...@@ -99,8 +102,9 @@ class NCRestorer
}; };
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
/*! /*!
* \brief Реализация сохранения списка заказчиков в xml(работа с файлом проекта) * \brief Реализация сохранения списка заказчиков в xml.
* Реализует сохранение списка заказчиков в xml-файле (версия для работы с файлом проекта). Данный класс работает с глобальным xml-файлом проекта (обычно configure.xml),
поэтому НЕ реализаует функции записи (dump)-а.
*/ */
class NCRestorer_XML: class NCRestorer_XML:
public Restorer_XML, public Restorer_XML,
...@@ -111,7 +115,7 @@ class NCRestorer_XML: ...@@ -111,7 +115,7 @@ class NCRestorer_XML:
/*! /*!
\param fname - файл. (формата uniset-project) \param fname - файл. (формата uniset-project)
*/ */
NCRestorer_XML(const std::string& fname); NCRestorer_XML( const std::string& fname );
/*! /*!
\param fname - файл. (формата uniset-project) \param fname - файл. (формата uniset-project)
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <omniORB4/Naming.hh> #include <omniORB4/Naming.hh>
#include <string> #include <string>
#include "Exceptions.h" #include "Exceptions.h"
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
/*! /*!
* \namespace ORepHelpers * \namespace ORepHelpers
...@@ -63,4 +62,6 @@ namespace ORepHelpers ...@@ -63,4 +62,6 @@ namespace ORepHelpers
std::string BadSymbolsToStr(); std::string BadSymbolsToStr();
} }
// -----------------------------------------------------------------------------------------
#endif #endif
// -----------------------------------------------------------------------------------------
/* File: This file is part of the UniSet project /* File: This file is part of the UniSet project
* Copyright (C) 2002 Vitaly Lipatov * Copyright (C) 2002 Vitaly Lipatov, Pavel Vainerman
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
......
/* File: This file is part of the UniSet project /* File: This file is part of the UniSet project
* Copyright (C) 2002 Vitaly Lipatov * Copyright (C) 2002 Vitaly Lipatov, Pavel Vainerman
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/*! \file /*! \file
* \author Vitaly Lipatov * \author Pavel Vainerman
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#ifndef ObjectIndex_XML_H_ #ifndef ObjectIndex_XML_H_
...@@ -32,11 +32,7 @@ ...@@ -32,11 +32,7 @@
namespace UniSetTypes namespace UniSetTypes
{ {
/*! /*! \todo Проверить функции этого класса на повторную входимость */
\todo Проверить функции этого класса на повторную входимость
\bug При обращении к objectsMap[0].textName срабатывает исключение(видимо какое-то из std).
Требуется дополнительное изучение.
*/
class ObjectIndex_XML: class ObjectIndex_XML:
public ObjectIndex public ObjectIndex
{ {
......
...@@ -70,32 +70,28 @@ ...@@ -70,32 +70,28 @@
/*! Получение ссылки по заданному полному имени (разыменовывание) */ /*! Получение ссылки по заданному полному имени (разыменовывание) */
UniSetTypes::ObjectPtr resolve(const std::string& name, const std::string& NSName="NameService")throw(UniSetTypes::ORepFailed, UniSetTypes::NameNotFound); UniSetTypes::ObjectPtr resolve(const std::string& name, const std::string& NSName="NameService")throw(UniSetTypes::ORepFailed, UniSetTypes::NameNotFound);
// Функции не со строковыми именами, а с идентификаторами
// void setListId( ListObjectId *lst );
/*! Проверка существования и доступности объекта */ /*! Проверка существования и доступности объекта */
bool isExist( UniSetTypes::ObjectPtr oref ); bool isExist( UniSetTypes::ObjectPtr oref );
/*! Проверка существования и доступности объекта */ /*! Проверка существования и доступности объекта */
bool isExist( const std::string& fullName ); bool isExist( const std::string& fullName );
/** /**
@defgroup ORepServiceGroup Группа сервисных функций Репозитория объектов @defgroup ORepServiceGroup Группа сервисных функций Репозитория объектов
@{ @{
*/ */
/*! Тип объекта */ /*! Тип объекта */
enum ObjectType{ enum ObjectType
ObjectRef, /*!< ссылка на объект */ {
Section /*!< подсекция */ ObjectRef, /*!< ссылка на объект */
}; Section /*!< подсекция */
};
//! Получение списка how_many объектов из секции section. //! Получение списка how_many объектов из секции section.
bool list(const std::string& section, UniSetTypes::ListObjectName *ls, unsigned int how_many=300)throw(UniSetTypes::ORepFailed); bool list(const std::string& section, UniSetTypes::ListObjectName *ls, unsigned int how_many=300)throw(UniSetTypes::ORepFailed);
//! Получние списка how_many подсекций из секции in_section. //! Получние списка how_many подсекций из секции in_section.
bool listSections(const std::string& in_section, UniSetTypes::ListObjectName *ls, unsigned int how_many=300)throw(UniSetTypes::ORepFailed); bool listSections(const std::string& in_section, UniSetTypes::ListObjectName *ls, unsigned int how_many=300)throw(UniSetTypes::ORepFailed);
// bool list_at(unsigned int start_pos, const char* section, ListObjectName *ls, unsigned int how_many=300)throw(ORepFailed);
// @} // @}
// end of ORepServiceGroup // end of ORepServiceGroup
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/*! \file /*! \file
* \brief Интерфейс к объекту сохраняющему список заказчиков и сообщений для InfoServer-а * \brief Интерфейс к объекту сохраняющему список заказчиков в файл и умеющему его потом прочитать
* \author Pavel Vainerman * \author Pavel Vainerman
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
Это абстрактный интерфейс. Это абстрактный интерфейс.
Содержит общие для всех xxx_XML интерфейсов функции. Содержит общие для всех xxx_XML интерфейсов функции.
Расчитан на работу с файлом формата файла проекта. Расчитан на работу с файлом формата файла проекта.
Все функции для поддержки старого формата имеют префикс old_xxx
*/ */
class Restorer_XML class Restorer_XML
{ {
...@@ -98,15 +97,6 @@ class Restorer_XML ...@@ -98,15 +97,6 @@ class Restorer_XML
bool getConsumerInfo( UniXML_iterator& it, bool getConsumerInfo( UniXML_iterator& it,
UniSetTypes::ObjectId& cid, UniSetTypes::ObjectId& cnode ); UniSetTypes::ObjectId& cid, UniSetTypes::ObjectId& cnode );
/*! универсальная функция получения информации о заказчике (id и node)
по старому формату файла (<consumer name="/Root/Section/Name" node="xxxx" />)
\return true - если идентификаторы определены
*/
bool old_getConsumerInfo( UniXML_iterator& it,
UniSetTypes::ObjectId& cid, UniSetTypes::ObjectId& cnode );
/*! Функция поиска по текущему уровню (без рекурсии для дочерних узлов) */ /*! Функция поиска по текущему уровню (без рекурсии для дочерних узлов) */
static xmlNode* find_node( UniXML& xml, xmlNode* root, const std::string& nodename, const std::string& nm="" ); static xmlNode* find_node( UniXML& xml, xmlNode* root, const std::string& nodename, const std::string& nm="" );
......
#ifndef SMonitor_H_ #ifndef SMonitor_H_
#define SMonitor_H_ #define SMonitor_H_
// ------------------------------------------------------------------------------------------ // -----------------------------------------------------------------------------
#include <string>
#include <list> #include <list>
#include <UniSetObject_LT.h> #include <UniSetObject_LT.h>
#include "UniSetTypes.h" #include "UniSetTypes.h"
// ------------------------------------------------------------------------------------------ // -----------------------------------------------------------------------------
class SMonitor: class SMonitor:
public UniSetObject_LT public UniSetObject_LT
{ {
...@@ -28,5 +27,6 @@ class SMonitor: ...@@ -28,5 +27,6 @@ class SMonitor:
MyIDList lst; MyIDList lst;
std::string script; std::string script;
}; };
// -----------------------------------------------------------------------------
#endif #endif
// -----------------------------------------------------------------------------
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
*/ */
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
/*! \file /*! \file
* \brief Создатель потоков * \brief Шаблон дла легкого создания потоков (на основе callback).
* \author Pavel Vainerman * \author Pavel Vainerman
*/ */
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/*! \file /*! \file
* \brief Триггер, позволяющий красиво засекать изменения во флаге * \brief Триггер, позволяющий красиво засекать изменения во флаге
* \author Vitaly Lipatov * \author Vitaly Lipatov
*/ */
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#ifndef UNITRIGGER_H_ #ifndef UNITRIGGER_H_
......
...@@ -52,19 +52,22 @@ ...@@ -52,19 +52,22 @@
... ...
MyClass rec; MyClass rec;
// Создание // Создание
TriggerAND<MyClass, int> tr_and(&rec, &MyClass::out); TriggerAND<MyClass, int> tr(&rec, &MyClass::out);
// Добавление 'входов' // Добавление 'входов' (формирование списка входов)
tr_and.add(1,false); tr.add(1,false);
tr_and.add(2,true); tr.add(2,true);
tr_and.add(3,true); tr.add(3,true);
tr_and.add(4,true); tr.add(4,true);
... ...
// Использование
// подаёт на вход N1 "1" // Использование:
// подаём на вход N1 единицу
// после чего, при изменении состояния 'выхода' будет вызвана функция MyClass::out, в которой производится // после чего, при изменении состояния 'выхода' будет вызвана функция MyClass::out, в которой производится
// фактическая обработка 'изменения состояния' // фактическая обработка 'изменения состояния'
tr_and.commit(1,true);
tr.commit(1,true);
\endcode \endcode
*/ */
......
...@@ -52,19 +52,22 @@ ...@@ -52,19 +52,22 @@
... ...
MyClass rec; MyClass rec;
// Создание // Создание
TriggerOR<MyClass, int> tr_or(&rec, &MyClass::out); TriggerOR<MyClass, int> tr(&rec, &MyClass::out);
// Добавление 'входов' // Добавление 'входов'
tr_or.add(1,true); tr.add(1,true);
tr_or.add(2,false); tr.add(2,false);
tr_or.add(3,false); tr.add(3,false);
tr_or.add(4,false); tr.add(4,false);
... ...
// Использование
// подаёт на вход N1 "0" // Использование:
// подаём на вход N1 "0"
// после чего, при изменении состояния 'выхода' будет вызвана функция MyClass::out, в которой производится // после чего, при изменении состояния 'выхода' будет вызвана функция MyClass::out, в которой производится
// фактическая обработка 'изменения состояния' // фактическая обработка 'изменения состояния'
tr_or.commit(1,false);
tr.commit(1,false);
\endcode \endcode
*/ */
template<class Caller, typename InputType> template<class Caller, typename InputType>
......
...@@ -59,19 +59,26 @@ ...@@ -59,19 +59,26 @@
... ...
MyClass rec; MyClass rec;
// Создание // Создание:
TriggerOutput<MyClass,int,int> tr_out(&rec, &MyClass::out); TriggerOutput<MyClass,int,int> tr_out(&rec, &MyClass::out);
// формируем OUT триггер с двумя 'выходами' // формируем OUT триггер с двумя 'выходами'
TriggerOutput<MyClass,int,int> tr_out(&rec, &MyClass::out);
tr_out.add(1,0); tr_out.add(1,0);
tr_out.add(2,0); tr_out.add(2,0);
... ...
// Использование // Использование:
// подаём сперва на первый 'выход' значение, второй должен стать в "0", // подаём сперва на первый 'выход' значение, второй должен стать в "0",
// потом на другой... // потом на другой...
tr_out.set(1,4); tr_out.set(1,4);
cout << ( tr_out.getState(2) !=0 ? "FAIL" : "OK" ) << endl;
tr_out.set(2,3); tr_out.set(2,3);
cout << ( tr_out.getState(1) !=0 ? "FAIL" : "OK" ) << endl;
\endcode \endcode
*/ */
template<class Caller, typename OutIdType, typename ValueType> template<class Caller, typename OutIdType, typename ValueType>
......
...@@ -21,7 +21,7 @@ using namespace std; ...@@ -21,7 +21,7 @@ using namespace std;
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
/* This is for RTS control (through GPIO) */ /* This is for RTS control (through GPIO) */
#define GPIO_BA 0xF000 #define GPIO_BA 0xF000
static void gpio_low_out_en(char gpio_num) static void gpio_low_out_en( char gpio_num )
{ {
unsigned long val; unsigned long val;
...@@ -31,7 +31,7 @@ static void gpio_low_out_en(char gpio_num) ...@@ -31,7 +31,7 @@ static void gpio_low_out_en(char gpio_num)
outl(val, GPIO_BA + 4); outl(val, GPIO_BA + 4);
} }
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
static void gpio_low_set_value(char gpio_num, char value) static void gpio_low_set_value( char gpio_num, char value )
{ {
unsigned long val; unsigned long val;
...@@ -59,7 +59,7 @@ static void setRTS(int fd, int state) ...@@ -59,7 +59,7 @@ static void setRTS(int fd, int state)
ioctl(fd, TIOCMSET, &status); ioctl(fd, TIOCMSET, &status);
} }
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
ComPort485F::ComPort485F( string dev, int gpio_num, bool tmit_ctrl ): ComPort485F::ComPort485F( const string& dev, int gpio_num, bool tmit_ctrl ):
ComPort(dev,false), ComPort(dev,false),
gpio_num(gpio_num), gpio_num(gpio_num),
tmit_ctrl_on(tmit_ctrl) tmit_ctrl_on(tmit_ctrl)
...@@ -73,7 +73,7 @@ ComPort485F::ComPort485F( string dev, int gpio_num, bool tmit_ctrl ): ...@@ -73,7 +73,7 @@ ComPort485F::ComPort485F( string dev, int gpio_num, bool tmit_ctrl ):
} }
} }
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
void ComPort485F::setTimeout(int timeout) void ComPort485F::setTimeout( int timeout )
{ {
tout_msec = timeout / 1000; tout_msec = timeout / 1000;
ComPort::setTimeout(timeout); ComPort::setTimeout(timeout);
......
...@@ -125,55 +125,6 @@ bool Restorer_XML::getConsumerInfo( UniXML_iterator& it, ...@@ -125,55 +125,6 @@ bool Restorer_XML::getConsumerInfo( UniXML_iterator& it,
return true; return true;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
bool Restorer_XML::old_getConsumerInfo( UniXML_iterator& it,
ObjectId& cid, ObjectId& cnode )
{
string cname(it.getProp("name"));
if( cname.empty() )
{
if( ulog.is_warn() )
ulog.warn() << "(Restorer_XML:old_getConsumerInfo): не указано имя заказчика... пропускаем..." << endl;
return false;
}
cid = conf->oind->getIdByName(cname);
if( cid == UniSetTypes::DefaultObjectId )
{
if( ulog.is_crit() )
ulog.crit() << "(Restorer_XML:old_getConsumerInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР заказчика -->"
<< cname << endl;
return false;
}
string cnodename(it.getProp("node"));
if( !cnodename.empty() )
{
string virtnode = conf->oind->getVirtualNodeName(cnodename);
if( virtnode.empty() )
cnodename = conf->oind->mkFullNodeName(cnodename,cnodename);
cnode = conf->oind->getIdByName(cnodename);
}
else
cnode = conf->getLocalNode();
if( cnode == UniSetTypes::DefaultObjectId )
{
if( ulog.is_crit() )
ulog.crit() << "(Restorer_XML:old_getConsumerInfo): НЕ НАЙДЕН ИДЕНТИФИКАТОР узла -->"
<< cnodename << endl;
return false;
}
if( ulog.is_info() )
{
ulog.info() << "(Restorer_XML:old_getConsumerInfo): "
<< cname << ":" << cnodename << endl;
}
return true;
}
// -----------------------------------------------------------------------------
bool Restorer_XML::check_list_item( UniXML_iterator& it ) bool Restorer_XML::check_list_item( UniXML_iterator& it )
{ {
return UniSetTypes::check_filter(it,i_filterField,i_filterValue); return UniSetTypes::check_filter(it,i_filterField,i_filterValue);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment