1*3dcfd546SHarvey Wu #pragma once
2*3dcfd546SHarvey Wu 
3*3dcfd546SHarvey Wu #include <nlohmann/json.hpp>
4*3dcfd546SHarvey Wu 
5*3dcfd546SHarvey Wu #include <string>
6*3dcfd546SHarvey Wu 
7*3dcfd546SHarvey Wu using json = nlohmann::json;
8*3dcfd546SHarvey Wu 
9*3dcfd546SHarvey Wu /**
10*3dcfd546SHarvey Wu  * Given json data, validate the minimum.
11*3dcfd546SHarvey Wu  * The json data must be valid, and must contain two keys:
12*3dcfd546SHarvey Wu  * sensors, and zones.
13*3dcfd546SHarvey Wu  *
14*3dcfd546SHarvey Wu  * @param[in] data - the json data.
15*3dcfd546SHarvey Wu  * @return nothing - throws exceptions on invalid bits.
16*3dcfd546SHarvey Wu  */
17*3dcfd546SHarvey Wu void validateJson(const json& data);
18*3dcfd546SHarvey Wu 
19*3dcfd546SHarvey Wu /**
20*3dcfd546SHarvey Wu  * Given a json configuration file, parse it.
21*3dcfd546SHarvey Wu  *
22*3dcfd546SHarvey Wu  * There must be at least one sensor, and one zone.
23*3dcfd546SHarvey Wu  * That one zone must contain at least one PID.
24*3dcfd546SHarvey Wu  *
25*3dcfd546SHarvey Wu  * @param[in] path - path to the configuration
26*3dcfd546SHarvey Wu  * @return the json data.
27*3dcfd546SHarvey Wu  */
28*3dcfd546SHarvey Wu json parseValidateJson(const std::string& path);
29