# libasa

Библиотека для управления аналоговым сигнатурным анализатором. Позволяет подключиться к серверно-аппаратной части, управлять настройками оборудования и получать сигнатуры.

## Инструкция для Linux

### 1. Установка libcurl, cmake

Для сборки/установки под Linux понадобится CMake и CURL. Если они не установлены, смотрите инструкцию по установке в папке `deps/linux`.

### 2. Сборка и установка

Обратите внимание, что пользователь, который собирает библиотеку, должен быть владельцем каталога проекта (и всех подкаталогов/файлов). В файловой системе, в которой лежит проект, должна быть возможность менять права доступа к файлам (это нужно, чтобы запустить build-скрипты для зависимых библиотек).

Для сборки создайте отдельную папку в папке проекта:
```
mkdir build
cd build
```
Сгенерируйте make-файлы в эту папку:
```
cmake ..
```

Соберите весь проект и установите собранную библиотеку:
```
make
sudo make install
```

Готово. В папке `build` появится библиотека `libasa.so` и исполняемый файл `asaexample`. Библиотека `libasa.so` также появится в системных путях `/usr/local/lib` и будет доступна для линковки из других проектов.

Иногда нужно собрать библиотеку без установки в систему, для этого выполните:
```
make
```
Запуск:
```
export LD_LIBRARY_PATH=/usr/local/lib
./asaexample
```


## Инструкция для Windows

Для сборки под Windows понадобятся CMake, MinGW (или msvc) и Redistributable Packages 2013. Для генерации файлов проектом удобно использовать CMake Gui https://cmake.org/download/:

* В CMake Gui в поле "Where is the source code" указать полный путь до папки проекта md_asa_lib.

* В CMake Gui в поле  "Where to build the binaries" указать полный путь до каталога, куда положить сборку. Например, это может быть папка `build` в каталоге проекта.

* В CMake Gui нажать кнопку "Configure". В новом окне программа предложит выбрать генератор проекта. Можно выбрать либо MinGW, либо Visual Studio.

Далее, в зависимости от желаемого типа проекта:

*Для Visual Studio 2013*

* Выбрать Visual Studio 2013, нажать "Finish". Важно выбирать именно Visual Studio 2013, а не, например, Visual Studio 2013 x64! Сборка работает корректно только для 32 бит.

* Нажать "Generate", затем "Open project".

* Появится окно Visual Studio с проектом. Дальше собрать кнопкой "Build", как обычный MSVC Release проект.

* Готово. Можно запускать собранный пример `asaexample.exe`. Библиотеки `asa.dll`, `asa.lib`, `libxmlrpc.dll`, `libxmlrpc_client.dll`, `libxmlrpc_util.dll`, `libxmlrpc_xmlparse.dll`, `libxmlrpc_xmltok.dll` рядом.

*Для MinGW*

* Выбрать MinGW, нажать "Finish".

* Нажать кнопку "Generate".

* Открыть консоль, встать в директорию со сгенерированными файлами.

* Выполнить сборку mingw (путь до mingw должен быть в системных путях):
  
    ```
    mingw32-make
    ```
    
* Готово. Можно запускать пример `asaexample.exe`; библиотеки `asa.dll`, `asa.lib`, `libxmlrpc.dll`, `libxmlrpc_client.dll`, `libxmlrpc_util.dll`, `libxmlrpc_xmlparse.dll`, `libxmlrpc_xmltok.dll` рядом (при сборке с MinGW - `libasa.dll`; статической библиотеки .lib нет).

## Дополнительные инструкции для Windows
Проект использует библиотеку wininet и другие стандартные для Windows библиотеки. Распространяемые пакеты MSVC либо сам MSVC должны быть установлены.

Библиотеки XMLRPC лежат в директории проекта уже собранные. Если по каким-то причинам они не подошли вашей системе (битность, "сильно" другая версия Windows и пр.), их можно пересобрать. Для этого зайти в каталог `vendor\xmlrpc-c-1.51.06\Windows\Project\vs2010express\` и открыть решение `vs2010express.sln`. Visual Studio старше 2010 версии предложит "портирвать" эти файлы в новый формат - нужно согласиться с этим предложением. Затем собрать. В зависимости от того, используется ли сборка md_asa_lib MinGW или MSVC, понадобятся статические или динамические библиотеки xmlrpc - лучше собрать обе. Для этого в configuration manager выбрать сборку Static Release, собрать, затем выбрать сборку DLL Release и собрать её. 

