dhconfigsdk.h 847 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7172 7173 7174 7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294 7295 7296 7297 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7412 7413 7414 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 7475 7476 7477 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 7577 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626 7627 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7880 7881 7882 7883 7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8480 8481 8482 8483 8484 8485 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8600 8601 8602 8603 8604 8605 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8720 8721 8722 8723 8724 8725 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 8738 8739 8740 8741 8742 8743 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8840 8841 8842 8843 8844 8845 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8880 8881 8882 8883 8884 8885 8886 8887 8888 8889 8890 8891 8892 8893 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 8904 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 8958 8959 8960 8961 8962 8963 8964 8965 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9013 9014 9015 9016 9017 9018 9019 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9080 9081 9082 9083 9084 9085 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9103 9104 9105 9106 9107 9108 9109 9110 9111 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9134 9135 9136 9137 9138 9139 9140 9141 9142 9143 9144 9145 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 9170 9171 9172 9173 9174 9175 9176 9177 9178 9179 9180 9181 9182 9183 9184 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 9224 9225 9226 9227 9228 9229 9230 9231 9232 9233 9234 9235 9236 9237 9238 9239 9240 9241 9242 9243 9244 9245 9246 9247 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9284 9285 9286 9287 9288 9289 9290 9291 9292 9293 9294 9295 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 9320 9321 9322 9323 9324 9325 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9349 9350 9351 9352 9353 9354 9355 9356 9357 9358 9359 9360 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9392 9393 9394 9395 9396 9397 9398 9399 9400 9401 9402 9403 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 9416 9417 9418 9419 9420 9421 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 9506 9507 9508 9509 9510 9511 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 9570 9571 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9638 9639 9640 9641 9642 9643 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 9656 9657 9658 9659 9660 9661 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 9674 9675 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9752 9753 9754 9755 9756 9757 9758 9759 9760 9761 9762 9763 9764 9765 9766 9767 9768 9769 9770 9771 9772 9773 9774 9775 9776 9777 9778 9779 9780 9781 9782 9783 9784 9785 9786 9787 9788 9789 9790 9791 9792 9793 9794 9795 9796 9797 9798 9799 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9840 9841 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 9901 9902 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 9914 9915 9916 9917 9918 9919 9920 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 10000 10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 10011 10012 10013 10014 10015 10016 10017 10018 10019 10020 10021 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 10043 10044 10045 10046 10047 10048 10049 10050 10051 10052 10053 10054 10055 10056 10057 10058 10059 10060 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 10076 10077 10078 10079 10080 10081 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 10092 10093 10094 10095 10096 10097 10098 10099 10100 10101 10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 10123 10124 10125 10126 10127 10128 10129 10130 10131 10132 10133 10134 10135 10136 10137 10138 10139 10140 10141 10142 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 10159 10160 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 10172 10173 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10255 10256 10257 10258 10259 10260 10261 10262 10263 10264 10265 10266 10267 10268 10269 10270 10271 10272 10273 10274 10275 10276 10277 10278 10279 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 10290 10291 10292 10293 10294 10295 10296 10297 10298 10299 10300 10301 10302 10303 10304 10305 10306 10307 10308 10309 10310 10311 10312 10313 10314 10315 10316 10317 10318 10319 10320 10321 10322 10323 10324 10325 10326 10327 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10478 10479 10480 10481 10482 10483 10484 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 10501 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 10512 10513 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 10530 10531 10532 10533 10534 10535 10536 10537 10538 10539 10540 10541 10542 10543 10544 10545 10546 10547 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10558 10559 10560 10561 10562 10563 10564 10565 10566 10567 10568 10569 10570 10571 10572 10573 10574 10575 10576 10577 10578 10579 10580 10581 10582 10583 10584 10585 10586 10587 10588 10589 10590 10591 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 10610 10611 10612 10613 10614 10615 10616 10617 10618 10619 10620 10621 10622 10623 10624 10625 10626 10627 10628 10629 10630 10631 10632 10633 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10652 10653 10654 10655 10656 10657 10658 10659 10660 10661 10662 10663 10664 10665 10666 10667 10668 10669 10670 10671 10672 10673 10674 10675 10676 10677 10678 10679 10680 10681 10682 10683 10684 10685 10686 10687 10688 10689 10690 10691 10692 10693 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 10705 10706 10707 10708 10709 10710 10711 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734 10735 10736 10737 10738 10739 10740 10741 10742 10743 10744 10745 10746 10747 10748 10749 10750 10751 10752 10753 10754 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764 10765 10766 10767 10768 10769 10770 10771 10772 10773 10774 10775 10776 10777 10778 10779 10780 10781 10782 10783 10784 10785 10786 10787 10788 10789 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 10802 10803 10804 10805 10806 10807 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 10820 10821 10822 10823 10824 10825 10826 10827 10828 10829 10830 10831 10832 10833 10834 10835 10836 10837 10838 10839 10840 10841 10842 10843 10844 10845 10846 10847 10848 10849 10850 10851 10852 10853 10854 10855 10856 10857 10858 10859 10860 10861 10862 10863 10864 10865 10866 10867 10868 10869 10870 10871 10872 10873 10874 10875 10876 10877 10878 10879 10880 10881 10882 10883 10884 10885 10886 10887 10888 10889 10890 10891 10892 10893 10894 10895 10896 10897 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 10916 10917 10918 10919 10920 10921 10922 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10934 10935 10936 10937 10938 10939 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10958 10959 10960 10961 10962 10963 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985 10986 10987 10988 10989 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 11036 11037 11038 11039 11040 11041 11042 11043 11044 11045 11046 11047 11048 11049 11050 11051 11052 11053 11054 11055 11056 11057 11058 11059 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11070 11071 11072 11073 11074 11075 11076 11077 11078 11079 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 11090 11091 11092 11093 11094 11095 11096 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11108 11109 11110 11111 11112 11113 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 11156 11157 11158 11159 11160 11161 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11174 11175 11176 11177 11178 11179 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293 11294 11295 11296 11297 11298 11299 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 11396 11397 11398 11399 11400 11401 11402 11403 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11414 11415 11416 11417 11418 11419 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11438 11439 11440 11441 11442 11443 11444 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 11462 11463 11464 11465 11466 11467 11468 11469 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 11480 11481 11482 11483 11484 11485 11486 11487 11488 11489 11490 11491 11492 11493 11494 11495 11496 11497 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 11516 11517 11518 11519 11520 11521 11522 11523 11524 11525 11526 11527 11528 11529 11530 11531 11532 11533 11534 11535 11536 11537 11538 11539 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 11570 11571 11572 11573 11574 11575 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 11606 11607 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 11636 11637 11638 11639 11640 11641 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11654 11655 11656 11657 11658 11659 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 11756 11757 11758 11759 11760 11761 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11774 11775 11776 11777 11778 11779 11780 11781 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 11810 11811 11812 11813 11814 11815 11816 11817 11818 11819 11820 11821 11822 11823 11824 11825 11826 11827 11828 11829 11830 11831 11832 11833 11834 11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 11849 11850 11851 11852 11853 11854 11855 11856 11857 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 11876 11877 11878 11879 11880 11881 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11894 11895 11896 11897 11898 11899 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 11910 11911 11912 11913 11914 11915 11916 11917 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11948 11949 11950 11951 11952 11953 11954 11955 11956 11957 11958 11959 11960 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 11971 11972 11973 11974 11975 11976 11977 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 11996 11997 11998 11999 12000 12001 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 12013 12014 12015 12016 12017 12018 12019 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 12038 12039 12040 12041 12042 12043 12044 12045 12046 12047 12048 12049 12050 12051 12052 12053 12054 12055 12056 12057 12058 12059 12060 12061 12062 12063 12064 12065 12066 12067 12068 12069 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12134 12135 12136 12137 12138 12139 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 12206 12207 12208 12209 12210 12211 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 12224 12225 12226 12227 12228 12229 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 12242 12243 12244 12245 12246 12247 12248 12249 12250 12251 12252 12253 12254 12255 12256 12257 12258 12259 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 12272 12273 12274 12275 12276 12277 12278 12279 12280 12281 12282 12283 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 12314 12315 12316 12317 12318 12319 12320 12321 12322 12323 12324 12325 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 12356 12357 12358 12359 12360 12361 12362 12363 12364 12365 12366 12367 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 12398 12399 12400 12401 12402 12403 12404 12405 12406 12407 12408 12409 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 12422 12423 12424 12425 12426 12427 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 12440 12441 12442 12443 12444 12445 12446 12447 12448 12449 12450 12451 12452 12453 12454 12455 12456 12457 12458 12459 12460 12461 12462 12463 12464 12465 12466 12467 12468 12469 12470 12471 12472 12473 12474 12475 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12531 12532 12533 12534 12535 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 12642 12643 12644 12645 12646 12647 12648 12649 12650 12651 12652 12653 12654 12655 12656 12657 12658 12659 12660 12661 12662 12663 12664 12665 12666 12667 12668 12669 12670 12671 12672 12673 12674 12675 12676 12677 12678 12679 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12710 12711 12712 12713 12714 12715 12716 12717 12718 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 12756 12757 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 12770 12771 12772 12773 12774 12775 12776 12777 12778 12779 12780 12781 12782 12783 12784 12785 12786 12787 12788 12789 12790 12791 12792 12793 12794 12795 12796 12797 12798 12799 12800 12801 12802 12803 12804 12805 12806 12807 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 12818 12819 12820 12821 12822 12823 12824 12825 12826 12827 12828 12829 12830 12831 12832 12833 12834 12835 12836 12837 12838 12839 12840 12841 12842 12843 12844 12845 12846 12847 12848 12849 12850 12851 12852 12853 12854 12855 12856 12857 12858 12859 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 12873 12874 12875 12876 12877 12878 12879 12880 12881 12882 12883 12884 12885 12886 12887 12888 12889 12890 12891 12892 12893 12894 12895 12896 12897 12898 12899 12900 12901 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 12914 12915 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12932 12933 12934 12935 12936 12937 12938 12939 12940 12941 12942 12943 12944 12945 12946 12947 12948 12949 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 12962 12963 12964 12965 12966 12967 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12979 12980 12981 12982 12983 12984 12985 12986 12987 12988 12989 12990 12991 12992 12993 12994 12995 12996 12997 12998 12999 13000 13001 13002 13003 13004 13005 13006 13007 13008 13009 13010 13011 13012 13013 13014 13015 13016 13017 13018 13019 13020 13021 13022 13023 13024 13025 13026 13027 13028 13029 13030 13031 13032 13033 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 13045 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 13086 13087 13088 13089 13090 13091 13092 13093 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 13106 13107 13108 13109 13110 13111 13112 13113 13114 13115 13116 13117 13118 13119 13120 13121 13122 13123 13124 13125 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13141 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 13154 13155 13156 13157 13158 13159 13160 13161 13162 13163 13164 13165 13166 13167 13168 13169 13170 13171 13172 13173 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 13250 13251 13252 13253 13254 13255 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13286 13287 13288 13289 13290 13291 13292 13293 13294 13295 13296 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 13308 13309 13310 13311 13312 13313 13314 13315 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 13394 13395 13396 13397 13398 13399 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 13429 13430 13431 13432 13433 13434 13435 13436 13437 13438 13439 13440 13441 13442 13443 13444 13445 13446 13447 13448 13449 13450 13451 13452 13453 13454 13455 13456 13457 13458 13459 13460 13461 13462 13463 13464 13465 13466 13467 13468 13469 13470 13471 13472 13473 13474 13475 13476 13477 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 13490 13491 13492 13493 13494 13495 13496 13497 13498 13499 13500 13501 13502 13503 13504 13505 13506 13507 13508 13509 13510 13511 13512 13513 13514 13515 13516 13517 13518 13519 13520 13521 13522 13523 13524 13525 13526 13527 13528 13529 13530 13531 13532 13533 13534 13535 13536 13537 13538 13539 13540 13541 13542 13543 13544 13545 13546 13547 13548 13549 13550 13551 13552 13553 13554 13555 13556 13557 13558 13559 13560 13561 13562 13563 13564 13565 13566 13567 13568 13569 13570 13571 13572 13573 13574 13575 13576 13577 13578 13579 13580 13581 13582 13583 13584 13585 13586 13587 13588 13589 13590 13591 13592 13593 13594 13595 13596 13597 13598 13599 13600 13601 13602 13603 13604 13605 13606 13607 13608 13609 13610 13611 13612 13613 13614 13615 13616 13617 13618 13619 13620 13621 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 13639 13640 13641 13642 13643 13644 13645 13646 13647 13648 13649 13650 13651 13652 13653 13654 13655 13656 13657 13658 13659 13660 13661 13662 13663 13664 13665 13666 13667 13668 13669 13670 13671 13672 13673 13674 13675 13676 13677 13678 13679 13680 13681 13682 13683 13684 13685 13686 13687 13688 13689 13690 13691 13692 13693 13694 13695 13696 13697 13698 13699 13700 13701 13702 13703 13704 13705 13706 13707 13708 13709 13710 13711 13712 13713 13714 13715 13716 13717 13718 13719 13720 13721 13722 13723 13724 13725 13726 13727 13728 13729 13730 13731 13732 13733 13734 13735 13736 13737 13738 13739 13740 13741 13742 13743 13744 13745 13746 13747 13748 13749 13750 13751 13752 13753 13754 13755 13756 13757 13758 13759 13760 13761 13762 13763 13764 13765 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 13778 13779 13780 13781 13782 13783 13784 13785 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13796 13797 13798 13799 13800 13801 13802 13803 13804 13805 13806 13807 13808 13809 13810 13811 13812 13813 13814 13815 13816 13817 13818 13819 13820 13821 13822 13823 13824 13825 13826 13827 13828 13829 13830 13831 13832 13833 13834 13835 13836 13837 13838 13839 13840 13841 13842 13843 13844 13845 13846 13847 13848 13849 13850 13851 13852 13853 13854 13855 13856 13857 13858 13859 13860 13861 13862 13863 13864 13865 13866 13867 13868 13869 13870 13871 13872 13873 13874 13875 13876 13877 13878 13879 13880 13881 13882 13883 13884 13885 13886 13887 13888 13889 13890 13891 13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 13904 13905 13906 13907 13908 13909 13910 13911 13912 13913 13914 13915 13916 13917 13918 13919 13920 13921 13922 13923 13924 13925 13926 13927 13928 13929 13930 13931 13932 13933 13934 13935 13936 13937 13938 13939 13940 13941 13942 13943 13944 13945 13946 13947 13948 13949 13950 13951 13952 13953 13954 13955 13956 13957 13958 13959 13960 13961 13962 13963 13964 13965 13966 13967 13968 13969 13970 13971 13972 13973 13974 13975 13976 13977 13978 13979 13980 13981 13982 13983 13984 13985 13986 13987 13988 13989 13990 13991 13992 13993 13994 13995 13996 13997 13998 13999 14000 14001 14002 14003 14004 14005 14006 14007 14008 14009 14010 14011 14012 14013 14014 14015 14016 14017 14018 14019 14020 14021 14022 14023 14024 14025 14026 14027 14028 14029 14030 14031 14032 14033 14034 14035 14036 14037 14038 14039 14040 14041 14042 14043 14044 14045 14046 14047 14048 14049 14050 14051 14052 14053 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 14066 14067 14068 14069 14070 14071 14072 14073 14074 14075 14076 14077 14078 14079 14080 14081 14082 14083 14084 14085 14086 14087 14088 14089 14090 14091 14092 14093 14094 14095 14096 14097 14098 14099 14100 14101 14102 14103 14104 14105 14106 14107 14108 14109 14110 14111 14112 14113 14114 14115 14116 14117 14118 14119 14120 14121 14122 14123 14124 14125 14126 14127 14128 14129 14130 14131 14132 14133 14134 14135 14136 14137 14138 14139 14140 14141 14142 14143 14144 14145 14146 14147 14148 14149 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 14166 14167 14168 14169 14170 14171 14172 14173 14174 14175 14176 14177 14178 14179 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 14192 14193 14194 14195 14196 14197 14198 14199 14200 14201 14202 14203 14204 14205 14206 14207 14208 14209 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 14222 14223 14224 14225 14226 14227 14228 14229 14230 14231 14232 14233 14234 14235 14236 14237 14238 14239 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 14252 14253 14254 14255 14256 14257 14258 14259 14260 14261 14262 14263 14264 14265 14266 14267 14268 14269 14270 14271 14272 14273 14274 14275 14276 14277 14278 14279 14280 14281 14282 14283 14284 14285 14286 14287 14288 14289 14290 14291 14292 14293 14294 14295 14296 14297 14298 14299 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 14312 14313 14314 14315 14316 14317 14318 14319 14320 14321 14322 14323 14324 14325 14326 14327 14328 14329 14330 14331 14332 14333 14334 14335 14336 14337 14338 14339 14340 14341 14342 14343 14344 14345 14346 14347 14348 14349 14350 14351 14352 14353 14354 14355 14356 14357 14358 14359 14360 14361 14362 14363 14364 14365 14366 14367 14368 14369 14370 14371 14372 14373 14374 14375 14376 14377 14378 14379 14380 14381 14382 14383 14384 14385 14386 14387 14388 14389 14390 14391 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 14402 14403 14404 14405 14406 14407 14408 14409 14410 14411 14412 14413 14414 14415 14416 14417 14418 14419 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 14432 14433 14434 14435 14436 14437 14438 14439 14440 14441 14442 14443 14444 14445 14446 14447 14448 14449 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 14462 14463 14464 14465 14466 14467 14468 14469 14470 14471 14472 14473 14474 14475 14476 14477 14478 14479 14480 14481 14482 14483 14484 14485 14486 14487 14488 14489 14490 14491 14492 14493 14494 14495 14496 14497 14498 14499 14500 14501 14502 14503 14504 14505 14506 14507 14508 14509 14510 14511 14512 14513 14514 14515 14516 14517 14518 14519 14520 14521 14522 14523 14524 14525 14526 14527 14528 14529 14530 14531 14532 14533 14534 14535 14536 14537 14538 14539 14540 14541 14542 14543 14544 14545 14546 14547 14548 14549 14550 14551 14552 14553 14554 14555 14556 14557 14558 14559 14560 14561 14562 14563 14564 14565 14566 14567 14568 14569 14570 14571 14572 14573 14574 14575 14576 14577 14578 14579 14580 14581 14582 14583 14584 14585 14586 14587 14588 14589 14590 14591 14592 14593 14594 14595 14596 14597 14598 14599 14600 14601 14602 14603 14604 14605 14606 14607 14608 14609 14610 14611 14612 14613 14614 14615 14616 14617 14618 14619 14620 14621 14622 14623 14624 14625 14626 14627 14628 14629 14630 14631 14632 14633 14634 14635 14636 14637 14638 14639 14640 14641 14642 14643 14644 14645 14646 14647 14648 14649 14650 14651 14652 14653 14654 14655 14656 14657 14658 14659 14660 14661 14662 14663 14664 14665 14666 14667 14668 14669 14670 14671 14672 14673 14674 14675 14676 14677 14678 14679 14680 14681 14682 14683 14684 14685 14686 14687 14688 14689 14690 14691 14692 14693 14694 14695 14696 14697 14698 14699 14700 14701 14702 14703 14704 14705 14706 14707 14708 14709 14710 14711 14712 14713 14714 14715 14716 14717 14718 14719 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 14732 14733 14734 14735 14736 14737 14738 14739 14740 14741 14742 14743 14744 14745 14746 14747 14748 14749 14750 14751 14752 14753 14754 14755 14756 14757 14758 14759 14760 14761 14762 14763 14764 14765 14766 14767 14768 14769 14770 14771 14772 14773 14774 14775 14776 14777 14778 14779 14780 14781 14782 14783 14784 14785 14786 14787 14788 14789 14790 14791 14792 14793 14794 14795 14796 14797 14798 14799 14800 14801 14802 14803 14804 14805 14806 14807 14808 14809 14810 14811 14812 14813 14814 14815 14816 14817 14818 14819 14820 14821 14822 14823 14824 14825 14826 14827 14828 14829 14830 14831 14832 14833 14834 14835 14836 14837 14838 14839 14840 14841 14842 14843 14844 14845 14846 14847 14848 14849 14850 14851 14852 14853 14854 14855 14856 14857 14858 14859 14860 14861 14862 14863 14864 14865 14866 14867 14868 14869 14870 14871 14872 14873 14874 14875 14876 14877 14878 14879 14880 14881 14882 14883 14884 14885 14886 14887 14888 14889 14890 14891 14892 14893 14894 14895 14896 14897 14898 14899 14900 14901 14902 14903 14904 14905 14906 14907 14908 14909 14910 14911 14912 14913 14914 14915 14916 14917 14918 14919 14920 14921 14922 14923 14924 14925 14926 14927 14928 14929 14930 14931 14932 14933 14934 14935 14936 14937 14938 14939 14940 14941 14942 14943 14944 14945 14946 14947 14948 14949 14950 14951 14952 14953 14954 14955 14956 14957 14958 14959 14960 14961 14962 14963 14964 14965 14966 14967 14968 14969 14970 14971 14972 14973 14974 14975 14976 14977 14978 14979 14980 14981 14982 14983 14984 14985 14986 14987 14988 14989 14990 14991 14992 14993 14994 14995 14996 14997 14998 14999 15000 15001 15002 15003 15004 15005 15006 15007 15008 15009 15010 15011 15012 15013 15014 15015 15016 15017 15018 15019 15020 15021 15022 15023 15024 15025 15026 15027 15028 15029 15030 15031 15032 15033 15034 15035 15036 15037 15038 15039 15040 15041 15042 15043 15044 15045 15046 15047 15048 15049 15050 15051 15052 15053 15054 15055 15056 15057 15058 15059 15060 15061 15062 15063 15064 15065 15066 15067 15068 15069 15070 15071 15072 15073 15074 15075 15076 15077 15078 15079 15080 15081 15082 15083 15084 15085 15086 15087 15088 15089 15090 15091 15092 15093 15094 15095 15096 15097 15098 15099 15100 15101 15102 15103 15104 15105 15106 15107 15108 15109 15110 15111 15112 15113 15114 15115 15116 15117 15118 15119 15120 15121 15122 15123 15124 15125 15126 15127 15128 15129 15130 15131 15132 15133 15134 15135 15136 15137 15138 15139 15140 15141 15142 15143 15144 15145 15146 15147 15148 15149 15150 15151 15152 15153 15154 15155 15156 15157 15158 15159 15160 15161 15162 15163 15164 15165 15166 15167 15168 15169 15170 15171 15172 15173 15174 15175 15176 15177 15178 15179 15180 15181 15182 15183 15184 15185 15186 15187 15188 15189 15190 15191 15192 15193 15194 15195 15196 15197 15198 15199 15200 15201 15202 15203 15204 15205 15206 15207 15208 15209 15210 15211 15212 15213 15214 15215 15216 15217 15218 15219 15220 15221 15222 15223 15224 15225 15226 15227 15228 15229 15230 15231 15232 15233 15234 15235 15236 15237 15238 15239 15240 15241 15242 15243 15244 15245 15246 15247 15248 15249 15250 15251 15252 15253 15254 15255 15256 15257 15258 15259 15260 15261 15262 15263 15264 15265 15266 15267 15268 15269 15270 15271 15272 15273 15274 15275 15276 15277 15278 15279 15280 15281 15282 15283 15284 15285 15286 15287 15288 15289 15290 15291 15292 15293 15294 15295 15296 15297 15298 15299 15300 15301 15302 15303 15304 15305 15306 15307 15308 15309 15310 15311 15312 15313 15314 15315 15316 15317 15318 15319 15320 15321 15322 15323 15324 15325 15326 15327 15328 15329 15330 15331 15332 15333 15334 15335 15336 15337 15338 15339 15340 15341 15342 15343 15344 15345 15346 15347 15348 15349 15350 15351 15352 15353 15354 15355 15356 15357 15358 15359 15360 15361 15362 15363 15364 15365 15366 15367 15368 15369 15370 15371 15372 15373 15374 15375 15376 15377 15378 15379 15380 15381 15382 15383 15384 15385 15386 15387 15388 15389 15390 15391 15392 15393 15394 15395 15396 15397 15398 15399 15400 15401 15402 15403 15404 15405 15406 15407 15408 15409 15410 15411 15412 15413 15414 15415 15416 15417 15418 15419 15420 15421 15422 15423 15424 15425 15426 15427 15428 15429 15430 15431 15432 15433 15434 15435 15436 15437 15438 15439 15440 15441 15442 15443 15444 15445 15446 15447 15448 15449 15450 15451 15452 15453 15454 15455 15456 15457 15458 15459 15460 15461 15462 15463 15464 15465 15466 15467 15468 15469 15470 15471 15472 15473 15474 15475 15476 15477 15478 15479 15480 15481 15482 15483 15484 15485 15486 15487 15488 15489 15490 15491 15492 15493 15494 15495 15496 15497 15498 15499 15500 15501 15502 15503 15504 15505 15506 15507 15508 15509 15510 15511 15512 15513 15514 15515 15516 15517 15518 15519 15520 15521 15522 15523 15524 15525 15526 15527 15528 15529 15530 15531 15532 15533 15534 15535 15536 15537 15538 15539 15540 15541 15542 15543 15544 15545 15546 15547 15548 15549 15550 15551 15552 15553 15554 15555 15556 15557 15558 15559 15560 15561 15562 15563 15564 15565 15566 15567 15568 15569 15570 15571 15572 15573 15574 15575 15576 15577 15578 15579 15580 15581 15582 15583 15584 15585 15586 15587 15588 15589 15590 15591 15592 15593 15594 15595 15596 15597 15598 15599 15600 15601 15602 15603 15604 15605 15606 15607 15608 15609 15610 15611 15612 15613 15614 15615 15616 15617 15618 15619 15620 15621 15622 15623 15624 15625 15626 15627 15628 15629 15630 15631 15632 15633 15634 15635 15636 15637 15638 15639 15640 15641 15642 15643 15644 15645 15646 15647 15648 15649 15650 15651 15652 15653 15654 15655 15656 15657 15658 15659 15660 15661 15662 15663 15664 15665 15666 15667 15668 15669 15670 15671 15672 15673 15674 15675 15676 15677 15678 15679 15680 15681 15682 15683 15684 15685 15686 15687 15688 15689 15690 15691 15692 15693 15694 15695 15696 15697 15698 15699 15700 15701 15702 15703 15704 15705 15706 15707 15708 15709 15710 15711 15712 15713 15714 15715 15716 15717 15718 15719 15720 15721 15722 15723 15724 15725 15726 15727 15728 15729 15730 15731 15732 15733 15734 15735 15736 15737 15738 15739 15740 15741 15742 15743 15744 15745 15746 15747 15748 15749 15750 15751 15752 15753 15754 15755 15756 15757 15758 15759 15760 15761 15762 15763 15764 15765 15766 15767 15768 15769 15770 15771 15772 15773 15774 15775 15776 15777 15778 15779 15780 15781 15782 15783 15784 15785 15786 15787 15788 15789 15790 15791 15792 15793 15794 15795 15796 15797 15798 15799 15800 15801 15802 15803 15804 15805 15806 15807 15808 15809 15810 15811 15812 15813 15814 15815 15816 15817 15818 15819 15820 15821 15822 15823 15824 15825 15826 15827 15828 15829 15830 15831 15832 15833 15834 15835 15836 15837 15838 15839 15840 15841 15842 15843 15844 15845 15846 15847 15848 15849 15850 15851 15852 15853 15854 15855 15856 15857 15858 15859 15860 15861 15862 15863 15864 15865 15866 15867 15868 15869 15870 15871 15872 15873 15874 15875 15876 15877 15878 15879 15880 15881 15882 15883 15884 15885 15886 15887 15888 15889 15890 15891 15892 15893 15894 15895 15896 15897 15898 15899 15900 15901 15902 15903 15904 15905 15906 15907 15908 15909 15910 15911 15912 15913 15914 15915 15916 15917 15918 15919 15920 15921 15922 15923 15924 15925 15926 15927 15928 15929 15930 15931 15932 15933 15934 15935 15936 15937 15938 15939 15940 15941 15942 15943 15944 15945 15946 15947 15948 15949 15950 15951 15952 15953 15954 15955 15956 15957 15958 15959 15960 15961 15962 15963 15964 15965 15966 15967 15968 15969 15970 15971 15972 15973 15974 15975 15976 15977 15978 15979 15980 15981 15982 15983 15984 15985 15986 15987 15988 15989 15990 15991 15992 15993 15994 15995 15996 15997 15998 15999 16000 16001 16002 16003 16004 16005 16006 16007 16008 16009 16010 16011 16012 16013 16014 16015 16016 16017 16018 16019 16020 16021 16022 16023 16024 16025 16026 16027 16028 16029 16030 16031 16032 16033 16034 16035 16036 16037 16038 16039 16040 16041 16042 16043 16044 16045 16046 16047 16048 16049 16050 16051 16052 16053 16054 16055 16056 16057 16058 16059 16060 16061 16062 16063 16064 16065 16066 16067 16068 16069 16070 16071 16072 16073 16074 16075 16076 16077 16078 16079 16080 16081 16082 16083 16084 16085 16086 16087 16088 16089 16090 16091 16092 16093 16094 16095 16096 16097 16098 16099 16100 16101 16102 16103 16104 16105 16106 16107 16108 16109 16110 16111 16112 16113 16114 16115 16116 16117 16118 16119 16120 16121 16122 16123 16124 16125 16126 16127 16128 16129 16130 16131 16132 16133 16134 16135 16136 16137 16138 16139 16140 16141 16142 16143 16144 16145 16146 16147 16148 16149 16150 16151 16152 16153 16154 16155 16156 16157 16158 16159 16160 16161 16162 16163 16164 16165 16166 16167 16168 16169 16170 16171 16172 16173 16174 16175 16176 16177 16178 16179 16180 16181 16182 16183 16184 16185 16186 16187 16188 16189 16190 16191 16192 16193 16194 16195 16196 16197 16198 16199 16200 16201 16202 16203 16204 16205 16206 16207 16208 16209 16210 16211 16212 16213 16214 16215 16216 16217 16218 16219 16220 16221 16222 16223 16224 16225 16226 16227 16228 16229 16230 16231 16232 16233 16234 16235 16236 16237 16238 16239 16240 16241 16242 16243 16244 16245 16246 16247 16248 16249 16250 16251 16252 16253 16254 16255 16256 16257 16258 16259 16260 16261 16262 16263 16264 16265 16266 16267 16268 16269 16270 16271 16272 16273 16274 16275 16276 16277 16278 16279 16280 16281 16282 16283 16284 16285 16286 16287 16288 16289 16290 16291 16292 16293 16294 16295 16296 16297 16298 16299 16300 16301 16302 16303 16304 16305 16306 16307 16308 16309 16310 16311 16312 16313 16314 16315 16316 16317 16318 16319 16320 16321 16322 16323 16324 16325 16326 16327 16328 16329 16330 16331 16332 16333 16334 16335 16336 16337 16338 16339 16340 16341 16342 16343 16344 16345 16346 16347 16348 16349 16350 16351 16352 16353 16354 16355 16356 16357 16358 16359 16360 16361

#ifndef DHCONFIGSDK_H
#define DHCONFIGSDK_H

#include "avglobal.h"
#if (defined(WIN32) || defined(_WIN32) || defined(_WIN64))
    #include <windows.h>

    #ifdef CONFIGSDK_EXPORTS
        #define CLIENT_CFG_API      __declspec(dllexport) 
    #else
        #define CLIENT_CFG_API      __declspec(dllimport)
    #endif

    #define CALLBACK                __stdcall
    #define CALL_METHOD             __stdcall  //__cdecl

    #ifndef LLONG
        #if (defined(WIN32) || defined(_WIN32) || defined(_WIN64))
            #ifdef _WIN64
                #define LLONG       __int64
            #else //WIN32 
                #define LLONG       LONG
            #endif
        #else	//Linux
            #define LLONG           long 
        #endif
    #endif

    #ifndef LDWORD
        #if (defined(WIN32) || defined(_WIN32) || defined(_WIN64))
            #ifdef _WIN64
                #define LDWORD      __int64
            #else //WIN32 
                #define LDWORD      DWORD
            #endif
        #else	//Linux
            #define LDWORD          long 
        #endif
    #endif

#else	//Linux

    #ifndef INTERNAL_COMPILE
        #define CFG_RELEASE_HEADER
    #endif

    #ifndef CFG_RELEASE_HEADER 
        #include "../Platform/platform.h"
    #endif

    #define CLIENT_CFG_API	extern "C"
    #define CALL_METHOD
    #define CALLBACK

#endif


#ifdef __cplusplus
extern "C" {
#endif

/************************************************************************
 ** 常量定义
 ***********************************************************************/

#define MAX_CHANNEL_COUNT                       16
#define MAX_VIDEO_CHANNEL_NUM                   256             // 最大通道数256
#define MAX_CHANNELNAME_LEN                     64              // 最大通道名称长度
#define MAX_VIDEOSTREAM_NUM                     4               // 最大码流个数
#define MAX_VIDEO_COVER_NUM                     16              // 最大遮挡区域个数
#define WEEK_DAY_NUM                            7               // 一周的天数
#define MAX_REC_TSECT                           6               // 录像时间段个数
#define MAX_REC_TSECT_EX                        10              // 录像时间段扩展个数
#define MAX_WATERMARK_LEN                       4096            // 数字水印数据最大长度
#define MAX_MOTION_ROW                          32              // 动态检测区域的行数
#define MAX_MOTION_COL                          32              // 动态检测区域的列数
#define MAX_IMAGESIZE_NUM                       256             // 最大支持的分辨率个数
#define MAX_FPS_NUM                             1024            // 最大支持的帧率个数
#define MAX_QUALITY_NUM                         32              // 最大支持的画质个数
#define MAX_ADDRESS_LEN                         256             // 最大的地址长度
#define MAX_USERNAME_LEN                        64              // 最大用户名长度
#define MAX_PASSWORD_LEN                        64              // 最大密码长度
#define MAX_DIRECTORY_LEN                       256             // 文件夹名字字符串长度
#define MAX_NAS_TIME_SECTION                    2               // 网络存储时间段个数
#define MAX_NAME_LEN                            128             // 通用名字字符串长度
#define	MAX_SCENE_TYPE_LIST_SIZE                8               // 场景列表中最多支持的场景个数
#define MAX_DECPRO_LIST_SIZE                    100             // 解码器协议列表个数上限
#define MAX_SCENE_LIST_SIZE                     32              // 视频分析设备支持的场景类型列表个数上限
#define MAX_OBJECT_LIST_SIZE                    16              // 视频分析设备支持的检测物体类型列表个数上限
#define MAX_RULE_LIST_SIZE                      128             // 视频分析设备支持的规则列表个数上限
#define	MAX_SUPPORTED_COMP_SIZE                 4               // 最大支持的场景组合项
#define	MAX_SUPPORTED_COMP_DATA                 8               // 每个组合项里最多支持的场景个数
#define MAX_ANALYSE_MODULE_NUM                  16              // 视频分析设备最大检测模块个数
#define MAX_ANALYSE_RULE_NUM                    32              // 视频分析设备最大规则个数
#define MAX_POLYGON_NUM                         20              // 视频分析设备区域顶点个数上限
#define MAX_POLYLINE_NUM                        20              // 视频分析设备折线顶点个数上限
#define MAX_TEMPLATEREGION_NUM                  32              // 视频分析设备模拟区域信息点对个数上限
#define POINT_PAIR_NUM                          2               // 视频分析设备模拟区域点对包含的点个数
#define MAX_VEHICLE_SIZE_LIST                   4               // 视频分析设备车辆大小个数上限
#define MAX_VEHICLE_TYPE_LIST                   4               // 视频分析设备车辆类型个数上限
#define MAX_PLATE_TYPE_LIST                     32              // 视频分析设备车牌类型个数上限
#define MAX_LANE_NUM                            8               // 视频分析设备每个通道对应车道数上限
#define MAX_STAFF_NUM                           20              // 视频分析设备每个通道对应的标尺数上限
#define MAX_CALIBRATEAREA_NUM                   20              // 视频分析设备标定区域的上限
#define MAX_EXCLUDEREGION_NUM                   10              // 智能分析检测区域中需要排除的区域个数上限 
#define MAX_CALIBRATEBOX_NUM                    10              // 智能分析校准框个数上限
#define MAX_SPECIALDETECT_NUM                   10              // 智能分析特殊检测区域上限
#define MAX_HUMANFACE_LIST_SIZE                 8               // 视频分析设备支持的人脸检测类型列表个数上限
#define MAX_FEATURE_LIST_SIZE					32				// 视频分析设备支持的人脸属性列表个数上限
#define	MAX_SEVER_NUM                           16              // 服务类型上限
#define MAX_SERVER_NAME_LEN                     16              // 服务名称字符串大小
#define MAX_POWER_NUM                           8               // 电源个数上限
#define MAX_FUN_NUM                             8               // 风扇个数上限
#define MAX_CPU_NUM                             8               // cpu个数上限
#define MAX_HARDDISK_NUM                        32              // 硬盘上限
#define MAX_TANK_NUM                            16              // 最大存储柜上限
#define MAX_CHAN_NUM                            256             // 最大通道数上限
#define MAX_RAID_NUM                            16              // 最大磁盘阵列上限
#define MAX_DEV_NUM                             16              // 最大设备上限
#define MAX_STORAGEPOOL_NUM                     16              // 最大存储池上限
#define MAX_STRORAGEPOS_NUM                     16              // 最大存储位置上限
#define	MAX_VIDEODEV_NUM                        256             // 前端设备上限
#define MAX_REMOTEDEVICENAME_LEN                32              // 最大远程设备名字长度
#define	MAX_REMOTE_DEV_NUM                      256             // 最大远程设备数量
#define MAX_PLATEHINT_NUM                       8               // 车牌字符暗示个数上限
#define MAX_LIGHT_NUM                           8               // 交通灯个数上限
#define MAX_LIGHTGROUP_NUM                      8               // 交通灯组个数上限
#define MAX_LIGHT_TYPE                          8               // 交通灯类型上限
#define MAX_LIGHT_DIRECTION                     8               // 交通灯指示方向数上限
#define MAX_TRIGGERMODE_NUM                     32              // 交通路口规则触发模式上限 
#define MAX_VIOLATIONCODE                       16              // 智能交通违章代码长度上限
#define MAX_DETECTOR                            6               // 智能交通车检器配置上限
#define MAX_COILCONFIG                          3               // 智能交通车检器线圈配置上限
#define MAX_DEVICE_ADDRESS                      256             // TrafficSnapshot智能交通设备地址
#define MAX_DEPARTMENT                          256             // Department智能交通设备所属单位
#define MAX_ROADWAYNO                           128             // 道路编号	由32个数字和字母构成
#define MAX_VIOLATIONCODE_DESCRIPT              64              // 智能交通违章代码长度上限
#define MAX_DRIVINGDIRECTION                    256             // 行驶方向字符串长度
#define MAX_ACTIVEUSER_NUM                      64              // 最大活动用户信息数
#define MAX_POLYGON_NUM10                       10              // 视频分析设备区域顶点个数上限
#define MAX_VIDEODIAGNOSIS_DETECT_TYPE          64              // 视频诊断类型个数上限
#define MAX_ACTION_LIST_SIZE                    16              // 视频分析设备支持的规则的动作类型列表个数上限
#define MAX_STORAGEGROUPNAME_LEN                32              // 存储组名称缓冲区上限
#define MAX_CALIBRATEAREA_TYPE_NUM              4               // 标定区域类型上限
#define MAX_PROTOCOL_NAME_LEN                   32              // 协议名称长度
#define	MAX_COMM_NUM                            16              // 最大串口数量
#define MAX_DNS_SERVER_NUM                      2               // DNS最大数量
#define MAX_NETWORK_INTERFACE_NUM               32              // 最大网卡数量
#define	MAX_NAS_NUM                             16              // 网络存储服务器最大数量
#define MAX_STORAGEPOINT_NUM                    32              // 录像存储点映射最大数量
#define MAX_TRACKSCENE_NUM                      10              // 智能跟踪场景最大数量
#define MAX_STATUS_NUM                          16              // 交通设备状态最大个数
#define MAX_SERVICE_NUM                         128             // 服务器支持的最大服务数
#define MAX_DBKEY_NUM                           64              // 数据库关键字最大值
#define MAX_SUMMARY_LEN                         1024            // 叠加到JPEG图片的摘要信息最大长度
#define MAX_MOTION_WINDOW                       10              // 动检支持的视频窗口值
#define MAX_OSD_SUMMARY_LEN                     256             // osd叠加内容最大长度    
#define MAX_OSD_TITLE_LEN                       128             // osd叠加标题最大长度
#define MAX_CUSTOMCASE_NUM                      16              // 自定义司法案件最大个数
#define MAX_GLOBAL_MSTERSLAVE_NUM               64              //主从式跟踪器最大全局配置数
#define MAX_OBJECT_ATTRIBUTES_SIZE              16              // 视频分析设备支持的检测物体属性类型列表个数上限
#define MAX_MODEL_LEN                           32              // 设备型号长度
#define MAX_BURNING_DEV_NUM                     32              // 最大刻录设备个数
#define MAX_NET_TYPE_NUM                        8               // 最大网络类型个数
#define MAX_NET_TYPE_LEN                        64              // 网络类型字符串长度 
#define MAX_DEVICE_NAME_LEN                     64              // 机器名称
#define MAX_DEV_ID_LEN_EX                       128             // 设备ID最大长度
#define MONTH_OF_YEAR                           12              // 一年中月份数
#define MAX_SERVER_NUM                          10              // 服务器最大个数
#define MAX_REGISTER_NUM                        10              // 主动注册配置最大个数 
#define MAX_VIDEO_IN_ZOOM                       32              // 单通道最大变速配置个数
#define	MAX_ANALYSE_SCENE_NUM                   32              // 视频分析全局配置场景最大数量
#define	MAX_CONFIG_NUM                          32              // 每个云台的最大配置数
#define	MAX_PTZ_PRESET_NAME_LEN                 64              // 云台预置点名称长度
#define CFG_COMMON_STRING_8                     8               // 通用字符串长度8
#define CFG_COMMON_STRING_16                    16              // 通用字符串长度16
#define CFG_COMMON_STRING_32                    32              // 通用字符串长度32
#define CFG_COMMON_STRING_64                    64              // 通用字符串长度64
#define CFG_COMMON_STRING_128                   128             // 通用字符串长度128
#define CFG_COMMON_STRING_256                   256             // 通用字符串长度256
#define CFG_COMMON_STRING_512                   512             // 通用字符串长度512
#define AV_CFG_Channel_Name_Len                 64              // 通道名称长度
#define CFG_MAX_CHANNEL_NAME_LEN                256             // 通道名称最大长度    
#define AV_CFG_Weekday_Num                      7               // 一周天数
#define AV_CFG_Max_TimeSection                  6               // 时间段数量
#define AV_CFG_Device_ID_Len                    64              // 设备ID长度
#define AV_CFG_IP_Address_Len                   32              // ip长度
#define AV_CFG_IP_Address_Len_EX                40              // 扩展IP地址字符串长度, 支持IPV6
#define AV_CFG_User_Name_Len                    64              // 用户名长度
#define AV_CFG_Password_Len                     64              // 密码长度
#define AV_CFG_Protocol_Len                     32              // 协议名长度
#define AV_CFG_Serial_Len                       32              // 序列号长度
#define AV_CFG_Device_Class_Len                 16              // 设备类型长度
#define AV_CFG_Device_Type_Len                  32              // 设备具体型号长度
#define AV_CFG_Device_Name_Len                  128             // 机器名称
#define AV_CFG_Address_Len                      128             // 机器部署地点
#define AV_CFG_Max_Path                         260             // 路径长度
#define AV_CFG_Max_Split_Window                 128             // 最大分割窗口数量
#define	AV_CFG_Monitor_Favorite_In_Channel      64              // 每个输出通道的最大轮训画面收藏数量
#define AV_CFG_Monitor_Favorite_Name_Len        64              // 画面收藏名称长度
#define AV_CFG_Max_Monitor_Favorite_Window      64              // 画面收藏的最大窗口数量
#define AV_CFG_Max_Split_Group                  64              // 分割最大分组数量
#define AV_CFG_Max_Split_Mode                   32              // 分割模式最大数量
#define AV_CFG_Raid_Name_Len                    64              // RAID名称长度
#define AV_CFG_Max_Rail_Member                  32              // 单个RAID包含磁盘数
#define AV_CFG_Max_Encode_Main_Format           3               // 主码流编码类型数
#define AV_CFG_Max_Encode_Extra_Format          3               // 辅码流编码类型数
#define	AV_CFG_Max_Encode_Snap_Format           3               // 抓图编码类型数
#define AV_CFG_Max_VideoColor                   24              // 每个通道最大视频输入颜色配置数量
#define AV_CFG_Custom_Title_Len                 1024            // 自定义标题名称长度(扩充到1024)
#define AV_CFG_Custom_TitleType_Len             32              // 自定义标题类型长度
#define AV_CFG_Max_Video_Widget_Cover           16              // 编码区域覆盖最大数量
#define AV_CFG_Max_Video_Widget_Custom_Title    8               // 编码物件自定义标题最大数量
#define AV_CFG_Max_Video_Widget_Sensor_Info     2               // 编码物件叠加传感器信息的最大数目
#define AV_CFG_Max_Description_Num              4               // 叠加区域描述信息的最大个数
#define AV_CFG_Group_Name_Len                   64              // 分组名称长度
#define AV_CFG_DeviceNo_Len                     32              // 设备编号长度
#define AV_CFG_Group_Memo_Len                   128             // 分组说明长度
#define AV_CFG_Max_Channel_Num                  1024            // 最大通道数量
#define AV_CFG_Time_Format_Len                  32              // 时间格式长度
#define AV_CFG_Max_White_List                   1024            // 白名单数量
#define AV_CFG_Max_Black_List                   1024            // 黑名单数量
#define AV_CFG_Filter_IP_Len                    96              // 过滤IP最大长度
#define AV_CFG_Max_ChannelRule                  32              // 通道存储规则最大长度, 仅通道部分
#define AV_CFG_Max_DBKey_Num                    64              // 事件关键字数量
#define AV_CFG_DBKey_Len                        32              // 事件关键字长度
#define AV_CFG_Max_Summary_Len                  1024            // 摘要长度
#define AV_CFG_Max_Event_Title_Num              32              // 事件标题最大数量
#define AV_CFG_Max_Tour_Link_Num                128             // 联动轮巡最大数量
#define AV_CFG_PIP_BASE                         1000            // 画中画分割模式基础值
#define DES_KEY_LEN                             8               // DES密钥的字节长度
#define DES_KEY_NUM                             3               // 3DES密钥的个数
#define AES_KEY_LEN                             32              // AES密钥的字节长度
#define MAX_TIME_SCHEDULE_NUM                   8               // 时间表元素个数
#define MAX_SCENE_SUBTYPE_LEN                   64              // 场景子类型字符串长度
#define MAX_SCENE_SUBTYPE_NUM                   32              // 场景子类型最大个数    
#define MAX_VIDEO_IN_FOCUS                      32              // 单通道最大聚焦配置个数
#define MAX_TIMESPEEDLIMIT_NUM                  16              // 最大时间段限速配置个数
#define MAX_VOICEALERT_NUM                      64              // 最大语音提示配置个数
#define CFG_MAX_LOWER_MATRIX_NUM                16              // 最大下位矩阵数量
#define CFG_MAX_LOWER_MATRIX_INPUT              64              // 最大下位矩阵输入通道数
#define CFG_MAX_LOWER_MATRIX_OUTPUT             32              // 最大下位矩阵输出通道数
#define CFG_MAX_AUDIO_MATRIX_INPUT              32              // 音频矩阵最大输入通道数
#define CFG_MAX_AUDIO_OUTPUT_CHN                32              // 音频矩阵最大输出通道数
#define CFG_MAX_AUDIO_MATRIX_NUM                4               // 最大音频矩阵数量
#define CFG_MAX_AUDIO_MATRIX_OUTPUT             8               // 每个音频矩阵支持的最大输出通道数
#define CFG_MAX_VIDEO_IN_DEFOG                  3               // 每个通道最多透雾配置个数
#define CFG_MAX_INFRARED_BOARD_TEMPLATE_NUM     16              // 最大红外面板模板数量
#define	CFG_MAX_INFRARED_KEY_NUM                128             // 最大红外面板按键数量
#define	CFG_MAX_INFRARED_BOARD_NUM              16              // 最大红外面板数量
#define CFG_MAX_VTO_NUM                         128             // 最大门口机数量
#define MAX_PHONE_NUMBER_LEN                    32              // 电话号码最大长度
#define MAX_AUDIO_OUTPUT_NUM                    16              // 音频输出最大通道数
#define MAX_AUDIO_INPUT_NUM                     32              // 音频输入最大通道数
#define MAX_LIGHT_GLOBAL_NUM					16				// 乐橙状态灯最大数目
#define MAX_AUDIO_MIX_NUM                       16              // 混合音频最大通道数
#define MAX_PSTN_SERVER_NUM                     8               // 最大报警电话服务器数
#define MAX_ALARM_CHANNEL_NUM                   32              // 最大报警通道数
#define MAX_ALARM_DEFENCE_TYPE_NUM              8               // 最大报警防区类型数
#define MAX_ALARM_SENSE_METHOD_NUM              16              // 最大报警感应器方式数
#define MAX_EXALARMBOX_PROTOCOL_NUM             8               // 最大支持扩展报警盒协议数
#define MAX_EXALARM_CHANNEL_NUM                 256             // 最大报警通道数
#define MAX_EXALARMBOX_NUM                      8               // 最大报警盒子数
#define MAX_MAILTITLE_LEN                       256             // 最大邮件标题长度
#define MAX_DEVICE_ID_LEN                       48              // 最大设备编码长度
#define MAX_DEVICE_MARK_LEN                     64              // 最大设备描述长度
#define MAX_BRAND_NAME_LEN                      64              // 最大设备品牌长度
#define MAX_ADDRESS_NUM                         16              // 最大串口地址个数
#define MAX_AIRCONDITION_NUM                    16              // 最大空调设备个数
#define CFG_MAX_COLLECTION_NUM                  64              // 最大预案数
#define MAX_FLOOR_NUM                           128             // 最大楼层数
#define MAX_SEAT_NUM                            8               // 最大座位数
#define AV_CFG_Local_Device_ID                  "Local"         // 本地设备ID
#define AV_CFG_Remote_Devce_ID                  "Remote"        // 远程设备ID   
#define MAX_LANE_CONFIG_NUMBER                  32              // 车道最大个数
#define MAX_PRIORITY_NUMBER                     256             // 违章优先级包含违章最大个数
#define MAX_CATEGORY_TYPE_NUMBER                128             // 子类别类型数
#define MAX_TRIGGER_MODE_NUMBER                 64              // 触发模式个数
#define MAX_ABNORMAL_DETECT_TYPE                32              // 异常检测类型数
#define	MAX_ABNORMAL_THRESHOLD_LEN              32              // 异常检测阙值最大个数
#define TS_POINT_NUM                            3               // 触摸屏校准点数
#define CFG_FILTER_IP_LEN                       96              // 过滤IP最大长度
#define CFG_MAX_TRUST_LIST                      1024            // 白名单数量
#define CFG_MAX_BANNED_LIST                     1024            // 黑名单数量
#define VIDEOIN_TSEC_NUM                        3               // VideoIn 系列协议时间段个数,目前有普通、白天、黑夜三种
#define	MAX_RECT_COUNT                          4               // 单个通道支持的马赛克区域最大个数
#define CFG_MAX_SSID_LEN                        36              // SSID最大长度
#define	MAX_OUTAUDIO_CHANNEL_COUNT              16              // 最大音频输出通道数
#define MAX_INAUDIO_CHANNEL_COUNT               32              // 最大音频输入通道数
#define MAX_FREQUENCY_COUNT                     16              // 最大频率段个数
#define MAX_NTP_SERVER                          4               // 最大备用NTP服务器地址
#define MAX_ACCESS_TEXTDISPLAY_LEN              32              // 最大门禁控制显示文字长度
#define CFG_MAX_NVR_ENCRYPT_COUNT               4               // 每个通道最多加密配置个数
#define MAX_IP_ADDR_LEN                         16              // IP地址字符串长度
#define MAX_PRIVACY_MASKING_COUNT               64              // 单个通道隐私遮挡配置个数
#define MAX_ALL_SNAP_CAR_COUNT					32				// 所有车开闸种类个数
#define CFG_MAX_PLATE_NUMBER_LEN				32				// 最大车牌号码长度
#define CFG_MAX_SN_LEN							32				// 最大设备序列号长度
#define CFG_MAX_ACCESS_CONTROL_ADDRESS_LEN		64				// 最大的地址长度
#define MAX_CFG_APN_NAME						32				// Wireless中接入网络名长度
#define	MAX_CFG_DAIL_NUMBER						32				// Wireless中拨号号码长度
#define	MAX_GROUP_ID_LEN						64				// 最大布控组ID长度
#define	MAX_COLOR_NAME_LEN						32				// 最大颜色名长度
#define	MAX_COLOR_HEX_LEN						8				// 最大HEX颜色长度
#define	MAX_LINK_GROUP_NUM						20				// 联动的布控组最大数量
#define MAX_CROWD_DISTRI_MAP_REGION_POINT_NUM	20				// 区域检测坐标个数
#define MAX_PEOPLESTATREGIONS_NUM				8				// 人数统计区域个数
#define MAX_AUDIOCHANNELS_ARRAY_NUM             8               // 视频通道的伴音通道号列表数组的最大个数
#define MAX_NUMBER_STAT_MAULT_NUM				32				// 最大客流量统计场景PD个数
#define CFG_MAX_DAY_NIGHT_MODE					3				// 每个视频输入通道对应多个配置(分别表示白天、黑夜、普通)
/************************************************************************
 ** 配置命令 对应CLIENT_GetNewDevConfig和CLIENT_SetNewDevConfig接口
 ***********************************************************************/

#define CFG_CMD_ENCODE                          "Encode"                    // 图像通道属性配置(对应 CFG_ENCODE_INFO)
#define CFG_CMD_RECORD                          "Record"                    // 定时录像配置(对应 CFG_RECORD_INFO)
#define CFG_CMD_ALARMINPUT                      "Alarm"                     // 外部输入报警配置(对应 CFG_ALARMIN_INFO)
#define CFG_CMD_NETALARMINPUT                   "NetAlarm"                  // 网络报警配置(对应 CFG_NETALARMIN_INFO)
#define CFG_CMD_MOTIONDETECT                    "MotionDetect"              // 动态检测报警配置(对应 CFG_MOTION_INFO)
#define CFG_CMD_VIDEOLOST                       "LossDetect"                // 视频丢失报警配置(对应 CFG_VIDEOLOST_INFO)
#define CFG_CMD_VIDEOBLIND                      "BlindDetect"               // 视频遮挡报警配置(对应 CFG_SHELTER_INFO)
#define CFG_CMD_STORAGENOEXIST                  "StorageNotExist"           // 无存储设备报警配置(对应 CFG_STORAGENOEXIST_INFO)
#define CFG_CMD_STORAGEFAILURE                  "StorageFailure"            // 存储设备访问出错报警配置(对应 CFG_STORAGEFAILURE_INFO)
#define CFG_CMD_STORAGELOWSAPCE                 "StorageLowSpace"           // 存储设备空间不足报警配置(对应 CFG_STORAGELOWSAPCE_INFO)
#define CFG_CMD_NETABORT                        "NetAbort"                  // 网络断开报警配置(对应 CFG_NETABORT_INFO)	
#define CFG_CMD_IPCONFLICT                      "IPConflict"                // IP冲突报警配置(对应 CFG_IPCONFLICT_INFO)
#define CFG_CMD_SNAPCAPINFO                     "SnapInfo"                  // 抓图能力查询(对应 CFG_SNAPCAPINFO_INFO)
#define CFG_CMD_NAS                             "NAS"                       // 网络存储服务器配置(对应 CFG_NAS_INFO)
#define CFG_CMD_PTZ                             "Ptz"                       // 云台配置(对应 CFG_PTZ_INFO)
#define	CFG_CMD_PTZ_AUTO_MOVEMENT               "PtzAutoMovement"           // 云台定时动作配置(对应 CFG_PTZ_AUTOMOVE_INFO)
#define CFG_CMD_WATERMARK                       "WaterMark"                 // 视频水印配置(对应 CFG_WATERMARK_INFO)
#define CFG_CMD_ANALYSEGLOBAL                   "VideoAnalyseGlobal"        // 视频分析全局配置(对应 CFG_ANALYSEGLOBAL_INFO)
#define CFG_CMD_ANALYSEMODULE                   "VideoAnalyseModule"        // 物体的检测模块配置(对应 CFG_ANALYSEMODULES_INFO)
#define CFG_CMD_ANALYSERULE                     "VideoAnalyseRule"          // 视频分析规则配置(对应 CFG_ANALYSERULES_INFO)
#define CFG_CMD_ANALYSESOURCE                   "VideoAnalyseSource"        // 视频分析资源配置(对应 CFG_ANALYSESOURCE_INFO)
#define CFG_CMD_RAINBRUSH                       "RainBrush"                 // 雨刷配置(对应 CFG_RAINBRUSH_INFO)
#define CFG_CMD_INTELLECTIVETRAFFIC             "TrafficSnapshot"           // 智能交通抓拍(CFG_TRAFFICSNAPSHOT_INFO 只为兼容老协议;请使用CFG_CMD_TRAFFICSNAPSHOT_MULTI)
#define CFG_CMD_TRAFFICGLOBAL                   "TrafficGlobal"             // 智能交通全局配置(CFG_TRAFFICGLOBAL_INFO)
#define CFG_CMD_DEV_GENERRAL                    "General"                   // 普通配置 (对应 CFG_DEV_DISPOSITION_INFO)
#define CFG_CMD_ATMMOTION                       "FetchMoneyOverTime"        // ATM取款超时配置(对应 CFG_ATMMOTION_INFO)
#define CFG_CMD_DEVICESTATUS                    "DeviceStatus"              // 设备状态信息(对应 CFG_DEVICESTATUS_INFO)
#define CFG_CMD_HARDDISKTANK                    "HardDiskTank"              // 扩展柜信息(对应 CFG_HARDISKTANKGROUP_INFO)
#define CFG_CMD_RAIDGROUP                       "RaidGroup"                 // Raid组信息(对应 CFG_RAIDGROUP_INFO)
#define CFG_CMD_STORAGEPOOLGROUP                "StoragePoolGroup"          // 存储池组信息(对应 CFG_STORAGEPOOLGROUP_INFO)
#define CFG_CMD_STORAGEPOSITIONGROUP            "StoragePositionGroup"      // 文件系统组信息(对应 CFG_STORAGEPOSITIONGROUP_INFO)
#define CFG_CMD_VIDEOINDEVGROUP                 "VideoInDevGroup"           // 前端设备组信息(对应 CFG_VIDEOINDEVGROUP_INFO)
#define CFG_CMD_DEVRECORDGROUP                  "DevRecordGroup"            // 通道录像组状态(对应 CFG_DEVRECORDGROUP_INFO)
#define CFG_CMD_IPSSERVER                       "IpsServer"                 // 服务状态(对应 CFG_IPSERVER_STATUS)
#define CFG_CMD_SNAPSOURCE                      "SnapSource"                // 抓图源配置(对应 CFG_SNAPSOURCE_INFO)
#define CFG_CMD_DHRADER                         "DahuaRadar"                // 大华雷达配置(透传 json 串)
#define CFG_CMD_DHRADER_PP                      "DahuaRadar"                // 大华雷达配置(解析为结构体,对应 CFG_DAHUA_RADAR)
#define CFG_CMD_TRANSRADER                      "TransRadar"                // 川苏雷达配置
#define CFG_CMD_LANDUNRADER                     "LanDunRadar"               // 蓝盾雷达配置
#define CFG_CMD_LANDUNCOILS                     "LanDunCoils"               // 蓝盾线圈配置
#define CFG_CMD_MATRIX_SPOT                     "SpotMatrix"                // Spot视屏矩阵(对应 CFG_VIDEO_MATRIX)
#define CFG_CMD_HDVR_DSP                        "DspEncodeCap"              // HDVR传每个数字通道的dsp信息 数字通道可以连IPC或DVR 也就是IPC或DVR的能力(对应CFG_DSPENCODECAP_INFO)
#define CFG_CMD_HDVR_ATTR_CFG                   "SystemAttr"                // HDVR传每个数字通道的所连设备的信息
#define CFG_CMD_CHANNEL_HOLIDAY                 "HolidaySchedule"           // 假期录像计划(对应结构体 CFG_HOLIDAY_SCHEDULE数组)
#define CFG_CMD_HEALTH_MAIL                     "HealthMail"                // 健康邮件
#define CFG_CMD_CAMERAMOVE                      "IntelliMoveDetect"         // 摄像机移位侦测联动 
#define CFG_CMD_SPLITTOUR                       "SplitTour"                 // 视频分割轮巡配置(对应 CFG_VIDEO_MATRIX)
#define CFG_CMD_VIDEOENCODEROI                  "VideoEncodeROI"            // 视频编码ROI(Region of Intrest)配置
#define CFG_CMD_VIDEO_INMETERING                "VideoInMetering"           // 测光配置(对应 CFG_VIDEO_INMETERING_INFO)
#define CFG_CMD_TRAFFIC_FLOWSTAT                "TrafficFlowStat"           // 交通流量统计配置(对应 CFG_TRAFFIC_FLOWSTAT_INFO)
#define CFG_CMD_HDMIMATRIX                      "HDMIMatrix"                // HDMI视频矩阵配置
#define CFG_CMD_VIDEOINOPTIONS	                "VideoInOptions"            // 视频输入前端选项(对应 CFG_VIDEO_IN_OPTIONS)
#define CFG_CMD_RTSP                            "RTSP"                      // RTSP的配置( 对应 CFG_RTSP_INFO_IN和CFG_RTSP_INFO_OUT )
#define CFG_CMD_TRAFFICSNAPSHOT                 "TrafficSnapshotNew"        // 智能交通抓拍(CFG_TRAFFICSNAPSHOT_INFO 废除,请使用 CFG_CMD_TRAFFICSNAPSHOT_MULTI_EX)
#define CFG_CMD_TRAFFICSNAPSHOT_MULTI           "TrafficSnapshotNew"        // 智能交通抓拍(CFG_TRAFFICSNAPSHOT_NEW_INFO 废除,请使用 CFG_CMD_TRAFFICSNAPSHOT_MULTI_EX)
#define CFG_CMD_TRAFFICSNAPSHOT_MULTI_EX        "TrafficSnapshotNew"        // 智能交通抓拍(CFG_TRAFFICSNAPSHOT_NEW_EX_INFO)
#define CFG_CMD_MULTICAST                       "Multicast"                 // 组播的相关配置(对应 CFG_MULTICASTS_INFO_IN和CFG_MULTICASTS_INFO_OUT)
#define CFG_CMD_VIDEODIAGNOSIS_PROFILE          "VideoDiagnosisProfile"     // 视频诊断参数表(CFG_VIDEODIAGNOSIS_PROFILE)
#define CFG_CMD_VIDEODIAGNOSIS_TASK             "VideoDiagnosisTask"        // 视频诊断任务表(CFG_VIDEODIAGNOSIS_TASK)
#define CFG_CMD_VIDEODIAGNOSIS_PROJECT          "VideoDiagnosisProject"     // 视频诊断计划表(CFG_VIDEODIAGNOSIS_PROJECT)
#define CFG_CMD_VIDEODIAGNOSIS_REALPROJECT      "VideoDiagnosisRealProject" // 视频诊断实时计划表(CFG_VIDEODIAGNOSIS_REALPROJECT)
#define CFG_CMD_VIDEODIAGNOSIS_GLOBAL           "VideoDiagnosisGlobal"      // 视频诊断全局表(CFG_VIDEODIAGNOSIS_GLOBAL)
#define CFG_CMD_VIDEODIAGNOSIS_TASK_ONE         "VideoDiagnosisTask.x"      // 视频诊断任务表(CFG_VIDEODIAGNOSIS_TASK)
#define CFG_CMD_TRAFFIC_WORKSTATE               "WorkState"                 // 设备工作状态相关配置(对应 CFG_TRAFFIC_WORKSTATE_INFO)
#define CFG_CMD_STORAGEDEVGROUP                 "StorageDevGroup"           // 磁盘存储组配置(对应 CFG_STORAGEGROUP_INFO)
#define CFG_CMD_RECORDTOGROUP                   "RecordToGroup"             // 录像存放的存储组配置(对应 CFG_RECORDTOGROUP_INFO)
#define CFG_CMD_INTELLITRACKSCENE               "IntelliTrackScene"         // 智能跟踪场景配置(CFG_INTELLITRACKSCENE_INFO) 
#define CFG_CMD_IVSFRAM_RULE                    "IVSFramRule"               // 智能帧规则配置(对应 CFG_ANALYSERULES_INFO)
#define CFG_CMD_RECORD_STORAGEPOINT             "RecordStoragePoint"        // 录像存储点映射配置(对应 CFG_RECORDTOSTORAGEPOINT_INFO)
#define CFG_CMD_RECORD_STORAGEPOINT_EX			"RecordStoragePoint"		// 录像存储点映射配置扩展 (对应 CFG_RECORDTOSTORAGEPOINT_EX_INFO)
#define CFG_CMD_MD_SERVER                       "MetaDataServer"            // 元数据服务器配置(对应 CFG_METADATA_SERVER结构体)
#define CFG_CMD_CHANNELTITLE                    "ChannelTitle"              // 通道名称(对应 AV_CFG_ChannelName)
#define	CFG_CMD_RECORDMODE                      "RecordMode"                // 录像模式(对应 AV_CFG_RecordMode)
#define CFG_CMD_VIDEOOUT                        "VideoOut"                  // 视频输出属性(对应 AV_CFG_VideoOutAttr)
#define CFG_CMD_REMOTEDEVICE                    "RemoteDevice"              // 远程设备信息(对应 AV_CFG_RemoteDevice数组, 通道无关)
#define CFG_CMD_REMOTECHANNEL                   "RemoteChannel"             // 远程通道(对应 AV_CFG_RemoteChannel)
#define CFG_CMD_MONITORTOUR                     "MonitorTour"               // 画面轮训配置(对应 AV_CFG_MonitorTour)
#define CFG_CMD_MONITORCOLLECTION               "MonitorCollection"         // 画面收藏配置(对应 AV_CFG_MonitorCollection)
#define CFG_CMD_DISPLAYSOURCE                   "DisplaySource"             // 画面分割显示源配置(对应 AV_CFG_ChannelDisplaySource)(废除,不建议使用)
#define CFG_CMD_RAID                            "Raid"                      // 存储卷组配置(对应 AV_CFG_Raid数组, 通道无关)
#define CFG_CMD_RECORDSOURCE                    "RecordSource"              // 录像源配置(对应 AV_CFG_RecordSource)
#define CFG_CMD_VIDEOCOLOR                      "VideoColor"                // 视频输入颜色配置(对应 AV_CFG_ChannelVideoColor)
#define CFG_CMD_VIDEOWIDGET                     "VideoWidget"               // 视频编码物件配置(对应 AV_CFG_VideoWidget)
#define CFG_CMD_STORAGEGROUP                    "StorageGroup"              // 存储组信息(对应 AV_CFG_StorageGroup数组, 通道无关)
#define CFG_CMD_LOCALS                          "Locales"                   // 区域配置(对应 AV_CFG_Locales)
#define CFG_CMD_LANGUAGE                        "Language"                  // 语言选择(对应 AV_CFG_Language)
#define CFG_CMD_ACCESSFILTER                    "AccessFilter"              // 访问地址过滤(对应 AV_CFG_AccessFilter)
#define CFG_CMD_AUTOMAINTAIN                    "AutoMaintain"              // 自动维护(对应 AV_CFG_AutoMaintain)
#define CFG_CMD_REMOTEEVENT                     "RemoteEvent"               // 远程设备事件处理(对应 AV_CFG_RemoteEvent数组)
#define CFG_CMD_MONITORWALL                     "MonitorWall"               // 电视墙配置(对应 AV_CFG_MonitorWall数组, 通道无关)
#define	CFG_CMD_SPLICESCREEN                    "VideoOutputComposite"      // 融合屏配置(对应 AV_CFG_SpliceScreen数组, 通道无关)
#define CFG_CMD_TEMPERATUREALARM                "TemperatureAlarm"          // 温度报警配置(对应 AV_CFG_TemperatureAlarm, 通道无关)
#define	CFG_CMD_FANSPEEDALARM                   "FanSpeedAlarm"             // 风扇转速报警配置(对应 AV_CFG_FanSpeedAlarm, 通道无关)
#define CFG_CMD_RECORDBACKUP                    "RecordBackupRestore"       // 录像回传配置(对应 AV_CFG_RecordBackup, 通道无关)
#define CFG_CMD_RECORDDOWNLOADSPEED             "RecordDownloadSpeed"       // 录像下载速度配置(对应CFG_RecordDownloadSpeed)
#define CFG_CMD_COMM                            "Comm"                      // 串口配置(对应 CFG_COMMGROUP_INFO)
#define	CFG_CMD_NETWORK                         "Network"                   // 网络配置(对应 CFG_NETWORK_INFO)
#define CFG_CMD_NASEX                           "NAS"                       // 网络存储服务器配置, 多服务器(对应 CFG_NAS_INFO_EX)
#define CFG_CMD_LDAP                            "LDAP"                      // LDAP配置
#define CFG_CMD_ACTIVE_DIR                      "ActiveDirectory"           // 活动目录配置
#define CFG_CMD_FLASH                           "FlashLight"                // 补光灯配置(对应 CFG_FLASH_LIGHT)
#define CFG_CMD_AUDIO_ANALYSERULE               "AudioAnalyseRule"          // 音频分析规则配置(对应 CFG_ANALYSERULES_INFO)
#define CFG_CMD_JUDICATURE                      "Judicature"                // 司法刻录配置(对应 CFG_JUDICATURE_INFO)
#define CFG_CMD_GOODS_WEIGHT                    "CQDTSet"                   // 车载货重配置(对应 CFG_GOOD_WEIGHT_INFO)
#define CFG_CMD_VIDEOIN                         "VideoIn"                   // 输入通道配置(对应 CFG_VIDEO_IN_INFO)
#define CFG_CMD_ENCODEPLAN                      "EncodePlan"                // 刻录光盘编码计划(对应 CFG_ENCODE_PLAN_INFO)
#define CFG_CMD_PICINPIC                        "PicInPic"                  // 司法审讯画中画(对应 CFG_PICINPIC_INFO)改为数组方式,兼容以前单个配置,根据长度区分
#define CFG_CMD_BURNFULL                        "BurnFull"                  // 刻录满事件配置(对应 CFG_BURNFULL_INFO)
#define CFG_CMD_MASTERSLAVE_GLOBAL              "MasterSlaveTrackerGlobal"  // 主从式全局配置(对应 CFG_MASTERSLAVE_GLOBAL_INFO)
#define CFG_CMD_MASTERSLAVE_LINKAGE             "MasterSlaveGlobal"         // 枪球联动全局配置(对应 CFG_MASTERSLAVE_LINKAGE_INFO)
#define CFG_CMD_MASTERSLAVE_GROUP               "MasterSlaveGroup"          // 枪球联动绑定关系配置(对应 CFG_MASTERSLAVE_GROUP_INFO)
#define CFG_CMD_ANALYSEWHOLE                    "VideoAnalyseWhole"         // 视频分析整体配置(对应 CFG_ANALYSEWHOLE_INFO)
#define CFG_CMD_VIDEO_IN_BOUNDARY               "VideoInBoundary"           // 视频输入边界配置(对应 CFG_VIDEO_IN_BOUNDARY)
#define	CFG_CMD_MONITORWALL_COLLECTION          "MonitorWallCollection"     // 电视墙预案(对应 CFG_MONITORWALL_COLLECTION数组)
#define CFG_CMD_ANALOGMATRIX                    "AnalogMatrix"              // 模拟矩阵(对应 CFG_ANALOG_MATRIX_INFO)
#define CFG_CMD_ANALOG_MATRIX_PROTOCOL          "AnalogMatrixProtocol"      // 模拟矩阵协议配置(对应 CFG_ANALOG_MATRIX_PROTOCOL数组)
#define	CFG_CMD_VIDEO_OUT_TITLE                 "VideoOutputTitle"          // 视频输出标题(对应 CFG_VIDEO_OUT_TITLE)
#define CFG_CMD_DISK_FLUX_ALARM                 "DiskFluxAlarm"             // 硬盘数据流量报警配置(对应 CFG_DISK_FLUX_INFO)
#define CFG_CMD_NET_FLUX_ALARM                  "NetFluxAlarm"              // 网络数据流量报警配置(对应 CFG_NET_FLUX_INFO)
#define CFG_CMD_DVRIP                           "DVRIP"                     // 网络协议配置(对应 CFG_DVRIP_INFO)
#define CFG_CMD_PARKINGSPACE_SCREEN             "ParkingSpaceScreen"        // 和相机对接的区域屏配置(对应 CFG_PARKINGSPACE_SCREEN_INFO ,是数组,元素最大值是DH_PRODUCTION_DEFNITION.nMaxParkingSpaceScreen)
#define CFG_CMD_PARKINGSPACE_STATUS             "ParkingSpaceCellStatus"    // 车位设置(专有车位和普通车位设置)(对应 CFG_PARKINGSPACE_STATUS_INFO ,是数组,元素最大值是DH_PRODUCTION_DEFNITION.nMaxRoadWays)
#define CFG_CMD_CLIENT_CUSTOM_DATA              "ClientCustomData"          // 平台自定义信息(对应 CFG_CLIENT_CUSTOM_INFO)
#define CFG_CMD_BURN_RECORD_FORMAT              "BurnRecordFormat"          // 刻录格式配置(对应 CFG_BURN_RECORD_FORMAT)
#define CFG_CMD_MULTIBURN                       "MultiBurn"                 // 多光盘同步刻录(对应 CFG_MULTIBURN_INFO)是一个数组,每一个元素表示一组多光盘同步刻录及校验
#define	CFG_CMD_ENCODE_ENCRYPT                  "EncodeEncrypt"             // 编码加密配置信息( CFG_ENCODE_ENCRYPT_CHN_INFO )
#define CFG_CMD_VIDEO_IN_ZOOM                   "VideoInZoom"               // 云台通道变倍配置(对应 CFG_VIDEO_IN_ZOOM)
#define CFG_CMD_SNAP                            "Snap"                      // 抓图配置(对应 CFG_SNAP_INFO)
#define CFG_CMD_REMOTE_STORAGE_LIMIT            "RemoteStorageLimit"        // 网络存储服务器限制配置(对应 CFG_REMOTE_STORAGELIMIT_GROUP)
#define CFG_CMD_SPECIAL_DIR                     "SpecialDirectoryDefine"    // 特殊用途目录定义(对应 CFG_SPECIAL_DIR_INFO)
#define CFG_CMD_AUTO_STARTUP_DELAY              "AutoStartupDelay"          // 关机后延时自动开机配置(对应 CFG_AUTO_STARTUP_DELAY_INFO)
#define CFG_CMD_CANFILTER                       "CANFilter"                 // CAN透传配置(对应 CFG_CANFILTER_LIST)
#define CFG_CMD_VIDEOIN_FOCUS                   "VideoInFocus"              // 聚焦设置(对应 CFG_VIDEO_IN_FOCUS)
#define CFG_CMD_ENCODE_ADAPT                    "EncodeAdapt"               // 编码自适应配置(对应 CFG_ENCODE_ADAPT_INFO)
#define CFG_CMD_VIDEOANALYSE_CALIBRATE          "VideoAnalyseCalibrate"     // 视频分析标定配置(对应 CFG_VIDEO_ANALYSE_CALIBRATEAREA)
#define CFG_CMD_PTZ_PRESET                      "PtzPreset"                 // 云台预置点配置(对应结构 PTZ_PRESET_INFO)
#define CFG_CMD_TIMESPEEDLIMIT                  "TimeSpeedLimit"            // 时间段限速值配置(对应结构体 CFG_TIMESPEEDLIMIT_LIST)
#define CFG_CMD_VOICEALERT                      "VoiceAlert"                // 语音提示配置(对应结构体 CFG_VOICEALERT_LIST)
#define CFG_CMD_DEVICEKEEPALIVE                 "DeviceKeepAlive"           // 设备保活配置(对应结构体 CFG_DEVICEKEEPALIVELIST)

#define CFG_CMD_AUDIO_SPIRIT                    "AudioSpirit"               // 语音激励(对应 CFG_AUDIO_SPIRIT)
#define CFG_CMD_AUDIO_MATRIX_SILENCE            "AudioMatrixSilence"        // 静音矩阵配置(对应 CFG_AUDIO_MATRIX_SILENCE)
#define CFG_CMD_AUDIO_MATRIX                    "AudioMatrixConfig"         // 音频矩阵配置(对应 CFG_AUDIO_MATRIX)
#define CFG_CMD_COMPOSE_CHANNEL                 "ComposeChannel"            // 合成通道配置(对应 CFG_COMPOSE_CHANNEL)
#define CFG_CMD_COMPOSE_LINKAGE                 "ComposeLinkage"            // 合成通道配置  庭审主机使用,证物切换功能(对应 CFG_COMPOSE_CHANNEL)
#define CFG_CMD_LOWER_MATRIX                    "LowerMatrix"               // 下位矩阵配置(对应 CFG_LOWER_MATRIX_LIST) 
#define CFG_CMD_INFRARED_BOARD_TEMPLATE	        "InfraredBoardTemplate"	    // 红外面板模板(对应 CFG_INFRARED_BOARD_TEMPLATE_GROUP)
#define CFG_CMD_INFRARED_BOARD                  "InfraredBoard"	            // 红外面板模板(对应 CFG_INFRARED_BOARD_GROUP)
#define CFG_CMD_VIDEOIN_EXPOSURE                "VideoInExposure"           // 曝光设置(对应 CFG_VIDEOIN_EXPOSURE_INFO)
#define CFG_CMD_VIDEOIN_BACKLIGHT               "VideoInBacklight"          // 光线环境配置(对应CFG_VIDEOIN_BACKLIGHT_INFO)

#define CFG_CMD_ACCESS_GENERAL                  "AccessControlGeneral"      // 门禁基本配置(对应 CFG_ACCESS_GENERAL_INFO)
#define CFG_CMD_ACCESS_EVENT                    "AccessControl"             // 门禁事件配置(对应 CFG_ACCESS_EVENT_INFO 数组)     
#define CFG_CMD_WIRELESS                        "Wireless"                  // 无线网络连接设置(对应 CFG_WIRELESS_INFO)
#define CFG_CMD_ALARMSERVER                     "AlarmServer"               // 报警服务器配置(对应 CFG_ALARMCENTER_INFO)
#define CFG_CMD_COMMGLOBAL                      "CommGlobal"                // 报警全局配置(对应 CFG_COMMGLOBAL_INFO)
#define CFG_CMD_ANALOGALARM                     "AnalogAlarm"               // 模拟量报警通道配置(对应 CFG_ANALOGALARM_INFO)
#define CFG_CMD_ALARMOUT                        "AlarmOut"                  // 报警输出通道配置(对应 CFG_ALARMOUT_INFO)
#define CFG_CMD_NTP                             "NTP"                       // 时间同步服务器(对应 CFG_NTP_INFO)
#define CFG_CMD_ALARMBELL                       "AlarmBell"                 // 警号配置(对应 CFG_ALARMBELL_INFO)
#define CFG_CMD_MOBILE                          "Mobile"                    // 移动相关业务配置(对应 CFG_MOBILE_INFO)
#define CFG_CMD_PHONEEVENTNOTIFY                "PhoneEventNotify"          // (对应 CFG_PHONEEVENTNOTIFY_INFO)
#define CFG_CMD_PSTN_ALARM_SERVER               "PSTNAlarmServer"           // 电话报警中心配置(CFG_PSTN_ALARM_CENTER_INFO)
#define CFG_CMD_AUDIO_OUTPUT_VOLUME             "AudioOutputVolume"         // 音频输出音量(CFG_AUDIO_OUTPUT_VOLUME)
#define CFG_CMD_AUDIO_INPUT_VOLUME              "AudioInputVolume"          // 音频输入音量(CFG_AUDIO_INPUT_VOLUME)
#define CFG_CMD_LIGHT_GLOBAL					"LightGlobal"				// 指示灯控制配置 (CFG_LIGHT_GLOBAL)
#define	CFG_CMD_AUDIO_MIX_VOLUME                "AudioMixVolume"            // 混合音频音量,用于庭审主机(CFG_AUDIO_MIX_VOLUME)
#define CFG_CMD_ALARMKEYBOARD                   "AlarmKeyboard"             // 报警键盘配置(CFG_ALARMKEYBOARD_INFO)
#define CFG_CMD_POWERFAULT                      "PowerFault"                // 电源故障配置(CFG_POWERFAULT_INFO)
#define CFG_CMD_CHASSISINTRUSION                "ChassisIntrusion"          // 机箱入侵报警(防拆报警)配置(CFG_CHASSISINTRUSION_INFO)
#define CFG_CMD_EXALARMBOX                      "ExAlarmBox"                // 扩展报警盒配置 (CFG_EXALARMBOX_INFO)
#define CFG_CMD_EXALARMOUTPUT                   "ExAlarmOut"                // 扩展报警输出配置(CFG_EXALARMOUTPUT_INFO)
#define CFG_CMD_EXALARMINPUT                    "ExAlarm"                   // 扩展报警输入配置(CFG_EXALARMINPUT_INFO)
#define CFG_CMD_ACCESSTIMESCHEDULE              "AccessTimeSchedule"        // 门禁刷卡时间段(CFG_ACCESS_TIMESCHEDULE_INFO)
#define CFG_CMD_URGENCY                         "Emergency"                 // 紧急事件配置(CFG_URGENCY_INFO)
#define CFG_CMD_SENSORSAMPLING                  "SensorSampling"            // 传感器采样(CFG_SENSORSAMPLING_INFO)
#define CFG_CMD_STP                             "STP"                       // 环网配置(CFG_STP_INFO)
#define CFG_CMD_ALARM_SUBSYSTEM                 "AlarmSubSystem"            // 报警子系统配置(CFG_ALARM_SUBSYSTEM_INFO)
#define CFG_CMD_BATTERY_LOW_POWER               "BatteryLowPowerAlarm"      // 电池电量低配置(CFG_BATTERY_LOW_POWER_INFO)
#define CFG_CMD_SNAPLIKAGE                      "SnapLinkage"               // 抓图通道联动外设配置(CFG_SNAPLINKAGE_INFO)
#define CFG_CMD_AUDIOINPUT                      "AudioInput"                // 音频输入配置(CFG_AUDIO_INPUT)
#define CFG_CMD_EMAIL                           "Email"                     // 邮件发送配置(CFG_EMAIL_INFO)
#define CFG_CMD_TRAFFIC_TRANSFER_OFFLINE        "TrafficTransferOffline"    // 传输离线文件配置(TRAFFIC_TRANSFER_OFFLINE_INFO)
#define CFG_CMD_COMMSUBSCRIBE                   "CommSubscribe"             // 订阅串口数据配置(CFG_DEVCOMM_SUBSCRIBE)
#define CFG_CMD_PARKINGSPACE_LIGHT_STATE        "ParkingSpaceLightState"    // 车位状态对应的车位指示灯(CFG_PARKINGSPACE_LIGHT_STATE)
#define CFG_CMD_AIRCONDITION                    "AirCondition"              // 空调设备配置(CFG_AIRCONDITION_INFO)
#define CFG_CMD_COMPRESS_PLAY                   "CompressPlay"              // 压缩回放配置(CFG_COMPRESS_PLAY_INFO)
#define CFG_CMD_BUILDING                        "Building"                  // VTO楼层配置(CFG_BUILDING_INFO)
#define CFG_CMD_BUILDING_EXTERNAL               "BuildingExternal"          // VTO楼层扩展配置(CFG_BUILDING_EXTERNAL_INFO)
#define CFG_CMD_DIALRULE                        "DialRule"                  // 拨号规则(CFG_DIALRULE_INFO)
#define CFG_CMD_OIL_MASS_INFO                   "OilMassInfo"               // 车辆油箱配置(CFG_OIL_MASS_INFO)
#define CFG_CMD_FISHEYE_INFO                    "FishEye"                   // 鱼眼详细信息配置(CFG_FISHEYE_DETAIL_INFO)
#define CFG_CMD_VTNOANSWER_FORWARD              "VTNoAnswerForward"         // 平台下发呼叫无应答转移配置列表(CFG_VT_NOANSWER_FORWARD_INFO)
#define CFG_CMD_VTO_CALL                        "VTOCall"                   // VTO呼叫配置(CFG_VTO_CALL_INFO)
#define CFG_CMD_MACCONFLICT                     "MacConflict"               // MAC冲突报警配置(CFG_MACCONFLICT_INFO)
#define CFG_CMD_IDLEMOTION_INFO                 "IdleMotion"                // 空闲动作配置(CFG_IDLE_MOTION_INFO)
#define CFG_CMD_MONITORWALL_COLL_TOUR           "MonitorWallCollectionTour" // 电视墙预案轮巡配置(CFG_MONITORWALL_COLLECTION_TOUR_INFO)
#define CFG_CMD_PSTN_BREAK_LINE                 "PSTNBreakLine"             // PSTN断线事件配置(CFG_PSTN_BREAK_LINE_INFO)
#define CFG_CMD_NET_COLLECTION                  "NetCollection"             // 网络采集设备配置(CFG_NET_COLLECTION_INFO)
#define CFG_CMD_ALARM_SLOT_BOND                 "AlarmSlotBond"             // 虚拟Slot节点与具体物理设备的对应关系(CFG_ALARM_SLOT_BOND_INFO)
#define CFG_CMD_TRAFFICSTROBE                   "TrafficStrobe"             // 道闸配置(CFG_TRAFFICSTROBE_INFO)
#define CFG_CMD_TRAFFICVOICE                    "TrafficVoiceBroadcast"     // 智能交通语音播报配置( CFG_TRAFFICVOICE_BROADCAST)
#define CFG_CMD_STANDING_TIME                   "StandingTime"              // 停车时间配置(CFG_STANDING_TIME_INFO)
#define CFG_CMD_ENCLOSURE_TIME_SCHEDULE         "EnclosureTimeSchedule"     // 电子围栏报警时间段配置(CFG_ENCLOSURE_TIME_SCHEDULE_INFO)
#define CFG_CMD_ECKCONFIG                       "ECKConfig"                 // 停车场出入口控制器配置(CFG_ECKCONFIG_INFO)
#define CFG_CMD_PARKING_CARD                    "ParkingCard"               // 停车场出入口刷卡报警事件配置(CFG_PARKING_CARD_INFO)
#define CFG_CMD_RCEMERGENCY_CALL                "RCEmergencyCall"           // 紧急呼叫报警事件配置(CFG_RCEMERGENCY_CALL_INFO)
#define CFG_CMD_LANES_STATE_REPORT              "LanesStateReport"          // 车道信息上报配置(CFG_LANES_STATE_REPORT)
#define CFG_CMD_OPEN_DOOR_GROUP                 "OpenDoorGroup"             // 多人多开门方式组合配置(CFG_OPEN_DOOR_GROUP_INFO)
#define CFG_CMD_OPEN_DOOR_ROUTE                 "OpenDoorRoute"             // 开门路线集合,或称防反潜路线配置(CFG_OPEN_DOOR_ROUTE_INFO)
#define CFG_CMD_BURNPLAN                        "BurnPlan"                  // 刻录计划配置(对应 CFG_BURNPLAN_INFO)
#define CFG_CMD_SCADA_DEV                       "SCADADev"                  // 检测采集设备配置(CFG_SCADA_DEV_INFO)
#define CFG_CMD_VSP_GAYS                        "VSP_GAYS"                  // 公安一所平台接入配置(CFG_VSP_GAYS_INFO)
#define CFG_CMD_AUDIODETECT                     "AudioDetect"               // 音频检测报警配置(CFG_AUDIO_DETECT_INFO数组)
#define CFG_CMD_GUIDESCREEN                     "GuideScreen"               // 诱导屏系统配置(CFG_GUIDESCREEN_INFO)
#define CFG_CMD_VTS_CALL_INFO                   "VTSCallInfo"               // VTS呼叫配置(CFG_VTS_CALL_INFO)
#define CFG_CMD_DEV_LIST                        "DevList"                   // 设备列表配置(CFG_DEV_LIST_INFO)
#define CFG_CMD_CALIBRATE_MATRIX                "CalibrateMatrix"           // 主从式跟踪器标定矩阵配置(CFG_CALIBRATE_MATRIX_INFO, 新配置对应CFG_CALIBRATE_MATRIX_EX_INFO)
#define CFG_CMD_DEFENCE_AREA_DELAY              "DefenceAreaDelay"          // 防区延时配置(CFG_DEFENCE_AREA_DELAY_INFO)
#define CFG_CMD_THERMO_GRAPHY                   "ThermographyOptions"       // 热成像摄像头属性配置(CFG_THERMOGRAPHY_INFO)
#define CFG_CMD_THERMOMETRY_RULE                "ThermometryRule"           // 热成像测温规则配置(CFG_RADIOMETRY_RULE_INFO)
#define CFG_CMD_TEMP_STATISTICS                 "TemperatureStatistics"     // 温度统计配置(CFG_TEMP_STATISTICS_INFO)
#define CFG_CMD_THERMOMETRY                     "HeatImagingThermometry"    // 热成像测温全局配置(CFG_THERMOMETRY_INFO)
#define CFG_CMD_FLAT_FIELD_CORRECTION           "FlatFieldCorrection"       // 热成像平场聚焦校准配置(CFG_FLAT_FIELD_CORRECTION_INFO)
#define CFG_CMD_THERMO_FUSION                   "ThermographyFusion"        // 热成像视频融合配置(CFG_THERMO_FUSION_INFO)
#define CFG_CMD_LCE_STATE                       "LCEState"                  // 热成像自研机芯中摄像头属性的局部对比度增强配置(CFG_LCE_STATE_INFO)
#define CFG_CMD_LIGHTING                        "Lighting"                  // 灯光设置(CFG_LIGHTING_INFO)
#define CFG_CMD_RAINBRUSHMODE                   "RainBrushMode"             // 雨刷模式相关配置(对应 CFG_RAINBRUSHMODE_INFO数组)
#define CFG_CMD_LIGHTINGSCHEDULE                "LightingSchedule"          // 灯光计划配置(对应 CFG_LIGHTINGSCHEDULE_INFO)
#define CFG_CMD_EMERGENCY_RECORD_FOR_PULL       "EmergencyRecordForPull"    // 紧急录像存储配置,用于客户端主动拉的方式。在客户端拉流存储异常之后,进行紧急录像存储(CFG_EMERGENCY_RECORD_FOR_PULL_INFO)
#define CFG_CMD_ALARM_SHIELD_RULE               "AlarmShieldRule"           // 告警屏蔽规则( CFG_ALARM_SHIELD_RULE_INFO)
#define CFG_CMD_VIDEOIN_ANALYSERULE             "VideoInAnalyseRule"        // 视频通道智能规则配置(CFG_VIDEOIN_ANALYSE_RULE_INFO)
#define CFG_CMD_ACCESS_WORK_MODE                "AccessWorkMode"            // 门锁工作模式(对应 CFG_ACCESS_WORK_MODE_INFO 数组)
#define CFG_CMD_VIDEO_TALK_PHONE_GENERAL        "VideoTalkPhoneGeneral"     // 视频对讲电话通用配置(CFG_VIDEO_TALK_PHONE_GENERAL)
#define CFG_CMD_TRAFFIC_SNAP_MOSAIC             "TrafficSnapMosaic"         // 抓图合成配置(对应 CFG_TRAFFIC_SNAP_MOSAIC_INFO)
#define CFG_CMD_SCENE_SNAP_RULE                 "SceneSnapShotWithRule"     // 场景抓拍设置(对应 CFG_SCENE_SNAPSHOT_RULE_INFO)
#define CFG_CMD_PTZTOUR                         "PtzTour"                   // 云台巡航路径配置(对应 CFG_PTZTOUR_INFO)
#define CFG_CMD_VTO_INFO                        "VTOInfo"                   // 门口机配置(对应 CFG_VTO_LIST)
#define CFG_CMD_TS_POINT                        "TSPoint"                   // 触摸屏校准配置(对应 CFG_TSPOINT_INFO)
#define CFG_CMD_VTH_NUMBER_INFO                 "VTHNumberInfo"             // 室内机号码信息(对应 CFG_VTH_NUMBER_INFO)
#define CFG_CMD_GPS                             "GPS"                       // GPS配置(对应 CFG_GPS_INFO_ALL)
#define CFG_CMD_VTO_BASIC_INFO                  "VTOBasicInfo"              // VTO基本信息 (对应 CFG_VTO_BASIC_INFO)
#define CFG_CMD_SHORTCUT_CALL                   "ShortcutCall"              // 快捷号配置 (对应 CFG_SHORTCUT_CALL_INFO)
#define CFG_CMD_GPS_LOCATION_VER                "GPSLocationVersion"        // 记录集GPSLocation的版本号(对应 CFG_LOCATION_VER_INFO)
#define CFG_CMD_PARKING_SPACE_ACCESS_FILTER     "ParkingSpaceAccessFilter"  // 设备可访问地址过滤配置(对应 CFG_PARKING_SPACE_ACCESS_FILTER_INFO)
#define CFG_CMD_WORK_TIME                       "WorkTime"                  // 工作时间配置(对应 CFG_WORK_TIME_INFO)
#define CFG_CMD_PARKING_SPACE_LIGHT_GROUP       "ParkingSpaceLightGroup"    // 车位指示灯本机配置(对应 CFG_PARKING_SPACE_LIGHT_GROUP_INFO_ALL)
#define CFG_CMD_CUSTOM_AUDIO                    "CustomAudio"               // 自定义音频配置(CFG_CUSTOM_AUDIO)
#define CFG_CMD_WIFI_SEARCH                     "AroudWifiSearch"           // 设备通过wifi模块扫描周围无线设备配置(对应 CFG_WIFI_SEARCH_INFO)
#define CFG_CMD_G3G4AUTOCHANGE                  "G3G4AutoChange"            // 车载设备通信模块3G 4G自动切换(CFG_G3G4AUTOCHANGE)
#define CFG_CMD_CHECKCODE                       "CheckCode"                 // 刷卡机校验码校验配置(对应 CFG_CHECKCODE_INFO)
#define CFG_CMD_VSP_SCYDKD                      "VSP_SCYDKD"                // 四川移动看店启迪平台接入配置(对应 CFG_VSP_SCYDKD_INFO)
#define CFG_CMD_VIDEOIN_DAYNIGHT                "VideoInDayNight"           // 球机机芯日夜配置(对应 CFG_VIDEOIN_DAYNIGHT_INFO)
#define CFG_CMD_PTZ_POWERUP                     "PowerUp"                   // 云台开机动作设置(对应 CFG_PTZ_POWERUP_INFO)
#define CFG_CMD_AUDIO_MIX_CHANNEL               "AudioMixChannel"           // 配置定义每个纯音频通道的组成(对应 CFG_AUDIO_MIX_CHANNEL_INFO_ALL)
#define CFG_CMD_AUDIO_TOUCH                     "AudioTouch"                // 变音,对音调进行变化(对应 CFG_AUDIO_TOUCH_INFO_ALL)
#define	CFG_CMD_VIDEO_MOSAIC                    "VideoMosaic"               // 马赛克叠加配置(对应CFG_VIDEO_MOSAIC_INFO)
#define CFG_CMD_VTH_REMOTE_IPC_INFO             "VTHRemoteIPCInfo"          // VTH中远程IPC配置(对应 CFG_VTH_REMOTE_IPC_INFO),该配置是全局的,不区分通道
#define CFG_CMD_UNFOCUSDETECT                   "UnFocusDetect"             // 虚焦检测配置(对应CFG_UNFOCUSDETECT_INFO)
#define	CFG_CMD_MOVE_DETECT                     "MovedDetect"               // 场景变更检测配置(对应CFG_MOVE_DETECT_INFO)
#define CFG_CMD_FLOODLIGHT                      "Floodlight"                // 防护舱照明灯控制配置(对应 CFG_FLOODLIGHT_CONTROLMODE_INFO)
#define CFG_CMD_AIRFAN                          "AirFan"                    // 防护舱风扇控制配置(对应 CFG_AIRFAN_CONTROLMODE_INFO)
#define CFG_CMD_WLAN                            "WLan"                      // WLAN配置(对应 CFG_NETAPP_WLAN)
#define CFG_CMD_SMART_ENCODE                    "SmartEncode"               // Smart H264编码方式(对应 CFG_SMART_ENCODE_INFO)
#define CFG_CMD_VEHICLE_HIGH_SPEED              "HighSpeed"                 // 车载高速报警配置(对应 CFG_VEHICLE_HIGHSPEED_INFO )
#define CFG_CMD_VEHICLE_LOW_SPEED               "LowSpeed"                  // 车载低速报警配置(对应 CFG_VEHICLE_LOWSPEED_INFO )
#define CFG_CMD_PSTN_PERSON_SERVER              "PSTNPersonServer"          // 个人电话接机配置(对应 CFG_PSTN_PERSON_SERVER_INFO_ALL )
#define CFG_CMD_ARM_LINK                        "ArmLink"                   // 布撤防联动配置(对应 CFG_ARMLINK_INFO )
#define CFG_CMD_CABINLED_TIME_SCHEDULE          "CabinLedTimeSchedule"      // 防护舱Led显示计划配置(对应 CFG_CABINLED_TIME_SCHEDULE)
#define CFG_CMD_PSTN_TESTPLAN                   "PSTNTestPlan"              // PSTN 测试计划配置(对应 CFG_PSTN_TESTPLAN_INFO)
#define CFG_CMD_DEFENCE_ARMMODE                 "DefenceArmMode"            // 单防区布撤防使能配置(对应 CFG_DEFENCE_ARMMODE_INFO)
#define CFG_CMD_SENSORMODE                      "SensorMode"                // 探测器安装工作模式配置(对应 CFG_SENSORMODE_INFO)
#define CFG_CMD_ALARMLAMP                       "AlarmLamp"                 // 警灯配置(对应 CFG_ALARMLAMP_INFO)
#define CFG_CMD_RADAR_SPEED_MEASURE             "RadarSpeedMeasure"         // 雷达测速配置 智能楼宇专用(对应 CFG_RADAR_SPEED_MEASURE_INFO)
#define CFG_CMD_VIDEOINDEFOG                    "VideoInDefog"              // 透雾设置配置(对应结构体 CFG_VIDEOINDEFOG_LIST)
#define CFG_CMD_RTMP                            "RTMP"                      // RTMP配置(对应结构体 CFG_RTMP_INFO)
#define CFG_CMD_AUDIO_OUT_EQUALIZER             "AudioOutEqualizer"         // 音频输出均衡器配置(对应结构体CFG_AUDIO_OUTEQUALIZER_INFO)
#define CFG_CMD_AUDIO_OUT_SUPPRESSION           "AudioOutSuppression"       // 音频抑制设置(对应结构体CFG_AUDIO_SUPPRESSION_INFO)
#define CFG_CMD_AUDIO_IN_CONTROL                "AudioInControl"            // 音频输入控制(对应结构体CFG_AUDIO_INCONTROL_INFO)
#define CFG_CMD_LASER_DIST_MEASURE              "LaserDistMeasure"          // 激光测距器配置(对应结构体 CFG_LASER_DIST_MEASURE_INFO)
#define CFG_CMD_OIL_4G_OVERFLOW                 "Oil4GFlow"                 // 福山油田4G流量阈值及模式配置(对应结构体 CFG_OIL_4G_OVERFLOW_INFO)
#define CFG_CMD_OIL_VIDEOWIDGET_4G_FLOW         "VideoWidget4GFlow"         // 福山油田4G流量OSD叠加配置(对应结构体 CFG_OIL_VIDEOWIDGET_4G_FLOW_INFO)
#define CFG_CMD_ATMOSPHERE_OSD                  "AtmosphereOSD"             // 气象信息叠加配置(对应结构体 CFG_CMD_ATMOSPHERE_OSD_INFO)
#define CFG_CMD_PARK_SPACE_OUT_LIGHT            "ParkSpaceOutLight"         // 外接指示灯配置(对应结构体 CFG_PARK_SPACE_OUT_LIGHT_INFO)
#define CFD_CMD_VTO_CALL_INFO_EXTEND            "VTOCallInfo"               // VTO呼叫配置扩展(对应结构体CFG_VTO_CALL_INFO_EXTEND)
#define CFG_CMD_ACCESS_TEXTDISPLAY              "AccessControlTextDisplay"  // 门禁文字提示显示配置(对应结构体 CFG_ACCESS_TEXTDISPLAY_INFO)
#define	CFG_CMD_NETNVR_ENCRYPT                  "NvrEncrypt"                // 杭师大视频加密项目配置信息,涉及IPC和NVR( CFG_NETNVR_ENCRYPT_INFO )
#define CFG_CMD_LIGHT                           "Light"                     // 灯光设备配置 (对应结构体 CFG_LIGHT_INFO)
#define CFG_CMD_CURTAIN                         "Curtain"                   // 窗帘配置(对应结构体 CFG_CURTAIN_INFO)
#define CFG_CMD_FRESH_AIR                       "FreshAir"                  // 新风配置(对应结构体 CFG_FRESH_AIR_INFO)
#define CFG_CMD_GROUND_HEAT                     "GroundHeat"                // 地暖配置(对应结构体 CFG_GROUND_HEAT_INFO)
#define CFG_CMD_SCENE_MODE                      "SceneMode"                 // 情景模式(对应结构体 CFG_SCENE_MODE_INFO)
#define CFG_CMD_AIO_APP_CONFIG                  "AIOAppConfig"              // 渝北智慧天网参数设置(对应结构体 CFG_AIO_APP_CONFIG_INFO)
#define CFG_CMD_HTTPS                           "Https"                     // Https服务配置(对应结构体 CFG_HTTPS_INFO)
#define CFG_CMD_NETAUTOADAPTORENCODE            "NetAutoAdaptEncode"        // 网络自适应编码配置(对应结构体 CFG_NET_AUTO_ADAPT_ENCODE)
#define CFG_CMD_USERLOCKALARM                   "UserLockAlarm"             // 登陆锁定配置(对应结构体 CFG_USERLOCKALARM_INFO)
#define CFG_CMD_STROBOSCOPIC_LAMP               "StroboscopicLamp"          // 频闪灯配置(对应结构体 CFG_STROBOSCOPIC_LAMP_INFO)
#define CFG_CMD_FREECOMBINATION                 "FreeCombination"           // 自由分割模式的窗口配置 CFG_FREECOMBINATION_INFO )
#define CFG_CMD_IOT_INFRARED_DETECT             "IOT_InfraredDetect"        // 物联网红外检测配置(对应结构体CFG_IOT_INFRARED_DETECT_INFO)
#define CFG_CMD_IOT_RECORD_HANDLE               "IOT_RecordHandle"          // 物联网录像联动配置(对应结构体CFG_IOT_RECORD_HANDLE_INFO)
#define CFG_CMD_IOT_SNAP_HANDLE                 "IOT_SnapHandle"            // 物联网抓图联动配置(对应结构体CFG_IOT_SNAP_HANDLE_INFO)
#define CFG_CMD_PLATFORM_MONITOR_IPC            "PlatformMonitorIPC"        // 平台侧监视IPC配置 CFG_PLATFORMMONITORIPC_INFO )
#define CFG_CMD_CALLFORWARD                     "CallForward"               // 呼叫转移配置(对应结构体 CFG_CALLFORWARD_INFO)
#define CFD_CMD_DOORBELLSOUND                   "DoorBellSound"             // 门铃配置(对应结构体CFG_DOOR_BELLSOUND_INFO)
#define CFG_CMD_TELNET                          "Telnet"                    // telnet配置(对应结构体CFG_TELNET_INFO)
#define CFG_CMD_OSDSYSABNORMAL                  "OSDSysAbnormal"            // 显示异常信息的叠加配置(对应结构体 CFG_OSD_SYSABNORMAL_INFO)
#define CFG_CMD_VIDEO_WIDGET2                   "VideoWidget2"              // 视频编码物件配置(对应结构体 CFG_VIDEO_WIDGET2_INFO)
#define CFG_CMD_VIDEOWIDGET_NUMBERSTAT          "VideoWidgetNumberStat"     // 人数统计叠加OSD配置(对应结构体 CFG_VIDEOWIDGET_NUMBERSTAT_INFO)
#define CFG_CMD_PRIVACY_MASKING	                "PrivacyMasking"            // 隐私遮挡设置(对应结构体 CFG_PRIVACY_MASKING_INFO)
#define CFG_CMD_DEVICE_INFO                     "DeviceInfo"                // 设备信息(对应结构体 CFG_DEVICE_INFO)
#define CFG_CMD_POLICEID_MAP_INFO               "PoliceMap"                 // 警员ID和设备通道映射关系信息(对应结构体 CFG_POLICEID_MAP_INFO)
#define CFG_CMD_GPS_NOT_ALIGNED                 "GpsNotAligned"             // GPS未定位配置(对应结构体 CFG_GPS_NOT_ALIGNED_INFO) 
#define CFG_CMD_WIRELESS_NOT_CONNECTED          "WireLessNotConnected"      // 网络未连接(包括wifi,3G/4G)配置(对应结构体 CFG_WIRELESS_NOT_CONNECTED_INFO)
#define CFG_CMD_MCS_GENERAL_CAPACITY_LOW		"MCSGeneralCapacityLow"		// 微云常规容量告警配置(对应结构体CFG_MCS_GENERAL_CAPACITY_LOW)
#define CFG_CMD_MCS_DATA_NODE_OFFLINE			"MCSDataNodeOffline"		// 微云存储节点下线(对应结构体CFG_MCS_DATA_NODE_OFFLINE)
#define CFG_CMD_MCS_DISK_OFFLINE				"MCSDiskOffline"			// 微云磁盘下线告警配置(对应结构体CFG_MCS_DISK_OFFLINE)
#define CFG_CMD_MCS_DISK_SLOW					"MCSDiskSlow"				// 微云磁盘变慢告警配置(对应结构体CFG_MCS_DISK_SLOW)
#define CFG_CMD_MCS_DISK_BROKEN					"MCSDiskBroken"				// 微云磁盘损坏告警配置(对应结构体CFG_MCS_DISK_BROKEN)
#define CFG_CMD_MCS_DISK_UNKNOW_ERROR			"MCSDiskUnknowError"		// 微云磁盘未知错误告警配置(对应结构体CFG_MCS_DISK_UNKNOW_ERROR)
#define CFG_CMD_MCS_METADATA_SERVER_ABNORMAL	"MCSMetadataServerAbnormal" // 微云元数据服务器异常告警配置(对应结构体CFG_MCS_METADATA_SERVER_ABNORMAL)
#define CFG_CMD_MCS_CATALOG_SERVER_ABNORMAL		"MCSCatalogServerAbnormal"	// 微云目录服务器异常告警配置(对应结构体CFG_MCS_CATALOG_SERVER_ABNORMAL)
#define CFG_CMD_MCS_GENERAL_CAPACITY_RESUME		"MCSGeneralCapacityResume"	// 微云常规容量告警恢复告警配置(对应结构体CFG_MCS_GENERAL_CAPACITY_RESUME)
#define CFG_CMD_MCS_DATA_NODE_ONLINE			"MCSDataNodeOnline"			// 微云存储节点上线告警配置(对应结构体CFG_MCS_DATA_NODE_ONLINE)
#define CFG_CMD_MCS_DISK_ONLINE					"MCSDiskOnline"				// 微云磁盘上线告警配置(对应结构体CFG_MCS_DISK_ONLINE)
#define CFG_CMD_MCS_METADATA_SLAVE_ONLINE		"MCSMetadataSlaveOnline"	// 微云元数据备机上线告警配置(对应结构体CFG_MCS_METADATA_SLAVE_ONLINE)
#define CFG_CMD_MCS_CATALOG_SERVER_ONLINE		"MCSCatalogServerOnline"	// 微云目录服务器上线告警配置(对应结构体CFG_MCS_CATALOG_SERVER_ONLINE)
#define CFG_CMD_SECURITY_ALARMS_PRIVACY         "SecurityAlarmsPrivacy"     // SecurityAlarms客户定制功能,隐私保护(对应结构体CFG_SECURITY_ALARMS_PRIVACY)
#define CFG_CMD_NO_FLY_TIME                     "NoFlyTime"                 // 无人机禁飞时段配置 ( 对应结构体 CFG_NO_FLY_TIME_INFO )
#define CFG_CMD_PWD_RESET                       "PwdReset"                  // 密码重置功能使能配置 ( 对应结构体 CFG_PWD_RESET_INFO )
#define	CFG_CMD_NET_MONITOR_ABORT				"NetMonitorAbort"			// 网络监视中断事件配置( 对应结构体 CFG_NET_MONITOR_ABORT_INFO )
#define CFG_CMD_LOCAL_EXT_ALARM                 "LocalExtAlarm"             // 本地扩展报警配置 ( 对应结构体 CFG_LOCAL_EXT_ALARME_INFO )
#define CFG_CMD_ACCESSCONTROL_DELAYSTRATEGY     "DelayStrategy"             // 门禁卡欠费与预欠费状态配置(对应结构体 CFG_ACCESSCONTROL_DELAYSTRATEGY)
#define	CFG_CMD_VIDEO_TALK_PHONE_BASIC			"VideoTalkPhoneBasic"		// 视频对讲电话基础配置( 对应结构体 CFG_VIDEO_TALK_PHONE_BASIC_INFO )
#define CFG_CMD_APP_EVENT_LANGUAGE				"AppEventLanguage"			// 手机推送消息的翻译目标语言配置(对应结构体 CFG_APP_EVENT_LANGUAGE_INFO )
#define CFG_CMD_LOGIN_FAILURE_ALARM				"LoginFailureAlarm"			// 登陆失败报警配置(对应结构体 CFG_LOGIN_FAILURE_ALARM)
#define CFG_CMD_DROPBOXTOKEN                    "DropBoxToken"              // Dropbox Token 配置( 对应结构体 CFG_DROPBOXTOKEN_INFO)
#define CFG_CMD_IDLINGTIME						"IdlingTime"				// 怠速配置(对应结构体 CFG_IDLINGTIME_INFO) 
#define CFG_CMD_CARDIVERSTATE					"CarDiverState"				// 汽车行驶状态配置(对应结构体 CFG_CARDIVERSTATE_INFO)
#define CFG_CMD_VEHICLE							"Vehicle"					// 车载配置(对应结构体 CFG_VEHICLE_INFO)
#define CFG_CMD_PTZDEVICE                       "PtzDevice"                 // 模拟云台配置( 对应结构体 CFG_PTZDEVICE_INFO)
#define CFG_CMD_DEVLOCATION                     "DevLocation"               // 设备安装位置的GPS坐标信息( 对应结构体 CFG_DEVLOCATION_INFO)
#define CFG_CMD_SMARTHOME_SCENELIST				"SmartHomeSceneList"		//美的地产智能家居场景列表(对应结构体CFG_SMARTHOME_SCENELIST_INFO)
#define CFG_CMD_LIGHTING_V2						"Lighting_V2"				//全彩相机补光灯灵敏度配置(对应结构体 CFG_LIGHTING_V2_INFO)
#define CFG_CMD_KBUSER_PASSWORD					"KbuserPassword"            // 键盘操作员用户配置(对应结构体CFG_KBUSER_USERS_INFO)
#define	CFG_CMD_ACCESS_OEM						"AccessOEMSettings"			//工行金库门禁信息配置,对应结构体CFG_ACCESS_OEM_INFO
#define CFG_CMD_FIRE_WARNING_EXT				"FireWarningExt"			// 火警配置扩展(对应结构体CFG_FIREWARNING_EXT_INFO)
#define CFG_CMD_LOCATION_CALIBRATE				"LocationCalibrate"			// 设备参数标定配置(对应结构体CFG_LOCATION_CALIBRATE_INFO)
#define	CFG_CMD_THERM_DENOISE					"ThermDenoise"				//热成像特有的机芯降噪,对应结构体CFG_THERM_DENOISE
#define	CFG_CMD_CONSTANT_LAMP					"ConstantLamp"				//智能交通灯光配置,对应结构体CFG_CONSTANT_LAMP_INFO
#define	CFG_CMD_TRAFFIC_IO					    "TrafficIO"				    //线圈IO配置,对应结构体CFG_TRAFFIC_IO
#define	CFG_CMD_MONITOR_WALL_COLLECTION_MAP		"MonitorWallCollectionMap"  // 电视墙预关联配置,对应结构体CFG_MONITOR_WALL_COLLECTION_MAP_INFO,通道只支持传-1
#define	CFG_CMD_VIDEO_INPUT_GROUP		        "VideoInputGroup"           // 视频输入组配置,对应结构体CFG_VIDEO_INPUT_GROUP_INFO 
#define	CFG_CMD_DOOR_NOT_CLOSE					"DoorNotClosed"				// 门未关报警,对应结构体 CFG_DOOR_NOT_CLOSE_INFO
#define	CFG_CMD_BREAK_IN						"BreakIn"					// 闯入报警,对应结构体 CFG_BREAK_IN_INFO
#define	CFG_CMD_ANTI_PASSBACK					"AntiPassback"				// 反潜回报警,对应结构体 CFG_ANTI_PASSBACK_INFO
#define	CFG_CMD_DURESS							"Duress"					// 胁迫报警,对应结构体 CFG_DURESS_INFO
#define	CFG_CMD_MALICIOUS_ACCESSCONTROL			"MaliciousAccessControl"	// 非法超次报警报警,对应结构体 CFG_DOOR_MALICIOUS_ACCESSCONTROL_INFO
#define CFG_CMD_REGULATOR_DETECT				"RegulatorDetect"			// 标准黑体源异常报警,对应结构体 CFG_REGULATOR_DETECT_INFO. 热成像通道有效

#define CFG_CMD_REMOTE_ANALYSEGLOBAL                   "RemoteVideoAnalyseGlobal"        // 远程视频分析全局配置(对应 CFG_ANALYSEGLOBAL_INFO)
#define CFG_CMD_REMOTE_ANALYSEMODULE                   "RemoteVideoAnalyseModule"        // 远程物体的检测模块配置(对应 CFG_ANALYSEMODULES_INFO)
#define CFG_CMD_REMOTE_ANALYSERULE                     "RemoteVideoAnalyseRule"          // 远程视频分析规则配置(对应 CFG_ANALYSERULES_INFO)

/************************************************************************
 ** 能力集命令  对应CLIENT_QueryNewSystemInfo/CLIENT_QueryNewSystemInfoEx
 ***********************************************************************/

#define CFG_CAP_CMD_VIDEOANALYSE                "devVideoAnalyse.getCaps"                   // 视频分析能力集(对应 CFG_CAP_ANALYSE_INFO, pExtendInfo 对应 CFG_CAP_ANALYSE_REQ_EXTEND_INFO)
#define CFG_CAP_CMD_VIDEOANALYSE_EX             "devVideoAnalyse.getCapsEx"                 // 视频分析能力集(对应CFG_CAP_ANALYSE_INFO_EX)
#define CFG_CAP_CMD_REMOTE_VIDEOANALYSE         "devRemoteVideoAnalyse.getCaps"             // 远程视频分析能力集(对应CFG_CAP_ANALYSE_INFO)
#define CFG_NETAPP_REMOTEDEVICE	                "netApp.getRemoteDeviceStatus"              // 获取后端设备的的在线状态(对应CFG_REMOTE_DEVICE_STATUS)
#define CFG_CAP_CMD_PRODUCTDEFINITION           "magicBox.getProductDefinition"             // 接入设备信息(对应 CFG_PRODUCT_DEFINITION_INFO)
#define CFG_DEVICE_CAP_CMD_VIDEOANALYSE         "intelli.getVideoAnalyseDeviceChannels"     // 设备智能分析能力(对应CFG_CAP_DEVICE_ANALYSE_INFO)兼容老设备
#define CFG_DEVICE_CAP_NEW_CMD_VIDEOANALYSE     "devVideoAnalyse.factory.getCollect"        // 设备智能分析能力(对应CFG_CAP_DEVICE_ANALYSE_INFO)
#define CFG_CAP_CMD_CPU_COUNT                   "magicBox.getCPUCount"                      // 获得CPU个数
#define CFG_CAP_CMD_CPU_USAGE                   "magicBox.getCPUUsage"                      // 获取CPU占用率
#define CFG_CAP_CMD_MEMORY_INFO                 "magicBox.getMemoryInfo"                    // 获得内存容量
#define	CFG_CAP_CMD_DEVICE_CLASS 				"magicBox.getDeviceClass"					// 获取设备类型(对应CFG_DEVICE_CLASS_INFO)
#define CFG_CAP_CMD_DEVICE_STATE                "trafficSnap.getDeviceStatus"               // 获取设备状态信息 (对应CFG_CAP_TRAFFIC_DEVICE_STATUS)
#define CFG_CAP_CMD_VIDEOINPUT                  "devVideoInput.getCaps"                     // 视频输入能力集(对应CFG_CAP_VIDEOINPUT_INFO)
#define CFG_USERMANAGER_ACTIVEUSER              "userManager.getActiveUserInfoAll"          // 得到所有活动的用户信息(对应 CFG_ACTIVEALLUSER_INFO)
#define CFG_CAP_VIDEOSTAT_SUMMARY               "videoStatServer.getSummary"                // 获取视频统计摘要信息(对应CFG_VIDEOSATA_SUMMARY_INFO)
#define CFG_CAP_CMD_VIDEODIAGNOSIS_SERVER       "videoDiagnosisServer.getCaps"              // 获取视频诊断服务能力(CFG_VIDEODIAGNOSIS_CAPS_INFO)
#define CFG_CMD_VIDEODIAGNOSIS_GETCOLLECT       "videoDiagnosisServer.factory.getCollect"   // 获取视频诊断通道数目(CFG_VIDEODIAGNOSIS_GETCOLLECT_INFO)
#define CFG_CMD_VIDEODIAGNOSIS_GETSTATE         "videoDiagnosisServer.getState"             // 获取视频诊断进行状态(CFG_VIDEODIAGNOSIS_STATE_INFO)
#define CFG_CAP_CMD_SERVICE_LIST                "system.listService"                        //获取服务器上支持的服务列表(CFG_DEV_SERVICE_LIST)
#define CFG_CAP_CMD_EVENTHANDLER                "capsManager.get&EventManagerEventHandler"  // 获取服务器报警联动能力集(CFG_CAP_EVENTHANDLER_INFO)
#define CFG_CAP_ALARM                           "alarm.getAlarmCaps"                        // 获取报警能力集(CFG_CAP_ALARM_INFO)
#define CFG_CAP_CMD_AUDIO_ANALYSE               "devAudioAnalyse.getCaps"                   // 获取音频分析能力集(CFG_CAP_AUDIO_ANALYSE_INFO)
#define CFG_CMD_MASTERSLAVE_GETCOLLECT          "masterSlaveTracker.factory.getCollect"     // 获取主从式跟踪器通道数目(对应结构体CFG_MASTERSLAVETRACKER_INFO)
#define CFG_CAP_CMD_MASTERSLAVE                 "capsManager.get&MasterSlaveTracker"        // 获取主从式设备能力集(CFG_CAP_MASTERSLAVE_INFO)
#define CFG_CAP_CMD_FOCUS_STATE                 "devVideoInput.getFocusStatus"              // 获取镜头聚焦状态信息 (对应CFG_CAP_FOCUS_STATUS)
#define CFG_CAP_CMD_NETAPP                      "netApp.getCaps"                            // 获取网络应用能力集(对应CFG_CAP_NETAPP)
#define CFG_CAP_CMD_PTZ_ENABLE                  "ptz.factory.instance"                      // 获取云台支持信息(CFG_CAP_PTZ_ENABLEINFO )
#define CFG_CAP_CMD_RECORD                      "recordManager.getCaps"                     // 获取录像能力集(CFG_CAP_RECORD_INFO)
#define CFG_CAP_CMD_BURN_MANAGER                "BurnManager.getCaps"                       // 获取刻录管理能力集( CFG_CAP_BURN_MANAGER)
#define CFG_CAP_CMD_PTZ                         "ptz.getCurrentProtocolCaps"                // 获取云台能力集(CFG_PTZ_PROTOCOL_CAPS_INFO)
#define CFG_CMD_ENCODE_GETCAPS                  "encode.getCaps"                            // 获取编码能力集(CFG_ENCODECAP)
#define CFG_CAP_CMD_VIDEOINPUT_EX               "devVideoInput.getCapsEx"                   // 视频输入能力集扩展(对应CFG_CAP_VIDEOINPUT_INFO_EX)
#define CFG_CAP_CMD_ANALYSE_MODE                "intelli.getCaps.AnalyseMode"               // 获取设备智能分析模式(对应 CFG_ANALYSE_MODE)
#define CFG_CAP_CMD_EVENTMANAGER                "eventManager.getCaps"                      // 获取设备报警联动能力,老协议已废除,新开发请使用该字段(CFG_CAP_EVENTMANAGER_INFO)
#define CFG_CAP_CMD_REMOTE_EVENTMANAGER         "RemoteEventManager.getCaps"                // 获取远程设备事件整体联动能力集(对应 CFG_CAP_EVENTMANAGER_INFO) 
#define CFG_CAP_CMD_FILEMANAGER	                "FileManager.getCaps"                       // 获取文件能力(CFG_CAP_FILEMANAGER)
#define	CFG_CAP_CMD_LOG                         "log.getCaps"                               // 获取日志服务能力(CFG_CAP_LOG)
#define CFG_CAP_CMD_SPEAK                       "speak.getCaps"                             // 扬声器播放能力(CFG_CAP_SPEAK)
#define CFG_CAP_CMD_ACCESSCONTROLMANAGER        "accessControlManager.getCaps"              // 门禁能力(CFG_CAP_ACCESSCONTROL)
#define CFG_CAP_CMD_EXALARM                     "alarm.getExAlarmCaps"                      // 获取扩展报警能力集, (对应结构体 CFG_CAP_EXALARM_INFO)
#define CFG_CAP_CMD_EXALARMBOX                  "alarm.getExAlarmBoxCaps"                   // 获取扩展报警盒能力集, (对应结构体 CFG_CAP_EXALARMBOX_INFO)
#define CFG_CAP_CMD_RECORDFINDER                "RecordFinder.getCaps"                      // 获取查询记录能力集, (对应结构体 CFG_CAP_RECORDFINDER_INFO)
#define CFG_CAP_CMD_ANALOGALARM	                "AnalogAlarm.getCaps"                       // 模拟量报警输入通道能力(对应结构体 CFG_CAP_ANALOGALARM)
#define CFG_CAP_CMD_LOWRATEWPAN	                "LowRateWPAN.getCaps"                       // 获取LowRateWPAN能力(对应的结构体 CFG_CAP_LOWRATEWPAN)
#define CFG_CAP_CMD_ADAPTENCODE                 "encode.getNAACaps"                         // 获取编码自适应编码能力(对应的结构体 CFG_CAP_ADAPT_ENCODE_INFO)
#define CFG_CAP_CMD_PTZPROTOCAL	                "ptz.getProtocol"                           // 获取该云台实际能够使用的协议,按介质区分 (对应结构体 CFG_CAP_PTZ_PROTOCOL)
#define CFG_CAP_CMD_MEDIACROP                   "encode.getCropCaps"                        // 查询是否支持视频裁剪能力 (对应结构体 CFG_CAP_MEDIA_CROP)
#define CFG_CAP_CMD_OSDMANAGER					"OSDManager.getCaps"			            // 获取OSD叠加能力(对应结构体CFG_CAP_OSDMANAGER_INFO)
#define CFG_CAP_CMD_CUSTOM						"OSDManager.getCustomCaps"		            //  获取自定义标题能力集(对应结构体CFG_CAP_CUSTOM_OSD_INFO)


/************************************************************************
** 智能模板配置命令  对应CLIENT_GetVideoInAnalyse
***********************************************************************/
#define CFG_VIDEOINANALYSE_RULE                 "VideoInAnalyse.getTemplateRule"            // 获取智能规则配置模板和默认值(对应结构体CFG_ANALYSERULES_INFO)
#define CFG_VIDEOINANALYSE_GLOBAL               "VideoInAnalyse.getTemplateGlobal"          // 获取智能全局配置模板和默认值(对应结构体CFG_VIDEOINANALYSE_GLOBAL_INFO)
#define	CFG_VIDEOINANALYSE_MODULE               "VideoInAnalyse.getTemplateModule"          // 获取智能检测区配置模板和默认值(对应结构体CFG_VIDEOINANALYSE_MODULE_INFO)

// 日志能力
typedef struct tagCFG_CAP_LOG
{
	DWORD		dwMaxLogItems;		// 最大日志条数
	DWORD		dwMaxPageItems;		// 每个分页的最大日志条数
	BOOL		bSupportStartNo;	// 查询条件是否支持起始序号
	BOOL		bSupportTypeFilter;	// 查询条件是否支持类型过滤
	BOOL		bSupportTimeFilter;	// 查询条件是否支持时间过滤
}CFG_CAP_LOG;


#define MAX_AUDIO_PROPERTY_NUM       32          // 音频属性最大个数  
#define MAX_AUDIO_FORMAT_NUM         16          // 音频格式最大个数 

// 音频编码压缩格式
enum EM_TALK_AUDIO_TYPE
{
	EM_TALK_AUDIO_PCM,
	EM_TALK_AUDIO_ADPCM, 
	EM_TALK_AUDIO_G711A, 
	EM_TALK_AUDIO_G711Mu, 
	EM_TALK_AUDIO_G726, 
	EM_TALK_AUDIO_G729, 
	EM_TALK_AUDIO_MPEG2, 
	EM_TALK_AUDIO_AMR, 
	EM_TALK_AUDIO_AAC, 
};

// 音频属性
typedef struct CFG_AUDIO_PROPERTY
{
	int            nBitRate;               // 码流大小,单位:kbps,比如192kbps
	int            nSampleBit;             // 采样的位深,如8或16
	int            nSampleRate;            // 采样率,单位:Hz,比如44100Hz
}CFG_AUDIO_PROPERTY;

// 支持的音频格式
typedef struct CFG_CAP_AUDIO_FORMAT
{
	EM_TALK_AUDIO_TYPE  emCompression;          // 音频压缩格式,具体见枚举AV_Talk_Audio_Type
	int		            nPropertyNum;           // 音频属性个数
	CFG_AUDIO_PROPERTY  stuProperty[MAX_AUDIO_PROPERTY_NUM]; // 音频属性
}CFG_CAP_AUDIO_FORMAT;

// 音频播放路径
typedef struct tagCFG_AUDIO_PLAY_PATH
{
    char           szPath[256];            // 文件路径
    BOOL           bSupportUpload;         // 是否支持上传
    int            nMaxFileUploadNum;      // 支持最大上传个数, 支持上传才有效
    int            nMaxUploadFileSize;     // 最大上传文件大小,单位字节, 支持上传才有效
} CFG_AUDIO_PLAY_PATH;

// 扬声器能力
typedef struct CFG_CAP_SPEAK
{
	int						nAudioCapNum;           // 支持的音频格式个数
	CFG_CAP_AUDIO_FORMAT	stuAudioCap[MAX_AUDIO_FORMAT_NUM]; // 支持的音频格式 
    int                     nAudioPlayPathNum;      // 音频播放路径个数
    CFG_AUDIO_PLAY_PATH     stuAudioPlayPath[8];    // 音频播放路径
}CFG_CAP_SPEAK;

// AccessControlCustomPassword记录集中密码的保存方式
typedef enum tagEM_CUSTOM_PASSWORD_ENCRYPTION_MODE
{
	EM_CUSTOM_PASSWORD_ENCRYPTION_MODE_UNKNOWN,			// 未知方式
	EM_CUSTOM_PASSWORD_ENCRYPTION_MODE_PLAINTEXT,		// 明文
	EM_CUSTOM_PASSWORD_ENCRYPTION_MODE_MD5,				// MD5加密方式
}EM_CUSTOM_PASSWORD_ENCRYPTION_MODE;

// 是否支持指纹功能
typedef enum tagEM_SUPPORTFINGERPRINT
{
	EM_SUPPORTFINGERPRINT_UNKNOWN,				// 未知
	EM_SUPPORTFINGERPRINT_NONSUPPORT,			// 不支持指纹功能
	EM_SUPPORTFINGERPRINT_SUPPORT,				// 支持指纹功能
}EM_SUPPORTFINGERPRINT; 

// 假日计划
typedef struct tagNET_SPECIAL_DAYS_SCHEDULE
{
	BOOL								bSupport;						// 是否支持假日计划
	int									nMaxSpecialDaysSchedules;		// 设备支持的最大计划数量
	int									nMaxTimePeriodsPerDay;			// 每天最多的时间段
	int									nMaxSpecialDayGroups;			// 设备支持的最大假日组数
	int									nMaxDaysInSpecialDayGroup;		// 每个假日组里最大的假日数
	BYTE								byReserved[128];				// 保留字节
} NET_SPECIAL_DAYS_SCHEDULE;

// 是否支持门禁快速导入功能
typedef enum tagEM_SUPPORT_FAST_IMPORT_TYPE
{
	EM_SUPPORT_FAST_IMPORT_UNKNOWN	= -1,			// 未知
	EM_SUPPORT_FAST_IMPORT_NONSUPPORT,				// 不支持
	EM_SUPPORT_FAST_IMPORT_SUPPORT,					// 支持
} EM_SUPPORT_FAST_IMPORT_TYPE;

// 是否支持门禁快速复核功能
typedef enum tagEM_SUPPORT_FAST_CHECK_TYPE
{
	EM_SUPPORT_FAST_CHECK_UNKNOWN = -1,				// 未知
	EM_SUPPORT_FAST_CHECK_NONSUPPORT,				// 不支持
	EM_SUPPORT_FAST_CHECK_SUPPORT,					// 支持
} EM_SUPPORT_FAST_CHECK_TYPE;

// 门禁控制能力
typedef struct tagCFG_CAP_ACCESSCONTROL
{
	int									nAccessControlGroups;			// 门禁组数、
    BOOL								bSupAccessControlAlarmRecord;   // 是否支持门禁报警日志记录在记录集中
	EM_CUSTOM_PASSWORD_ENCRYPTION_MODE  emCustomPasswordEncryption;		// AccessControlCustomPassword记录集中密码的保存方式
	EM_SUPPORTFINGERPRINT				emSupportFingerPrint;			// 是否支持指纹功能
    BOOL								bOnlySingleDoorAuth;            // 是否只支持单门授权(发卡)
    BOOL								bAsynAuth;                      // 是否支持授权异步返回      
	NET_SPECIAL_DAYS_SCHEDULE			stSpecialDaysSchedule;			// 假日计划
    BOOL                                bSupportMultiUserMultiTypeAuth; // 是否支持多人多类型组合开门
    EM_SUPPORT_FAST_IMPORT_TYPE			bSupportFastImport;				// 是否支持门禁快速导入功能
    EM_SUPPORT_FAST_CHECK_TYPE			bSupportFastCheck;				// 是否支持门禁快速复核功能
	BOOL								bSupportCallLift;				// 是否支持梯控功能
}CFG_CAP_ACCESSCONTROL;

// 传感器感应方式枚举类型
typedef enum tagEM_SENSE_METHOD
{
    EM_SENSE_UNKNOWN = -1,		// 未知类型
	EM_SENSE_DOOR=0,			// 门磁
	EM_SENSE_PASSIVEINFRA,		// 被动红外
	EM_SENSE_GAS,				// 气感
	EM_SENSE_SMOKING,			// 烟感
	EM_SENSE_WATER,				// 水感
	EM_SENSE_ACTIVEFRA,			//  主动红外
	EM_SENSE_GLASS,				// 玻璃破碎
	EM_SENSE_EMERGENCYSWITCH,	// 紧急开关
	EM_SENSE_SHOCK,				// 震动
	EM_SENSE_DOUBLEMETHOD,		// 双鉴(红外+微波)
	EM_SENSE_THREEMETHOD,		// 三技术
	EM_SENSE_TEMP,				// 温度
	EM_SENSE_HUMIDITY,			// 湿度
    EM_SENSE_WIND,				// 风速
	EM_SENSE_CALLBUTTON,		// 呼叫按钮
	EM_SENSE_GASPRESSURE,		// 气体压力
	EM_SENSE_GASCONCENTRATION,	// 燃气浓度
	EM_SENSE_GASFLOW,			// 气体流量
    EM_SENSE_OIL,				// 油量检测
    EM_SENSE_MILEAGE,			// 里程数检测
	EM_SENSE_OTHER,				// 其他
	EM_SEHSE_CO2,				// 二氧化碳浓度检测
	EM_SEHSE_SOUND,				// 噪音检测
	EM_SEHSE_PM25,				// PM2.5检测
	EM_SEHSE_SF6,				// 六氟化硫浓度检测
	EM_SEHSE_O3,				// 臭氧
	EM_SEHSE_AMBIENTLIGHT,		// 环境光照检测
	EM_SEHSE_INFRARED,			// 红外报警
	EM_SEHSE_TEMP1500,			// 1500温度传感器
	EM_SEHSE_TEMPDS18B20,		// DS18B20温度传感器
	EM_SEHSE_HUMIDITY1500,		// 1500湿度传感器
	EM_SEHSE_URGENCYBUTTON,		// 紧急按钮
	EM_SEHSE_STEAL,				// 盗窃
	EM_SEHSE_PERIMETER,			// 周界
	EM_SEHSE_PREVENTREMOVE,		// 防拆
	EM_SEHSE_DOORBELL,			// 门铃
	EM_SEHSE_ALTERVOLT,			// 交流电压传感器
	EM_SEHSE_DIRECTVOLT,		// 直流电压传感器
	EM_SEHSE_ALTERCUR,			// 交流电流传感器
	EM_SEHSE_DIRECTCUR,			// 直流电流传感器
	EM_SEHSE_RSUGENERAL,		// 高新兴通用模拟量
	EM_SEHSE_RSUDOOR,			// 高新兴门禁感应
	EM_SEHSE_RSUPOWEROFF,		// 高新兴断电感应
	EM_SEHSE_CURTAINSENSOR,		// 幕帘传感器
	EM_SEHSE_MOBILESENSOR,		// 移动传感器
	EM_SEHSE_FIREALARM,			// 火警
    EM_SEHSE_LOCKTONGUE,        // 锁舌
	EM_SENSE_NUM				// 枚举类型总数,注意:这个值不能作为常量使用
}EM_SENSE_METHOD;

// 传感器报警方式
typedef struct tagCFG_EXALARM_SENSE_METHOD
{
	int                 nSupportSenseMethodNum;								// 支持的传感器方式数
	EM_SENSE_METHOD     emSupportSenseMethod[MAX_ALARM_SENSE_METHOD_NUM];   // 支持的传感器方式
}CFG_EXALARM_SENSE_METHOD;

// 模拟量报警输入通道能力
typedef struct tagCFG_CAP_ANALOGALARM 
{
	DWORD						dwLocalNum;										// 本地模拟量报警输入通道数
	DWORD						dwExLocalNum;									// 扩展模拟量报警输入通道数
	int							nAnalogAlarmChannelNum;							// 模拟量报警通道数, 此为0时表示每个通道支持所有类型的传感器
	CFG_EXALARM_SENSE_METHOD	stuAnalogAlarmChannel[MAX_EXALARM_CHANNEL_NUM];	// 报警通道集合
}CFG_CAP_ANALOGALARM;

// 获取LowRateWPAN能力结构体
typedef struct tagCFG_CAP_LOWRATEWPAN
{
	UINT						nMaxPageSize;						// 最大分页查询的对码条数
	UINT						n433GatewayCount;					// 获取支持的433网关数目, 0表示不支持无线设备
}CFG_CAP_LOWRATEWPAN;

// 自适应能力
typedef struct tagCFG_CAP_ADAPT_ENCODE
{
    BOOL        bSupportedNAAEncode;                                // 自适应编码调整能力 ,主码流暂不支持
    BOOL        bSupportedIPSmoothness;                             // 设备编码平滑配置能力
}CFG_CAP_ADAPT_ENCODE;

// 获取编码自适应能力
typedef struct tagCFG_CAP_ADAPT_ENCODE_INFO
{
    CFG_CAP_ADAPT_ENCODE    stuMainStream[MAX_VIDEOSTREAM_NUM];	    // 主码流,0-普通录像,1-动检录像,2-报警录像
    CFG_CAP_ADAPT_ENCODE	stuExtraStream[MAX_VIDEOSTREAM_NUM];    // 辅码流,0-辅码流1,1-辅码流2,2-辅码流3
}CFG_CAP_ADAPT_ENCODE_INFO;

// 查询是否支持视频裁剪能力
typedef struct tagCFG_CAP_MEDIA_CROP
{
	BOOL bExtra1SupportCrop;										// 辅码流1裁剪能力
	BOOL bExtra2SupportCrop;										// 辅码流2裁剪能力
}CFG_CAP_MEDIA_CROP;

// osd叠加能力
typedef struct CFG_CAP_OSDMANAGER_INFO
{
	BOOL					bLineSpacing;						// 是否支持OSD字体行间距,选填
	BOOL					bSysAbnormal;						// 是否支持异常信息显示
	BOOL					bNetAbort;							// 是否显示网络断开
	BOOL					bIPConflict;						// 是否显示IP冲突
	BOOL					bVoltageStatus;						// 是否显示电压异常
	BOOL					bSDHotPlug;							// 是否显示SD卡插入、拔出 异常
	BOOL					bSDLowSpace;						// 是否显示SD卡空间不足
	BOOL					bSDFailure;							// 是否显示SD卡出错
	BOOL					bDestroy;							// 是否显示破坏检测
	BOOL					bOvercurrent;						// 是否显示对外供电电流过流
	BOOL					bTaskName;							// 是否支持动作任务名称
	unsigned int			nMaxSize;							// 图片最大字节数,单位字节
	unsigned int			nMaxWidth;							// 图片最大宽度, 单位像素
	unsigned int			nMaxHeight;							// 图片最大高度, 单位像素
} CFG_CAP_OSDMANAGER_INFO;

// 自定义标题能力集
typedef struct tagCFG_CAP_CUSTOM_OSD_INFO
{
	BOOL			abGeography;			// bGeography是否有效
	BOOL			bGeography;				//是否支持地理信息叠加

	BOOL			abTitleLine;			// nTitleLine是否有效
	unsigned int	nTitleLine;				// 地理信息行数, 默认为5
} CFG_CAP_CUSTOM_OSD_INFO;

//应用场景, 内容与EM_SCENE_CLASS_TYPE一致
typedef enum tagEM_SCENE_TYPE
{
	EM_SCENE_UNKNOW,			// 未知
	EM_SCENE_NORMAL,			// "Normal" 普通场景
	EM_SCENE_TRAFFIC,			// "Traffic" 交通场景
	EM_SCENE_TRAFFIC_PATROL,	// "TrafficPatrol" 交通巡视
	EM_SCENE_FACEDETECTION,		// "FaceDetection" 人脸检测/人脸识别
	EM_SCENE_ATM,				// "ATM"
	EM_SCENE_INDOOR,			// "Indoor"  室内行为分析,和普通规则相同,对室内场景的算法优化版
	EM_SCENE_FACERECOGNITION,	// "FaceRecognition" 人脸识别
	EM_SCENE_PRISON,			// "Prison" 监狱
	EM_SCENE_NUMBERSTAT,		// "NumberStat" 客流量统计
	EM_SCENE_HEAT_MAP,			// "HeatMap" 热度图
	EM_SCENE_VIDEODIAGNOSIS,	// "VideoDiagnosis" 视频诊断
	EM_SCENE_VEHICLEANALYSE,	// "VehicleAnalyse" 车辆特征检测分析
	EM_SCENE_COURSERECORD,		// "CourseRecord" 自动录播
	EM_SCENE_VEHICLE,			// "Vehicle" 车载场景(车载行业用,不同于智能交通的Traffic)
	EM_SCENE_STANDUPDETECTION,	// "StandUpDetection" 起立检测
	EM_SCENE_GATE,				// "Gate" 卡口
	EM_SCENE_SDFACEDETECTION,	// "SDFaceDetect"  多预置点人脸检测,配置一条规则但可以在不同预置点下生效
	EM_SCENE_HEAT_MAP_PLAN,		// "HeatMapPlan" 球机热度图计划
	EM_SCENE_NUMBERSTAT_PLAN,	// "NumberStatPlan"	球机客流量统计计划
	EM_SCENE_ATMFD,				// "ATMFD"金融人脸检测,包括正常人脸、异常人脸、相邻人脸、头盔人脸等针对ATM场景特殊优化
	EM_SCENE_HIGHWAY,			// "Highway" 高速交通事件检测
	EM_SCENE_CITY,				// "City" 城市交通事件检测
	EM_SCENE_LETRACK,			// "LeTrack" 民用简易跟踪
	EM_SCENE_SCR,				// "SCR"打靶相机
	EM_SCENE_STEREO_VISION,     // "StereoVision"立体视觉(双目)
	EM_SCENE_HUMANDETECT,       // "HumanDetect"人体检测
	EM_SCENE_FACEANALYSIS,		// "FaceAnalysis" 人脸分析(同时支持人脸检测、人脸识别、人脸属性等综合型业务)
	EM_SCENE_XRAY_DETECTION,	// "XRayDetection" X光检测
	EM_SCENE_STEREO_NUMBER,		// "StereoNumber" 双目相机客流量统计
	EM_SCENE_CROWD_DISTRI_MAP,	// "CrowdDistriMap" 人群分布图
	EM_SCENE_OBJECTDETECT,	    // "ObjectDetect" 目标检测(含人机非等物体)
	EM_SCENE_FACEATTRIBUTE,		// "FaceAttribute" IVSS人脸检测
	EM_SCENE_FACECOMPARE,		// "FaceCompare" IVSS人脸识别
	EM_SCENE_STEREO_BEHAVIOR,	// "StereoBehavior" 立体行为分析(典型场景ATM舱)
	EM_SCENE_INTELLICITYMANAGER,// "IntelliCityMgr" 智慧城管
	EM_SCENE_PROTECTIVECABIN,	// "ProtectiveCabin" 防护舱(ATM舱内)
	EM_SCENE_AIRPLANEDETECT,	// "AirplaneDetect" 飞机行为检测
	EM_SCENE_CROWDPOSTURE,		// "CrowdPosture" 人群态势(人群分布图服务)
	EM_SCENE_PHONECALLDETECT,	// "PhoneCallDetect"  打电话检测
	EM_SCENE_SMOKEDETECTION,	// "SmokeDetection"   烟雾检测
	EM_SCENE_BOATDETECTION,		// "BoatDetection"	  船只检测
	EM_SCENE_SMOKINGDETECT,		// "SmokingDetect"	  吸烟检测
	EM_SCENE_WATERMONITOR,		// "WaterMonitor"	  水利监测
	EM_SCENE_GENERATEGRAPHDETECTION, // GenerateGraphDetection 生成图规则
	EM_SCENE_TRAFFIC_PARK,		// "TrafficPark"		交通停车
    EM_SCENE_OPERATEMONITOR, 	// "OperateMonitor"     作业检测  
    EM_SCENE_INTELLI_RETAIL,	// "IntelliRetail" 智慧零售大类
    EM_SCENE_CLASSROOM_ANALYSE,	// "ClassroomAnalyse" 教育智慧课堂
	EM_SCENE_FEATURE_ABSTRACT, // "FeatureAbstract" 特征向量提取大类
	EM_SCENE_FACEBODY_DETECT,	// "FaceBodyDetect"人体检测
	EM_SCENE_FACEBODY_ANALYSE,	// "FaceBodyAnalyse"人体识别
	EM_SCENE_VEHICLES_DISTRI,	// "VehiclesDistri"车辆密度
	EM_SCENE_INTELLI_BREED,     // "IntelliBreed" 智慧养殖检测
	EM_SCENE_INTELLI_PRISON,    // "IntelliPrison" 监狱行为分析
	EM_SCENE_ELECTRIC_DETECT,   // "ElectricDetect" 电力检测
	EM_SCENE_RADAR_DETECT,		// "RadarDetect" 雷检检测
    EM_SCENE_PARKINGSPACE,      // "ParkingSpace" 车位检测大类
	EM_SCENE_INTELLI_FINANCE,   // "IntelliFinance" 智慧金融
	EM_SCENE_CROWD_ABNORMAL,	// "CrowdAbnormal" 
	EM_SCENE_ANATOMYTEMP_DETECT,// "AnatomyTempDetect" 超温检测
	EM_SCENE_WEATHER_MONITOR,	// "WeatherMonitor"天气监控
	EM_SCENE_ELEVATOR_ACCESS_CONTROL,// "ElevatorAccessControl" 电梯门禁
}EM_SCENE_TYPE;

 /************************************************************************
 ** fAnalyzerData回调函数dwDataType类型定义
 ***********************************************************************/
#define    TYPE_CB_VIDEOSTAT            0x1000000      // 回调解析视频信息摘要类型,对应结构体为CFG_VIDEOSATA_SUMMARY_INFO 
#define    TYPE_CB_ANARULES             0x1000001      // 回调解析视频输入通道对应的所有事件规则类型,对应结构体为CFG_ANALYSERULES_INFO
#define    TYPE_CB_VIDEOSYNOPSIS        0x1000002	   // 回调解析浓缩视频的智能帧,对应结构体DH_MSG_OBJECT
#define	   TYPE_CB_TRAFFICFLOWINFO      0x1000003	   // 回调解析交通流量信息,对应结构体DEV_EVENT_TRAFFIC_FLOWSTAT_INFO	
#define    TYPE_CB_TRAFFICFLOWRULE      0x1000004      // 回调解析交通流量规则信息,对应结构体 CFG_TRAFFIC_FLOWSTAT_INFO 
#define    TYPE_CB_VIDEOSYNOPSIS_RULE   0x1000005      // 回调解析浓缩视频的规则信息,对应结构体 NET_VIDEOSYNOPSISRULE_INFO
	
/************************************************************************
 ** 配置信息(每个结构体都有能力信息,以区分不同设备程序版本和不同型号设备)
 ***********************************************************************/
// 协议版本信息
enum 
{
	CFG_PROTOCOL_VERSION_2 = 2,						// 二代协议
	CFG_PROTOCOL_VERSION_3 = 3						// 三代协议
};

// 视频输入通道
struct CFG_RemoteDeviceVideoInput 
{
	BOOL			bEnable;
	char			szName[MAX_DEVICE_NAME_LEN];
	char			szControlID[MAX_DEV_ID_LEN_EX];
	char			szMainUrl[MAX_PATH];			// 主码流url地址
	char			szExtraUrl[MAX_PATH];			// 辅码流url地址
	int				nServiceType;					// 服务类型, 0-TCP, 1-UDP, 2-MCAST, -1-AUTO
};

// 远程设备
struct AV_CFG_RemoteDevice 
{
	AV_int32			nStructSize;
	AV_BOOL				bEnable;						// 使能
	char				szID[AV_CFG_Device_ID_Len];		// 设备ID
	char				szIP[AV_CFG_IP_Address_Len];	// 设备IP
	AV_int32			nPort;							// 端口
	char				szProtocol[AV_CFG_Protocol_Len];// 协议类型
	char				szUser[AV_CFG_User_Name_Len];	// 用户名
	char				szPassword[AV_CFG_Password_Len];// 密码
	char				szSerial[AV_CFG_Serial_Len];	// 设备序列号
	char				szDevClass[AV_CFG_Device_Class_Len];// 设备类型
	char				szDevType[AV_CFG_Device_Type_Len];	// 设备型号
	char				szName[AV_CFG_Device_Name_Len];	// 机器名称
	char				szAddress[AV_CFG_Address_Len];	// 机器部署地点
	char				szGroup[AV_CFG_Group_Name_Len];	// 机器分组
	AV_int32			nDefinition;					// 清晰度, 0-标清, 1-高清
	AV_int32			nVideoChannel;					// 视频输入通道数
	AV_int32			nAudioChannel;					// 音频输入通道数
	AV_int32            nRtspPort;                      // Rtsp端口号
	char                szVendor[MAX_PATH];             // 设备接入类型
	CFG_RemoteDeviceVideoInput *pVideoInput;            // 视频输入通道,用户申请nMaxVideoInputs个CFG_RemoteDeviceVideoInput空间
	int                 nMaxVideoInputs;
	int                 nRetVideoInputs;
	int					nHttpPort;						// http端口号
														// 以下3项为国际接入方式相关
	AV_BOOL				bGB28181;						// 是否有国际接入方式
	int					nDevLocalPort;					// 设备本地端口
	char				szDeviceNo[AV_CFG_DeviceNo_Len];// 设备编号
	int					nLoginType;						// 登录方式 0 : TCP直连(默认方式)  6 : 主动注册  7 : P2P方式,此方式时通过SerialNo与设备通过P2P连接
};

//-----------------------------图像通道属性-------------------------------

// 画质
typedef enum tagCFG_IMAGE_QUALITY
{
	IMAGE_QUALITY_Q10 = 1,							// 图像质量10%
	IMAGE_QUALITY_Q30,								// 图像质量30%
	IMAGE_QUALITY_Q50,								// 图像质量50%
	IMAGE_QUALITY_Q60,								// 图像质量60%
	IMAGE_QUALITY_Q80,								// 图像质量80%
	IMAGE_QUALITY_Q100,								// 图像质量100%
} CFG_IMAGE_QUALITY;

// 视频压缩格式
typedef enum tagCFG_VIDEO_COMPRESSION
{
	VIDEO_FORMAT_MPEG4,								// MPEG4
	VIDEO_FORMAT_MS_MPEG4,							// MS-MPEG4
	VIDEO_FORMAT_MPEG2,								// MPEG2
	VIDEO_FORMAT_MPEG1,								// MPEG1
	VIDEO_FORMAT_H263,								// H.263
	VIDEO_FORMAT_MJPG,								// MJPG
	VIDEO_FORMAT_FCC_MPEG4,							// FCC-MPEG4
	VIDEO_FORMAT_H264,								// H.264
    VIDEO_FORMAT_H265,								// H.265
	VIDEO_FORMAT_SVAC,								// SVAC
} CFG_VIDEO_COMPRESSION;
// 音频编码模式
typedef enum tatCFG_AUDIO_FORAMT
{
	AUDIO_FORMAT_G711A,                              // G711a
    AUDIO_FORMAT_PCM,                                // PCM
    AUDIO_FORMAT_G711U,                              // G711u
    AUDIO_FORMAT_AMR,                                // AMR
    AUDIO_FORMAT_AAC,                                // AAC
} CFG_AUDIO_FORMAT;

// 码流控制模式
typedef enum tagCFG_BITRATE_CONTROL
{
	BITRATE_CBR,									// 固定码流
	BITRATE_VBR,									// 可变码流
} CFG_BITRATE_CONTROL;

// H264 编码级别
typedef enum tagCFG_H264_PROFILE_RANK
{
	PROFILE_BASELINE = 1,                       // 提供I/P帧,仅支持progressive(逐行扫描)和CAVLC
	PROFILE_MAIN,                               // 提供I/P/B帧,支持progressiv和interlaced,提供CAVLC或CABAC
	PROFILE_EXTENDED,                           // 提供I/P/B/SP/SI帧,仅支持progressive(逐行扫描)和CAVLC
	PROFILE_HIGH,                               // 即FRExt,Main_Profile基础上新增:8x8 intra prediction(8x8 帧内预测), custom 
												// quant(自定义量化), lossless video coding(无损视频编码), 更多的yuv格式
}CFG_H264_PROFILE_RANK;

// 分辨率枚举
typedef enum tagCFG_CAPTURE_SIZE
{
	IMAGE_SIZE_D1,								// 704*576(PAL)  704*480(NTSC)
	IMAGE_SIZE_HD1,								// 352*576(PAL)  352*480(NTSC)
	IMAGE_SIZE_BCIF,							// 704*288(PAL)  704*240(NTSC)
	IMAGE_SIZE_CIF,								// 352*288(PAL)  352*240(NTSC)
	IMAGE_SIZE_QCIF,							// 176*144(PAL)  176*120(NTSC)
	IMAGE_SIZE_VGA,								// 640*480
	IMAGE_SIZE_QVGA,							// 320*240
	IMAGE_SIZE_SVCD,							// 480*480
	IMAGE_SIZE_QQVGA,							// 160*128
	IMAGE_SIZE_SVGA,							// 800*592
	IMAGE_SIZE_XVGA,							// 1024*768
	IMAGE_SIZE_WXGA,							// 1280*800
	IMAGE_SIZE_SXGA,							// 1280*1024  
	IMAGE_SIZE_WSXGA,							// 1600*1024  
	IMAGE_SIZE_UXGA,							// 1600*1200
	IMAGE_SIZE_WUXGA,							// 1920*1200
	IMAGE_SIZE_LTF,								// 240*192
	IMAGE_SIZE_720,								// 1280*720
	IMAGE_SIZE_1080,							// 1920*1080
	IMAGE_SIZE_1_3M,							// 1280*960
	IMAGE_SIZE_2M,							    // 1872*1408
	IMAGE_SIZE_5M,						   	    // 3744*1408
	IMAGE_SIZE_3M,							    // 2048*1536
	IMAGE_SIZE_5_0M,                            // 2432*2050
	IMAGE_SIZE_1_2M,							// 1216*1024
	IMAGE_SIZE_1408_1024,                       // 1408*1024
	IMAGE_SIZE_8M,                              // 3296*2472
	IMAGE_SIZE_2560_1920,                       // 2560*1920(5M)
	IMAGE_SIZE_960H,                            // 960*576(PAL) 960*480(NTSC)
	IMAGE_SIZE_960_720,                         // 960*720
	IMAGE_SIZE_NHD,							    // 640*360
	IMAGE_SIZE_QNHD,							// 320*180
	IMAGE_SIZE_QQNHD,							// 160*90
	IMAGE_SIZE_NR  
} CFG_CAPTURE_SIZE;

// 视频格式
typedef struct tagCFG_VIDEO_FORMAT
{
	// 能力
	bool				abCompression;
	bool				abWidth;
	bool				abHeight;
	bool				abBitRateControl;
	bool				abBitRate;
	bool				abFrameRate;
	bool				abIFrameInterval;
	bool				abImageQuality;
	bool				abFrameType;
	bool				abProfile;

	// 信息
	CFG_VIDEO_COMPRESSION emCompression;			// 视频压缩格式
	int					nWidth;						// 视频宽度
	int					nHeight;					// 视频高度
	CFG_BITRATE_CONTROL	emBitRateControl;			// 码流控制模式
	int					nBitRate;					// 视频码流(kbps)
	float				nFrameRate;					// 视频帧率
	int					nIFrameInterval;			// I帧间隔(1-100),比如50表示每49个B帧或P帧,设置一个I帧。
	CFG_IMAGE_QUALITY	emImageQuality;				// 图像质量
	int					nFrameType;					// 打包模式,0-DHAV,1-"PS"
    CFG_H264_PROFILE_RANK emProfile;                // H.264编码级别
} CFG_VIDEO_FORMAT;

// 音频格式
typedef struct tagCFG_AUDIO_FORMAT 
{
	// 能力
	bool				abCompression;
	bool				abDepth;
	bool				abFrequency;
	bool				abMode;
	bool				abFrameType;
	bool				abPacketPeriod;
    bool                abChannels;
    bool                abMix;

	// 信息
	CFG_AUDIO_FORMAT	emCompression;				// 音频压缩模式
	AV_int32			nDepth;						// 音频采样深度
	AV_int32			nFrequency;					// 音频采样频率
	AV_int32			nMode;						// 音频编码模式
	AV_int32			nFrameType;					// 音频打包模式, 0-DHAV, 1-PS
	AV_int32			nPacketPeriod;				// 音频打包周期, ms
    AV_int32            nChannelsNum;               // 视频通道的伴音通道号列表个数
    AV_uint32           arrChannels[MAX_AUDIOCHANNELS_ARRAY_NUM];   // 视频通道的伴音通道号列表
    BOOL                bMix;                       // 是否同源
} CFG_AUDIO_ENCODE_FORMAT;

// 视频编码参数
typedef struct tagCFG_VIDEOENC_OPT
{
	// 能力
	bool				abVideoEnable;
	bool				abAudioEnable;
	bool				abSnapEnable;
	bool                abAudioAdd;                 // 音频叠加能力
	bool				abAudioFormat;

	// 信息
	BOOL				bVideoEnable;				// 视频使能
	CFG_VIDEO_FORMAT	stuVideoFormat;				// 视频格式
	BOOL				bAudioEnable;				// 音频使能
	BOOL				bSnapEnable;				// 定时抓图使能
	BOOL                bAudioAddEnable;            // 音频叠加使能
	CFG_AUDIO_ENCODE_FORMAT	stuAudioFormat;			// 音频格式
} CFG_VIDEOENC_OPT;

// RGBA信息
typedef struct tagCFG_RGBA
{
	int					nRed;
	int					nGreen;
	int					nBlue;
	int					nAlpha;
} CFG_RGBA;

// 区域信息
typedef struct tagCFG_RECT
{
	int					nLeft;
	int					nTop;
    int					nRight;
    int					nBottom;				
} CFG_RECT;


// 区域顶点信息
typedef struct tagCFG_POLYGON
{
	int					nX; //0~8191
	int					nY;		
} CFG_POLYGON;

// 区域信息
typedef struct tagCFG_REGION
{
	int         nPointNum;
	CFG_POLYGON stuPolygon[MAX_POLYGON_NUM];
}CFG_REGION;

// 折线的端点信息
typedef struct tagCFG_POLYLINE
{
	int					nX; //0~8191
	int					nY;		
} CFG_POLYLINE;

typedef enum tagCFG_FLOWSTAT_DIRECTION
{
	CFG_DRIVING_DIR_APPROACH ,		//上行,即车辆离设备部署点越来越近
	CFG_DRIVING_DIR_LEAVE ,				//下行,即车辆离设备部署点越来越远
}CFG_FLOWSTAT_DIRECTION;

#define  CFG_FLOWSTAT_ADDR_NAME			16						//上下行地点名长
//车辆流量统计车道方向信息 
typedef struct tagCFG_TRAFFIC_FLOWSTAT_DIR_INFO
{
	CFG_FLOWSTAT_DIRECTION		emDrivingDir;							//行驶方向
	char						szUpGoing[CFG_FLOWSTAT_ADDR_NAME];			//上行地点 
	char						szDownGoing[CFG_FLOWSTAT_ADDR_NAME];		//下行地点 
}CFG_TRAFFIC_FLOWSTAT_DIR_INFO;

// 道路等级
typedef enum tagEM_LANE_RANK_TYPE
{
	EM_LANE_RANK_UNKNOWN,			// 未知类型
	EM_LANE_RANK_RAPID,				// 快速路
	EM_LANE_RANK_TRUNK,				// 主干路
	EM_LANE_RANK_SUBTRUNK,			// 次干路
	EM_LANE_RANK_BRANCH,			// 支路
} EM_LANE_RANK_TYPE;

// 车道信息
typedef struct tagCFG_LANE
{
	int                nLaneId;                           // 车道编号
	int                nDirection;                        // 车道方向(车开往的方向),0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北
	CFG_POLYLINE       stuLeftLine[MAX_POLYLINE_NUM];     // 左车道线,车道线的方向表示车道方向,沿车道方向左边的称为左车道线
	int                nLeftLineNum;                      // 左车道线顶点数
	CFG_POLYLINE       stuRightLine[MAX_POLYLINE_NUM];    // 右车道线,车道线的方向表示车道方向,沿车道方向右边的称为右车道线
	int                nRightLineNum;                     // 右车道线顶点数
	int                nLeftLineType;                     // 左车道线属性,1-表示白实线,2- 白虚线,3- 黄线
	int                nRightLineType;                    // 右车道线属性,1-表示白实线,2- 白虚线,3- 黄线
	BOOL               bDriveDirectionEnable;             // 车道行驶方向使能
	int                nDriveDirectionNum;                     // 车道行驶方向数 
	char               szDriveDirection[MAX_LIGHT_DIRECTION][MAX_NAME_LEN];  // 车道行驶方向,"Straight" 直行,"TurnLeft" 左转,"TurnRight" 右转,"U-Turn":掉头
	int                nStopLineNum;                      // 车道对应停止线顶点数
	CFG_POLYLINE       stuStopLine[MAX_POLYLINE_NUM];     // 车道对应停止线
	int                nTrafficLightNumber;               // 车道对应的红绿灯组编号

	bool               abDetectLine;                      // 对应能力集
	bool               abPreLine;
	bool               abPostLine;
	BYTE               byReserved[1];

	int                nDetectLine;
	CFG_POLYLINE       stuDetectLine[MAX_POLYLINE_NUM];   // 车道对应的检测线
	int                nPreLine;
	CFG_POLYLINE       stuPreLine[MAX_POLYLINE_NUM];      // 车道对应的前置线
	int                nPostLine;
	CFG_POLYLINE       stuPostLine[MAX_POLYLINE_NUM];     // 车道对应的后置线
	CFG_TRAFFIC_FLOWSTAT_DIR_INFO stuTrafficFlowDir;	  // 车道流量信息
	EM_LANE_RANK_TYPE  emRankType;						  // 道路等级,用于车流量统计上报交通状态
}CFG_LANE;

// 交通灯属性
typedef struct tagCFG_LIGHTATTRIBUTE
{
	BOOL             bEnable;                           // 当前交通灯是否有效,与车辆通行无关的交通需要设置无效
	int              nTypeNum; 
	char		     szLightType[MAX_LIGHT_TYPE][MAX_NAME_LEN];      // 当前交通灯显现内容(包括:红-Red,黄-Yellow,绿-Green,倒计时-Countdown),如某交通灯可以显示红黄绿三种颜色,某交通灯只显示倒计时
	int              nDirectionNum;
	char             szDirection[MAX_LIGHT_DIRECTION][MAX_NAME_LEN];      // 交通灯指示的行车方向,"Straight": 直行,"TurnLeft":左转,"TurnRight":右转,"U-Turn": 掉头
	int              nYellowTime;                       // 黄灯亮时间
}CFG_LIGHTATTRIBUTE;

// 交通灯组配置信息 
typedef struct tagCFG_LIGHTGROUPS
{
	int                nLightGroupId;                     // 灯组编号
	CFG_RECT           stuLightLocation;                  // 灯组坐标
	int                nDirection;                        // 灯组的方向,1- 灯组水平向,2- 灯组垂直向
	BOOL               bExternalDetection;                // 是否为外接红绿灯信号,当外接红绿灯时,以外界信号为判断依据。外界信号每次跳变时通知
	BOOL               bSwingDetection;                   // 是否支持自适应灯组摇摆检测,在风吹或者容易震动的场景下,位置会进行一定的浮动偏差。如果由算法自行检测,会增加检测时间
	int                nLightNum;                         // 灯组中交通灯的数量
	CFG_LIGHTATTRIBUTE stuLightAtrributes[MAX_LIGHT_NUM]; // 灯组中各交通灯的属性

}CFG_LIGHTGROUPS;

enum EM_STAFF_TYPE
{
	EM_STAFF_TYPE_ERR,
		EM_STAFF_TYPE_HORIZONTAL,     // "Horizontal" 水平线段
		EM_STAFF_TYPE_VERTICAL,       // "Vertical" 垂直线段
		EM_STAFF_TYPE_ANY,            // "Any" 任意线段
		EM_STAFF_TYPE_CROSS,          // "Cross" 垂直面交线段
};

enum EM_CALIBRATEAREA_TYPE
{
	EM_CALIBRATEAREA_TYPE_ERR,
		EM_CALIBRATEAREA_TYPE_GROUD,                         // "Groud" : 地面,需要N条竖直线段+M条水平线段((N=3,M=1);(N=2,M=2);今后扩展)。
		EM_CALIBRATEAREA_TYPE_HORIZONTAL,                    // "Horizontal"  : 水平面,需要水平面上一点到地面点的投影垂直线段。		
		EM_CALIBRATEAREA_TYPE_VERTICAL,                      // "Vertical" : 垂直面,需要垂直面与地面的交线。
		EM_CALIBRATEAREA_TYPE_ANY,                           // "Any" 任意平面,N条竖直线段,及每条长度(N=3,及今后扩展)。
};

// 特殊区域的属性类型
enum EM_SEPCIALREGION_PROPERTY_TYPE
{
	EM_SEPCIALREGION_PROPERTY_TYPE_HIGHLIGHT = 1,            // 高亮,键盘检测区域具有此特性
	EM_SEPCIALREGION_PROPERTY_TYPE_REGULARBLINK,             // 规律的闪烁,插卡区域具有此特性
	EM_SEPCIALREGION_PROPERTY_TYPE_IREGULARBLINK,            // 不规律的闪烁,屏幕区域具有此特性
	EM_SEPCIALREGION_PROPERTY_TYPE_NUM,
};


// 人脸检测类型
enum EM_FACEDETECTION_TYPE
{
	EM_FACEDETECTION_TYPE_ERR,
	EM_FACEDETECTION_TYPE_SMALLFACE,						//小脸类型,人脸在视频中的比重大概17%
	EM_FACEDETECTION_TYPE_LARGEFACE,						//大脸类型,人脸在视频中的比重大概33%
	EM_FACEDETECTION_TYPE_BOTH,								//检测类型
}; 

typedef struct tagCFG_STAFF
{
	CFG_POLYLINE       stuStartLocation;      // 起始坐标点
	CFG_POLYLINE       stuEndLocation;        // 终止坐标点
	float                nLenth;              // 实际长度,单位米
	EM_STAFF_TYPE	   emType;                // 标尺类型
}CFG_STAFF;

// Size
typedef struct tagCFG_SIZE
{
	union
	{
		float				nWidth;			// 宽
		float				nArea;			// 面积
	};
	float					nHeight;		// 高
	
} CFG_SIZE;

// 遮挡信息
typedef struct tagCFG_COVER_INFO
{
	// 能力
	bool				abBlockType;
	bool				abEncodeBlend;
	bool				abPreviewBlend;

	// 信息
	CFG_RECT			stuRect;					// 覆盖的区域坐标
	CFG_RGBA			stuColor;					// 覆盖的颜色
	int					nBlockType;					// 覆盖方式;0-黑块,1-马赛克
	int					nEncodeBlend;				// 编码级遮挡;1-生效,0-不生效
	int					nPreviewBlend;				// 预览遮挡;1-生效,0-不生效
} CFG_COVER_INFO;

// 多区域遮挡配置
typedef struct tagCFG_VIDEO_COVER
{
	int                 nTotalBlocks;						// 支持的遮挡块数
	int					nCurBlocks;							// 已设置的块数
	CFG_COVER_INFO		stuCoverBlock[MAX_VIDEO_COVER_NUM];	// 覆盖的区域	
} CFG_VIDEO_COVER;

// OSD信息
typedef struct tagCFG_OSD_INFO
{
	// 能力
	bool				abShowEnable;

	// 信息
	CFG_RGBA			stuFrontColor;				// 前景颜色
	CFG_RGBA			stuBackColor;				// 背景颜色
	CFG_RECT			stuRect;					// 矩形区域
	BOOL				bShowEnable;				// 显示使能
} CFG_OSD_INFO;

// 画面颜色属性
typedef struct tagCFG_COLOR_INFO
{
	int					nBrightness;				// 亮度(0-100)
	int					nContrast;					// 对比度(0-100)
	int					nSaturation;				// 饱和度(0-100)
	int					nHue;						// 色度(0-100)
	int					nGain;						// 增益(0-100)
	BOOL				bGainEn;					// 增益使能
} CFG_COLOR_INFO;

// 图像通道属性信息
typedef struct tagCFG_ENCODE_INFO
{
	int                 nChannelID;							// 通道号(0开始),获取时,该字段有效;设置时,该字段无效
	char				szChnName[MAX_CHANNELNAME_LEN];		// 无效字段
	CFG_VIDEOENC_OPT	stuMainStream[MAX_VIDEOSTREAM_NUM];	// 主码流,0-普通录像,1-动检录像,2-报警录像
	int                 nValidCountMainStream;              // 主码流数组中有效的个数
	CFG_VIDEOENC_OPT	stuExtraStream[MAX_VIDEOSTREAM_NUM];// 辅码流,0-辅码流1,1-辅码流2,2-辅码流3
	int                 nValidCountExtraStream;             // 辅码流数组中有效的个数
	CFG_VIDEOENC_OPT	stuSnapFormat[MAX_VIDEOSTREAM_NUM];	// 抓图,0-普通抓图,1-动检抓图,2-报警抓图
	int                 nValidCountSnapFormat;              // 抓图数组中有效的个数
	DWORD				dwCoverAbilityMask;					// 无效字段
	DWORD				dwCoverEnableMask;					// 无效字段
	CFG_VIDEO_COVER		stuVideoCover;						// 无效字段
	CFG_OSD_INFO		stuChnTitle;						// 无效字段
	CFG_OSD_INFO		stuTimeTitle;						// 无效字段
	CFG_COLOR_INFO		stuVideoColor;						// 无效字段
	CFG_AUDIO_FORMAT    emAudioFormat;                      // 无效字段
	int					nProtocolVer;						// 协议版本号, 只读,获取时,该字段有效;设置时,该字段无效
} CFG_ENCODE_INFO;

// 视频输入前端能力集
typedef struct tagCFG_VIDEO_ENCODECAP
{
	int		nMaxCIFFrame;			// CIF P帧最大值 单位Kbits, 默认值40
	int		nMinCIFFrame;			// CIF P帧最小值 单位Kbits, 默认值7
    int     nMaxEncodeAudios;       // 支持的最大编码音频数,用于双音频,默认1
    BYTE    byReserved[4];          // 保留字节,用于字节对齐
}CFG_VIDEO_ENCODECAP;

// 多画面预览工作模式
typedef enum tagCFG_EM_PREVIEW_MODE
{
    CFG_EM_PREVIEW_MODE_UNKNOWN = 0,        // 
    CFG_EM_PREVIEW_MODE_SNAPSHOT,           // 快照方式
    CFG_EM_PREVIEW_MODE_SPLITENCODE,        // 分割编码方式
    CFG_EM_PREVIEW_MODE_SPLITSNAP,          // 分割快照方式
}CFG_EM_PREVIEW_MODE;

#define MAX_PREVIEW_MODE_SPLIT_TYPE_NUM     8                           // 最大多画面预览窗口分割种类数

// 编码能力集
typedef struct tagCFG_ENCODECAP
{
	int                     nChannelNum;                                // 实际通道数
	CFG_VIDEO_ENCODECAP     stuVideoEncodeCap[MAX_VIDEO_CHANNEL_NUM];	// 各通道编码能力信息数组
    CFG_EM_PREVIEW_MODE     emPreviewMode;                              // 多画面预览工作模式
    int                     nSplitModeNum;                              // 有效的多画面预览窗口分割种类数
    int                     anSplitMode[MAX_PREVIEW_MODE_SPLIT_TYPE_NUM];// 多画面预览窗口分割数信息, 可以为1, 4, 6, 8, 9, 16, 25, 36...
                                                                        // -1表示默认[1, 4, 8, 9, 16, …模拟通道数量], 为小于模拟通道数的N的平方数, 如果模拟通道大于8, 也包含8
    int                     nAudioFrequence[16];                        // 支持的音频编码采样率
    int                     nAudioFrequenceCount;                       // 支持的音频编码采样率的实际个数
}CFG_ENCODECAP;

// 水印配置
typedef struct tagCFG_WATERMARK_INFO 
{
	int                 nChannelID;					// 通道号(0开始)
	BOOL				bEnable;					// 使能开关
	int					nStreamType;				// 码流类型(1~n),0-所有码流
	int					nDataType;					// 数据类型,1-文字,2-图片
	char				pData[MAX_WATERMARK_LEN];	// 字符串水印数据
} CFG_WATERMARK_INFO;

// dsp配置
typedef struct tagCFG_DSPENCODECAP_INFO{
	DWORD				dwVideoStandardMask;	// 视频制式掩码,按位表示设备能够支持的视频制式
	DWORD				dwImageSizeMask;		// 分辨率掩码,按位表示设备能够支持的分辨率
	DWORD				dwEncodeModeMask;		// 编码模式掩码,按位表示设备能够支持的编码模式
	DWORD				dwStreamCap;			// 按位表示设备支持的多媒体功能,
                                             	// 第一位表示支持主码流
	                                         	// 第二位表示支持辅码流1
	                                         	// 第三位表示支持辅码流2
	                                         	// 第五位表示支持jpg抓图
	DWORD				dwImageSizeMask_Assi[32];// 表示主码流为各分辨率时,支持的辅码流分辨率掩码。
	DWORD				dwMaxEncodePower;		// DSP支持的最高编码能力 
	WORD				wMaxSupportChannel;		// 每块DSP支持最多输入视频通道数 
	WORD				wChannelMaxSetSync;		// DSP每通道的最大编码设置是否同步;0:不同步,1:同步
	BYTE				bMaxFrameOfImageSize[256];// 不同分辨率下的最大采集帧率,与dwVideoStandardMask按位对应
	BYTE				bEncodeCap;				// 标志,配置时要求符合下面条件,否则配置不能生效;
	                                         	// 0:主码流的编码能力+辅码流的编码能力 <= 设备的编码能力,
	                                         	// 1:主码流的编码能力+辅码流的编码能力 <= 设备的编码能力,
	                                         	// 辅码流的编码能力 <= 主码流的编码能力,
	                                         	// 辅码流的分辨率 <= 主码流的分辨率,
	                                         	// 主码流和辅码流的帧率 <= 前端视频采集帧率
	                                         	// 2:N5的计算方法
	                                         	// 辅码流的分辨率 <= 主码流的分辨率
												// 查询支持的分辨率和相应最大帧率
	BYTE				byResolutionNum;			// bResolution的长度
	BYTE				byResolutionNum_1;		// bResolution_1的长度
	BYTE				byReserved;
	BYTE				byResolution[256];		//主码流,按照分辨率进行索引,如果支持该分辨率,则bResolution[n]等于支持的最大帧率.否则为0.							
	BYTE				byResolution_1[256];		//辅助码流1,同主码流说明.
	char				reserved[28];
	BYTE				byImageSize[256];		// 支持的分辨率数组,参见enum CAPTURE_SIZE
	BYTE				byImageSize_Assi[256][256]; //表示主码流为各分辨率时,支持的辅码流分辨率,数组下标表示主码流所支持的分辨率值。
}CFG_DSPENCODECAP_INFO;

// 云台动作
typedef enum tagEM_PTZ_ACTION {
    EM_PTZ_ACTION_UNKNOWN,                                      // 未知
    EM_PTZ_ACTION_SCAN,                                         // 扫描
    EM_PTZ_ACTION_PRESET,                                       // 预置点
    EM_PTZ_ACTION_PATTERN,                                      // 巡迹
    EM_PTZ_ACTION_TOUR,                                         // 巡航
} EM_PTZ_ACTION;

//-------------------------------录象配置---------------------------------

// 时间段信息
typedef struct tagCFG_TIME_SECTION 
{
	DWORD				dwRecordMask;						// 录像掩码,按位分别为动态检测录像、报警录像、定时录像、Bit3~Bit15保留、Bit16动态检测抓图、Bit17报警抓图、Bit18定时抓图
	int					nBeginHour;
	int					nBeginMin;
	int					nBeginSec;
	int					nEndHour;
	int					nEndMin;
	int					nEndSec;
} CFG_TIME_SECTION;

// 时间表信息
typedef struct tagCFG_TIME_SCHEDULE
{
    BOOL                bEnableHoliday;                     // 是否支持节假日配置,默认为不支持,除非获取配置后返回为TRUE,不要使能假日配置
	CFG_TIME_SECTION	stuTimeSection[MAX_TIME_SCHEDULE_NUM][MAX_REC_TSECT]; // 第一维前7个元素对应每周7天,第8个元素对应节假日,每天最多6个时间段
} CFG_TIME_SCHEDULE;

// 实时抽帧配置,EVS定制
typedef struct tagCFG_BACKUP_LIVE_INFO
{  
    BOOL                bEnable;                                        // 是否启动抽帧   
    int                 nBackupRate;                                    // 抽帧备份比率,如为0表示只保留I帧,其它情况下表示保留I帧以及紧邻其后的若干P帧
                                                                        // 单位:百分比
                                                                        // 如果GOP为50,20表示保留50*20%=10帧数据(即1个I帧和9个P帧)。如果计算结果带小数,则取整              
    CFG_TIME_SECTION    stuTimeSection;                                 // 抽帧时间段
} CFG_BACKUP_LIVE_INFO;

// 定时录像配置信息
typedef struct tagCFG_RECORD_INFO
{
	int                 nChannelID;					// 通道号(0开始)
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT]; // 时间表
	int					nPreRecTime;				// 预录时间,为零时表示关闭(0~300)
	BOOL				bRedundancyEn;				// 录像冗余开关
	int					nStreamType;				// 0-主码流,1-辅码流1,2-辅码流2,3-辅码流3
	int					nProtocolVer;				// 协议版本号, 只读

	// 能力
	BOOL				abHolidaySchedule;          // 为true时有假日配置信息,bHolidayEn、stuHolTimeSection才有效;
    BOOL                bHolidayEn;                 // 假日录像使能TRUE:使能,FALSE:未使能
    CFG_TIME_SECTION    stuHolTimeSection[MAX_REC_TSECT];          // 假日录像时间表
    int                      nBackupLiveNum;                // 实时抽帧配置个数
    CFG_BACKUP_LIVE_INFO     stuBackupLiveInfo[8];          // 实时抽帧配置,EVS定制
} CFG_RECORD_INFO;

//-------------------------------报警配置---------------------------------

// 云台联动类型
typedef enum tagCFG_LINK_TYPE
{
	LINK_TYPE_NONE,						    		// 无联动
	LINK_TYPE_PRESET,								// 联动预置点
	LINK_TYPE_TOUR,									// 联动巡航
	LINK_TYPE_PATTERN,								// 联动轨迹
} CFG_LINK_TYPE;

// 联动云台信息
typedef struct tagCFG_PTZ_LINK
{
	CFG_LINK_TYPE		emType;						// 联动类型
	int					nValue;						// 联动取值分别对应预置点号,巡航号等等
} CFG_PTZ_LINK;

// 联动云台信息扩展
typedef struct tagCFG_PTZ_LINK_EX
{
	CFG_LINK_TYPE	emType;				// 联动类型 
	int			    nParam1;			// 联动参数1
	int			    nParam2;            // 联动参数2
	int			    nParam3;            // 联动参数3
	int			    nChannelID;         // 所联动云台通道
} CFG_PTZ_LINK_EX;


// 事件标题内容结构体
typedef struct tagCFG_EVENT_TITLE
{
	char				szText[MAX_CHANNELNAME_LEN];
	CFG_POLYGON			stuPoint;			// 标题左上角坐标, 采用0-8191相对坐标系
	CFG_SIZE     		stuSize;			// 标题的宽度和高度,采用0-8191相对坐标系,某项或者两项为0表示按照字体自适应宽高
    CFG_RGBA			stuFrontColor;		// 前景颜色
    CFG_RGBA			stuBackColor;		// 背景颜色
} CFG_EVENT_TITLE;

// 邮件附件类型
typedef enum tagCFG_ATTACHMENT_TYPE
{
		ATTACHMENT_TYPE_PIC,							// 图片附件
		ATTACHMENT_TYPE_VIDEO,							// 视频附件
		ATTACHMENT_TYPE_NUM,							// 附件类型总数
} CFG_ATTACHMENT_TYPE;
// 邮件详细内容
typedef struct tagCFG_MAIL_DETAIL
{
	   CFG_ATTACHMENT_TYPE emAttachType;                 // 附件类型
       int                 nMaxSize;                     // 文件大小上限,单位kB
       int                 nMaxTimeLength;               // 最大录像时间长度,单位秒,对video有效
}CFG_MAIL_DETAIL;

// 分割模式
typedef enum tagCFG_SPLITMODE
{
	    SPLITMODE_1  = 1,						// 1画面
	    SPLITMODE_2  = 2,						// 2画面
	    SPLITMODE_4 = 4,						// 4画面
		SPLITMODE_5 = 5,						// 5画面
		SPLITMODE_6 = 6,						// 6画面
		SPLITMODE_8 = 8,						// 8画面
		SPLITMODE_9 = 9,						// 9画面
		SPLITMODE_12 = 12,				    	// 12画面
		SPLITMODE_16 = 16,				    	// 16画面
		SPLITMODE_20 = 20,				    	// 20画面
		SPLITMODE_25 = 25,					    // 25画面
		SPLITMODE_36 = 36,					    // 36画面
		SPLITMODE_64 = 64,					    // 64画面
		SPLITMODE_144 = 144,					// 144画面
		SPLITMODE_PIP = 1000,                   // 画中画分割模式基础值
		SPLITMODE_PIP1 = SPLITMODE_PIP + 1,		// 画中画模式, 1个全屏大画面+1个小画面窗口
		SPLITMODE_PIP3 = SPLITMODE_PIP + 3,		// 画中画模式, 1个全屏大画面+3个小画面窗口
		SPLITMODE_FREE = SPLITMODE_PIP * 2,	// 自由开窗模式,可以自由创建、关闭窗口,自由设置窗口位置和Z轴次序
		SPLITMODE_COMPOSITE_1 = SPLITMODE_PIP * 3 + 1,	// 融合屏成员1分割
		SPLITMODE_COMPOSITE_4 = SPLITMODE_PIP * 3 + 4,	// 融合屏成员4分割
		SPLITMODE_3  = 10,						// 3画面
		SPLITMODE_3B = 11,						// 3画面倒品
		SPLITMODE_EOF,                          // 结束标识
} CFG_SPLITMODE;

// 轮巡联动配置
typedef struct tagCFG_TOURLINK
{
	BOOL				bEnable;			             // 轮巡使能
	CFG_SPLITMODE	    emSplitMode;		             // 轮巡时的分割模式
	int			        nChannels[MAX_VIDEO_CHANNEL_NUM];  // 轮巡通道号列表
	int			        nChannelCount;		             // 轮巡通道数量
} CFG_TOURLINK;

// 门禁操作类型
enum EM_CFG_ACCESSCONTROLTYPE
{
	EM_CFG_ACCESSCONTROLTYPE_NULL = 0,					// 不做操作
	EM_CFG_ACCESSCONTROLTYPE_AUTO,						// 自动
	EM_CFG_ACCESSCONTROLTYPE_OPEN,						// 开门
	EM_CFG_ACCESSCONTROLTYPE_CLOSE,						// 关门
	EM_CFG_ACCESSCONTROLTYPE_OPENALWAYS,				// 永远开启
	EM_CFG_ACCESSCONTROLTYPE_CLOSEALWAYS,				// 永远关闭
};

// 门禁联动操作的组合

#define MAX_ACCESSCONTROL_NUM	8						// 最大门禁操作的组合数


// 语音呼叫发起方
typedef enum
{
	EM_CALLER_DEVICE = 0,								// 设备发起
}EM_CALLER_TYPE;

// 呼叫协议
typedef enum
{
	EM_CALLER_PROTOCOL_CELLULAR = 0,					// 手机方式
}EM_CALLER_PROTOCOL_TYPE;


// 语音呼叫联动信息
typedef struct tagCFG_TALKBACK_INFO
{
	BOOL				bCallEnable;					// 语音呼叫使能
	EM_CALLER_TYPE		emCallerType;					// 语音呼叫发起方
	EM_CALLER_PROTOCOL_TYPE	emCallerProtocol;			// 语音呼叫协议
}CFG_TALKBACK_INFO;

// 电话报警中心联动信息
typedef struct tagCFG_PSTN_ALARM_SERVER
{
	BOOL				bNeedReport;						// 是否上报至电话报警中心
	int					nServerCount;						// 电话报警服务器个数					
	BYTE 				byDestination[MAX_PSTN_SERVER_NUM];	// 上报的报警中心下标,详见配置CFG_PSTN_ALARM_CENTER_INFO
}CFG_PSTN_ALARM_SERVER;

// 报警联动信息
typedef struct tagCFG_ALARM_MSG_HANDLE
{
	//能力
	bool				abRecordMask;
	bool				abRecordEnable;
	bool				abRecordLatch;
	bool				abAlarmOutMask;
	bool				abAlarmOutEn;
	bool				abAlarmOutLatch;	
	bool				abExAlarmOutMask;
	bool				abExAlarmOutEn;
	bool				abPtzLinkEn;
	bool				abTourMask;
	bool				abTourEnable;
	bool				abSnapshot;
	bool				abSnapshotEn;
	bool				abSnapshotPeriod;
	bool				abSnapshotTimes;
	bool				abTipEnable;
	bool				abMailEnable;
	bool				abMessageEnable;
	bool				abBeepEnable;
	bool				abVoiceEnable;
	bool				abMatrixMask;
	bool				abMatrixEnable;
	bool				abEventLatch;
	bool				abLogEnable;
	bool				abDelay;
	bool				abVideoMessageEn;
	bool				abMMSEnable;
	bool				abMessageToNetEn;
	bool				abTourSplit;
	bool				abSnapshotTitleEn;

    bool                abChannelCount;
	bool                abAlarmOutCount;
	bool                abPtzLinkEx;
	bool                abSnapshotTitle;
	bool                abMailDetail;
	bool                abVideoTitleEn;
	bool                abVideoTitle;
	bool                abTour;
	bool                abDBKeys;
	bool                abJpegSummary;
	bool                abFlashEn;
	bool                abFlashLatch;
	BYTE				byReserved1[2];                             // 补齐


	//信息
	int					nChannelCount;								 // 设备的视频通道数
	int					nAlarmOutCount;								 // 设备的报警输出个数
	DWORD				dwRecordMask[MAX_CHANNEL_COUNT];			 // 录像通道掩码(按位)
	BOOL				bRecordEnable;								 // 录像使能
	int					nRecordLatch;								 // 录像延时时间(秒)
	DWORD				dwAlarmOutMask[MAX_CHANNEL_COUNT];			 // 报警输出通道掩码
	BOOL				bAlarmOutEn;								 // 报警输出使能
	int					nAlarmOutLatch;								 // 报警输出延时时间(秒)
	DWORD				dwExAlarmOutMask[MAX_CHANNEL_COUNT];		 // 扩展报警输出通道掩码
	BOOL				bExAlarmOutEn;								 // 扩展报警输出使能
	CFG_PTZ_LINK		stuPtzLink[MAX_VIDEO_CHANNEL_NUM];			 // 云台联动项
	BOOL				bPtzLinkEn;									 // 云台联动使能
	DWORD				dwTourMask[MAX_CHANNEL_COUNT];				 // 轮询通道掩码
	BOOL				bTourEnable;								 // 轮询使能
	DWORD				dwSnapshot[MAX_CHANNEL_COUNT];				 // 快照通道号掩码
	BOOL				bSnapshotEn;								 // 快照使能
	int					nSnapshotPeriod;							 // 连拍周期(秒)
	int					nSnapshotTimes;								 // 连拍次数
	BOOL				bTipEnable;									 // 本地消息框提示
	BOOL				bMailEnable;								 // 发送邮件,如果有图片,作为附件
	BOOL				bMessageEnable;								  // 上传到报警服务器
	BOOL				bBeepEnable;							 	  // 蜂鸣
	BOOL				bVoiceEnable;								  // 语音提示
	DWORD				dwMatrixMask[MAX_CHANNEL_COUNT];			  // 联动视频矩阵通道掩码
	BOOL				bMatrixEnable;								  // 联动视频矩阵
	int					nEventLatch;								  // 联动开始延时时间(秒),0-15
	BOOL				bLogEnable;									  // 是否记录日志
	int					nDelay;										  // 设置时先延时再生效,单位为秒
	BOOL				bVideoMessageEn;							  // 叠加提示字幕到视频。叠加的字幕包括事件类型,通道号,秒计时。
	BOOL				bMMSEnable;									  // 发送彩信使能
	BOOL				bMessageToNetEn;							  // 消息上传给网络使能
	int					nTourSplit;									  // 轮巡时的分割模式 0: 1画面; 1: 8画面
	BOOL				bSnapshotTitleEn;							  // 是否叠加图片标题
	int                 nPtzLinkExNum;                                // 云台配置数
	CFG_PTZ_LINK_EX     stuPtzLinkEx[MAX_VIDEO_CHANNEL_NUM];          // 扩展云台信息
	int                 nSnapTitleNum;                                // 图片标题内容数
	CFG_EVENT_TITLE     stuSnapshotTitle[MAX_VIDEO_CHANNEL_NUM];      // 图片标题内容
	CFG_MAIL_DETAIL     stuMailDetail;                                // 邮件详细内容
	BOOL                bVideoTitleEn;                                // 是否叠加视频标题,主要指主码流
    int                 nVideoTitleNum;                               // 视频标题内容数目
	CFG_EVENT_TITLE     stuVideoTitle[MAX_VIDEO_CHANNEL_NUM];         // 视频标题内容
	int                 nTourNum;                                     // 轮询联动数目
	CFG_TOURLINK        stuTour[MAX_VIDEO_CHANNEL_NUM];               // 轮询联动配置
	int                 nDBKeysNum;			                          // 指定数据库关键字的有效数
	char                szDBKeys[MAX_DBKEY_NUM][MAX_CHANNELNAME_LEN]; // 指定事件详细信息里需要写到数据库的关键字
	BYTE                byJpegSummary[MAX_SUMMARY_LEN];               // 叠加到JPEG图片的摘要信息
	BOOL                bFlashEnable;                                 // 是否使能补光灯
	int                 nFlashLatch;                                  // 补光灯延时时间(秒),延时时间范围:[10,300]
	
	bool				abAudioFileName;
	bool				abAlarmBellEn;
	bool				abAccessControlEn;
	bool				abAccessControl;

	char				szAudioFileName[MAX_PATH];					// 联动语音文件绝对路径
	BOOL				bAlarmBellEn;								// 警号使能
	BOOL				bAccessControlEn;							// 门禁使能

	DWORD				dwAccessControl;							// 门禁组数
	EM_CFG_ACCESSCONTROLTYPE	emAccessControlType[MAX_ACCESSCONTROL_NUM];	// 门禁联动操作信息
	
	bool				abTalkBack;	
    BYTE				byReserved2[3];                             // 补齐
	CFG_TALKBACK_INFO	stuTalkback;								// 语音呼叫联动信息

	bool				abPSTNAlarmServer;
    BYTE				byReserved3[3];                             // 补齐
	CFG_PSTN_ALARM_SERVER	stuPSTNAlarmServer;						// 电话报警中心联动信息
    CFG_TIME_SCHEDULE       stuTimeSection;                         // 事件响应时间表
	bool				abAlarmBellLatch;
    BYTE				byReserved4[3];                             // 补齐
	int					nAlarmBellLatch;							// 警号输出延时时间(10-300秒)

    bool				abAudioPlayTimes;
    bool				abAudioLinkTime;
    BYTE				byReserved5[2];                             // 补齐
    UINT                nAudioPlayTimes;                            // 联动语音播放次数
    UINT                nAudioLinkTime;                             // 联动语音播放的时间, 单位:秒
	bool				abAlarmOutTime;								// nAlarmOutTime 是否有效
	int					nAlarmOutTime;								// 报警输出持续时间,单位秒, 如果无此字段,按设备原来的方式实现(定制)
	bool				abBeepTime;									// nBeepTime 是否有效
	int					nBeepTime;									// 蜂鸣时长(定制),单位秒,最大值为3600,0代表持续蜂鸣
} CFG_ALARM_MSG_HANDLE;



// 报警使能控制方式枚举类型
typedef enum tagEM_CTRL_ENABLE
{
	EM_CTRL_NORMAL=0,   //不控制使能
	EM_CTRL_ALWAYS_EN,  //总是使能
	EM_CTRL_ONCE_DIS,   //旁路
	EM_CTRL_ALWAYS_DIS, //移除
	EM_CTRL_NUM         //枚举类型总数
}EM_CTRL_ENABLE;


// 防区类型
typedef enum tagEM_CFG_DEFENCEAREATYPE
{
	EM_CFG_DefenceAreaType_Unknown = 0,     // 未知类型
	EM_CFG_DefenceAreaType_InTime,          // 即时防区 
	EM_CFG_DefenceAreaType_Delay,           // 延时防区
	EM_CFG_DefenceAreaType_FullDay,         // 24小时防区
    EM_CFG_DefenceAreaType_Follow,          // 跟随防区
    EM_CFG_DefenceAreaType_Medical,         // 医疗紧急防区
    EM_CFG_DefenceAreaType_Panic,           // 恐慌防区
    EM_CFG_DefenceAreaType_Fire,            // 火警防区
    EM_CFG_DefenceAreaType_FullDaySound,    // 24小时有声防区
    EM_CFG_DefenceAreaType_FullDaySlient,   // 24小时无声防区
    EM_CFG_DefenceAreaType_Entrance1,       // 出入防区1
    EM_CFG_DefenceAreaType_Entrance2,       // 出入防区2
    EM_CFG_DefenceAreaType_InSide,          // 内部防区
    EM_CFG_DefenceAreaType_OutSide,         // 外部防区
    EM_CFG_DefenceAreaType_PeopleDetect,    // 人员检测防区
	EM_CFG_DefenceAreaType_Robbery,			// 匪警防区
}EM_CFG_DEFENCEAREATYPE;

// 外部报警配置
typedef struct tagCFG_ALARMIN_INFO
{
	int					nChannelID;									// 报警通道号(0开始)
	BOOL				bEnable;									// 使能开关
	char				szChnName[MAX_CHANNELNAME_LEN];				// 报警通道名称
	int					nAlarmType;									// 报警器类型,0:常闭,1:常开
	CFG_ALARM_MSG_HANDLE stuEventHandler;							// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];// 事件响应时间段,时间段获取和设置以此成员为准,忽略 stuEventHandler 中的 stuTimeSection
	BOOL				abDevID;									// 
	char				szDevID[MAX_NAME_LEN];						// 设备ID
	int                 nPole;                                      // 传感器触发模式, 0:高有效,1低有效;
	                                                                // 具体表现为传感器接地or电源,与nAlarmType组合使用
	EM_SENSE_METHOD     emSense;                                    // 传感器感应方式
	EM_CTRL_ENABLE      emCtrl;                                     // 报警使能控制方式
	int                 nDisDelay;                                  // 延时撤防时间,防区类型为"Delay"(延时防区)时才有效, 单位: 秒, 最大时间通过查询能力获得
	                                                                // emCtrl值为EM_CTRL_NORMAL或EM_CTRL_ALWAYS_EN 时有效。

	EM_CFG_DEFENCEAREATYPE emDefenceAreaType;						// 防区类型, 具体支持的类型通过查询能力获得
	int					nEnableDelay;								// 延时布防时间, 防区类型为"Delay"(延时防区)时才有效, 单位: 秒, 最大时间通过查询能力获得    
    int                 nSlot;                                      // 根地址, -1表示无效, 0表示本地通道, 1表示连接在第一个串口上的扩展通道, 2、3...以此类推
    int                 nLevel1;                                    // 第一级级联地址, 表示连接在第nSlot串口上的第nLevel1个探测器或仪表, -1表示无效, 从0开始
    bool                abLevel2;                                   // 表示nLevel2字段是否存在
    int                 nLevel2;                                    // 第二级级联地址, 表示连接在第nLevel1个的仪表上的探测器序号, -1表示无效, 从0开始
    int                 nDoorNotClosedTimeout;                      // 门未关超时时间,单位为s,范围 15s-300s
} CFG_ALARMIN_INFO;

// 网络输入报警配置
typedef struct tagCFG_NETALARMIN_INFO 
{
	int					nChannelID;									// 报警通道号(0开始)
	BOOL				bEnable;									// 使能开关
	char				szChnName[MAX_CHANNELNAME_LEN];				// 报警通道名称
	int					nAlarmType;									// 报警器类型,0:常闭,1:常开
	CFG_ALARM_MSG_HANDLE stuEventHandler;							// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];// 事件响应时间段,时间段获取和设置以此成员为准,忽略 stuEventHandler 中的 stuTimeSection
} CFG_NETALARMIN_INFO;


// 动检支持的视频窗口配置
typedef struct tagCFG_MOTION_WINDOW
{
	int                  nThreshold;           // 面积阀值,取值[0, 100]
	int                  nSensitive;           // 灵敏度,取值[0, 100]
	CFG_RECT             stuWindow;            // 动检窗口区域, 坐标位置取值[0, 8192)
}CFG_MOTION_WINDOW;

typedef struct tagCFG_DETECT_REGION
{
    int				     nRegionID;									    // 区域ID
    char                 szRegionName[CFG_COMMON_STRING_64];            // 动态窗口名称
    int                  nThreshold;                                    // 面积阀值,取值[0, 100]
	int					 nSenseLevel;								    // 灵敏度1~6
	int					 nMotionRow;									// 动态检测区域的行数
	int					 nMotionCol;									// 动态检测区域的列数
	BYTE				 byRegion[MAX_MOTION_ROW][MAX_MOTION_COL];	    // 检测区域,最多32*32块区域 
}CFG_DETECT_REGION;

// 动态检测报警配置
typedef struct tagCFG_MOTION_INFO 
{
	int					 nChannelID;									// 报警通道号(0开始), nVersion=1时,此字段无效
	BOOL				 bEnable;									    // 使能开关
	int					 nSenseLevel;								    // 一代动检灵敏度1~6
	int					 nMotionRow;									// 一代动态检测区域的行数
	int					 nMotionCol;									// 一代动态检测区域的列数
	BYTE				 byRegion[MAX_MOTION_ROW][MAX_MOTION_COL];	    // 一代检测区域,最多32*32块区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;							    // 报警联动
	CFG_TIME_SECTION	 stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];   // 事件响应时间段,时间段获取和设置以此成员为准,忽略 stuEventHandler 中的 stuTimeSection
	int			         nVersion;                                      // 0, 1, 由能力集确定, 只读, 等于1时以下字段有效
	BOOL                 bSenseLevelEn;                                 // 只读,决定nSenseLevel是否有效
	BOOL                 bVRatioEn;                                     // 只读,面积占用比使能, 决定nVolumeRatio是否有效
	int                  nVolumeRatio;                                  // 一代动检的面积占用比,1-100
	BOOL                 bSRatioEn;                                     // 只读,灵敏度使能,决定nSubRatio值是否有效
	int                  nSubRatio;                                     // 一代动检的残差阈值, 1-100
	BOOL                 abWindow;                                      // 此字段及以下两个字段已废弃
	int                  nWindowCount;                                  // 视频窗口个数
	CFG_MOTION_WINDOW    stuWindows[MAX_MOTION_WINDOW];                 // 视频窗口数组
	BOOL                 abDetectRegion;                                // 只读,1:nRegionCount,stuRegion有效
                                                                        //       0:nMotionRow,nMotionCol,byRegion有效
	int                  nRegionCount;                                  // 三代动态检测区域个数
	CFG_DETECT_REGION    stuRegion[MAX_MOTION_WINDOW];                  // 三代动态检测区域
} CFG_MOTION_INFO;

// 视频丢失报警配置
typedef struct tagCFG_VIDEOLOST_INFO 
{
	int					nChannelID;									// 报警通道号(0开始)
	BOOL				bEnable;									// 使能开关
	CFG_ALARM_MSG_HANDLE stuEventHandler;							// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];// 事件响应时间段,时间段获取和设置以此成员为准,忽略 stuEventHandler 中的 stuTimeSection
} CFG_VIDEOLOST_INFO;

// 视频遮挡报警配置
typedef struct tagCFG_SHELTER_INFO 
{
	int					nChannelID;									// 报警通道号(0开始)
	BOOL				bEnable;									// 使能开关
	int					nSenseLevel;								// 灵敏度
	CFG_ALARM_MSG_HANDLE stuEventHandler;							// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];// 事件响应时间段,时间段获取和设置以此成员为准,忽略 stuEventHandler 中的 stuTimeSection
} CFG_SHELTER_INFO;

// 无存储设备报警配置
typedef struct tagCFG_STORAGENOEXIST_INFO 
{
	BOOL				bEnable;						// 使能开关
	CFG_ALARM_MSG_HANDLE stuEventHandler;				// 报警联动
} CFG_STORAGENOEXIST_INFO;

// 存储设备访问出错报警配置
typedef struct tagCFG_STORAGEFAILURE_INFO 
{
	BOOL				bEnable;						// 使能开关
	CFG_ALARM_MSG_HANDLE stuEventHandler;				// 报警联动
} CFG_STORAGEFAILURE_INFO;

// 存储设备空间不足报警配置
typedef struct tagCFG_STORAGELOWSAPCE_INFO 
{
	BOOL				bEnable;						// 使能开关
	int					nLowerLimit;					// 硬盘剩余容量下限,百分数(0~99)
	CFG_ALARM_MSG_HANDLE stuEventHandler;				// 报警联动
} CFG_STORAGELOWSAPCE_INFO;

// 网络断开报警配置
typedef struct tagCFG_NETABORT_INFO 
{
	BOOL				bEnable;						// 使能开关
	CFG_ALARM_MSG_HANDLE stuEventHandler;				// 报警联动
} CFG_NETABORT_INFO;

// IP冲突报警配置
typedef struct tagCFG_IPCONFLICT_INFO 
{
	BOOL				bEnable;						// 使能开关
	CFG_ALARM_MSG_HANDLE stuEventHandler;				// 报警联动
} CFG_IPCONFLICT_INFO;

// CLIENT_QueryNewSystemInfo 接口的命令 CFG_CAP_ALARM (获取报警能力集)对应结构体

// 传感器报警方式
typedef struct tagCFG_ALARM_SENSE_METHOD
{
	int                 nSupportSenseMethodNum;								// 支持的传感器方式数
	EM_SENSE_METHOD     emSupportSenseMethod[MAX_ALARM_SENSE_METHOD_NUM];   // 支持的传感器方式
}CFG_ALARM_SENSE_METHOD;

typedef struct tagCFG_CAP_ALARM_INFO
{
	BOOL                 bAlarmPir;									// 设备是否支持PIR(人体热式感应器)报警,外部报警的一种
	BOOL                 bFlashLight;								// 设备是否支持补光灯
	int					 nDefenceAreaTypeNum;						// 防区类型种类数,为0表示无此字段时报警输入不作为防区使用。
	EM_CFG_DEFENCEAREATYPE	emDefenceAreaType[MAX_ALARM_DEFENCE_TYPE_NUM];			// 支持防区类型 
	int				 	 nMaxDelay;									// 延时防区的最大延时时间,单位为秒,只有支持延时防区时此字段才有效。
	int					 nAlarmChannelNum;							// 报警通道数,为了保持兼容性,此为0时表示每个通道支持所有类型的传感器
	CFG_ALARM_SENSE_METHOD stuAlarmChannel[MAX_ALARM_CHANNEL_NUM];	// 报警通道集合
	int					 nAlarmBellCount;							// 警号个数
	int					 nMaxBackupAlarmServer;						// 最大备用报警中心数,无此字段时默认为0,0表示不支持备用报警中心
	int					 nMaxPSTNAlarmServer;						// 最大电话报警中心数, 无此字段时默认为0,0表示不支持电话报警中心。
}CFG_CAP_ALARM_INFO;

// 补光灯配置
typedef struct tagCFG_FLASH_LIGHT
{
	BOOL                bEnable;                        // 使能开关
	int                 nBrightness;                    // 亮度 0~100
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];// 补光灯工作时间段
}CFG_FLASH_LIGHT;

typedef struct tagCFG_CUSTOMCASE
{
	char                szCaseTitle[MAX_OSD_TITLE_LEN];    // 案件名称
	char                szCaseContent[MAX_OSD_SUMMARY_LEN];  // 案件名称
	BOOL                bCaseNoOsdEn;                        // 案件编号叠加使能
}CFG_CUSTOMCASE;

// 时间
typedef struct tagCFG_NET_TIME
{
    int                 nStructSize;
    DWORD				dwYear;					// 年
    DWORD				dwMonth;				// 月
    DWORD				dwDay;					// 日
    DWORD				dwHour;					// 时
    DWORD				dwMinute;				// 分
    DWORD				dwSecond;				// 秒
} CFG_NET_TIME;

// 司法刻录配置
typedef struct tagCFG_JUDICATURE_INFO
{
	char                szDiskPassword[MAX_PASSWORD_LEN];  // 光盘密码(废弃, 使用szPassword和nPasswordLen)
	char                szCaseNo[MAX_OSD_SUMMARY_LEN];     // 案件编号
	BOOL                bCaseNoOsdEn;                      // 案件编号叠加使能
	char                szCaseTitle[MAX_OSD_SUMMARY_LEN];  // 案件名称
	BOOL                bCaseTitleOsdEn;                   // 案件名称叠加使能
	char                szOfficer[MAX_OSD_SUMMARY_LEN];    // 办案人员
	BOOL                bOfficerOsdEn;                     // 办案人员叠加使能
	char                szLocation[MAX_OSD_SUMMARY_LEN];   // 办案地点
	BOOL                bLocationOsdEn;                    // 办案地点叠加使能
	char                szRelatedMan[MAX_OSD_SUMMARY_LEN]; // 涉案人员
	BOOL                bRelatedManOsdEn;                  // 涉案人员叠加使能
	char                szDiskNo[MAX_OSD_SUMMARY_LEN];     // 光盘编号
	BOOL                bDiskNoOsdEn;                      // 光盘编号叠加使能

	BOOL                bCustomCase;                       // TRUE:自定义司法案件信息,FALSE: 上边szCaseNo等字段有效
	int                 nCustomCase;                       // 实际CFG_CUSTOMCASE个数
	CFG_CUSTOMCASE      stuCustomCases[MAX_CUSTOMCASE_NUM];// 自定义司法案件信息

	BOOL                bDataCheckOsdEn;                   // 光盘刻录数据校验配置 叠加使能
	BOOL                bAttachFileEn;                     // 附件上传使能
    char                szPassword[MAX_PASSWORD_LEN];      // 密码, 刻录光盘时、配置读保护密码
    int                 nPasswordLen;                      // 密码长度
    CFG_NET_TIME        stuStartTime;                      // 片头信息叠加开始时间
    int                 nPeriod;                           // 片头信息叠加时间长度,单位:分钟
}CFG_JUDICATURE_INFO;

// 刻录满事件配置
typedef struct tagCFG_BURNFULL_ONE
{
	char                szBurnDisk[MAX_NAME_LEN];          // 刻录设备
	BOOL                bEnable;                           // 使能开关
	unsigned int        nLowerLimit;                       // 光盘剩余容量下限	单位:M
	BOOL                bBurnStop;                         // 刻录停止使能
	CFG_ALARM_MSG_HANDLE stuEventHandler;							// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];// 事件响应时间段
    BOOL                bChangeDisk;                       // 换盘使能
}CFG_BURNFULL_ONE;

typedef struct tagCFG_BURNFULL_INFO
{
	unsigned int        nBurnDev;                          // 实际刻录设备个数
	CFG_BURNFULL_ONE    stuBurns[MAX_BURNING_DEV_NUM];     // 每个元素对应一个刻录设备
}CFG_BURNFULL_INFO;

//-------------------------------抓图配置能力---------------------------------
// 抓图配置能力
typedef struct tagCFG_SNAPCAPINFO_INFO  
{
	int					nChannelID;						// 抓图通道号(0开始)
	DWORD				dwIMageSizeNum;					// 支持的分别率信息
	CFG_CAPTURE_SIZE	emIMageSizeList[MAX_IMAGESIZE_NUM];
	DWORD				dwFramesPerSecNum;				// 支持的帧率信息
	int					nFramesPerSecList[MAX_FPS_NUM];
	DWORD				dwQualityMun;					// 支持的画质信息
	CFG_IMAGE_QUALITY	emQualityList[MAX_QUALITY_NUM];

	DWORD               dwMode;							// 模式,按位:第一位:定时;第二位:手动。
	DWORD               dwFormat;						// 图片格式模式,按位:第一位:bmp;第二位:jpg。
} CFG_SNAPCAPINFO_INFO;


//-------------------------------网络存储服务器配置---------------------------------
// 网络存储服务器配置
typedef struct tagCFG_CHANNEL_TIME_SECTION 
{
	CFG_TIME_SECTION stuTimeSection[WEEK_DAY_NUM][MAX_NAS_TIME_SECTION];//存储时间段
} CFG_CHANNEL_TIME_SECTION;

typedef struct tagCFG_NAS_INFO
{
	BOOL						bEnable;									// 使能开关
	int							nVersion;									// 网络存储服务器版本0=老的FTP,1=NAS存储
	int							nProtocol;									// 协议类型0=FTP 1=SMB
	char						szAddress[MAX_ADDRESS_LEN];					// IP地址或网络名
	int							nPort;										// 端口号
	char						szUserName[MAX_USERNAME_LEN];				// 帐户名
	char						szPassword[MAX_PASSWORD_LEN];				// 密码
	char						szDirectory[MAX_DIRECTORY_LEN];				// 共享的目录名
	int							nFileLen;									// 文件长度
	int							nInterval;									// 相邻文件时间间隔
	CFG_CHANNEL_TIME_SECTION	stuChnTime[MAX_VIDEO_CHANNEL_NUM];			// 存储时间段
	int                         nChnTimeCount;                              // 有效的存储时间段数
} CFG_NAS_INFO;

//------------------------------云台配置--------------------------------------------
// 协议名
typedef struct tagCFG_PRONAME
{
	char				name[MAX_NAME_LEN];			// 协议名
} CFG_PRONAME;

// 串口基本属性
typedef struct tagCFG_COMM_PROP
{
	BYTE				byDataBit;					// 数据位;0:5,1:6,2:7,3:8
	BYTE				byStopBit;					// 停止位;0:1位,1:1.5位,2:2位
	BYTE				byParity;					// 校验位;0:无校验,1:奇校验;2:偶校验
	BYTE				byBaudRate;					// 波特率;0:300,1:600,2:1200,3:2400,4:4800,													
	                                                // 5:9600,6:19200,7:38400,8:57600,9:115200
} CFG_COMM_PROP;

// 归位预置点配置
typedef struct tagCFG_PRESET_HOMING
{
	int          nPtzPresetId;   //云台预置点编号	0~65535
 //-1表示无效
	int          nFreeSec;       //空闲的时间,单位为秒
}CFG_PRESET_HOMING;

// 云台配置
typedef struct tagCFG_PTZ_INFO
{
	// 能力
	bool				abMartixID;
	bool				abCamID;
	bool				abPTZType;

	// 信息
	int					nChannelID;								// 通道号(0开始)
	BOOL                bEnable;                                // 使能开关
	char                szProName[MAX_NAME_LEN];                // 协议名称
	int					nDecoderAddress;						// 解码器地址;0 - 255
	CFG_COMM_PROP		struComm;
	int					nMartixID;								// 矩阵号
	int					nPTZType;								// 云台类型0-兼容,本地云台 1-远程网络云台
	int					nCamID;									// 摄像头ID
	int                 nPort;                                  // 使用的串口端口号
	CFG_PRESET_HOMING   stuPresetHoming;                        // 一段时间不操作云台,自动归位到某个预置点
	int                 nControlMode;                           // 控制模式, 0:"RS485"串口控制(默认);1:"Coaxial" 同轴口控制
} CFG_PTZ_INFO;  

//定时功能类型
typedef enum tagCFG_PTZ_FUNC_TYPE
{
	FUNC_TYPE_TOUR = 0 ,		//巡航
	FUNC_TYPE_PATTERN  ,		//自动巡迹
	FUNC_TYPE_PRE	   ,		//预置点
	FUNC_TYPE_SCAN	   ,		//自动线扫
	FUNC_TYPE_MAX	   ,		
}CFG_PTZ_FUNC_TYPE;


//自动归位
typedef struct tagCFG_AUTO_HOMING
{
	BOOL	bEnable;		// 自动归位开关
	int		nTime;			// 空闲时间,表示空闲的时间,单位为秒
}CFG_AUTO_HOMING;

//定时动作配置
typedef struct tagCFG_PTZ_PER_AUTOMOVE_INFO
{
	BOOL				bEnable;				//	定时动作开关标志 TRUE 开,FALSE 关
	CFG_TIME_SCHEDULE	stTimeSchedule;			//  时间表类型
	CFG_PTZ_FUNC_TYPE	emFuncType;				//  定时功能
	int					nTourId;				// 	巡航编号,		范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wTourMin和wTourMax
	int					nPatternId;				// 	自动巡迹编号,	范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wPatternMin和wPatternMax
	int					nPresetId;				//  预置点编号,		范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wPresetMin和wPresetMax
	int					nScanId;				//	自动线扫编号,	范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wAutoScanMin和wAutoScanMax
	CFG_AUTO_HOMING		stAutoHoming;			//  自动归位,一段时间不操作云台,自动归位到该时间段内的动作
	BOOL				bSnapshotEnable;		//	预置点快照使能,只有当emFuncType为FUNC_TYPE_PRE时才有效
	int					nSnapshortDelayTime;	//	预置点抓拍延时时间,单位秒,只有当emFuncType为FUNC_TYPE_PRE时才有效
}CFG_PTZ_PER_AUTOMOVE_INFO;

typedef struct tagCFG_PTZ_ALL_AUTOMOVE_INFO
{
	CFG_PTZ_PER_AUTOMOVE_INFO stPTZPerInfo[MAX_CONFIG_NUM];		//配置信息
	int						  nCfgNum;							//获取到的配置个数
}CFG_PTZ_ALL_AUTOMOVE_INFO;

//云台定时动作配置,注意,此结构针对设备
typedef struct tagCFG_PTZ_AUTOMOVE_INFO
{
	CFG_PTZ_ALL_AUTOMOVE_INFO *pstPTZAutoConfig;				//云台的配置信息
	int						   nMaxPTZNum;						//结构体申请的云台个数(对于多通道查询,申请不小于设备通数,对于单通道查询,一个就够了)
	int						   nReturnPTZNum;					//设备返回的云台个数(一般为设备通道数)
}CFG_PTZ_AUTOMOVE_INFO;

//----------------------------------视频分析设备配置------------------------------------------
// 人脸属性类型
typedef enum tagEM_FACEFEATURE_TYPE
{
	EM_FACEFEATURE_UNKNOWN,			// 未知
	EM_FACEFEATURE_SEX,				// 性别
	EM_FACEFEATURE_AGE,				// 年龄
	EM_FACEFEATURE_EMOTION,			// 表情
	EM_FACEFEATURE_GLASSES,			// 眼镜状态
	EM_FACEFEATURE_RACE,			
	EM_FACEFEATURE_EYE,				// 眼睛状态
	EM_FACEFEATURE_MOUTH,			// 嘴巴状态
	EM_FACEFEATURE_MASK,			// 口罩状态
	EM_FACEFEATURE_BEARD,			// 胡子状态
	EM_FACEFEATURE_ATTRACTIVE,		// 魅力值
} EM_FACEFEATURE_TYPE;

// 人数统计大类场景
typedef struct tagCFG_NUMBER_STAT_INFO
{
	UINT					   nCameraType;		// 相机类型,0:表示老单目客流 1:表示新统一单目客流 2:表示新统一双目客流
}CFG_NUMBER_STAT_INFO;

// 客流量统计
typedef struct tagCFG_NUMBERSTAT_RULE_INFO
{
	UINT					nMaxRules;			// 支持规则的最大个数
}CFG_NUMBERSTAT_RULE_INFO;

// 排队检测
typedef struct tagCFG_QUEUEDETECTION_RULE_INFO
{
	UINT					nMaxRules;			// 支持规则的最大个数
}CFG_QUEUEDETECTION_RULE_INFO;

// 区域内人数统计
typedef struct tagCFG_MANNUMDETECTION_RULE_INFO
{
	UINT					nMaxRules;			// 支持规则的最大个数
}CFG_MANNUMDETECTION_RULE_INFO;


// 人体检测及人体识别支持的脸部特征(定制)
typedef enum tagCFG_EM_FACE_TRAIT
{
	CFG_EM_FACE_TRAIT_UNKNOWN,							// 未知
	CFG_EM_FACE_TRAIT_SEX,								// 性别					
	CFG_EM_FACE_TRAIT_AGE,								// 年龄
	CFG_EM_FACE_TRAIT_GLASSES,							// 眼镜
	CFG_EM_FACE_TRAIT_BEARD,							// 胡子
	CFG_EM_FACE_TRAIT_COMPLEXION,						// 肤色
	CFG_EM_FACE_TRAIT_MASK,								// 口罩
	CFG_EM_FACE_TRAIT_EMOTION,							// 表情
}CFG_EM_FACE_TRAIT;


// 人体检测及人体识别支持的身体特征(定制)
typedef enum tagCFG_EM_BODY_TRAIT
{
	CFG_EM_BODY_TRAIT_UNKNOWN,							// 未知
	CFG_EM_BODY_TRAIT_SEX,								// 性别					
	CFG_EM_BODY_TRAIT_AGEGROUP,							// 年龄组
	CFG_EM_BODY_TRAIT_COATTYPE,							// 上衣
	CFG_EM_BODY_TRAIT_TROUSERSTYPE,						// 裤子
	CFG_EM_BODY_TRAIT_ANGLE,							// 人体角度
	CFG_EM_BODY_TRAIT_UPPERPATTERN,						// 上衣模式
	CFG_EM_BODY_TRAIT_TROUSERSCOLOR,					// 裤子颜色
	CFG_EM_BODY_TRAIT_UMBRELLA,							// 打伞				
	CFG_EM_BODY_TRAIT_UMBRELLACOLOR,					// 雨伞颜色
	CFG_EM_BODY_TRAIT_HOLD,								// 胸前报东西
	CFG_EM_BODY_TRAIT_TROUSERSPATTERN,					// 裤子模式
	CFG_EM_BODY_TRAIT_HATTYPE,							// 帽子款式
	CFG_EM_BODY_TRAIT_HATCOLOR,							// 帽子颜色
	CFG_EM_BODY_TRAIT_UPPERTYPE,						// 上衣款式
	CFG_EM_BODY_TRAIT_COATCOLOR,						// 上衣颜色
	CFG_EM_BODY_TRAIT_HAIRSTYLE,						// 发型
	CFG_EM_BODY_TRAIT_HAIRCOLOR,						// 头发颜色				
	CFG_EM_BODY_TRAIT_SHOESTYPE,						// 鞋子款式
	CFG_EM_BODY_TRAIT_SHOESCOLOR,						// 鞋子颜色
	CFG_EM_BODY_TRAIT_BAG,								// 箱包款式
	CFG_EM_BODY_TRAIT_BAGCOLOR,							// 箱包颜色
	CFG_EM_BODY_TRAIT_MASK,								// 口罩
	CFG_EM_BODY_TRAIT_MASKCOLOR,						// 口罩颜色
}CFG_EM_BODY_TRAIT;

// 人体检测及人体识别支持的脸部抓拍策略(定制)
typedef enum tagCFG_EM_FACE_SNAP_POLICY
{
	CFG_EM_FACE_SNAP_POLICY_UNKNOWN,					// 未知
	CFG_EM_FACE_SNAP_POLICY_REALTIME,					// 实时抓拍模式(当前的通用模式,实时性优先)
	CFG_EM_FACE_SNAP_POLICY_OPTIMAL,					// 优选抓拍模式,在设定的延时区间(OptimalTime)内挑选评分最高的抓图,准确性优先但延时较大
	CFG_EM_FACE_SNAP_POLICY_QUALITY,					// 质量抓拍模式,在Optimal的基础上,如果图片质量好于阈值提前结束优选,提高实时性
	CFG_EM_FACE_SNAP_POLICY_RECOGNITION,				// 识别优先抓拍模式,在优选时间内,以一定间隔帧数多次进行比对;一旦比对成功则立即结束优选,以提高对比成功率,取代质量优先模式。
	CFG_EM_FACE_SNAP_POLICY_QUICK,						// 快速优选,从检测到人脸/人体开始,抓拍一定帧数内的质量最好的人脸或人体,定制
	CFG_EM_FACE_SNAP_POLICY_FULLTRACK,					// 全程优选,抓拍全程质量最好的人脸人体,定制
	CFG_EM_FACE_SNAP_POLICY_INTERVAL,					// 间隔抓拍,定制
	CFG_EM_FACE_SNAP_POLICY_SINGLE,						// 单人模式,常用于门禁,定制
	CFG_EM_FACE_SNAP_POLICY_PRECISION,					// 高精度模式,增强人脸识别,定制
}CFG_EM_FACE_SNAP_POLICY;

// 人体检测能力集(定制)
typedef struct tagFACEBODY_DETECT_CAPS
{
	CFG_EM_FACE_TRAIT				szFaceFeatureList[32];			// 支持检测的人脸属性
	unsigned int					nFaceFeature;					// 返回的人脸属性个数
	CFG_EM_BODY_TRAIT				szBodyFeatureList[32];			// 支持检测的人体属性
	unsigned int					nBodyFeature;					// 返回的人脸属性个数
	CFG_EM_FACE_SNAP_POLICY			szSnapPolicyList[16];			// 支持抓拍属性
	unsigned int					nSnapPolicy;					// 返回的人脸属性个数	
	BYTE							byReserved[256];				// 预留字段
}FACEBODY_DETECT_CAPS;

// 人体识别能力集(定制)
typedef struct tagFACEBODY_ANALYSE_CAPS
{
	CFG_EM_FACE_TRAIT				szFaceFeatureList[32];			// 支持检测的人脸属性
	unsigned int					nFaceFeature;					// 返回的人脸属性个数
	CFG_EM_BODY_TRAIT				szBodyFeatureList[32];			// 支持检测的人体属性
	unsigned int					nBodyFeature;					// 返回的人脸属性个数
	CFG_EM_FACE_SNAP_POLICY			szSnapPolicyList[16];			// 支持抓拍属性
	unsigned int					nSnapPolicy;					// 返回的人脸属性个数
	BYTE							byReserved[256];				// 预留字段
}FACEBODY_ANALYSE_CAPS;

// 可选择特写模式
typedef enum tagEM_SUPPORT_CLOSE_UP_TYPE
{
    EM_SUPPORT_CLOSE_UP_TYPE_UNKNOWN,                               // 未知
    EM_SUPPORT_CLOSE_UP_TYPE_TRACK_MODE,                            // 跟踪模式
    EM_SUPPORT_CLOSE_UP_TYPE_FIXED_MODE,                            // 固定模式
    EM_SUPPORT_CLOSE_UP_TYPE_DESIGNED_REGION_MODE,                  // 指定区域模式
} EM_SUPPORT_CLOSE_UP_TYPE;
// 睿厨着装检特征列表
typedef enum tagEM_FEATURE_LIST_TYPE
{
	EM_FEATURE_LIST_UNKNOWN,		// 未知
	EM_FEATURE_LIST_HAS_MASK,		// 是否戴口罩
	EM_FEATURE_LIST_HAS_CHEF_HAT,	// 是否戴厨师帽
	EM_FEATURE_LIST_HAS_CHEF_CLOTHES,//是否穿厨师服
	EM_FEATURE_LIST_CHEF_CLOTHES_COLOR,	// 厨师服的颜色
}EM_FEATURE_LIST_TYPE;

// 检测符合要求的厨师服颜色不报警(无此字段表示不检测厨师服颜色)
typedef enum tagEM_SUPPORTED_COLOR_LIST_TYPE
{
	EM_SUPPORTED_COLOR_LIST_TYPE_UNKNOWN,	// 未知
	EM_SUPPORTED_COLOR_LIST_TYPE_BLACK,		// 黑色
	EM_SUPPORTED_COLOR_LIST_TYPE_WHITE,		// 白色
	EM_SUPPORTED_COLOR_LIST_TYPE_RED,		// 红色
}EM_SUPPORTED_COLOR_LIST_TYPE;

// 联动业务大类选项
typedef struct tagCFG_LINK_CLASS_TYPE
{
    int                 nChannel;                      // 待级联的业务所在通道号
    EM_SCENE_TYPE       emClassType;                   // 待级联的业务大类
    BOOL                bSupportAllTimeWork;           // 联动状态下是否支持全时检测
    BYTE                byReserved[252];               // 预留字段
} CFG_LINK_CLASS_TYPE;

// 活跃度统计规则
typedef struct tagCFG_ACTIVITY_ANALYSE_CAPS
{
	BOOL				bSupportLocalDataStore;	// 是否支持本地数据存储
	UINT				nMaxRules;				// 该规则支持的最大规则数
	BYTE				byReserved[256];		// 预留字段
}CFG_ACTIVITY_ANALYSE_CAPS;

// 场景支持的规则
typedef struct
{
	DWORD             	dwSupportedRule;                                    		// 规则类型
	int               	nSupportedObjectTypeNum;                        			// 支持的检测物体类型个数
	char              	szObjectTypeName[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 支持的检测物体类型列表
	int               	nSupportedActionsNum;                                    	// 支持的检测物体动作个数
	char              	szSupportedActions[MAX_ACTION_LIST_SIZE][MAX_NAME_LEN];  	// 支持的检测物体动作列表
	int               	nSupportedDetectTypeNum;                                 	// 支持的检测类型个数
	char              	szSupportedDetectTypes[MAX_ACTION_LIST_SIZE][MAX_NAME_LEN];	// 支持的检测类型列表
	int               	nSupportFaceTypeNum;                                       	// 支持的人脸检测类型个数
	char              	szSupportFaceTypes[MAX_HUMANFACE_LIST_SIZE][MAX_NAME_LEN]; 	// 支持的人脸检测类型列表
	BOOL              	bTriggerPosition;                                        	// 是否支持触发报警位置
	BOOL			  	bTriggerTrack;												// 是否支持触发跟踪
	BOOL			  	bFaceDetection;												// 是否允许配置开启人脸属性识别
	int				  	nSupportFeactureNum;										// 支持的人脸属性类型个数
	EM_FACEFEATURE_TYPE	emFeatureList[MAX_FEATURE_LIST_SIZE];						// 支持的人脸属性类型列表
    int                 nMaxRules;                                                  // 支持规则的最大个数
	FACEBODY_DETECT_CAPS			stuFaceBodyDetectCaps;							// 人体检测能力(定制)
	FACEBODY_ANALYSE_CAPS			stuFaceBodyAnalyseCaps;							// 人体识别能力(定制)
    UINT			  	nFeatureSupport;											// 是否允许配置FeatureEnable,0-不支持(默认)1-支持(用于绊线检测事件和警戒区域检测事件)
    BOOL                bSupportMinRegion;                                          // 人员聚集检测是否支持"最小聚集区域"配置,默认TRUE
    int                              nSupportCloseUp;                               // 支持的联动特写情况。 0:表示没这个字段或者不支持,1表示支持
    int                              nSupportCloseUpTypeNum;                        // 特写模式个数
    EM_SUPPORT_CLOSE_UP_TYPE         emSupportCloseUpType[32];                      // 可选择特写模式
	EM_FEATURE_LIST_TYPE emFeature[32];												// 睿厨着装检特征列表
	int					 nDetectFeatureCount;										// 检测到的特征个数
	EM_SUPPORTED_COLOR_LIST_TYPE emSupportedColorList[8];							// 检测到的厨师服装颜色列表
	int					 nDetectSupportedColorCount;						        // 检测到的厨师服装颜色个数
    BOOL                 bSupportPolygon;                                           // 人群分布图是否支持多边形,TRUE:表示支持任意边形;FALSE:表示没有这个能力表示或者只支持4个点的平行四边形
	CFG_ACTIVITY_ANALYSE_CAPS	stuActivityAnalyseCaps;								// 活跃度统计规则
    int                          nLink;                                             // 联动业务个数
    CFG_LINK_CLASS_TYPE          stuLinkClassType[16];                              // 联动业务大类选项
}SCENE_SUPPORT_RULE;

// 标定区域能力信息
typedef struct tagCFG_CAP_CELIBRATE_AREA
{
	EM_CALIBRATEAREA_TYPE  emType;												 // 标定区域类型
	BYTE                   byMaxHorizontalStaffNum;                              // 支持的水平标尺最大个数
	BYTE                   byMinHorizontalStaffNum;                              // 支持的水平标尺最小个数
	BYTE                   byMaxVerticalStaffNum;                                // 支持的垂直标尺最大个数
	BYTE                   byMinVerticalStaffNum;                                // 支持的垂直标尺最小个数
}CFG_CAP_CELIBRATE_AREA;

// 车辆种类划分类型
typedef enum tagEM_VEHICLE_TYPE_SPLIT
{
    EM_VEHICLE_TYPE_SPLIT_UNKNOWN,              // 未知
    EM_VEHICLE_TYPE_SPLIT_FUNC,                 // 按功能划分
    EM_VEHICLE_TYPE_SPLIT_STANDARD,             // 按标准划分
} EM_VEHICLE_TYPE_SPLIT;

//隐私保护的物体类型
typedef enum tagEM_PRIVACY_MASK_TYPE
{
    EM_PRIVACY_MASK_UNKNOWN,		// 未知类型
    EM_PRIVACY_MASK_HUMAN_FACE,		// 人脸
    EM_PRIVACY_MASK_HUMAN,			// 人体
}EM_PRIVACY_MASK_TYPE;

// 人群分布图的标定线段相关能力 
typedef struct tagCROWD_CALIBRATION
{
    UINT    nHorizontalLines;       // 水平线段数量
    UINT    nVerticalLines;         // 垂直线段数量
}CROWD_CALIBRATION;

// 智能类型
typedef enum tagCFG_EM_FACEDETECT_TYPE
{
	CFG_EM_FACEDETECT_TYPE_UNKNOWN = 0,										// 未知
	CFG_EM_FACEDETECT_TYPE_VISUAL,											// 可见光
	CFG_EM_FACEDETECT_TYPE_THERMAL,											// 红外
	CFG_EM_FACEDETECT_TYPE_SWITCHBYTIME,									// 按时间段切换
}CFG_EM_FACEDETECT_TYPE;

// 人体测温的可见光的能力
typedef struct tagCFG_ANATOMYTEMP_VISUAL_CAPS
{
	BOOL							bSupportFaceRight;							// 是否支持人脸左右角度过滤
	BOOL							bSupportFaceUp;								// 是否支持人脸上下角度过滤
	BOOL							bSupportFaceRoll;							// 是否支持人脸左右歪头角度过滤
	BYTE							byReserved[64];								// 预留
}CFG_ANATOMYTEMP_VISUAL_CAPS;

// 人体测温检测场景能力
typedef struct tagCFG_ANATOMYTEMP_DETECT_SCENE_CAPS
{
	CFG_EM_FACEDETECT_TYPE	emFaceDetectTypes[32];								// 人体测温智能支持类型
	int					nFaceDetectTypesNum;									// 人体测温智能支持类型的个数
	CFG_ANATOMYTEMP_VISUAL_CAPS	stuVisual;										// 可见光的能力配置
	BYTE				byReserved[1024];										// 预留
}CFG_ANATOMYTEMP_DETECT_SCENE_CAPS;

// 立体行为场景能力特有字段
typedef struct tagCFG_STEREO_BEHAVIOR_SCENE_CAPS
{
	int					nEventListNum;											// 可查询事件的个数
	DWORD				dwOnlyFindLastEventList[32];							// 该大类下支持哪些事件可查询当前点的上一次事件内容,事件详见-智能分析事件类型
	BYTE				byReserved[892];										// 预留
}CFG_STEREO_BEHAVIOR_SCENE_CAPS;

// 场景能力
typedef struct tagCFG_CAP_SCENE
{
    char               szSceneName[MAX_PATH];                                   // 场景名称
    int                nSupportedObjectTypeNum;                                 // 当前规则类型支持的检测物体类型个数
    char               szObjectTypeName[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];	// 当前规则类型支持的检测物体类型列表
    int                nSupportRules;                                           // 支持的规则个数
    SCENE_SUPPORT_RULE stSpportRules[MAX_RULE_LIST_SIZE];                       // 支持的规则列表

    //支持的模块参数
    bool               bDisturbance;                                            // 是否支持扰动强度设置
    bool               bAntiDisturbance;                                        // 是否支持去扰动处理
    bool               bBacklight;                                              // 是否支持逆光处理
    bool               bShadow;                                                 // 是否支持阴影处理
    bool               bAccuracy;                                               // 是否支持检测精度
    bool               bMovingStep;                                             // 是否支持检测步长
    bool               bScalingFactor;                                          // 是否支持检测缩放
    bool               bThresholdY;                                             // 是否支持Y分量判定阈值
    bool               bThresholdUV;                                            // 是否支持UV分量判定阈值
    bool               bThresholdEdge;                                          // 是否支持边缘检测判定阈值
    bool               bDetectBalance;                                          // 是否支持检测平衡
    bool               bAlgorithmIndex;                                         // 是否支持算法序号
    bool               bHighlight;                                              // 是否支持高光处理,即Backgroud参数 
    bool               bSnapshot;                                               // 是否支持物体抓图
    bool               bDetectRegion;                                           // 是否支持检测区域配置
    bool               bExcludeRegion;                                          // 是否支持排除区域配置
    bool               bContourAssistantTrack;                                  // 是否支持轮廓辅助跟踪

    //支持的场景参数
    bool               bCameraAspect;                                            // 是否摄像头位置参数
    bool               bJitter;                                                  // 是否支持抖动参数
    bool               bDejitter;                                                // 是否支持去抖动处理参数

    // 支持的标定能力集
    int               nMaxCalibrateAreaNum;                                      // 最大标定区域个数
    int               nCalibrateAreaNum;                                         // 标定区域能力信息个数
    CFG_CAP_CELIBRATE_AREA stCalibrateAreaCap[MAX_CALIBRATEAREA_TYPE_NUM];       // 标定区域能力信息

    // 尺寸过滤器计量方式
    bool              bPixel;                                                    // 是否支持像素计量方式
    bool              bMetric;                                                   // 是否支持实际长度计量方式
    bool              bCalibratedPixel;                                          // 是否支持远端近端标定后的像素计量方式

    char              szSubType[MAX_SCENE_SUBTYPE_NUM][MAX_SCENE_SUBTYPE_LEN];  // 当前场景下支持的子场景类型
    int               nSubTypeNum;                                              // 子场景类型个数
    int               nMaxRules;                                                // 每个大类支持的最大规则条数
    BOOL              bSupportedSetModule;                                      // 是否支持重建背景,默认不支持(false)
    BOOL              bSupportFightCalibrate;                                   // 是否支持打架标定配置,默认FALSE
    UINT              nVehicleTypeSplitNum;                                     // 车辆种类划分类型个数
    EM_VEHICLE_TYPE_SPLIT emVehicleTypeSplit[16];                               // 车辆种类划分类型

    BOOL              bPrivacyMaskSupport;                                      // 是否支持隐私保护, false-不支持(默认);true-支持
    UINT              nPrivacyMaskCount;                                        // 隐私保护的物体类型的数量
    EM_PRIVACY_MASK_TYPE emPrivacyMaskTypes[32];                                // 隐私保护的物体类型 
	char				 szClassAlias[16];										// 大类业务方案别名
	CROWD_CALIBRATION stuCalibration;                                           // 人群分布图的标定线段相关能力  
	CFG_ANATOMYTEMP_DETECT_SCENE_CAPS	stuAnatomyTempDetect;					// 人体测温场景能力
	CFG_STEREO_BEHAVIOR_SCENE_CAPS	stuStereoBehaviorCaps;						// 立体行为分析场景能力
	BYTE              byReserved[1024];                                         // 保留字节
}CFG_CAP_SCENE;

// 场景列表
typedef struct tagCFG_VACAP_SUPPORTEDSCENES
{
    int									nScenes;                                                // 支持的场景个数
    CFG_CAP_SCENE						stScenes[MAX_SCENE_LIST_SIZE];                          // 支持的场景列表
	CFG_NUMBER_STAT_INFO				stuNumberStat;                                          // 人数统计大类场景
}CFG_VACAP_SUPPORTEDSCENES;

#define CFG_DEVICE_ANALYSE_INFO CFG_CAP_DEVICE_ANALYSE_INFO
//视频分析设备能力信息
typedef struct tagCFG_CAP_DEVICE_ANALYSE_INFO
{
	int                nMaxChannels;											 // 支持智能分析的最大通道数
}CFG_CAP_DEVICE_ANALYSE_INFO;

//设备类型
typedef enum tagNET_EM_DEVICE_TYPE
{
	NET_EM_DEVICE_UNKNOWN,						// 未知类型
	NET_EM_DEVICE_CAMERA,						// 模拟摄像机
	NET_EM_DEVICE_DOME,							// 模拟球机
	NET_EM_DEVICE_MATRIX,						// 模拟矩阵
	NET_EM_DEVICE_IPC,							// 网络摄像机
	NET_EM_DEVICE_NVS,							// 视频服务器
	NET_EM_DEVICE_SD,							// 网络球机
	NET_EM_DEVICE_ITSE,							// 智能存储盒
	NET_EM_DEVICE_ITC,							// 智能摄像机
	NET_EM_DEVICE_TPC,							// 热成像摄像机
	NET_EM_DEVICE_DVR,							// 数字硬盘录像机
	NET_EM_DEVICE_HDVR,							// 混合型数字硬盘录像机
	NET_EM_DEVICE_HCVR,							// 高清CVI接口录像机
	NET_EM_DEVICE_NVR,							// 网络录像机
	NET_EM_DEVICE_PCNVR,						// 工作在PC上的软件网络录像机
	NET_EM_DEVICE_NVD,							// 网络解码器
	NET_EM_DEVICE_SNVD,							// 软件网络解码器
	NET_EM_DEVICE_UDS,							// 万能解码器
	NET_EM_DEVICE_SVR,							// 存储服务器式录像机
	NET_EM_DEVICE_M,							// 视频综合平台
	NET_EM_DEVICE_IVS,							// IVS服务器
	NET_EM_DEVICE_VNCSERVER,					// 虚拟网络服务器
	NET_EM_DEVICE_VNCCLIENT,					// 虚拟网络客户端
	NET_EM_DEVICE_DSCON,						// 嵌入式多屏控制器
	NET_EM_DEVICE_PC,							// 通用个人计算机
	NET_EM_DEVICE_EVS,							// 网络视频存储服务器
	NET_EM_DEVICE_VCS,							// 视频转码服务器
	NET_EM_DEVICE_A,							// 报警主机, 15 年前
	NET_EM_DEVICE_ARC,							// 报警主机, 15年后
	NET_EM_DEVICE_SDHNI,						// 智能球机
	NET_EM_DEVICE_BSC,							// 门禁主机
	NET_EM_DEVICE_BSR,							// 门禁读卡器
	NET_EM_DEVICE_MGATEWAY,						// 媒体网关(接入安卓设备)
	NET_EM_DEVICE_VTO,							// 智网门口机设备
	NET_EM_DEVICE_VTH,							// 智网室内机设备
	NET_EM_DEVICE_VTT,							// 可视对讲终端
	NET_EM_DEVICE_VTS,							// 管理机
	NET_EM_DEVICE_VTNC,							// 控制器
	NET_EM_DEVICE_CE,							// 消费类卡片机产品
	NET_EM_DEVICE_MPT,							// 手持终端
	NET_EM_DEVICE_ATM,							// 金融ATM
	NET_EM_DEVICE_SHG,							// 智网家庭网关
	NET_EM_DEVICE_ARM,							// 防护舱控制器
	NET_EM_DEVICE_ASM,							// 无线中继设备
	NET_EM_DEVICE_VTA,							// 报警柱
	NET_EM_DEVICE_UAVGA,						// 机载云台
	NET_EM_DEVICE_UAVR,							// 一体化遥控器
	NET_EM_DEVICE_AIRCRAFT,						// 无人机
	NET_EM_DEVICE_UAVS,							// 地面站
	NET_EM_DEVICE_TPCSD,						// 热成像云台摄像机
	NET_EM_DEVICE_TPCBF,						// 热成像枪机
	NET_EM_DEVICE_RADAR,						// 雷达
	NET_EM_DEVICE_RADAR_PTZ,					// 雷达系统
	NET_EM_DEVICE_RADAR_CAM,					// 摄像雷达
    NET_EM_DEVICE_KVM_IN,                       // KVM输入节点
    NET_EM_DEVICE_KVM_OUT                       // KVM输出节点
} NET_EM_DEVICE_TYPE;

// 设备类型信息
typedef struct tagCFG_DEVICE_CLASS_INFO
{
	DWORD				dwSize;
	NET_EM_DEVICE_TYPE	emDeviceType;			// 设备类型
} CFG_DEVICE_CLASS_INFO;

// 某个规则支持的物体类型
typedef struct
{
	DWORD               dwRuleType;                                             // 当前规则类型
	int					nSupportedObjectTypeNum;								// 当前规则类型支持的检测物体类型个数
	char				szObjectTypeName[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];	// 当前规则类型支持的检测物体类型列表
}RULE_SUPPORTED_OBJECT_TYPE;

// 场景组合
typedef struct tagCFG_SUPPORTED_COMP
{
	int 	nSupportedData;													// 场景组合项下支持的场景个数
	char	szSupportedData[MAX_SUPPORTED_COMP_DATA][CFG_COMMON_STRING_16];	// 场景组合项下支持的场景列表
}CFG_SUPPORTED_COMP;

// 摄像头安装角度显示方式
typedef enum tagEM_DISPLAY_CAMERA_ANGLE_TYPE
{
	EM_DISPLAY_CAMERA_ANGLE_UNKNOWN,		// 未知的显示方式
	EM_DISPLAY_CAMERA_ANGLE_NUM,			// 按角度值配置(默认)
	EM_DISPLAY_CAMERA_ANGLE_MODE,			// 按模式配置,0~20展示为顶装,21~90展示为斜装,配置时按60下发
} EM_DISPLAY_CAMERA_ANGLE_TYPE;

// 支持的规则
typedef struct tagCFG_SUPPORTED_RULES_INFO
{
	CFG_NUMBERSTAT_RULE_INFO			stuNumberStat;		// 客流量统计规则
	CFG_QUEUEDETECTION_RULE_INFO		stuQueueDetection;	// 排队检测规则
	CFG_MANNUMDETECTION_RULE_INFO		stuManNumDetection;	// 区域内人数统计规则
}CFG_SUPPORTED_RULES_INFO;

// 客流量统计PD
typedef struct tagCFG_NUMBERSTART_MULT_INFO
{
	UINT							nMaxRules;			// 最大返回规则个数
	BOOL							bHiddenDetailEnable;// 隐藏部分参数配置使能 true-对于StereoNumber/NumberStat算法大类,隐藏StereoCalibrate标定配置和规则的MaxHeight/MinHeight
	UINT							nCameraType;		// 相机类型,0:表示老单目客流 1:表示新统一单目客流 2:表示新统一双目客流
	int								nMaxSupportedRulesNum;	// 支持的事件类型规则个数
	CFG_SUPPORTED_RULES_INFO		stuSupportedRules[MAX_RULE_LIST_SIZE]; // 支持的事件类型规则列表,事件类型,详见dhnetsdk.h中"智能分析事件类型"
}CFG_NUMBERSTAT_MULT_INFO;

// 视频分析能力集
typedef struct _tagVA_CAPS_INFO
{
	char				szSceneName[MAX_SCENE_LIST_SIZE][MAX_NAME_LEN];			// 支持的场景列表
	int					nSupportedSceneNum;										// 支持的场景个数
	BYTE				byReserved[4];											// 预留字段
}VA_CAPS_INFO;

// 动态能力集
typedef struct _tagVA_DYNAMIC_CAPS_INFO
{
    EM_SCENE_TYPE       emSceneType[32];    // 支持的场景类型    
    int					nSceneNum;			// 支持的场景个数
    BYTE				byReserved[252];	// 预留字段
}VA_DYNAMIC_CAPS_INFO;

// 视频分析能力集
typedef struct tagCFG_CAP_ANALYSE_INFO
{	
    int                 nSupportedSceneNum;                                     // 支持的场景个数
    char                szSceneName[MAX_SCENE_LIST_SIZE][MAX_NAME_LEN];         // 支持的场景列表
    int                 nMaxMoudles;                                            // 每通道支持最大分析模块数
    int                 nSupportedObjectTypeNum;                                // 支持的检测物体类型个数
    char                szObjectTypeName[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];   // 支持的检测物体类型列表
    int                 nMaxRules;                                              // 每通道支持最大规则条数
    int                 nSupportedRulesNum;                                     // 支持的事件类型规则个数
    DWORD               dwRulesType[MAX_RULE_LIST_SIZE];                        // 支持的事件类型规则列表,事件类型,详见dhnetsdk.h中"智能分析事件类型"
    int                 nMaxStaffs;                                             // 支持的最大标尺个数
    int                 nMaxPointOfLine;                                        // 折线最大顶点数
    int                 nMaxPointOfRegion;                                      // 区域最大顶点数
    int                 nMaxInternalOptions;                                    // 最大内部选项个数
    bool                bComplexSizeFilter;                                     // 是否支持复杂尺寸过滤器	复杂尺寸过滤器使用独立的面积过滤和宽高比过滤参数。      
    bool                bSpecifiedObjectFilter;                                 // 是否支持特定的物体过滤器
    int                 nMaxExcludeRegionNum;                                   // 支持模块中的最大排除区域个数
    int                 nMaxCalibrateBoxNum;                                    // 支持的模块中的最大校准框个数
    int                 nMinCalibrateBoxNum;                                    // 模块中至少需要设置的校准框个数
    int                 nMaxSepcialDetectRegions;                               // 模块中支持的最大特殊区域检测个数
    int                 nSupportedTimeSectionNum;                               // 支持的每天的时间段个数 
    int                 nSpecialDetectPropertyNum;                              // 支持的特殊检测区属性个数
    int                 nSupportedSpecialDetectPropertys[EM_SEPCIALREGION_PROPERTY_TYPE_NUM]; // 支持的特殊检测区属性
    DWORD               nSupportedVideoChannelType;                             // 支持的视频通道类型选择   第0位为1表示支持数字类型,第1位为1表示支持模拟类型,第2为1表示支持混合(数字和模拟)				
    bool                bSupportMultiSceneSwitch;                               // 是否支持多场景切换
    CFG_VACAP_SUPPORTEDSCENES  stSupportScenes;                                 // 支持的场景能力集
    int                 nSupportedComp;                                         // 支持的场景组合项个数
    CFG_SUPPORTED_COMP  stuSupportedComp[MAX_SUPPORTED_COMP_SIZE];              // 支持的场景组合项列表
    BYTE                byFilterMask;                                           // 0 Module/Rule配置均要设置(默认,智能服务器), 1 仅Rule配置要设置(IPC/xVR)
    EM_DISPLAY_CAMERA_ANGLE_TYPE emDisCameraAngleType;                          // 摄像头安装角度显示方式
    int                          nMaxNumberStatMultNum;                         // 实际返回客流量统计场景PD个数
    CFG_NUMBERSTAT_MULT_INFO     stuNumberStatMult[MAX_NUMBER_STAT_MAULT_NUM];  // 客流量统计场景PD

    VA_CAPS_INFO         stuFullCaps;                                           // 全能力集,表示视频通道能力 full可以认为是不变的
    VA_DYNAMIC_CAPS_INFO stuDynamicCaps;                                        // 动态能力集,表示当前视频通道能力
} CFG_CAP_ANALYSE_INFO;

// 智能分析实例类型
typedef enum tagCFG_EM_INSTANCE_SUBCLASS_TYPE
{
	CFG_EM_INSTANCE_SUBCLASS_TYPE_LOCAL = 0,		// 本地实例
	CFG_EM_INSTANCE_SUBCLASS_TYPE_REMOTE,			// 远程实例
}CFG_EM_INSTANCE_SUBCLASS_TYPE;

// 获取能力的请求数据扩展
typedef struct tagCFG_CAP_ANALYSE_REQ_EXTEND_INFO
{
	DWORD							dwSize;			// 结构体大小
	CFG_EM_INSTANCE_SUBCLASS_TYPE	emSubClassID;	// 智能分析实例类型
}CFG_CAP_ANALYSE_REQ_EXTEND_INFO;

// 视频分析支持的对象类型
typedef enum tagEM_VIDEO_ANALYSE_OBJECT_TYPE
{
    EM_VIDEO_ANALYSE_OBJECT_TYPE_UNKNOWN,           // 未知的
    EM_VIDEO_ANALYSE_OBJECT_TYPE_ALL_OBJECT,        // 所有物体
    EM_VIDEO_ANALYSE_OBJECT_TYPE_HUMAN,             // 人       
    EM_VIDEO_ANALYSE_OBJECT_TYPE_VEHICLE,           // 车辆
    EM_VIDEO_ANALYSE_OBJECT_TYPE_FIRE,              // 火
    EM_VIDEO_ANALYSE_OBJECT_TYPE_SMOKE,             // 烟雾
    EM_VIDEO_ANALYSE_OBJECT_TYPE_PLATE,             // 片状物体             
    EM_VIDEO_ANALYSE_OBJECT_TYPE_HUMANFACE,         // 人脸
    EM_VIDEO_ANALYSE_OBJECT_TYPE_CONTAINER,         // 货柜
    EM_VIDEO_ANALYSE_OBJECT_TYPE_ANIMAL,            // 动物
    EM_VIDEO_ANALYSE_OBJECT_TYPE_TRAFFICLIGHT,      // 红绿灯
    EM_VIDEO_ANALYSE_OBJECT_TYPE_PASTEPAPER,        // 贴纸 贴片
    EM_VIDEO_ANALYSE_OBJECT_TYPE_HUMANHEAD,         // 人的头部
    EM_VIDEO_ANALYSE_OBJECT_TYPE_ENTITY,            // 普通物体
}EM_VIDEO_ANALYSE_OBJECT_TYPE;

// 视频分析支持的动作类型
typedef enum tagEM_VIDEO_ANALYSE_ACTION_TYPE
{                                                   
    EM_VIDEO_ANALYSE_ACTION_TYPE_UNKNOWN,           // 未知行为        
    EM_VIDEO_ANALYSE_ACTION_TYPE_APPEAR,            // 出现,针对的是目标,出现就报警
    EM_VIDEO_ANALYSE_ACTION_TYPE_DISAPPEAR,         // 消失
    EM_VIDEO_ANALYSE_ACTION_TYPE_INSIDE,            // 在区域内,需要区域内目标个数达到指定数量和指定时间才报警
    EM_VIDEO_ANALYSE_ACTION_TYPE_CROSS,             // 穿越区域
}EM_VIDEO_ANALYSE_ACTION_TYPE;

// 视频分析支持的检测类型
typedef enum tagEM_VIDEO_ANALYSE_DETECT_TYPE
{
    EM_VIDEO_ANALYSE_DETECT_TYPE_UNKNOWN,           // 未知类型
    EM_VIDEO_ANALYSE_DETECT_TYPE_LOSS,              // 视频丢失
    EM_VIDEO_ANALYSE_DETECT_TYPE_COVER,             // 视频遮挡
    EM_VIDEO_ANALYSE_DETECT_TYPE_FROZEN,            // 画面冻结
    EM_VIDEO_ANALYSE_DETECT_TYPE_LIGHT,             // 过亮
    EM_VIDEO_ANALYSE_DETECT_TYPE_DARK,              // 过暗
    EM_VIDEO_ANALYSE_DETECT_TYPE_SCENECHANGE,       // 场景变化
    EM_VIDEO_ANALYSE_DETECT_TYPE_STRIATION,         // 条纹检测
    EM_VIDEO_ANALYSE_DETECT_TYPE_NOISE,             // 噪声检测
    EM_VIDEO_ANALYSE_DETECT_TYPE_UNBALANCE,         // 偏色检测
    EM_VIDEO_ANALYSE_DETECT_TYPE_BLUR,              // 视频模糊检测
    EM_VIDEO_ANALYSE_DETECT_TYPE_CONTRAST,          // 对比度异常检测
    EM_VIDEO_ANALYSE_DETECT_TYPE_MOTION,            // 视频运动
    EM_VIDEO_ANALYSE_DETECT_TYPE_FILCKERING,        // 视频闪烁
    EM_VIDEO_ANALYSE_DETECT_TYPE_COLOR,             // 视频颜色变化
    EM_VIDEO_ANALYSE_DETECT_TYPE_UNFOCUS,           // 虚焦检测
    EM_VIDEO_ANALYSE_DETECT_TYPE_OVEREXPOSURE,      // 过曝检测 
}EM_VIDEO_ANALYSE_DETECT_TYPE;

// 视频支持的人脸类型
typedef enum tagEM_VIDEO_ANALYSE_HUMANFACE_TYPE
{
    EM_VIDEO_ANALYSE_HUMANFACE_TYPE_UNKNOWN,        // 未知类型
    EM_VIDEO_ANALYSE_HUMANFACE_TYPE_NORMAL,         // 普通人脸
    EM_VIDEO_ANALYSE_HUMANFACE_TYPE_HIDEEYE,        // 眼部遮挡
    EM_VIDEO_ANALYSE_HUMANFACE_TYPE_HIDENOSE,       // 鼻子遮挡
    EM_VIDEO_ANALYSE_HUMANFACE_TYPE_HIDEMOUTH,      // 嘴部遮挡
    EM_VIDEO_ANALYSE_HUMANFACE_TYPE_ADJACENTFACE,   // 相邻人脸 (注,ATM,尾随)
    EM_VIDEO_ANALYSE_HUMANFACE_TYPE_ABNORMALFACE,   // 异常人脸
    EM_VIDEO_ANALYSE_HUMANFACE_TYPE_HELMETFACE,     // 头盔人脸(如摩托车盔)
}EM_VIDEO_ANALYSE_HUMANFACE_TYPE;

// 场景支持的规则
typedef struct
{
    DWORD                                       dwSupportedRule;                                         // 规则类型
    int                                         nSupportedObjectTypeNum;                                 // 支持的检测物体类型个数
    EM_VIDEO_ANALYSE_OBJECT_TYPE                emObjectType[MAX_OBJECT_LIST_SIZE];	                     // 支持的检测物体类型列表
    int                                         nSupportedActionsNum;                                    // 支持的检测物体动作个数
    EM_VIDEO_ANALYSE_ACTION_TYPE                emSupportedAction[MAX_ACTION_LIST_SIZE];                 // 支持的检测物体动作列表
    int                                         nSupportedDetectTypeNum;                                 // 支持的检测类型个数
    EM_VIDEO_ANALYSE_DETECT_TYPE                emSupportedDetectType[MAX_ACTION_LIST_SIZE];             // 支持的检测类型列表
    int                                         nSupportFaceTypeNum;                                     // 支持的人脸检测类型个数
    EM_VIDEO_ANALYSE_HUMANFACE_TYPE             emSupportFaceType[MAX_HUMANFACE_LIST_SIZE];              // 支持的人脸检测类型列表
    BOOL                                        bTriggerPosition;                                        // 是否支持触发报警位置
    BOOL			                            bTriggerTrack;											 // 是否支持触发跟踪
	FACEBODY_DETECT_CAPS						stuFaceBodyDetectCaps;									 // 人体检测能力(定制)
	FACEBODY_ANALYSE_CAPS						stuFaceBodyAnalyseCaps;							         // 人体识别能力(定制)
	EM_FEATURE_LIST_TYPE						emFeature[32];											 // 睿厨着装检特征列表
	int											nDetectFeatureCount;									 // 检测到的特征个数
	EM_SUPPORTED_COLOR_LIST_TYPE				emSupportedColorList[8];								 // 检测到的厨师服装颜色列表
	int											nDetectSupportedColorCount;								 // 检测到的厨师服装颜色个数
    int                                         nLink;                                                   // 联动业务个数
    CFG_LINK_CLASS_TYPE                         stuLinkClassType[16];                                    // 联动业务大类选项
    BOOL                                        bSupportPolygon;                                         // 人群分布图是否支持多边形,TRUE:表示支持任意边形;FALSE:表示没有这个能力表示或者只支持4个点的平行四边形
}SCENE_SUPPORT_RULE_EX;

// 场景能力
typedef struct tagCFG_CAP_SCENE_EX
{
    char               szSceneName[MAX_PATH];                                   // 场景名称
    int                nSupportedObjectTypeNum;                                 // 当前规则类型支持的检测物体类型个数
    char               szObjectTypeName[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];	// 当前规则类型支持的检测物体类型列表
    int                nSupportRules;                                           // 支持的规则个数
    SCENE_SUPPORT_RULE_EX stSpportRules[MAX_RULE_LIST_SIZE];                    // 支持的规则列表

    //支持的模块参数
    bool               bDisturbance;                                            // 是否支持扰动强度设置
    bool               bAntiDisturbance;                                        // 是否支持去扰动处理
    bool               bBacklight;                                              // 是否支持逆光处理
    bool               bShadow;                                                 // 是否支持阴影处理
    bool               bAccuracy;                                               // 是否支持检测精度
    bool               bMovingStep;												// 是否支持检测步长
    bool               bScalingFactor;                                          // 是否支持检测缩放
    bool               bThresholdY;                                             // 是否支持Y分量判定阈值
    bool               bThresholdUV;                                            // 是否支持UV分量判定阈值
    bool               bThresholdEdge;                                          // 是否支持边缘检测判定阈值
    bool               bDetectBalance;                                          // 是否支持检测平衡
    bool               bAlgorithmIndex;                                         // 是否支持算法序号
    bool               bHighlight;                                              // 是否支持高光处理,即Backgroud参数 
    bool               bSnapshot;                                               // 是否支持物体抓图
    bool               bDetectRegion;                                           // 是否支持检测区域配置
    bool               bExcludeRegion;                                          // 是否支持排除区域配置
    bool               bContourAssistantTrack;                                  // 是否支持轮廓辅助跟踪

    //支持的场景参数
    bool               bCameraAspect;                                            // 是否摄像头位置参数
    bool               bJitter;                                                  // 是否支持抖动参数
    bool               bDejitter;                                                // 是否支持去抖动处理参数

    // 支持的标定能力集
    int               nMaxCalibrateAreaNum;                                      // 最大标定区域个数
    int               nCalibrateAreaNum;                                         // 标定区域能力信息个数
    CFG_CAP_CELIBRATE_AREA stCalibrateAreaCap[MAX_CALIBRATEAREA_TYPE_NUM];       // 标定区域能力信息

    // 尺寸过滤器计量方式
    bool              bPixel;                                                    // 是否支持像素计量方式
    bool              bMetric;                                                   // 是否支持实际长度计量方式
    bool              bCalibratedPixel;                                          // 是否支持远端近端标定后的像素计量方式

    char              szSubType[MAX_SCENE_SUBTYPE_NUM][MAX_SCENE_SUBTYPE_LEN];  // 当前场景下支持的子场景类型
    int               nSubTypeNum;                                              // 子场景类型个数
    int				  nMaxRules;												// 每个大类支持的最大规则条数
	BOOL			  bSupportedSetModule;										// 是否支持重建背景,默认不支持(false)	
    BOOL              bSupportFightCalibrate;                                   // 是否支持打架标定配置,默认FALSE
	char			  szClassAlias[16];											// 大类业务方案别名  
	CROWD_CALIBRATION stuCalibration;                                           // 人群分布图的标定线段相关能力
	CFG_ANATOMYTEMP_DETECT_SCENE_CAPS	stuAnatomyTempDetect;					// 人体测温场景能力
	CFG_STEREO_BEHAVIOR_SCENE_CAPS	stuStereoBehaviorCaps;						// 立体行为分析场景能力
	BYTE              byReserved[1024];                                         // 保留字节
}CFG_CAP_SCENE_EX;

// 场景列表
typedef struct tagCFG_VACAP_SUPPORTEDSCENES_EX
{
    int                nScenes;													   // 支持的场景个数
    CFG_CAP_SCENE_EX   stScenes[MAX_SCENE_LIST_SIZE];                              // 支持的场景列表
}CFG_VACAP_SUPPORTEDSCENES_EX;

// 视频分析能力集(除了字段stSupportScenes外,其他字段和CFG_CAP_ANALYSE_INFO一样)
typedef struct tagCFG_CAP_ANALYSE_INFO_EX
{
    int					nSupportedSceneNum;										// 支持的场景个数
    char				szSceneName[MAX_SCENE_LIST_SIZE][MAX_NAME_LEN];			// 支持的场景列表
    int					nMaxMoudles;											// 每通道支持最大分析模块数
    int					nSupportedObjectTypeNum;								// 支持的检测物体类型个数
    char				szObjectTypeName[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];	// 支持的检测物体类型列表
    int					nMaxRules;												// 每通道支持最大规则条数
    int					nSupportedRulesNum;										// 支持的事件类型规则个数
    DWORD				dwRulesType[MAX_RULE_LIST_SIZE];	             		// 支持的事件类型规则列表,事件类型,详见dhnetsdk.h中"智能分析事件类型"
    int					nMaxStaffs;												// 支持的最大标尺个数
    int					nMaxPointOfLine;										// 折线最大顶点数
    int					nMaxPointOfRegion;										// 区域最大顶点数
    int                 nMaxInternalOptions;                                    // 最大内部选项个数
    bool                bComplexSizeFilter;                                     // 是否支持复杂尺寸过滤器	复杂尺寸过滤器使用独立的面积过滤和宽高比过滤参数。      
    bool                bSpecifiedObjectFilter;                                 // 是否支持特定的物体过滤器
    int                 nMaxExcludeRegionNum;                                   // 支持模块中的最大排除区域个数
    int                 nMaxCalibrateBoxNum;                                    // 支持的模块中的最大校准框个数
    int                 nMinCalibrateBoxNum;                                    // 模块中至少需要设置的校准框个数
    int                 nMaxSepcialDetectRegions;                               // 模块中支持的最大特殊区域检测个数
    int                 nSupportedTimeSectionNum;                               // 支持的每天的时间段个数 
    int                 nSpecialDetectPropertyNum;                              // 支持的特殊检测区属性个数
    int			        nSupportedSpecialDetectPropertys[EM_SEPCIALREGION_PROPERTY_TYPE_NUM]; // 支持的特殊检测区属性
    DWORD				nSupportedVideoChannelType;								// 支持的视频通道类型选择   第0位为1表示支持数字类型,第1位为1表示支持模拟类型,第2为1表示支持混合(数字和模拟)				
    bool				bSupportMultiSceneSwitch;								// 是否支持多场景切换
    CFG_VACAP_SUPPORTEDSCENES_EX  stSupportScenes;                                 // 支持的场景能力集
    int 				nSupportedComp; 										// 支持的场景组合项个数
    CFG_SUPPORTED_COMP	stuSupportedComp[MAX_SUPPORTED_COMP_SIZE];				// 支持的场景组合项列表
    BYTE				byFilterMask;											// 0 Module/Rule配置均要设置(默认,智能服务器), 1 仅Rule配置要设置(IPC/xVR)
    EM_DISPLAY_CAMERA_ANGLE_TYPE emDisCameraAngleType;							// 摄像头安装角度显示方式
    VA_DYNAMIC_CAPS_INFO stuDynamicCaps;                                        // 动态能力集,表示当前视频通道当前能力
}CFG_CAP_ANALYSE_INFO_EX;

// 校准框信息
typedef struct tagCFG_CALIBRATEBOX_INFO
{
	CFG_POLYGON         stuCenterPoint;                       // 校准框中心点坐标(点的坐标归一化到[0,8191]区间)
	float               fRatio;                               // 相对基准校准框的比率(比如1表示基准框大小,0.5表示基准框大小的一半)
}CFG_CALIBRATEBOX_INFO;

// 标定方式
typedef enum tagEM_METHOD_TYPE
{
	EM_METHOD_UNKNOWN,		// 未知方式
	EM_METHOD_SCENE,		// 景深标定
	EM_METHOD_LANE,			// 车道标定
	EM_METHOD_PLATE,		// 车牌标定
	EM_METHOD_STEREO,		// 双目标定
} EM_METHOD_TYPE;

// 标定区域,普通场景使用
typedef struct tagCFG_CALIBRATEAREA_INFO
{
	int						nLinePoint;						// 水平方向标尺线顶点数
	CFG_POLYGON				stuLine[MAX_POLYLINE_NUM];		// 水平方向标尺线
	float					fLenth;                 		// 实际长度
	CFG_REGION				stuArea;                  		// 区域
	int                 	nStaffNum;                 		// 垂直标尺数
	CFG_STAFF           	stuStaffs[MAX_STAFF_NUM];		// 垂直标尺         
	EM_CALIBRATEAREA_TYPE 	emType;							// 区域类型
	EM_METHOD_TYPE			emMethodType;					// 标定方式
}CFG_CALIBRATEAREA_INFO;

// 人脸识别场景
typedef struct tagCFG_FACERECOGNITION_SCENCE_INFO
{
	double				dbCameraHeight;							// 摄像头离地高度 单位:米
	double				dbCameraDistance;						// 摄像头离地面检测区域中心的水平距离 单位:米
	int                 nMainDirection;                         // 人流主要方向顶点数
	CFG_POLYGON         stuMainDirection[MAX_POLYLINE_NUM];     // 人流主要方向,第一个点是起始点,第二个点是终止点
	char                byFaceAngleDown;                        // 需要检测的人脸向下最大偏角, 单位度,-45~45,负数表示人脸向画面上边,正数表示人脸向画面下边,0表示人脸垂直方向上正对着摄像头。
	char                byFaceAngleUp;                          // 需要检测的人脸向上最大偏角,单位度,-45~45,负数表示人脸向画面上边,正数表示人脸向画面下边,0表示人脸垂直方向上正对着摄像头。
 	char                byFaceAngleLeft;                        // 需要检测的人脸向左最大偏角,单位度,-45~45,负数表示人脸向画面左边,正数表示人脸向画面右边,0表示人脸水平方向上正对着摄像头
	char                byFaceAngleRight;                       // 需要检测的人脸向右最大偏角,单位度,-45~45,负数表示人脸向画面左边,正数表示人脸向画面右边,0表示人脸水平方向上正对着摄像头
	EM_FACEDETECTION_TYPE	emDetectType;						// 人脸检测类型
}CFG_FACERECOGNITION_SCENCE_INFO;

// 人脸检测场景
typedef struct tagCFG_FACEDETECTION_SCENCE_INFO
{
	double				dbCameraHeight;							// 摄像头离地高度 单位:米
	double				dbCameraDistance;						// 摄像头离地面检测区域中心的水平距离 单位:米
	int                 nMainDirection;                         // 人流主要方向顶点数
	CFG_POLYGON         stuMainDirection[MAX_POLYLINE_NUM];     // 人流主要方向,第一个点是起始点,第二个点是终止点
	char                byFaceAngleDown;                        // 需要检测的人脸向下最大偏角, 单位度,-45~45,负数表示人脸向画面上边,正数表示人脸向画面下边,0表示人脸垂直方向上正对着摄像头。
	char                byFaceAngleUp;                          // 需要检测的人脸向上最大偏角,单位度,-45~45,负数表示人脸向画面上边,正数表示人脸向画面下边,0表示人脸垂直方向上正对着摄像头。
	char                byFaceAngleLeft;                        // 需要检测的人脸向左最大偏角,单位度,-45~45,负数表示人脸向画面左边,正数表示人脸向画面右边,0表示人脸水平方向上正对着摄像头
	char                byFaceAngleRight;                       // 需要检测的人脸向右最大偏角,单位度,-45~45,负数表示人脸向画面左边,正数表示人脸向画面右边,0表示人脸水平方向上正对着摄像头
	EM_FACEDETECTION_TYPE	emDetectType;						// 人脸检测类型
}CFG_FACEDETECTION_SCENCE_INFO;


// 交通灯颜色校正配置,分立项
typedef struct tagADJUST_LEVEL_SEP
{
    int                 nType;                                  // 0:未定义,1:视频,2:图片
    int                 nTime;                                  // 0:未定义,1:白天,2:夜晚
    int                 nLevel;                                 // 范围0~100,数值越大矫正越明显
} ADJUST_LEVEL_SEP;

// 交通灯颜色校正配置
typedef struct tagCFG_ADJUST_LIGHT_COLOR
{
    int                 nMode;                                  // 红灯颜色校正模式 0:未定义 1:红绿灯才校正 2:一直校正
    BOOL                bEnable;                                // 是否允许图片红绿灯颜色校正
    int                 nLevel;                                 // 校正等级 范围0~100,数值越大矫正越明显
    BOOL                bVideoEnable;                           // 是否启用视频涂红功能,存在此项时,Level值使用LevelSeparate下的Level值                                
    ADJUST_LEVEL_SEP    stLevelSep[4];                          // 分立等级,目前为4个
} CFG_ADJUST_LIGHT_COLOR;

#define  MAX_PARKING_SPACE_NUM          6       //最多配置6个车位信息
#define  MAX_SHIELD_AREA_NUM            16      //1个车位最多对应16个屏蔽区域
typedef struct tagCFG_PARKING_SPACE
{
    int             nNumber;                // 车位编号
    CFG_REGION      stArea;                 // 检测区域
    int             nShieldAreaNum;                              // 有效屏蔽区个数
    CFG_REGION      stShieldArea[MAX_SHIELD_AREA_NUM];           // 屏蔽区域
    char            szCustomParkNo[CFG_COMMON_STRING_32];        // 自定义车位名称
}CFG_PARKING_SPACE;

// 交通场景
typedef struct tagCFG_TRAFFIC_SCENE_INFO 
{
	BOOL                abCompatibleMode;	
	int                 nCompatibleMode;                        // 0:"OldTrafficRule" : 交通老规则兼容模式;1:"NewTrafficRule" :  交通新规则兼容模式;-1:字符串错误
	float				fCameraHeight;							// 摄像头离地高度	单位:米
	float				fCameraDistance;						// 摄像头离地面检测区域中心的水平距离	单位:米
	char                szSubType[MAX_NAME_LEN];                // 交通场景的子类型,"Gate" 卡口类型,"Junction" 路口类型 
																// "Tunnel"隧道类型 , "ParkingSpace"车位检测类型
																// "Bridge"桥梁类型
																// "Freeway"高速公路类型                 
	CFG_POLYGON         stuNearDetectPoint;                     // 近景检测点
	CFG_POLYGON         stuFarDectectPoint;                     // 远景检测点
	int                 nNearDistance;                          // NearDetectPoint,转换到实际场景中时,离摄像头垂直线的水平距离
	int                 nFarDistance;                           // FarDectectPoint,转换到实际场景中时,离摄像头垂直线的水平距离
	int                 nPlateHintNum;                          // 车牌字符暗示个数
	char                szPlateHints[MAX_PLATEHINT_NUM][MAX_NAME_LEN]; // 车牌字符暗示数组,在拍摄图片质量较差车牌识别不确定时,根据此数组中的字符进行匹配,数组下标越小,匹配优先级越高
	int                 nLaneNum;                               // 车道数
	CFG_LANE            stuLanes[MAX_LANE_NUM];                 // 车道信息
    int                 nLightGroupNum;                         // 灯组数
	CFG_LIGHTGROUPS     stLightGroups[MAX_LIGHTGROUP_NUM];      // 灯组配置信息
    BOOL                bHangingWordPlate;                      // 是否识别挂字车牌
    BOOL                bNonStdPolicePlate;                     // 是否识别非标准警牌
    BOOL                bYellowPlateLetter;                     // 是否识别黄牌字母
    int                 nReportMode;                            // 上报模式,0:未定义,1:上报所有违章车辆,2:上报车牌识别成功的违章车辆
    int                 nPlateMatch;                            // 车牌匹配率,0~100,多次识别车牌使用,表示重复识别车牌和前一次识别车牌的一致性要求
    int                 nJudgment;                              // 违章判定依据,0:未定义,1:按车道,2:按行驶方向,3:按车道和行驶方向
    int                 nLeftDivisionPtCount;                   // 左转弯分界线点数
    CFG_POLYLINE        stLeftDivisionLine[MAX_POLYLINE_NUM];   // 左转弯分界线
    int                 nRightDivisionPtCount;                  // 右转弯分界线点数
    CFG_POLYLINE        stRightDivisionLine[MAX_POLYLINE_NUM];  // 右转弯分界线
    CFG_ADJUST_LIGHT_COLOR  stAdjustLightColor;                 // 交通灯颜色校正配置
    int                  nParkingSpaceNum;                      // 车位数                             
    CFG_PARKING_SPACE    stParkingSpaces[MAX_PARKING_SPACE_NUM];// 车位配置信息,每个元素代表一个车位

} CFG_TRAFFIC_SCENE_INFO;

// 普遍场景
typedef struct tagCFG_NORMAL_SCENE_INFO
{
	float				fCameraHeight;							// 摄像头离地高度	单位:米
	float				fCameraAngle;							// 摄像头与垂方向的夹角	单位度,0~90,
	float				fCameraDistance;						// 摄像头离地面检测区域中心的水平距离	单位:米
	CFG_POLYGON			stuLandLineStart;						// 地平线线段起始点(点的坐标坐标归一化到[0,8192)区间。)
	CFG_POLYGON			stuLandLineEnd;							// 地平线线段终止点(点的坐标坐标归一化到[0,8192)区间。)
} CFG_NORMAL_SCENE_INFO;

// 交通巡视场景
typedef struct tagCFG_TRAFFIC_TOUR_SCENE_INFO 
{
	int                 nPlateHintNum;                          // 车牌字符暗示个数
	char                szPlateHints[MAX_PLATEHINT_NUM][MAX_NAME_LEN]; // 车牌字符暗示数组,在拍摄图片质量较差车牌识别不确定时,根据此数组中的字符进行匹配,数组下标越小,匹配优先级越高
} CFG_TRAFFIC_TOUR_SCENE_INFO;

// 人群态势和人群密度场景
typedef struct tagCFG_CROWD_SCENE_INFO 
{
	float				fCameraHeight;							// 摄像头离地高度	单位:米
} CFG_CROWD_SCENE_INFO;

// 画面景深类型
typedef enum tagEM_DEPTH_TYPE
{
	EM_DEPTH_UNKNOWN,		//unknown
	EM_DEPTH_NORMAL,		// "Normal" 未知
	EM_DEPTH_FAR,			// "Far" 远景
	EM_DEPTH_MIDDLE,		// "Middle" 中景
	EM_DEPTH_NEAR			// "Near" 近景
}EM_DEPTH_TYPE;


// 统一场景配置,TypeList存在时配置此场景
typedef struct tagCFG_INTELLI_UNIFORM_SCENE{
	char                szSubType[MAX_NAME_LEN];                // 交通场景的子类型,"Gate" 卡口类型,"Junction" 路口类型 
																// "Tunnel"隧道类型 , "ParkingSpace"车位检测类型
																// "Bridge"桥梁类型
																// "Freeway"高速公路类型                 
	int                 nPlateHintNum;                          // 车牌字符暗示个数
	char                szPlateHints[MAX_PLATEHINT_NUM][MAX_NAME_LEN]; // 车牌字符暗示数组,在拍摄图片质量较差车牌识别不确定时,根据此数组中的字符进行匹配,数组下标越小,匹配优先级越高
	int                 nLaneNum;                               // 车道数
	CFG_LANE            stuLanes[MAX_LANE_NUM];                 // 车道信息
}CFG_INTELLI_UNIFORM_SCENE;

// 可见光配置
typedef struct tagCFG_FACEDETECT_VISUAL_INFO
{
	UINT						nFaceAngleUp;								// 需要检测的人脸向上(向下)最大偏角,超过此角度不上报,单位度,0-90。
	UINT						nFaceAngleRight;							// 需要检测的人脸向右(向左)最大偏角,超过此角度不上报,单位度,0-90。
	UINT						nFaceRollRight;								// 需要检测的人脸向右(向左)歪头最大偏角,超过此角度不上报,单位度,0-90。
	BYTE						byReserved[1024];							// 预留字段
}CFG_FACEDETECT_VISUAL_INFO;

// 人体测温场景配置
typedef struct tagCFG_ANATOMYTEMP_SCENCE_INFO
{
	CFG_EM_FACEDETECT_TYPE			emFaceDetectType;								// 人脸检测智能类型
	CFG_FACEDETECT_VISUAL_INFO		stuVisual;										// 可见光配置,emFaceDetectType为CFG_EM_FACEDETECT_TYPE_VISUAL或CFG_EM_FACEDETECT_TYPE_TIMESECTION时有效
	CFG_TIME_SECTION				stuTimeSection;									// 可见光时间段,emFaceDetectType为CFG_EM_FACEDETECT_TYPE_TIMESECTION时有效
	BYTE							byReserved[1024];								// 预留字段
}CFG_ANATOMYTEMP_SCENCE_INFO;

// 视频分析全局配置场景
typedef struct tagCFG_ANALYSEGLOBAL_SCENE
{
	char				szSceneType[MAX_NAME_LEN];				// 应用场景,详见"支持的场景列表"

	// 以下为场景具体信息, 根据szSceneType决定哪个场景有效
	union
	{
		CFG_FACEDETECTION_SCENCE_INFO	stuFaceDetectionScene;	// 人脸检测场景/人脸识别检查
		CFG_TRAFFIC_SCENE_INFO			stuTrafficScene;		// 交通场景
		CFG_NORMAL_SCENE_INFO			stuNormalScene;			// 普通场景/远景场景/中景场景/近景场景/室内场景/人数统计场景
		CFG_TRAFFIC_TOUR_SCENE_INFO		stuTrafficTourScene;	// 交通巡视场景
		CFG_CROWD_SCENE_INFO			stuCrowdScene;			// 人群态势和人群密度场景
		CFG_ANATOMYTEMP_SCENCE_INFO		stuAnatomyTempScene;	// 人体测温场景
	};

	EM_DEPTH_TYPE		emDepthType;							// 画面景深
	int					nPtzPresetId;							// 云台预置点编号,0~255
	// 以下是有多个大类业务的情况
	int					nSceneListCount;						// 实际场景个数
	char				szSceneTypeList[MAX_SCENE_TYPE_LIST_SIZE][CFG_COMMON_STRING_16];// 场景列表,同一视频通道下启用多个场景时,表示第2个之后的方案
																						// 多个大类业务时有效
	CFG_INTELLI_UNIFORM_SCENE 	stuUniformScene; 						// 统一场景配置
	BOOL						bSceneTypeListEx;						// szSceneTypeListEx 是否有效,当为TRUE时,使用szSceneTypeListEx
	int							nSceneListCountEx;						// 实际场景个数扩展,szSceneTypeListEx 的有效个数
	char						szSceneTypeListEx[32][128];				// 场景列表扩展,szSceneTypeList 的扩展字段
} CFG_ANALYSEGLOBAL_SCENE;

typedef struct tagCFG_TIME
{
	DWORD				dwHour;					// 时
	DWORD				dwMinute;				// 分
	DWORD				dwSecond;				// 秒
}CFG_TIME;

typedef struct tagCFG_TIME_PERIOD
{
	CFG_TIME	stuStartTime;				
	CFG_TIME	stuEndTime;			
}CFG_TIME_PERIOD;

// 多场景标定区域配置基本单元
typedef struct tagCFG_CALIBRATEAREA_SCENE_UNIT
{
	unsigned int           nCalibrateAreaNum;                                // 此场景内标定区域数
	CFG_CALIBRATEAREA_INFO stuCalibrateArea[MAX_CALIBRATEBOX_NUM];           // 标定区域(若该字段不存在,则以整幅场景为标定区域)
}
CFG_CALIBRATEAREA_SCENE_UNIT;

// 多场景标定区域配置
typedef struct tagCFG_CALIBRATEAREA_SCENE_INFO
{
	DWORD                        dwMaxSceneCalibrateAreaNum;                 // 多场景标定区域最大个数(需要申请此大小内存)
	DWORD                        dwRetSceneCalibrateAreaNum;                 // 实际包含多场景标定区域个数
	CFG_CALIBRATEAREA_SCENE_UNIT *pstuCalibrateArea;                         // 多场景标定区域单元
}
CFG_CALIBRATEAREA_SCENE_INFO;

// 云台控制坐标单元
typedef struct tagCFG_PTZ_SPACE_UNIT
{
	int                    nPositionX;           //云台水平运动位置,有效范围:[0,3600]
	int                    nPositionY;           //云台垂直运动位置,有效范围:[-1800,1800]
	int                    nZoom;                //云台光圈变动位置,有效范围:[0,128]
}CFG_PTZ_SPACE_UNIT;

// 标定区域配置
typedef struct tagCFG_CALIBRATEAREA_UNIT
{
	int                          nSceneID;                                 // 场景编号
	int                          nPtzPresetID;                             // 预置点编号
	BOOL                         abCalibrateArea;                          // 标定区域是否存在
	CFG_CALIBRATEAREA_SCENE_UNIT stuCalibrateArea;                         // 标定区域
	CFG_PTZ_SPACE_UNIT           stuPtzPosition;                           // 标定的云台位置
}
CFG_VIDEO_ANALYSE_CALIBRATEAREA_UNIT;

// 标定区域配置
typedef struct tagCFG_VIDEO_ANALYSE_CALIBRATEAREA
{

	DWORD                                dwMaxSceneCalibrateNum;           // 多场景标定区域最大个数(需要申请此大小内存)
	DWORD                                dwRetSceneCalibrateNum;           // 实际包含多场景标定区域个数
	CFG_VIDEO_ANALYSE_CALIBRATEAREA_UNIT *pstuCalibrateAreaUnit;           // 标定区域
}
CFG_VIDEO_ANALYSE_CALIBRATEAREA;

// 昼夜算法切换模式
typedef enum tagCFG_TIMEPERIOD_SWITCH_MODE
{
	CFG_TIMEPERIOD_SWITCH_MODE_UNKNOWN,                                     // 未知
	CFG_TIMEPERIOD_SWITCH_MODE_BYCOLOR,                                    	// 通过色彩切换                     
	CFG_TIMEPERIOD_SWITCH_MODE_BYBRIGHTNESS,                               	// 通过亮度切换
	CFG_TIMEPERIOD_SWITCH_MODE_BYPOS,										// 通过经纬度计算日出日落时间切换
}CFG_TIMEPERIOD_SWITCH_MODE;

// 多场景标定白天和黑夜配置基本单元
typedef struct tagCFG_TIME_PERIOD_SCENE_UNIT
{
	CFG_TIME_PERIOD        stuDayTimePeriod;								 	// 标定白天的时间段.(8,20),表示从8点到晚上20点为白天
	CFG_TIME_PERIOD        stuNightTimePeriod;								 	// 标定黑夜的时间段.(20,7),表示从晚8点到凌晨7点为黑夜
	CFG_TIMEPERIOD_SWITCH_MODE emSwitchMode;                                  	// 昼夜算法切换模式,详见CFG_TIMEPERIOD_SWITCH_MODE
	UINT					unLongitude;										// 经度 单位百万分之一度
	UINT					unLatitude;											// 纬度 单位百万分之一度
}
CFG_TIME_PERIOD_SCENE_UNIT;

// 多场景标定白天和黑夜配置
typedef struct tagCFG_TIME_PERIOD_SCENE_INFO
{
	DWORD                        dwMaxTimePeriodSceneNum;                    // 多场景标定白天和黑夜配置最大个数(需要申请此大小内存)
	DWORD                        dwRetTimePeriodSceneNum;                    // 实际包含多场景标定白天和黑夜配置个数
	CFG_TIME_PERIOD_SCENE_UNIT   *pstuTimePeriodScene;                       // 多场景标白天和黑夜配置域单元,由用户申请内存,大小为sizeof(CFG_TIME_PERIOD_SCENE_UNIT)*dwMaxTimePeriodSceneNum
}CFG_TIME_PERIOD_SCENE_INFO;

// 视频分析全局配置
typedef struct tagCFG_ANALYSEGLOBAL_INFO
{
	// 信息
	char				            szSceneType[MAX_NAME_LEN];				// 应用场景,详见"支持的场景列表"

	//交通场景信息
    double				            CameraHeight;							// 摄像头离地高度	单位:米
	double				            CameraDistance;						    // 摄像头离地面检测区域中心的水平距离	单位:米
	CFG_POLYGON                     stuNearDetectPoint;                     // 近景检测点
	CFG_POLYGON                     stuFarDectectPoint;                     // 远景检测点
	int                             nNearDistance;                          // NearDetectPoint,转换到实际场景中时,离摄像头垂直线的水平距离
	int                             nFarDistance;                           // FarDectectPoint,转换到实际场景中时,离摄像头垂直线的水平距离
	char                            szSubType[MAX_NAME_LEN];                // 交通场景的子类型,"Gate",卡口类型,"Junction" 路口类型,"ParkingSpace" 车位检测类型                             
	int                             nLaneNum;                               // 车道数
	CFG_LANE                        stuLanes[MAX_LANE_NUM];                 // 车道信息
    int                             nPlateHintNum;                          // 车牌字符暗示个数
    char                            szPlateHints[MAX_PLATEHINT_NUM][MAX_NAME_LEN]; // 车牌字符暗示数组,在拍摄图片质量较差车牌识别不确定时,根据此数组中的字符进行匹配,数组下标越小,匹配优先级越高
	int                             nLightGroupNum;                         // 灯组数
	CFG_LIGHTGROUPS                 stLightGroups[MAX_LIGHTGROUP_NUM];      // 灯组配置信息
    BOOL                            bHangingWordPlate;                      // 是否识别挂字车牌
    BOOL                            bNonStdPolicePlate;                     // 是否识别非标准警牌
    BOOL                            bYellowPlateLetter;                     // 是否识别黄牌字母
    int                             nReportMode;                            // 上报模式,0:未定义,1:上报所有违章车辆,2:上报车牌识别成功的违章车辆
    int                             nPlateMatch;                            // 车牌匹配率,0~100,多次识别车牌使用,表示重复识别车牌和前一次识别车牌的一致性要求
    int                             nJudgment;                              // 违章判定依据,0:未定义,1:按车道,2:按行驶方向,3:按车道和行驶方向
    int                             nLeftDivisionPtCount;                   // 左转弯分界线点数
    CFG_POLYLINE                    stLeftDivisionLine[MAX_POLYLINE_NUM];   // 左转弯分界线
    int                             nRightDivisionPtCount;                  // 右转弯分界线点数
    CFG_POLYLINE                    stRightDivisionLine[MAX_POLYLINE_NUM];  // 右转弯分界线
    CFG_ADJUST_LIGHT_COLOR          stAdjustLightColor;                     // 交通灯颜色校正配置
    int                             nParkingSpaceNum;                       // 车位数                             
    CFG_PARKING_SPACE               stParkingSpaces[MAX_PARKING_SPACE_NUM];  // 车位配置信息,每个元素代表一个车位


	// 一般场景信息 
	int                             nStaffNum;                              // 标尺数
	CFG_STAFF                       stuStaffs[MAX_STAFF_NUM];               // 标尺

	unsigned int                    nCalibrateAreaNum;                      // 标定区域数
	CFG_CALIBRATEAREA_INFO          stuCalibrateArea[MAX_CALIBRATEBOX_NUM]; // 标定区域(若该字段不存在,则以整幅场景为标定区域)

	BOOL                            bFaceRecognition;                       // 人脸识别场景是否有效
	CFG_FACERECOGNITION_SCENCE_INFO stuFaceRecognitionScene;                // 人脸识别场景
		
	bool                            abJitter;
	bool                            abDejitter;	
	BYTE                            bReserved[2];                           // 保留字段

	int					            nJitter;								// 摄像机抖动率 : 摄像机抖动率,取值0-100,反应静止摄像机抖动程度,抖动越厉害,值越大。
	BOOL                            bDejitter;                              // 是否开启去抖动模块 目前不实现

	BOOL                            abCompatibleMode;	
	int                             nCompatibleMode;                        // 0:"OldTrafficRule" : 交通老规则兼容模式;1:"NewTrafficRule" :  交通新规则兼容模式;-1:字符串错误

	int                             nCustomDataLen;                         // 实际数据长度,不能大于1024
	BYTE                            byCustomData[1024];                     // 第三方自定义配置数据
	double				            CameraAngle;							// 摄像头与垂方向的夹角
	CFG_POLYGON			            stuLandLineStart;						// 地平线线段起始点(点的坐标坐标归一化到[0,8192)区间。)
	CFG_POLYGON			            stuLandLineEnd;							// 地平线线段终止点(点的坐标坐标归一化到[0,8192)区间。)

	BOOL				            bFaceDetection;							// 人脸检测场景是否有效
	CFG_FACEDETECTION_SCENCE_INFO   stuFaceDetectionScene;		            // 人脸检测场景
	CFG_TIME_PERIOD		            stuDayTimePeriod;						// 标定白天的时间段.(8,20),表示从8点到晚上20点为白天
	CFG_TIME_PERIOD		            stuNightTimePeriod;						// 标定黑夜的时间段.(20,7),表示从晚8点到凌晨7点为黑夜
	CFG_TIME_PERIOD_SCENE_INFO      stuTimePeriodSceneInfo;                 // 多场景标定白天和黑夜时间段
	CFG_CALIBRATEAREA_SCENE_INFO    stuCalibrateAreaSceneInfo;              // 多场景标定区域配置信息
	CFG_TIMEPERIOD_SWITCH_MODE      emSwitchMode;                           // 昼夜算法切换模式,详见CFG_TIMEPERIOD_SWITCH_MODE

	int					            nSceneNum;								// 场景数, >0时表示支持多场景, stuMultiScene有效
	CFG_ANALYSEGLOBAL_SCENE	        stuMultiScene[MAX_ANALYSE_SCENE_NUM];	// 多场景配置

	int								nSceneCount;							// 实际场景个数
	char							szSceneTypeList[MAX_SCENE_TYPE_LIST_SIZE][CFG_COMMON_STRING_16];// 场景列别,同一视频通道下启用多个场景时,表示第2个之后的方案(可选)
	EM_DEPTH_TYPE					emDepthType;							// 画面景深
	int								nPtzPresetId;							// 云台预置点编号,0~255
	UINT							unLongitude;							// 经度 单位百万分之一度
	UINT							unLatitude;								// 纬度 单位百万分之一度
	BOOL							bSceneTypeListEx;						// szSceneTypeListEx 是否有效,当为TRUE时,使用 szSceneTypeListEx;否则使用 szSceneTypeList
	int								nSceneCountEx;							// 实际场景个数扩展,szSceneTypeListEx 的有效个数
	char							szSceneTypeListEx[32][128];				// 场景列表扩展,szSceneTypeList 扩展字段

	CFG_ANATOMYTEMP_SCENCE_INFO		stuAnatomyTempScene;					// 人体测温场景配置
} CFG_ANALYSEGLOBAL_INFO;

// 尺寸过滤器
typedef struct tagCFG_SIZEFILTER_INFO
{
	int                   nCalibrateBoxNum;                       // 校准框个数
	CFG_CALIBRATEBOX_INFO stuCalibrateBoxs[MAX_CALIBRATEBOX_NUM]; // 校准框(远端近端标定模式下有效)
	bool                bMeasureModeEnable;                       // 计量方式参数是否有效
	BYTE                bMeasureMode;                             // 计量方式,0-像素,不需要远端、近端标定, 1-实际长度,单位:米, 2-远端近端标定后的像素
	bool                bFilterTypeEnable;                        // 过滤类型参数是否有效
	// ByArea,ByRatio仅作兼容,使用独立的ByArea和ByRatio选项代替 2012/03/06
	BYTE				bFilterType;			 				  // 过滤类型:0:"ByLength",1:"ByArea", 2"ByWidthHeight"
	BYTE                bReserved[2];                             // 保留字段
	bool                bFilterMinSizeEnable;                     // 物体最小尺寸参数是否有效
	bool                bFilterMaxSizeEnable;                     // 物体最大尺寸参数是否有效
	CFG_SIZE			stuFilterMinSize;						  // 物体最小尺寸 "ByLength"模式下表示宽高的尺寸,"ByArea"模式下宽表示面积,高无效(远端近端标定模式下表示基准框的宽高尺寸)。
	CFG_SIZE			stuFilterMaxSize;				          // 物体最大尺寸 "ByLength"模式下表示宽高的尺寸,"ByArea"模式下宽表示面积,高无效(远端近端标定模式下表示基准框的宽高尺寸)。
	
	bool                abByArea;
	bool                abMinArea;
	bool                abMaxArea;
	bool                abMinAreaSize;
	bool                abMaxAreaSize;
	bool                bByArea;                                  // 是否按面积过滤 通过能力ComplexSizeFilter判断是否可用
	bool                bReserved1[2];                            // 补齐
	float               nMinArea;                                 // 最小面积
	float               nMaxArea;                                 // 最大面积
	CFG_SIZE            stuMinAreaSize;                           // 最小面积矩形框尺寸 "计量方式"为"像素"时,表示最小面积矩形框的宽高尺寸;"计量方式"为"远端近端标定模式"时,表示基准框的最小宽高尺寸;
	CFG_SIZE            stuMaxAreaSize;                           // 最大面积矩形框尺寸, 同上
	
	bool                abByRatio;
	bool                abMinRatio;
	bool                abMaxRatio;
	bool                abMinRatioSize;
	bool                abMaxRatioSize;
	bool                bByRatio;                                 // 是否按宽高比过滤 通过能力ComplexSizeFilter判断是否可用
	bool                bReserved2[6];                            // 补齐
	double              dMinRatio;                                // 最小宽高比
	double              dMaxRatio;                                // 最大宽高比
	CFG_SIZE            stuMinRatioSize;                          // 最小宽高比矩形框尺寸,最小宽高比对应矩形框的宽高尺寸。
	CFG_SIZE            stuMaxRatioSize;                          // 最大宽高比矩形框尺寸,同上
	
	int                 nAreaCalibrateBoxNum;                     // 面积校准框个数
	CFG_CALIBRATEBOX_INFO stuAreaCalibrateBoxs[MAX_CALIBRATEBOX_NUM];// 面积校准框
	int                 nRatioCalibrateBoxs;                      // 宽高校准框个数
	CFG_CALIBRATEBOX_INFO stuRatioCalibrateBoxs[MAX_CALIBRATEBOX_NUM];// 宽高校准框
	
	bool                abBySize;                                 // 长宽过滤使能参数是否有效
	bool                bBySize;                                  // 长宽过滤使能
	BYTE                bReserved3[6];                            // 保留字段
}CFG_SIZEFILTER_INFO;

// 各种物体特定的过滤器
typedef struct tagCFG_OBJECT_SIZEFILTER_INFO
{
	char				szObjectType[MAX_NAME_LEN];              // 物体类型
	CFG_SIZEFILTER_INFO stSizeFilter;                            // 对应的尺寸过滤器
}CFG_OBJECT_SIZEFILTER_INFO;

// 特殊检测区,是指从检测区中区分出来,有特殊检测属性的区域
typedef struct tagCFG_SPECIALDETECTREGION_INFO
{
	int                nDetectNum;                              // 检测区域顶点数
	CFG_POLYGON        stDetectRegion[MAX_POLYGON_NUM];         // 检测区域
	int                nPropertyNum;                            // 特殊检测区属性个数
	int                nPropertys[EM_SEPCIALREGION_PROPERTY_TYPE_NUM];      // 特殊检测区属性
}CFG_SPECIALDETECT_INFO;

//各类物体的子类型
typedef enum tagCFG_CATEGORY_TYPE
{
    CFG_CATEGORY_TYPE_UNKNOW,                            // 未知类型
    //车型相关子类别
    CFG_CATEGORY_VEHICLE_TYPE_MOTOR,                     // "Motor" 机动车           
    CFG_CATEGORY_VEHICLE_TYPE_NON_MOTOR,                 // "Non-Motor"非机动车        
    CFG_CATEGORY_VEHICLE_TYPE_BUS,                       // "Bus"公交车        
    CFG_CATEGORY_VEHICLE_TYPE_BICYCLE,                   // "Bicycle" 自行车        
    CFG_CATEGORY_VEHICLE_TYPE_MOTORCYCLE,                // "Motorcycle"摩托车        
    CFG_CATEGORY_VEHICLE_TYPE_UNLICENSEDMOTOR,           // "UnlicensedMotor": 无牌机动车
    CFG_CATEGORY_VEHICLE_TYPE_LARGECAR,                  // "LargeCar"  大型汽车
    CFG_CATEGORY_VEHICLE_TYPE_MICROCAR,                  // "MicroCar" 小型汽车
    CFG_CATEGORY_VEHICLE_TYPE_EMBASSYCAR,                // "EmbassyCar" 使馆汽车
    CFG_CATEGORY_VEHICLE_TYPE_MARGINALCAR,               // "MarginalCar" 领馆汽车
    CFG_CATEGORY_VEHICLE_TYPE_AREAOUTCAR,                // "AreaoutCar" 境外汽车
    CFG_CATEGORY_VEHICLE_TYPE_FOREIGNCAR,                // "ForeignCar" 外籍汽车
    CFG_CATEGORY_VEHICLE_TYPE_DUALTRIWHEELMOTORCYCLE,    // "DualTriWheelMotorcycle"两、三轮摩托车
    CFG_CATEGORY_VEHICLE_TYPE_LIGHTMOTORCYCLE,           // "LightMotorcycle" 轻便摩托车
    CFG_CATEGORY_VEHICLE_TYPE_EMBASSYMOTORCYCLE,         // "EmbassyMotorcycle "使馆摩托车
    CFG_CATEGORY_VEHICLE_TYPE_MARGINALMOTORCYCLE,        // "MarginalMotorcycle "领馆摩托车
    CFG_CATEGORY_VEHICLE_TYPE_AREAOUTMOTORCYCLE,         // "AreaoutMotorcycle "境外摩托车
    CFG_CATEGORY_VEHICLE_TYPE_FOREIGNMOTORCYCLE,         // "ForeignMotorcycle "外籍摩托车
    CFG_CATEGORY_VEHICLE_TYPE_FARMTRANSMITCAR,           // "FarmTransmitCar" 农用运输车
    CFG_CATEGORY_VEHICLE_TYPE_TRACTOR,                   // "Tractor" 拖拉机
    CFG_CATEGORY_VEHICLE_TYPE_TRAILER,                   // "Trailer"  挂车
    CFG_CATEGORY_VEHICLE_TYPE_COACHCAR,                  // "CoachCar"教练汽车
    CFG_CATEGORY_VEHICLE_TYPE_COACHMOTORCYCLE,           // "CoachMotorcycle "教练摩托车
    CFG_CATEGORY_VEHICLE_TYPE_TRIALCAR,                  // "TrialCar" 试验汽车
    CFG_CATEGORY_VEHICLE_TYPE_TRIALMOTORCYCLE,           // "TrialMotorcycle "试验摩托车
    CFG_CATEGORY_VEHICLE_TYPE_TEMPORARYENTRYCAR,         // "TemporaryEntryCar"临时入境汽车
    CFG_CATEGORY_VEHICLE_TYPE_TEMPORARYENTRYMOTORCYCLE,  // "TemporaryEntryMotorcycle"临时入境摩托车
    CFG_CATEGORY_VEHICLE_TYPE_TEMPORARYSTEERCAR,         // "TemporarySteerCar"临时行驶车
    CFG_CATEGORY_VEHICLE_TYPE_PASSENGERCAR,              // "PassengerCar" 客车
    CFG_CATEGORY_VEHICLE_TYPE_LARGETRUCK,                // "LargeTruck" 大货车
    CFG_CATEGORY_VEHICLE_TYPE_MIDTRUCK,                  // "MidTruck" 中货车
    CFG_CATEGORY_VEHICLE_TYPE_SALOONCAR,                 // "SaloonCar" 轿车
    CFG_CATEGORY_VEHICLE_TYPE_MICROBUS,                  // "Microbus"面包车
    CFG_CATEGORY_VEHICLE_TYPE_MICROTRUCK,                // "MicroTruck"小货车
    CFG_CATEGORY_VEHICLE_TYPE_TRICYCLE,                  // "Tricycle"三轮车
    CFG_CATEGORY_VEHICLE_TYPE_PASSERBY,                  // "Passerby" 行人
	CFG_CATEGORY_VEHICLE_TYPE_OILTANKTRUCK,				 // "OilTankTruck" 油罐车
	CFG_CATEGORY_VEHICLE_TYPE_TANKCAR,					 // "TankCar" 槽罐车
	CFG_CATEGORY_VEHICLE_TYPE_SUV,					     // "SUV" SUV
	CFG_CATEGORY_VEHICLE_TYPE_MPV,					     // "MPV" MPV

    //车牌相关子类别
    CFG_CATEGORY_PLATE_TYPE_NORMAL,                      // "Normal" 蓝牌黑字
    CFG_CATEGORY_PLATE_TYPE_YELLOW,                      // "Yellow" 黄牌
    CFG_CATEGORY_PLATE_TYPE_DOUBLEYELLOW,                // "DoubleYellow" 双层黄尾牌
    CFG_CATEGORY_PLATE_TYPE_POLICE,                      // "Police" 警牌
    CFG_CATEGORY_PLATE_TYPE_ARMED,                       // "Armed" 武警牌
    CFG_CATEGORY_PLATE_TYPE_MILITARY,                    // "Military" 部队号牌
    CFG_CATEGORY_PLATE_TYPE_DOUBLEMILITARY,              // "DoubleMilitary" 部队双层
    CFG_CATEGORY_PLATE_TYPE_SAR,                         // "SAR" 港澳特区号牌    
    CFG_CATEGORY_PLATE_TYPE_TRAINNING,                   // "Trainning" 教练车号牌
    CFG_CATEGORY_PLATE_TYPE_PERSONAL,                    // "Personal" 个性号牌
    CFG_CATEGORY_PLATE_TYPE_AGRI,                        // "Agri" 农用牌
    CFG_CATEGORY_PLATE_TYPE_EMBASSY,                     // "Embassy" 使馆号牌
    CFG_CATEGORY_PLATE_TYPE_MOTO,                        // "Moto" 摩托车号牌
    CFG_CATEGORY_PLATE_TYPE_TRACTOR,                     // "Tractor" 拖拉机号牌
    CFG_CATEGORY_PLATE_TYPE_OFFICIALCAR,                 // "OfficialCar" 公务车
    CFG_CATEGORY_PLATE_TYPE_PERSONALCAR,                 // "PersonalCar" 私家车
    CFG_CATEGORY_PLATE_TYPE_WARCAR,                      // "WarCar"  军用
    CFG_CATEGORY_PLATE_TYPE_OTHER,                       // "Other" 其他号牌
    CFG_CATEGORY_PLATE_TYPE_CIVILAVIATION,               // "Civilaviation" 民航号牌
    CFG_CATEGORY_PLATE_TYPE_BLACK,                       // "Black" 黑牌
	CFG_CATEGORY_PLATE_TYPE_PURENEWENERGYMICROCAR,       // "PureNewEnergyMicroCar" 纯电动新能源小车
	CFG_CATEGORY_PLATE_TYPE_MIXEDNEWENERGYMICROCAR,      // "MixedNewEnergyMicroCar" 混合新能源小车
	CFG_CATEGORY_PLATE_TYPE_PURENEWENERGYLARGECAR,       // "PureNewEnergyLargeCar" 纯电动新能源大车
	CFG_CATEGORY_PLATE_TYPE_MIXEDNEWENERGYLARGECAR,      // "MixedNewEnergyLargeCar" 混合新能源大车

}CFG_CATEGORY_TYPE;

// 计量方式
typedef enum tagEM_CFG_MEASURE_MODE_TYPE
{
	EM_CFG_NEASURE_MODE_TYPE_UNKNOW,				// 未知
	EM_CFG_NEASURE_MODE_TYPE_PIXEL,					// 像素
	EM_CFG_NEASURE_MODE_TYPE_METRIC,				// 实际长度
}EM_CFG_MEASURE_MODE_TYPE;

// 过滤类型
typedef enum tagCFG_FILTER_HEIGHT_TYPE
{
	CFG_FILTER_HEIGHT_TYPE_UNKNOW,				// 未知
	CFG_FILTER_HEIGHT_TYPE_BYHEIGHT,			// 高度
}CFG_FILTER_HEIGHT_TYPE;

// 物体类型长度过滤器
typedef struct tagCFG_LENGTH_FILTER_INFO
{
	EM_CFG_MEASURE_MODE_TYPE	emMeasureMode;	// 计量方式
	CFG_FILTER_HEIGHT_TYPE		emFilterType;	// 过滤类型
	int							nDetectType;	// 0:大于且小于 1:大于或等于且小于或等于 2:大于且小于或等于 3:大于或等于且小于
	int							nMinLen;		// 最小检测长度,单位:cm
	int							nMaxLen;		// 最大检测长度,单位:cm
}CFG_LENGTH_FILETER_INFO;

// 不同区域各种类型物体的检测模块配置
typedef struct tagCFG_MODULE_INFO
{
	// 信息
	char				szObjectType[MAX_NAME_LEN];				// 默认物体类型,详见"支持的检测物体类型列表"
	bool				bSnapShot;								// 是否对识别物体抓图
	BYTE                bSensitivity;                           // 灵敏度,取值1-10,值越小灵敏度越低
	bool                bMeasureModeEnable;                     // 计量方式参数是否有效
	BYTE                bMeasureMode;                           // 计量方式,0-像素,不需要远端、近端标定, 1-实际长度,单位:米, 2-远端近端标定后的像素
	int					nDetectRegionPoint;						// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];		// 检测区域
	int					nTrackRegionPoint;						// 跟踪区域顶点数
	CFG_POLYGON			stuTrackRegion[MAX_POLYGON_NUM];		// 跟踪区域
	bool                bFilterTypeEnable;                      // 过滤类型参数是否有效
	// ByArea,ByRatio仅作兼容,使用独立的ByArea和ByRatio选项代替 2012/03/06
	BYTE				nFilterType;							// 过滤类型:0:"ByLength",1:"ByArea", 2:"ByWidthHeight", 3:"ByRatio": 按照宽高比,宽度除以高度的结果小于某个值或者大于某个值的问题将被过滤掉。
	bool                bBackgroudEnable;                       // 区域的背景类型参数是否有效
	BYTE                bBackgroud;                             // 区域的背景类型, 0-普通类型, 1-高光类型
	bool                abBySize;                               // 长宽过滤使能参数是否有效
	bool                bBySize;                                // 长宽过滤使能
	bool                bFilterMinSizeEnable;                   // 物体最小尺寸参数是否有效
	bool                bFilterMaxSizeEnable;                   // 物体最大尺寸参数是否有效
	CFG_SIZE			stuFilterMinSize;						// 物体最小尺寸 "ByLength"模式下表示宽高的尺寸,"ByArea"模式下宽表示面积,高无效。
	CFG_SIZE			stuFilterMaxSize;						// 物体最大尺寸 "ByLength"模式下表示宽高的尺寸,"ByArea"模式下宽表示面积,高无效。
	int                 nExcludeRegionNum;                      // 排除区域数
	CFG_REGION          stuExcludeRegion[MAX_EXCLUDEREGION_NUM];// 排除区域
	int                 nCalibrateBoxNum;                       // 校准框个数
	CFG_CALIBRATEBOX_INFO stuCalibrateBoxs[MAX_CALIBRATEBOX_NUM];// 校准框(远端近端标定模式下有效)
	bool                bAccuracy;                               // 检测精度是否有效
	BYTE                byAccuracy;                              // 检测精度
	bool                bMovingStep;                             // 算法移动步长是否有效                        
	BYTE                byMovingStep;                            // 算法移动步长
	bool                bScalingFactor;							 // 算法缩放因子是否有效
	BYTE                byScalingFactor;						 // 算法缩放因子

	BYTE                bReserved2[1];                           // 保留字段
	bool                abDetectBalance;						 // 漏检和误检平衡参数是否有效
	int					nDetectBalance;							 // 漏检和误检平衡	0-折中模式(默认)1-漏检更少2-误检更少
	
	bool                abByRatio;
	bool                abMinRatio;
	bool                abMaxRatio;
	bool                abMinAreaSize;
	bool                abMaxAreaSize;
	bool                bByRatio;                                // 是否按宽高比过滤 通过能力ComplexSizeFilter判断是否可用 可以和nFilterType复用
	bool                bReserved1[2];
	double              dMinRatio;                               // 最小宽高比
	double              dMaxRatio;                               // 最大宽高比
	CFG_SIZE            stuMinAreaSize;                           // 最小面积矩形框尺寸 "计量方式"为"像素"时,表示最小面积矩形框的宽高尺寸;"计量方式"为"远端近端标定模式"时,表示基准框的最小宽高尺寸;
	CFG_SIZE            stuMaxAreaSize;                           // 最大面积矩形框尺寸, 同上
	
	bool                abByArea;
	bool                abMinArea;
	bool                abMaxArea;
	bool                abMinRatioSize;
	bool                abMaxRatioSize;
	bool                bByArea;                                 // 是否按面积过滤 通过能力ComplexSizeFilter判断是否可用  可以和nFilterType复用
	bool                bReserved3[2];
	float               nMinArea;                                // 最小面积
	float               nMaxArea;                                // 最大面积
	CFG_SIZE            stuMinRatioSize;                          // 最小宽高比矩形框尺寸,最小宽高比对应矩形框的宽高尺寸。
	CFG_SIZE            stuMaxRatioSize;                          // 最大宽高比矩形框尺寸,同上
	
	int                 nAreaCalibrateBoxNum;                    // 面积校准框个数
	CFG_CALIBRATEBOX_INFO stuAreaCalibrateBoxs[MAX_CALIBRATEBOX_NUM];// 面积校准框
	int                 nRatioCalibrateBoxs;                      // 比例校准框个数
	CFG_CALIBRATEBOX_INFO stuRatioCalibrateBoxs[MAX_CALIBRATEBOX_NUM];// 比例校准框个数

	bool                bAntiDisturbance;                        // 是否开启去扰动模块
	bool                bBacklight;                              // 是否有逆光
	bool                bShadow;                                 // 是否有阴影
	bool                bContourAssistantTrack;                  // 是否开启轮廓辅助跟踪,例:在人脸识别时可以通过跟踪人体来辅助识别人脸
	int                 nPtzPresetId;                            // 云台预置点,0~255,0表示固定场景,忽略预置点。大于0表示在此预置点时模块有效

	int                 nObjectFilterNum;                        // 物体特定的过滤器个数
	CFG_OBJECT_SIZEFILTER_INFO stObjectFilter[MAX_OBJECT_LIST_SIZE]; // 物体特定的过滤器信息

	BOOL                abObjectImageSize;                        
	CFG_SIZE            stObjectImageSize;                       // 保证物体图像尺寸相同,单位是像素,不支持小数,取值:>=0,  0 表示自动调整大小

	int                 nSpecailDetectNum;                                // 特殊检测区域个数
	CFG_SPECIALDETECT_INFO stSpecialDetectRegions[MAX_SPECIALDETECT_NUM];  // 特殊检测区信息

	unsigned int        nAttribute;                              // 需要识别物体的属性个数
	char                szAttributes[MAX_OBJECT_ATTRIBUTES_SIZE][MAX_NAME_LEN];   // 需要识别物体的属性列表,“Category” 物体子类;“Size” 物体大小;“Color” 物体颜色;“Speed” 物体速度;“Sign” 物体标志,对车辆而言,指车标;“Action” 物体动作
	
	BOOL                abPlateAnalyseMode;                      // nPlateAnalyseMode是否有效
	int                 nPlateAnalyseMode;                       // 车牌识别模式,0-只识别车头牌照 1-只识别车尾牌照 2-车头牌照优先(场景中大部分车均是车头牌照)3-车尾牌照优先(场景中大部分车均是车尾牌照)

    //szAttributes属性存在"Category"时生效
    unsigned int				nCategoryNum;								// 需要识别物体的子类型总数
    CFG_CATEGORY_TYPE			emCategoryType[MAX_CATEGORY_TYPE_NUMBER];	// 子类型信息
	char						szSceneType[CFG_COMMON_STRING_16];			// 检测区参数用于的场景类型
	CFG_LENGTH_FILETER_INFO		stuLengthFilter;							// 物体类型过滤器,如果指定新的过滤器以新的为准
	BOOL						bSceneTypeEx;								// szSceneTypeEx 是否有效
	char						szSceneTypeEx[128];							// 检测区参数用于的场景类型扩展
} CFG_MODULE_INFO;

typedef struct tagCFG_ANALYSEMODULES_INFO
{
	int					nMoudlesNum;							    // 检测模块数
	CFG_MODULE_INFO     stuModuleInfo[MAX_ANALYSE_MODULE_NUM];	    // 每个视频输入通道对应的各种类型物体的检测模块配置

} CFG_ANALYSEMODULES_INFO;

// 视频分析事件规则配置相关结构体定义
enum CFG_EM_DETECTMODE_T{
	CFG_EM_DETECTMODE_NONE,            // 无此字段
	CFG_EM_DETECTMODE_BY_VIDEO,        // 视频检测模式
	CFG_EM_DETECTMODE_BY_BYAUDIO,      // 音频检测模式
	CFG_EM_DETECTMODE_BY_BOTH,         // 音视频联合检测模式
	CFG_EM_DETECTMODE_ERR=255          // 字段数据错误
};


typedef struct tag_VIDEOINANALYSE_GLOBAL_COMM_INFO
{
	EM_SCENE_TYPE	emClassType;		// 应用场景
	int				nPtzPresetId;		// 预置点
} VIDEOINANALYSE_GLOBAL_COMM_INFO;

typedef struct tagCFG_VIDEOINANALYSE_GLOBAL_SCENE
{
	VIDEOINANALYSE_GLOBAL_COMM_INFO		stuCommInfo;	 						// 公共信息
	// 以下为场景具体信息, 根据stuCommInfo中的emSceneType决定哪个场景有效
	union
	{
		CFG_FACEDETECTION_SCENCE_INFO	stuFaceDetectionScene;	// 人脸检测场景/人脸识别检查
		CFG_TRAFFIC_SCENE_INFO			stuTrafficScene;		// 交通场景
		CFG_NORMAL_SCENE_INFO			stuNormalScene;			// 普通场景/远景场景/中景场景/近景场景/室内场景/人数统计场景
		CFG_TRAFFIC_TOUR_SCENE_INFO		stuTrafficTourScene;	// 交通巡视场景
	};
} CFG_VIDEOINANALYSE_GLOBAL_SCENE;

// 全局配置模板和默认值
typedef struct tagCFG_VIDEOINANALYSE_GLOBAL_INFO
{
	unsigned int                    	nCalibrateAreaNum;                      // 标定区域数
	CFG_CALIBRATEAREA_INFO          	stuCalibrateArea[MAX_CALIBRATEBOX_NUM]; // 标定区域(若该字段不存在,则以整幅场景为标定区域)

	CFG_VIDEOINANALYSE_GLOBAL_SCENE		stuVideoInAnalyseScene;					// 多场景配置
}CFG_VIDEOINANALYSE_GLOBAL_INFO;

// 智能检测区配置模板和默认值
typedef struct tagCFG_VIDEOINANALYSE_MODULE_INFO
{
	CFG_MODULE_INFO			stuModuleInfo;		// 获取到的智能检测区配置模板和默认值
}CFG_VIDEOINANALYSE_MODULE_INFO;

// 车辆类型
typedef enum tagEM_CFG_CATEGORY_TYPE
{
	EM_CFG_CATEGORY_UNKNOWN,					// 未知
	EM_CFG_CATEGORY_OTHER,						// 其他 
	EM_CFG_CATEGORY_MOTOR,						// 机动车
	EM_CFG_CATEGORY_BUS,						// 公交车
	EM_CFG_CATEGORY_UNLICENSED_MOTOR,			// 无牌机动车
	EM_CFG_CATEGORY_LARGE_CAR,					// 大型汽车
	EM_CFG_CATEGORY_MICRO_CAR,					// 小型汽车
	EM_CFG_CATEGORY_EMBASSY_CAR,				// 使馆汽车
	EM_CFG_CATEGORY_MARGINAL_CAR,				// 领馆汽车
	EM_CFG_CATEGORY_AREAOUT_CAR,				// 境外汽车
	EM_CFG_CATEGORY_FOREIGN_CAR,				// 外籍汽车
	EM_CFG_CATEGORY_FARMTRANSMIT_CAR,			// 农用运输车
	EM_CFG_CATEGORY_TRACTOR,					// 拖拉机
	EM_CFG_CATEGORY_TRAILER,					// 挂车
	EM_CFG_CATEGORY_COACH_CAR,					// 教练汽车
	EM_CFG_CATEGORY_TRIAL_CAR,					// 试验汽车
	EM_CFG_CATEGORY_TEMPORARY_ENTRY_CAR,		// 临时入境汽车
	EM_CFG_CATEGORY_TEMPORARY_ENTRY_MOTORCYCLE,	// 临时入境摩托
	EM_CFG_CATEGORY_TEMPORARY_STEER_CAR,		// 临时行驶车
	EM_CFG_CATEGORY_LARGE_TRUCK,				// 大货车
	EM_CFG_CATEGORY_MID_TRUCK,					// 中货车
	EM_CFG_CATEGORY_MICRO_TRUCK,				// 小货车
	EM_CFG_CATEGORY_MICROBUS,					// 面包车
	EM_CFG_CATEGORY_SALOON_CAR,					// 轿车
	EM_CFG_CATEGORY_CARRIAGE,					// 小轿车
	EM_CFG_CATEGORY_MINI_CARRIAGE,				// 微型轿车
	EM_CFG_CATEGORY_SUV_MPV,					// SUV或者MPV
	EM_CFG_CATEGORY_SUV,						// SUV
	EM_CFG_CATEGORY_MPV,						// MPV
	EM_CFG_CATEGORY_PASSENGER_CAR,				// 客车
	EM_CFG_CATEGORY_MOTOR_BUS,					// 大客
	EM_CFG_CATEGORY_MID_PASSENGER_CAR,			// 中客车
	EM_CFG_CATEGORY_MINI_BUS,					// 小客车
	EM_CFG_CATEGORY_PICKUP,						// 皮卡车
	EM_CFG_CATEGORY_OILTANK_TRUCK,				// 油罐车
	EM_CFG_CATEGORY_TANK_CAR,					// 危化品车辆
	EM_CFG_CATEGORY_SLOT_TANK_CAR,				// 槽罐车
	EM_CFG_CATEGORY_DREGS_CAR,					// 渣土车
	EM_CFG_CATEGORY_CONCRETE_MIXER_TRUCK,		// 混凝土搅拌车
	EM_CFG_CATEGORY_TAXI,						// 出租车
	EM_CFG_CATEGORY_POLICE,						// 警车
	EM_CFG_CATEGORY_AMBULANCE,					// 救护车
	EM_CFG_CATEGORY_GENERAL,					// 普通车
	EM_CFG_CATEGORY_WATERING_CAR,				// 洒水车
	EM_CFG_CATEGORY_FIRE_ENGINE,				// 消防车
	EM_CFG_CATEGORY_MACHINE_TRUCK,				// 工程车
	EM_CFG_CATEGORY_POWER_LOT_VEHICLE,			// 粉粒物料车
	EM_CFG_CATEGORY_SUCTION_SEWAGE_TRUCK,		// 吸污车
	EM_CFG_CATEGORY_NORMAL_TANK_TRUCK,			// 普通罐车
	EM_CFG_CATEGORY_SCHOOL_BUS,					// 校车
	EM_CFG_CATEGORY_EXCAVATOR,					// 挖掘车
	EM_CFG_CATEGORY_BULLDOZER,					// 推土车
	EM_CFG_CATEGORY_CRANE,						// 吊车
	EM_CFG_CATEGORY_PIMP_TRUCK,					// 泵车
} EM_CFG_CATEGORY_TYPE;

// 视频分析事件规则配置
// 事件类型 EVENT_IVS_CROSSLINEDETECTION (警戒线事件)对应的规则配置
typedef struct tagCFG_CROSSLINE_INFO
{
	// 信息
	char					szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool					bRuleEnable;											// 规则使能
    BYTE                	bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                	bReserved[2];                                           // 保留字段 
	int						nObjectTypeNum;											// 相应物体类型个数
	char					szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int						nDirection;												// 检测方向:0:由左至右;1:由右至左;2:两者都可以
	int						nDetectLinePoint;										// 警戒线顶点数
	CFG_POLYLINE			stuDetectLine[MAX_POLYLINE_NUM];						// 警戒线
	CFG_ALARM_MSG_HANDLE 	stuEventHandler;										// 报警联动
	
	CFG_TIME_SECTION		stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
 	BOOL                	bDisableTimeSection;                                    // stuTimeSection字段是否禁用,默认FALSE:不禁用,TRUE:禁用,用户控制

	int                 	nPtzPresetId;											// 云台预置点编号	0~65535
	BOOL                	bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO 	stuSizeFileter;                                         // 规则特定的尺寸过滤器
	int                 	nTriggerPosition;                                       // 触发报警位置数
	BYTE                	bTriggerPosition[8];                                    // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
	int						nTrackDuration;											// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
	UINT					nVehicleSubTypeNum;										// 检测的车辆子类型个数
	EM_CFG_CATEGORY_TYPE	emVehicleSubType[128];									// 检测的车辆子类型列表
    BOOL                    bFeatureEnable;                                         // 是否开启目标属性识别,默认false

    CFG_ALARM_MSG_HANDLE    stuRemoteEventHandler;                                        // 前端视频分析联动
    CFG_TIME_SECTION        stuRemoteTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 前端视频分析联动响应时间段
    BOOL                    bDisableRemoteTimeSection;                                    // stuRemoteTimeSection字段是否禁用, 默认FALSE:不禁用, TRUE:禁用, 用户控制
} CFG_CROSSLINE_INFO;

//事件类型EVENT_IVS_CROSSFENCEDETECTION(翻越围栏规则)对应的规则配置
typedef struct tagCFG_CROSSFENCEDETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
    BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved[2];                                           // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nDirection;												// 翻越围栏方向:0:由左至右;1:由右至左;2:两者都可以
	int					nUpstairsLinePointNumber;								// 围栏上线顶点数
	CFG_POLYLINE		stuUpstairsLine[MAX_POLYLINE_NUM];						// 围栏上线
	int					nDownstairsLinePointNumber;								// 围栏下线顶点数
	CFG_POLYLINE		stuDownstairsLine[MAX_POLYLINE_NUM];					// 围栏下线
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	int                 nTriggerPosition;                                       // 触发报警位置数
	BYTE                bTriggerPosition[8];                                    // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int					nTrackDuration;											// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
} CFG_CROSSFENCEDETECTION_INFO;

// 事件类型EVENT_IVS_CROSSREGIONDETECTION(警戒区事件)对应的规则配置
typedef struct tagCFG_CROSSREGION_INFO
{
	// 信息
	char					szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool					bRuleEnable;											// 规则使能
    BYTE                	bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                	bReserved[2];                                           // 保留字段
	int						nObjectTypeNum;											// 相应物体类型个数
	char					szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int						nDirection;												// 检测方向:0:Enter;1:Leave;2:Both
	int						nDetectRegionPoint;										// 警戒区顶点数
	CFG_POLYGON				stuDetectRegion[MAX_POLYGON_NUM];						// 警戒区
	CFG_ALARM_MSG_HANDLE 	stuEventHandler;										// 报警联动

	CFG_TIME_SECTION		stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
 	BOOL                	bDisableTimeSection;                                    // stuTimeSection字段是否禁用,默认FALSE:不禁用,TRUE:禁用,用户控制

	int                 	nPtzPresetId;											// 云台预置点编号	0~65535
	BOOL                	bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO 	stuSizeFileter;                                         // 规则特定的尺寸过滤器
	int                 	nActionType;                                            // 检测动作数
	BYTE                	bActionType[4];                                         // 检测动作列表,0-出现 1-消失 2-在区域内 3-穿越区域
	int                 	nMinTargets;                                            // 最小目标个数(当bActionType中包含"2-在区域内"时有效)
	int                 	nMaxTargets;                                            // 最大目标个数(当bActionType中包含"2-在区域内"时有效)
	int                 	nMinDuration;                                           // 最短持续时间, 单位秒(当bActionType中包含"2-在区域内"时有效)
	int                 	nReportInterval;                                        // 报告时间间隔, 单位秒(当bActionType中包含"2-在区域内"时有效)
	int						nTrackDuration;											// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间	
	UINT					nVehicleSubTypeNum;										// 检测的车辆子类型个数
	EM_CFG_CATEGORY_TYPE	emVehicleSubType[128];									// 检测的车辆子类型列表
    BOOL                    bFeatureEnable;                                         // 是否开启目标属性识别,默认false

    CFG_ALARM_MSG_HANDLE    stuRemoteEventHandler;                                        // 前端视频分析联动
    CFG_TIME_SECTION        stuRemoteTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 前端视频分析联动响应时间段
    BOOL                    bDisableRemoteTimeSection;                                    // stuRemoteTimeSection字段是否禁用, 默认FALSE:不禁用, TRUE:禁用, 用户控制
} CFG_CROSSREGION_INFO;

// 事件类型EVENT_IVS_PASTEDETECTION(ATM贴条事件)对应的规则配置
typedef struct tagCFG_PASTE_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
    int                 nSensitivity;                                           // 灵敏度,范围[1,10],灵敏度越高越容易检测	
} CFG_PASTE_INFO;

// 事件类型EVENT_IVS_LEFTDETECTION(物品遗留事件)对应的规则配置
typedef struct tagCFG_LEFT_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved[2];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int                 nTriggerPosition;                                       // 触发报警位置数
	BYTE                bTriggerPosition[8];                                    // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	int					nTrackDuration;											// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间	
} CFG_LEFT_INFO;

// 事件类型EVENT_IVS_TAKENAWAYDETECTION(物品搬移规则配置)对应的规则配置
typedef struct tagCFG_TAKENAWAYDETECTION_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bTrackEnable;                                           // 触发跟踪使能
	BYTE                bReserved[2];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int                 nTriggerPosition;                                       // 触发报警位置数
	BYTE                bTriggerPosition[8];                                    // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	int					nTrackDuration;											// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
} CFG_TAKENAWAYDETECTION_INFO;

// 事件类型EVENT_IVS_PARKINGDETECTION (非法停车)对应的规则配置
typedef struct tagCFG_PARKINGDETECTION_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved[2];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int                 nTriggerPosition;                                       // 触发报警位置数
	BYTE                bTriggerPosition[8];                                    // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	int					nTrackDuration;											// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
} CFG_PARKINGDETECTION_INFO;

// 事件类型EVENT_IVS_PRESERVATION(物品保全事件)对应的规则配置
typedef struct tagCFG_PRESERVATION_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

} CFG_PRESERVATION_INFO;

// 事件类型EVENT_IVS_STAYDETECTION(停留事件/滞留)对应的规则配置
typedef struct tagCFG_STAY_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved[2];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int                 nTriggerPosition;                                       // 触发报警位置数
	BYTE                bTriggerPosition[8];                                    // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
	int                 nTriggerTargetsNumber;                                  // 触发报警的徘徊或滞留人数
	int                 nReportInterval;                                        // 报告时间间隔,单位秒
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	int					nTrackDuration;											// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
} CFG_STAY_INFO;

// 事件类型EVENT_IVS_WANDERDETECTION(徘徊事件)对应的规则配置
typedef struct tagCFG_WANDER_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved[2];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int                 nTriggerPosition;                                       // 触发报警位置数
	BYTE                bTriggerPosition[8];                                    // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
	int                 nTriggerTargetsNumber;                                  // 触发报警的徘徊或滞留人数
	int                 nReportInterval;                                        // 报告时间间隔,单位秒
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	int					nTrackDuration;											// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
} CFG_WANDER_INFO;

// 事件类型EVENT_IVS_MOVEDETECTION(移动事件/运动检测)对应的规则配置
typedef struct tagCFG_MOVE_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bSensitivity;                                           // 灵敏度,取值1-10,值越小灵敏度越低
	BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved[1];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int                 nTriggerSpeed;                                          // 触发速度,km/h
	int                 nTriggerPosition;                                       // 触发报警位置数
	BYTE                bTriggerPosition[8];                                    // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器	
	int                 nTypeNumber;                                            // 检测类型数
	BYTE                bDetectType[4];                                         // 检测动作列表,0-快速运动 1-突然加速 2-突然减速
	int					nTrackDuration;											// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
} CFG_MOVE_INFO;

// 事件类型EVENT_IVS_TAILDETECTION(尾随事件)对应的规则配置
typedef struct tagCFG_TAIL_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int					nDistance;												// 间距,尾随配置中使用,范围[0, 500]
	int					nSensitivity;											// 灵敏度,,范围[1, 10]
	BYTE                byReserved[512]; 										// 保留字节
} CFG_TAIL_INFO;

// 事件类型EVENT_IVS_RIOTERDETECTION(聚众事件)对应的规则配置
typedef struct tagCFG_RIOTER_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bAreaPercent;                                           // 聚集所占区域面积百分比
	BYTE                bSensitivity;                                           // 灵敏度,取值1-10,值越小灵敏度越低,对应人群的密集程度越高(取代bAreaPercent)
	BYTE                bReserved;												// 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int                 nReportInterval;                                        // 报告时间间隔,单位秒 [1,600] 默认0表示不重复报警
	CFG_POLYGON         stuMinDetectRect[2];                                    // 最小聚集区域矩形框,分别对应矩形框的左上和右下点,矩形框的实际面积表示触发报警的最小人群聚集面积
	int					nTrackDuration;											// 跟踪持续时间,0秒:一直跟踪,1~300秒:跟踪持续时间
	BYTE				bTrackEnable;											// 触发跟踪使能
	int					nRioterThreshold;										// 聚集人数阀值, 聚集人数超过此值,开始报警
} CFG_RIOTER_INFO;

// 事件类型EVENT_IVS_DENSITYDETECTION(人群密度检测事件)对应的规则配置
typedef struct tagCFG_DENSITYDETECTION_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                byUnit;													// 密度检测数值单位GB30147需要	0 密度等级,划分为四个,很稀疏,稀疏,密集,很密集。1 密度百分比
	BYTE                bSensitivity;                                           // 灵敏度(取值1-10,值越小灵敏度越低,对应人群的密集程度越高)
	BYTE                byMinAlarmDensity;                                      // 最小报警密度	取值1-100,报警门限值百分比
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
 	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
} CFG_DENSITYDETECTION_INFO;


// 事件类型EVENT_IVS_FIGHTDETECTION(斗殴事件)对应的规则配置
typedef struct tagCFG_FIGHT_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nSensitivity;											// 灵敏度, 1-10
    CFG_EM_DETECTMODE_T emDetectMode;                                           // 检测模式

} CFG_FIGHT_INFO;

// 事件类型EVENT_IVS_FIREDETECTION(火警事件/火焰检测)对应的规则配置
typedef struct tagCFG_FIRE_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nSensitivity;											// 灵敏度 1~10
} CFG_FIRE_INFO;

// 事件类型EVENT_IVS_ELECTROSPARKDETECTION(电火花事件)对应的规则配置
typedef struct tagCFG_ELECTROSPARK_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	
} CFG_ELECTROSPARK_INFO;

// 事件类型 EVENT_IVS_SMOKEDETECTION (烟雾报警事件)对应的规则配置
typedef struct tagCFG_SMOKE_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nSensitivity;											// 灵敏度 1~10
} CFG_SMOKE_INFO;

// 事件类型EVENT_IVS_FLOWSTAT(流量统计事件)对应的规则配置
typedef struct tagCFG_FLOWSTAT_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nUpperLimit;											// 流量上限	单位:个/秒,1~65535
	int					nPeriod;												// 上报周期	单位:秒,1~65535
	int					nDetectLinePoint;										// 检测线顶点数
	CFG_POLYLINE		stuDetectLine[MAX_POLYLINE_NUM];						// 检测线
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
		
} CFG_FLOWSTAT_INFO;

enum NET_NUMBERSTAT_TYPE
{
	NET_EM_NUMSTAT_TYPE_REGION,                  // "Region" 区域类型
		NET_EM_NUMSTAT_TYPE_ENTRANCE,            // "Entrance" 出入口类型
		NET_EM_NUMSTAT_TYPE_OTHER,               // other
};
// 事件类型EVENT_IVS_NUMBERSTAT(数量统计事件)对应的规则配置
typedef struct tagCFG_NUMBERSTAT_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nUpperLimit;											// 数量上限 单位:个,1~65535
	int					nPeriod;												// 上报周期	单位:秒,1~65535
	int					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	NET_NUMBERSTAT_TYPE emType;                                                 // 数量统计类型	支持:"Region" 区域类型 "Entrance" 出入口类型
	CFG_POLYGON         stDirection[2];                                         // 正常运动方向, 按照此方向行驶是正向,反过来是逆行	只对出入口类型有效。第一个点是起点,第二个点是终点,点的坐标归一化到[0,8191]区间。
    int                 nRecordInterval;                                        // 记录周期,单位:分钟,1~10
	int				nEnterThreshold;										// 进入数报警阈值,0表示不报警
	int				nExitThreshold;											// 离开数报警阈值,0表示不报警
	int				nInsideThreshold;										// 滞留数报警阈值,0表示不报警
    UINT                nPlanID;                                                // 计划ID,仅球机有效,从1开始
	UINT				nAreaID;												// 区域ID,一个预置点可以对应多个区域
	int					nMaxDetectLineNum;							            // 检测线实际最大个数
	CFG_POLYLINE		stuDetectLine[MAX_POLYLINE_NUM];			            // 离开检测线坐标
    UINT                nStayMinDuration;                                        // 停留超时时间

    CFG_ALARM_MSG_HANDLE    stuRemoteEventHandler;                                        // 前端视频分析联动
    CFG_TIME_SECTION        stuRemoteTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 前端视频分析联动响应时间段
} CFG_NUMBERSTAT_INFO;

//事件类型EVENT_IVS_RETROGRADEDETECTION(人员逆行事件)对应的规则配置
typedef struct tagCFG_RETROGRADEDETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bSensitivity;                                           // 灵敏度, 取值1-10,值越小灵敏度越低
	BYTE                bReserved[2];                                           // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	int                 nDirectionPoint;                                        // 正常行驶方向顶点数
	CFG_POLYGON			stuDirection[MAX_POLYLINE_NUM];					      	// 正常行驶方向, 按照此方向行驶是正向,反过来是逆行(第一个点是起点,第二个点是终点,点的坐标归一化到[0,8191]区间)
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	int                 nTriggerPosition;                                       // 触发报警位置数
	BYTE                bTriggerPosition[8];                                    // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	
} CFG_RETROGRADEDETECTION_INFO;

//事件类型EVENT_IVS_ABNORMALRUNDETECTION(异常奔跑事件)对应的规则配置
typedef struct tagCFG_ABNORMALRUNDETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bSensitivity;                                           // 灵敏度, 取值1-10,值越小灵敏度越低
	BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved[1];                                           // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	int                 nTriggerPosition;                                       // 触发报警位置数
	BYTE                bTriggerPosition[8];                                    // 触发报警位置,0-目标外接框中心, 1-目标外接框左端中心, 2-目标外接框顶端中心, 3-目标外接框右端中心, 4-目标外接框底端中心
	int                 nDetectType;                                            // 检测类型数
	BYTE                bDetectType[4];                                         // 检测类型,0-快速奔跑, 1-突然加速, 2-突然减速
	int                 nTriggerSpeed;                                          // 触发速度,大于该速度报警	单位:km/h
	int                 nMinDuration;                                           // 最短持续时间	单位:秒,0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	
} CFG_ABNORMALRUNDETECTION_INFO;

//事件类型EVENT_IVS_VIDEOABNORMALDETECTION(视频异常)对应的规则配置
typedef struct tagCFG_VIDEOABNORMALDETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bSensitivity;                                           // 灵敏度, 取值1-10,值越小灵敏度越低(只对检测类型视频遮挡,过亮,过暗,场景变化有效)
	BYTE                bReserved[2];                                           // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int                 nDetectType;                                            // 检测类型数
	BYTE                bDetectType[MAX_ABNORMAL_DETECT_TYPE];                  // 检测类型,0-视频丢失, 1-视频遮挡, 2-画面冻结, 3-过亮, 4-过暗, 5-场景变化
                                                                                // 6-条纹检测 , 7-噪声检测 , 8-偏色检测 , 9-视频模糊检测 , 10-对比度异常检测
                                                                                // 11-视频运动 , 12-视频闪烁 , 13-视频颜色 , 14-虚焦检测 , 15-过曝检测, 16-场景巨变
	int					nMinDuration;											// 最短持续时间	单位:秒,0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区
	int					nThresholdNum;											// 异常检测阈值数量
	int					nThreshold[MAX_ABNORMAL_THRESHOLD_LEN];					// 异常检测阈值,范围1~100
	
} CFG_VIDEOABNORMALDETECTION_INFO;

// 事件类型EVENT_IVS_FACERECOGNITION(人脸识别)对应的规则配置
typedef struct tagCFG_FACERECOGNITION_INFO
{
	// 信息
	char				 szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				 bRuleEnable;											// 规则使能
	BYTE                 bReserved[2];                                          // 保留字段 
	int					 nObjectTypeNum;										// 相应物体类型个数
	char				 szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                  nPtzPresetId;											// 云台预置点编号	0~65535
	BYTE                 bySimilarity;                                          // 相似度,必须大于该相识度才报告(1~100)
	BYTE                 byAccuracy;                                            // 识别精度(取值1~10,随着值增大,检测精度提高,检测速度下降。最小值为1 表示检测速度优先,最大值为10表示检测精度优先)
	BYTE                 byMode;                                                // 对比模式, 0-正常, 1-指定人脸区域组合, 2-智能模式(算法根据人脸各个区域情况自动选取组合)
	BYTE                 byImportantRank;                                       // 查询重要等级大于等于此等级的人员(1~10,数值越高越重要)
	int                  nAreaNum;                                              // 区域数  
	BYTE                 byAreas[8];                                            // 人脸区域组合, 0-眉毛,1-眼睛,2-鼻子,3-嘴巴,4-脸颊(此参数在对比模式为1时有效)
	int                  nMaxCandidate;                                         // 报告的最大匹配图片个数
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	 stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];		// 事件响应时间段
	
} CFG_FACERECOGNITION_INFO;


// 事件类型EVENT_IVS_TRAFFICCONTROL(交通管制事件)对应的规则配置
typedef struct tagCFG_TRAFFICCONTROL_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];									// 规则名称,不同规则不能重名
	bool				bRuleEnable;												// 规则使能
	BYTE                bReserved[3];                                               // 保留字段
	int					nObjectTypeNum;												// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];			// 相应物体类型列表
	int					nDetectLinePoint;							            	// 检测线顶点数
	CFG_POLYLINE		stuDetectLine[MAX_POLYLINE_NUM];			            	// 检测线
	CFG_TIME_SECTION	stuTimeSchedule[WEEK_DAY_NUM][MAX_REC_TSECT];           	// 限行时间表
	int					nVehicleSizeNum;							            	// 车辆大小类型个数
	char				szVehicleSizeList[MAX_VEHICLE_SIZE_LIST][MAX_NAME_LEN];		// 车辆大小类型列表"Light-duty":小型车;	"Medium":中型车; "Oversize":大型车
	int					nPlateTypeNum;												// 车牌类型个数
	char				szPlateTypesList[MAX_PLATE_TYPE_LIST][MAX_NAME_LEN];		// 车牌类型列表"Unknown" 未知; "Normal" 蓝牌黑牌; "Yellow" 黄牌; "DoubleYellow" 双层黄尾牌
																					// "Police" 警牌; "Armed" 武警牌; "Military" 部队号牌; "DoubleMilitary" 部队双层
																					// "SAR" 港澳特区号牌; "Trainning" 教练车号牌; "Personal" 个性号牌; "Agri" 农用牌
																					// "Embassy" 使馆号牌; "Moto" 摩托车号牌; "Tractor" 拖拉机号牌; "Other" 其他号牌
																					// "Civilaviation"民航号牌,"Black"黑牌,"PureNewEnergyMicroCar"纯电动新能源小车
																					// "MixedNewEnergyMicroCar,"混合新能源小车,"PureNewEnergyLargeCar",纯电动新能源大车
																					// "MixedNewEnergyLargeCar"混合新能源大车
	int					nPlateNumber;												// 车牌单双号 0:单号; 1:双号; 2:单双号;	
	CFG_ALARM_MSG_HANDLE stuEventHandler;											// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];				// 事件响应时间段
	int                 nPtzPresetId;												// 云台预置点编号	0~65535
} CFG_TRAFFICCONTROL_INFO;

// 事件类型EVENT_IVS_TRAFFICACCIDENT(交通事故事件)对应的规则配置
typedef struct tagCFG_TRAACCIDENT_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	
} CFG_TRAACCIDENT_INFO;

// 事件类型EVENT_IVS_TRAFFICJUNCTION(交通路口老规则事件)对应的规则配置
typedef struct tagCFG_TRAJUNCTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];				// 规则名称,不同规则不能重名
	bool				bRuleEnable;							// 规则使能
	int					nObjectTypeNum;							// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nLane;									// 车道编号
	int                 nDirection;                             // 车道方向(车开往的方向),0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北
	int					nPreLinePoint;							// 前置检测线顶点数
	CFG_POLYLINE		stuPreLine[MAX_POLYLINE_NUM];			// 前置检测线
	int					nMiddleLinePoint;						// 中间检测线顶点数
	CFG_POLYLINE		stuMiddleLine[MAX_POLYLINE_NUM];		// 中间检测线
	int					nPostLinePoint;							// 后置检测线顶点数
	CFG_POLYLINE		stuPostLine[MAX_POLYLINE_NUM];			// 后置检测线
	int                 nFlowLimit;                             // 流量上限,单位辆/秒
	int                 nSpeedDownLimit;                        // 速度下限,若为0,则表示不设下限,km/h
	int                 nSpeedUpLimit;                          // 速度上限,若为0,则表示不设上限,km/h
	int                 nTriggerModeNum;                        // 触发模式个数
	char                szTriggerMode[MAX_TRIGGERMODE_NUM][MAX_NAME_LEN];  // 触发模式,"Passing" : 穿过路口(以中间检测线为准,只能单独使用),"RunRedLight" : 闯红灯
																// "Overline":压白车道线,"OverYellowLine": 压黄线, "Retrograde":逆行
																// "TurnLeft":违章左转, "TurnRight":违章右转, "CrossLane":违章变道
																// "U-Turn" 违章掉头, "Parking":违章停车, "WaitingArea" 违章进入待行区
																// "OverSpeed": 超速,"UnderSpeed":欠速,"Overflow" : 流量过大
																// "Human":行人,"NoMotor":非机动车

	CFG_ALARM_MSG_HANDLE stuEventHandler;							// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	BOOL                bMaskRetrograde;         	             // 是否屏蔽逆行,即将逆行当作正常处理
			
} CFG_TRAJUNCTION_INFO;

// 事件类型EVENT_IVS_TRAFFICGATE(交通卡口老规则事件)对应的规则配置
typedef struct tagCFG_TRAFFICGATE_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nLane;													// 车道编号
	int					nDetectLinePoint1;										// 检测线(虚拟线圈)1顶点数
	CFG_POLYLINE		stuDetectLine1[MAX_POLYLINE_NUM];						// 检测线1
	int					nDetectLinePoint2;										// 检测线(虚拟线圈)2顶点数
	CFG_POLYLINE		stuDetectLine2[MAX_POLYLINE_NUM];						// 检测线2
	int					nLeftLinePoint;											// 左车道线顶点数
	CFG_POLYLINE		stuLeftLine[MAX_POLYLINE_NUM];							// 左车道线
	int					nRightLinePoint;										// 右车道线顶点数
	CFG_POLYLINE		stuRightLine[MAX_POLYLINE_NUM];							// 右车道线
	int					nSpeedWeight;											// 速度权重系数(最终车速=测量车速*权重系数)
	double				MetricDistance;											// 两条检测线实际距离,单位:米
	int					nSpeedUpperLimit;										// 速度上限 0表示不限上限 单位:km/h
	int					nSpeedLowerLimit;										// 速度下限 0表示不限下限 单位:km/h
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nDirection;                                             // 车道方向(车开往的方向),0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北
	int                 nTriggerModeNum;                                        // 触发模式个数
	char                szTriggerMode[MAX_TRIGGERMODE_NUM][MAX_NAME_LEN];       // 触发模式,"OverLine":压线,"Retrograde":逆行,"OverSpeed":超速,"UnderSpeed":欠速
	                                                                            // "Passing":穿过路口,属正常抓拍, "WrongRunningRoute":有车占道(单独使用),"YellowVehicleInRoute": 黄牌占道
	                                                                            // "OverYellowLine":压黄线
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	BOOL                bMaskRetrograde;         	             // 是否屏蔽逆行,即将逆行当作正常处理
} CFG_TRAFFICGATE_INFO;

// 事件类型EVENT_IVS_TRAFFIC_TOLLGATE(交通卡口新规则事件)对应的规则配置
typedef struct tagCFG_TRAFFICTOLLGATE_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int					nLane;													// 车道编号
	int					nDetectLinePoint;										// 卡口报警线顶点数
	CFG_POLYLINE		stuDetectLine[MAX_POLYLINE_NUM];						// 卡口报警线

	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
} CFG_TRAFFICTOLLGATE_INFO;

// 事件类型EVENT_IVS_FACEDETECT(人脸检测事件)对应的规则配置
typedef struct tagCFG_FACEDETECT_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区
	int                 nHumanFaceTypeCount;                                    // 触发事件的人脸类型个数
	char                szHumanFaceType[MAX_HUMANFACE_LIST_SIZE][MAX_NAME_LEN]; // 触发事件的人脸类型
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int                 nMinDuration;                                           // 最短触发时间,单位:秒 
    int                 nSensitivity;                                           // 灵敏度,范围[1,10],灵敏度越高越容易检测
    int                 nReportInterval;                                        // 重复报警间隔,单位:秒,[0,600](等于0表示不重复报警)
    BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	BOOL				bFeatureEnable;											// 是否开启人脸属性识别, IPC增加
																				//(通过FaceDetection能力中的FeatureSupport来确定该配置是否可以设置)
	int					nFaceFeatureNum;										// 需要检测的人脸属性个数
	EM_FACEFEATURE_TYPE emFaceFeatureType[MAX_FEATURE_LIST_SIZE];				// 需检测的人脸属性, 通过FaceDetection能力来获取支持哪些人脸属性
}CFG_FACEDETECT_INFO;

// 联动的布控组
typedef struct tagCFG_LINKGROUP_INFO
{
	BOOL 					bEnable;							// 布控组是否启用
	char					szGroupID[MAX_GROUP_ID_LEN];		// 布控组ID
	BYTE                	bySimilarity;                       // 相似度阈值
	char					szColorName[MAX_COLOR_NAME_LEN];	// 事件触发时绘制人脸框的颜色
	BOOL 					bShowTitle;							// 事件触发时规则框上是否显示报警标题
	BOOL 					bShowPlate;							// 事件触发时是否显示比对面板
	BYTE					bReserved[511];						// 保留字段	
	CFG_ALARM_MSG_HANDLE 	stuEventHandler;					// 报警联动
}CFG_LINKGROUP_INFO;

// 陌生人布防模式
typedef struct tagCFG_STRANGERMODE_INFO
{
	BOOL 					bEnable;							// 模式是否启用
	char					szColorHex[MAX_COLOR_HEX_LEN];		// 事件触发时绘制人脸框的颜色
	BOOL 					bShowTitle;							// 事件触发时规则框上是否显示报警标题
	BOOL 					bShowPlate;							// 事件触发时是否显示比对面板
	BYTE					bReserved[512];						// 保留字段	
	CFG_ALARM_MSG_HANDLE 	stuEventHandler;					// 报警联动
}CFG_STRANGERMODE_INFO;

// 事件类型EVENT_IVS_FACEANALYSIS(人脸分析事件) 对应的规则配置
typedef struct tagCFG_FACEANALYSIS_INFO
{
	char					szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool					bRuleEnable;											// 规则使能
	BYTE                	bReserved[3];                                           // 保留字段
	int						nObjectTypeNum;											// 相应物体类型个数
	char					szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int						nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON				stuDetectRegion[MAX_POLYGON_NUM];						// 检测区
	CFG_ALARM_MSG_HANDLE 	stuEventHandler;										// 报警联动
	CFG_TIME_SECTION		stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 	nPtzPresetId;											// 云台预置点编号	0~65535
	int                 	nSensitivity;                                           // 灵敏度,范围[1,10],灵敏度越高越容易检测
	int						nLinkGroupNum;											// 联动布控个数 
	CFG_LINKGROUP_INFO		stuLinkGroup[MAX_LINK_GROUP_NUM];						// 联动的布控组
	CFG_STRANGERMODE_INFO	stuStrangerMode;										// 陌生人布防模式
    BOOL                	bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO 	stuSizeFileter;                                         // 规则特定的尺寸过滤器
	BOOL					bFeatureEnable;											// 是否开启人脸属性识别, IPC增加
	int						nFaceFeatureNum;										// 需要检测的人脸属性个数
	EM_FACEFEATURE_TYPE 	emFaceFeatureType[MAX_FEATURE_LIST_SIZE];				// 需检测的人脸属性
	BOOL					bFeatureFilter;											// 在人脸属性开启前提下,如果人脸图像质量太差,是否不上报属性
																					// true-图像太差不上报属性 false-图像很差也上报属性(可能会非常不准,影响用户体验)
	int						nMinQuality;											// 人脸图片质量阈值,和bFeatureFilter一起使用 范围[1,100]
} CFG_FACEANALYSIS_INFO;

// 事件类型EVENT_IVSS_FACEATTRIBUTE(IVSS人脸检测事件) 对应的规则配置
typedef struct tagCFG_FACEATTRIBUTE_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int                 nMinDuration;                                           // 最短触发时间,单位:秒 
	int                 nTriggerTargetsNumber;                                  // 触发报警的人脸个数
	int                 nSensitivity;                                           // 灵敏度,范围[1,10],灵敏度越高越容易检测(默认值5)
    int                 nReportInterval;                                        // 重复报警间隔,单位:秒,[0,600] 等于0表示不重复报警(默认值30)
    BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	int					nFaceFeatureNum;										// 需要检测的人脸属性个数
	EM_FACEFEATURE_TYPE emFaceFeatureType[MAX_FEATURE_LIST_SIZE];				// 需检测的人脸属性
	BOOL                bFeatureFilter;                                         // 在人脸属性开启前提下,如果人脸图像质量太差,是否不上报属性
	int                 nMinQuality;                                            // 人脸图片质量阈值,和bFeatureFilter一起使用 范围[0,100]
} CFG_FACEATTRIBUTE_INFO;

// 事件类型EVENT_IVSS_FACECOMPARE(IVSS人脸识别事件) 对应的规则配置
typedef struct tagCFG_FACECOMPARE_INFO
{
	char					szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool					bRuleEnable;											// 规则使能
	BYTE                	bReserved[3];                                           // 保留字段
	int						nObjectTypeNum;											// 相应物体类型个数
	char					szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE 	stuEventHandler;										// 报警联动
	CFG_TIME_SECTION		stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 	nPtzPresetId;											// 云台预置点编号	0~65535
	int						nLinkGroupNum;											// 联动布控个数 
	CFG_LINKGROUP_INFO		stuLinkGroup[MAX_LINK_GROUP_NUM];						// 联动的布控组
	CFG_STRANGERMODE_INFO	stuStrangerMode;										// 陌生人布防模式
} CFG_FACECOMPARE_INFO;


//事件类型EVENT_IVS_TRAFFIC_NOPASSING(交通违章-禁止通行事件)对应的数据块描述信息
typedef struct tagCFG_NOPASSING_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
}CFG_NOPASSING_INFO;

// 事件类型EVENT_IVS_TRAFFICJAM (交通拥堵事件)对应的规则配置
typedef struct tagCFG_TRAFFICJAM_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
    BYTE                bJamLineMargin;                                         // 占线限值,拥堵长度占车道比例限值,0-100
    BYTE                bSensitivity;                                           // 灵敏度,值越小灵敏度越低。取值1-10
	BYTE                bReserved[1];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nLane;													// 车道编号
	int                 nDelayTime;                                             // 检测到报警发生到开始上报的时间, 单位:秒,范围1~65535
	int                 nIntervalTime;                                          // 报警间隔时间, 单位:秒,范围1~65535
	int                 nReportTimes;                                           // 上报次数, 1~255
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int		            nDetectRegionPoint;                                     // 检测区顶点数
	CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区域
}CFG_TRAFFICJAM_INFO;

// 事件类型EVENT_IVS_TRAFFIC_NONMOTORINMOTORROUTE(非机动车占机动车车道配置)对应的规则配置
typedef struct tagCFG_TRAFFIC_NONMOTORINMOTORROUTE_INFO
{
	// 信息
    char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    bool                bRuleEnable;                                            // 规则使能
    bool                bSnapMotorcycle;                                        // 是否抓拍摩托车,同一个视频通道部分规则需要抓拍摩托车,其它不需要,所以使用规则
    BYTE                bReserved[2];                                           // 保留字段
    int                 nObjectTypeNum;	                                        // 相应物体类型个数
    char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
    int                 nLaneNumber;                                            // 车道编号
    CFG_POLYGON         stDirection[2];                                         // 正常行驶方向, 按照此方向行驶是正向,反过来是逆行	第一个点是起点,第二个点是终点,点的坐标归一化到[0,8192)区间。
    CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
    CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
} CFG_TRAFFIC_NONMOTORINMOTORROUTE_INFO;

// 事件类型EVENT_IVS_TRAFFIC_NONMOTOR_OVERLOAD(非机动车超载配置)对应的规则配置
typedef struct tagCFG_TRAFFIC_NONMOTOR_OVERLOAD_INFO
{
	// 信息
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	bool                bRuleEnable;                                            // 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int                 nObjectTypeNum;	                                        // 相应物体类型个数
	char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

	int                 nLaneNumber;                                            // 车道编号
}CFG_TRAFFIC_NONMOTOR_OVERLOAD_INFO;

// 事件类型EVENT_IVS_TRAFFIC_NONMOTOR_HOLDUMBRELLA(非机动车装载伞具事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO
{
	// 信息
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	bool                bRuleEnable;                                            // 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int                 nObjectTypeNum;	                                        // 相应物体类型个数
	char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

	int                 nLaneNumber;                                            // 车道编号
	int                 nSnapInterval;                                          // 抓拍间隔时间
	BOOL                bSnapMotorcycle;                                        // 是否抓拍摩托车
}CFG_TRAFFIC_NONMOTOR_HOLDUMBRELLA_INFO;

// 事件类型EVENT_IVS_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT (非机动车未戴安全帽配置)对应的规则配置
typedef struct tagCFG_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO
{
	// 信息
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	bool                bRuleEnable;                                            // 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int                 nObjectTypeNum;	                                        // 相应物体类型个数
	char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

	int                 nLaneNumber;                                            // 车道编号
}CFG_TRAFFIC_NONMOTOR_WITHOUTSAFEHAT_INFO;

// 事件类型EVENT_IVS_CITY_MOTORPARKING (城市机动车违停事件)对应的规则配置
typedef struct tagCFG_CITY_MOTORPARKING_INFO
{
	// 信息
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	BOOL                bRuleEnable;                                            // 规则使能
	int                 nObjectTypeNum;	                                        // 相应物体类型个数
	char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

	int                 nDetectRegionPoint;                                     // 检测区顶点数
	CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区

	int                 nMinDuration;											// 最短持续时间,单位:秒 范围[0, 3600]
	int                 nTrackDuration;											// 跟踪持续时间 范围[0, 3600]
}CFG_CITY_MOTORPARKING_INFO;

// 事件类型EVENT_IVS_CITY_NONMOTORPARKING (城市非机动车违停事件)对应的规则配置
typedef struct tagCFG_CITY_NONMOTORPARKING_INFO
{
	// 信息
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	BOOL                bRuleEnable;                                            // 规则使能
	int                 nObjectTypeNum;	                                        // 相应物体类型个数
	char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

	int                 nDetectRegionPoint;                                     // 检测区顶点数
	CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区

	int                 nAlarmNum;												// 报警数量阈值,单位:辆 范围[1, 100]
	int                 nMinDuration;											// 最短持续时间,单位:秒 范围[0, 3600]
	int                 nTrackDuration;											// 跟踪持续时间 范围[0, 3600]
}CFG_CITY_NONMOTORPARKING_INFO;

// 事件类型EVENT_IVS_FLOWBUSINESS (流动摊贩事件)对应的规则配置
typedef struct tagCFG_FLOWBUSINESS_INFO
{
	// 信息
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	BOOL                bRuleEnable;                                            // 规则使能
	int                 nObjectTypeNum;	                                        // 相应物体类型个数
	char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

	int                 nDetectRegionPoint;                                     // 检测区顶点数
	CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区

	int                 nSensitivity;											// 灵敏度,值越小灵敏度越低 范围[1, 10]
	int                 nMinDuration;											// 最短持续时间,单位:秒 范围[0, 3600]
	int                 nTrackDuration;											// 跟踪持续时间 范围[0, 3600]
}CFG_FLOWBUSINESS_INFO;

// 事件类型EVENT_IVS_SHOPPRESENCE (商铺占道事件)对应的规则配置
typedef struct tagCFG_SHOPPRESENCE_INFO
{
	// 信息
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	BOOL                bRuleEnable;                                            // 规则使能
	int                 nObjectTypeNum;	                                        // 相应物体类型个数
	char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

	int                 nDetectRegionPoint;                                     // 检测区顶点数
	CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区

	int                 nSensitivity;											// 灵敏度,值越小灵敏度越低 范围[1, 10]
	int                 nMinDuration;											// 最短持续时间,单位:秒 范围[0, 3600]
	int                 nTrackDuration;											// 跟踪持续时间 范围[0, 3600]
	char				szShopAddress[256];										// 商铺地址
}CFG_SHOPPRESENCE_INFO;

// 事件类型EVENT_IVS_TRAFFIC_IDLE (交通空闲事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_IDLE_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
    BYTE                bJamLineMargin;                                         // 占线限值,拥堵长度占车道比例限值,0-100
	BYTE                bReserved[2];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nLane;													// 车道编号
	int                 nDelayTime;                                             // 检测到报警发生到开始上报的时间, 单位:秒,范围1~65535
	int                 nIntervalTime;                                          // 报警间隔时间, 单位:秒,范围1~65535
	int                 nReportTimes;                                           // 上报次数, 1~255
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int		            nDetectRegionPoint;                                     // 检测区顶点数
	CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区域
}CFG_TRAFFIC_IDLE_INFO;


// 事件类型EVENT_IVS_TRAFFIC_PARKING (交通违章停车事件) / EVENT_IVS_TRAFFIC_PARKING_B (B类交通违章停车事件) /
// EVENT_IVS_TRAFFIC_PARKING_C (C类交通违章停车事件) / EVENT_IVS_TRAFFIC_PARKING_D (D类交通违章停车事件)/
// EVENT_IVS_TRAFFIC_PARKING_MANUAL(手动取证交通违法)对应的规则配置
typedef struct tagCFG_TRAFFIC_PARKING_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
    bool                bTrackEnable;                                           // 触发跟踪使能,对绊线,入侵的物体跟踪
    BYTE                bSensitivity;                                           // 灵敏度, 取值1-10,值越小灵敏度越低(只对检测类型视频遮挡,过亮,过暗,场景变化有效)
	BYTE                bParkingNumThreshold;                                   // 停车数阈值,画面中停车数量大于此值时不报警,取值1-128
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nLane;													// 车道编号
	int                 nDelayTime;                                             // 检测到报警发生到开始上报的时间, 单位:秒,范围1~65535
	int                 nParkingAllowedTime;                                    // 允许停车时间, 单位:秒,范围1~65535
	int                 nReportTimes;                                           // 上报次数, 1~255
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
		
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
}CFG_TRAFFIC_PARKING_INFO;

// 事件类型EVENT_IVS_TRAFFIC_PARKING_SPACEDETECTION(违停相机定制单球车位检测)规则配置
typedef struct tagCFG_TRAFFIC_PARKING_SPACEDETECTION_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	bool                bTrackEnable;                                           // 触发跟踪使能,对绊线,入侵的物体跟踪
	BYTE                bSensitivity;                                           // 灵敏度, 取值1-10,值越小灵敏度越低(只对检测类型视频遮挡,过亮,过暗,场景变化有效)
	BYTE                bReserved;                                              // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nLane;													// 车道编号
	int                 nDelayTime;                                             // 检测到报警发生到开始上报的时间, 单位:秒,范围1~65535
	int                 nParkingAllowedTime;                                    // 允许停车时间, 单位:秒,范围1~65535
	int                 nReportTimes;                                           // 上报次数, 1~255
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
}CFG_TRAFFIC_PARKING_SPACEDETECTION_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_RUNREDLIGHT (交通违章-闯红灯事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_RUNREDLIGHT_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nLane;													// 车道编号
	int                 nDirection;                                             // 车道方向(车开往的方向),0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北
	int					nPreLinePoint;							                // 前置检测线顶点数
	CFG_POLYLINE		stuPreLine[MAX_POLYLINE_NUM];			                // 前置检测线
	int					nMiddleLinePoint;						                // 中间检测线顶点数
	CFG_POLYLINE		stuMiddleLine[MAX_POLYLINE_NUM];		                // 中间检测线
	int					nPostLinePoint;							                // 后置检测线顶点数
	CFG_POLYLINE		stuPostLine[MAX_POLYLINE_NUM];			                // 后置检测线
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	
}CFG_TRAFFIC_RUNREDLIGHT_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_PEDESTRAINRUNREDLIGHT  (交通违章-行人闯红灯事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bReserved[3];                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    int					nLane;													// 车道编号
    int                 nDirection;                                             // 车道方向(车开往的方向),0-北 1-东北 2-东 3-东南 4-南 5-西南 6-西 7-西北
    int					nPreLinePoint;							                // 前置检测线顶点数
    CFG_POLYLINE		stuPreLine[MAX_POLYLINE_NUM];			                // 前置检测线
    int					nMiddleLinePoint;						                // 中间检测线顶点数
    CFG_POLYLINE		stuMiddleLine[MAX_POLYLINE_NUM];		                // 中间检测线
    int					nPostLinePoint;							                // 后置检测线顶点数
    CFG_POLYLINE		stuPostLine[MAX_POLYLINE_NUM];			                // 后置检测线
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
}CFG_TRAFFIC_PEDESTRAINRUNREDLIGHT_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_WRONGROUTE (交通违章-不按车道行驶事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_WRONGROUTE_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bSensitivity;                                           // 灵敏度,取值1-10,数值越大代表灵敏度越高
    bool                bTrackEnable;                                           // 触发跟踪使能,对绊线,入侵的物体跟踪
    BYTE                bReserved;                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    int					nLane;													// 车道编号 
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
    
    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    int                 nDirectionLinPoint;                                     // 正常行驶方向顶点数
    CFG_POLYLINE		stuDirectionLine[MAX_POLYLINE_NUM];						// 正常行驶方向,第一个点是起点,最后一个点是终点
	
}CFG_TRAFFIC_WRONGROUTE_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_CROSSLANE (交通违章-违章变道)对应的规则配置
typedef struct tagCFG_TRAFFIC_CROSSLANE_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bSensitivity;                                           // 灵敏度,取值1-10,数值越大代表灵敏度越高
    BYTE                bReserved[2];                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    int					nLane;													// 车道编号 
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
    
    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    int                 nDirectionLinPoint;                                     // 正常行驶方向顶点数
    CFG_POLYLINE		stuDirectionLine[MAX_POLYLINE_NUM];						// 正常行驶方向,第一个点是起点,最后一个点是终点
	
}CFG_TRAFFIC_CROSSLANE_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_OVERLINE (交通违章-压车道线)对应的规则配置
typedef struct tagCFG_TRAFFIC_OVERLINE_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bSensitivity;                                           // 灵敏度,取值1-10,数值越大代表灵敏度越高
    BYTE                bReserved[2];                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    int					nLane;													// 车道编号 
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
    
    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    int                 nDirectionLinPoint;                                     // 正常行驶方向顶点数
    CFG_POLYLINE		stuDirectionLine[MAX_POLYLINE_NUM];						// 正常行驶方向,第一个点是起点,最后一个点是终点

	
}CFG_TRAFFIC_OVERLINE_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_OVERYELLOWLINE (交通违章-压黄线)对应的规则配置
typedef struct tagCFG_TRAFFIC_OVERYELLOWLINE_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nLane;													// 车道编号
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域

}CFG_TRAFFIC_OVERYELLOWLINE_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_RETROGRADE (交通违章-逆行事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_RETROGRADE_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
    bool                bTrackEnable;                                           // 触发跟踪使能,对绊线,入侵的物体跟踪
	BYTE                bReserved[2];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nLane;													// 车道编号
	BOOL                bLegal;                                                 // TRUE: 逆行合法;FALSE:逆行不合法
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	int                 nDirectionLinPoint;                                     // 正常行驶方向顶点数
	CFG_POLYLINE		stuDirectionLine[MAX_POLYLINE_NUM];						// 正常行驶方向,第一个点是起点,最后一个点是终点
	int					nMinDuration;											// 最短触发时间	单位:秒
}CFG_TRAFFIC_RETROGRADE_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_TURNLEFT (交通违章-违章左转事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_TURNLEFT_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bSensitivity;                                           // 灵敏度,取值1-10,数值越大代表灵敏度越高
    BYTE                bReserved[2];                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    int					nLane;													// 车道编号 
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
    
    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    int                 nDirectionLinPoint;                                     // 正常行驶方向顶点数
    CFG_POLYLINE		stuDirectionLine[MAX_POLYLINE_NUM];						// 正常行驶方向,第一个点是起点,最后一个点是终点

	
}CFG_TRAFFIC_TURNLEFT_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_TURNRIGHT (交通违章-违章右转)对应的规则配置
typedef struct tagCFG_TRAFFIC_TURNRIGHT_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bSensitivity;                                           // 灵敏度,取值1-10,数值越大代表灵敏度越高
    BYTE                bReserved[2];                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    int					nLane;													// 车道编号 
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
    
    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    int                 nDirectionLinPoint;                                     // 正常行驶方向顶点数
    CFG_POLYLINE		stuDirectionLine[MAX_POLYLINE_NUM];						// 正常行驶方向,第一个点是起点,最后一个点是终点
}CFG_TRAFFIC_TURNRIGHT_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_UTURN (交通违章-违章掉头)对应的规则配置
typedef struct tagCFG_TRAFFIC_UTURN_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
    bool                bTrackEnable;                                           // 触发跟踪使能,对绊线、入侵的物体跟踪
	BYTE                bReserved[2];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nLane;													// 车道编号
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段


	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	int					nTriggerAngle;											// 掉头触发角度,取值范围(90,180),目标调头前后的运动夹角
	BOOL                abSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	
}CFG_TRAFFIC_UTURN_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_OVERSPEED (交通违章-超速)对应的规则配置
typedef struct tagCFG_TRAFFIC_OVERSPEED_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nLane;													// 车道编号
	int                 nSpeedUpperLimit;                                       // 速度上限
	int                 nSpeedLowerLimit;                                       // 速度下限
	int					nMinDuration;											// 最短触发时间	单位:秒
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	
}CFG_TRAFFIC_OVERSPEED_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_UNDERSPEED (交通违章-欠速)对应的规则配置
typedef struct tagCFG_TRAFFIC_UNDERSPEED_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nLane;													// 车道编号
	int                 nSpeedUpperLimit;                                       // 速度上限
	int                 nSpeedLowerLimit;                                       // 速度下限
	int					nMinDuration;											// 最短触发时间	单位:秒
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	
}CFG_TRAFFIC_UNDERSPEED_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_YELLOWPLATEINLANE (交通违章-黄牌车占道事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_YELLOWPLATEINLANE_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bSensitivity;                                           // 灵敏度,取值1-10,数值越大代表灵敏度越高
    BYTE                bReserved[2];                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    int					nLane;													// 车道编号 
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
    
    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    int                 nDirectionLinPoint;                                     // 正常行驶方向顶点数
    CFG_POLYLINE		stuDirectionLine[MAX_POLYLINE_NUM];						// 正常行驶方向,第一个点是起点,最后一个点是终点

}CFG_TRAFFIC_YELLOWPLATEINLANE_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_VEHICLEINROUTE (交通违章-有车占道事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_VEHICLEINROUTE_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bSensitivity;                                           // 灵敏度,取值1-10,数值越大代表灵敏度越高
    BYTE                bReserved[2];                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    int					nLane;													// 车道编号 
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
    
    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    int                 nDirectionLinPoint;                                     // 正常行驶方向顶点数
    CFG_POLYLINE		stuDirectionLine[MAX_POLYLINE_NUM];						// 正常行驶方向,第一个点是起点,最后一个点是终点
	
}CFG_TRAFFIC_VEHICLEINROUTE_INFO;

// 事件来源
typedef enum tagEM_CFG_EVENT_ORIGIN
{
	EM_CFG_EVENT_ORIGIN_UNKNOWN = -1,											// 未知
	EM_CFG_EVENT_ORIGIN_VIDEO,													// 视频检测
	EM_CFG_EVENT_ORIGIN_NET,													// 网络 
}EM_CFG_EVENT_ORIGIN;

// 事件类型 EVENT_IVS_TRAFFIC_JAM_FORBID_INTO (车辆拥堵禁入事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_JAM_FORBID_INTO_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	int					nLaneNumber;											// 车道编号 
	int					nTriggerTime;											// 前面的车停了多少时间才算拥堵,后面的车上来就算拥堵禁入,单位秒 
	int					nFollowTime;											// 跟随时间阈值,跟随前车进入路口的不算拥堵禁入违章,单位秒 
	int					nDelayTime;												// 绿灯灭后延时抓拍第三张时间,单位秒
	EM_CFG_EVENT_ORIGIN	emEventOrigin;											// 拥堵事件来源 
	int                 nJamForbidIntoLineCount;								// 拥堵事件边界线点数
	CFG_POLYLINE        stuJamForbidIntoLine[MAX_POLYLINE_NUM];					// 拥堵事件边界线, 坐标归一化到[0,8192)区间
}CFG_TRAFFIC_JAM_FORBID_INTO_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_JAM_STOP_ON_ZEBRACROSSING (拥堵滞留斑马线事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_JAM_STOP_ON_ZEBRACROSSING_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	int					nLaneNumber;											// 车道编号 
	int					nJamStopDelay;											// 拥堵滞留延时时间
	int					nSnapInterval;											// 抓拍间隔时间
	BOOL				bSnapMotorcycle;										// 是否抓拍摩托车

	int					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区
}CFG_TRAFFIC_JAM_STOP_ON_ZEBRACROSSING_INFO;

// 

// 事件类型 EVENT_IVS_PRISONERRISEDETECTION (看守所起身检测事件)对应的规则配置
typedef struct tagCFG_PRISONRISEDETECTION_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	int					nDetectRegionPoint;										// 警戒区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM10];						// 警戒区
	CFG_POLYGON			stDirection[2];											// 人睡觉方向	第一个点是起点,第二个点是终点,点的坐标归一化到[0,8191]区间
	CFG_POLYGON			stBedMiddleLine[2];										// 床铺中线	点的坐标归一化到[0,8191]区间
	int					nBedSide;												// 床铺的方位	1左边铺位,2右边铺位
	int					nMinDuration;											// 最短触发时间	单位:秒
	int					nReportInterval;										// 重复报警间隔	单位:秒
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
}CFG_PRISONRISEDETECTION_INFO;

// 最大的配置的个数
#define MAX_AREACONFIG_NUMBER	8

// 触发报警的行人方向
typedef enum tagEM_CFG_PEOPLE_DIRECTION
{
	EM_CFG_PEOPLE_DIRECTION_LEFT = 1,											// 左
	EM_CFG_PEOPLE_DIRECTION_RIGHT = 2,											// 右
}EM_CFG_PEOPLE_DIRECTION;

// 检测区域配置
typedef struct tagCFG_AREACONFIG
{
	int					nPeopleTargets;											// 触发报警的行人个数
	UINT				nPeopleDirectionMask;									// 触发报警的行人方向, EM_CFG_PEOPLE_DIRECTION 的 位集合,例:nPeopleDirectionMask |= EM_CFG_PEOPLE_DIRECTION_LEFT;
	BYTE                byReserved[1024];                                       // 保留字段
}CFG_AREACONFIG;

// 事件类型 EVENT_IVS_TRAFFIC_PEDESTRAINPRIORITY (行人礼让检测/斑马线行人优先事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_PEDESTRAINPRIORITY_INFO
{
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	bool                bRuleEnable;                                            // 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int                 nObjectTypeNum;                                         // 相应物体类型个数
	char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	int                 nLane;                                                  // 车道编号
	CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

	// 
	int					nAreaConfigNum;											// 规则对应的检测区域配置的个数
	CFG_AREACONFIG		stuAreaConfigList[MAX_AREACONFIG_NUMBER];				// 规则对应的检测区域配置
	int					nSpeedLimit;											// 车速阀值
	int					nFollowTime;											// 跟随时间,单位秒
	BOOL				bSnapMotorcycle;										// 是否抓拍摩托车,同一个视频通道部分规则需要抓拍摩托车,其它不需要,所以使用规则
	int					nAlarmDistanceRate;										// 触发机动车不礼让行人的检测距离
	int					nSnapPicHavePriCategory;								// 违章抓拍的图片是否要有行人或非机动车的掩码值每个bit位含义,1:抓拍图片要有行人;0:抓拍图片可以无行人
																				// bit0:第一张图片是否需要有行人
																				// bit1:第二张图片是否需要有行人
																				// bit2:第三张图片是否需要有行人
}CFG_TRAFFIC_PEDESTRAINPRIORITY_INFO;

// 事件类型 EVENT_IVS_QUEUEDETECTION (排队检测事件)对应的规则配置
typedef struct tagCFG_IVS_QUEUEDETECTION_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	
	CFG_POLYLINE		stuDetectLine[2];						                // 警戒线
	int                 nOccupyLineMargin;                                      // 占线限值,队伍长度占线比例限值
	int                 nTriggerTime;                                           // 单位秒,排队检测报警时间,排队超过阈值的状态维持了"排队检测报警时间"以后报警
	int					nMaxDetectRegionNum;									// 最大检测区域的个数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	int					nThreshold;												// 异常人数阈值
	int					nDetectType;											// 人数异常检测方式
	int					nPlanID;												// 计划ID
	int					nAreaID;												// 区域ID(一个预置点可以对应多个区域ID)
	BOOL				bStayDetectEnable;										// 滞留检测报警使能,对应报警为 EVENT_IVS_STAYDETECTION
	int 				nStayMinDuration;										// 最短滞留持续时间,单位秒[1, 1800], 开启滞留检测报警时需设置
	BOOL				bManNumAlarmEnable;										// 人数异常报警使能, 默认为TRUE。对应报警为 EVENT_IVS_MAN_NUM_DETECTION
}CFG_IVS_QUEUEDETECTION_INFO;

// 事件类型 EVENT_IVS_CLIMBDETECTION (攀高检测事件)对应的规则配置
typedef struct tagCFG_IVS_CLIMBDETECTION_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	int                 nDetectLine;                                            // 检测线顶点个数
	CFG_POLYLINE        stuDetectLine[MAX_POLYLINE_NUM];                        // 对应的检测折线,[0,8192)
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
}CFG_IVS_CLIMBDETECTION_INFO;

// 事件类型 EVENT_IVS_LEAVEDETECTION (离岗检测事件)对应的规则配置
enum CFG_EM_LEAVEDETECTION_MODE{
	CFG_EM_LEAVEDETECTION_MODE_NONE,
	CFG_EM_LEAVEDETECTION_MODE_PATROL,    // 巡逻模式
	CFG_EM_LEAVEDETECTION_MODE_SENTRY,    // 岗哨模式
	CFG_EM_LEAVEDETECTION_MODE_ERR=255
};

typedef enum EM_CFG_LEAVEDETECTION_TRIGGERMODE{
    CFG_LEAVEDETECTION_TRIGGERMODE_UNKNOWN,         //未知
    CFG_LEAVEDETECTION_TRIGGERMODE_NOPERSON,        //无人
    CFG_LEAVEDETECTION_TRIGGERMODE_LEAVE,           //离开
    CFG_LEAVEDETECTION_TRIGGERMODE_STATIC,          //静止(睡岗) 
    CFG_LEAVEDETECTION_TRIGGERMODE_OUTPERSONLIMIT,  // 不在允许值岗人数范围内(值岗人数异常)
}CFG_LEAVEDETECTION_TRIGGERMODE;

typedef struct tagCFG_IVS_LEAVEDETECTION_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	CFG_EM_LEAVEDETECTION_MODE emMode;                                          // 检测模式
	unsigned int        nMinDuration;                                           // 最短持续时间,单位:秒
	unsigned int        nReportInterval;                                        // 报告时间间隔,单位:秒
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器

	int					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区
    int                 nTriggerModeCount;										// 触发模式数组有效个数
    CFG_LEAVEDETECTION_TRIGGERMODE  emTriggerMode[MAX_TRIGGER_MODE_NUMBER];                              // 触发模式数组
    int                 anPersonLimit[2];                                       // 允许值岗人数范围, 不在此范围内时报警,数组第一个元素为最小值,第二个元素为最大值,最大值为0时表示不限制上限
}CFG_IVS_LEAVEDETECTION_INFO;

//事件类型	EVENT_IVS_TRAFFIC_PARKINGONYELLOWBOX(黄网格线抓拍事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_PARKINGONYELLOWBOX_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	int					nLane;													// 车道号
	int					nInterval1;												// 第二张和第一张的延时时间,单位秒
	int					nInterval2;												// 第三张和第二张的延时时间,单位秒
	int					nFollowTime;											// 跟随时间,如果一辆车与前一辆车进入黄网格的时间差小于此值,就认为是跟车进入,跟车进入情况下如果停车则不算违章

}CFG_TRAFFIC_PARKINGONYELLOWBOX_INFO;

//事件类型	EVENT_IVS_TRAFFIC_PARKINGSPACEPARKING(车位有车事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_PARKINGSPACEPARKING_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	
	int					nLane;													// 车位号
	int                 nDelayTime;                                             // 检测到报警发生到开始上报的时间, 单位:秒,范围1~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
    int                 nPlateSensitivity;                                      // 有牌检测灵敏度(控制抓拍)
    int                 nNoPlateSensitivity;                                    // 无牌检测灵敏度(控制抓拍)
    int                 nLightPlateSensitivity;                                 // 有牌检测灵敏度(控制车位状态灯)
    int                 nLightNoPlateSensitivity;                               // 无牌检测灵敏度(控制车位状态灯)
}CFG_TRAFFIC_PARKINGSPACEPARKING_INFO;

//事件类型	EVENT_IVS_TRAFFIC_PARKINGSPACENOPARKING(车位无车事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_PARKINGSPACENOPARKING_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	
	int					nLane;													// 车位号
	int                 nDelayTime;                                             // 检测到报警发生到开始上报的时间, 单位:秒,范围1~65535
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
    int                 nPlateSensitivity;                                      // 有牌检测灵敏度(控制抓拍)
    int                 nNoPlateSensitivity;                                    // 无牌检测灵敏度(控制抓拍)
    int                 nLightPlateSensitivity;                                 // 有牌检测灵敏度(控制车位状态灯)
    int                 nLightNoPlateSensitivity;                               // 无牌检测灵敏度(控制车位状态灯)
}CFG_TRAFFIC_PARKINGSPACENOPARKING_INFO;

//事件类型EVENT_IVS_TRAFFIC_PARKINGSPACEOVERLINE(车位压线事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_PARKINGSPACEOVERLINE_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	bool                bAllowParkingSpaceParkingSnap;                          // 是否允许车位有车上传抓拍,true-表示允许(默认不允许)
	BYTE                byReserved[2];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	
	int					nLane;													// 车位号
}CFG_TRAFFIC_PARKINGSPACEOVERLINE_INFO;

//事件类型 EVENT_IVS_TRAFFIC_PEDESTRAIN (交通行人事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_PEDESTRAIN_INFO
{
    char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    bool                bRuleEnable;                                            // 规则使能
    BYTE                bReserved[3];                                           // 保留字段
    int                 nObjectTypeNum;                                         // 相应物体类型个数
    char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    int                 nPtzPresetId;                                           // 云台预置点编号 0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
    CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    
    int                 nLane;                                                  // 车道编号
    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    int                 nMinDuration;                                           // 最短触发时间,单位:秒
}CFG_TRAFFIC_PEDESTRAIN_INFO;

//事件类型 EVENT_IVS_TRAFFIC_THROW (交通抛洒事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_THROW_INFO
{
    char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    bool                bRuleEnable;                                            // 规则使能
    BYTE                bReserved[3];                                           // 保留字段
    int                 nObjectTypeNum;                                         // 相应物体类型个数
    char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    int                 nPtzPresetId;                                           // 云台预置点编号 0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
    CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    
    int                 nLane;                                                  // 车道编号
    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    int                 nMinDuration;                                           // 最短触发时间,单位:秒
}CFG_TRAFFIC_THROW_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_BACKING (违章倒车事件)对应的规则配置
typedef struct tagCFG_TRAFFIC_BACKING_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bSensitivity;                                           // 灵敏度,取值1-10,数值越大代表灵敏度越高
    bool                bTrackEnable;                                           // 触发跟踪使能,对绊线,入侵的物体跟踪
    BYTE                bReserved;                                              // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    int					nLane;													// 车道编号 
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    int                 nDirectionLinPoint;                                     // 正常行驶方向顶点数
    CFG_POLYLINE		stuDirectionLine[MAX_POLYLINE_NUM];						// 正常行驶方向,第一个点是起点,最后一个点是终点

}CFG_TRAFFIC_BACKING_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_VEHICLEINBUSROUTE(占用公交车道事件)对应规则配置
typedef struct tagCFG_TRAFFIC_VEHICLEINBUSROUTE_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                byCarType;                                              // 抓拍车辆类型,0:非黄牌车 1:蓝牌车 2:非大客车
    BYTE                bSensitivity;                                           // 灵敏度,取值1-10,数值越大代表灵敏度越高
    BYTE                bEnclosure;                                             // 电子围栏功能, 1-打开 0-关闭
    bool                bTrackEnable;                                           // 触发跟踪使能,对绊线,入侵的物体跟踪
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    int					nLane;													// 车道编号 
    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
}CFG_TRAFFIC_VEHICLEINBUSROUTE_INFO;

typedef enum tagCFG_SAFEBELT_SEAT
{
    CSS_UNKNOW ,
    CSS_MAIN_SEAT     ,         //主驾驶座位
    CSS_SLAVE_SEAT    ,         //副驾驶座位
}CFG_SAFEBELT_SEAT;

// 事件类型 EVENT_IVS_TRAFFIC_WITHOUT_SAFEBELT(交通未系安全带事件)对应规则配置
typedef struct tagCFG_TRAFFIC_WITHOUT_SAFEBELT
{
    char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    bool                bRuleEnable;                                            // 规则使能
    BYTE                bReserved[3];                                           // 保留字段
    int                 nObjectTypeNum;                                         // 相应物体类型个数
    char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    int                 nPtzPresetId;                                           // 云台预置点编号 0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
    CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

    int                 nLane;                                                  // 车道编号
    int                 nSeatNum;                                               // 获取的座位数
    CFG_SAFEBELT_SEAT   emSnapSeat[MAX_SEAT_NUM];                               // 需要抓拍的驾驶座座位
}CFG_TRAFFIC_WITHOUT_SAFEBELT;

// 事件类型 EVENT_IVS_GETOUTBEDDETECTION(看守所下床事件)对应规则配置
typedef struct tagCFG_IVS_GETOUTBEDDETECTION_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bReserved[3];                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

    int					nDetectRegionPoint;										// 检测区顶点数
    CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区,多边形类型,多边形中每个顶点的坐标归一化到[0,8192)区间
    unsigned int        nMinDuration;                                           // 最短持续时间,单位:秒
    unsigned int        nReportInterval;                                        // 报告时间间隔,单位:秒
    int                 nAssisDectLinePointNum;                                 // 辅助检测线点数
    CFG_POLYLINE        stuAssisDectLine[MAX_POLYLINE_NUM];                     // 辅助检测线
}CFG_IVS_GETOUTBEDDETECTION_INFO;

// 事件类型 EVENT_IVS_PATROLDETECTION(巡逻检测事件)对应规则配置
typedef struct tagCFG_IVS_PATROLDETECTION_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bReserved[3];                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
    
    int					nDetectRegionPoint;										// 警戒区顶点数
    CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 警戒区,多边形类型,多边形中每个顶点的坐标归一化到[0,8192)区间
    unsigned int        nMinDuration;                                           // 最短持续时间,单位:秒
    unsigned int        nReportInterval;                                        // 报告时间间隔,单位:秒
    unsigned int        nPatrolTime;                                            // 巡逻时间,单位:秒
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
}CFG_IVS_PATROLDETECTION_INFO;

// 事件类型 EVENT_IVS_ONDUTYDETECTION(站岗检测事件)对应规则配置
typedef struct tagCFG_IVS_ONDUTYDETECTION_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bReserved[3];                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
    
    int					nDetectRegionPoint;										// 警戒区顶点数
    CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 警戒区,多边形类型,多边形中每个顶点的坐标归一化到[0,8192)区间
    unsigned int        nMinDuration;                                           // 最短持续时间,单位:秒
    unsigned int        nReportInterval;                                        // 报告时间间隔,单位:秒
    int                 nTemplateRegionPointPairNum;                            // 模板区域信息点对个数
    CFG_POLYGON         stuTemplateRegion[MAX_TEMPLATEREGION_NUM][POINT_PAIR_NUM];  // 模板区域信息,个数对应于模板图片个数
}CFG_IVS_ONDUTYDETECTION_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_DRIVER_SMOKING(驾驶员抽烟事件)对应规则配置
typedef struct tagCFG_TRAFFIC_DRIVER_SMOKING
{
    char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    bool                bRuleEnable;                                            // 规则使能
    BYTE                bReserved[3];                                           // 保留字段
    int                 nObjectTypeNum;                                         // 相应物体类型个数
    char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    int                 nPtzPresetId;                                           // 云台预置点编号 0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
    CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    
    int                 nLane;                                                  // 车道编号
}CFG_TRAFFIC_DRIVER_SMOKING;

// 事件类型 EVNET_IVS_TRAFFIC_DRIVER_CALLING(驾驶员打电话事件)对应规则配置
typedef struct tagCFG_TRAFFIC_DRIVER_CALLING
{
    char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    bool                bRuleEnable;                                            // 规则使能
    BYTE                bReserved[3];                                           // 保留字段
    int                 nObjectTypeNum;                                         // 相应物体类型个数
    char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    int                 nPtzPresetId;                                           // 云台预置点编号 0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
    CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    
    int                 nLane;                                                  // 车道编号
}CFG_TRAFFIC_DRIVER_CALLING;

// 事件类型 EVENT_IVS_TRAFFIC_PASSNOTINORDER(未按规定依次通行)对应规则配置
typedef struct tagCFG_TRAFFIC_PASSNOTINORDER_INFO
{
    char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    bool                bRuleEnable;                                            // 规则使能
    BYTE                bReserved[3];                                           // 保留字段
    int                 nObjectTypeNum;                                         // 相应物体类型个数
    char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    int                 nPtzPresetId;                                           // 云台预置点编号 0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
    CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    
    int                 nLane;                                                  // 车道编号
    int                 nFollowTime;                                            // 跟随时间阈值,高于此值不算违章 单位:毫秒(ms)
}CFG_TRAFFIC_PASSNOTINORDER_INFO;

// 事件类型 EVENT_IVS_HEATMAP/EVENT_IVS_HEATMAP_PLAN(热度图/热度图计划)对应规则配置
typedef struct tagCFG_IVS_HEATMAP_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bReserved[3];                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
    
    int					nDetectRegionPoint;										// 警戒区顶点数
    CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 警戒区,多边形类型,多边形中每个顶点的坐标归一化到[0,8192)区间
    BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
    UINT                nPlanID;                                                // 计划ID,仅球机有效,从1开始 (热度图统一之前使用,统一之后使用nPtzPresetId)
}CFG_IVS_HEATMAP_INFO;

typedef struct tagCFG_REGION_FILTER
{
	CFG_RECT			stuMaxRect;												// 最大人头区域 
	CFG_RECT			stuMinRect;												// 最小人头区域
}CFG_REGION_FILTER;

// 事件类型 EVENT_IVS_STANDUPDETECTION 人起立检测 对应规则配置
typedef struct tagCFG_IVS_STANDUPDETECTION_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    bool				bRuleEnable;											// 规则使能
    BYTE                bReserved[3];                                           // 保留字段
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
									
	CFG_REGION			stuHumanRegion;											// 检测人区域	
	int					nStandUpDirectionNum;									// 起立方向顶点数
	CFG_POLYLINE		stuStandUpDirection[MAX_POLYLINE_NUM];					// 起立方向, 第一个为起点, 第二个为终点, 前两点有效
	CFG_REGION_FILTER	stuRegionFilter;										// 过滤器
}CFG_IVS_STANDUPDETECTION_INFO;

// 事件类型 EVENT_IVS_SHOOTINGSCORERECOGNITION 打靶像机事件 对应规则配置
typedef struct tagCFG_IVS_SHOOTINGSCORERECOGNITION_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	CFG_REGION			stuDetectRegion;										// 检测区域	参见警戒区配置DetectRegion
	int					nRound;													// 计数周期加1后弹孔序号重新从1开始计数
	int					nSensitivity;											// 灵敏度
	int                 nCaliber;											    // 弹孔口径,0:5mm口径, 1:7~8mm口径, 2:9mm口径
}CFG_IVS_SHOOTINGSCORERECOGNITION_INFO;

// 事件类型EVENT_IVS_VEHICLEANALYSE(车辆特征检测分析)对应规则配置
typedef struct tagCFG_IVS_VEHICLEANALYSE_INFO
{
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    bool                bRuleEnable;                                            // 规则使能
	BYTE                bReserved[3];                                           // 保留字段
    int                 nObjectTypeNum;                                         // 相应物体类型个数
    char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;									    // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];		    // 事件响应时间段
	  
	int					nDetectRegionPoint;										// 警戒区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 警戒区
	BOOL                bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO stuSizeFileter;                                         // 规则特定的尺寸过滤器
	
} CFG_IVS_VEHICLEANALYSE_INFO;

// 事件类型EVENT_IVS_LETRACK(简单跟踪事件)对应规则配置
typedef struct tagCFG_IVS_LETRACK_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	BYTE                bReserved[512]; 										// 保留字节
} CFG_IVS_LETRACK_INFO;

// 事件类型EVENT_IVS_MAN_STAND_DETECTION(立体视觉站立事件)
// EVENT_IVS_NEAR_DISTANCE_DETECTION(近距离接触事件)对应的规则配置
typedef struct tagCFG_STEREO_VISION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
    BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved1[3];                                          // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int					nDetectLinePoint;										// 检测区域顶点数
	CFG_POLYLINE		stuDetectLine[MAX_POLYLINE_NUM];						// 检测区域
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域坐标
	int					nThreshold;												// 异常阈值
	int					nDetectType;											// 人数异常检测方式(仅用于区域内人数统计)
																				// 0-小于等于阈值报警 1-大于等于阈值报警
	int					nSensitivity;											// 灵敏度,[0-100]
	int					nMaxHeight;												// 最大检测高度,单位cm
	int 				nMinHeight;												// 最小检测高度,单位cm
	BYTE                bReserved[512]; 										// 保留字节
} CFG_STEREO_VISION_INFO;

// 事件类型EVENT_IVS_MAN_NUM_DETECTION(立体视觉区域内人数统计事件)对应的规则配置
typedef struct tagCFG_IVS_MAN_NUM_DETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
    BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved1[3];                                          // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域坐标
	int					nThreshold;												// 异常人数阈值
	int					nDetectType;											// 人数异常检测方式
																				// 0-小于等于阈值报警 1-大于等于阈值报警
	int					nSensitivity;											// 灵敏度,[1-10]
	int					nMaxHeight;												// 最大检测高度,单位cm
	int 				nMinHeight;												// 最小检测高度,单位cm
	BOOL				bStayDetectEnable;										// 是否开启滞留检测报警功能, 对应报警为StayDetection。
	int 				nStayMinDuration;										// 最短滞留持续时间,单位秒[2, 65535], 开启滞留检测报警时需设置
	BOOL				bManNumAlarmEnable;										// 是否开启人数异常报警功能, 默认为TRUE。对应报警为ManNumDetection
	UINT				nAreaID;												// 区域ID(一个预置点对应多个区域ID)
	UINT				nPlanId;												// 计划ID,范围 1~MaxNumberStatPlan
	BYTE                bReserved[504]; 										// 保留字节
} CFG_IVS_MAN_NUM_DETECTION_INFO;

// 事件类型EVENT_IVS_STEREO_NUMBERSTAT(立体视觉人数统计事件)对应的规则配置
typedef struct tagCFG_IVS_STEREO_NUMBERSTAT_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
    BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved1[3];                                          // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int					nDetectLinePoint;										// 检测线顶点数
	CFG_POLYLINE		stuDetectLine[MAX_POLYLINE_NUM];						// 检测线
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域坐标
	int					nSensitivity;											// 灵敏度, 1-10
	int					nMaxHeight;												// 最大检测高度,单位cm
	int 				nMinHeight;												// 最小检测高度,单位cm
	int					nEnterThreshold;										// 进入人数报警阈值, 0表示不报警
	int					nExitThreshold;											// 离开人数报警阈值, 0表示不报警
	int					nInsideThreshold;										// 滞留人数报警阈值, 0表示不报警
	char				szDirection[CFG_COMMON_STRING_8];						// 检测方向
	BYTE                bReserved[512]; 										// 保留字节
} CFG_IVS_STEREO_NUMBERSTAT_INFO;

// 动作类型
typedef enum tagEM_CFG_ACTION_TYPE
{
    EM_CFG_ACTION_TYPE_UNKNOWN,		        // 未知
    EM_CFG_ACTION_TYPE_DRASTIC_MOTION,		// 剧烈运动
    EM_CFG_ACTION_TYPE_SINGLE_FIGHT,		// 单人打砸
    EM_CFG_ACTION_TYPE_MULTI_FIGHT,		    // 多人打架
}EM_CFG_ACTION_TYPE;

// 事件类型EVENT_IVS_STEREO_FIGHTDETECTION(立体行为分析打架/剧烈运动检测)对应的规则配置
typedef struct tagCFG_IVS_STEREO_FIGHTDETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
    BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved1[3];                                          // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	int					nSensitivity;											// 灵敏度, 1-10, 默认值5
	int					nMaxHeight;												// 最大检测高度,单位cm
	int 				nMinHeight;												// 最小检测高度,单位cm
    EM_CFG_ACTION_TYPE  emActionType;                                           // 动作类型       
	BYTE                bReserved[508]; 										// 保留字节
} CFG_IVS_STEREO_FIGHTDETECTION_INFO;

// 事件类型EVENT_IVS_STEREO_STEREOFALLDETECTION(立体行为分析跌倒检测)对应的规则配置
typedef struct tagCFG_IVS_STEREO_STEREOFALLDETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
    BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved1[3];                                          // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	int					nMinDuration;											// 最短持续时间,单位是秒,低于该时间不报警, 默认1 范围[1,60]
	int					nReportInterval;										// 跌倒重复报警时间,为0不重复报警, 默认0 范围[0,300],单位:秒
	int					nSensitivity;											// 灵敏度, 1-10, 默认值5
	int					nMaxHeight;												// 最大检测高度,单位cm
	int 				nMinHeight;												// 最小检测高度,单位cm
	BYTE                bReserved[512]; 										// 保留字节
} CFG_IVS_STEREO_STEREOFALLDETECTION_INFO;

// 事件类型EVENT_IVS_STEREO_STAYDETECTION(立体行为分析人员滞留检测)对应的规则配置
typedef struct tagCFG_IVS_STEREO_STAYDETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
    BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved1[3];                                          // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	int					nMinDuration;											// 滞留时间阈值,单位是秒,低于该时间不报警, 默认300, 范围[1,3600]
	int					nReportInterval;										// 跌倒重复报警时间,为0不重复报警, 默认0 范围[0,300],单位:秒
	int					nSensitivity;											// 灵敏度, 1-10, 默认5
	int					nMaxHeight;												// 最大检测高度,单位cm
	int 				nMinHeight;												// 最小检测高度,单位cm
	BYTE                bReserved[512]; 										// 保留字节
} CFG_IVS_STEREO_STAYDETECTION_INFO;

// 事件类型EVENT_IVS_STEREO_DISTANCE_DETECTION(立体行为分析间距异常/人员靠近检测)对应的规则配置
typedef struct tagCFG_IVS_STEREO_DISTANCE_DETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
    BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved1[3];                                          // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	int					nMinDuration;											// 最短持续时间, 单位是秒,低于该时间不报警, 默认2, 范围[1,60]
	int					nReportInterval;										// 重复报警时间, 单位:秒, 为0不重复报警, 默认0, 范围[0,300]
	int					nSensitivity;											// 灵敏度, 1-10, 默认5
	int 				nMinHeight;												// 最小检测高度,单位cm
	int					nMaxHeight;												// 最大检测高度,单位cm
	int					nDetectType;											// 检测模式, 取值:0-大于阈值报警 1-小于阈值报警, 默认为 1
	int					nDistance;												// 间距阈值, 单位:cm, 取值10-600,默认值100
	BYTE                bReserved[512]; 										// 保留字节
} CFG_IVS_STEREO_DISTANCE_DETECTION_INFO;

// 事件类型EVENT_IVS_STEREO_MANNUM_DETECTION(立体行为分析人数异常检测)对应的规则配置
typedef struct tagCFG_IVS_STEREO_MANNUM_DETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
    BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved1[3];                                          // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	int					nMinDuration;											// 最短持续时间, 单位是秒,低于该时间不报警, 默认2, 范围[1,60]
	int					nReportInterval;										// 重复报警时间, 单位:秒, 为0不重复报警, 默认0, 范围[0,300]
	int					nSensitivity;											// 灵敏度, 1-10, 默认5
	int 				nMinHeight;												// 最小检测高度,单位cm
	int					nMaxHeight;												// 最大检测高度,单位cm
	int					nDetectType;											// 检测模式, 取值:0-大于阈值报警 1-小于阈值报警 2-不等于阈值报警 3-等于阈值报警
	int					nThresholdPerson;										// 报警人数阈值, 取值0-10,默认值2
	BYTE                bReserved[512]; 										// 保留字节
} CFG_IVS_STEREO_MANNUM_DETECTION_INFO;

// 事件类型EVENT_IVS_ROAD_CONSTRUCTION (道路施工检测事件) 和EVENT_IVS_ROAD_BLOCK(路障检测事件)对应的规则配置
typedef struct tagCFG_ROAD_DETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	int					nMinDuration;											// 最短持续时间, 单位秒, 0-65535
	int					nSensitivity;											// 灵敏度, 1-10
} CFG_ROAD_DETECTION_INFO;

// 人数统计区域
typedef struct tagPEOPLE_STAT_REGIONS_INFO
{
	CFG_POLYGON			stuRegion[MAX_CROWD_DISTRI_MAP_REGION_POINT_NUM];		// 区域检测坐标
	UINT				nPointNum;												// 区域有效点数
	unsigned int		nPeopleNumLimit;										// 区域内人数上限,单位:人
	char				szName[32];												// 区域名称
	UINT				nMinDuration;											// 最短持续时间,单位秒, 范围[1, 600](CrowdPosture大类才支持)
	UINT				nReportInterval;										// 重复报警间隔,单位秒, 范围[0, 3600](CrowdPosture大类才支持)
	UINT				nSensitivity;											// 灵敏度, 范围[1, 10](CrowdPosture大类才支持)
	BYTE				byReserved[336];										// 保留字节
}PEOPLE_STAT_REGIONS_INFO;

// 事件类型EVENT_IVS_CROWDDETECTION(人群密度检测事件)对应的规则配置
typedef struct tagCFG_CROWDDISTRIMAP_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved1[3];                                          // 保留字段 
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	
	BOOL				bGeneralAlarmEnable;									// 全局人群密度超限报警使能
	unsigned int		nCrowdDensity;											// 全局人群密度报警阈值,单位:人/平方米
	BOOL				bRegionAlarmEnable;										// 区域人员数量超限报警使能
	int					nPeopleStatRegionsNum;									// 人数统计区域个数
	PEOPLE_STAT_REGIONS_INFO  stuPeopleStatRegions[MAX_PEOPLESTATREGIONS_NUM];  // 人数统计区域
	BOOL				bSlaveTrackEnable;										// 枪球联动跟踪使能
	UINT				nMinDuration;											// 最短持续时间, 单位秒, 范围[1, 600](CrowdPosture大类才支持)
	UINT				nReportInterval;										// 重复报警间隔, 单位秒, 范围[0, 3600](CrowdPosture大类才支持)
	UINT				nSensitivity;											// 灵敏度, 范围[1, 10](CrowdPosture大类才支持)
	BYTE                bReserved[500]; 										// 保留字节
}CFG_CROWDDISTRIMAP_INFO;

// 事件类型EVENT_IVS_BANNER_DETECTION(拉横幅事件)对应的规则配置
typedef struct tagCFG_BANNER_DETECTION_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	int					nMinDuration;											// 最短持续时间, 单位:秒,范围1-600, 默认30
	int					nReportInterval;										// 重复报警间隔,单位:秒,范围0-600,默认30,为0表示不重复
	int					nSensitivity;											// 检测灵敏度,范围1-10
	BYTE                bReserved[512]; 										// 保留字节
} CFG_BANNER_DETECTION_INFO;

// 事件类型EVENT_IVS_NORMAL_FIGHTDETECTION(普通斗殴事件)对应的规则配置
typedef struct tagCFG_NORMAL_FIGHT_INFO 
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	
	int					nMinDuration;											// 最短持续时间	单位:秒,范围1-600, 默认值30
	int					nDetectRegionPoint;										// 检测区域顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区域
	int					nTrackDuration;											// 持续跟踪时间, 单位:秒, 范围5-300
	int					nSensitivity;											// 灵敏度, 1-10
    CFG_EM_DETECTMODE_T emDetectMode;                                           // 检测模式
    BYTE                bReserved[512]; 										// 保留字节
} CFG_NORMAL_FIGHT_INFO;

// 事件类型EVENT_IVS_ELEVATOR_ABNORMAL(电动扶梯运行异常事件)对应的规则配置
typedef struct tagCFG_ELEVATOR_ABNORMAL_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved1[3];                                          // 保留字段 
	int					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	
	int					nMinDuration;											// 扶梯逆行时间阈值
	int					nReportInterval;										// 扶梯逆行重复报警间隔秒数,为0则不重复报警
	int					nSensitivity;											// 灵敏度, 取值1-10, 默认值6
	CFG_POLYLINE		stuDetectLineBegin;										// 扶梯运行方向的起点
	CFG_POLYLINE		stuDetectLineEnd;										// 扶梯运行方向的终点
	BYTE                bReserved[512]; 										// 保留字节
} CFG_ELEVATOR_ABNORMAL_INFO;

// 非机动车属性类型
typedef enum tagEM_CFG_NONMOTOR_FEATURE
{
    EM_CFG_NONMOTOR_FEATURE_HELMET,                     //头盔
    EM_CFG_NONMOTOR_FEATURE_NUMOFCYCLING,               //车上人数
    EM_CFG_NONMOTOR_FEATURE_NONMOTORCOLOR,              //车身颜色
    EM_CFG_NONMOTOR_FEATURE_SEX,                        //性别
    EM_CFG_NONMOTOR_FEATURE_AGE,                        //年龄
    EM_CFG_NONMOTOR_FEATURE_HAT,                        //帽子
    EM_CFG_NONMOTOR_FEATURE_BAG,                        //背包
    EM_CFG_NONMOTOR_FEATURE_CARRIERBAG,                 //手提包
    EM_CFG_NONMOTOR_FEATURE_UMBRELLA,                   //雨伞
    EM_CFG_NONMOTOR_FEATURE_UPPERBODYCOLOR,             //上衣颜色
    EM_CFG_NONMOTOR_FEATURE_LOWERBODYCOLOR,             //下衣颜色
    EM_CFG_NONMOTOR_FEATURE_UPCLOTHES,                  //上衣类型
    EM_CFG_NONMOTOR_FEATURE_DOWNCLOTHES,                //下衣类型
    EM_CFG_NONMOTOR_FEATURE_CATEGORY,                   //车类型
}EM_CFG_NONMOTOR_FEATURE;

#define	MAX_NONMOTOR_ATTRIBUTE_NUM              32                                      // 支持的非机动车属性个数
// 事件类型EVENT_IVS_NONMOTORDETECT(非机动车事件)对应的规则配置
typedef struct tagCFG_NONMOTORDETECT_INFO
{
    // 通用配置
    char				        szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    BOOL				        bRuleEnable;											// 规则使能
    int					        nObjectTypeNum;											// 相应物体类型个数
    char				        szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                         nPtzPresetId;                                           // 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE        stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
    
    // 基础配置
    int					         nFeatureNum;								            // 支持的非机动车属性个数
    EM_CFG_NONMOTOR_FEATURE      emFeatureList[MAX_NONMOTOR_ATTRIBUTE_NUM];             // 支持的非机动车属性列表
    BYTE                         bReserved[512]; 							            // 保留字节
}CFG_NONMOTORDETECT_INFO;

// 事件类型EVENT_IVS_HUMANTRAIT(人员检测规则)对应的规则配置
typedef struct tagCFG_HUMANTRAIT_INFO
{
    // 通用配置
    char				        szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    BOOL				        bRuleEnable;											// 规则使能
    int					        nObjectTypeNum;											// 相应物体类型个数
    char				        szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                         nPtzPresetId;                                           // 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE        stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

    // 特有配置
    int                             nHumanFaceTypeNum;                                  // 支持的人脸检测类型个数
    EM_VIDEO_ANALYSE_HUMANFACE_TYPE emHumanFaceType[MAX_HUMANFACE_LIST_SIZE];           // 支持的人脸检测类型列表

    int                         nMinDuration;                                           // 最短触发时间,单位:秒
    int                         nTriggerTargets;                                        // 触发报警的人脸个数
    int                         nSensitivity;                                           // 灵敏度,越高越容易检测, 0-10
    BOOL                        bSizeFileter;                                           // 是否使用尺寸过滤器
    CFG_SIZEFILTER_INFO         stuSizeFileter;                                         // 规则特定的尺寸过滤器,提高判断精度
    BOOL                        bFeatureEnable;                                         // 是否开启人脸属性识别
    BOOL                        bFeatureFilter;                                         // 在人脸属性开启前提下,如果人脸图像质量太差,是否不上报属性  true-图像太差不上报属性;false-图像很差也上报属性(可能会非常不准,影响用户体验)
    int                         nMinQuality;                                            // 人脸图片质量阈值,和bFeatureFilter一起使用

    int					        nFaceFeatureNum;										// 需要检测的人脸属性个数
    EM_FACEFEATURE_TYPE         emFaceFeatureType[MAX_FEATURE_LIST_SIZE];				// 需检测的人脸属性

    BYTE                        bReserved[512]; 							            // 保留字节
}CFG_HUMANTRAIT_INFO;

// 事件类型EVENT_IVS_VEHICLEDETECT(机动车事件)对应的规则配置
typedef struct tagCFG_VEHICLEDETECT_INFO
{
    // 通用配置
    char				        szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    BOOL				        bRuleEnable;											// 规则使能
    int					        nObjectTypeNum;											// 相应物体类型个数
    char				        szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                         nPtzPresetId;                                           // 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE        stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

    // 特有配置
    int                         nSnapThreshold;                                         // 车辆抓拍阈值,是一个百分数,表示当车辆检测框高度占画面百分比大于这个阈值时,触发规则进行抓拍。
    BYTE                        bReserved[512]; 							            // 保留字节
}CFG_VEHICLEDETECT_INFO;

// 事件类型EVENT_IVS_TUMBLE_DETECTION(倒地事件)对应的规则配置
typedef struct tagCFG_TUMBLE_DETECTION_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对绊线,入侵规则有效
	BYTE                bReserved1[3];                                          // 保留字段 
	int					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int					nMinDuration;											// 倒地首次报警时间阈值,低于该时间不报警。范围[0,30],单位:秒
	int					nReportInterval;										// 倒地重复报警时间,为0不重复报警。范围[1,300],单位:秒
	int					nMinHeight;												// 最小检测高度。单位:厘米
	int					nMaxHeight;												// 最大检测高度。单位:厘米
	int					nSensitivity;											// 灵敏度,范围[1,10]
	BYTE                byReserved[512]; 										// 保留字节
}CFG_TUMBLE_DETECTION_INFO;

//检测方向
typedef enum tagEM_CFG_DIRECTION_TYPE
{
	EM_CFG_DIRECTION_UNKNOWN = 0,												// 未知
	EM_CFG_DIRECTION_LEFT_TO_RIGHT,												// 从左向右
	EM_CFG_DIRECTION_RIGHT_TO_LEFT,												// 从右向左
	EM_CFG_DIRECTION_BOTH														// 全部
}EM_CFG_DIRECTION_TYPE;

// 事件类型EVENT_IVS_SPILLEDMATERIAL_DETECTION(抛洒物检测事件)对应的规则配置
typedef struct tagCFG_SPILLEDMATERIAL_DETECTION_INFO
{
	char				        szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				        bRuleEnable;											// 规则使能
	int					        nObjectTypeNum;											// 相应物体类型个数
	char				        szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                         nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE        stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	
	int							nDetectLinePointNum;									// 警戒线端点个数
	CFG_POLYLINE				stuDetectLine[MAX_POLYGON_NUM];							// 警戒线。 折线类型,折线中每个端点的坐标归一化到[0,8192)区间。
	EM_CFG_DIRECTION_TYPE		emDirection;											// 检测方向
	CFG_SIZEFILTER_INFO			stuSizeFilter;											// 规则特定的尺寸过滤器,为提高规则判断精度
	BYTE						byReserved[4096]; 										// 保留字节
}CFG_SPILLEDMATERIAL_DETECTION_INFO;

// 事件类型 EVENT_IVS_AIRPLANE_DETECTION (飞机行为检测)对应的规则配置
typedef struct tagCFG_AIRPLANE_DETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	CFG_POLYLINE		stuGuideLine[2];										// 导向线
	CFG_POLYLINE		stuStopLine[10][2];										// 停止线
	int					nStopLineNum;											// 停止线数量
	BYTE				byReserved[4096]; 										// 保留字节
} CFG_AIRPLANE_DETECTION_INFO;

// 事件类型 DEV_EVENT_GENERATEGRAPH_DETECTION_INFO(生成规则图事件)对应的规则配置
typedef struct tagCFG_GENERATEGRAPH_DETECTION_INFO
{
	// 通用配置
	char				        szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				        bRuleEnable;											// 规则使能
	int					        nObjectTypeNum;											// 相应物体类型个数
	char				        szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                         nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE        stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	
	// 特有配置
    UINT						nPlanID;                                                // 计划ID,仅球机有效,从1开始
}CFG_GENERATEGRAPH_DETECTION_INFO;

// 事件类型 EVENT_IVS_FLOATINGOBJECT_DETECTION (漂浮物检测)对应的规则配置
typedef struct tagCFG_FLOATINGOBJECT_DETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	int					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区

	float				fAlarmThreshold;										// 报警阈值。当检测区域内的漂浮物占比超过阈值时则产生报警;单位:%,取值范围(0, 100]
	UINT				nAlarmInterval;											// 报警时间间隔。(单位:秒)。取值范围[60, 86400]
	BOOL				bDataUpload;											// 是否上报实时数据。
	UINT				nUpdateInterval;										// 实时数据上报间隔。(单位:秒)。取值范围[60, 86400]

	BYTE				byReserved[4096]; 										// 保留字节
} CFG_FLOATINGOBJECT_DETECTION_INFO;

// 事件类型 EVENT_IVS_WATER_LEVEL_DETECTION (水位检测事件)对应的规则配置
typedef struct tagCFG_WATER_LEVEL_DETECTION_INFO
{
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	int					nBaseLinePointNum;										// 拼接的水位尺坐标点数
	CFG_POLYGON			stuBaseLine[16];										// 对于拼接的水位尺,需页面上标定出拼接处,若无拼接无需填充
																				// 一般4个点,最大不超过16个点,每个点坐标归一化到[0,8192]区间
	float				fBaseLevel;												// 对应BaseLine标定的实际水位值。(单位:米)
	float				fHighLevel;												// 水位上限报警阈值(单位:米)
	float				fLowLevel;												// 水位下限报警阈值(单位:米)
	UINT				nAlarmInterval;											// 报警时间间隔。(单位:秒)。取值范围[60, 86400]
	BOOL				bDataUpload;											// 是否上报实时数据。
	UINT				nUpdateInterval;										// 实时数据上报间隔。(单位:秒)。取值范围[60, 86400]

	BYTE				byReserved[4096]; 										// 保留字节
} CFG_WATER_LEVEL_DETECTION_INFO;

// 事件类型 EVENT_IVS_PHONECALL_DETECT (打电话报警事件)对应的规则配置
typedef struct tagCFG_PHONECALL_DETECT_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	
	int					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区
	int				    nMinDuration;											// 最短持续时间,单位秒
	int				    nSensitivity;											// 灵敏度
	int				    nReportInterval;										// 报告时间间隔
	BYTE				byReserved[4096]; 										// 保留字节
} CFG_PHONECALL_DETECT_INFO;

// 事件类型 EVENT_IVS_SMOKING_DETECT (吸烟检测报警事件)对应的规则配置
typedef struct tagCFG_SMOKING_DETECT_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;											// 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

	int					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON			stuDetectRegion[MAX_POLYGON_NUM];						// 检测区
	int				    nMinDuration;											// 最短持续时间,单位秒
	int				    nSensitivity;											// 灵敏度
	int				    nReportInterval;										// 报告时间间隔
	BYTE				byReserved[4096]; 										// 保留字节
} CFG_SMOKING_DETECT_INFO;


// 事件类型 EVENT_IVS_HELMET_DETECTION (安全帽检测)对应的规则配置
typedef struct tagCFG_HELMET_DETECTION_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    BOOL				bRuleEnable;											// 规则使能
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区域
    int                 nDectRegionID;                                          // 检测区域编号
    BYTE				byReserved[4096]; 										// 保留字节
}CFG_HELMET_DETECTION_INFO;

//事件类型EVENT_IVS_HOLD_UMBRELLA(违规打伞事件)对应规则配置
typedef struct tagCFG_HOLDUMBRELLA_INFO
{
	// 信息
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	BOOL                bRuleEnable;                                            // 规则使能
	int                 nObjectTypeNum;	                                        // 相应物体类型个数
	char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

	int                 nDetectRegionPoint;                                     // 检测区顶点数
	CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区

	int                 nSensitivity;											// 灵敏度,值越小灵敏度越低 范围[1, 10]
	int                 nMinDuration;											// 最短持续时间,单位:秒 范围[0, 3600]
	int                 nTrackDuration;											// 跟踪持续时间 范围[0, 3600]
	UINT				nDetectRegionNumber;									// 检测区域号
	BYTE				byReserved[4096]; 										// 保留字节
}CFG_HOLDUMBRELLA_INFO;

//事件类型EVENT_IVS_GARBAGE_EXPOSURE(垃圾暴露事件)对应规则配置
typedef struct tagCFG_GARBAGEEXPOSURE_INFO
{
	// 信息
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	BOOL                bRuleEnable;                                            // 规则使能
	int                 nObjectTypeNum;	                                        // 相应物体类型个数
	char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

	int                 nDetectRegionPoint;                                     // 检测区顶点数
	CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区

	int                 nSensitivity;											// 灵敏度,值越小灵敏度越低 范围[1, 10]
	int                 nMinDuration;											// 最短持续时间,单位:秒 范围[0, 3600]
	int                 nTrackDuration;											// 跟踪持续时间 范围[0, 3600]
	UINT				nDetectRegionNumber;									// 检测区域号
	BYTE				byReserved[4096]; 										// 保留字节
}CFG_GARBAGEEXPOSURE_INFO;

//事件类型EVENT_IVS_DUSTBIN_OVER_FLOW(垃圾桶满溢事件)对应规则配置
typedef struct tagCFG_DUSTBIN_OVERFLOW_INFO
{
	// 信息
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	BOOL                bRuleEnable;                                            // 规则使能
	int                 nObjectTypeNum;	                                        // 相应物体类型个数
	char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

	int                 nDetectRegionPoint;                                     // 检测区顶点数
	CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区

	int                 nSensitivity;											// 灵敏度,值越小灵敏度越低 范围[1, 10]
	int                 nMinDuration;											// 最短持续时间,单位:秒 范围[0, 3600]
	int                 nTrackDuration;											// 跟踪持续时间 范围[0, 3600]
	UINT				nDetectRegionNumber;									// 检测区域号
	BYTE				byReserved[4096]; 										// 保留字节
}CFG_DUSTBIN_OVERFLOW_INFO;

//事件类型EVENT_IVS_DOOR_FRONT_DIRTY(门前脏乱事件)对应规则配置
typedef struct tagCFG_DOORFRONT_DIRTY_INFO
{
	// 信息
	char                szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	BOOL                bRuleEnable;                                            // 规则使能
	int                 nObjectTypeNum;	                                        // 相应物体类型个数
	char                szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;                                       // 报警联动
	CFG_TIME_SECTION    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

	int                 nDetectRegionPoint;                                     // 检测区顶点数
	CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区

	int                 nSensitivity;											// 灵敏度,值越小灵敏度越低 范围[1, 10]
	int                 nMinDuration;											// 最短持续时间,单位:秒 范围[0, 3600]
	int                 nTrackDuration;											// 跟踪持续时间 范围[0, 3600]
	char				szShopAddress[256];										// 商铺地址
	UINT				nDetectRegionNumber;									// 检测区域号
	BYTE				byReserved[4096]; 										// 保留字节
}CFG_DOORFRONT_DIRTY_INFO;

//事件类型 EVENT_IVS_STAY_ALONE_DETECTION (单人独处事件)对应的规则配置
typedef struct tagCFG_STAY_ALONE_DETECTION_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    BOOL				bRuleEnable;											// 规则使能
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

    int                                     nDetectRegionNum;                   // 多边形检测区域顶点个数
    CFG_POLYGON                             stuDetectRegion[MAX_POLYGON_NUM];   // 多边形检测区域
    UINT                                    nMinDuration;                       // 最短持续时间, 单位:秒
    UINT                                    nReportInterval;                    // 报告时间间隔, 单位:秒, 为0时表示只报一次
    BOOL                	                bSizeFileter;                       // 规则特定的尺寸过滤器是否有效
    CFG_SIZEFILTER_INFO 	                stuSizeFileter;                     // 规则特定的尺寸过滤器
    BYTE				                    byReserved[4096]; 					// 保留字节
}CFG_STAY_ALONE_DETECTION_INFO;


// 事件类型EVENT_IVS_INTELLI_SHELF(智能补货事件)对应的规则配置
typedef struct tagCFG_INTELLI_SHELF_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    BOOL				bRuleEnable;											// 规则使能
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    unsigned short      nThreshold;                                             // 货架上货物百分比低于阈值则报警, 0表示不报警
    unsigned short      nAreaID;                                                // 区域ID,该通道和PresetID下的某个区域,取值范围1-5
    BYTE				byReserved[4096]; 					                    // 保留字节
}CFG_INTELLI_SHELF_INFO;

// 事件类型EVENT_IVS_SHOP_WINDOW_POST(橱窗张贴事件)对应的规则配置
typedef struct tagCFG_SHOP_WINDOW_POST_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    BOOL				bRuleEnable;											// 规则使能
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区

    unsigned short      nMinDuration;                                           // 最短持续时间,单位:秒0-3600s
    unsigned short      nTrackDuration;                                         // 跟踪持续时间 0-3600s
    int                 nSensitivity;                                           // 灵敏度,值越小灵敏度越低  取值1-10
    UINT                nDetectRegionNumber;                                    // 检测区域号
    char                szShopAddress[256];                                     // 商铺地址
    BYTE				byReserved[1024]; 					                    // 保留字节
}CFG_SHOP_WINDOW_POST_INFO;


// 事件类型EVENT_IVS_SHOP_SIGN_ABNORMAL(店招异常事件)对应的规则配置
typedef struct tagCFG_SHOP_SIGN_ABNORMAL_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    BOOL				bRuleEnable;											// 规则使能
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区

    unsigned short      nMinDuration;                                           // 最短持续时间,单位:秒0-3600s
    unsigned short      nTrackDuration;                                         // 跟踪持续时间 0-3600s
    int                 nSensitivity;                                           // 灵敏度,值越小灵敏度越低  取值1-10
    UINT                nDetectRegionNumber;                                    // 检测区域号
    char                szShopAddress[256];                                     // 商铺地址
    BYTE				byReserved[1024]; 					                    // 保留字节
}CFG_SHOP_SIGN_ABNORMAL_INFO;

// 动物检测规则下的场景类型
typedef enum tagEM_CFG_DETECTION_SCENE_TYPE
{
    EM_CFG_DETECTION_SCENE_TYPE_UNKNOWN,                                           // 未知
    EM_CFG_DETECTION_SCENE_TYPE_ANIMAL,                                            // 兽类场景,可检测动物、人、车
    EM_CFG_DETECTION_SCENE_TYPE_BIRD,                                              // 鸟类场景,可检测鸟类,人、车
} EM_CFG_DETECTION_SCENE_TYPE; 

// 事件类型EVENT_IVS_ANIMAL_DETECTION(动物检测事件)对应的规则配置
typedef struct tagCFG_ANIMAL_DETECTION_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    BOOL				bRuleEnable;											// 规则使能
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    int                 nPtzPresetId;											// 云台预置点编号	0~65535
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段

    int                 nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    int                 nReportInterval;                                        // 报警周期,单位秒,范围(1,3600),默认5s取值范围1-5
    EM_CFG_DETECTION_SCENE_TYPE    emDetectionSceneType;                        // 场景类型
    BYTE				byReserved[1020]; 					                    // 保留字节
}CFG_ANIMAL_DETECTION_INFO;

// 人体测温规则配置
typedef struct tagCFG_ANATOMY_TEMP_DETECT_INFO
{   
	// 信息
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	int                 nPtzPresetId;                                           // 云台预置点编号	0~65535
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	BYTE                bTrackEnable;                                           // 触发跟踪使能,仅对警戒线事件,警戒区规则有效
	int								nDetectRegionPoint;							// 多边形顶点数
	CFG_POLYGON						stuDetectRegion[MAX_POLYGON_NUM];			// 检测区域,多边形
	BOOL							bHighEnable;								// 高温异常报警是否开启
	BOOL							bLowEnable;									// 低温异常报警是否开启
	int								fHighThresholdTemp;							// 高温异常阈值,精度0.1,扩大10倍
	int								fLowThresholdTemp;							// 低温异常阈值,精度0.1,扩大10倍
	BOOL							bIsAutoStudy;								// 是否自动学习
	int								fHighAutoOffset;							// 高温自动学习偏差值,精度0.1,扩大10倍
	int								fLowAutoOffset;								// 低温自动学习偏差值,精度0.1,扩大10倍
	int								nSensitivity;								// 灵敏度 范围[1, 10]
	BOOL							bSizeFileter;								// 规则特定的尺寸过滤器是否有效
	CFG_SIZEFILTER_INFO				stuSizeFileter;								// 规则特定的尺寸过滤器
	BOOL							bIsCaptureNormal;							// 是否上报正常体温信息
	BYTE							byReserved[1024]; 					        // 保留字节
}CFG_ANATOMY_TEMP_DETECT_INFO;

// 事件类型EVENT_IVS_CONGESTION_DETECTION(道路场景车辆拥堵报警事件)对应的规则配置
typedef struct tagCFG_CONGESTION_DETECTION_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int                 nDetectRegionPoint;                                     // 检测区顶点数
	CFG_POLYGON         stuDetectRegion[32];									// 检测区
	BOOL				bCongestionAlarmEnable;									// 拥堵报警使能
	BOOL				bQueueAlarmEnable;										// 排队长度报警使能
	UINT				nCongestionThreshold;									// 拥堵车辆报警阈值,单位辆,取值[10,1000]
	UINT				nQueueLengthThreshold;									// 车辆排队长度报警阈值,单位米,取值[10,1000]
	UINT				nCongestionDuration;									// 最短拥堵时间阈值 单位分钟,取值[1,100]
	UINT				nAlarmInterval;											// 报警时间间隔,取0只报警一次 单位秒,取值[0,65535]
	BYTE				byReserved[4096]; 					                    // 保留字节
}CFG_CONGESTION_DETECTION_INFO;

// 事件类型EVENT_IVS_VEHICLELIMIT_DETECTION(停车场场景下停车车辆上限报警)对应的规则配置
typedef struct tagCFG_VEHICLELIMIT_DETECTION_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	BOOL				bRuleEnable;											// 规则使能
	int					nObjectTypeNum;											// 相应物体类型个数
	char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
	int                 nPtzPresetId;											// 云台预置点编号	0~65535

	int                 nDetectRegionPoint;                                     // 检测区顶点数
	CFG_POLYGON         stuDetectRegion[32];									// 检测区
	BOOL				bLimitAlarmEnable;										// 车辆上限报警使能
	UINT				nVehicleThreshold;										// 车辆上限阈值,单位辆,取值[10,1000]
	UINT				nAlarmInterval;											// 报警时间间隔,取0只报警一次 单位秒,取值[0,65535]
	BYTE				byReserved[4096]; 					                    // 保留字节
}CFG_VEHICLELIMIT_DETECTION_INFO;

// 检测区域信息
typedef struct tagNET_DETECT_REGION_INFO
{
    int                     nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON             stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    BYTE                    byReserved[252];                                        // 保留字节
} NET_DETECT_REGION_INFO;

// 事件类型EVENT_IVS_BREED_DETECTION(智慧养殖检测事件)对应的规则配置
typedef struct tagCFG_BREED_DETECTION_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    int                     nPtzPresetId;                                           // 云台预置点编号   0~65535
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
    CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

    UINT                    nSensitivity;                                           // 灵敏度, 1-10
    UINT                    nMinDuration;                                           // 检测频率,指定时间内检测一次,单位:秒
    float                   fCameraHeight;                                          // 摄像机安装高度,单位:m, 2-5
    float                   fHeightMultiple;                                        // 摄像机安装高度倍数,用于算法修正结果值, 0.5-2
    UINT                    nDetectRegionNum;                                       // 检测区个数
    NET_DETECT_REGION_INFO  stuDetectRegionInfo[8];                                 // 检测区信息
    BOOL                    bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
    CFG_SIZEFILTER_INFO     stuSizeFileter;                                         // 规则特定的尺寸过滤器
    BYTE                    byReserved[4096];                                       // 保留字节
} CFG_BREED_DETECTION_INFO;

// 工装颜色
typedef enum tagEM_WORKCLOTHES_COLOR_TYPE
{
    EM_WORKCLOTHES_COLOR_UNKNOWN,						// 未知
    EM_WORKCLOTHES_COLOR_WHITE,						    // 白色
    EM_WORKCLOTHES_COLOR_ORANGE,						// 橙色
    EM_WORKCLOTHES_COLOR_PINK,							// 粉色
    EM_WORKCLOTHES_COLOR_BLACK,						    // 黑色
    EM_WORKCLOTHES_COLOR_RED,							// 红色
    EM_WORKCLOTHES_COLOR_YELLOW,						// 黄色
    EM_WORKCLOTHES_COLOR_GRAY,							// 灰色
    EM_WORKCLOTHES_COLOR_BLUE,							// 蓝色
    EM_WORKCLOTHES_COLOR_GREEN,						    // 绿色
    EM_WORKCLOTHES_COLOR_PURPLE,						// 紫色
    EM_WORKCLOTHES_COLOR_BROWN,						    // 棕色
}EM_WORKCLOTHES_COLOR_TYPE;

// 安全帽检测
typedef struct tagNET_WORK_HELMET
{
    BOOL                        bEnbale;            // 是否检测安全帽
    BOOL                        bWeared;            // 是否穿戴安全帽
    BOOL                        bDetectColor;       // 是否指定检测颜色
    EM_WORKCLOTHES_COLOR_TYPE   emColor;            // 安全帽颜色,DetectColor为true时有效
    BYTE                        byReserved[64];     // 保留字节
}NET_WORK_HELMET;

// 工作服检测
typedef struct tagNET_WORK_CLOTHES
{

    BOOL                        bEnbale;            // 是否检测工作服
    BOOL                        bWeared;            // 是否穿着工作服
    BOOL                        bDetectColor;       // 是否指定检测颜色
    EM_WORKCLOTHES_COLOR_TYPE   emColor;            // 工作服颜色,DetectColor为true时有效
    BYTE                        byReserved[64];     // 保留字节
}NET_WORK_CLOTHES;

// 马甲检测
typedef struct tagNET_WORK_VEST
{

    BOOL                        bEnbale;            // 是否检测马甲
    BOOL                        bWeared;            // 是否穿着马甲
    BOOL                        bDetectColor;       // 是否指定检测颜色
    EM_WORKCLOTHES_COLOR_TYPE   emColor;            // 马甲颜色,DetectColor为true时有效
    BYTE                        byReserved[64];     // 保留字节
}NET_WORK_VEST;

// 工装特征描述
typedef struct tagNET_WORK_CLOTHES_DESCRIPTION
{
    NET_WORK_HELMET     stuWorkHelmet;                  // 安全帽检测
    NET_WORK_CLOTHES    stuWorkClothes;                 // 工作服检测
    NET_WORK_VEST       stuWorkVest;                    // 马甲检测
    BYTE				bReserved[512];					// 保留字节
}NET_WORK_CLOTHES_DESCRIPTION;

// 事件类型EVENT_IVS_WORKCLOTHES_DETECT(工装(安全帽/工作服等)检测事件)对应的规则配置
typedef struct tagCFG_WORKCLOTHES_DETECT_INFO
{
    char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
    BOOL				bRuleEnable;											// 规则使能
    int					nObjectTypeNum;											// 相应物体类型个数
    char				szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];		// 相应物体类型列表
    CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
    CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
    int                 nPtzPresetId;											// 云台预置点编号	0~65535

    UINT                nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON         stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    UINT                nWorkClothesDescriptionCount;                           // 工装特征描述数组的实际个数
    NET_WORK_CLOTHES_DESCRIPTION  stuWorkClothesDescription[64];                // 工装特征描述,数组最大元素64个。
    BYTE				byReserved[1028]; 					                    // 保留字节
} CFG_WORKCLOTHES_DETECT_INFO;

// 事件类型EVENT_IVS_AIRPORT_VEHICLE_DETECT(机场智能保障车辆检测事件)对应的规则配置
typedef struct tagCFG_AIRPORT_VEHICLE_DETECT_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
	CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
	int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

	UINT					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON				stuDetectRegion[20];									// 检测区

	BYTE                    byReserved[4096];                                       // 保留字节
} CFG_AIRPORT_VEHICLE_DETECT_INFO;

// 事件类型EVENT_IVS_PIG_TEMP_DETECT(智慧养殖猪体温检测)对应的规则配置
typedef struct tagCFG_PIG_TEMPERATURE_DETECT_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    int                     nPtzPresetId;                                           // 云台预置点编号   0~65535
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
    CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

    UINT                    nSensitivity;                                           // 灵敏度, 1-10
    UINT                    nMaxTemperatureNum;                                     // 猪体温按排序最高体温个数
    int                     nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON             stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    BYTE                    byReserved1[4];                                         // 补齐
    BOOL                    bSizeFileter;                                           // 规则特定的尺寸过滤器是否有效
    CFG_SIZEFILTER_INFO     stuSizeFileter;                                         // 规则特定的尺寸过滤器
    BYTE                    byReserved[4096];                                       // 保留字节
} CFG_PIG_TEMPERATURE_DETECT_INFO;

// 本组车位排列方向
typedef enum tagEM_PARKING_DIRECTION
{
    EM_PARKING_DIRECTION_UNKNOWN,             // 未知
    EM_PARKING_DIRECTION_HORIZONTAL,          // 横向
    EM_PARKING_DIRECTION_VERTICAL,            // 纵向
} EM_PARKING_DIRECTION;

// 停车车位信息
typedef struct tagCFG_PARKING_INFO
{
    int                    nID;                                                      // 车位ID,范围:[0,99]
    char                   szName[32];                                               // 车位名称
    int                    nDetectRegionPoint;                                       // 检测区顶点数
    CFG_POLYGON            stuDetectRegion[MAX_POLYGON_NUM];                         // 检测区域
    BYTE                   byReserved[512];                                          // 保留字节
} CFG_PARKING_INFO;

// 室外停车位组信息
typedef struct tagCFG_PARKING_GROUP
{
    EM_PARKING_DIRECTION    emDirection;                                             // 本组车位排列方向
    int                     nParkingNum;                                             // 停车车位个数
    CFG_PARKING_INFO        stuParkingInfo[100];                                     // 停车车位信息
    BYTE                    byReserved[512];                                         // 保留字节
} CFG_PARKING_GROUP;

// 事件类型 EVENT_IVS_PARKING_LOT_STATUS_DETECTION (室外停车位状态检测)对应的规则配置
typedef struct tagCFG_PARKING_LOT_STATUS_DETECTION
{
    char                   szRuleName[MAX_NAME_LEN];                                 // 规则名称,不同规则不能重名
    BOOL                   bRuleEnable;                                              // 规则使能
    int                    nObjectTypeNum;                                           // 相应物体类型个数
    char                   szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];        // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE   stuEventHandler;                                          // 报警联动
    CFG_TIME_SECTION       stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];           // 事件响应时间段
    int                    nPtzPresetId;                                             // 云台预置点编号   0~65535
    
    int                    nReportInterval;                                          // 报告时间间隔, 单位秒,范围:[5,3600]
    int                    nConfirmTime;                                             // 停车状态确定时间阀值, 单位为秒, 范围:[0,20]
    BOOL                   bSubscribePicture;                                        // 是否订阅图片
    int                    nParkingGroupNumber;                                      // 室外停车位组个数
    CFG_PARKING_GROUP      stuParkingGroup[100];                                     // 室外停车位组信息
    BYTE                   byReserved[1024];                                         // 保留字节
} CFG_PARKING_LOT_STATUS_DETECTION;

// 事件类型 EVENT_IVS_DREGS_UNCOVERED (渣土车未遮盖载货检测事件)对应的规则配置
typedef struct tagCFG_DREGS_UNCOVERED_DETECTION
{
    char                   szRuleName[MAX_NAME_LEN];                                 // 规则名称,不同规则不能重名
    BOOL                   bRuleEnable;                                              // 规则使能
    int                    nObjectTypeNum;                                           // 相应物体类型个数
    char                   szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];        // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE   stuEventHandler;                                          // 报警联动
    CFG_TIME_SECTION       stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];           // 事件响应时间段
    int                    nPtzPresetId;                                             // 云台预置点编号   0~65535

    int                    nDetectRegionPoint;                                       // 检测区顶点数
    CFG_POLYGON            stuDetectRegion[MAX_POLYGON_NUM];                         // 检测区域
    BYTE                   byReserved[1020];                                         // 保留字节
} CFG_DREGS_UNCOVERED_DETECTION;


// 事件类型 EVENT_IVS_VEHICLE_COMPARE (前智能检测+后智能比对)对应的规则配置
typedef struct tagCFG_VEHICLE_COMPARE
{
    char                   szRuleName[MAX_NAME_LEN];                                 // 规则名称,不同规则不能重名
    BOOL                   bRuleEnable;                                              // 规则使能
    int                    nObjectTypeNum;                                           // 相应物体类型个数
    char                   szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];        // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE   stuEventHandler;                                          // 报警联动
    CFG_TIME_SECTION       stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];           // 事件响应时间段
    int                    nPtzPresetId;                                             // 云台预置点编号   0~65535
    
    int                    nLinkGroupNum;                                            // 联动布控个数 
    CFG_LINKGROUP_INFO     stuLinkGroup[MAX_LINK_GROUP_NUM];                         // 联动的布控组
    BYTE                   byReserved[1024];                                         // 保留字节
} CFG_VEHICLE_COMPARE;

// 事件类型EVENT_IVS_HIGH_TOSS_DETECT(高空抛物检测)对应的规则配置
typedef struct tagCFG_HIGH_TOSS_DETECT_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    int                     nPtzPresetId;                                           // 云台预置点编号   0~65535
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
    CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段

    UINT					nDetectRegionPoint;										// 检测区顶点数
	CFG_POLYGON				stuDetectRegion[20];									// 检测区
    BYTE                    byReserved[4096];                                       // 保留字节
} CFG_HIGH_TOSS_DETECT_INFO;

// 雷达过滤对象类型
typedef enum tagCFG_EM_RADAR_OBJECT_FILTER_TYPE
{
	CFG_EM_RADAR_OBJECT_FILTER_UNKNOWN,											// 未知
	CFG_EM_RADAR_OBJECT_FILTER_HUMAN,											// 人
	CFG_EM_RADAR_OBJECT_FILTER_VEHICLE											// 车
}CFG_EM_RADAR_OBJECT_FILTER_TYPE;

// 雷达警戒线报警类型
typedef enum tagCFG_EM_RADAR_ALARM_TYPE
{
	CFG_EM_RADAR_ALARM_UNKNOWN,													// 未知
	CFG_EM_RADAR_ALARM_ALARM,													// 报警
	CFG_EM_RADAR_ALARM_WARNING,													// 预警
	CFG_EM_RADAR_ALARM_SHIELD,													// 屏蔽
}CFG_EM_RADAR_ALARM_TYPE;

// 目标限速类型
typedef enum tagCFG_EM_SPEED_LIMIT_TYPE
{
	CFG_EM_SPEED_LIMIT_TYPE_UNKNOWN,											// 未知
	CFG_EM_SPEED_LIMIT_TYPE_BELOW,												// 低于
	CFG_EM_SPEED_LIMIT_TYPE_ABOVE,												// 高于
	CFG_EM_SPEED_LIMIT_TYPE_EQUAL,												// 等于
}CFG_EM_SPEED_LIMIT_TYPE;

// 目标限速过滤器
typedef struct CFG_MOVESPEED_FILTER
{
	BOOL							bEnable;								// 目标限速使能
	CFG_EM_SPEED_LIMIT_TYPE			emSpeedLimitType;						// 目标限速类型
	int								nSpeedValue;							// 目标限速,单位0.01km/h
	BYTE							byReserved[500];						// 预留字段
}CFG_MOVESPEED_FILTER;

// 物体过滤器
typedef struct tagCFG_RADAR_OBJECT_FILTER
{
	CFG_MOVESPEED_FILTER			stuMoveSpeedFilter;						// 目标限速过滤器
	CFG_EM_RADAR_OBJECT_FILTER_TYPE	emTypes[16];							// 雷达对象类型
	int								nTypeNum;								// 对象的个数,nTypeNum为0时表示不过滤
	BYTE							byReserved[992];						// 预留字段
}CFG_RADAR_OBJECT_FILTER;

// 事件类型EVENT_IVS_RADAR_LINE_DETECTION(雷达警戒线/绊线检测事件)对应的规则配置
typedef struct tagCFG_RADAR_LINE_DETECTION_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
	CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
	int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

	int						nDetectLineNum;											// 警戒线端点个数
	CFG_POLYLINE			stuDetectLine[MAX_POLYGON_NUM];							// 警戒线。 折线类型,折线中每个端点的坐标归一化到[0,8192)区间。
	CFG_RADAR_OBJECT_FILTER stuObjectFilter;										// 物体过滤器
	EM_CFG_DIRECTION_TYPE	emDirection;											// 检测方向
	CFG_SIZEFILTER_INFO		stuSizeFilter;											// 规则特定的尺寸过滤器,为提高规则判断精度
	BOOL					bSizeFilterEnable;										// 尺寸过滤器使能
    BYTE                    byReserved[4092];                                       // 保留字节
} CFG_RADAR_LINE_DETECTION_INFO;

// 区域穿越方向
typedef enum tagCFG_EM_CROSS_DIRECTION_TYPE
{
	CFG_EM_CROSS_DIRECTION_UNKNOWN,													// 未知
	CFG_EM_CROSS_DIRECTION_ENTER,													// 进入
	CFG_EM_CROSS_DIRECTION_LEAVE,													// 离开
	CFG_EM_CROSS_DIRECTION_BOTH,													// 进入离开
}CFG_EM_CROSS_DIRECTION_TYPE;

// 事件类型EVENT_IVS_RADAR_REGION_DETECTION(雷达警戒区检测事件)对应的规则配置
typedef struct tagCFG_RADAR_REGION_DETECTION_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
	CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
	int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

	int						nDetectRegionNum;										// 警戒区端点个数
	CFG_POLYLINE			stuDetectRegion[MAX_POLYGON_NUM];						// 警戒区, 多边形类型,多边形中每个端点的坐标归一化到[0,8192)区间。
	CFG_RADAR_OBJECT_FILTER stuObjectFilter;										// 物体过滤器
	CFG_EM_CROSS_DIRECTION_TYPE emDirection;										// 检测方向
	CFG_EM_RADAR_ALARM_TYPE emAlarmType;											// 报警类型
	EM_VIDEO_ANALYSE_ACTION_TYPE  emActions[MAX_ACTION_LIST_SIZE];					// 支持的检测物体动作列表
	int						nActionNum;												// 动作列表元素的个数
	BOOL					bSizeFilterEnable;										// 尺寸过滤器使能
	CFG_SIZEFILTER_INFO		stuSizeFilter;											// 规则特定的尺寸过滤器,为提高规则判断精度
    BYTE                    byReserved[4096];                                       // 保留字节
} CFG_RADAR_REGION_DETECTION_INFO;

// 事件类型EVENT_IVS_SLEEP_DETECT(睡觉检测事件)对应的规则配置
typedef struct tagCFG_SLEEP_DETECT_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
    CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

    UINT                    nMinDuration;                                           // 最短持续时间,单位:秒, 范围(30S—300S)
    UINT                    nReportInterval;                                        // 重复报警间隔,单位:秒, 范围(0S—300S)
    UINT                    nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON             stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区,[0,8192)
    BYTE                    byReserved[4092];                                       // 保留字节
}CFG_SLEEP_DETECT_INFO;

// 事件类型EVENT_IVS_WALK_AROUND_DETECT(随意走动检测事件)对应的规则配置
typedef struct tagDEV_CFG_WALK_AROUND_DETECT_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
    CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

    UINT                    nMinDuration;                                           // 最短持续时间,单位:秒, 范围(10S—60S)
    UINT                    nReportInterval;                                        // 重复报警间隔,单位:秒, 范围(0S—300S)
    UINT                    nSensitivity;                                           // 灵敏度,值越小灵敏度越低。取值1-10
    UINT                    nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON             stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区,[0,8192)
    BYTE                    byReserved[4096];                                       // 保留字节
}CFG_WALK_AROUND_DETECT_INFO;

// 事件类型EVENT_IVS_PLAY_MOBILEPHONE(玩手机事件)对应的规则配置
typedef struct tagCFG_PLAY_MOBILEPHONE_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
    CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

    UINT                    nMinDuration;                                           // 最短持续时间,单位:秒, 范围(10S—3600S)
    UINT                    nReportInterval;                                        // 重复报警间隔,单位:秒, 范围(0S—300S)
    UINT                    nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON             stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区,[0,8192)
    BYTE                    byReserved[4092];                                       // 保留字节

}CFG_PLAY_MOBILEPHONE_INFO;

// 事件类型EVENT_IVS_FINANCE_CONTRABAND_DETECT(智慧金融违规物品检测事件)对应的规则配置
typedef struct tagCFG_FINANCE_CONTRABAND_DETECT_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
    CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

    UINT                    nMinDuration;                                           // 最短持续时间,单位:秒, 范围(5S—60S)
    UINT                    nReportInterval;                                        // 重复报警间隔,单位:秒, 范围(0S—300S)
    UINT                    nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON             stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区,[0,8192)
    UINT                    nHumanDetectRegionNum;                                  // 检测人体区域顶点数
    CFG_POLYGON             stuHumanDetectRegion[MAX_POLYGON_NUM];                  // 检测的人体区域,[0,8192)
    BYTE                    byReserved[4096];                                       // 保留字节
}CFG_FINANCE_CONTRABAND_DETECT_INFO;

// 事件类型EVENT_IVS_FINANCE_CASH_TRANSACTION(智慧金融现金交易检测事件)对应的规则配置
typedef struct tagCFG_FINANCE_CASH_TRANSACTION_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
    CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

    UINT                    nMinDuration;                                           // 最短持续时间,单位:秒, 范围(5S—60S)
    UINT                    nReportInterval;                                        // 重复报警间隔,单位:秒, 范围(0S—300S)
    UINT                    nDetectRegionPoint;                                     // 检测区顶点数
    CFG_POLYGON             stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区
    UINT                    nHumanDetectRegionNum;                                  // 检测人体区域顶点数
    CFG_POLYGON             stuHumanDetectRegion[MAX_POLYGON_NUM];                  // 检测的人体区域
    BYTE                    byReserved[4096];                                       // 保留字节
}CFG_FINANCE_CASH_TRANSACTION_INFO;


// 事件类型EVENT_IVS_WALK_DETECTION(走动检测事件)对应的规则配置
typedef struct tagCFG_WALK_DETECTION_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
    CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

    int                     nDetectRegionNum;                                       // 警戒区端点个数
    CFG_POLYLINE            stuDetectRegion[MAX_POLYGON_NUM];                       // 警戒区, 多边形类型,多边形中每个端点的坐标归一化到[0,8192)区间。
    UINT                    nMinDuration;                                           // 最短持续时间, 单位 s, 默认2,范围[1,3600]
    UINT                    nSensitivity;                                           // 灵敏度灵敏度,[1, 10], 默认值5
    int                     nMaxHeight;                                             // 最大检测高度,单位cm
    int                     nMinHeight;                                             // 最小检测高度,单位cm
    UINT                    nReportInterval;                                        // 重复报警间隔,为0不重复报警, 单位:秒,默认0,范围[0,300]
    BYTE                    byReserved[4096];                                       // 保留字节
} CFG_WALK_DETECTION_INFO;
  
// 事件类型 EVENT_IVS_SMART_KITCHEN_CLOTHES_DETECTION (智慧厨房穿着检测)对应的规则配置
typedef struct tagCFG_SMART_KITCHEN_CLOTHES_DETECTION_INFO
{
	char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	BOOL                    bRuleEnable;                                            // 规则使能
	int                     nObjectTypeNum;                                         // 相应物体类型个数
	char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
	CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
	int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

	BOOL					bMaskEnable;											// 是否开启口罩检测  (TRUE:开启 FALSE:关闭)				
	BOOL					bChefHatEnable;											// 是否开启厨师帽检测(TRUE:开启 FALSE:关闭)
	BOOL					bChefClothesEnable;										// 是否开启厨师服检测(TRUE:开启 FALSE:关闭)
	EM_SUPPORTED_COLOR_LIST_TYPE	emChefClothesColors[8];							// 检测符合要求的厨师服颜色不报警
	int						nChefClothesColorsNum;									// 符合检测不需要报警的厨师服颜色个数
	UINT					nReportInterval;										// 报告时间间隔,单位秒 [0,600] 默认30,0表示不重复报警 
	BYTE                    byReserved[4096];                                       // 保留字节
} CFG_SMART_KITCHEN_CLOTHES_DETECTION;


// 事件类型EVENT_IVS_BACK_TO_DETECTION(背对检测事件)对应的规则配置
typedef struct tagCFG_BACK_TO_DETECTION_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
    CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

    int                     nDetectRegionNum;                                       // 警戒区端点个数
    CFG_POLYLINE            stuDetectRegion[MAX_POLYGON_NUM];                       // 警戒区, 多边形类型,多边形中每个端点的坐标归一化到[0,8192)区间。
    UINT                    nMinDuration;                                           // 最短持续时间, 单位 s, 默认2,范围[1,3600]
    UINT                    nSensitivity;                                           // 灵敏度灵敏度,[1, 10], 默认值5
    int                     nMaxHeight;                                             // 最大检测高度,单位cm
    int                     nMinHeight;                                             // 最小检测高度,单位cm
    UINT                    nReportInterval;                                        // 重复报警间隔,为0不重复报警, 单位:秒,默认0,范围[0,300]
    BYTE                    byReserved[4096];                                       // 保留字节
} CFG_BACK_TO_DETECTION_INFO;

// 系统联动特写模式
typedef enum tagEM_CLOSE_UP_MODE
{
    EM_CLOSE_UP_MODE_UNKNOWN,                               // 未知
    EM_CLOSE_UP_MODE_NO_LINKAGE,                            // 不联动
    EM_CLOSE_UP_MODE_TRACK_MODE,                            // 跟踪模式
    EM_CLOSE_UP_MODE_FIXED_MODE,                            // 固定模式
    EM_CLOSE_UP_MODE_DESIGNED_REGION_MODE,                  // 指定区域模式
} EM_CLOSE_UP_MODE;

// 联动码流类型
typedef enum tagEM_LINKAGE_STREAM_TYPE
{
    EM_LINKAGE_STREAM_TYPE_UNKNOWN,                         // 未知
    EM_LINKAGE_STREAM_TYPE_MAIN,                            // 主码流
    EM_LINKAGE_STREAM_TYPE_EXTRA_1,                         // 辅码流1
    EM_LINKAGE_STREAM_TYPE_EXTRA_2,                         // 辅码流2
    EM_LINKAGE_STREAM_TYPE_EXTRA_3,                         // 辅码流3
} EM_LINKAGE_STREAM_TYPE;

// 事件类型EVENT_IVS_WRITE_ON_THE_BOARD_DETECTION(板书检测事件)对应的规则配置
typedef struct tagCFG_WRITE_ON_THE_BOARD_DETECTION_INFO
{
    char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
    BOOL                    bRuleEnable;                                            // 规则使能
    int                     nObjectTypeNum;                                         // 相应物体类型个数
    char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
    CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
    CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
    int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

    int                     nDetectRegionNum;                                       // 警戒区端点个数
    CFG_POLYLINE            stuDetectRegion[MAX_POLYGON_NUM];                       // 警戒区, 多边形类型,多边形中每个端点的坐标归一化到[0,8192)区间。
    UINT                    nMinDuration;                                           // 最短持续时间, 单位 s, 默认2,范围[1,3600]
    UINT                    nSensitivity;                                           // 灵敏度灵敏度,[1, 10], 默认值5
    int                     nMaxHeight;                                             // 最大检测高度,单位cm
    int                     nMinHeight;                                             // 最小检测高度,单位cm
    EM_CLOSE_UP_MODE        emCloseUpMode;                                          // 系统联动特写模式, 为UNKNOWN时不下发
    int                     nChannelID;                                             // 联动的通道号
    EM_LINKAGE_STREAM_TYPE  emStreamType;                                           // 联动码流类型
    UINT                    nDesignedRegionPoint;                                   // 检测区顶点数
    CFG_POLYGON             stuDesignedRegion[2];                                   // 检测区
    BYTE                    byReserved[4096];                                       // 保留字节
} CFG_WRITE_ON_THE_BOARD_DETECTION_INFO;

// 事件类型EVENT_IVS_ACTIVITY_ANALYSE(活跃度分析)对应的规则配置
typedef struct tagCFG_ACTIVITY_ANALYSE_INFO
{
	char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	BOOL                    bRuleEnable;                                            // 规则使能
	int                     nObjectTypeNum;                                         // 相应物体类型个数
	char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
	CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
	int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

	int                     nDetectRegionNum;                                       // 检测区域端点个数
	CFG_POLYLINE            stuDetectRegion[MAX_POLYGON_NUM];                       // 检测区域, 多边形类型,多边形中每个端点的坐标归一化到[0,8192)区间。
	BYTE                    byReserved[4096];                                       // 保留字节
} CFG_ACTIVITY_ANALYSE_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_MOTOR_OVERLOAD (机动车超载)对应的规则配置
typedef struct tagCFG_TRAFFIC_MOTOR_OVERLOAD_INFO
{
	char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	BOOL                    bRuleEnable;                                            // 规则使能
	int                     nObjectTypeNum;                                         // 相应物体类型个数
	char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
	CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
	int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

	int                     nLaneNumber;											// 车道号
	int						nSnapTruckByPlateColor;									// 货车车牌颜色过滤
																					// 0-表示只抓拍黄牌货车; 1-表示黄牌、蓝牌货车都抓拍;
	int						nSnapNoPlateMotor;										// 是否抓拍无牌机动车;
																					// 0-表示不抓拍无牌车; 1-表示支持抓拍无牌车
	int						nTruckNum;												// 机动车超载抓拍货车的车辆类型的个数,不能为0
	EM_CFG_CATEGORY_TYPE	emTruckTypes[32];										// 机动车超载抓拍货车的车辆类型
	BYTE                    byReserved[4096];                                       // 保留字节
} CFG_TRAFFIC_MOTOR_OVERLOAD_INFO;

// 事件类型 EVENT_IVS_TRAFFIC_PLATE_OCCLUSION (车牌污损)对应的规则配置
typedef struct tagCFG_TRAFFIC_PLATE_OCCLUSION_INFO
{
	char                    szRuleName[MAX_NAME_LEN];                               // 规则名称,不同规则不能重名
	BOOL                    bRuleEnable;                                            // 规则使能
	int                     nObjectTypeNum;                                         // 相应物体类型个数
	char                    szObjectTypes[MAX_OBJECT_LIST_SIZE][MAX_NAME_LEN];      // 相应物体类型列表
	CFG_ALARM_MSG_HANDLE    stuEventHandler;                                        // 报警联动
	CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];         // 事件响应时间段
	int                     nPtzPresetId;                                           // 云台预置点编号   0~65535

	int                     nLaneNumber;											// 车道号
	BOOL					bSnapMotorcycle;										// 是否检测摩托车
	BYTE                    byReserved[4096];                                       // 保留字节
} CFG_TRAFFIC_PLATE_OCCLUSION_INFO;

// 规则通用信息
typedef struct tagCFG_RULE_COMM_INFO
{
	BYTE				bRuleId;							// 规则编号
	EM_SCENE_TYPE		emClassType;						// 规则所属的场景
	BYTE				bReserved[512];						// 保留字节
}CFG_RULE_COMM_INFO;

typedef struct tagCFG_RULE_INFO
{
	DWORD				dwRuleType;							// 事件类型,详见dhnetsdk.h中"智能分析事件类型"
	int					nRuleSize;							// 该事件类型规则配置结构体大小
	CFG_RULE_COMM_INFO  stuRuleCommInfo;					// 规则通用信息
} CFG_RULE_INFO;

// 每个视频输入通道对应的所有事件规则:缓冲区pRuleBuf填充多个事件规则信息,每个事件规则信息内容为CFG_RULE_INFO+"事件类型对应的规则配置结构体"。
typedef struct tagCFG_ANALYSERULES_INFO
{
	int					nRuleCount;							// 事件规则个数
	char*				pRuleBuf;							// 每个视频输入通道对应的视频分析事件规则配置缓冲
	int					nRuleLen;							// 缓冲大小

} CFG_ANALYSERULES_INFO;

// 视频分析资源类型
typedef enum tagCFG_VIDEO_SOURCE_TYPE
{
	CFG_VIDEO_SOURCE_REALSTREAM,                            // 实时流
	CFG_VIDEO_SOURCE_FILESTREAM,                            // 文件流
}CFG_VIDEO_SOURCE_TYPE;

// 分析源文件类型
typedef enum tagCFG_SOURCE_FILE_TYPE
{
	CFG_SOURCE_FILE_UNKNOWN,                                // 未知类型
	CFG_SOURCE_FILE_RECORD,                                 // 录像文件
	CFG_SOURCE_FILE_PICTURE,                                    // 图片文件
}CFG_SOURCE_FILE_TYPE;

// 视频分析源文件信息
typedef struct tagCFG_SOURCE_FILE_INFO
{
	char                szFilePath[MAX_PATH];               // 文件路径
	CFG_SOURCE_FILE_TYPE emFileType;                        // 文件类型,详见CFG_SOURCE_FILE_TYPE
}CFG_SOURCE_FILE_INFO;

// 每个视频输入通道对应的视频分析资源配置信息
typedef struct tagCFG_ANALYSESOURCE_INFO
{
	bool				bEnable;								// 视频分析使能
	BYTE				bReserved[3];							// 保留对齐
	int					nChannelID;								// 智能分析的前端视频通道号
	int					nStreamType;							// 智能分析的前端视频码流类型,0:抓图码流; 1:主码流; 2:子码流1; 3:子码流2; 4:子码流3; 5:物体流
	char				szRemoteDevice[MAX_NAME_LEN];			// 设备名
	BOOL				abDeviceInfo;				        	// 设备信息是否有效
	AV_CFG_RemoteDevice stuDeviceInfo;					        // 设备信息
	CFG_VIDEO_SOURCE_TYPE emSourceType;                         // 视频分析源类型,详见CFG_VIDEO_SOURCE_TYPE
	CFG_SOURCE_FILE_INFO stuSourceFile;                          // 当视频分析源类型为CFG_VIDEO_SOURCE_FILESTREAM时,有效
} CFG_ANALYSESOURCE_INFO;

//视频分析整体配置,影响设备或服务器整体行为
typedef struct tagCFG_ANALYSEWHOLE_INFO
{	
	unsigned  int nVideoChannelType;		// 视频通道类型选择 0:数字,1;模拟,2:数字和模拟
	
}CFG_ANALYSEWHOLE_INFO;




typedef struct tagCFG_RAINBRUSH_INFO
{
	bool                bEnable;                                 // 雨刷使能
	BYTE                bSpeedRate;                              // 雨刷速度,1:快速;2:中速;3:慢速
	BYTE                bReserved[2];                            // 保留对齐
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];// 事件响应时间段
	int					nInterval;									// 雨刷运动间隔事件, 单位: 秒
	BOOL				bProtectEnable;								// 雨刷保护使能: true 保护开启, false 保护关闭
	int					nProtectTime;								// 保护时间, 单位: 秒
}CFG_RAINBRUSH_INFO;

// BreakingSnapTimes
typedef struct tagBREAKINGSNAPTIMES_INFO
{
	int               nNormal;                          // 正常
	int               nRunRedLight;                     // 闯红灯
	int			      nOverLine;						// 压线
	int				  nOverYellowLine;			  	    // 压黄线
	int				  nRetrograde;			    	    // 逆向
	int				  nUnderSpeed;					    // 欠速
    int				  nOverSpeed;						// 超速
	int			      nWrongRunningRoute;				// 有车占道
	int			      nYellowInRoute;					// 黄牌占道
	int		    	  nSpecialRetrograde;				// 特殊逆行
	int			      nTurnLeft;						// 违章左转
	int			      nTurnRight;						// 违章右转
	int			      nCrossLane;						// 违章变道
	int			      nU_Turn;						    // 违章调头
	int			      nParking;						    // 违章停车
	int               nWaitingArea;						// 违章进入待行区
	int			      nWrongRoute;					    // 不按车道行驶		
	int               nParkingSpaceParking;             // 车位有车
	int               nParkingSpaceNoParking;           // 车位无车

	int               nRunYellowLight;					// 闯黄灯
	int               nStay;							// 违章停留
	int               nPedestrainPriority;	            // 斑马线行人优先违章
	int               nVehicleInBusRoute;               // 违章占道
	int               nBacking;                         // 违章倒车
	int				  nOverStopLine;					// 压停止线
	int               nParkingOnYellowBox;           	// 黄网格线停车	
	int               nRestrictedPlate;					// 受限车牌	
	int               nNoPassing;						// 禁行	
    int               nWithoutSafeBelt;                 // 不系安全带
    int               nDriverSmoking;                   // 驾驶员抽烟
    int               nDriverCalling;                   // 驾驶员打电话
    int               nPedestrianRunRedLight;           // 行人闯红灯
    int               nPassNotInOrder;                  // 未按规定依次通行
}BREAKINGSNAPTIMES_INFO;


//OSD黑边
typedef struct tagBLACK_REGION_INFO
{
	int nHeight;			//黑边高度 取值范围:0 ~ ( 8192-原图片高度)
	int nOSDPosition;		//黑边位置 0=未知 , 1=顶部 , 2=底部
}BLACK_REGION_INFO;

#define MAX_OSD_CUSTOM_SORT_NUM       8
#define MAX_OSD_CUSTOM_SORT_ELEM_NUM  8
#define MAX_OSD_CUSTOM_GENERAL_NUM    8
#define MAX_OSD_ITEM_ATTR_NUM         8 
#define MAX_PRE_POX_STR_LEN           32
#define MAX_OSD_CUSTOM_NAME_LEN       32
#define MAX_OSD_CUSTOM_VALUE_LEN      256

//全体OSD项共用属性
typedef struct tagOSD_WHOLE_ATTR
{
    BOOL        bPositionAsBlackRegion;     //位置是否同黑边相同,true时,下面的Position无效
    CFG_RECT    stPostion;                  //位置,不能超过图片范围
    BOOL        bNewLine;                   //超出矩形范围是否换行,bPositionAsBlackRegion为true时有效
    BOOL        bLoneVehicle;                //车辆信息独立显示,true 一行显示一辆车信息,false 允许多辆车信息显示在一行
}OSD_WHOLE_ATTR;

typedef union tagOSD_ATTR_SCHEME
{
    OSD_WHOLE_ATTR stWholeAttr;
}OSD_ATTR_SCHEME;

//OSD具体叠加元素
typedef struct tagOSD_CUSTOM_ELEMENT
{
    int  nNameType;                          //名称类型,	0:szName字段含义参照szOSDOrder字段定义的项
                                             //             1:"Name"字段表示自定义项,无需解析
    char szName[MAX_OSD_CUSTOM_VALUE_LEN];                           // 该项名称
    char szPrefix[MAX_PRE_POX_STR_LEN];      // 叠加前缀字符串	
    char szPostfix[MAX_PRE_POX_STR_LEN];     //叠加后缀字符串
    int  nSeperaterCount;                    //后面添加分隔符个数
    
}OSD_CUSTOM_ELEMENT;

//OSD叠加内容自定义排序
typedef struct tagOSD_CUSTOM_SORT
{
    OSD_CUSTOM_ELEMENT   stElements[MAX_OSD_CUSTOM_SORT_ELEM_NUM];     //具体叠加元素
    int                  nElementNum;
}OSD_CUSTOM_SORT;


typedef struct tagOSD_CUSTOM_GENERAL_INFO
{
    BOOL    bEnable;            //是否叠加
}OSD_CUSTOM_GENERAL_INFO;

//OSD自定义项
typedef struct tagOSD_CUSTOM_INFO
{
    OSD_CUSTOM_GENERAL_INFO  stGeneralInfos[MAX_OSD_CUSTOM_GENERAL_NUM];     //具体叠加元素
    int                      nGeneralInfoNum;
}OSD_CUSTOM_INFO;

#define  MAX_CONF_CHAR 256
//OSD属性
typedef struct tagOSD_INFO
{
	BLACK_REGION_INFO	stBackRegionInfo;		//OSD黑边属性
	int					nOSDAttrScheme;		    //OSD属性配置方案 0=未知 , 1=全体OSD项共用属性 , 2=每个OSD项一个属性
	OSD_ATTR_SCHEME		stOSDAttrScheme;		//OSD属性配置方案内容
    OSD_CUSTOM_SORT     stOSDCustomSorts[MAX_OSD_CUSTOM_SORT_NUM];    //OSD叠加内容自定义排序
    int                 nOSDCustomSortNum;
    int                 nRedLightTimeDisplay;   //OSD红灯时间配置 0=未知,1=违法最后一张,2=所有张
    char                cSeperater;             //OSD不同项之间的分隔符
    BYTE		        bReserved[3];           //字节对齐
    char                szOSDOrder[MAX_CONF_CHAR];    
    int                 nOSDContentScheme;      //0=未知, 1=Mask , 2=CustomizeSort
    OSD_CUSTOM_INFO     stOSDCustomInfo;        //OSD自定义项
}OSD_INFO;

// Detector -- BEGIN
// CoilConfig
typedef struct tagCOILCONFIG_INFO
{
    int               nDelayFlashID;                 // 延时闪光灯序号	每个线圈对应的延时闪关灯序号,范围0~5,0表示不延时任何闪光灯
    int               nFlashSerialNum;               // 闪光灯序号	范围0~5,0表示不打开闪光灯(鄞州项目用)
    int               nRedDirection;                 // 红灯方向	每个线圈对应的红灯方向:0-不关联,1-左转红灯,2-直行红灯,3-右转红灯,4-待左,5-待直,6-待右, 只在电警中有效
    int               nTriggerMode ;                 // 线圈触发模式	触发模式:0-入线圈触发1-出线圈触发(鄞州项目用)
    int				  nFlashSerialNum2;				 //多抓第二张对应闪光灯序号 范围0~5,0表示不打开闪光灯
    int				  nFlashSerialNum3;				 //多抓第三张对应闪光灯序号 范围0~5,0表示不打开闪光灯
}COILCONFIG_INFO;

// 线圈映射
typedef struct tagCOIL_MAP_INFO
{
    UINT        nPhyCoilID;         // 物理线圈号
    UINT        nLogicCoilID;       // 逻辑线圈号
}COIL_MAP_INFO;

typedef struct tagDETECTOR_INFO
{
    int                nDetectBreaking;                  // 违章类型掩码	从低位到高位依次是:0-正常1-闯红灯2-压线3-逆行4-欠速5-超速6-有车占道
                                                         // 7-黄牌占道 8-闯黄灯 9-违章占公交车道 10-不系安全带 11-驾驶员抽烟 12-驾驶员打电话

	COILCONFIG_INFO    arstCoilCfg[MAX_COILCONFIG];      // 线圈配置数组
	int				   nRoadwayNumber;				     // 车道号	1-16 ; 0表示不启用
	int                nRoadwayDirection;                // 车道方向(车开往的方向)	0-南向北 1-西南向东北 2-东 3-西北向东南 4-北向南 5-东北向西南 6-东向西 7-东南向西北 8-忽略
	int                nRedLightCardNum;                 // 卡口图片序号	表示将电警中的某一张图片作为卡口图片(共三张),0表示不采用,1~3,表示采用对应序号的图片
	int                nCoilsNumber;                     // 线圈个数	1-3
	int                nOperationType;                   // 业务模式	0-卡口电警1-电警2-卡口
	int                arnCoilsDistance[3];              // 两两线圈的间隔	范围0-1000,单位为厘米
	int                nCoilsWidth;                      // 每个线圈的宽度	0~200cm
	int                arnSmallCarSpeedLimit[2];         // 小型车辆速度下限和上限	0~255km/h,不启用大小车限速时作为普通车辆限速
	int				   arnBigCarSpeedLimit[2];           // 大型车辆速度下限和上限	0~255km/h,启用大小车限速时有效
	int				   nOverSpeedMargin;			     // 限高速宽限值	单位:km/h
	int                nBigCarOverSpeedMargin;           // 大车限高速宽限值	单位:km/h,启用大小车限速时有效
	int				   nUnderSpeedMargin;			     // 限低速宽限值	单位:km/h
	int                nBigCarUnderSpeedMargin;          // 大车限低速宽限值	单位:km/h,启用大小车限速时有效
	bool               bSpeedLimitForSize;               // 是否启用大小车限速
	bool			   bMaskRetrograde;				     // 逆行是否视为违章行为
	BYTE               byReserved[2];                    // 保留对齐
	char               szDrivingDirection[3][MAX_DRIVINGDIRECTION]; //
													     // "DrivingDirection" : ["Approach", "上海", "杭州"],行驶方向
													     // "Approach"-上行,即车辆离设备部署点越来越近;"Leave"-下行,
														 // 即车辆离设备部署点越来越远,第二和第三个参数分别代表上行和
														 // 下行的两个地点,UTF-8编码
	int                nOverPercentage;                  // 超速百分比,超过限速百分比后抓拍
	int                nCarScheme;                       // 具体的方案Index,具体方案含义参参考打包环境local.png;根据CFG_TRAFFICSNAPSHOT_INFO.abSchemeRange字段区分作用范围
	int                nSigScheme;                       // 同上,非卡口使用
	BOOL               bEnable;                          // 车道是否有效,只有有效时才抓拍

	int				   nYellowSpeedLimit[2];			 //黄牌车限速上限和下限 范围0~255km/h
	int				   nRoadType;						 //工作路段 0 普通公路 1 高速公路
	int				   nSnapMode;						 //抓拍模式 0-全部抓拍 1-超速抓拍 2-逆向抓拍(鄞州项目用)
    int                nDelayMode;						 //延时抓拍方案 0-使DelaySnapshotDistance,1-使用DelayTime
	int                nDelayTime;						 //延时抓拍时间 闯红灯第三张抓拍位置距离最后一个线圈的时间,单位毫秒
	int				   nTriggerMode;					 //触发模式 0-入线圈触发 1-出线圈触发 2-出入都抓拍 3-关闭
	int			       nErrorRange;						 //速度误差值,进线圈2与进线圈3之间的速度误差值,若实际误差大于或等于该值,视速度无效,否则取平均速度 0-20
	double			   dSpeedCorrection;				 //速度校正系数,即速度值为测出的值乘以该系数 
    int                nDirection[2];                    //相对车道方向需要上报车辆行驶方向,nDirection[0] 0--空 1--正向 ; nDirection[1] 0--空 1--反向	
    char               szCustomParkNo[CFG_COMMON_STRING_32 + 1]; // 自定义车位号(停车场用)
    BYTE               btReserved[3];
    int                nCoilMap;                        // 有多少对线圈映射关系
    COIL_MAP_INFO      stuCoilMap[16];                  // 线圈号映射关系
}DETECTOR_INFO;
// Detector -- END

typedef struct tagRADAR_INFO
{
    int     nAngle;                 //角度,用于修正雷达探头安装的角度造成的速度误差,范围[0,90]
    int     nAntiJammingValue;      //抗干扰门槛值
    int     nComeInValue;           //来向进入门槛值,取值范围[0,65535]
    int     nComeOutValue;          //来向离开门槛值
    int     nDelayTime;             //雷达延时,单位ms,范围[0,255]
    DWORD   nDetectBreaking;        //违章类型掩码,从低位到高位依次是:
                                    //0-正常,1-闯红灯, 2-压线, 3-逆行,4-欠速
                                    //5-超速,6-有车占道,7-黄牌占道,8-闯黄灯,9-违章占公交车道
    int     nDetectMode;            //检测模式  0-车头检测 1-车尾检测 2-双向检测
    int     nInstallMode;           //雷达安装方式  0-侧面安装 1-上方安装
    int     nLevel;                 //灵敏度,0级灵敏度最高,范围[0,5]
    int     nMultiTargetFilter;     //多目标过滤模式,0-正常 1-过滤
    int     nWentEndValue;          //去向信号结束门槛值
    int     nWentInValue;           //去向进入门槛值
    int     nWentOutValue;          //去向离开门槛值
}RADAR_INFO;

// CFG_CMD_INTELLECTIVETRAFFIC
typedef struct tagCFG_TRAFFICSNAPSHOT_INFO
{
	char                     szDeviceAddress[MAX_DEVICE_ADDRESS];  // 设备地址	UTF-8编码,256字节
	DWORD                    nVideoTitleMask;                      // OSD叠加类型掩码	从低位到高位分别表示:0-时间 1-地点 2-车牌3-车长 4-车速 5-限速6-大车限速 7-小车限速8-超速 9-违法代码10-车道号 11-车身颜色 12-车牌类型 13-车牌颜色14-红灯点亮时间 15-违章类型 16-雷达方向 17-设备编号 18-标定到期时间 19-车型 20-行驶方向
	int                      nRedLightMargin;                      // 红灯冗余间隔时间	红灯开始的一段时间内,车辆通行不算闯红灯,单位:秒
	float				     fLongVehicleLengthLevel;              // 超长车长度最小阈值	单位:米,包含
	float					 arfLargeVehicleLengthLevel[2];        // 大车长度阈值	单位:米,包含小值
	float					 arfMediumVehicleLengthLevel[2];       // 中型车长度阈值	单位:米,包含小值
	float					 arfSmallVehicleLengthLevel[2];        // 小车长度阈值	单位:米,包含小值
	float					 fMotoVehicleLengthLevel;              // 摩托车长度最大阈值	单位:米,不包含
	BREAKINGSNAPTIMES_INFO   stBreakingSnapTimes;                  // 违章抓拍张数
	DETECTOR_INFO            arstDetector[MAX_DETECTOR];           // 车检器配置,下标是车道号
	int 					 nCarType;			               	   // 抓拍车辆类型	0-大小车都抓拍1-抓拍小车2-抓拍大车3-大小车都不抓拍
	int						 nMaxSpeed;			               	   // 当测得的速度超过最大速度时,则以最大速度计	0~255km/h
	int						 nFrameMode;		               	   // 帧间隔模式	1-速度自适应(超过速度上限取0间隔,低于速度下限取2间隔,中间取1间隔)2-由联动参数决定
	int                      arnAdaptiveSpeed[2];                  // 速度自适应下限和上限
	CFG_ALARM_MSG_HANDLE     stuEventHandler;	                   // 交通抓拍联动参数
	BOOL                     abSchemeRange;                        // TRUE:方案针对相机,以车到0的值为准;FALSE:方案针对车道。不可以修改此字段数据, 只内部使用

    DWORD                    nVideoTitleMask1;					   // 从低位到高位分别表示:0-车标 1-红灯结束时间 2-设备制造厂商 3-小车低限速 4-大车低限速 5-小车高限速 6-大车高限速 7-设备工作模式 8-通用自定义 9-车道自定义 10-抓拍触发源 11-停车场区域12-车辆类型(面包车、轿车等等) 13-中车低限速 14-中车高限速 15-道路方向 16-GPS信息
    DWORD				     nMergeVideoTitleMask;                 // 合成图片OSD叠加类型掩码	参照nVideoTitleMask字段
    DWORD				     nMergeVideoTitleMask1;				   // 合成图片OSD叠加类型掩码	参照nVideoTitleMask1字段
    int                      nTriggerSource;					   // 触发源掩码 0-RS232 1-RS485 2-IO 3-Video 4-Net
    int						 nSnapMode;							   // 抓拍模式 0-全部抓拍 1-超速抓拍 2-逆向抓拍 3-PK模式
    int                      nWorkMode;							   // 工作模式 0-自动模式,1-线圈抓拍模式,2-线圈抓拍识别,3-视频抓拍,4-视频识别, 5-混合抓拍(带识别)
    int                      nCarThreShold;						   // 车长阈值  区分大小车长的阈值,单位: cm
    int                      nSnapType;							   // 抓拍或抓录选择 0-正常抓拍模式 1-视频抓拍模式 2-黑屏快抓模式
    int                      nCustomFrameInterval[3];			   // 自定义抓拍帧间隔 第一个元素指车速小于速度自适应下限时的抓拍帧间隔,依次类推
    int                      nKeepAlive;				           // 与雷达、车检器的默认保活周期 单位秒
    OSD_INFO				 stOSD;								   // 原始图片OSD参数配置
    OSD_INFO                 stMergeOSD;                           // 合成图片OSD参数配置
    CFG_NET_TIME             stValidUntilTime;					   // 标定到期时间,指该时间点之前抓拍照片有效
    RADAR_INFO               stRadar;
    char                     szRoadwayCode[MAX_ROADWAYNO];         // 道路代码
    DWORD                    nVideoTitleMask2;					   // 原始图片OSD叠加类型掩码2 从低位到高位分别表示:0-国别 1-尾气数据    
    DWORD				     nMergeVideoTitleMask2;				   // 合成图片OSD叠加类型掩码2 参照nVideoTitleMask2字段
	int                      nParkType;                            // 出入口类型,0-默认( 兼容以前,不区分出口/入口 ),1-入口相机, 2-出口相机
}CFG_TRAFFICSNAPSHOT_INFO;

typedef struct tagCFG_TRAFFICSNAPSHOT_NEW_INFO
{
	int							nCount;								// 有效成员个数
	CFG_TRAFFICSNAPSHOT_INFO	stInfo[8];							// 交通抓拍表数组
}CFG_TRAFFICSNAPSHOT_NEW_INFO;

// 交通抓拍(CFG_CMD_TRAFFICSNAPSHOT_MULTI_EX)
typedef struct tagCFG_TRAFFICSNAPSHOT_NEW_EX_INFO
{
	CFG_TRAFFICSNAPSHOT_INFO*	pstInfo;							// 交通抓拍表指针,用户分配,大小为sizeof(CFG_TRAFFICSNAPSHOT_INFO) * nMaxInfoNum
	int							nMaxInfoNum;						// 用户分配CFG_TRAFFICSNAPSHOT_INFO成员个数
	int							nRetInfoNum;						// 获取参数时表示获取到CFG_TRAFFICSNAPSHOT_INFO成员个数
}CFG_TRAFFICSNAPSHOT_NEW_EX_INFO;

typedef struct tagCFG_DATA_TIME
{
    DWORD				dwYear;					// 年
    DWORD				dwMonth;				// 月
    DWORD				dwDay;					// 日
    DWORD				dwHour;					// 时
    DWORD				dwMinute;				// 分
    DWORD				dwSecond;				// 秒
    DWORD               dwReserved[2];          // 保留字段
} CFG_DATA_TIME;

// 普通配置 (CFG_CMD_DEV_GENERRAL) General 
typedef struct tagCFG_DEV_DISPOSITION_INFO
{
	int                      nLocalNo;              // 本机编号,主要用于遥控器区分不同设备	0~998
	char                     szMachineName[256];    // 机器名称或编号
	char                     szMachineAddress[256]; // 机器部署地点即道路编码
	char                     szMachineGroup[256];   // 机器分组或叫设备所属单位	默认为空,用户可以将不同的设备编为一组,便于管理,可重复。
	char					 szMachineID[64];		// 机器编号, 联网平台内唯一
	int						 nLockLoginTimes;		// 登陆失败可尝试次数
	int						 nLoginFailLockTime;    // 登陆失败锁定时间
	BOOL					 bLockLoginEnable;		// 登陆失败可尝试次数使能
    CFG_DATA_TIME            stuActivationTime;     // 启动时间
	BYTE		             bReserved[916];        // 保留字节
}CFG_DEV_DISPOSITION_INFO;

typedef struct tagOVERSPEED_INFO
{
	int                      nSpeedingPercentage[2];                        // 超速百分比区间要求区间不能重叠。有效值为0,正数,-1,-1表示无穷大值
	                                                                        // 如果是欠速:要求区间不能重叠。有效值为0,正数,-1,-1表示无穷大值,欠速百分比的计算方式:限低速-实际车速/限低速
	char                     szCode[MAX_VIOLATIONCODE];                     // 违章代码
	char                     szDescription[MAX_VIOLATIONCODE_DESCRIPT];     // 违章描述

}CFG_OVERSPEED_INFO;

typedef CFG_OVERSPEED_INFO CFG_OVERSPEED_HIGHWAY_INFO;
typedef CFG_OVERSPEED_INFO CFG_UNDERSPEED_INFO;
typedef CFG_OVERSPEED_INFO CFG_BIG_CAR_OVERSPEED_INFO;

//ViolationCode 违章代码配置表
typedef struct tagVIOLATIONCODE_INFO
{
    char                szRetrograde[MAX_VIOLATIONCODE];			        // 逆行
	char                szRetrogradeDesc[MAX_VIOLATIONCODE_DESCRIPT];              // 违章描述信息
    char                szRetrogradeShowName[MAX_VIOLATIONCODE_DESCRIPT]; //显示名称

	char				szRetrogradeHighway[MAX_VIOLATIONCODE];		// 逆行-高速公路
	char				szRetrogradeHighwayDesc[MAX_VIOLATIONCODE_DESCRIPT];		// 违章描述信息

	char                szRunRedLight[MAX_VIOLATIONCODE];			// 闯红灯
	char                szRunRedLightDesc[MAX_VIOLATIONCODE_DESCRIPT];			   // 违章描述信息

	char                szCrossLane[MAX_VIOLATIONCODE];				// 违章变道
	char                szCrossLaneDesc[MAX_VIOLATIONCODE_DESCRIPT];			   // 违章描述信息
    char                szCrossLaneShowName[MAX_VIOLATIONCODE_DESCRIPT];    //违章变道显示名称

	char                szTurnLeft[MAX_VIOLATIONCODE];				// 违章左转
	char                szTurnLeftDesc[MAX_VIOLATIONCODE_DESCRIPT];				   // 违章描述信息

	char                szTurnRight[MAX_VIOLATIONCODE];				// 违章右转
	char                szTurnRightDesc[MAX_VIOLATIONCODE_DESCRIPT];				// 违章描述信息

	char                szU_Turn[MAX_VIOLATIONCODE];				// 违章掉头
	char                szU_TurnDesc[MAX_VIOLATIONCODE_DESCRIPT];				   // 违章描述信息
    char                szU_TurnShowName[MAX_VIOLATIONCODE_DESCRIPT]; //显示信息

	char                szJam[MAX_VIOLATIONCODE];					// 交通拥堵
	char                szJamDesc[MAX_VIOLATIONCODE_DESCRIPT];					   // 违章描述信息

	char                szParking[MAX_VIOLATIONCODE];				// 违章停车
	char                szParkingDesc[MAX_VIOLATIONCODE_DESCRIPT];		 	      	// 违章描述信息
    char                szParkingShowName[MAX_VIOLATIONCODE_DESCRIPT];   //违章停车显示名称

	// 超速 和 超速比例 只需且必须有一个配置
	char                szOverSpeed[MAX_VIOLATIONCODE];				// 超速
	char                szOverSpeedDesc[MAX_VIOLATIONCODE_DESCRIPT];				// 违章描述信息
	CFG_OVERSPEED_INFO  stOverSpeedConfig[5];                       // 超速比例代码
	// 超速(高速公路) 和 超速比例(高速公路) 只需且必须有一个配置
	char                szOverSpeedHighway[MAX_VIOLATIONCODE];		// 超速-高速公路
	char                szOverSpeedHighwayDesc[MAX_VIOLATIONCODE_DESCRIPT];	      	// 超速-违章描述信息
	CFG_OVERSPEED_HIGHWAY_INFO stOverSpeedHighwayConfig[5];         // 超速比例代码

	// 欠速 和 欠速比例 只需且必须有一个配置
	char                szUnderSpeed[MAX_VIOLATIONCODE];	        // 欠速
	char                szUnderSpeedDesc[MAX_VIOLATIONCODE_DESCRIPT];	            // 违章描述信息
	CFG_UNDERSPEED_INFO stUnderSpeedConfig[5];                            // 欠速配置信息	是一个数组,不同的欠速比违章代码不同,为空表示违章代码不区分超速比

	char                szOverLine[MAX_VIOLATIONCODE];				// 压线
	char                szOverLineDesc[MAX_VIOLATIONCODE_DESCRIPT];			    	// 违章描述信息
    char                szOverLineShowName[MAX_VIOLATIONCODE_DESCRIPT];  //压线显示名称

	char                szOverYellowLine[MAX_VIOLATIONCODE];	    // 压黄线
	char                szOverYellowLineDesc[MAX_VIOLATIONCODE_DESCRIPT];	    	// 违章描述信息

	char                szYellowInRoute[MAX_VIOLATIONCODE];			                // 黄牌占道
	char                szYellowInRouteDesc[MAX_VIOLATIONCODE_DESCRIPT];			// 黄牌占道违章描述信息

	char                szWrongRoute[MAX_VIOLATIONCODE];			                // 不按车道行驶
	char                szWrongRouteDesc[MAX_VIOLATIONCODE_DESCRIPT];				// 不按车道行驶违章描述信息

	char                szDrivingOnShoulder[MAX_VIOLATIONCODE];		                // 路肩行驶
	char                szDrivingOnShoulderDesc[MAX_VIOLATIONCODE_DESCRIPT];		// 路肩行驶违章描述信息

	char                szPassing[MAX_VIOLATIONCODE];                               // 正常行驶
	char                szPassingDesc[MAX_VIOLATIONCODE_DESCRIPT];               	// 正常行驶违章描述信息

	char                szNoPassing[MAX_VIOLATIONCODE];                             // 禁止行驶
	char                szNoPassingDesc[MAX_VIOLATIONCODE_DESCRIPT]; 				// 禁止行驶违章描述信息

	char                szFakePlate[MAX_VIOLATIONCODE];                             // 套牌
	char                szFakePlateDesc[MAX_VIOLATIONCODE_DESCRIPT]; 				// 套牌违章描述信息
	
	char                szParkingSpaceParking[MAX_VIOLATIONCODE];                   // 车位有车
	char                szParkingSpaceParkingDesc[MAX_VIOLATIONCODE_DESCRIPT]; 		// 车位有车违章描述信息、

	char                szParkingSpaceNoParking[MAX_VIOLATIONCODE];                 // 车位无车
	char                szParkingSpaceNoParkingDesc[MAX_VIOLATIONCODE_DESCRIPT]; 	// 车位无车违章描述信息

    char                szWithoutSafeBelt[MAX_VIOLATIONCODE];                       // 不系安全带
    char                szWithoutSafeBeltShowName[MAX_VIOLATIONCODE_DESCRIPT];      // 不系安全带显示名称
    char                szWithoutSafeBeltDesc[MAX_VIOLATIONCODE_DESCRIPT]; 	        // 不系安全带违章描述信息

    char                szDriverSmoking[MAX_VIOLATIONCODE];                          // 驾驶员抽烟
    char                szDriverSmokingShowName[MAX_VIOLATIONCODE_DESCRIPT];         // 驾驶员抽烟显示名称
    char                szDriverSmokingDesc[MAX_VIOLATIONCODE_DESCRIPT]; 	         // 驾驶员抽烟带违章描述信息

    char                szDriverCalling[MAX_VIOLATIONCODE];                         // 驾驶员打电话
    char                szDriverCallingShowName[MAX_VIOLATIONCODE_DESCRIPT];        // 驾驶员打电话显示名称
    char                szDriverCallingDesc[MAX_VIOLATIONCODE_DESCRIPT]; 	        // 驾驶员打电话违章描述信息

    char                szBacking[MAX_VIOLATIONCODE];                               // 违章倒车
    char                szBackingShowName[MAX_VIOLATIONCODE_DESCRIPT];	            // 违章倒车显示名称
    char                szBackingDesc[MAX_VIOLATIONCODE_DESCRIPT];                  // 违章倒车描述信息

    char                szVehicleInBusRoute[MAX_VIOLATIONCODE];                     // 违章占道
    char                szVehicleInBusRouteShowName[MAX_VIOLATIONCODE_DESCRIPT];    // 违章占道显示名称
    char                szVehicleInBusRouteDesc[MAX_VIOLATIONCODE_DESCRIPT];        // 违章占道描述信息

    char                szPedestrianRunRedLight[MAX_VIOLATIONCODE];                     // 行人闯红灯
    char                szPedestrianRunRedLightShowName[MAX_VIOLATIONCODE_DESCRIPT];    // 行人闯红灯显示名称
    char                szPedestrianRunRedLightDesc[MAX_VIOLATIONCODE_DESCRIPT];        // 行人闯红灯描述信息
    
    char                szPassNotInOrder[MAX_VIOLATIONCODE];                            // 未按规定依次通行
    char                szPassNotInOrderShowName[MAX_VIOLATIONCODE_DESCRIPT];           // 未按规定依次通行显示名称
    char                szPassNotInOrderDesc[MAX_VIOLATIONCODE_DESCRIPT];               // 未按规定依次通行描述信息
	
	char				szTrafficBan[MAX_VIOLATIONCODE];								// 机动车违法禁令标识
	char				szTrafficBanShowName[MAX_VIOLATIONCODE_DESCRIPT];				// 机动车违法禁令标识显示名称
	char				szTrafficBanDesc[MAX_VIOLATIONCODE_DESCRIPT];					// 描述信息

	char                szParkingB[MAX_VIOLATIONCODE];						// B类违章停车
	char                szParkingBDesc[MAX_VIOLATIONCODE_DESCRIPT];		 	// B类违章描述信息
    char                szParkingBShowName[MAX_VIOLATIONCODE_DESCRIPT];   	// B类违章停车显示名称

	char                szParkingC[MAX_VIOLATIONCODE];						// C类违章停车
	char                szParkingCDesc[MAX_VIOLATIONCODE_DESCRIPT];		 	// C类违章描述信息
    char                szParkingCShowName[MAX_VIOLATIONCODE_DESCRIPT];   	// C类违章停车显示名称

	char                szParkingD[MAX_VIOLATIONCODE];						// D类违章停车
	char                szParkingDDesc[MAX_VIOLATIONCODE_DESCRIPT];		 	// D类违章描述信息
    char                szParkingDShowName[MAX_VIOLATIONCODE_DESCRIPT];   	// D类违章停车显示名称

	char                szNonMotorHoldUmbrella[MAX_VIOLATIONCODE];						// 非机动车装载伞具代码
	char                szNonMotorHoldUmbrellaDesc[MAX_VIOLATIONCODE_DESCRIPT];		 	// 非机动车装载伞具描述信息
	char                szNonMotorHoldUmbrellaShowName[MAX_VIOLATIONCODE_DESCRIPT];   	// 非机动车装载伞具显示名称
    int                 nBigCarOverSpeedConfigNum;                  // 大车超速配置信息数量
    CFG_BIG_CAR_OVERSPEED_INFO    stBigCarOverSpeedConfig[5];       // 大车超速配置信息
}VIOLATIONCODE_INFO;

// 车道检测类型
typedef enum tagEmCheckType
{
    EM_CHECK_TYPE_UNKNOWN,             // 不识别的检测类型
    EM_CHECK_TYPE_PHYSICAL,            // 物理检测
    EM_CHECK_TYPE_VIDEO,               // 视频检测
}EM_CHECK_TYPE;

typedef struct tagTrafficEventCheckInfo
{
    BOOL                abTrafficGate;                  // 是否携带交通卡口信息
    EM_CHECK_TYPE       emTrafficGate;                  // 交通卡口检测类型

    BOOL                abTrafficJunction;              // 是否携带交通路口信息
    EM_CHECK_TYPE       emTrafficJunction;              // 交通路口检测类型

    BOOL                abTrafficTollGate;              // 是否携带新交通卡口信息
    EM_CHECK_TYPE       emTrafficTollGate;              // 新交通卡口检测类型

    BOOL                abTrafficRunRedLight;           // 是否携带交通闯红灯信息
    EM_CHECK_TYPE       emTrafficRunRedLight;           // 交通闯红灯检测类型
    
    BOOL                abTrafficRunYellowLight;        // 是否携带交通闯黄灯信息
    EM_CHECK_TYPE       emTrafficRunYellowLight;        // 交通闯黄灯检测类型

    BOOL                abTrafficOverLine;              // 是否携带交通压线信息
    EM_CHECK_TYPE       emTrafficOverLine;              // 交通压线检测类型

    BOOL                abTrafficOverYellowLine;        // 是否携带交通压黄线信息
    EM_CHECK_TYPE       emTrafficOverYellowLine;        // 交通压黄线检测类型

    BOOL                abTrafficRetrograde;            // 是否携带交通逆行信息
    EM_CHECK_TYPE       emTrafficRetrograde;            // 交通逆行检测类型

    BOOL                abTrafficTurnLeft;              // 是否携带交通违章左转信息
    EM_CHECK_TYPE       emTrafficTurnLeft;              // 交通违章左转检测类型

    BOOL                abTrafficTurnRight;             // 是否携带交通违章右转信息
    EM_CHECK_TYPE       emTrafficTurnRight;             // 交通路口违章右转类型

    BOOL                abTrafficU_Turn;                // 是否携带交通违章掉头信息
    EM_CHECK_TYPE       emTrafficU_Turn;                // 交通违章掉头检测类型

    BOOL                abTrafficCrossLane;             // 是否携带交通违章变道信息
    EM_CHECK_TYPE       emTrafficCrossLane;             // 交通违章变道检测类型

    BOOL                abTrafficParking;               // 是否携带交通违章停车信息
    EM_CHECK_TYPE       emTrafficParking;               // 交通违章停车检测类型

    BOOL                abTrafficJam;                   // 是否携带交通拥堵信息
    EM_CHECK_TYPE       emTrafficJam;                   // 交通拥堵检测类型

    BOOL                abTrafficIdle;                  // 是否携带交通交通空闲信息
    EM_CHECK_TYPE       emTrafficIdle;                  // 交通交通空闲检测类型

    BOOL                abTrafficWaitingArea;           // 是否携带交通违章驶入待行区信息
    EM_CHECK_TYPE       emTrafficWaitingArea;           // 交通违章驶入待行区检测类型

    BOOL                abTrafficUnderSpeed;            // 是否携带交通欠速信息
    EM_CHECK_TYPE       emTrafficUnderSpeed;            // 交通欠速检测类型

    BOOL                abTrafficOverSpeed;             // 是否携带交通超速信息
    EM_CHECK_TYPE       emTrafficOverSpeed;             // 交通超速检测类型

    BOOL                abTrafficWrongRoute;            // 是否携带交通不按车道行驶信息
    EM_CHECK_TYPE       emTrafficWrongRoute;            // 交通不按车道行驶检测类型

    BOOL                abTrafficYellowInRoute;         // 是否携带交通黄牌占道信息
    EM_CHECK_TYPE       emTrafficYellowInRoute;         // 交通黄牌占道检测类型

    BOOL                abTrafficVehicleInRoute;        // 是否携带交通有车占道信息
    EM_CHECK_TYPE       emTrafficVehicleInRoute;        // 交通有车占道检测类型

    BOOL                abTrafficControl;               // 是否携带交通交通管制信息
    EM_CHECK_TYPE       emTrafficControl;               // 交通交通管制检测类型

    BOOL                abTrafficObjectAlarm;           // 是否携带交通指定类型抓拍信息
    EM_CHECK_TYPE       emTrafficObjectAlarm;           // 交通指定类型抓拍检测类型

    BOOL                abTrafficAccident;              // 是否携带交通交通事故信息
    EM_CHECK_TYPE       emTrafficAccident;              // 交通交通事故检测类型

    BOOL                abTrafficStay;                  // 是否携带交通交通停留/滞留信息
    EM_CHECK_TYPE       emTrafficStay;                  // 交通交通停留/滞留检测类型

    BOOL                abTrafficPedestrainPriority;    // 是否携带交通斑马线行人优先信息
    EM_CHECK_TYPE       emTrafficPedestrainPriority;    // 交通斑马线行人优先检测类型

    BOOL                abTrafficPedestrain;            // 是否携带交通交通行人事件信息
    EM_CHECK_TYPE       emTrafficPedestrain;            // 交通交通行人事件检测类型

    BOOL                abTrafficThrow;                 // 是否携带交通交通抛洒物品事件信息
    EM_CHECK_TYPE       emTrafficThrow;                 // 交通交通抛洒物品事件检测类型

    BOOL                abTrafficVehicleInBusRoute;     // 是否携带交通违章占道信息
    EM_CHECK_TYPE       emTrafficVehicleInBusRoute;     // 交通违章占道检测类型

    BOOL                abTrafficBacking;               // 是否携带交通违章倒车信息
    EM_CHECK_TYPE       emTrafficBacking;               // 交通违章倒车检测类型

    BOOL                abTrafficOverStopLine;          // 是否携带交通压停止线信息
    EM_CHECK_TYPE       emTrafficOverStopLine;          // 交通压停止线检测类型

    BOOL                abTrafficParkingOnYellowBox;    // 是否携带交通黄网格线抓拍信息
    EM_CHECK_TYPE       emTrafficParkingOnYellowBox;    // 交通黄网格线抓拍检测类型

    BOOL                abTrafficParkingSpaceParking;   // 是否携带交通车位有车信息
    EM_CHECK_TYPE       emTrafficParkingSpaceParking;   // 交通车位有车检测类型

    BOOL                abTrafficParkingSpaceNoParking; // 是否携带交通车位无车信息
    EM_CHECK_TYPE       emTrafficParkingSpaceNoParking; // 交通车位无车检测类型

    BOOL                abTrafficParkingSpaceOverLine;  // 是否携带交通车位有车压线信息
    EM_CHECK_TYPE       emTrafficParkingSpaceOverLine;  // 交通车位有车压线检测类型

    BOOL                abParkingSpaceDetection;        // 是否携带交通多停车位状态检测信息
    EM_CHECK_TYPE       emParkingSpaceDetection;        // 交通多停车位状态检测检测类型

    BOOL                abTrafficRestrictedPlate;       // 是否携带交通受限车牌信息
    EM_CHECK_TYPE       emTrafficRestrictedPlate;       // 交通受限车牌检测类型

    BOOL                abTrafficWithoutSafeBelt;       // 是否携带交通不系安全带信息
    EM_CHECK_TYPE       emTrafficWithoutSafeBelt;       // 交通不系安全带检测类型

    BOOL                abTrafficNoPassing;             // 是否携带交通禁行信息
    EM_CHECK_TYPE       emTrafficNoPassing;             // 交通禁行检测类型

    BOOL                abVehicleAnalyse;               // 是否携带交通车辆特征检测分析信息
    EM_CHECK_TYPE       emVehicleAnalyse;               // 交通车辆特征检测类型

    BOOL                abCrossLineDetection;           // 是否携带交通警戒线信息
    EM_CHECK_TYPE       emCrossLineDetection;           // 交通警戒线检测类型

    BOOL                abCrossFenceDetection;          // 是否携带交通穿越围栏信息
    EM_CHECK_TYPE       emCrossFenceDetection;          // 交通穿越围栏检测类型

    BOOL                abCrossRegionDetection;         // 是否携带交通警戒区信息
    EM_CHECK_TYPE       emCrossRegionDetection;         // 交通警戒区检测类型

    BOOL                abPasteDetection;               // 是否携带交通ATM贴条信息
    EM_CHECK_TYPE       emPasteDetection;               // 交通ATM贴条检测类型

    BOOL                abLeftDetection;                // 是否携带交通物品遗留信息
    EM_CHECK_TYPE       emLeftDetection;                // 交通物品遗留检测类型

    BOOL                abPreservation;                 // 是否携带交通物品保全信息
    EM_CHECK_TYPE       emPreservation;                 // 交通物品保全检测类型

    BOOL                abTakenAwayDetection;           // 是否携带交通物品搬移信息
    EM_CHECK_TYPE       emTakenAwayDetection;           // 交通物品搬移检测类型

    BOOL                abStayDetection;                // 是否携带交通停留/滞留信息
    EM_CHECK_TYPE       emStayDetection;                // 交通停留/滞留检测类型

    BOOL                abParkingDetection;             // 是否携带交通非法停车信息
    EM_CHECK_TYPE       emParkingDetection;             // 交通非法停车检测类型

    BOOL                abWanderDetection;              // 是否携带交通徘徊信息
    EM_CHECK_TYPE       emWanderDetection;              // 交通徘徊检测类型

    BOOL                abMoveDetection;                // 是否携带交通运动信息
    EM_CHECK_TYPE       emMoveDetection;                // 交通运动检测类型

    BOOL                abTailDetection;                // 是否携带交通尾随信息
    EM_CHECK_TYPE       emTailDetection;                // 交通尾随检测类型

    BOOL                abRioterDetection;              // 是否携带交通聚集信息
    EM_CHECK_TYPE       emRioterDetection;              // 交通聚集检测类型

    BOOL                abFightDetection;               // 是否携带交通打架信息
    EM_CHECK_TYPE       emFightDetection;               // 交通打架检测类型

    BOOL                abRetrogradeDetection;          // 是否携带交通逆行信息
    EM_CHECK_TYPE       emRetrogradeDetection;          // 交通逆行检测类型

    BOOL                abFireDetection;                // 是否携带交通火焰信息
    EM_CHECK_TYPE       emFireDetection;                // 交通火焰检测类型

    BOOL                abSmokeDetection;               // 是否携带交通烟雾信息
    EM_CHECK_TYPE       emSmokeDetection;               // 交通烟雾检测类型

    BOOL                abNumberStat;                   // 是否携带交通数量统计信息
    EM_CHECK_TYPE       emNumberStat;                   // 交通数量统计检测类型

    BOOL                abVideoAbnormalDetection;       // 是否携带交通视频异常信息
    EM_CHECK_TYPE       emVideoAbnormalDetection;       // 交通视频异常检测类型

    BOOL                abPrisonerRiseDetection;        // 是否携带看守所囚犯起身检测信息
    EM_CHECK_TYPE       emPrisonerRiseDetection;        // 看守所囚犯起身检测检测类型

    BOOL                abFaceDetection;                // 是否携带人脸检测信息
    EM_CHECK_TYPE       emFaceDetection;                // 人脸检测检测类型

    BOOL                abFaceRecognition;              // 是否携带人脸识别信息
    EM_CHECK_TYPE       emFaceRecognition;              // 人脸识别检测类型

    BOOL                abDensityDetection;             // 是否携带密集度检测信息
    EM_CHECK_TYPE       emDensityDetection;             // 密集度检测检测类型

    BOOL                abQueueDetection;               // 是否携带排队检测信息
    EM_CHECK_TYPE       emQueueDetection;               // 排队检测检测类型

    BOOL                abClimbDetection;               // 是否携带攀高检测信息
    EM_CHECK_TYPE       emClimbDetection;               // 攀高检测类型

    BOOL                abLeaveDetection;               // 是否携带离岗检测信息
    EM_CHECK_TYPE       emLeaveDetection;               // 离岗检测类型

    BOOL                abVehicleOnPoliceCar;           // 是否携带车载警车信息
    EM_CHECK_TYPE       emVehicleOnPoliceCar;           // 车载警车检测类型

    BOOL                abVehicleOnBus;                 // 是否携带车载公交信息
    EM_CHECK_TYPE       emVehicleOnBus;                 // 车载公交检测类型

    BOOL                abVehicleOnSchoolBus;           // 是否携带车载校车信息
    EM_CHECK_TYPE       emVehicleOnSchoolBus;           // 车载校车检测类型  

	BOOL				abStandUpDetection;				// 是否携带学生起立信息
	EM_CHECK_TYPE		emStandUpDetection;				// 学生起立检测类型
}TRAFFIC_EVENT_CHECK_INFO;  

typedef struct tagTrafficEventCheckMask
{
    BOOL                abTrafficGate;                  // 是否携带交通卡口信息
    int                 nTrafficGate;                   // 交通卡口检测模式掩码

    BOOL                abTrafficJunction;              // 是否携带交通路口信息
    int                 nTrafficJunction;               // 交通路口检测模式掩码

    BOOL                abTrafficTollGate;              // 是否携带新交通卡口信息
    int                 nTrafficTollGate;               // 新交通卡口检测模式掩码

    BOOL                abTrafficRunRedLight;           // 是否携带交通闯红灯信息
    int                 nTrafficRunRedLight;            // 交通闯红灯检测模式掩码
    
    BOOL                abTrafficRunYellowLight;        // 是否携带交通闯黄灯信息
    int                 nTrafficRunYellowLight;         // 交通闯黄灯检测模式掩码

    BOOL                abTrafficOverLine;              // 是否携带交通压线信息
    int                 nTrafficOverLine;               // 交通压线检测模式掩码

    BOOL                abTrafficOverYellowLine;        // 是否携带交通压黄线信息
    int                 nTrafficOverYellowLine;         // 交通压黄线检测模式掩码

    BOOL                abTrafficRetrograde;            // 是否携带交通逆行信息
    int                 nTrafficRetrograde;             // 交通逆行检测模式掩码

    BOOL                abTrafficTurnLeft;              // 是否携带交通违章左转信息
    int                 nTrafficTurnLeft;               // 交通违章左转检测模式掩码

    BOOL                abTrafficTurnRight;             // 是否携带交通违章右转信息
    int                 nTrafficTurnRight;              // 交通路口违章右转类型

    BOOL                abTrafficU_Turn;                // 是否携带交通违章掉头信息
    int                 nTrafficU_Turn;                 // 交通违章掉头检测模式掩码

    BOOL                abTrafficCrossLane;             // 是否携带交通违章变道信息
    int                 nTrafficCrossLane;              // 交通违章变道检测模式掩码

    BOOL                abTrafficParking;               // 是否携带交通违章停车信息
    int                 nTrafficParking;                // 交通违章停车检测模式掩码

    BOOL                abTrafficJam;                   // 是否携带交通拥堵信息
    int                 nTrafficJam;                    // 交通拥堵检测模式掩码

    BOOL                abTrafficIdle;                  // 是否携带交通交通空闲信息
    int                 nTrafficIdle;                   // 交通交通空闲检测模式掩码

    BOOL                abTrafficWaitingArea;           // 是否携带交通违章驶入待行区信息
    int                 nTrafficWaitingArea;            // 交通违章驶入待行区检测模式掩码

    BOOL                abTrafficUnderSpeed;            // 是否携带交通欠速信息
    int                 nTrafficUnderSpeed;             // 交通欠速检测模式掩码

    BOOL                abTrafficOverSpeed;             // 是否携带交通超速信息
    int                 nTrafficOverSpeed;              // 交通超速检测模式掩码

    BOOL                abTrafficWrongRoute;            // 是否携带交通不按车道行驶信息
    int                 nTrafficWrongRoute;             // 交通不按车道行驶检测模式掩码

    BOOL                abTrafficYellowInRoute;         // 是否携带交通黄牌占道信息
    int                 nTrafficYellowInRoute;          // 交通黄牌占道检测模式掩码

    BOOL                abTrafficVehicleInRoute;        // 是否携带交通有车占道信息
    int                 nTrafficVehicleInRoute;         // 交通有车占道检测模式掩码

    BOOL                abTrafficControl;               // 是否携带交通交通管制信息
    int                 nTrafficControl;                // 交通交通管制检测模式掩码

    BOOL                abTrafficObjectAlarm;           // 是否携带交通指定类型抓拍信息
    int                 nTrafficObjectAlarm;            // 交通指定类型抓拍检测模式掩码

    BOOL                abTrafficAccident;              // 是否携带交通交通事故信息
    int                 nTrafficAccident;               // 交通交通事故检测模式掩码

    BOOL                abTrafficStay;                  // 是否携带交通交通停留/滞留信息
    int                 nTrafficStay;                   // 交通交通停留/滞留检测模式掩码

    BOOL                abTrafficPedestrainPriority;    // 是否携带交通斑马线行人优先信息
    int                 nTrafficPedestrainPriority;     // 交通斑马线行人优先检测模式掩码

    BOOL                abTrafficPedestrain;            // 是否携带交通交通行人事件信息
    int                 nTrafficPedestrain;             // 交通交通行人事件检测模式掩码

    BOOL                abTrafficThrow;                 // 是否携带交通交通抛洒物品事件信息
    int                 nTrafficThrow;                  // 交通交通抛洒物品事件检测模式掩码

    BOOL                abTrafficVehicleInBusRoute;     // 是否携带交通违章占道信息
    int                 nTrafficVehicleInBusRoute;      // 交通违章占道检测模式掩码

    BOOL                abTrafficBacking;               // 是否携带交通违章倒车信息
    int                 nTrafficBacking;                // 交通违章倒车检测模式掩码

    BOOL                abTrafficOverStopLine;          // 是否携带交通压停止线信息
    int                 nTrafficOverStopLine;           // 交通压停止线检测模式掩码

    BOOL                abTrafficParkingOnYellowBox;    // 是否携带交通黄网格线抓拍信息
    int                 nTrafficParkingOnYellowBox;     // 交通黄网格线抓拍检测模式掩码

    BOOL                abTrafficParkingSpaceParking;   // 是否携带交通车位有车信息
    int                 nTrafficParkingSpaceParking;    // 交通车位有车检测模式掩码

    BOOL                abTrafficParkingSpaceNoParking; // 是否携带交通车位无车信息
    int                 nTrafficParkingSpaceNoParking;  // 交通车位无车检测模式掩码

    BOOL                abTrafficParkingSpaceOverLine;  // 是否携带交通车位有车压线信息
    int                 nTrafficParkingSpaceOverLine;   // 交通车位有车压线检测模式掩码

    BOOL                abParkingSpaceDetection;        // 是否携带交通多停车位状态检测信息
    int                 nParkingSpaceDetection;         // 交通多停车位状态检测检测模式掩码

    BOOL                abTrafficRestrictedPlate;       // 是否携带交通受限车牌信息
    int                 nTrafficRestrictedPlate;        // 交通受限车牌检测模式掩码

    BOOL                abTrafficWithoutSafeBelt;       // 是否携带交通不系安全带信息
    int                 nTrafficWithoutSafeBelt;        // 交通不系安全带检测模式掩码

    BOOL                abTrafficNoPassing;             // 是否携带交通禁行信息
    int                 nTrafficNoPassing;              // 交通禁行检测模式掩码

    BOOL                abVehicleAnalyse;               // 是否携带交通车辆特征检测分析信息
    int                 nVehicleAnalyse;                // 交通车辆特征检测模式掩码

    BOOL                abCrossLineDetection;           // 是否携带交通警戒线信息
    int                 nCrossLineDetection;            // 交通警戒线检测模式掩码

    BOOL                abCrossFenceDetection;          // 是否携带交通穿越围栏信息
    int                 nCrossFenceDetection;           // 交通穿越围栏检测模式掩码

    BOOL                abCrossRegionDetection;         // 是否携带交通警戒区信息
    int                 nCrossRegionDetection;          // 交通警戒区检测模式掩码

    BOOL                abPasteDetection;               // 是否携带交通ATM贴条信息
    int                 nPasteDetection;                // 交通ATM贴条检测模式掩码

    BOOL                abLeftDetection;                // 是否携带交通物品遗留信息
    int                 nLeftDetection;                 // 交通物品遗留检测模式掩码

    BOOL                abPreservation;                 // 是否携带交通物品保全信息
    int                 nPreservation;                  // 交通物品保全检测模式掩码

    BOOL                abTakenAwayDetection;           // 是否携带交通物品搬移信息
    int                 nTakenAwayDetection;            // 交通物品搬移检测模式掩码

    BOOL                abStayDetection;                // 是否携带交通停留/滞留信息
    int                 nStayDetection;                 // 交通停留/滞留检测模式掩码

    BOOL                abParkingDetection;             // 是否携带交通非法停车信息
    int                 nParkingDetection;              // 交通非法停车检测模式掩码

    BOOL                abWanderDetection;              // 是否携带交通徘徊信息
    int                 nWanderDetection;               // 交通徘徊检测模式掩码

    BOOL                abMoveDetection;                // 是否携带交通运动信息
    int                 nMoveDetection;                 // 交通运动检测模式掩码

    BOOL                abTailDetection;                // 是否携带交通尾随信息
    int                 nTailDetection;                 // 交通尾随检测模式掩码

    BOOL                abRioterDetection;              // 是否携带交通聚集信息
    int                 nRioterDetection;               // 交通聚集检测模式掩码

    BOOL                abFightDetection;               // 是否携带交通打架信息
    int                 nFightDetection;                // 交通打架检测模式掩码

    BOOL                abRetrogradeDetection;          // 是否携带交通逆行信息
    int                 nRetrogradeDetection;           // 交通逆行检测模式掩码

    BOOL                abFireDetection;                // 是否携带交通火焰信息
    int                 nFireDetection;                 // 交通火焰检测模式掩码

    BOOL                abSmokeDetection;               // 是否携带交通烟雾信息
    int                 nSmokeDetection;                // 交通烟雾检测模式掩码

    BOOL                abNumberStat;                   // 是否携带交通数量统计信息
    int                 nNumberStat;                    // 交通数量统计检测模式掩码

    BOOL                abVideoAbnormalDetection;       // 是否携带交通视频异常信息
    int                 nVideoAbnormalDetection;        // 交通视频异常检测模式掩码

    BOOL                abPrisonerRiseDetection;        // 是否携带看守所囚犯起身检测信息
    int                 nPrisonerRiseDetection;         // 看守所囚犯起身检测检测模式掩码

    BOOL                abFaceDetection;                // 是否携带人脸检测信息
    int                 nFaceDetection;                 // 人脸检测检测模式掩码

    BOOL                abFaceRecognition;              // 是否携带人脸识别信息
    int                 nFaceRecognition;               // 人脸识别检测模式掩码

    BOOL                abDensityDetection;             // 是否携带密集度检测信息
    int                 nDensityDetection;              // 密集度检测检测模式掩码

    BOOL                abQueueDetection;               // 是否携带排队检测信息
    int                 nQueueDetection;                // 排队检测检测模式掩码

    BOOL                abClimbDetection;               // 是否携带攀高检测信息
    int                 nClimbDetection;                // 攀高检测模式掩码

    BOOL                abLeaveDetection;               // 是否携带离岗检测信息
    int                 nLeaveDetection;                // 离岗检测模式掩码

    BOOL                abVehicleOnPoliceCar;           // 是否携带车载警车信息
    int                 nVehicleOnPoliceCar;            // 车载警车检测模式掩码

    BOOL                abVehicleOnBus;                 // 是否携带车载公交信息
    int                 nVehicleOnBus;                  // 车载公交检测模式掩码

    BOOL                abVehicleOnSchoolBus;           // 是否携带车载校车信息
    int                 nVehicleOnSchoolBus;            // 车载校车检测模式掩码 
}TRAFFIC_EVENT_CHECK_MASK;  

// 违章抓拍时间配置表
typedef struct tagTimeScheduleInfo
{
    BOOL                bEnable;                                              // 是否启用时间表
    CFG_TIME_SECTION    stuTimeSchedule[WEEK_DAY_NUM][MAX_REC_TSECT];         // 时间表
}TIME_SCHEDULE_INFO;

// 违章抓拍自定义时间配置
typedef struct tagViolationTimeSchedule
{
    BOOL                abTrafficGate;                  // 是否携带交通卡口信息
    TIME_SCHEDULE_INFO  stTrafficGate;                  // 交通卡口时间配置

    BOOL                abTrafficJunction;              // 是否携带交通路口信息
    TIME_SCHEDULE_INFO  stTrafficJunction;              // 交通路口时间配置

    BOOL                abTrafficTollGate;              // 是否携带新交通卡口信息
    TIME_SCHEDULE_INFO  stTrafficTollGate;              // 新交通卡口时间配置

    BOOL                abTrafficRunRedLight;           // 是否携带交通闯红灯信息
    TIME_SCHEDULE_INFO  stTrafficRunRedLight;           // 交通闯红灯时间配置
    
    BOOL                abTrafficRunYellowLight;        // 是否携带交通闯黄灯信息
    TIME_SCHEDULE_INFO  stTrafficRunYellowLight;        // 交通闯黄灯时间配置

    BOOL                abTrafficOverLine;              // 是否携带交通压线信息
    TIME_SCHEDULE_INFO  stTrafficOverLine;              // 交通压线时间配置

    BOOL                abTrafficOverYellowLine;        // 是否携带交通压黄线信息
    TIME_SCHEDULE_INFO  stTrafficOverYellowLine;        // 交通压黄线时间配置

    BOOL                abTrafficRetrograde;            // 是否携带交通逆行信息
    TIME_SCHEDULE_INFO  stTrafficRetrograde;            // 交通逆行时间配置

    BOOL                abTrafficTurnLeft;              // 是否携带交通违章左转信息
    TIME_SCHEDULE_INFO  stTrafficTurnLeft;              // 交通违章左转时间配置

    BOOL                abTrafficTurnRight;             // 是否携带交通违章右转信息
    TIME_SCHEDULE_INFO  stTrafficTurnRight;             // 交通路口违章右转类型

    BOOL                abTrafficU_Turn;                // 是否携带交通违章掉头信息
    TIME_SCHEDULE_INFO  stTrafficU_Turn;                // 交通违章掉头时间配置

    BOOL                abTrafficCrossLane;             // 是否携带交通违章变道信息
    TIME_SCHEDULE_INFO  stTrafficCrossLane;             // 交通违章变道时间配置

    BOOL                abTrafficParking;               // 是否携带交通违章停车信息
    TIME_SCHEDULE_INFO  stTrafficParking;               // 交通违章停车时间配置

    BOOL                abTrafficJam;                   // 是否携带交通拥堵信息
    TIME_SCHEDULE_INFO  stTrafficJam;                   // 交通拥堵时间配置

    BOOL                abTrafficIdle;                  // 是否携带交通交通空闲信息
    TIME_SCHEDULE_INFO  stTrafficIdle;                  // 交通交通空闲时间配置

    BOOL                abTrafficWaitingArea;           // 是否携带交通违章驶入待行区信息
    TIME_SCHEDULE_INFO  stTrafficWaitingArea;           // 交通违章驶入待行区时间配置

    BOOL                abTrafficUnderSpeed;            // 是否携带交通欠速信息
    TIME_SCHEDULE_INFO  stTrafficUnderSpeed;            // 交通欠速时间配置

    BOOL                abTrafficOverSpeed;             // 是否携带交通超速信息
    TIME_SCHEDULE_INFO  stTrafficOverSpeed;             // 交通超速时间配置

    BOOL                abTrafficWrongRoute;            // 是否携带交通不按车道行驶信息
    TIME_SCHEDULE_INFO  stTrafficWrongRoute;            // 交通不按车道行驶时间配置

    BOOL                abTrafficYellowInRoute;         // 是否携带交通黄牌占道信息
    TIME_SCHEDULE_INFO  stTrafficYellowInRoute;         // 交通黄牌占道时间配置

    BOOL                abTrafficVehicleInRoute;        // 是否携带交通有车占道信息
    TIME_SCHEDULE_INFO  stTrafficVehicleInRoute;        // 交通有车占道时间配置

    BOOL                abTrafficControl;               // 是否携带交通交通管制信息
    TIME_SCHEDULE_INFO  stTrafficControl;               // 交通交通管制时间配置

    BOOL                abTrafficObjectAlarm;           // 是否携带交通指定类型抓拍信息
    TIME_SCHEDULE_INFO  stTrafficObjectAlarm;           // 交通指定类型抓拍时间配置

    BOOL                abTrafficAccident;              // 是否携带交通交通事故信息
    TIME_SCHEDULE_INFO  stTrafficAccident;              // 交通交通事故时间配置

    BOOL                abTrafficStay;                  // 是否携带交通交通停留/滞留信息
    TIME_SCHEDULE_INFO  stTrafficStay;                  // 交通交通停留/滞留时间配置

    BOOL                abTrafficPedestrainPriority;    // 是否携带交通斑马线行人优先信息
    TIME_SCHEDULE_INFO  stTrafficPedestrainPriority;    // 交通斑马线行人优先时间配置

    BOOL                abTrafficPedestrain;            // 是否携带交通交通行人事件信息
    TIME_SCHEDULE_INFO  stTrafficPedestrain;            // 交通交通行人事件时间配置

    BOOL                abTrafficThrow;                 // 是否携带交通交通抛洒物品事件信息
    TIME_SCHEDULE_INFO  stTrafficThrow;                 // 交通交通抛洒物品事件时间配置

    BOOL                abTrafficVehicleInBusRoute;     // 是否携带交通违章占道信息
    TIME_SCHEDULE_INFO  stTrafficVehicleInBusRoute;     // 交通违章占道时间配置

    BOOL                abTrafficBacking;               // 是否携带交通违章倒车信息
    TIME_SCHEDULE_INFO  stTrafficBacking;               // 交通违章倒车时间配置

    BOOL                abTrafficOverStopLine;          // 是否携带交通压停止线信息
    TIME_SCHEDULE_INFO  stTrafficOverStopLine;          // 交通压停止线时间配置

    BOOL                abTrafficParkingOnYellowBox;    // 是否携带交通黄网格线抓拍信息
    TIME_SCHEDULE_INFO  stTrafficParkingOnYellowBox;    // 交通黄网格线抓拍时间配置

    BOOL                abTrafficParkingSpaceParking;   // 是否携带交通车位有车信息
    TIME_SCHEDULE_INFO  stTrafficParkingSpaceParking;   // 交通车位有车时间配置

    BOOL                abTrafficParkingSpaceNoParking; // 是否携带交通车位无车信息
    TIME_SCHEDULE_INFO  stTrafficParkingSpaceNoParking; // 交通车位无车时间配置

    BOOL                abTrafficParkingSpaceOverLine;  // 是否携带交通车位有车压线信息
    TIME_SCHEDULE_INFO  stTrafficParkingSpaceOverLine;  // 交通车位有车压线时间配置

    BOOL                abParkingSpaceDetection;        // 是否携带交通多停车位状态检测信息
    TIME_SCHEDULE_INFO  stParkingSpaceDetection;        // 交通多停车位状态检测时间配置

    BOOL                abTrafficRestrictedPlate;       // 是否携带交通受限车牌信息
    TIME_SCHEDULE_INFO  stTrafficRestrictedPlate;       // 交通受限车牌时间配置

    BOOL                abTrafficWithoutSafeBelt;       // 是否携带交通不系安全带信息
    TIME_SCHEDULE_INFO  stTrafficWithoutSafeBelt;       // 交通不系安全带时间配置

    BOOL                abTrafficNoPassing;             // 是否携带交通禁行信息
    TIME_SCHEDULE_INFO  stTrafficNoPassing;             // 交通禁行时间配置

    BOOL                abVehicleAnalyse;               // 是否携带交通车辆特征检测分析信息
    TIME_SCHEDULE_INFO  stVehicleAnalyse;               // 交通车辆特征时间配置

    BOOL                abCrossLineDetection;           // 是否携带交通警戒线信息
    TIME_SCHEDULE_INFO  stCrossLineDetection;           // 交通警戒线时间配置

    BOOL                abCrossFenceDetection;          // 是否携带交通穿越围栏信息
    TIME_SCHEDULE_INFO  stCrossFenceDetection;          // 交通穿越围栏时间配置

    BOOL                abCrossRegionDetection;         // 是否携带交通警戒区信息
    TIME_SCHEDULE_INFO  stCrossRegionDetection;         // 交通警戒区时间配置

    BOOL                abPasteDetection;               // 是否携带交通ATM贴条信息
    TIME_SCHEDULE_INFO  stPasteDetection;               // 交通ATM贴条时间配置

    BOOL                abLeftDetection;                // 是否携带交通物品遗留信息
    TIME_SCHEDULE_INFO  stLeftDetection;                // 交通物品遗留时间配置

    BOOL                abPreservation;                 // 是否携带交通物品保全信息
    TIME_SCHEDULE_INFO  stPreservation;                 // 交通物品保全时间配置

    BOOL                abTakenAwayDetection;           // 是否携带交通物品搬移信息
    TIME_SCHEDULE_INFO  stTakenAwayDetection;           // 交通物品搬移时间配置

    BOOL                abStayDetection;                // 是否携带交通停留/滞留信息
    TIME_SCHEDULE_INFO  stStayDetection;                // 交通停留/滞留时间配置

    BOOL                abParkingDetection;             // 是否携带交通非法停车信息
    TIME_SCHEDULE_INFO  stParkingDetection;             // 交通非法停车时间配置

    BOOL                abWanderDetection;              // 是否携带交通徘徊信息
    TIME_SCHEDULE_INFO  stWanderDetection;              // 交通徘徊时间配置

    BOOL                abMoveDetection;                // 是否携带交通运动信息
    TIME_SCHEDULE_INFO  stMoveDetection;                // 交通运动时间配置

    BOOL                abTailDetection;                // 是否携带交通尾随信息
    TIME_SCHEDULE_INFO  stTailDetection;                // 交通尾随时间配置

    BOOL                abRioterDetection;              // 是否携带交通聚集信息
    TIME_SCHEDULE_INFO  stRioterDetection;              // 交通聚集时间配置

    BOOL                abFightDetection;               // 是否携带交通打架信息
    TIME_SCHEDULE_INFO  stFightDetection;               // 交通打架时间配置

    BOOL                abRetrogradeDetection;          // 是否携带交通逆行信息
    TIME_SCHEDULE_INFO  stRetrogradeDetection;          // 交通逆行时间配置

    BOOL                abFireDetection;                // 是否携带交通火焰信息
    TIME_SCHEDULE_INFO  stFireDetection;                // 交通火焰时间配置

    BOOL                abSmokeDetection;               // 是否携带交通烟雾信息
    TIME_SCHEDULE_INFO  stSmokeDetection;               // 交通烟雾时间配置

    BOOL                abNumberStat;                   // 是否携带交通数量统计信息
    TIME_SCHEDULE_INFO  stNumberStat;                   // 交通数量统计时间配置

    BOOL                abVideoAbnormalDetection;       // 是否携带交通视频异常信息
    TIME_SCHEDULE_INFO  stVideoAbnormalDetection;       // 交通视频异常时间配置

    BOOL                abPrisonerRiseDetection;        // 是否携带看守所囚犯起身检测信息
    TIME_SCHEDULE_INFO  stPrisonerRiseDetection;        // 看守所囚犯起身检测时间配置

    BOOL                abFaceDetection;                // 是否携带人脸检测信息
    TIME_SCHEDULE_INFO  stFaceDetection;                // 人脸检测时间配置

    BOOL                abFaceRecognition;              // 是否携带人脸识别信息
    TIME_SCHEDULE_INFO  stFaceRecognition;              // 人脸识别时间配置

    BOOL                abDensityDetection;             // 是否携带密集度检测信息
    TIME_SCHEDULE_INFO  stDensityDetection;             // 密集度检测时间配置

    BOOL                abQueueDetection;               // 是否携带排队检测信息
    TIME_SCHEDULE_INFO  stQueueDetection;               // 排队检测时间配置

    BOOL                abClimbDetection;               // 是否携带攀高检测信息
    TIME_SCHEDULE_INFO  stClimbDetection;               // 攀高时间配置

    BOOL                abLeaveDetection;               // 是否携带离岗检测信息
    TIME_SCHEDULE_INFO  stLeaveDetection;               // 离岗时间配置

    BOOL                abVehicleOnPoliceCar;           // 是否携带车载警车信息
    TIME_SCHEDULE_INFO  stVehicleOnPoliceCar;           // 车载警车时间配置

    BOOL                abVehicleOnBus;                 // 是否携带车载公交信息
    TIME_SCHEDULE_INFO  stVehicleOnBus;                 // 车载公交时间配置

    BOOL                abVehicleOnSchoolBus;           // 是否携带车载校车信息
    TIME_SCHEDULE_INFO  stVehicleOnSchoolBus;           // 车载校车时间配置

	BOOL                abTrafficNonMotorHoldUmbrella;  // 是否携带非机动车装载伞具时间配置
	TIME_SCHEDULE_INFO  stTrafficNonMotorHoldUmbrella;  // 非机动车装载伞具时间配置
}VIOLATION_TIME_SCHEDULE;

// MixModeConfig中关于车道配置信息
typedef struct tagMixModeLaneInfo
{
    unsigned int                nLaneNum;                           // 车道配置个数
    TRAFFIC_EVENT_CHECK_INFO    stCheckInfo[MAX_LANE_CONFIG_NUMBER];     // 车道配置对应事件检测信息
}MIX_MODE_LANE_INFO;

// MixModeConfig 混合模式违章配置
typedef struct tagMIX_MODE_CONFIG
{
	BOOL                        bLaneDiffEnable;                    // 是否按车道区分
	MIX_MODE_LANE_INFO          stLaneInfo;
    TRAFFIC_EVENT_CHECK_INFO    stCheckInfo;
}MIX_MODE_CONFIG;

typedef struct tagPeriodOfValidity
{
    CFG_NET_TIME            stBeginTime;                    // 标定开始时间 
    CFG_NET_TIME            stEndTime;                      // 标定到期时间
}PERIOD_OF_VALIDITY;

// 交通全局配置对应标定相关配置
typedef struct tagTrafficCalibrationInfo
{
    char                    szUnit[CFG_COMMON_STRING_256];              // 标定单位
    char                    szCertificate[CFG_COMMON_STRING_256];       // 标定证书
    PERIOD_OF_VALIDITY      stPeriodOfValidity;                         // 标定有效期
}TRAFFIC_CALIBRATION_INFO;

// 交通配置对应传输策略
typedef enum tagEmTransferPolicy
{
    EM_TRAFFIC_TRANSFER_UNKNOWN,            // 未知策略
    EM_TRAFFIC_TRANSFER_REALTIME,           // "RealtimePriority" 实时优先
    EM_TRAFFIC_TRANSFER_SEQUENCE,           // "SequencePriority" 顺序优先

}EM_TRANSFER_POLICY;

// 交通全局配置对应图片命名格式参数配置
typedef struct tagTrafficNamingFormat
{
    char                    szFormat[CFG_COMMON_STRING_256];            // 图片格式
}TRAFFIC_NAMING_FORMAT;

// 交通全局配置对应灯组状态配置
typedef struct tagEnableLightStateInfo
{
    BOOL                    bEnable;      // 是否启动应用层收到的灯组状态给底层
}ENABLE_LIGHT_STATE_INFO;

// CFG_CMD_TRAFFICGLOBAL 交通全局配置配置表
typedef struct tagCFG_TRAFFICGLOBAL_INFO
{
	VIOLATIONCODE_INFO      stViolationCode;                            // 违章代码配置表                          
    BOOL                    bEnableRedList;                             // 使能红名单检测,使能后,名单内车辆违章不上报

    BOOL                    abViolationTimeSchedule;                    // 是否携带违章抓拍自定义时间配置
    VIOLATION_TIME_SCHEDULE stViolationTimeSchedule;                    // 违章抓拍自定义时间配置
    
    BOOL                    abEnableBlackList;                          // 是否携带使能黑名单检测信息
    BOOL                    bEnableBlackList;                           // 使能黑名单检测

    BOOL                    abPriority;                                 // 是否携带违章优先级参数
    unsigned int            nPriority;                                  // 违章优先级个数
    char                    szPriority[MAX_PRIORITY_NUMBER][CFG_COMMON_STRING_256]; // 违章优先级, 0为最高优先级    

    BOOL                    abNamingFormat;                             // 是否携带图片命名格式参数
    TRAFFIC_NAMING_FORMAT   stNamingFormat;                             // 图片命名格式参数配置

    BOOL                    abVideoNamingFormat;                        // 是否携带录像命名格式参数
    TRAFFIC_NAMING_FORMAT   stVideoNamingFormat;                        // 录像命名格式参数配置

    BOOL                    abCalibration;                              // 是否携带标定信息
    TRAFFIC_CALIBRATION_INFO stCalibration;                             // 标定信息
    
    BOOL                    abAddress;                                  // 是否携带查询地址参数
    char                    szAddress[CFG_COMMON_STRING_256];           // 查询地址,UTF-8编码

    BOOL                    abTransferPolicy;                           // 是否携带传输策略参数
    EM_TRANSFER_POLICY      emTransferPolicy;                           // 传输策略

    BOOL                    abSupportModeMaskConfig;                    // 是否携带违章掩码 
    TRAFFIC_EVENT_CHECK_MASK stSupportModeMaskConfig;                   // 违章类型支持的检测模式掩码配置

    BOOL                    abIsEnableLightState;                       // 是否携带灯组状态
    ENABLE_LIGHT_STATE_INFO stIsEnableLightState;                       // 交通全局配置对应图片命名格式参数配置
    
    BOOL                    abMixModeInfo;                              // 是否含有混合模式配置
    MIX_MODE_CONFIG         stMixModeInfo;                              // 混合模式配置
}CFG_TRAFFICGLOBAL_INFO;

// CFG_CMD_VIDEOENCODEROI 视频编码ROI(Region of Intrest)配置
#define DH_MAX_QUALITY_REGION_NUM 8
typedef struct tagCFG_VIDEOENCODEROI_INFO
{
	int      nRegionNum;                               // 优化区域个数
	CFG_RECT stRegions[DH_MAX_QUALITY_REGION_NUM];     // 优化区域 支持多个优化区域,使用相对坐标体系,取值均为0~8191
	BYTE     byQuality;        // 图像质量 取值1~6,值越大,图像质量越好
	bool     bMain;            // 优化主码流视频编码
	bool     bExtra1;          // 优化辅码流1视频编码	
	bool     bExtra2;          // 优化辅码流2视频编码
	bool     bExtra3;          // 优化辅码流3视频编码
	bool     bSnapshot;        // 优化抓图编码
	BYTE     byReserved2[2];   // 对齐
}CFG_VIDEOENCODEROI_INFO;

// ATM取款超时配置
typedef struct tagCFG_ATMMOTION_INFO
{
	int nTimeLimit;            // 取款超时时间,单位:秒
}CFG_ATMMOTION_INFO;

typedef struct tagCFG_SNAPSOURCE_INFO_SINGLE_CHANNEL
{
	bool		bEnable;			// 使能
	BYTE		bReserved1[3];		// 保留字段,对齐
	BYTE		bDevice[64];		// 设备名
	DWORD		dwChannel;			// 视频通道号
	DWORD		dwLinkVideoChannel; // 抓图通道对应的视频通道号
	BYTE		bReserved[512];		// 保留字段
}SNAPSOURCE_INFO_SINGLE_CHANNEL;

typedef struct tagCFG_SNAPSOURCE_INFO
{
	DWORD dwCount;												//要配置的通道的个数
	SNAPSOURCE_INFO_SINGLE_CHANNEL singleChnSanpInfo[MAX_VIDEO_CHANNEL_NUM];	//SNAPSOURCE_INFO_SINGLE_CHANNEL数组的地址
}CFG_SNAPSOURCE_INFO;

typedef struct tagDEVICE_STATUS
{
	char	szDeviceName[MAX_REMOTEDEVICENAME_LEN];	//远程设备的名字
	BYTE	bDeviceStatus;							//远程设备的状态 0:断线 1:在线
	BYTE	bReserved[63];							//保留字节
}DEVICE_STATUS;

typedef struct tagCFG_REMOTE_DEVICE_STATUS
{
	DEVICE_STATUS devStatus[MAX_REMOTE_DEV_NUM]; //设备状态
	DWORD		  dwDevCount;					 //设备数量
	BYTE		  bReserved[1024];				 //保留字节
}CFG_REMOTE_DEVICE_STATUS;

// 同轴报警最大个数
#define MAX_COAXIAL_ALARM_COUNT		64

// 同轴报警类型
typedef enum tagEM_COAXIAL_ALARM_TYPE
{
	EM_COAXIAL_ALARM_TYPE_UNKNOWN,					// 未知
	EM_COAXIAL_ALARM_TYPE_EXT_ALARM,				// 同轴自带外部报警
	EM_COAXIAL_ALARM_TYPE_MOTION_ALARM,				// 同轴自带动检报警
	EM_COAXIAL_ALARM_TYPE_VOLTAGE_ALARM,			// 同轴自带电压报警
	EM_COAXIAL_ALARM_TYPE_ALARM_LOCAL,				// 同轴网关防区传感器报警
	EM_COAXIAL_ALARM_TYPE_ALARM_BEL,				// 同轴网关报警喇叭
	EM_COAXIAL_ALARM_TYPE_TEMPERATURE_ALARM,		// 同轴温度报警
	EM_COAXIAL_ALARM_TYPE_HUMIDITY_ALARM,			// 同轴湿度报警
} EM_COAXIAL_ALARM_TYPE;

// 产品定义信息
typedef struct tagCFG_PRODUCT_DEFINITION_INFO
{
	int						nCoaxialAlarmCount;									// 设备支持的报警数量
	EM_COAXIAL_ALARM_TYPE	emCoaxialAlarm[MAX_COAXIAL_ALARM_COUNT];			// 设备支持的报警
} CFG_PRODUCT_DEFINITION_INFO;

//-----------------------------音频分析相关配置------------------------------
// 事件类型 EVENT_IVS_AUDIO_ABNORMALDETECTION (声音异常检测事件)对应规则配置
typedef struct tagCFG_IVS_AUDIO_ABNORMALDETECTION_INFO
{
	char				szRuleName[MAX_NAME_LEN];								// 规则名称,不同规则不能重名
	bool				bRuleEnable;											// 规则使能
	BYTE                bReserved[3];                                           // 保留字段
	int                 nDecibel;                                               // 声音强度,单位 db
	int                 nFrequency;                                             // 声音频率, 单位 Hz
	int                 nMinDuration;                                           // 最短持续时间, 单位 s
	CFG_ALARM_MSG_HANDLE stuEventHandler;										// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];			// 事件响应时间段
}CFG_IVS_AUDIO_ABNORMALDETECTION_INFO;

typedef struct tagCFG_CAP_AUDIO_ANALYSE_INFO
{
	int                 nSupportedRuleNum;                                      // 支持的规则类型数
	DWORD               dwSupportedRules[MAX_RULE_LIST_SIZE];                   // 具体支持的规则类型
}CFG_CAP_AUDIO_ANALYSE_INFO;

//-------------------------IPS && SVR------------------------------

// 设备状态信息
typedef struct tagCFG_DEVICESTATUS_INFO
{
	int                 nPowerNum;                               // 电源个数
	BYTE                byPowerStatus[MAX_POWER_NUM];            // 电源状态,1:正常 2:异常 3:未知
	int                 nCPUNum;                                 // CPU个数
	int                 nCPUTemperature[MAX_CPU_NUM];            // CPU温度
	int                 nFanNum;                                 // 风扇个数
	int                 nRotatoSpeed[MAX_FUN_NUM];               // 风扇转速
}CFG_DEVICESTATUS_INFO;

// 扩展柜信息
typedef struct tagCFG_HARDDISK_INFO 
{
	int                     nChannel;                        // 通道号
	int                     nCapacity;                       // 硬盘容量 
	BYTE                    byStatus;                        // 硬盘状态,0:unknown 1:running 2:fail 3.spare热备
															 // 4.sync同步 5.faulty失效 6.rebuilding重建 7.remove移除 8.sleep休眠
	BYTE                    byUsedStatus;                    // 使用状态,1.空闲 2.在用 3.未知
    BYTE                    byHotBack;                       // 是否是热备盘,0:热备盘 1:非热备盘
	BYTE                    byReserved;                      // 字节对齐
	char                    szRaidName[MAX_NAME_LEN];        // 所在Raid(磁盘组)的名称	"RaidName" : "Raid0",
															 // 所在Raid(磁盘组)的名称。如不属于任何Raid,则字段为null。
															 // 比如热备盘,属于全局热备盘的,则传null。
	char                    szType[32];                      // 硬盘型号
	int                     nTank;                           // 扩展柜, 0:主机;1:扩展柜1; 2:扩展柜2	……
	int						nRemainSpace;					 // 剩余容量,单位M
}CFG_HARDDISK_INFO;

typedef struct tagCFG_HARDDISKTANK_INFO
{
	char                    szTankName[MAX_NAME_LEN];           // 存储柜名称
	int                     nHardDiskNum;                       // 硬盘个数
	CFG_HARDDISK_INFO       stuHarddiskInfo[MAX_HARDDISK_NUM];  // 硬盘信息
}CFG_HARDDISKTANK_INFO;

typedef struct tagCFG_HARDISKTANKGROUP_INFO
{
	int                      nTankNum;                       // 硬盘存储柜个数
	CFG_HARDDISKTANK_INFO    stuHarddisktank[MAX_TANK_NUM];  // 硬盘存储柜数组
}CFG_HARDISKTANKGROUP_INFO;

// Raid组信息
typedef struct tagCFG_RAID_INFO
{
	char                    szRaidName[MAX_NAME_LEN];         // Raid名称
	BYTE                    byType;                           // 类型 1:Jbob, 2:Raid0, 3:Raid1, 4:Raid5
	BYTE                    byStatus;                         // 状态  0:unknown, 1:active, 2:degraded, 3:inactive, 4: Resyncing
															  // 5.Clean 6.Unknow 7.Recovering 8.Reshaping 9.Checking 10.NotStarted
	BYTE                    byStatusCount;                    // 状态数量, 状态数>=1时, 用byStatusGroup表示状态
	BYTE                    byReserved;						  // 字节对齐
	int                     nMember[MAX_CHAN_NUM];            // 组成磁盘通道
	int                     nDiskNUM;                         // 磁盘个数
	int                     nCapacity;                        // 容量
	int                     nTank;                            // 扩展柜
	int						nRemainSpace;					  // 剩余容量,单位M
	BYTE					byStatusGroup[MAX_STATUS_NUM];	  // 状态数组, 参数值同byStatus
}CFG_RAID_INFO;

typedef struct tagCFG_RAIDGROUP_INFO
{
	int                     nRaidNum;                         // Raid个数
	CFG_RAID_INFO           stuRaidInfo[MAX_RAID_NUM];        // Raid组信息
}CFG_RAIDGROUP_INFO;

// 存储池组信息
typedef struct tagCFG_STORAGEPOOL_INFO
{
	char                   szName[MAX_NAME_LEN];               // 存储池名称
	int                    nMemberNum;                         // 设备数量
	char                   szMember[MAX_DEV_NUM][MAX_NAME_LEN];// 组成设备
	int                    nUsed;                              // 已用容量
    int                    nCapacity;                          // 总容量
    int                    nStatus;                            // 状态	0:unknown 1:active 2:degraded 3:inactive
    int                    nTank;                              // 扩展柜	0:主机, 1:扩展柜1, 2:扩展柜2 ……
}CFG_STORAGEPOOL_INFO;

typedef struct tagCFG_STORAGEPOOLGROUP_INFO
{
	int                     nStroagePoolNum;                           // 存储池个数
	CFG_STORAGEPOOL_INFO    stuStoragePoolInfo[MAX_STORAGEPOOL_NUM];   // 存储池信息
}CFG_STORAGEPOOLGROUP_INFO;

// 文件系统组信息
typedef struct tagCFG_STORAGEPOSITION_INFO
{
	char                   szName[MAX_NAME_LEN];               // 存储位置名称	
    char                   szStoragePoolName[MAX_NAME_LEN];    // 存储池名称	
    int                    nUsedCapacity;                      // 已用容量,单位G	
    int                    nTotalCapacity;                     // 容量,单位G	
	BYTE                   byStatus;                           // 状态 0.未知 1.正常 2.配置异常 3.挂载异常
    BYTE                   byReserved[3];                      // 字节对齐
}CFG_STORAGEPOSITION_INFO;

typedef struct tafCFG_STORAGEPOSITIONGROUP_INFO
{
	int                      nStoragePositionNum;                         // 存储信息个数
	CFG_STORAGEPOSITION_INFO stuStoragePositionInfo[MAX_STRORAGEPOS_NUM]; // 文件系统组信息      
}CFG_STORAGEPOSITIONGROUP_INFO;

// 前端设备组信息
typedef struct tagCFG_VIDEOINDEV_INFO
{
	char                   szDevName[MAX_NAME_LEN];             // 前端设备名称	
    char                   szDevID[MAX_NAME_LEN];               // 设备ID	
    char                   szDevType[MAX_NAME_LEN];             // 设备类型
    int                    nTotalChan;                          // 总通道数
	int                    nTotalAlarmChan;                     // 报警通道总数
    char                   szIP[MAX_ADDRESS_LEN];               // 设备IP
	BYTE                   byStatus;                            // 状态 0:未知 1:在线 2:离线
	BYTE                   byReserved[3];                       // 字节对齐
}CFG_VIDEOINDEV_INFO;

typedef struct tafCFG_VIDEOINDEVGROUP_INFO
{
	int                    nVideoDevNum;                              // 前端设备个数
	CFG_VIDEOINDEV_INFO    stuVideoInDevInfo[MAX_VIDEODEV_NUM];       // 前端设备组信息      
}CFG_VIDEOINDEVGROUP_INFO;

// 通道录像组状态
typedef struct tagCFG_DEVRECORD_INFO
{
	char                   szDevName[MAX_NAME_LEN];               // 设备名称
	char                   szIP[MAX_ADDRESS_LEN];                 // 设备IP	
	char                   szChannel[MAX_NAME_LEN];               // 通道号
    char                   szChannelName[MAX_NAME_LEN];           // 通道名称	
    char                   szStoragePosition[MAX_NAME_LEN];       // 存储位置信息
	BYTE                   byStatus;                              // 状态 0:未知 1:录像 2:停止
	BYTE                   byReserved[3];                         // 字节对齐
}CFG_DEVRECORD_INFO;

typedef struct tagCFG_DEVRECORDGROUP_INFO
{
	int                    nChannelNum;                          // 通道个数
	CFG_DEVRECORD_INFO     stuDevRecordInfo[MAX_CHAN_NUM];       // 通道录像状态信息
}CFG_DEVRECORDGROUP_INFO;

#define byDahuaII byPrivateII
#define byDahuaIId byPrivateIId

// 服务状态
typedef struct tagCFG_IPSERVER_STATUS
{
	int                    nSupportedServerNum;                  // 提供的服务个数
	char                   szSupportServer[MAX_SEVER_NUM][MAX_NAME_LEN];  // 提供的服务名称 Svr Svrd(SVR守护服务) DataBase DataBased(DataBase守护服务) NtpServer NtpServerd(NtpServer守护服务) DahuaII DahuaIId(DahuaII守护服务) Samba Nfs Ftp iScsi 
	int                    nSvrSuppSubServerNum;                          // Svr提供的子服务信息个数
	char                   szSvrSuppSubServer[MAX_SEVER_NUM][MAX_NAME_LEN];           // Svr提供的子服务信息 CMS DMS	MTS	SS RMS DBR
	BYTE                   byCMS;                                // 0:未知 1:运行 2:未运行
	BYTE                   byDMS;                                // 0:未知 1:运行 2:未运行
	BYTE                   byMTS;                                // 0:未知 1:运行 2:未运行
	BYTE                   bySS;                                 // 0:未知 1:运行 2:未运行
	BYTE                   byRMS;                                // 0:未知 1:运行 2:未运行
	BYTE                   byDBR;                                // 0:未知 1:运行 2:未运行
	BYTE                   bySvrd;                               // 0:未知 1:运行 2:未运行
	BYTE                   byDataBase;                           // 0:未知 1:运行 2:未运行
	BYTE                   byDataBased;                          // 0:未知 1:运行 2:未运行
	BYTE                   byNtpServer;                          // 0:未知 1:运行 2:未运行
	BYTE                   byNtpServerd;                         // 0:未知 1:运行 2:未运行
	BYTE                   byPrivateII;                          // 0:未知 1:运行 2:未运行
	BYTE                   byPrivateIId;                         // 0:未知 1:运行 2:未运行
	BYTE                   bySAMBA;                              // 0:未知 1:运行 2:未运行
	BYTE                   byNFS;                                // 0:未知 1:运行 2:未运行
	BYTE                   byFTP;                                // 0:未知 1:运行 2:未运行
	BYTE                   byISCSI;                              // 0:未知 1:运行 2:未运行
	BYTE                   byReserved[3];                        // 字节对齐
}CFG_IPSERVER_STATUS;

//---------------------------视频矩阵-----------------------------------
#define MAX_SUPPORT_SPLIT_MODE_NUM    16             // 支持的画面分割的能力最大数
#define MAX_MATRIX_PLAN               4              // 最大矩阵方案数
#define MAX_TOUR_MODE                 16             // 最大轮巡队列数

typedef enum tagMATRIX_VIEW_SPLITMODE
{
	MATRIX_VIEW_SPLIT1 = 0,
	MATRIX_VIEW_SPLIT2,	
	MATRIX_VIEW_SPLIT4,
	MATRIX_VIEW_SPLIT8,
	MATRIX_VIEW_SPLIT9,	
	MATRIX_VIEW_SPLIT16,
	MATRIX_VIEW_SPLITPIP,
	MATRIX_VIEW_SPLIT6,
	MATRIX_VIEW_SPLIT12,
	MATRIX_VIEW_SPLIT25,
	MATRIX_VIEW_SPLIT36,
	MATRIX_VIEW_SPLIT_NR,
}MATRIX_VIEW_SPLITMODE;

// 轮巡模式
typedef struct tagCFG_TOUR_MODE
{
	int               nViewMode;                                    // 画面分割模式,参考枚举类型MATRIX_VIEW_SPLITMODE
	unsigned int      dwViewSplitMask;                     // 表示ViewMode指定模式下,使能的几个分隔方法,使用掩码表达方式
													       // 例如:0x00000007:表示模式3(SPLIT8)的分隔1,2,3使能开启,其他未使能,0x0000000F表示分隔1,2,3,4使能
}CFG_TOUR_MODE;

// SPOT视频矩阵方案
typedef struct tagCFG_VIDEO_MATRIX_PLAN
{
	BOOL            bEnable;                                          // 矩阵配置方案使能
	int             nTourPeriod;                                      // 矩阵轮巡间隔,单位秒,>=1
	int             nTourModeNum;                                     // 轮巡队列个数
	CFG_TOUR_MODE   stuTourMode[MAX_TOUR_MODE];                       // 轮巡队列
}CFG_VIDEO_MATRIX_PLAN;

// SPOT矩阵配置
typedef struct tagCFG_VIDEO_MATRIX
{
	int                         nSupportSplitModeNumber;         // 支持的画面分割的能力数
	BYTE                        bySupportSplitMode[MAX_SUPPORT_SPLIT_MODE_NUM];          // 支持的画面分割的能力
	int                         nMatrixPlanNumber;               // 矩阵方案数
	CFG_VIDEO_MATRIX_PLAN       stuMatrixPlan[MAX_MATRIX_PLAN];                // 矩阵方案
}CFG_VIDEO_MATRIX;

///////////////////////////////////视频诊断配置///////////////////////////////////////
// 视频抖动检测
typedef struct tagCFG_VIDEO_DITHER_DETECTION
{
	BOOL							bEnable;									// 使能配置
	int								nMinDuration;								// 最短持续时间 单位:秒 0~65535
	BYTE							byThrehold1;								// 预警阀值 取值1-100
	BYTE							byThrehold2;								// 报警阀值 取值1-100
}CFG_VIDEO_DITHER_DETECTION;
// 条纹检测
typedef struct tagCFG_VIDEO_STRIATION_DETECTION 
{
	BOOL							bEnable;									// 使能配置
	int								nMinDuration;								// 最短持续时间 单位:秒 0~65535
	BYTE							byThrehold1;								// 预警阀值 取值1-100
	BYTE							byThrehold2;								// 报警阀值 取值1-100
	BYTE							byReserved1[2];								// 字节对齐
	BOOL							bUVDetection;								// UV分量是否检测					
}CFG_VIDEO_STRIATION_DETECTION;
// 视频丢失检测
typedef struct tagCFG_VIDEO_LOSS_DETECTION
{
	BOOL							bEnable;									// 使能配置
	int								nMinDuration;								// 最短持续时间 单位:秒 0~65535
}CFG_VIDEO_LOSS_DETECTION;
// 视频遮挡检测
typedef struct tagCFG_VIDEO_COVER_DETECTION
{
	BOOL							bEnable;									// 使能配置
	int								nMinDuration;								// 最短持续时间 单位:秒 0~65535
	BYTE							byThrehold1;								// 预警阀值 取值1-100
	BYTE							byThrehold2;								// 报警阀值 取值1-100
}CFG_VIDEO_COVER_DETECTION;
// 画面冻结检测
typedef struct tagCFG_VIDEO_FROZEN_DETECTION
{
	BOOL							bEnable;									// 使能配置
	int								nMinDuration;								// 最短持续时间 单位:秒 0~65535
}CFG_VIDEO_FROZEN_DETECTION;
// 亮度异常检测
typedef struct tagCFG_VIDEO_BRIGHTNESS_DETECTION
{	
	BOOL							bEnable;									// 使能配置
	int								nMinDuration;								// 最短持续时间 单位:秒 0~65535
	BYTE							bylowerThrehold1;							// 预警阀值 取值1-100
	BYTE							bylowerThrehold2;							// 报警阀值 取值1-100
	BYTE							byUpperThrehold1;							// 预警阀值 取值1-100
	BYTE							byUpperThrehold2;							// 报警阀值 取值1-100
}CFG_VIDEO_BRIGHTNESS_DETECTION;
// 对比度异常检测
typedef struct tagCFG_VIDEO_CONTRAST_DETECTION
{	
	BOOL							bEnable;									// 使能配置
	int								nMinDuration;								// 最短持续时间 单位:秒 0~65535
	BYTE							bylowerThrehold1;							// 预警阀值 取值1-100
	BYTE							bylowerThrehold2;							// 报警阀值 取值1-100
	BYTE							byUpperThrehold1;							// 预警阀值 取值1-100
	BYTE							byUpperThrehold2;							// 报警阀值 取值1-100
}CFG_VIDEO_CONTRAST_DETECTION;
// 偏色检测
typedef struct tagCFG_VIDEO_UNBALANCE_DETECTION
{	
	BOOL							bEnable;									// 使能配置
	int								nMinDuration;								// 最短持续时间 单位:秒 0~65535
	BYTE							byThrehold1;								// 预警阀值 取值1-100
	BYTE							byThrehold2;								// 报警阀值 取值1-100
}CFG_VIDEO_UNBALANCE_DETECTION;
// 噪声检测
typedef struct tagCFG_VIDEO_NOISE_DETECTION
{	
	BOOL							bEnable;									// 使能配置
	int								nMinDuration;								// 最短持续时间 单位:秒 0~65535
	BYTE							byThrehold1;								// 预警阀值 取值1-100
	BYTE							byThrehold2;								// 报警阀值 取值1-100
}CFG_VIDEO_NOISE_DETECTION;
// 模糊检测
typedef struct tagCFG_VIDEO_BLUR_DETECTION
{
	BOOL							bEnable;									// 使能配置
	int								nMinDuration;								// 最短持续时间 单位:秒 0~65535
	BYTE							byThrehold1;								// 预警阀值 取值1-100
	BYTE							byThrehold2;								// 报警阀值 取值1-100
}CFG_VIDEO_BLUR_DETECTION;
// 场景变化检测
typedef struct tagCFG_VIDEO_SCENECHANGE_DETECTION
{	
	BOOL							bEnable;									// 使能配置
	int								nMinDuration;								// 最短持续时间 单位:秒 0~65535
	BYTE							byThrehold1;								// 预警阀值 取值1-100
	BYTE							byThrehold2;								// 报警阀值 取值1-100
}CFG_VIDEO_SCENECHANGE_DETECTION;

// 视频延时检测
typedef struct tagCFG_VIDEO_DELAY_DETECTION
{
    BOOL    bEnable;                // 使能配置
}CFG_VIDEO_DELAY_DETECTION;

// 云台移动检测
typedef struct tagCFG_PTZ_MOVING_DETECTION
{
    BOOL    bEnable;                // 使能配置
}CFG_PTZ_MOVING_DETECTION;

// 黑白图像检测
typedef struct tagCFG_VIDEO_BLACKWHITE_DETECTION
{
	BOOL	bEnable;				// 使能配置
	int		nEarlyWarning;			// 预警阈值
	int		nAlarm;					// 报警阈值
	int		nMinDuration;			// 最短持续时间
} CFG_VIDEO_BLACKWHITE_DETECTION;

// 场景剧变检测
typedef struct tagCFG_VIDEO_DRAMATICCHANGE_DETECTION
{
	BOOL	bEnable;				// 使能配置
	int		nEarlyWarning;			// 预警阈值
	int		nAlarm;					// 报警阈值
	int		nMinDuration;			// 最短持续时间
} CFG_VIDEO_DRAMATICCHANGE_DETECTION;

// 视频完好率监测
typedef struct tagCFG_VIDEO_AVAILABILITY_DETECTION
{
	BOOL	bEnable;				// 使能配置
}CFG_VIDEO_AVAILABILITY_DETECTION;

typedef struct tagCFG_VIDEO_DIAGNOSIS_PROFILE
{
	char								szName[MAX_PATH];							// 名称Ansi编码

	CFG_VIDEO_DITHER_DETECTION*			pstDither;									// 视频抖动检测
	CFG_VIDEO_STRIATION_DETECTION*		pstStriation;								// 视频条纹检测
	CFG_VIDEO_LOSS_DETECTION*			pstLoss;									// 视频丢失检测
	CFG_VIDEO_COVER_DETECTION*			pstCover;									// 视频遮挡检测
	CFG_VIDEO_FROZEN_DETECTION*			pstFrozen;									// 视频冻结检测
	CFG_VIDEO_BRIGHTNESS_DETECTION*		pstBrightness;								// 视频亮度异常检测
	CFG_VIDEO_CONTRAST_DETECTION*		pstContrast;								// 对比度异常检测
	CFG_VIDEO_UNBALANCE_DETECTION*		pstUnbalance;								// 偏色异常检测
	CFG_VIDEO_NOISE_DETECTION*			pstNoise;									// 噪声检测
	CFG_VIDEO_BLUR_DETECTION*			pstBlur;									// 模糊检测
	CFG_VIDEO_SCENECHANGE_DETECTION* 	pstSceneChange;								// 场景变化检测
    CFG_VIDEO_DELAY_DETECTION*       	pstVideoDelay;                             	// 视频延时检测
    CFG_PTZ_MOVING_DETECTION*        	pstPTZMoving;                              	// 云台移动检测
	CFG_VIDEO_BLACKWHITE_DETECTION*	 	pstBlackAndWhite;							// 黑白图像检测
	CFG_VIDEO_DRAMATICCHANGE_DETECTION*	pstDramaticChange;							// 场景剧变检测
	CFG_VIDEO_AVAILABILITY_DETECTION*	pstVideoAvailability;					    // 视频完好率监测
}CFG_VIDEO_DIAGNOSIS_PROFILE;

// 视频诊断参数表(CFG_CMD_VIDEODIAGNOSIS_PROFILE),支持多种参数表,用表名称来索引   调用者申请内存并初始化
typedef struct tagCFG_VIDEODIAGNOSIS_PROFILE
{
	int								nTotalProfileNum;							// 调用者分配参数表数 根据能力集获取
	int								nReturnProfileNum;							// 返回的实际参数表数
	CFG_VIDEO_DIAGNOSIS_PROFILE*	pstProfiles;								// 调用者分配nTotalProfileNum个CFG_VIDEO_DIAGNOSIS_PROFILE
}CFG_VIDEODIAGNOSIS_PROFILE;

///// 视频诊断任务
enum CFG_EM_STREAM_TYPE
{
	CFG_EM_STREAM_ERR,                  // 其它
	CFG_EM_STREAM_MAIN,					// "Main"-主码流
	CFG_EM_STREAM_EXTRA_1,				// "Extra1"-辅码流1
	CFG_EM_STREAM_EXTRA_2,				// "Extra2"-辅码流2
	CFG_EM_STREAM_EXTRA_3,				// "Extra3"-辅码流3
	CFG_EM_STREAM_SNAPSHOT,				// "Snapshot"-抓图码流
	CFG_EM_STREAM_OBJECT,				// "Object"-物体流
};

// 设备详细信息
typedef struct tagCFG_TASK_REMOTEDEVICE
{
	char                            szAddress[MAX_PATH];                        // 设备地址或域名
	unsigned int                    dwPort;                                     // 端口号
	char                            szUserName[MAX_PATH];                       // 用户名
	char                            szPassword[MAX_PATH];                       // 密码明文
	char                            szProtocolType[MAX_PATH];                   // 连接设备的协议类型
	CFG_RemoteDeviceVideoInput      *pVideoInput;                               // 视频输入通道,用户申请nMaxVideoInputs个CFG_RemoteDeviceVideoInput空间
	int				                nMaxVideoInputs;					        // 视频输入通道最大数
	int				                nRetVideoInputs;					        // 返回的视频输入通道数
}CFG_TASK_REMOTEDEVICE;

// 视频诊断录像保存位置
typedef enum tagEM_SOURCE_VIDEO_LOCATION
{
    EM_SOURCE_VIDEO_LOCATION_UNKNOWN,            // 未知
    EM_SOURCE_VIDEO_LOCATION_DEVICE,             // 存于设备
    EM_SOURCE_VIDEO_LOCATION_CENTER,             // 存于平台
    EM_SOURCE_VIDEO_LOCATION_THIRD,              // 存于第三方云
} EM_SOURCE_VIDEO_LOCATION;

// 录像的类型
typedef enum tagEM_VIDEO_TYPE
{
    EM_VIDEO_TYPE_UNKNOWN,           // 未知
    EM_VIDEO_TYPE_ALL,               // 全部
    EM_VIDEO_TYPE_MANUAL,            // 手动保存的录像
    EM_VIDEO_TYPE_ALARM,             // 报警录像
} EM_VIDEO_TYPE;

// 视频诊断录像详细信息
typedef struct tagNET_VIDEO_DIAGNOSIS_RECORD_INFO
{
    EM_SOURCE_VIDEO_LOCATION    emSourceLocation;           // 录像保存的位置
    EM_VIDEO_TYPE               emRecordType;               // 视频诊断录像类型
    CFG_NET_TIME                stuStartTime;               // 视频诊断录像开始时间
    int                         nPreSeconds;                // 视频诊断录像开始时间为当前实际检测时间的前PreSeconds秒(当该字段与StartTime同时存在时,以该字段优先)
} NET_VIDEO_DIAGNOSIS_RECORD_INFO;

// 视频源输入方式
typedef enum tagEM_VIDEO_CHANNEL_SOURCE_INPUT_TYPE
{
    EM_VIDEO_CHANNEL_SOURCE_INPUT_UNKNOWN,          // 未知
    EM_VIDEO_CHANNEL_SOURCE_INPUT_STD,              // STD
    EM_VIDEO_CHANNEL_SOURCE_INPUT_AHD,              // AHD
    EM_VIDEO_CHANNEL_SOURCE_INPUT_HDCVR,            // HDCVR
    EM_VIDEO_CHANNEL_SOURCE_INPUT_VGA,              // VGA
} EM_VIDEO_CHANNEL_SOURCE_INPUT_TYPE;

typedef struct tagCFG_TAST_SOURCES
{
	// 能力
	bool							abDeviceID;                                 // abDeviceID(使用szDeviceID) 和 abRemoteDevice(使用stRemoteDevice) 必须有一个为true,否则Sources是null
	bool							abRemoteDevice;

	char							szDeviceID[MAX_PATH];						// 设备ID
	CFG_TASK_REMOTEDEVICE           stRemoteDevice;                             // 设备详细信息
	int								nVideoChannel;								// 视频通道号
	CFG_EM_STREAM_TYPE				emVideoStream;								// 视频码流类型
	int								nDuration;									// 持续诊断时间
    BOOL                            abStartTime;                                // 表示stuStartTime字段是否有效; 若源为录像文件则设置为TRUE, 否则设置成FALSE.
    CFG_NET_TIME                    stuStartTime;                               // 当abStartTime为TRUE时有效,表示要分析的录像的开始时间
                                                                                // stuStartTime字段作废,后续都使用stuDiagnosisRecordInfo,保留此字段只为兼容老设备
    BOOL                            abDiagnosisRecordInfo;                      // 表示stuDiagnosisRecordInfo字段是否有效; 若源为录像文件则设置为TRUE, 否则设置成FALSE.
    NET_VIDEO_DIAGNOSIS_RECORD_INFO stuDiagnosisRecordInfo;                     // 视频诊断录像信息, 当 abDiagnosisRecordInfo 为TRUE有效
    EM_VIDEO_CHANNEL_SOURCE_INPUT_TYPE emSourceInputType;                       // 视频源输入方式
}CFG_TAST_SOURCES;

typedef struct tagCFG_DIAGNOSIS_TASK
{
	char							szTaskName[MAX_PATH];						// 任务名称Ansi编码
	char							szProfileName[MAX_PATH]; 					// 本任务使用的诊断参数表名Ansi编码
	int								nTotalSourceNum;						    // 调用者分配任务数据源的个数  根据能力集获取
	int								nReturnSourceNum;							// 返回实际任务数据源的个数
	CFG_TAST_SOURCES*				pstSources;									// 任务数据源 调用者分配内存nTotalSourceNum个
}CFG_DIAGNOSIS_TASK;

// 视频诊断任务表(CFG_CMD_VIDEODIAGNOSIS_TASK),不同的任务通过名子索引  调用者申请内存并初始化
typedef struct tagCFG_VIDEODIAGNOSIS_TASK
{
	int								nTotalTaskNum; 								// 调用者分配任务个数  根据能力集获取
	int								nReturnTaskNum; 							// 返回实际任务个数
	CFG_DIAGNOSIS_TASK*				pstTasks;									// 任务配置 调用者分配内存nTotalTaskNum个
}CFG_VIDEODIAGNOSIS_TASK;

// 视频诊断计划
typedef struct tagPROJECT_TASK
{
	BOOL							bEnable;									// 任务是否使能
	char							szTaskName[MAX_PATH];						// 任务名称Ansi编码
	CFG_TIME_SECTION				stTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];	// 任务时间段
	BOOL                            bIsCycle;                                   // 任务是否循环,TRUE表示循环,FALSE表示不循环
}CFG_PROJECT_TASK;

typedef struct tagDIAGNOSIS_PROJECT
{
	char							szProjectName[MAX_PATH];					// 计划名称Ansi编码
	int								nTotalTaskNum;								// 调用者分配任务列表个数  根据能力集获取
	int								nReturnTaskNum;					    		// 返回实际任务列表个数
	CFG_PROJECT_TASK*				pstProjectTasks;								// 任务列表 调用者分配内存nTotalTaskNum个
}CFG_DIAGNOSIS_PROJECT;
// 频诊断计划表(CFG_CMD_VIDEODIAGNOSIS_PROJECT),不同的计划通过名字索引 调用者申请内存并初始化
typedef struct tagCFG_VIDEODIAGNOSIS_PROJECT
{
	int								nTotalProjectNum;							// 调用者分配计划个数  根据能力集获取
	int								nReturnProjectNum;							// 返回实际计划个数
	CFG_DIAGNOSIS_PROJECT*			pstProjects;									// 计划配置 调用者分配内存nTotalProjectNum个
}CFG_VIDEODIAGNOSIS_PROJECT;

// 实时计划相关信息
typedef struct tagCFG_DIAGNOSIS_REALPROJECT
{
	char							szProjectName[MAX_PATH];					// 计划名称Ansi编码
	CFG_DIAGNOSIS_TASK			    stProjectTask;							    // 任务信息
}CFG_DIAGNOSIS_REALPROJECT;

// 视频诊断实时计划表
typedef struct tagCFG_VIDEODIAGNOSIS_REALPROJECT 
{
	int								nProjectNum;							    // 实时计划个数
	CFG_DIAGNOSIS_REALPROJECT*		pstProjects;							    // 计划配置 调用者分配内存nProjectNum个
}CFG_VIDEODIAGNOSIS_REALPROJECT;

// 视频诊断全局表(CFG_CMD_VIDEODIAGNOSIS_GLOBAL),每个通道支持一个诊断配置 
typedef struct tagCFG_VIDEODIAGNOSIS_GLOBAL_CHNNL
{
	BOOL                            abProjectName;                              // 计划名称是否有效 
	char							szProjectName[MAX_PATH];					// 计划名称,Ansi编码
	BOOL                            abRealProjectName;                          // 实时计划名称是否有效
	char                            szRealProjectName[MAX_PATH];                // 实时计划名称,Ansi编码   
}CFG_VIDEODIAGNOSIS_GLOBAL_CHNNL;

typedef struct tagCFG_VIDEODIAGNOSIS_GLOBAL
{
	int								nTotalGlobalNum;							// 调用者分配全局配置个数  根据能力集获取
	int								nReturnGlobalNum;							// 返回实际全局配置个数
	CFG_VIDEODIAGNOSIS_GLOBAL_CHNNL	*pstGlobals;								// 视频诊断全局配置 调用者分配内存nTotalGlobalNum个CFG_VIDEODIAGNOSIS_GLOBAL_CHNNL
}CFG_VIDEODIAGNOSIS_GLOBAL;

// 视频诊断服务能力集(CFG_CAP_CMD_VIDEODIAGNOSIS_SERVER)
typedef struct tagCFG_VIDEODIAGNOSIS_CAPS_INFO
{
	int								nTypeCount;									// 支持的视频诊断类型 个数
	char						    szSupportedType[MAX_VIDEODIAGNOSIS_DETECT_TYPE][MAX_PATH];// 支持的视频诊断类型
	int								nMaxProfiles;								// 最大参数表个数
	int								nMaxTasks;									// 最大任务个数
	int								nMaxSourcesOfTask;							// 最大单个任务的视频源个数
	int								nMaxProjects;								// 最大方案个数
}CFG_VIDEODIAGNOSIS_CAPS_INFO;

// 获取视频诊断通道数目( CFG_CMD_VIDEODIAGNOSIS_GETCOLLECT )对应结构体
typedef struct tagCFG_VIDEODIAGNOSIS_COLLECT_INFO
{
	int                             nDiagnosisChannels;                                   // 视频诊断通道数目
}CFG_VIDEODIAGNOSIS_COLLECT_INFO;

// 获取视频诊断进行状态( CFG_CMD_VIDEODIAGNOSIS_GETSTATE )对应结构体
typedef struct tagCFG_VIDEODIAGNOSIS_STATE_INFO
{
	BOOL                            bEnable;                                     // 是否使能
	BOOL                            bRunning;                                    // 是否正在运行	使能开启,并且当前有工作任务正在进行,没有错误发生。
	char                            szCurrentProject[MAX_PATH];                  // 当前计划名称
	char                            szCurrentTask[MAX_PATH];                     // 当前任务名称
	char                            szCurrentProfile[MAX_PATH];                  // 当前任务配置参数表名称
	int                             nCurrentSourceCount;                         // 当前任务轮训视频源个数
	int                             nCurrentSourceIndex;                         // 当前任务当前视频源序号	从0开始
	CFG_TIME_SECTION                stCurrentTimeSection;                        // 当前计划时间段
	int                             nTaskCountOfProject;                         // 当前计划总任务数
	int                             nIndexOfCurrentTask;                         // 当前任务序号 从0开始
}CFG_VIDEODIAGNOSIS_STATE_INFO;

// 服务器支持的服务列表
typedef struct tagCFG_DEV_SERVICE_LIST
{
	int                             nServiceNum;                                 // 支持的服务数
	char                            szService[MAX_SERVICE_NUM][MAX_NAME_LEN];    // 服务器支持具体的服务项
}CFG_DEV_SERVICE_LIST;

//获取主从式跟踪器数目
typedef struct tagCFG_MASTERSLAVETRACKER_INFO
{
        int                nStructSize;
	    int                nChannels;	//主从式跟踪器通道数目
}CFG_MASTERSLAVETRACKER_INFO;

#define  MAX_CAMERA_TYPE	64
#define	 MAX_TYPE_STRING	64

typedef struct tagCFG_CAMERA_PER_TYPE_INFO
{
	char				szCameraType[MAX_TYPE_STRING];	//相机型号
	char				szLensType[MAX_TYPE_STRING];	//相机镜头型号	镜头型号和相机型号相关,可以为空值
}CFG_CAMERA_PER_TYPE_INFO;

typedef struct tagCFG_CAMERA_TYPE_INFO
{
	int							nCameraTypeNum;						//该类型的相机所具有的不同型号数
	CFG_CAMERA_PER_TYPE_INFO	stCameraTypeInfos[MAX_CAMERA_TYPE]; //具体的型号信息
}CFG_CAMERA_TYPE_INFO;

// 变倍类型
typedef enum tagCFG_ZOOM_TYPE
{
	ZOOM_TYPE_EXPECTMULTIPLE =0,     // 固定期望倍数变倍
	ZOOM_TYPE_IVSADAPTIVE,           // 根据智能设备输出自适应变倍
	ZOOM_TYPE_MULTIPLEADAPTIVE,      // 自适应变倍
	ZOOM_TYPE_NUM
}CFG_ZOOM_TYPE;

// 跟踪模式
typedef enum tagCFG_TRACKING_MODE
{
    TRACKING_MODE_ALARM=0,        // 报警跟踪
	TRACKING_MODE_MANUALOBJECT,   // 手动选定物体跟踪
	TRACKING_MODE_AUTOOBJECT,     // 自动选定物体跟踪
	TRACKING_MODE_SELECTPOINT,    // 定点跟踪
	TRACKING_MODE_MIX,            // 混合跟踪(以上四种跟踪模式同时支持)
	TRACKING_MODE_SLAVESELF,      // 球机自主控制(主要用于用户对球机控制)
	TRACKING_MODE_NUM
}CFG_TRACKING_MODE;


// 主从式跟踪器全局配置基本结构体
typedef struct tagCFG_MASTERSLAVE_GLOBAL_INFO
{
	int						nStructSize;
	float					fMaxZoom;						// 最大变倍倍数, 只能是整数,小数被忽略
	float					fMinZoom;						// 最小变倍倍数, 只能是整数,小数被忽略
	float					fExpectMultiple;				// 期望倍数(基准倍数),最小变倍倍数<期望倍数<最大变倍倍数, 只能是整数,小数被忽略
	float					fPollTrackTime;					// 轮询跟踪时长,单位:秒;>0.0
	float					fPointTrackTime;				// 定点跟踪时长,单位:秒;>0.0在报警跟踪、自动选定物体跟踪、混合跟踪模式下有效
    float					fObjectTrackTime;				// 手动选定物体跟踪时长, 单位:秒;>0.0在报警跟踪、自动选定物体跟踪、混合跟踪模式下有效
	float					fExpectAngleX;					// 期望倍数对应球机角度x(水平), 只能是整数,小数被忽略
    float					fExpectAngleY;					// 期望倍数对应球机角度y(垂直), 只能是整数,小数被忽略
	CFG_SIZE				stTargetFaceSize;				// 靶面尺寸(单位:毫米), 球机设备参数,与球机有关, 只能是整数,小数被忽略
	float					fMinFocus;						// 最小焦距(单位:毫米), 只能是整数,小数被忽略
	float					fMaxFocus;						// 最大焦距(单位:毫米), 只能是整数,小数被忽略
	CFG_ZOOM_TYPE			emZoomType;						// 变倍类型
	CFG_TRACKING_MODE		emTrackingMode;					// 跟踪模式
	CFG_CAMERA_TYPE_INFO	stCameraInfo;					// 枪式摄像机
	CFG_CAMERA_TYPE_INFO	stDomeInfo;						// 球式摄像机
	int						nTrackZoomLevel;				// 跟踪倍数等级	-5<= TrackZoomLevel <=5 0表示用默认算法方式
	BOOL					bReturnPtzPreset;				// TRUE,跟踪后返回预置点 , FALSE,跟踪后不返回预置点
}CFG_MASTERSLAVE_GLOBAL_INFO;
	
// 获取主从式设备能力集
typedef struct tagCFG_CAP_MASTERSLAVE_INFO
{
	int                     nStructSize;
	BYTE                    byTrackingMode[TRACKING_MODE_NUM]; // 数组下标表示CFG_TRACKING_MODE枚举相对应模式,1表示支持
	CFG_CAMERA_TYPE_INFO	stCameraInfo;  // 枪式摄像机
	CFG_CAMERA_TYPE_INFO	stDomeInfo;	   // 球式摄像机
}CFG_CAP_MASTERSLAVE_INFO;


// 获取服务器报警联动能力集
typedef struct tagCFG_CAP_EVENTHANDLER_INFO
{
	BOOL				bTimeSectionEnable;                                      // 
	BOOL				bRecordEnable;                                           // 是否支持录像
	BOOL				bAlarmOutEnable;                                         // 是否支持报警输出
	BOOL				bPtzLinkEnable;                                          // 是否支持报警输出
	BOOL				bSnapshotEnable;                                         // 是否支持快照
	BOOL				bMailEnable;                                             // 是否支持发送邮件
	BOOL				bBeepEnable;                                             // 是否支持蜂鸣
	BOOL				bDejitterEnable;                                         // 是否支持去抖动
	BOOL                bTipEnable;                                              // 是否支持本地消息框提示
	BOOL                bMonitorTourEnable;                                      // 是否支持轮询联动配置
}CFG_CAP_EVENTHANDLER_INFO;

#define MASTERSLAVE_LIST_MAX_NUM            5                              // 枪球联动最大主从机个数
#define MASTERSLAVE_AREA_MAX_NUM            8                              // 枪球联动最大优先级区域个数
#define MASTERSLAVE_NAME_LEN                64                             // 监控点最大名称长度
#define MASTERSLAVE_DEV_SERIALNO_LEN        48                             // 设备序列号最大长度

// 枪球联动全局配置 (CFG_CMD_MASTERSLAVE_LINKAGE)
typedef struct tagCFG_MASTERSLAVE_LINKAGE_INFO
{
    BOOL                        bEnable;                                   // 枪球联动使能总开关
    BOOL                        bAutoTrack;                                // 自动跟踪使能
    int                         nAutoTrackTime[2];                         // 自动跟踪时长范围, [最小时长, 最大时长], 默认[1, 300], 单位秒
    int                         nLocateUnlockTime;                         // 手动定位解锁时间(秒), 0 表示永不解锁, 默认30秒. 解锁后可用于跟踪
    int                         nPriorityAreaNum;                          // 优先级区域个数
    CFG_RECT                    stuPriorityArea[MASTERSLAVE_AREA_MAX_NUM]; // 优先级区域, 数据越靠前的区域优先级越高,可为空
}CFG_MASTERSLAVE_LINKAGE_INFO;

typedef enum tagEM_MASTER_TYPE
{
    EM_MASTER_UNKNOWN,                                                     // 未知类型
    EM_MASTER_FISHEYE,                                                     // 鱼眼联动
    EM_MASTER_CAMERA,                                                      // 枪球联动
}EM_MASTER_TYPE;

typedef struct tagCFG_MASTER_DEV_INFO
{
    int                    nChannel;                                       // 本地通道号, 从0开始
    char                   szDevSerial[MASTERSLAVE_DEV_SERIALNO_LEN];      // 设备序列号
}CFG_MASTER_DEV_INFO;

typedef struct tagCFG_SLAVER_DEV_INFO
{
    int                     nChannel;                                      // 本地通道号, 从0开始
    char                    szDevSerial[MASTERSLAVE_DEV_SERIALNO_LEN];     // 设备序列号
    CFG_REGION              stuControlRegion;                              // 从机管控区域
}CFG_SLAVER_DEV_INFO;

// 枪球联动绑定关系配置 (CFG_CMD_MASTERSLAVE_GROUP)
typedef struct tagCFG_MASTERSLAVE_GROUP_INFO
{
    char                    szName[MASTERSLAVE_NAME_LEN];                  // 监控点名称
    int                     nGroupID;                                      // 组号
    EM_MASTER_TYPE          emMasterType;                                  // 主设备类型
    int                     nMasterNum;                                    // 主机个数 
    CFG_MASTER_DEV_INFO     stuMasterList[MASTERSLAVE_LIST_MAX_NUM];       // 主机列表
    int                     nSlaverNum;                                    // 从机个数
    CFG_SLAVER_DEV_INFO     stuSlaverList[MASTERSLAVE_LIST_MAX_NUM];       // 从机列表
}CFG_MASTERSLAVE_GROUP_INFO;

//----------------------------------视频输入配置------------------------------------------
#define DH_MAX_INMETERING_REGION_NUM 8

typedef struct tagVIDEO_INMETERING_INFO_CHANNEL
{
	// 能力
	bool            bRegion;
	bool            bMode;
	BYTE			bReserved1[2];					         // 保留字段1
	
	int				nRegionNum;                                 // 测光区域个数
	CFG_RECT    	stuRegions[DH_MAX_INMETERING_REGION_NUM];   // 测光区域, 局部测光使用,支持多个测光区域,使用相对坐标体系,取值均为0~8191
	BYTE  			byMode;				                     // 测光模式,0:平均测光,1:局部测光
	BYTE  			bReserved2[3];				             // 保留字段2
	BYTE			bReserved3[32];					         // 保留字段3
}VIDEO_INMETERING_INFO_CHANNEL;

// 测光配置(CFG_CMD_VIDEO_INMETERING)是一个数组,每个视频输入通道一个配置
typedef struct tagCFG_VIDEO_INMETERING_INFO
{
	int				nChannelNum; // 通道数
	VIDEO_INMETERING_INFO_CHANNEL	stuMeteringMode[MAX_VIDEO_CHANNEL_NUM]; // 每个通道的测光信息,下标对应通道号
}CFG_VIDEO_INMETERING_INFO;

// 视频输入能力集(CFG_CAP_CMD_VIDEOINPUT)配置
typedef struct tagCFG_CAP_VIDEOINPUT_INFO
{
	int				nMeteringRegionCount;                   // 最大测光区域个数
	BOOL            bFishEye;                               // 是否支持鱼眼
	BOOL			bElectricFocus;							// 是否支持电动调焦
	DWORD			dwExposureMode;							// 支持的自动曝光模式掩码  从低位到高位依次表示,0-自动曝光,1-低噪声(增益)优先,2-弱拖影(快门)优先, 3-50HZ防闪烁,4-60HZ防闪烁
	int             nWideDynamicRange;						// 是否支持宽动态 0-不支持,1-支持数字宽动态
	int			    nGlareInhibition;						// 是否支持强光抑制 0-不支持,1-支持
}CFG_CAP_VIDEOINPUT_INFO;

// 流量统计报警信息配置
typedef struct tagCFG_TRAFFIC_FLOWSTAT_ALARM_INFO
{
	bool                            bEnable;                              // 是否使能
	int                             nPeriod;                              // 统计周期,单位:分钟
	int                             nLimit;                               // 统计周期内车辆数上下限,单位:辆
	int                             nRestore;                             // 统计周期内报警恢复车辆数,单位:辆 
    int                             nDelay;                               // 检测到报警发生到开始上报的时间, 单位:秒,范围1~65535
	int                             nInterval;                            // 报警间隔时间, 单位:秒, 范围1~65535
	int                             nReportTimes;                         // 上报次数,1~255
	CFG_TIME_SECTION                stCurrentTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX]; // 当前计划时间段
	CFG_ALARM_MSG_HANDLE            stuEventHandler;					  // 报警联动
}CFG_TRAFFIC_FLOWSTAT_ALARM_INFO;

typedef struct tagCFG_TRAFFIC_FLOWSTAT_INFO_CHNL
{
	// 能力
	bool	                		 abEnable;

	bool			                 bEnable;								// 是否使能
	CFG_TRAFFIC_FLOWSTAT_ALARM_INFO  stuAlarmUpperInfo;                     // 报警上线参数
	CFG_TRAFFIC_FLOWSTAT_ALARM_INFO  stuAlarmLowInfo;                       // 报警下线参数
    int                              nDetectRegionPoint;                    // 检测区顶点数
    CFG_POLYGON                      stuDetectRegion[MAX_POLYGON_NUM];      // 检测区域
	char                             szName[MAX_NAME_LEN];                  // 当前车道规则名称,不同规则不能重名
	int								 nPresetID;								// 云台所在预置点编号(仅球机有效)
	BOOL							 bIsDetectLine;							// 表示车流量检测线是否有效
	CFG_POLYGON						 stuDetectLine[POINT_PAIR_NUM];			// 车流量检测线,若不配置,算法自动生成检测线
}CFG_TRAFFIC_FLOWSTAT_INFO_LANE;

// 交通流量统计配置(CFG_CMD_TRAFFIC_FLOWSTAT)
typedef struct tagCFG_TRAFFIC_FLOWSTAT_INFO
{
	// 能力
	bool							abPeriod;
	BYTE							bReserved1[3];						        // 保留字段1

	int								nPeriod;									// 统计周期,单位分钟
	int								nLaneNum;									// 车道数
	CFG_TRAFFIC_FLOWSTAT_INFO_LANE	stuTrafficFlowstat[MAX_LANE_NUM];			// 每个车道的流量配置,下标对应车道号
	DWORD                           dwLaneExtraMaxNum;                           // 车道数扩充最大值(用于申请内存),多场景应用多余的车道信息需要
	DWORD                           dwLaneExtraRetNum;                           // 多场景应用多余的车道数实际个数
	CFG_TRAFFIC_FLOWSTAT_INFO_LANE  *pstuTrafficFlowstat;                       // 多场景的车道数, stuTrafficFlowstat数组放不开的车道在这里继续保存,序号从车道MAX_LANE_NUM+1开始
}CFG_TRAFFIC_FLOWSTAT_INFO;

//视频浓缩规则配置(CFG_CMD_SYNOPSISANALYSE_RULE_INFO)
typedef struct tagCFG_VIDOE_SYNOPSIS_ANALYSE_RULE_INFO
{
    CFG_ANALYSERULES_INFO   stDetailRuleInfo;       //详细规则                       
}CFG_VIDOE_SYNOPSIS_ANALYSE_RULE_INFO;

//-----------------------------------视频输入前端选项-------------------------------------------

// 视频输入夜晚特殊配置选项,在晚上光线较暗时自动切换到夜晚的配置参数
typedef struct tagCFG_VIDEO_IN_NIGHT_OPTIONS
{
	BYTE				bySwitchMode;			//已废弃,使用CFG_VIDEO_IN_OPTIONS里面的bySwitchMode
                                                //0-不切换,总是使用白天配置;1-根据亮度切换;2-根据时间切换;3-不切换,总是使用夜晚配置;4-使用普通配置
	BYTE				byProfile;				// 当前使用的配置文件.
												// 0-白天
												// 1-晚上
												// 2-Normal
												// 0,1,2都为临时配置,使图像生效,便于查看图像调试效果,不点击确定,离开页面不保存至设备。
												///3-非临时配置,点击确定后保存至设备,与SwitchMode结合使用,根据SwitchMode决定最终生效的配置。
												// SwitchMode=0,Profile=3,设置白天配置到设备;
												// SwitchMode=1,Profile=3,则设置夜晚配置到设备
												// SwitchMode=2,Profile=3,根据日出日落时间段切换,白天时间段使用白天配置,夜晚时间段使用夜晚配置,保存至设备;
												// SwitchMode=4,Profile=3;使用普通配置,保存至设备
	BYTE				byBrightnessThreshold ;	// 亮度阈值 0~100	
	BYTE				bySunriseHour;			// 大致日出和日落时间,日落之后日出之前,将采用夜晚特殊的配置。
	BYTE				bySunriseMinute;		// 00:00:00 ~ 23:59:59
	BYTE				bySunriseSecond;
	BYTE				bySunsetHour;
	BYTE				bySunsetMinute;
	BYTE				bySunsetSecond;  
	BYTE				byGainRed;				// 红色增益调节,白平衡为"Custom"模式下有效 0~100
	BYTE				byGainBlue;				// 绿色增益调节,白平衡为"Custom"模式下有效 0~100
	BYTE				byGainGreen;			// 蓝色增益调节,白平衡为"Custom"模式下有效 0~100
	BYTE				byExposure;				// 曝光模式;取值范围取决于设备能力集:0-自动曝光,1-曝光等级1,2-曝光等级2…n-1最大曝光等级数 n带时间上下限的自动曝光 n+1自定义时间手动曝光 (n==byExposureEn)
	float				fExposureValue1;		// 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms
	float				fExposureValue2;		// 自动曝光时间上限,毫秒为单位,取值0.1ms~80ms	
	BYTE				byWhiteBalance ;		// 白平衡, 0-"Disable", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
	BYTE				byGain;					// 0~100, GainAuto为true时表示自动增益的上限,否则表示固定的增益值
	bool				bGainAuto;				// 自动增益
	bool				bIrisAuto;				// 自动光圈
	float               fExternalSyncPhase;     // 外同步的相位设置 0~360
	BYTE				byGainMin;				// 增益下限
	BYTE				byGainMax;				// 增益上限
	BYTE				byBacklight;			// 背光补偿:取值范围取决于设备能力集:0-关闭1-启用2-指定区域背光补偿
	BYTE				byAntiFlicker;			// 防闪烁模式 0-Outdoor 1-50Hz防闪烁 2-60Hz防闪烁
	BYTE				byDayNightColor;		// 日/夜模式;0-总是彩色,1-根据亮度自动切换,2-总是黑白
	BYTE				byExposureMode;         // 曝光模式调节 曝光等级为自动曝光时有效,取值:0-默认自动,1-增益优先,2-快门优先
	BYTE				byRotate90;				// 0-不旋转,1-顺时针90°,2-逆时针90°
	bool				bMirror;				// 镜像
	BYTE                byWideDynamicRange;     // 宽动态值 0-关闭,1~100-为真实范围值
	BYTE                byGlareInhibition;		// 强光抑制 0-关闭, 1~100为范围值
	CFG_RECT			stuBacklightRegion;     // 背光补偿区域
	BYTE                byFocusMode;            // 0-关闭,1-辅助聚焦,2-自动聚焦
	bool				bFlip;					// 翻转
	BYTE				reserved[74];			// 保留
} CFG_VIDEO_IN_NIGHT_OPTIONS;

typedef struct tagCFG_VIDEO_IN_NORMAL_OPTIONS
{
	BYTE				byGainRed;				// 红色增益调节,白平衡为"Custom"模式下有效 0~100
	BYTE				byGainBlue;				// 绿色增益调节,白平衡为"Custom"模式下有效 0~100
	BYTE				byGainGreen;			// 蓝色增益调节,白平衡为"Custom"模式下有效 0~100
	BYTE				byExposure;				// 曝光模式;取值范围取决于设备能力集:0-自动曝光,1-曝光等级1,2-曝光等级2…n-1最大曝光等级数 n带时间上下限的自动曝光 n+1自定义时间手动曝光 (n==byExposureEn)
	float				fExposureValue1;		// 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms
	float				fExposureValue2;		// 自动曝光时间上限,毫秒为单位,取值0.1ms~80ms	
	BYTE				byWhiteBalance ;		// 白平衡, 0-"Disable", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
	BYTE				byGain;					// 0~100, GainAuto为true时表示自动增益的上限,否则表示固定的增益值
	bool				bGainAuto;				// 自动增益
	bool				bIrisAuto;				// 自动光圈
	float               fExternalSyncPhase;     // 外同步的相位设置 0~360
	BYTE				byGainMin;				// 增益下限
	BYTE				byGainMax;				// 增益上限
	BYTE				byBacklight;			// 背光补偿:取值范围取决于设备能力集:0-关闭1-启用2-指定区域背光补偿
	BYTE				byAntiFlicker;			// 防闪烁模式 0-Outdoor 1-50Hz防闪烁 2-60Hz防闪烁
	BYTE				byDayNightColor;		// 日/夜模式;0-总是彩色,1-根据亮度自动切换,2-总是黑白
	BYTE				byExposureMode;         // 曝光模式调节 曝光等级为自动曝光时有效,取值:0-默认自动,1-增益优先,2-快门优先
	BYTE				byRotate90;				// 0-不旋转,1-顺时针90°,2-逆时针90°
	bool				bMirror;				// 镜像
	BYTE                byWideDynamicRange;     // 宽动态值 0-关闭,1~100-为真实范围值
	BYTE                byGlareInhibition;		// 强光抑制 0-关闭, 1~100为范围值
	CFG_RECT			stuBacklightRegion;     // 背光补偿区域
	BYTE                byFocusMode;            // 0-关闭,1-辅助聚焦,2-自动聚焦
	bool				bFlip;					// 翻转
	BYTE				reserved[74];			// 保留
}CFG_VIDEO_IN_NORMAL_OPTIONS;



// 闪光灯配置
typedef struct tagCFG_FLASH_CONTROL
{
	BYTE				byMode;					// 工作模式,0-禁止闪光,1-始终闪光,2-自动闪光
	BYTE				byValue;				// 工作值, 0-0us, 1-64us, 2-128us, 3-192...15-960us
	BYTE				byPole;					// 触发模式, 0-低电平 1-高电平 2-上升沿 3-下降沿
	BYTE                byPreValue;				// 亮度预设值  区间0~100
	BYTE				byDutyCycle;			// 占空比, 0~100
	BYTE				byFreqMultiple;			// 倍频, 0~10
	BYTE				reserved[122];			// 保留
}CFG_FLASH_CONTROL;

// 抓拍参数特殊配置
typedef struct tagCFG_VIDEO_IN_SNAPSHOT_OPTIONS
{
	BYTE				byGainRed;				// 红色增益调节,白平衡为"Custom"模式下有效 0~100
	BYTE				byGainBlue;				// 绿色增益调节,白平衡为"Custom"模式下有效 0~100
	BYTE				byGainGreen;			// 蓝色增益调节,白平衡为"Custom"模式下有效 0~100
	BYTE				byExposure;				// 曝光模式;取值范围取决于设备能力集:0-自动曝光,1-曝光等级1,2-曝光等级2…n-1最大曝光等级数 n带时间上下限的自动曝光 n+1自定义时间手动曝光 (n==byExposureEn)
	float				fExposureValue1;		// 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms
	float				fExposureValue2;		// 自动曝光时间上限,毫秒为单位,取值0.1ms~80ms	
	BYTE				byWhiteBalance;			// 白平衡, 0-"Disable", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
	BYTE				byColorTemperature;		// 色温等级, 白平衡为"CustomColorTemperature"模式下有效
	bool				bGainAuto;				// 自动增益
	BYTE				byGain;					// 增益调节, GainAuto为true时表示自动增益的上限,否则表示固定的增益值
	BYTE				reversed[112];			// 保留
} CFG_VIDEO_IN_SNAPSHOT_OPTIONS;

// 鱼眼矫正模式
typedef enum
{
    CFG_CALIBRATE_MODE_UNKOWN,                  // 未知模式 
    CFG_CALIBRATE_MODE_ORIGIAL,                 // 原始图像模式
    CFG_CALIBRATE_MODE_CONFIG,                  // 配置模式
    CFG_CALIBRATE_MODE_PANORAMA,                // 全景模式
    CFG_CALIBRATE_MODE_DOUBLEPANORAMA,          // 双全景模式
    CFG_CALIBRATE_MODE_ORIGIALPLUSTHREEEPTZREGION, // 1+3模式(一个原始鱼眼图像加3个EPtz图像)
    CFG_CALIBRATE_MODE_SINGLE,                  // 单画面EPtz模式(只有一个EPtz画面)
    CFG_CALIBRATE_MODE_FOUREPTZREGION,          // 4画面模式(4个EPtz控制画面)
    CFG_CALIBRATE_MODE_NORMAL,                  // 普通模式
}CFG_CALIBRATE_MODE;

// 鱼眼镜头配置
typedef struct tagCFG_FISH_EYE
{
    CFG_POLYGON         stuCenterPoint;         // 鱼眼圆心坐标,范围[0,8192]
	unsigned int        nRadius;                // 鱼眼半径大小,范围[0,8192]
	float               fDirection;             // 镜头旋转方向,旋转角度[0,360.0]
	BYTE                byPlaceHolder;          // 镜头安装方式	1顶装,2壁装;3地装,默认1
    BYTE                byCalibrateMode;        // 鱼眼矫正模式,详见CFG_CALIBRATE_MODE枚举值
	BYTE				reversed[31];			// 保留
}CFG_FISH_EYE;
// 视频输入前端选项
typedef struct tagCFG_VIDEO_IN_OPTIONS
{
	BYTE				byBacklight;			// 背光补偿:取值范围取决于设备能力集:0-关闭1-启用2-指定区域背光补偿
	BYTE				byDayNightColor;		// 日/夜模式;0-总是彩色,1-根据亮度自动切换,2-总是黑白
	BYTE				byWhiteBalance;			// 白平衡, 0-"Disable", 1-"Auto", 2-"Custom", 3-"Sunny", 4-"Cloudy", 5-"Home", 6-"Office", 7-"Night", 8-"HighColorTemperature", 9-"LowColorTemperature", 10-"AutoColorTemperature", 11-"CustomColorTemperature"
	BYTE				byColorTemperature;		// 色温等级, 白平衡为"CustomColorTemperature"模式下有效
	bool				bMirror;				// 镜像
	bool				bFlip;					// 翻转
	bool				bIrisAuto;				// 自动光圈
	bool				bInfraRed;				// 根据环境光自动开启红外补偿灯	
	BYTE				byGainRed;				// 红色增益调节,白平衡为"Custom"模式下有效 0~100
	BYTE				byGainBlue;				// 绿色增益调节,白平衡为"Custom"模式下有效 0~100
	BYTE				byGainGreen;			// 蓝色增益调节,白平衡为"Custom"模式下有效 0~100
	BYTE				byExposure;				// 曝光模式;取值范围取决于设备能力集:0-自动曝光,1-曝光等级1,2-曝光等级2…n-1最大曝光等级数 n带时间上下限的自动曝光 n+1自定义时间手动曝光 (n==byExposureEn)
	float				fExposureValue1;		// 自动曝光时间下限或者手动曝光自定义时间,毫秒为单位,取值0.1ms~80ms
	float				fExposureValue2;		// 自动曝光时间上限,毫秒为单位,取值0.1ms~80ms	
	bool				bGainAuto;				// 自动增益
	BYTE				byGain;					// 增益调节, GainAuto为true时表示自动增益的上限,否则表示固定的增益值
	BYTE				bySignalFormat;			// 信号格式, 0-Inside(内部输入) 1-BT656 2-720p 3-1080p  4-1080i  5-1080sF
	BYTE				byRotate90;				// 0-不旋转,1-顺时针90°,2-逆时针90°	
	float               fExternalSyncPhase;		// 外同步的相位设置 0~360	
	BYTE                byExternalSync;			// 外部同步信号输入,0-内部同步 1-外部同步
	BYTE				bySwitchMode;			//0-不切换,总是使用白天配置;1-根据亮度切换;2-根据时间切换;3-不切换,总是使用夜晚配置;4-使用普通配置
	BYTE				byDoubleExposure;		// 双快门, 0-不启用,1-双快门全帧率,即图像和视频只有快门参数不同,2-双快门半帧率,即图像和视频快门及白平衡参数均不同
	BYTE                byWideDynamicRange;     // 宽动态值
	CFG_VIDEO_IN_NIGHT_OPTIONS stuNightOptions;	// 夜晚参数
	CFG_FLASH_CONTROL	stuFlash;				// 闪光灯配置
	CFG_VIDEO_IN_SNAPSHOT_OPTIONS stuSnapshot;	// 抓拍参数, 双快门时有效
	CFG_FISH_EYE        stuFishEye;             // 鱼眼镜头
	BYTE                byFocusMode;            // 0-关闭,1-辅助聚焦,2-自动聚焦
	BYTE                reserved[28];           // 保留
	BYTE				byGainMin;				// 增益下限
	BYTE				byGainMax;				// 增益上限
	BYTE				byAntiFlicker;			// 防闪烁模式 0-Outdoor 1-50Hz防闪烁 2-60Hz防闪烁
	BYTE				byExposureMode;         // 曝光模式调节 曝光等级为自动曝光时有效,取值:0-默认自动,1-增益优先,2-快门优先,4-手动
	BYTE                byGlareInhibition;		// 强光抑制 0-关闭, 1~100为范围值
	CFG_RECT			stuBacklightRegion;     // 背光补偿区域            
	CFG_VIDEO_IN_NORMAL_OPTIONS stuNormalOptions;//普通参数
} CFG_VIDEO_IN_OPTIONS;

// RTSP输入参数和输出参数配置结构体
typedef struct tagCFG_MULTICAST_INFO
{
	int  nStructSize;
	bool abStreamType;
	BYTE byReserved[3];
	BOOL bEnable;      // 是否使能
	char szMulticastAddr[MAX_ADDRESS_LEN]; //组播地址
	int  nPort;        //组播端口
	char szLocalAddr[MAX_ADDRESS_LEN];   //单播地址,用于组播指定详细网卡
	int  nChannelID;   // 通道号
	int  nStreamType;  // 码流类型 0-主码流, 1-辅码流1,2-辅码流2,3-辅码流3
}CFG_MULTICAST_INFO;

typedef struct tagCFG_MULTICASTS_INFO
{
	int nStructSize;
	CFG_MULTICAST_INFO stuMultiInfo[MAX_CHAN_NUM]; //最大组播配置
	int nCount;                                    //有效数组个数
}CFG_MULTICASTS_INFO;

typedef struct tagCFG_RTSP_INFO_IN
{
	int         nStructSize;
	BOOL        bEnable;       // 整个功能是否使能
	int         nPort;         // RTSP服务端口
	int         nRtpStartPort; // RTP起始端口
	int         nRtpEndPort;   // RTP结束端口
	BOOL        bHttpEnable;   // RtspOverHttp使能
	int         nHttpPort;     // RtspOverHttp端口
}CFG_RTSP_INFO_IN;

typedef struct tagCFG_RTSP_INFO_OUT
{
	int         nStructSize;
	BOOL        bEnable;       // 整个功能是否使能
	int         nPort;         // RTSP服务端口
	int         nRtpStartPort; // RTP起始端口
	int         nRtpEndPort;   // RTP结束端口
	BOOL        bHttpEnable;   // RtspOverHttp使能
	int         nHttpPort;     // RtspOverHttp端口
}CFG_RTSP_INFO_OUT;

typedef struct tagCFG_MULTICASTS_INFO_IN
{
	int                  nStructSize;
	CFG_MULTICAST_INFO   *pTSMulticast;   //TS的组播配置
	int                  nTSCount;        //有效TS数组个数
	CFG_MULTICAST_INFO   *pRTPMulticast;  //RTP的组播配置
	int                  nRTPCount;       //有效RTP数组个数
	CFG_MULTICAST_INFO   *pDHIIMulticast; //DHII的组播配置
	int                  nDHIICount;      //有效DHII数组个数
    CFG_MULTICAST_INFO   *pRTPAudio;      //RTP音频组播配置
    int                  nRTPAudioCount;  //有效RTP音频数组个数
}CFG_MULTICASTS_INFO_IN;

typedef struct tagCFG_MULTICASTS_INFO_OUT
{
	int                  nStructSize;
	CFG_MULTICASTS_INFO  stuTSMulticast;   //TS的组播配置
	CFG_MULTICASTS_INFO  stuRTPMulticast;  //RTP的组播配置
	CFG_MULTICASTS_INFO  stuDHIIMulticast; //DHII的组播配置
    CFG_MULTICASTS_INFO  stuRTPAudioMulticast; //RTP音频组播配置
}CFG_MULTICASTS_INFO_OUT;

typedef struct tagCFG_ACTIVEUSER_INFO
{
	int nStructSize;
	int nUserID;                         //活动用户ID,一般是会话ID
	char szUser[MAX_USERNAME_LEN];       // 用户名
	char szGroupName[MAX_USERNAME_LEN];  // 用户所在组名
	int  nGroupLevel;                    // 用户所在组等级
	char szClientType[MAX_USERNAME_LEN]; // 客户端类型
	char szClientAddr[MAX_ADDRESS_LEN];  // 客户端IP地址
	CFG_NET_TIME  stuLoginTime;              // 用户登入时间
}CFG_ACTIVEUSER_INFO;

typedef struct tagCFG_ACTIVEALLUSER_INFO
{
	int nStructSize;
	int nCount;                                                //有效数组个数
	CFG_ACTIVEUSER_INFO stuActiveUserInfo[MAX_ACTIVEUSER_NUM]; //  最大活动用户列表
}CFG_ACTIVEALLUSER_INFO;

typedef struct tagCFG_NET_TIME_EX
{
	DWORD				dwYear;					// 年
	DWORD				dwMonth;				// 月
	DWORD				dwDay;					// 日
	DWORD				dwHour;					// 时
	DWORD				dwMinute;				// 分
	DWORD				dwSecond;				// 秒
	DWORD               dwMillisecond;          // 毫秒
	DWORD               dwReserved[2];          // 保留字段
} CFG_NET_TIME_EX;

#define MAX_EXITMAN_NUM	32		// 支持的最大的离开人数

// 规则类型
typedef enum tagEM_CFG_RULE_TYPE
{
	EM_CFG_RULE_UNKNOWN,			// 未知
	EM_CFG_RULE_NUMBER_STAT,		// 人数统计
	EM_CFG_RULE_MAN_NUM_DETECTION,	// 区域内人数统计
} EM_CFG_RULE_TYPE;

// 离开人员的滞留时间信息
typedef struct tagCFG_EXITMAN_STAY_STAT
{
	CFG_NET_TIME_EX	stuEnterTime;		// 人员进入区域时间
	CFG_NET_TIME_EX	stuExitTime;		// 人员离开区域时间
	BYTE			reserved[104];		// 保留字节
} CFG_EXITMAN_STAY_STAT;

//获取视频统计摘要信息结构体
typedef struct tagCFG_CFG_VIDEOSATA_SUMMARY_INFO
{
	int         			nStructSize;
	int         			nChannelID;               //统计通道号
	char        			szRuleName[MAX_NAME_LEN]; //规则名称
	CFG_NET_TIME_EX 		stuStatTime;          	  //统计时间,转换到UTC
	int         			nEnteredTotal;            //进入总计
	int         			nEnteredToday;            //今天进入总计
	int         			nEnteredMonth;            //本月进入总计
	int         			nEnteredYear;             //今年进入总计
	int         			nEnteredDaily;            //每日最大进入总计
	int         			nExitedTotal;             //出去总计
	int         			nExitedToday;             //今天出去总计
	int         			nExitedMonth;             //本月出去总计
	int         			nExitedYear;              //今年出去总计
	int         			nExitedDaily;             //每日最大出去总计
	int         			nAvgTotal;                //平均所有保有统计(除去零值)
	int         			nAvgToday;                //平均今天保有统计
	int         			nAvgMonth;                //平均本月保有统计
	int         			nAvgYear;                 //平均今年保有统计         
	int         			nMaxTotal;                //最大所有保有统计(除去零值)
	int         			nMaxToday;                //最大今天保有统计
	int         			nMaxMonth;                //最大本月保有统计
	int         			nMaxYear;                 //最大今年保有统计
    int         			nInsideSubTotal;          //区域内人数
	EM_CFG_RULE_TYPE 		emRuleType;		  		  //规则类型
	int						nRetExitManNum;			  //离开人员的数量
	CFG_EXITMAN_STAY_STAT 	stuExitManStayInfo[MAX_EXITMAN_NUM];   //离开人员的滞留时间信息
}CFG_VIDEOSATA_SUMMARY_INFO;

// 单场景跟踪结构体
typedef struct tagCFG_SINGLESCENE
{
	int                 nStructSize;
	int					nSingleAlarmDelay;					//报警延时:1~600秒
	int					nSinglePresetID;					//预置点编号:1~255(-1代表无定义)
}CFG_SINGLESCENE;
// 巡航路径结构体
typedef struct tagCFG_TOURPATH
{
	int                 nStructSize;
	int					nMultiPresetID;						//场景预置点编号
	int					nMultiDuration;						//停留时间30~900秒
}CFG_TOURPATH;

//多场景跟踪优先模式
typedef enum tagCFG_MULTSCENE_PRIOR_MODE
{
    EM_MULTSCENE_PRIOR_MODE_UNKNOW = 0  , 
    EM_MULTSCENE_PRIOR_MODE_DETECT      , //检测优先,等待系统检测完毕后再切换场景
    EM_MULTSCENE_PRIOR_MODE_SWITCH      , //切换优先,直接停掉系统检测,切换到下一个场景
}CFG_MULTSCENE_PRIOR_MODE;

// 多场景跟踪结构体
typedef struct tagCFG_MULTISCENE
{
	int                         nStructSize;
	int					        nMultiAlarmDelay;					    //报警延时:1~600秒
	int					        nTourPathCount;						    //巡航路径个数
	CFG_TOURPATH	            stuMultiTourPath[MAX_TRACKSCENE_NUM];   //巡航路径
    CFG_MULTSCENE_PRIOR_MODE    emPriorMode;                            //优先模式
}CFG_MULTISCENE;

// 全场景跟踪结构体
typedef struct tagCFG_FULLSCENE
{
	int                 nStructSize;
	int					nFullAlarmDelay;					//报警延时:1~600秒
	int					nFullPresetID;						//预置点编号,全景跟踪预置点固定为0,用户不可设置
	int					nFullDuration;						//全景跟踪持续时间,0秒: 一直跟踪;1~300:跟踪持续时间
}CFG_FULLSCENE;
// 限位参数结构体
typedef struct tag_CFG_POSITION_LIMIT
{
	int                 nStructSize;
	BOOL				bEnable;							//启用限位参数
	int					nType;								//限位值表述方式:0: 由云台在限位设置操作时保存数据,限位值数据无意义
	                                                        //1:限位值用角度(单位0.1度)表示,用该值设置该场景的限位
	int					nTop;								//上限位值, 0~900:(单位0.1度)
	int					nBottom;							//下限位值:0~900:(单位0.1度)
	int					nLeft;								//左限位值:0~3600:(单位0.1度)
	int					nRight;								//右限位值:0~3600:(单位0.1度)
}CFG_POSITION_LIMIT;

//自行设置的标记方向
typedef enum tagCFG_SCENE_DIRECTION_INFO
{
    EM_SCENE_DIRECTION_UNKNOW =0    , 
    EM_SCENE_DIRECTION_APPROACH     ,   //上行
    EM_SCENE_DIRECTION_LEAVE        ,   //下行
    EM_SCENE_DIRECTION_BOTH         ,   //双向
    EM_SCENE_DIRECTION_EAST2WEST    ,   //由东向西
    EM_SCENE_DIRECTION_WEST2EAST    ,   //由西向东
    EM_SCENE_DIRECTION_SOUTH2NORTH  ,   //由南向北
    EM_SCENE_DIRECTION_NORTH2SOUTH  ,   //由北向南
    EM_SCENE_DIRECTION_OTHER        ,   //其他
}CFG_SCENE_DIRECTION_INFO;

// 场景信息结构体
typedef struct tagCFG_SCENE
{
	int                         nStructSize;
	int					        nScenePresetID;						//场景预置点,1~255,通过预置点编号关联到对应规则上
	char			            szSceneName[MAX_NAME_LEN];		    //场景名
	int					        nSceneDuration;						//跟踪持续时间:0秒: 一直跟踪;1~300:跟踪持续时间
	double		                dSceneMaxZoom;					    //归一化到0~1;为null表示使用全局MaxZoom值
	CFG_POSITION_LIMIT	        stuPositionLimit;                   //限位参数
    int                         nSceneRegression;                   //归位时间,1~10秒:跟踪丢失后回到原场景的时间
    CFG_SCENE_DIRECTION_INFO    emDirectionInfo;                    ///自行设置的标记方向
}CFG_SCENE;

// 智能跟踪模式
typedef enum tagCFG_INTELLI_TRACE_MODE
{
    EM_INTELLI_TRACE_MODE_UNKNOW = 0 ,
    EM_INTELLI_TRACE_MODE_INDOOR     , //室内跟踪(短时间)
    EM_INTELLI_TRACE_MODE_OUTDOOR    , //室外跟踪
    EM_INTELLI_TRACE_MODE_CLASSROOM  , //教室跟踪(长时间且需要人物标定)
}CFG_INTELLI_TRACE_MODE;

// 智能跟踪场景配置结构体
typedef struct tagCFG_INTELLITRACKSCENE_INFO
{
	int                     nStructSize;
	BOOL		            bEnableTrack;				       //启用智能跟踪
	int				        nTrackType;						   //0,报警跟踪;1,手动跟踪
	double			        dMaxZoom;						   //最大跟踪倍率,归一化到0~1,为null表示无限制
	char			        szCategory[MAX_NAME_LEN];		   //当前跟踪类型,"SingleScene":单场景跟踪;"MultiScene":多场景跟踪;"FullScene":全景跟踪
	CFG_SINGLESCENE         stuSingleTrack;					   //单场景跟踪
	CFG_MULTISCENE	        stuMultiTrack;	                   //多场景跟踪
	CFG_FULLSCENE	        stuFullTrack;					   //全景跟踪
	int				        nSceneCount;					   //支持的场景个数
	CFG_SCENE		        stuScene[MAX_TRACKSCENE_NUM];	   //场景列表
    double                  dCameraHeight;                     //摄像头离地面垂直距离,单位:米
    int                     nIdleDelay;                        //空闲等待时间,单位:秒(即用户停止操作设备后,到智能继续生效的空闲延时时间)
    CFG_INTELLI_TRACE_MODE  emTraceMode;                       //跟踪模式
}CFG_INTELLITRACKSCENE_INFO;

// 鱼眼详细配置

#define   CFG_MAX_FISHEYE_WINDOW_NUM               8         // 最大鱼眼窗口数
#define   CFG_MAX_FISHEYE_MODE_NUM                 8         // 最大鱼眼模式数   
// 鱼眼窗口位置信息
typedef struct tagCFG_FISHEYE_WINDOW_INFO
{
    DWORD             dwWindowID;                        // 窗口ID
    int               nFocusX;                           // EPtz(电子云台)的焦点横坐标
    int               nFocusY;                           // EPtz (电子云台)的焦点纵坐标   
    int               nHorizontalAngle;                  // EPtz的水平角度
    int               nVerticalAngle;                    // EPtz的垂直角度
}CFG_FISHEYE_WINDOW_INFO;

// 鱼眼各模式的窗口位置信息
typedef struct tagCFG_FISHEYE_MODE_INFO
{
    int                nModeType;                        // 模式类型,详见 CFG_CALIBRATE_MODE
    int                nWindowNum;                       // 当前模式下的窗口数
    CFG_FISHEYE_WINDOW_INFO stuWindwos[CFG_MAX_FISHEYE_WINDOW_NUM]; // 具体窗口信息 
}CFG_FISHEYE_MODE_INFO;

typedef struct tagCFG_FISHEYE_DETAIL_INFO
{
    int                nModeNum;                         // 模块数
    CFG_FISHEYE_MODE_INFO stuModes[CFG_MAX_FISHEYE_MODE_NUM]; // 具体模块信息  
}CFG_FISHEYE_DETAIL_INFO;

// 平台下发呼叫无应答转移配置列表
#define   CFG_MAX_NOANSWER_FORWARD_GROUP_NUM                    32         // 最大无应答前转列表个数
#define   CFG_MAX_FORWARD_NUMBERS_NUM                           32         // 最大无应答转移号码个数

// 无应答转移配置
typedef struct tagCFG_VT_NOANSWER_FORWARD_GROUP
{
    char                    szRoomNumber[CFG_COMMON_STRING_32];          // 被呼叫号码
    int                     nForwardNumbersNum;                          // 无应答转移号码个数
    char                    szForwardNumbers[CFG_MAX_FORWARD_NUMBERS_NUM][CFG_COMMON_STRING_64]; // 无应答转移号码列表  
}CFG_VT_NOANSWER_FORWARD_GROUP;

// 平台下发呼叫无应答转移配置列表信息
typedef struct tagCFG_VT_NOANSWER_FORWARD_INFO
{
    BOOL                            bEnable;                                        // 无应答转移使能
    int                             nGroupNum;                                      // 无应答转移配置列表有效个数,范围:0 ~ CFG_MAX_NOANSWER_FORWARD_GROUP_NUM
    CFG_VT_NOANSWER_FORWARD_GROUP   stuGroups[CFG_MAX_NOANSWER_FORWARD_GROUP_NUM];  // 无应答转移配置列表  
}CFG_VT_NOANSWER_FORWARD_INFO;

// VTO呼叫配置
typedef struct tagCFG_VTO_CALL_INFO
{
    BOOL                            bAreaEnable;                                        // 跨区域联网使能
    char                            szAreaNumber[CFG_COMMON_STRING_32];                  // 区域编码
    BOOL                            bMiddleNumberCallEnable;                            // 中号呼叫开关
    char                            szVTHMiddleNumberPrefix[CFG_COMMON_STRING_16];       // VTH中号前缀,固定长度4位
    char                            szVTHLongNumberPrefix[CFG_COMMON_STRING_32];         // VTH长号前缀,固定长度8位
    char                            szVTOShortNumber[CFG_COMMON_STRING_16];              // VTO短号,固定长度4位
    char                            szVTOMiddleNumberPrefix[CFG_COMMON_STRING_16];       // VTO中号前缀,固定长度4位
    char                            szVTOLongNumbrPrefix[CFG_COMMON_STRING_32];          // VTO长号前缀,固定长度12位
    char                            szVTSLongNumber[CFG_COMMON_STRING_32];               // VTS长号,固定长度18位
    char                            szVillaCallVTHNum[CFG_COMMON_STRING_32];             // 别墅机呼叫号码
}CFG_VTO_CALL_INFO;

/************************工作状态配置**********************************/

// 抓拍模式
typedef enum tagCFG_TRAFFIC_SNAP_MODE
{
	TRAFFIC_SNAP_MODE_AUTO = 0,				       // 自动抓拍
	TRAFFIC_SNAP_MODE_COIL,				           // 线圈抓拍
	TRAFFIC_SNAP_MODE_COIL_PICANALYSIS,		       // 线圈抓拍, 图片分析
	TRAFFIC_SNAP_MODE_STREAM,				       // 视频抓拍
	TRAFFIC_SNAP_MODE_STREAM_IDENTIFY,		       // 视频抓拍, 并且识别
	TRAFFIC_SNAP_MODE_MIX_IDENTIFY,		           // 混合抓拍, 并且识别
} CFG_TRAFFIC_SNAP_MODE;

// 设备工作状态信息
typedef struct tagCFG_TRAFFIC_WORKSTATE_INFO
{
	int                     nChannelID;  // 通道号
	CFG_TRAFFIC_SNAP_MODE   emSnapMode;  // 抓拍模式
	int                     nMatchMode;  // 抓拍匹配模式: 0-非实时匹配方式,先报警后抓拍,抓拍帧不是报警帧;  1-实时匹配模式,报警帧和抓拍帧是同一帧 
}CFG_TRAFFIC_WORKSTATE_INFO;

// 获取设备工作状态是否正常(CFG_CAP_CMD_DEVICE_STATE 对应的结构体)
typedef struct tagCFG_TRAFFIC_DEVICE_STATUS
{
	char                 szType[MAX_PATH];          // 设备类型	支持:"Radar","Detector","SigDetector","StroboscopicLamp"," FlashLamp"
	char                 szSerialNo[MAX_PATH];      // 设备编号
	char                 szVendor[MAX_PATH];        // 生产厂商
	int                  nWokingState;              // 工作状态	0-故障,1-正常工作
	BYTE				 byLightState;				// RS485灯的亮灭状态,Type 为"DhrsStroboscopicLamp"或者"DhrsSteadyLamp"时有效
													// 0-未知, 1-灯亮, 2-灯灭
	BYTE				 byReserved[3];             // 预留字节
				 
}CFG_TRAFFIC_DEVICE_STATUS;

typedef struct tagCFG_CAP_TRAFFIC_DEVICE_STATUS
{
	int                        nStatus;             // stuStatus 实际个数
	CFG_TRAFFIC_DEVICE_STATUS  stuStatus[MAX_STATUS_NUM];
}CFG_CAP_TRAFFIC_DEVICE_STATUS;

/************************录像盘组配置**********************************/

// 存储组信息
typedef struct tagCFG_STORAGEGROUP_INFO
{
	char                  szGroupName[MAX_STORAGEGROUPNAME_LEN];   // 存储组名称
	BYTE*                 byDisks;                                 // 物理磁盘序号缓冲区
	int                   nBufSize;                                // 缓冲区byDisks的长度
	int                   nDiskNum;                                // 存储组中的磁盘数
	int                   nGroupIndex;                             // 存储组序号(1~最大硬盘数)
}CFG_STORAGEGROUP_INFO;

// 录像-存储组 对应信息
typedef struct tagCFG_RECORDTOGROUP_INFO
{
	int                   nChannelID;                               // 通道号
	BOOL                  bEnable;                                  // 使能                       
	char                  szGroupName[MAX_STORAGEGROUPNAME_LEN];    // 存储组名称, 只读
	int                   nGroupIndex;                              // 存储组序号(1~最大盘组, 0则表示无对应盘组),通过此参数与CFG_STORAGE_GROUP_INFO关联
}CFG_RECORDTOGROUP_INFO;

enum EM_STORAGEPOINT_TYPE
{
       	EM_STORAGE_TIMINGRECORD,        //定时录像存储点类型
		EM_STORAGE_MANUALRECORD,        //手动录像存储点类型
		EM_STORAGE_VIDEODETECTRECORD,   //视频检测录像存储点类型
		EM_STORAGE_ALARMRECORD,         //报警录像存储点类型
		EM_STORAGE_CARDRECORD,          //卡号录像存储点类型
		EM_STORAGE_EVENTRECORD,         // 其他事件录像存储点类型                
		EM_STORAGE_TIMINGSNAPSHOT,      // 定时抓图存储点类型
		EM_STORAGE_MANUALSNAPSHOT,      // 手动抓图存储点类型
		EM_STORAGE_VIDEODETECTSNAPSHOT, // 视频检测抓图存储点类型
		EM_STORAGE_ALARMSNAPSHOT,       // 报警抓图存储点类型
		EM_STORAGE_CARDSNAPSHOT,        // 卡号抓图存储点类型
		EM_STORAGE_EVENTSNAPSHOT,       // 其他事件抓图存储点类型
		EM_STORAGE_TIMINGEXTRA1RECORD,  // 辅码流1录像存储点类型
};
// 存储点配置信息
typedef struct tagCFG_STORAGEPOINT_INFO
{
	DWORD dwSize;
	EM_STORAGEPOINT_TYPE emStoragePointType;// 存储点类型
	char nLocalDir;                         //本地工作目录组名称, 空表示不录到本地
	char szCompressDir[MAX_DIRECTORY_LEN];  //实时压缩存储目录组,空表示不使用实时压缩存储。
	char szRedundantDir[MAX_DIRECTORY_LEN]; //冗余工作目录组名称,空表示没有冗余录像。
	char szRemoteDir[MAX_DIRECTORY_LEN];   //远程工作目录组名称,空表示不录到远程。
	BOOL bAutoSync;                         //远程存储网络故障恢复后,是否自动将本地存储的数据同步到远程存储。
	UINT nAutoSyncRange;                    //从网络恢复的时刻开始,需要往前同步的数据时间范围,小时为单位,0表示同步所有数据。
	BOOL bLocalEmergency;                   //远程目录无法访问时,是否保存到本地目录。
	UINT nCompressBefore;                   //设置将多少天之前的录像文件进行压缩。
}CFG_STORAGEPOINT_INFO;

// 录像存储点映射配置信息
typedef struct tagCFG_RECORDTOSTORAGEPOINT_INFO
{
	int	nStoragePointNum;                                        //存储点数目
	CFG_STORAGEPOINT_INFO stStoragePoints[MAX_STORAGEPOINT_NUM]; // 存储点配置信息
}CFG_RECORDTOSTORAGEPOINT_INFO;

// 录像存储点映射配置扩展信息
typedef struct tagCFG_RECORDTOSTORAGEPOINT_EX_INFO
{
	DWORD							dwSize;
	int								nMaxChannelRecord; // 最大录像通道配置个数
	int								nRetChannelRecord; // 实际返回通道配置个数
	CFG_RECORDTOSTORAGEPOINT_INFO	*pstRecordStorage; // 通道存储点配置信息, 由用户申请内存, 大小为sizeof(CFG_RECORDTOSTORAGEPOINT_INFO)*nMaxChannelRecord
}CFG_RECORDTOSTORAGEPOINT_EX_INFO;

//iscsi直存,元数据服务器配置接口
typedef struct __tagCFG_METADATA_SERVER
{
	DWORD       nStructSize;
	BOOL        bEnable;                              //使能开关
	char        szAddress[MAX_ADDRESS_LEN];           //IP地址或网络名
	DWORD       dwPort;                               //端口号
	char        szUserName[MAX_USERNAME_LEN];         //帐户名  
	char        szPassword[MAX_PASSWORD_LEN];         //密码
	char        szDeviceID[MAX_REMOTEDEVICENAME_LEN]; //为使用元数据服务器的设备统一分配的ID,设备以此ID标识自己
}CFG_METADATA_SERVER;

// 车载货重配置
typedef struct __tagCFG_GOOD_WEIGHT_INFO
{
	DWORD		dwMaxGoodsWeight;					// 最大货重(kg)
	DWORD		dwMinGoodsWeight;					// 最小货重(kg)
	DWORD		dwSelfWeight;						// 自重(kg)
	DWORD		dwStandardWeight;					// 核重(kg)
	DWORD		dwAlarmWeight;						// 报警阈值(kg)
	int			nCheckTime;							// 静止采集时间(s)
} CFG_GOOD_WEIGHT_INFO;

//镜头聚焦状态信息
typedef struct tagCFG_CAP_FOCUS_STATUS
{
	int					nAutofocusPeak;							// 当前AF峰值	辅助聚焦模式下有效
	double		        dFocus;									// 聚焦位置	归一化到0~1
	double		        dZoom;									// 放大倍数	归一化到0~1
	int					nStatus;								// 聚焦状态, 0 正常状态 1 正在自动聚焦
}CFG_CAP_FOCUS_STATUS;

//云台支持能力信息
typedef struct tagCFG_CAP_PTZ_ENABLEINFO 
{
	BOOL bEnable;												//该通道是否支持云台
	
}CFG_CAP_PTZ_ENABLEINFO;


// 网络应用能力集
typedef struct tagCFG_CAP_NETAPP
{
	int                nNetCardCount;                           // 网卡数量
	int                nNetTypeNumber;                          // 网络类型个数
	char               szNetType[MAX_NET_TYPE_NUM][MAX_NET_TYPE_LEN]; // 具体网络类型, "PPPoE","WIFI","3G","LAN"
}CFG_CAP_NETAPP;



///////////////////////////////////三代协议新增///////////////////////////////////////
// 录像模式
struct AV_CFG_RecordMode
{
	AV_int32			nStructSize;
	AV_int32			nMode;							// 录像模式, 0-自动录像,1-手动录像,2-关闭录像
    AV_int32			nModeExtra1;					// 辅码流1录像模式, 0-自动录像,1-手动录像,2-关闭录像
    AV_int32			nModeExtra2;					// 辅码流2录像模式, 0-自动录像,1-手动录像,2-关闭录像
};

// 通道名称
struct AV_CFG_ChannelName
{
	AV_int32			nStructSize;
	AV_int32			nSerial;						// 摄像头唯一编号
	char				szName[CFG_MAX_CHANNEL_NAME_LEN];// 通道名
};

// 视频输出属性
struct AV_CFG_VideoOutAttr
{
	AV_int32			nStructSize;
	AV_int32			nMarginLeft;					// 左边距, 比率, 0~100
	AV_int32			nMarginTop;						// 上边距, 比率, 0~100
	AV_int32			nMarginRight;					// 右边距, 比率, 0~100
	AV_int32			nMarginBottom;					// 下边距, 比率, 0~100
	AV_int32			nBrightness;					// 亮度, 0~100
	AV_int32			nContrast;						// 对比度, 0~100
	AV_int32			nSaturation;					// 饱和度, 0~100
	AV_int32			nHue;							// 色调, 0~100
	AV_int32			nWidth;							// 水平分辨率
	AV_int32			nHeight;						// 垂直分辨率
	AV_int32			nBPP;							// 颜色深度
	AV_int32			nFormat;						// -1-未知, 0-Auto, 1-TV, 2-VGA, 3-DVI, 4-HDMI, 5-SPOT
	AV_int32			nRefreshRate;					// 刷新频率
	AV_BOOL				bIQIMode;						// 输出图像增强
	AV_int32			nScanFormat;					// 扫描模式, 0-逐行, 1-隔行
};

// 时间段
struct AV_CFG_TimeSection
{
	AV_int32			nStructSize;
	AV_int32			nMask;							// 掩码
	AV_int32			nBeginHour;						// 开始时间
	AV_int32			nBeginMinute;
	AV_int32			nBeginSecond;
	AV_int32			nEndHour;						// 结束时间
	AV_int32			nEndMinute;
	AV_int32			nEndSecond;
};

// 远程通道
struct AV_CFG_RemoteChannel 
{
	AV_int32			nStructSize;
	AV_BOOL				bEnable;						// 使能
	char				szDeviceID[AV_CFG_Device_ID_Len];	// 设备ID
	AV_int32			nChannel;						// 通道号
};

// 显示源
struct AV_CFG_DisplaySource 
{
	AV_int32			nStructSize;
	AV_int32			nWindowID;						// 窗口ID
	AV_BOOL				bEnable;						// 使能
	char				szDeviceID[AV_CFG_Device_ID_Len];// 设备ID
	AV_int32			nVideoChannel;					// 视频通道号
	AV_int32			nVideoStream;					// 视频码流
	AV_int32			nAudioChannle;					// 音频通道号
	AV_int32			nAudioStream;					// 音频码流
	AV_BOOL				bVideoEnable;			        // 表示该窗口是否有视频源
};

// 通道分割显示源
struct AV_CFG_ChannelDisplaySource 
{
	AV_int32			nStructSize;
	AV_int32			nWindowNum;						// 分割窗口数量
	AV_CFG_DisplaySource stuSource[AV_CFG_Max_Split_Window];// 分割窗口显示源
};

// 画面轮训下分割模式的分组使能状态
struct AV_CFG_MonitorTourMask
{
	AV_int32			nStructSize;
	CFG_SPLITMODE		emSplitMode;					// 分割模式
	AV_int32			nGroupNum;						// 分组数量
	AV_int32			nGroup[AV_CFG_Max_Split_Group];	// 该分割模式下加入轮训的分组
};

// 画面轮训
struct AV_CFG_MonitorTour 
{
	AV_int32			nStructSize;
	AV_BOOL				bEnable;						// 使能
	AV_int32			nInterval;						// 时间间隔, 5~120s
	AV_int32			nSplitMaskNum;					// 分割分组使能数量
	AV_CFG_MonitorTourMask	stuSplitMask[AV_CFG_Max_Split_Mode];// 各分割模式对应的分组使能状态
	AV_int32			nCollectionNum;					// 收藏数量
	char				szCollection[AV_CFG_Monitor_Favorite_In_Channel][AV_CFG_Monitor_Favorite_Name_Len];// 画面收藏名称
};

// 监视画面收藏
struct AV_CFG_MonitorFavorite 
{
	AV_int32			nStructSize;
	AV_BOOL				bDir;										// 是否为目录	
	char				szName[AV_CFG_Monitor_Favorite_Name_Len];	// 名称
	char				szPath[AV_CFG_Max_Path];					// 目录路径, 格式如下: .name1.name2.name3
	CFG_SPLITMODE		emMode;										// 分割模式
	AV_int32			nWindowNum;									// 窗口数量
	AV_CFG_DisplaySource stuWindow[AV_CFG_Max_Monitor_Favorite_Window];	// 窗口显示源配置
};

// 监视画面收藏集合
struct AV_CFG_MonitorCollection 
{
	AV_int32			nStructSize;
	AV_CFG_MonitorFavorite*	pstuFavorite;				// 画面收藏数组
	AV_int32			nMaxCount;						// 画面收藏数组大小
	AV_int32			nRetCount;						// 返回的画面收藏数量
};

// Raid信息
struct AV_CFG_Raid 
{
	AV_int32			nStructSize;
	char				szName[AV_CFG_Raid_Name_Len];	// 名称
	AV_int32			nLevel;							// 等级
	AV_int32			nMemberNum;						// 磁盘成员数量
	char				szMembers[AV_CFG_Max_Rail_Member][AV_CFG_Max_Path];	// 磁盘成员
};

// 录像源
struct AV_CFG_RecordSource
{
	AV_int32			nStructSize;
	AV_BOOL				bEnable;						// 使能
	char				szDeviceID[AV_CFG_Device_ID_Len];// 设备ID
	AV_int32			nVideoChannel;					// 视频通道号
	AV_int32			nVideoStream;					// 视频码流
	AV_int32			nAudioChannle;					// 音频通道号
	AV_int32			nAudioStream;					// 音频码流
};

// 编码格式, 包括音频和视频
struct AV_CFG_EncodeFormat
{
	AV_int32			nStructSize;
	AV_BOOL				bAudioEnable;					// 音频使能
	AV_int32			nAudioBitRate;					// 音频比特率
	CFG_AUDIO_FORMAT	emAudioCompression;				// 音频压缩模式
	AV_int32			nAudioDepth;					// 音频采样深度
	AV_int32			nAudioFrequency;				// 音频采样频率
	AV_int32			nAudioMode;						// 音频编码模式
	AV_int32			nAudioPack;						// 音频打包模式, 0-DHAV, 1-PS

	AV_BOOL				bVideoEnable;					// 视频使能
	AV_int32			nVideoBitRate;					// 视频比特率
	CFG_BITRATE_CONTROL	emVideoBitRateControl;			// 码流控制模式
	CFG_VIDEO_COMPRESSION emVideoCompression;			// 视频压缩模式
	AV_int32			nVideoFPS;						// 视频帧率
	AV_int32			nVideoGOP;						// 视频I帧间隔
	AV_int32			nVideoWidth;					// 视频宽度
	AV_int32			nVideoHeight;					// 视频高度
	CFG_IMAGE_QUALITY	emVideoQuality;					// 视频图像质量
	AV_int32			nVideoPack;						// 视频打包模式, 0-DHAV, 1-PS	
};

// 编码配置
struct AV_CFG_Encode 
{
	AV_int32			nStructSize;
	AV_CFG_EncodeFormat stuMainFormat[AV_CFG_Max_Encode_Main_Format];	// 主码流, 包括普通编码, 动检编码, 报警编码
	AV_CFG_EncodeFormat	stuExtraFormat[AV_CFG_Max_Encode_Extra_Format];	// 辅码流, 包括辅码流1, 辅码流2, 辅码流3
	AV_CFG_EncodeFormat	stuSnapFormat[AV_CFG_Max_Encode_Snap_Format];	// 抓图, 包括普通抓图, 动检抓图, 报警抓图
};

// videocolor style
typedef enum tagCFG_ENUM_VIDEOCOLOR_STYLE
{
    CFG_ENUM_VIDEOCOLOR_STYLE_UNKNOWN,                // 未知
    CFG_ENUM_VIDEOCOLOR_STYLE_GENTLE,                 // 柔和
    CFG_ENUM_VIDEOCOLOR_STYLE_STANDARD,               // 标准
    CFG_ENUM_VIDEOCOLOR_STYLE_FLAMBOYANT,             // 艳丽
}CFG_ENUM_VIDEOCOLOR_STYLE;

// 光照场景类型
typedef enum tagEM_LIGHT_SCENE
{
    EM_LIGHT_SCENE_UNKNOWN,             // 未知
    EM_LIGHT_SCENE_DAY,                 // 白天
    EM_LIGHT_SCENE_NIGHT,               // 夜晚
    EM_LIGHT_SCENE_NORMAL,              // 普通
    EM_LIGHT_SCENE_FRONT_LIGHT,         // 顺光
    EM_LIGHT_SCENE_BACK_LIGHT,          // 一般逆光
    EM_LIGHT_SCENE_STRONG_LIGHT,        // 强逆光
    EM_LIGHT_SCENE_LOW_LIGHT,           // 低照度
    EM_LIGHT_SCENE_CUSTOM,              // 自定义
}EM_LIGHT_SCENE;


// 视频输入颜色配置, 每个视频输入通道对应多个颜色配置
struct AV_CFG_VideoColor 
{
	AV_int32			nStructSize;
	AV_CFG_TimeSection	stuTimeSection;					// 时间段
	AV_int32			nBrightness;					// 亮度, 0~100
	AV_int32			nContrast;						// 对比度, 0~100
	AV_int32			nSaturation;					// 饱和度, 0~100
	AV_int32			nHue;							// 色调, 0~100
	AV_int32			nGamma;							// 增益, 0~100
    AV_int32            nChromaSuppress;                // 色彩抑制等级 0~100
    CFG_ENUM_VIDEOCOLOR_STYLE emColorStyle;             // 色彩风格
};

// 通道视频输入颜色配置
struct AV_CFG_ChannelVideoColor 
{
	AV_int32			nStructSize;
	AV_int32			nColorNum;						// 通道颜色配置数
	AV_CFG_VideoColor	stuColor[AV_CFG_Max_VideoColor];// 通道颜色配置, 每个通道对应多个颜色配置
};

// 颜色
struct AV_CFG_Color
{
	AV_int32			nStructSize;
	AV_int32			nRed;							// 红
	AV_int32			nGreen;							// 绿
	AV_int32			nBlue;							// 蓝
	AV_int32			nAlpha;							// 透明
};

// 区域
struct AV_CFG_Rect 
{
	AV_int32			nStructSize;
	AV_int32			nLeft;
	AV_int32			nTop;
	AV_int32			nRight;
	AV_int32			nBottom;	
};

// 编码物件-区域覆盖配置
struct AV_CFG_VideoWidgetCover 
{
	AV_int32			nStructSize;	
	AV_BOOL				bEncodeBlend;					// 叠加到主码流
	AV_BOOL				bEncodeBlendExtra1;				// 叠加到辅码流1
	AV_BOOL				bEncodeBlendExtra2;				// 叠加到辅码流2
	AV_BOOL				bEncodeBlendExtra3;				// 叠加到辅码流3
	AV_BOOL				bEncodeBlendSnapshot;			// 叠加到抓图
	AV_CFG_Color		stuFrontColor;					// 前景色
	AV_CFG_Color		stuBackColor;					// 背景色
	AV_CFG_Rect			stuRect;						// 区域, 坐标取值0~8191
	AV_BOOL				bPreviewBlend;					// 叠加到预览视频
};

// 通道标题对齐信息
typedef enum tagEM_TITLE_TEXT_ALIGN
{
    EM_TEXT_ALIGN_INVALID,                              // 无效的对齐方式
    EM_TEXT_ALIGN_LEFT,                                 // 左对齐
    EM_TEXT_ALIGN_XCENTER,                              // X坐标中对齐
    EM_TEXT_ALIGN_YCENTER,                              // Y坐标中对齐
    EM_TEXT_ALIGN_CENTER,                               // 居中
    EM_TEXT_ALIGN_RIGHT,                                // 右对齐
    EM_TEXT_ALIGN_TOP,                                  // 按照顶部对齐
    EM_TEXT_ALIGN_BOTTOM,                               // 按照底部对齐
    EM_TEXT_ALIGN_LEFTTOP,                              // 按照左上角对齐
    EM_TEXT_ALIGN_CHANGELINE,                           // 换行对齐
}EM_TITLE_TEXT_ALIGN;

// 编码物件-通道标题
struct AV_CFG_VideoWidgetChannelTitle
{
	AV_int32			nStructSize;
	AV_BOOL				bEncodeBlend;					// 叠加到主码流
	AV_BOOL				bEncodeBlendExtra1;				// 叠加到辅码流1
	AV_BOOL				bEncodeBlendExtra2;				// 叠加到辅码流2
	AV_BOOL				bEncodeBlendExtra3;				// 叠加到辅码流3
	AV_BOOL				bEncodeBlendSnapshot;			// 叠加到抓图
	AV_CFG_Color		stuFrontColor;					// 前景色
	AV_CFG_Color		stuBackColor;					// 背景色
	AV_CFG_Rect			stuRect;						// 区域, 坐标取值0~8191, 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
	AV_BOOL				bPreviewBlend;					// 叠加到预览视频
};

// 编码物件-时间标题
struct AV_CFG_VideoWidgetTimeTitle
{
	AV_int32			nStructSize;
	AV_BOOL				bEncodeBlend;					// 叠加到主码流
	AV_BOOL				bEncodeBlendExtra1;				// 叠加到辅码流1
	AV_BOOL				bEncodeBlendExtra2;				// 叠加到辅码流2
	AV_BOOL				bEncodeBlendExtra3;				// 叠加到辅码流3
	AV_BOOL				bEncodeBlendSnapshot;			// 叠加到抓图
	AV_CFG_Color		stuFrontColor;					// 前景色
	AV_CFG_Color		stuBackColor;					// 背景色
	AV_CFG_Rect			stuRect;						// 区域, 坐标取值0~8191, 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
	AV_BOOL				bShowWeek;						// 是否显示星期
	AV_BOOL				bPreviewBlend;					// 叠加到预览视频
};
	
// 编码物件-自定义标题
struct AV_CFG_VideoWidgetCustomTitle 
{
	AV_int32			nStructSize;
	AV_BOOL				bEncodeBlend;					// 叠加到主码流
	AV_BOOL				bEncodeBlendExtra1;				// 叠加到辅码流1
	AV_BOOL				bEncodeBlendExtra2;				// 叠加到辅码流2
	AV_BOOL				bEncodeBlendExtra3;				// 叠加到辅码流3
	AV_BOOL				bEncodeBlendSnapshot;			// 叠加到抓图
	AV_CFG_Color		stuFrontColor;					// 前景色
	AV_CFG_Color		stuBackColor;					// 背景色
	AV_CFG_Rect			stuRect;						// 区域, 坐标取值0~8191, 仅使用left和top值, 点(left,top)应和(right,bottom)设置成同样的点
	char				szText[AV_CFG_Custom_Title_Len];// 标题内容
	AV_BOOL				bPreviewBlend;					// 叠加到预览视频
    char                szType[AV_CFG_Custom_TitleType_Len];// 标题类型 "Rtinfo" 实时刻录信息 "Custom" 自定义叠加、温湿度叠加 "Title" :片头信息 "Check"  校验码
                                                            // 地理信息 "Geography"  ATM卡号信息 "ATMCardInfo" 摄像机编号 "CameraID" 
    EM_TITLE_TEXT_ALIGN emTextAlign;                    // 标题对齐方式
};

//  编码物件-叠加传感器信息-叠加内容描述
struct AV_CFG_VideoWidgetSensorInfo_Description 
{
	AV_int32			nStructSize;
	AV_int32			nSensorID;						// 需要描述的传感器的ID(即模拟量报警通道号)
    char                szDevID[CFG_COMMON_STRING_32];  // 设备ID
    char                szPointID[CFG_COMMON_STRING_32];// 测点ID
    char                szText[CFG_COMMON_STRING_256];  // 需要叠加的内容
};

// 编码物件-叠加传感器信息
struct AV_CFG_VideoWidgetSensorInfo
{
	AV_int32			nStructSize;
	AV_BOOL				bPreviewBlend;					// 叠加到预览视频
	AV_BOOL				bEncodeBlend;					// 叠加到主码流视频编码
	AV_CFG_Rect			stuRect;						// 区域, 坐标取值0~8191
	AV_int32			nDescriptionNum;				// 叠加区域描述数目
	AV_CFG_VideoWidgetSensorInfo_Description stuDescription[AV_CFG_Max_Description_Num];// 叠加区域描述信息
};

// OSD中的字体方案FontSolution
typedef enum tagEM_FONT_SOLUTION
{
    EM_FONT_UNKNOWN,			// 未知 
    EM_FONT_DFAULT,             // 默认字体 "default-font"
    EM_FONT_SIMKAI,			    // 楷体 "simkai"
    EM_FONT_SIMSUN,		        // 宋体"simsun"
}EM_FONT_SOLUTION;

// 视频编码物件配置
struct AV_CFG_VideoWidget 
{
	AV_int32						nStructSize;
	AV_CFG_VideoWidgetChannelTitle	stuChannelTitle;	// 通道标题
	AV_CFG_VideoWidgetTimeTitle		stuTimeTitle;		// 时间标题
	AV_int32						nConverNum;			// 区域覆盖数量
	AV_CFG_VideoWidgetCover			stuCovers[AV_CFG_Max_Video_Widget_Cover];				// 覆盖区域
	AV_int32						nCustomTitleNum;	// 自定义标题数量
	AV_CFG_VideoWidgetCustomTitle	stuCustomTitle[AV_CFG_Max_Video_Widget_Custom_Title];	// 自定义标题
	AV_int32						nSensorInfo;		// 传感器信息叠加区域数目
	AV_CFG_VideoWidgetSensorInfo	stuSensorInfo[AV_CFG_Max_Video_Widget_Sensor_Info];		// 传感器信息叠加区域信息
    double                          fFontSizeScale;            //叠加字体大小放大比例
                                                               //当fFontSizeScale≠0时,nFontSize不起作用
                                                               //当fFontSizeScale=0时,nFontSize起作用
                                                               //设备默认fFontSizeScale=1.0
                                                               //如果需要修改倍数,修改该值
                                                               //如果需要按照像素设置,则置该值为0,nFontSize的值生效
    AV_int32                        nFontSize;                 //叠加到主码流上的全局字体大小,单位 px.
                                                               //和fFontSizeScale共同作用
    AV_int32                        nFontSizeExtra1;           //叠加到辅码流1上的全局字体大小,单位 px
    AV_int32                        nFontSizeExtra2;           //叠加到辅码流2上的全局字体大小,单位 px
    AV_int32                        nFontSizeExtra3;           //叠加到辅码流3上的全局字体大小,单位 px
    AV_int32                        nFontSizeSnapshot;         //叠加到抓图流上的全局字体大小, 单位 px
    AV_int32                        nFontSizeMergeSnapshot;    //叠加到抓图流上合成图片的字体大小,单位 px
    EM_FONT_SOLUTION                emFontSolutionSnapshot;    //叠加到抓图流上的字体方案
};

// 存储组通道相关配置
struct AV_CFG_StorageGroupChannel 
{
	AV_int32			nStructSize;
	AV_int32			nMaxPictures;					// 每个通道文件夹图片存储上限, 超过就覆盖
	char				szPath[AV_CFG_Max_ChannelRule];	// 通道在命名规则里的字符串表示, %c对应的内容
};

// 存储组配置
struct AV_CFG_StorageGroup 
{
	AV_int32			nStructSize;	
	char				szName[AV_CFG_Group_Name_Len];	// 分组名称
	char				szMemo[AV_CFG_Group_Memo_Len];	// 分组说明
	AV_int32			nFileHoldTime;					// 文件保留时间
	AV_BOOL				bOverWrite;						// 存储空间满是否覆盖
	char				szRecordPathRule[AV_CFG_Max_Path];	// 录像文件路径命名规则
	char				szPicturePathRule[AV_CFG_Max_Path];	// 图片文件路径命名规则
															// %y年, %M月, %d日, %h时, %m分, %s秒, %c通道路径
															// 如果年月日时分秒出现两次, 第一次表示开始时间, 第二次表示结束时间
	AV_CFG_StorageGroupChannel	stuChannels[AV_CFG_Max_Channel_Num];// 通道相关配置 
	AV_int32			nChannelCount;				        // 通道配置数
    char                szCustomName[AV_CFG_Group_Name_Len];        // 自定义名称,若为空使用szName
    char                szSubDevices[MAX_DEV_NUM][MAX_DEVICE_NAME_LEN];     // 子设备列表
    AV_int32            nSubDevices;                        // 子设备数量
};

// DST时间
struct AV_CFG_DSTTime 
{
	AV_int32			nStructSize;
	AV_int32			nYear;							// 年, 2000~2038
	AV_int32			nMonth;							// 月, 1~12
	AV_int32			nWeek;							// 第几周, 1-第一周,2-第二周,...,-1-最后一周,0-按日期计算
	AV_int32			nDay;							// 星期几或日期
														// 按周计算时, 0-周日, 1-周一,..., 6-周六
														// 按日期算时, 表示几号, 1~31
	AV_int32			nHour;							// 小时
	AV_int32			nMinute;						// 分钟
};

// 区域配置
struct AV_CFG_Locales 
{
	AV_int32			nStructSize;
	char				szTimeFormat[AV_CFG_Time_Format_Len];	// 时间格式
	AV_BOOL				bDSTEnable;						// 夏令时时能
	AV_CFG_DSTTime		stuDstStart;					// 夏令时起始时间
	AV_CFG_DSTTime		stuDstEnd;						// 夏令时结束时间
    AV_BOOL             bWeekEnable;                    // 星期是否使能
    unsigned char       ucWorkDay;                      // 按位表示一周的工作日掩码,bit0表示周日,bit1表示周一
};

// 语言类型
enum AV_CFG_LanguageType
{
	AV_CFG_Language_English,							// 英文
	AV_CFG_Language_SimpChinese,						// 简体中文
	AV_CFg_Language_TradChinese,						// 繁体中文
	AV_CFG_Language_Italian,							// 意大利文
	AV_CFG_Language_Spanish,							// 西班牙文
	AV_CFG_Language_Janpanese,							// 日文
	AV_CFG_Language_Russian,							// 俄文
	AV_CFG_Language_French,								// 法文
	AV_CFG_Language_German,								// 德文
    AV_CFG_Language_Portugal,							// 葡萄牙文
    AV_CFG_Language_Turkey,								// 土耳其文
    AV_CFG_Language_Poland,								// 波兰文
    AV_CFG_Language_Romanian,							// 罗马尼亚
    AV_CFG_Language_Hungarian,							// 匈牙利语
    AV_CFG_Language_Finnish,							// 芬兰语
    AV_CFG_Language_Estonian,                           // 爱沙尼亚语    
    AV_CFG_Language_Korean,                             // 韩语    
    AV_CFG_Language_Farsi,                              // 波斯语     
    AV_CFG_Language_Dansk,                              // 丹麦语
    AV_CFG_Language_Czechish,                           // 捷克文
    AV_CFG_Language_Bulgaria,                           // 保加利亚文
    AV_CFG_Language_Slovakian,                          // 斯洛伐克语
    AV_CFG_Language_Slovenia,                           // 斯洛文尼亚文
    AV_CFG_Language_Croatian,                           // 克罗地亚语
    AV_CFG_Language_Dutch,                              // 荷兰语
    AV_CFG_Language_Greek,                              // 希腊语
    AV_CFG_Language_Ukrainian,                          // 乌克兰语
    AV_CFG_Language_Swedish,                            // 瑞典语
    AV_CFG_Language_Serbian,                            // 塞尔维亚语
    AV_CFG_Language_Vietnamese,                         // 越南语
    AV_CFG_Language_Lithuanian,                         // 立陶宛语
    AV_CFG_Language_Filipino,                           // 菲律宾语
    AV_CFG_Language_Arabic,                             // 阿拉伯语
    AV_CFG_Language_Catalan,                            // 加泰罗尼亚语
    AV_CFG_Language_Latvian,                            // 拉脱维亚语
    AV_CFG_Language_Thai,                               // 泰语
    AV_CFG_Language_Hebrew,                             // 希伯来语
    AV_CFG_Language_Bosnian,                            // 波斯尼亚文
};

// 语言配置
struct AV_CFG_Language 
{
	AV_int32			nStructSize;
	AV_CFG_LanguageType emLanguage;						// 当前语言
};

// 访问地址过滤
struct AV_CFG_AccessFilter
{
	AV_int32			nStructSize;
	AV_BOOL				bEnable;						// 使能
	AV_int32			nType;							// 类型, 0-黑名单, 1-白名单
	AV_int32			nWhiteListNum;					// 白名单IP数量
	char				szWhiteList[AV_CFG_Max_White_List][AV_CFG_Filter_IP_Len];	// 白名单
	AV_int32			nBlackListNum;					// 黑名单IP或IP段数量
	char				szBlackList[AV_CFG_Max_Black_List][AV_CFG_Filter_IP_Len];	// 黑名单
	AV_BOOL             bIndividual[AV_CFG_Max_White_List];   //白名单:针对单个IP控制是否使能。
															//通过CLIENT_GetDevCaps/NET_USER_MNG_CAPS查看是否支持.                                                             
																// 如果支持:可获取或设置该字段;若不支持,则该字段无效
	AV_BOOL				bIndividualInBlackList[AV_CFG_Max_Black_List];  //黑名单:针对单个IP控制是否使能
																// 通过CLIENT_GetDevCaps/NET_USER_MNG_CAPS查看是否支持.
															  // 如果支持:可获取或设置该字段;若不支持,则该字段无效
};

// 自动维护
struct AV_CFG_AutoMaintain 
{
	AV_int32			nStructSize;
	AV_int32			nAutoRebootDay;					// 自动重启日期, -1永不, 0~6周日~周六, 7每天
	AV_int32			nAutoRebootHour;				// 自动重启小时, 0~23
	AV_int32			nAutoRebootMinute;				// 自动重启分钟, 0~59
	AV_int32			nAutoShutdownDay;				// 自动关机日期
	AV_int32			nAutoShutdownHour;				// 自动关机小时
	AV_int32			nAutoShutdownMinute;			// 自动关机分钟
	AV_int32			nAutoStartupDay;				// 自动启动日期
	AV_int32			nAutoStartupHour;				// 自动启动小时
	AV_int32			nAutoStartupMinute;				// 自动启动分钟
	AV_BOOL				bAutoRebootEnable;				// true表示开启自动重启,false表示关闭自动重启
};

#define AV_CFG_Monitor_Name_Len		64			// 电视墙名称长度
#define AV_CFG_Max_TV_In_Block		128			// 区块中TV的最大数量
#define AV_CFG_Max_Block_In_Wall	128			// 电视墙中区块的最大数量

// 电视墙输出通道信息
struct AV_CFG_MonitorWallTVOut
{
	AV_int32		nStructSize;
	char			szDeviceID[AV_CFG_Device_ID_Len];	// 设备ID, 为空或"Local"表示本地设备
	AV_int32		nChannelID;							// 通道ID
	char			szName[AV_CFG_Channel_Name_Len];	// 屏幕名称
};

// 电视墙区块
struct AV_CFG_MonitorWallBlock 
{
	AV_int32				nStructSize;
	AV_int32				nLine;				// 单个TV占的网格行数
	AV_int32				nColumn;			// 单个TV占的网格列数
	AV_CFG_Rect				stuRect;			// 区块的区域坐标
	AV_int32				nTVCount;			// TV数量
	AV_CFG_MonitorWallTVOut	stuTVs[AV_CFG_Max_TV_In_Block];					// TV数组
	CFG_TIME_SECTION		stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];	// 开关机时间
	char					szName[AV_CFG_Channel_Name_Len];				// 区块名称
	char					szCompositeID[AV_CFG_Device_ID_Len];			// 融合屏ID
	char                    szBlockType[CFG_COMMON_STRING_32];   // 显示单元组类型,为支持由接收卡组成单元的小间距LED区块而增加该字段,其他类型的区块填写为"LCD",如不存在该字段,默认采用LCD
};

// 电视墙
struct AV_CFG_MonitorWall
{
	AV_int32			nStructSize;
	char				szName[AV_CFG_Monitor_Name_Len];	// 名称
	AV_int32			nLine;								// 网络行数
	AV_int32			nColumn;							// 网格列数
	AV_int32			nBlockCount;						// 区块数量
	AV_CFG_MonitorWallBlock stuBlocks[AV_CFG_Max_Block_In_Wall];// 区块数组
    BOOL                bDisable;                           // 是否禁用, 0-该电视墙有效, 1-该电视墙无效
    char                szDesc[CFG_COMMON_STRING_256];      // 电视墙描述信息
};

// 拼接屏
struct AV_CFG_SpliceScreen
{
	AV_int32			nStructSize;
	char				szName[AV_CFG_Channel_Name_Len];	// 拼接屏名称	
	char				szWallName[AV_CFG_Monitor_Name_Len];// 所属电视墙名称
	AV_int32			nBlockID;							// 所属区块序号
	AV_CFG_Rect			stuRect;							// 区域坐标(0~8191)
};

// 云台联动类型
typedef enum tagAV_CFG_PtzLinkType
{
	AV_CFG_PtzLink_None,				// 无联动
	AV_CFG_PtzLink_Preset,				// 联动预置点
	AV_CFG_PtzLink_Tour,				// 联动巡航
	AV_CFG_PtzLink_Pattern,				// 联动轨迹
} AV_CFG_PtzLinkType;

// 联动云台信息
typedef struct tagAV_CFG_PtzLink
{
	AV_int32            nStructSize;
	AV_CFG_PtzLinkType	emType;				// 联动类型 
	AV_int32			nParam1;			// 联动参数1
	AV_int32			nParam2;            // 联动参数2
	AV_int32			nParam3;            // 联动参数3
	AV_int32			nChannelID;         // 所联动云台通道
} AV_CFG_PtzLink;

// 坐标点
typedef struct tagAV_CFG_Point
{
	AV_int32			nStructSize;
	AV_int32			nX;
	AV_int32			nY;
} AV_CFG_Point;

// 宽高
typedef struct tagAV_CFG_Size
{
	AV_int32			nStructSize;
	AV_uint32			nWidth;
	AV_uint32			nHeight;
} AV_CFG_Size;	

// 事件标题内容
typedef struct tagAV_CFG_EventTitle
{
	AV_int32			nStructSize;
	char				szText[AV_CFG_Channel_Name_Len];	// 标题文本
	AV_CFG_Point		stuPoint;			// 标题左上角坐标, 采用0-8191相对坐标系
	AV_CFG_Size			stuSize;			// 标题的宽度和高度,采用0-8191相对坐标系,某项或者两项为0表示按照字体自适应宽高
    AV_CFG_Color		stuFrontColor;		// 前景颜色
    AV_CFG_Color		stuBackColor;		// 背景颜色
} AV_CFG_EventTitle;


// 轮巡联动配置
typedef struct tagAV_CFG_TourLink
{
	AV_int32			nStructSize;
	AV_BOOL				bEnable;			// 轮巡使能
	CFG_SPLITMODE		emSplitMode;		// 轮巡时的分割模式
	AV_int32			nChannels[AV_CFG_Max_Channel_Num];  // 轮巡通道号列表
	AV_int32			nChannelCount;		// 轮巡通道数量
} AV_CFG_TourLink;

// 报警联动
typedef struct tagAV_CFG_EventHandler
{
	AV_int32			nStructSize;
	AV_CFG_TimeSection  stuTimeSect[AV_CFG_Weekday_Num][AV_CFG_Max_TimeSection]; // 事件响应时间表
	AV_BOOL             bRecordEnable;		// 录像使能
	AV_uint32           nRecordMask[AV_CFG_Max_Channel_Num];	// 录像通道号列表
	AV_BOOL             abRecordLatch;		// 能力集, 标识nRecordLatch是否有效
	AV_int32            nRecordLatch;		// 录像延时时间(10~300秒)
	AV_BOOL				bAlarmOutEn;		// 报警输出使能
	AV_uint32			nAlarmOutMask[AV_CFG_Max_Channel_Num];	// 报警输出通道号列表
	AV_BOOL             abAlarmOutLatch;	// 能力集, 标识nAlarmOutLatch是否有效
	AV_int32			nAlarmOutLatch;		// 报警输出延时时间(10~300秒)
	AV_BOOL				bExAlarmOutEn;		// 扩展报警输出使能
	AV_uint32			nExAlarmOutMask[AV_CFG_Max_Channel_Num]; // 扩展报警输出通道列表
	AV_BOOL				bPtzLinkEn;			// 云台联动使能
	AV_int32            nPtzLinkNum;		// 有效联动项数目
	AV_CFG_PtzLink		stuPtzLink[AV_CFG_Max_Channel_Num];		// 云台联动项
	AV_BOOL				bSnapshotEn;		// 快照使能
	AV_uint32			nSnapshotMask[AV_CFG_Max_Channel_Num];  // 快照通道号列表	
	AV_BOOL             abSnapshotPeriod;	// 能力集, 标识nSnapshotPeriod是否有效
	AV_int32			nSnapshotPeriod;	// 帧间隔,每隔多少帧抓一张图片,一定时间内抓拍的张数还与抓图帧率有关。0表示不隔帧,连续抓拍。
	AV_BOOL             abSnapshotTimes;	// 能力集, nSnapshotTimes有效性
	AV_int32			nSnapshotTimes;		// 连拍次数, 在SnapshotEnable为true的情况下,SnapshotTimes为0则表示持续抓拍,直到事件结束。
	AV_BOOL             bSnapshotTitleEn;	// 是否叠加图片标题
	AV_int32            nSnapTitleNum;      // 有效图片标题数目
	AV_CFG_EventTitle   stuSnapTitles[AV_CFG_Max_Event_Title_Num]; // 图片标题内容
	AV_BOOL				bTipEnable;			// 本地消息框提示
	AV_BOOL				bMailEnable;		// 发送邮件,如果有图片,作为附件
	AV_BOOL				bMessageEnable;		// 上传到报警服务器
	AV_BOOL				bBeepEnable;		// 蜂鸣
	AV_BOOL				bVoiceEnable;		// 语音提示
	AV_BOOL             abDejitter;			// 能力集, nDejitter有效性
	AV_int32            nDejitter;			// 信号去抖动时间,单位为秒,0~100
	AV_BOOL             bLogEnable;			// 是否记录日志
	AV_BOOL             abDelay;			// nDelay有效性
	AV_int32            nDelay;				// 设置时先延时再生效, 单位为秒
	AV_BOOL             bVideoTitleEn;		// 是否叠加视频标题,主要指主码流
	AV_int32            nVideoTitleNum;		// 有效视频标题数目
	AV_CFG_EventTitle	stuVideoTitles[AV_CFG_Max_Event_Title_Num]; // 视频标题内容
	AV_BOOL				bMMSEnable;			// 发送彩信使能
	AV_int32            nTourNum;			// 轮巡联动数目,和视频输出一致
	AV_CFG_TourLink	    stuTour[AV_CFG_Max_Tour_Link_Num];		// 轮巡联动配置, 每个视频输出对应一个配置
	AV_int32            nDBKeysNum;			// 关键字数量
	char	            szDBKeys[AV_CFG_Max_DBKey_Num][AV_CFG_DBKey_Len]; // 关键字
	AV_BOOL             abJpegSummary;		// 能力集, 标识byJpegSummary是否有效
	AV_BYTE             byJpegSummary[AV_CFG_Max_Summary_Len]; // 叠加到JPEG图片的摘要信息
} AV_CFG_EventHandler;

#define AV_CFG_Event_Code_Len	64		// 事件码长度

// 远程设备事件处理
struct AV_CFG_RemoteEvent 
{
	AV_int32            nStructSize;
	AV_BOOL             bEnable;						 // 使能
	char                szDeviceID[AV_CFG_Device_ID_Len];// 设备ID
	char                szCode[AV_CFG_Event_Code_Len];	 // 事件码
	AV_int32            nIndex;							 // 序号
	AV_BOOL             abSensorType;                    // nSensorType是否有效
	AV_uint32           nSensorType;                     // 传感器类型 常开:1 or 常闭:0
	AV_CFG_EventHandler stuEventHandler;				 // 报警联动
};

// 温度报警配置
typedef struct tagAV_CFG_TemperatureAlarm
{
	AV_int32			nStructSize;
	AV_BOOL				bEnable;							// 报警使能
	char				szName[AV_CFG_Device_Name_Len];		// 传感器名称
	AV_float			fNormalTempMin;						// 正常温度最小值
	AV_float			fNormalTempMax;						// 正常温度最大值
	AV_CFG_EventHandler stuEventHandler;					// 报警联动
} AV_CFG_TemperatureAlarm;

// 风扇转速报警配置
typedef struct tagAV_CFG_FanSpeedAlarm
{
	AV_int32			nStructSize;
	AV_BOOL				bEnable;							// 报警使能
	char				szName[AV_CFG_Device_Name_Len];		// 传感器名称
	AV_uint32			nNormalSpeedMin;					// 正常转速最小值
	AV_uint32			nNormalSpeedMax;					// 正常转速最大值
	AV_CFG_EventHandler stuEventHandler;					// 报警联动
} AV_CFG_FanSpeedAlarm;

// 硬盘流量报警配置
typedef struct tagCFG_DISK_FLUX_INFO 
{
	BOOL				bEnable;							// 报警使能
	unsigned int		nNormalFluxMin;						// 正常流量最小值, 单位KB
	unsigned int		nNormalFluxMax;						// 正常流量最大值, 单位KB
	CFG_ALARM_MSG_HANDLE stuEventHandler;					// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];	// 事件响应时间段
} CFG_DISK_FLUX_INFO;

// 网络流量报警配置
typedef struct tagCFG_NET_FLUX_INFO
{
	BOOL				bEnable;							// 报警使能
	unsigned int		nNormalFluxMin;						// 正常流量最小值, 单位KB
	unsigned int		nNormalFluxMax;						// 正常流量最大值, 单位KB
	CFG_ALARM_MSG_HANDLE stuEventHandler;					// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT_EX];	// 事件响应时间段
} CFG_NET_FLUX_INFO;

// 服务器
typedef struct tagCFG_SERVER_INFO
{
	int                 nPort;                             // 服务器端口号
	char                szAddress[MAX_ADDRESS_LEN];        // IP地址或网络名
}CFG_SERVER_INFO;

// 主动注册配置
typedef struct tagCFG_REGISTER_SERVER_INFO
{
	BOOL                bEnable;                            // 主动注册使能
	char                szDeviceID[MAX_ADDRESS_LEN];        // 设备ID
	int                 nServersNum;                        // 服务器个数
	CFG_SERVER_INFO     stuServers[MAX_SERVER_NUM];         // 服务器数组
}CFG_REGISTER_SERVER_INFO;

// 带宽不足时码流策略
typedef enum tagSTREAM_POLICY
{
    STREAM_POLICY_UNKNOWN,
    STREAM_POLICY_NONE = 1,								// 无策略,不开启使能"None"
    STREAM_POLICY_QUALITY,                              // 画质优先"Quality"  
    STREAM_POLICY_FLUENCY,                              // 流畅度优先"Fluency"
    STREAM_POLICY_AUTOADAPT,                            // 自动"AutoAdapt"
}EM_STREAM_POLICY;

// 上传策略
typedef enum tagEM_CFG_SENDPOLICY
{
	EM_SNEDPOLICY_UNKNOWN = -1,
	EM_SENDPOLICY_TIMING,								// 定时上报
	EM_SENDPOLICY_EVENT,								// 事件触发上报
}EM_CFG_SENDPOLICY;

// 车载专用主动注册配置
typedef struct tagCFG_REGISTERSERVER_VEHICLE
{
	BOOL				bEnable;						// 主动注册使能
	BOOL				bRepeatEnable;					// 是否发送相同坐标数据
	char				szDeviceID[MAX_ADDRESS_LEN];	// 子设备ID
	int					nSendInterval;					// 发送间隔, 单位:秒
	char				szAddress[MAX_ADDRESS_LEN];		// IP地址或网络名
	int					nPort;							// 端口号
	EM_CFG_SENDPOLICY	emSendPolicy;					// 上传策略
	char				szTestAddress[MAX_ADDRESS_LEN];	// 测试IP地址或网络名
	int					nTestPort;						// 测试端口号
	BYTE				byReserved[1024];				// 保留字节
}CFG_REGISTERSERVER_VEHICLE;

// 网络协议配置
typedef struct tagCFG_DVRIP_INFO
{
	int                 nTcpPort;                           // TCP服务端口,1025~65535
	int                 nSSLPort;                           // SSL服务端口,1025~65535
	int                 nUDPPort;                           // UDP服务端口,1025~65535
	int                 nMaxConnections;                    // 最大连接数 
	BOOL                bMCASTEnable;                       // 组播使能
	int                 nMCASTPort;                         // 组播端口号
	char                szMCASTAddress[MAX_ADDRESS_LEN];    // 组播地址
	int                 nRegistersNum;                      // 主动注册配置个数
	CFG_REGISTER_SERVER_INFO stuRegisters[MAX_REGISTER_NUM];// 主动注册配置 
    EM_STREAM_POLICY    emStreamPolicy;                     // 带宽不足时码流策略
	CFG_REGISTERSERVER_VEHICLE	stuRegisterServerVehicle;	// 车载专用主动注册配置
}CFG_DVRIP_INFO;

// AIO IP 配置
typedef struct tagCFG_AIO_APP_CONFIG_INFO
{
	char				szAddress[MAX_IP_ADDR_LEN];			// 发布平台的的ip地址
}CFG_AIO_APP_CONFIG_INFO;

// 假期录像计划
typedef struct tagCFG_HOLIDAY_SCHEDULE
{
	BOOL				bEnable;
	int					nChannel;
	DWORD				dwMonthSchedule[MONTH_OF_YEAR];		// 每个月的假期安排, 每个元素表示一个月, 
															// 掩码从低到高依次表示每月1-28/29/30/31号是否为假期
															// 0:不是假期, 1:是假期
	CFG_TIME_SECTION	stuTimeSection[MAX_REC_TSECT];		// 录像时间表
} CFG_HOLIDAY_SCHEDULE;

// 录像下载速度配置
typedef struct tagCFG_RecordDownloadSpeed
{
	DWORD				nStructSize;						// 结构体大小
	UINT				nMaxDownloadSpeedNum;				// 录像下载速度值大小,用户填写
	UINT				*pDownloadSpeedValue;				// 录像下载速度值有效范围(内存由用户分配)建议指向内存值1024*sizeof(UINT) 单位KB/S
	UINT				nDownloadSpeedNum;					// 返回的录像下载速度值个数(应该 <= nMaxDownloadSpeedNum)
} CFG_RecordDownloadSpeed;

// 录像回传配置
typedef struct tagAV_CFG_RecordBackup
{
	AV_int32			nStructSize;
	AV_uint32			nBitrateLimit;						// 最大流量配置, 单位Kbps
	AV_CFG_RemoteDevice	*pstuDevices;						// 备份设备数组, 用户分配内存,大小为sizeof(AV_CFG_RemoteDevice)*nMaxDeviceCount
	int					nMaxDeviceCount;					// 备份设置数组大小, 用户填写
	int					nRetDeviceCount;					// 返回的设备数量
} AV_CFG_RecordBackup;

typedef struct tagALARM_EVENT_INFO
{
	DWORD	        	dwEventType;					    // 事件类型,详见dhnetsdk.h中"智能分析事件类型"
	int		         	nEventSize;							// 该事件类型规则配置结构体大小
} ALARM_EVENT__INFO;

// 每个视频输入通道对应的所有事件:缓冲区pEventBuf填充多个事件信息,每个事件规则信息内容为ALARM_EVENT_INFO+"事件类型对应的规则配置结构体"。
typedef struct tagALARM_ANALYSEEVENTS_INFO
{
	int	         		nEventCount;						// 事件个数
	char*				pEventBuf;							// 每个视频输入通道对应的视频分析事件缓冲
	int		        	nEventBufLen;						// 缓冲大小
	
} ALARM_ANALYSEEVENTS_INFO;

// 串口信息
typedef struct tagCFG_COMM_INFO
{
	char				szProtocolName[MAX_PROTOCOL_NAME_LEN];	// 串口协议
	CFG_COMM_PROP		stuAttribute;							// 串口属性
	int					nAddress;								// 设备地址
} CFG_COMM_INFO;

// 串口配置
typedef struct tagCFG_COMMGROUP_INFO
{
	int					nCommNum;						// 串口数量
	CFG_COMM_INFO		stuComms[MAX_COMM_NUM];			// 串口数组
} CFG_COMMGROUP_INFO;

// 网络传输模式
typedef enum tagCFG_ENUM_NET_TRANSMISSION_MODE
{
    CFG_ENUM_NET_MODE_ADAPT,                            // 自适应
    CFG_ENUM_NET_MODE_HALF10M,                          // 10M半双工
    CFG_ENUM_NET_MODE_FULL10M,                          // 10M全双工
    CFG_ENUM_NET_MODE_HALF100M,                         // 100M半双工
    CFG_ENUM_NET_MODE_FULL100M,                         // 100M全双工
}CFG_ENUM_NET_TRANSMISSION_MODE;

// 网口类型
typedef enum tagCFG_ENUM_NET_INTERFACE_TYPE
{
    CFG_ENUM_NET_INTERFACE_TYPE_UNKNOWN,                // 未知
    CFG_ENUM_NET_INTERFACE_TYPE_STANDARD,               // 标准网口
    CFG_ENUM_NET_INTERFACE_TYPE_MANAGER,                // 管理网口
    CFG_ENUM_NET_INTERFACE_TYPE_EXTEND,                 // 扩展网口
}CFG_ENUM_NET_INTERFACE_TYPE;

//三态布尔类型
typedef enum tagCFG_THREE_STATUS_BOOL
{
    CFG_BOOL_STATUS_UNKNOWN = -1,  //未知
    CFG_BOOL_STATUS_FALSE  = 0 , 
    CFG_BOOL_STATUS_TRUE   = 1 ,
}CFG_THREE_STATUS_BOOL;

// 网络接口
typedef struct tagCFG_NETWORK_INTERFACE 
{
	char				szName[MAX_NAME_LEN];			// 网络接口名称
	char				szIP[MAX_ADDRESS_LEN];			// ip地址
	char				szSubnetMask[MAX_ADDRESS_LEN];	// 子网掩码
	char				szDefGateway[MAX_ADDRESS_LEN];	// 默认网关
	BOOL				bDhcpEnable;					// 是否开启DHCP
	BOOL				bDnsAutoGet;					// DNS获取方式,dhcp使能时可以设置为true,支持通过dhcp获取
	char				szDnsServers[MAX_DNS_SERVER_NUM][MAX_ADDRESS_LEN];	// DNS服务器地址
	int					nMTU;							// 网络最大传输单元
    char				szMacAddress[MAX_ADDRESS_LEN];	// mac地址
    BOOL                bInterfaceEnable;               // 网络接口使能开关,表示该网口配置是否生效。不生效时,IP地址不设置到网卡上。
    BOOL                bReservedIPEnable;              // DHCP失败时是否使用保留IP,使用保留IP时还继续发DHCP请求
    CFG_ENUM_NET_TRANSMISSION_MODE emNetTranmissionMode;// 网络传输模式,默认adapt自适应模式
    CFG_ENUM_NET_INTERFACE_TYPE    emInterfaceType;     // 网口类型
    CFG_THREE_STATUS_BOOL          bBond;               // 是否绑定虚拟网口
} CFG_NETWORK_INTERFACE;

// 网络接口配置
typedef struct tagCFG_NETWORK_INFO 
{
	char				szHostName[MAX_NAME_LEN];		// 主机名称
	char				szDomain[MAX_NAME_LEN];			// 所属域
	char				szDefInterface[MAX_NAME_LEN];	// 默认使用的网卡
	int					nInterfaceNum;					// 网卡数量
	CFG_NETWORK_INTERFACE	stuInterfaces[MAX_NETWORK_INTERFACE_NUM];	// 网卡列表
} CFG_NETWORK_INFO;

// 云存储协议类型
typedef enum tagEM_CFG_NAS_CLOUDPROTOCOL_TYPE
{
    EM_CFG_NAS_CLOUDPROTOCOL_TYPE_UNKNOWN,              // 未知
    EM_CFG_NAS_CLOUDPROTOCOL_TYPE_BAIDU_CLOUD,          // "BaiduCloud"
    EM_CFG_NAS_CLOUDPROTOCOL_TYPE_GOOGLE_DRIVE,         // "GoogleDrive"
    EM_CFG_NAS_CLOUDPROTOCOL_TYPE_DROPBOX,              // "Dropbox"
}EM_CFG_NAS_CLOUDPROTOCOL_TYPE;

// 网络存储配置
typedef struct tagCFG_NAS_INFO_NEW
{
	BOOL				            bEnable;						// 使能
	char				            szName[MAX_NAME_LEN];			// 名称
	int					            nPortocol;						// 协议类型, 0-FTP, 1-SMB, 2-ISCSI, 3-NFS, 4-Cloud ,协议类型是 4-Cloud时,具体云协议定义见 emCloudProtocol
	char				            szAddress[MAX_ADDRESS_LEN];		// IP地址或网址
    int					            nPort;							// 端口
    char				            szUser[MAX_USERNAME_LEN];		// 用户名
    char				            szPassword[MAX_PASSWORD_LEN];	// 密码
    char				            szDirectory[MAX_NAME_LEN];		// 共享的目录名
    int					            nCharEncoding;					// 字符编码格式, 0-UTF8, 1-GB2312
    int					            nTimeOut;						// 超时时间, 单位毫秒
    unsigned int		            nStreamID;						// 数据流ID
    CFG_NET_TIME_EX		            stuUpdateTime;					// 更新时间, 该字段值变化后,需要重新初始化iSCSI功能
    EM_CFG_NAS_CLOUDPROTOCOL_TYPE   emCloudProtocol;                // 云存储协议类型
    char                            szSubDirectory[CFG_COMMON_STRING_256];               // 客户端设备在服务器上的存储子目录,可以是IP地址,设备序列号,设备机器号,为空使用设备机器号
} CFG_NAS_INFO_NEW;

// 网络存储服务器配置, 包含多个服务器
typedef struct tagCFG_NAS_GROUP_INFO
{
	int					nNasNum;						// 存储服务器数量
	CFG_NAS_INFO_NEW	stuNasInfo[MAX_NAS_NUM];		// 存储服务器数组	
} CFG_NAS_GROUP_INFO;

// 网络存储服务器配置
typedef struct tagCFG_NAS_INFO_EX 
{
	int					nVersion;						// 0, 1, 由能力集确定, 只读
	CFG_NAS_INFO		stuNasOld;						// nVersion == 0时有效, 仅支持单服务器
	CFG_NAS_GROUP_INFO	stuNasGroup;					// nVersion == 1时有效, 支持多个服务器
} CFG_NAS_INFO_EX;

// 输入信号类型
typedef enum _EM_CFG_VIDEO_SIGNAL_TYPE
{
    EM_CFG_VIDEO_SIGNAL_UNKNOWN, 
    EM_CFG_VIDEO_SIGNAL_CVBS, 
    EM_CFG_VIDEO_SIGNAL_SDI, 
    EM_CFG_VIDEO_SIGNAL_VGA, 
    EM_CFG_VIDEO_SIGNAL_DVI, 
    EM_CFG_VIDEO_SIGNAL_HDMI, 
    EM_CFG_VIDEO_SIGNAL_YPBPR, 
    EM_CFG_VIDEO_SIGNAL_SFP, 
    EM_CFG_VIDEO_SIGNAL_HDCVI, 
    EM_CFG_VIDEO_SIGNAL_DUALLINK,
    EM_CFG_VIDEO_SIGNAL_AHD,
    EM_CFG_VIDEO_SIGNAL_AUTO,
    EM_CFG_VIDEO_SIGNAL_TVI, 
} EM_CFG_VIDEO_SIGNAL_TYPE;

enum EM_CFG_VIDEO_LINE_TYPE
{
    EM_CFG_VIDEO_LINE_TYPE_UNKNOWN,
    EM_CFG_VIDEO_LINE_TYPE_COAXIAL,						//同轴线
    EM_CFG_VIDEO_LINE_TYPE_TP10,						//10欧姆阻抗双绞线
    EM_CFG_VIDEO_LINE_TYPE_TP17,						//17欧姆阻抗双绞线
    EM_CFG_VIDEO_LINE_TYPE_TP25,						//25欧姆阻抗双绞线
    EM_CFG_VIDEO_LINE_TYPE_TP35,						//35欧姆阻抗双绞线
};

// 输入通道基本配置
typedef struct tagCFG_VIDEO_IN_INFO 
{
	char				szDevType[MAX_NAME_LEN];		// 通道类型(指通道连接的设备类型)
	char				szDevID[MAX_NAME_LEN];			// 摄像头唯一编号
	char				szChnName[MAX_NAME_LEN];		// 通道名称
	char				szManufacturer[MAX_NAME_LEN];	// 厂商
	char				szModel[MAX_NAME_LEN];			// 设备型号
	char				szAddress[MAX_ADDRESS_LEN];		// 安装地址
	char				szCivilCode[MAX_NAME_LEN];		// 行政区域
	char				szOwner[MAX_NAME_LEN];			// 设备归属
	BOOL				bParental;						// 是否有子设备
	BOOL				bEnable;						// 通道使能
	int					nRegisterWay;					// 注册方式
														// 0-符合sip3261标准的认证注册模式
														// 1-基于口令的双向认证注册模式
														// 2-基于数字证书的双向认证注册模式
	BOOL				bSecrecy;						// 保密属性, FALSE不涉密, TRUE涉密
	char				szUpperDevID[MAX_NAME_LEN];		// 上级连接设备设备ID
	int					nUpperDevOutChn;				// 上级连接设备输出通道号
    char				szRemoteName[MAX_NAME_LEN];		// 远程通道名称
    EM_CFG_VIDEO_SIGNAL_TYPE emSignalType;              // 输入信号类型
    EM_CFG_VIDEO_LINE_TYPE  emLineType;                 // 通道接入线缆的类型
} CFG_VIDEO_IN_INFO;

// 刻录光盘编码计划(对应命令 CFG_CMD_ENCODEPLAN),每个通道(包括画中画通道)一个配置结构体
typedef struct tagCFG_ENCODE_PLAN_INFO
{
	BOOL                bEnable;                        // 通道是否需要配置,FALSE:没有此通道,TRUE:此通道可用
	unsigned int        nExpectTime;                    // 业务预期时长	 整型,单位:分钟
	CFG_CAPTURE_SIZE    emResolution;                   // 视频分辨率
	unsigned int        nBitRate;                       // 视频固定码流值(kbps)
}CFG_ENCODE_PLAN_INFO;

//////////////////////////////////////////////////////////////////////////
// 司法审讯画中画需求
// 小画面窗口信息
typedef struct tagCFG_SMALLPIC_INFO
{
	char                szDeviceID[AV_CFG_Device_ID_Len];// 设备ID
	int                 nChannelID;						 // 通道号(0开始)
	BOOL                bAudio;                          // 大画面是否混合小画面音频
    CFG_RECT            stuPosition;                     // 使用相对坐标体系,取值均为0-8192,在整个屏幕上的位置
}CFG_SMALLPIC_INFO;

// 分割通道
typedef struct tagCFG_SPLIT_CHANNEL_INFO
{
	BOOL                bEnable;                         // 使能
	char                szDeviceID[AV_CFG_Device_ID_Len];// 设备ID
	int                 nChannelID;						 // 通道号(0开始)
	unsigned int        nMaxSmallChannels;               // 小画面通道个数,每个通道一个CFG_SMALLPIC_INFO,这里最大应该是设备通道数减一
	unsigned int        nReturnSmallChannels;            // 解析返回的或封装发送的小画面通道个数
	CFG_SMALLPIC_INFO  *pPicInfo;                        // 小画面信息
}CFG_SPLIT_CHANNEL_INFO;

// 分割方案
typedef struct tagCFG_SPLIT_INFO
{
	CFG_SPLITMODE       emSplitMode;        // 分割模式,通过CLIENT_GetSplitCaps接口获取,见emSplitMode
	unsigned int        nMaxChannels;       // 申请内存CFG_SPLIT_CHANNEL_INFO个数,比如有16个通道,nMaxChannels就是16,SPLITMODE_4模式,则按顺序依次分为4组
	unsigned int        nReturnChannels;    // 解析返回通道个数,要封装发送的通道个数
	CFG_SPLIT_CHANNEL_INFO* pSplitChannels; // 分割通道信息
}CFG_SPLIT_INFO;

// 画中画方案
typedef struct tagCFG_PICINPIC_INFO
{
	unsigned int        nMaxSplit;          // 内存申请的CFG_SPLIT_INFO个数,最大值通过CLIENT_GetSplitCaps接口获取,见nModeCount
	unsigned int        nReturnSplit;       // 解析得到实际使用的或封装发送的CFG_SPLIT_INFO个数
	CFG_SPLIT_INFO     *pSplits;            // 分割方案
}CFG_PICINPIC_INFO;

// 模拟矩阵外部输入源
typedef struct tagCFG_ANALOG_MATRIX_INPUT_CHN_SRC 
{
	char				szName[MAX_NAME_LEN];			// 输入通道名称
	char				szControlID[MAX_NAME_LEN];		// 控制编号
	BOOL				bActive;						// 是否激活启动
	int					nFormat;						// 类型, 0-VGA
} CFG_ANALOG_MATRIX_INPUT_CHN_SRC;

// 串口
typedef struct tagCFG_COM_PORT 
{
	int					nPortIndex;						// 串口索引号
	int					nAddress;						// 设备地址
	CFG_COMM_PROP		stComProp;						// 串口属性
} CFG_COM_PORT;

// 模拟矩阵
typedef struct tagCFG_ANALOG_MATRIX_INFO
{
	char				szDevID[MAX_NAME_LEN];			// 设备ID
	char				szName[MAX_NAME_LEN];			// 设备名称
	char				szModel[MAX_MODEL_LEN];			// 型号
	char				szUserName[MAX_USERNAME_LEN];	// 用户名
	char				szPassword[MAX_PASSWORD_LEN];	// 密码
	int					nChnInCount;					// 输入通道数量
	int					nChnOutCount;					// 输出通道数量
	CFG_ANALOG_MATRIX_INPUT_CHN_SRC* pstuChnInSrc;		// 外部输入源数组, 用户分配内存
	int					nChnInSrcCount;					// 外部输入源数组大小
	int					nRetChnInSrcCount;				// 实际返回的外部输入源数量, 一般同nChnInCount
	CFG_COM_PORT		stComPort;						// 关联串口
	char				szProtocol[MAX_NAME_LEN];		// 协议名称
} CFG_ANALOG_MATRIX_INFO;

// 模拟矩阵协议配置
typedef struct tagCFG_ANALOG_MATRIX_PROTOCOL 
{
	char				szName[MAX_NAME_LEN];			// 协议名称
	char				szProtocolRule[MAX_NAME_LEN];	// 协议内容, 规则:%A-地址码,%I-输入端口号,%O-输出端口号
} CFG_ANALOG_MATRIX_PROTOCOL;

// 视频输出标题
typedef struct tagCFG_VIDEO_OUT_TITLE 
{
	char				szName[MAX_NAME_LEN];			// 通道名称
} CFG_VIDEO_OUT_TITLE;

// 显示源
typedef struct tagCFG_DISPLAY_SOURCE
{
	BOOL				bEnable;						// 是否使能
	char				szDeviceID[MAX_NAME_LEN];		// 设备ID
	char				szControlID[MAX_NAME_LEN];		// 控制ID
	int					nVideoChannel;					// 视频通道号
	int					nVideoStream;					// 视频码流, -1-自动, 0-主码流, 1-辅码流1, 2-辅码流2, 3-辅码流3, 5-预览码流
	int					nAudioChannel;					// 音频通道号
	int					nAudioStream;					// 音频码流, -1-自动, 0-主码流, 1-辅码流1, 2-辅码流2, 3-辅码流3, 5-预览码流
	BOOL				abDeviceInfo;					// 设备信息是否有效
	AV_CFG_RemoteDevice stuDeviceInfo;					// 设备信息
} CFG_DISPLAY_SOURCE;

// 窗口位置
typedef struct tagCFG_SPLIT_WINDOW_POSITION 
{
	CFG_RECT			stuRect;						// 窗口区域
	BOOL				bDirectable;					// 是否满足直通条件, 直通是指拼接屏方式下,此窗口区域正好为物理屏区域
	int					nZorder;						// Z次序
} CFG_SPLIT_WINDOW_POSITION;

// 拼接屏窗口信息
typedef struct tagCFG_SPLIT_WINDOW 
{
	BOOL				bEnable;						// 窗口是否有视频源, 为FALSE时表示没有视频,也不用处理Source内容
	int					nWindowID;						// 窗口ID
	char				szControlID[MAX_NAME_LEN];		// 控制ID
	CFG_SPLIT_WINDOW_POSITION stuPosition;				// 窗口位置
	CFG_DISPLAY_SOURCE	stuSource;						// 视频源
} CFG_SPLIT_WINDOW;

// 拼接屏场景
typedef struct tagCFG_BLOCK_COLLECTION 
{
	char				szBlockID[MAX_NAME_LEN];		// 拼接屏ID
	char				szControlID[MAX_NAME_LEN];		// 控制ID
	CFG_SPLITMODE		emSplitMode;					// 分割模式
	CFG_SPLIT_WINDOW*	pstuWnds;						// 窗口信息数组, 用户分配内存,大小为sizeof(CFG_SPLIT_WINDOW)*nMaxWndCount
	int					nMaxWndCount;					// 窗口信息数组大小, 用户填写
	int					nRetWndCount;					// 返回的窗口数量
} CFG_BLOCK_COLLECTION;

// 预案类型
typedef enum tagEM_COLLECTION_TYPE
{
    EM_COLLECTION_UNKNOWN,            // 未知
    EM_COLLECTION_VIDEO,              // 视频预案
    EM_COLLECTION_ADDITION,           // 附加预案
}EM_COLLECTION_TYPE;

// 电视墙中的某个预案配置
typedef struct tagCFG_MONITORWALL_COLLECTION_SINGLE
{
	char				szName[MAX_NAME_LEN];			// 名称
	char				szControlID[MAX_NAME_LEN];		// 控制ID
	AV_CFG_MonitorWall	stuMonitorWall;					// 电视墙配置
	CFG_BLOCK_COLLECTION* pstuBlockCollections;			// 拼接屏场景信息数组, 用户分配内存,大小为sizeof(CFG_BLOCK_COLLECTION)*nMaxBlockCollectionCount
	int					nMaxBlockCollectionCount;		// 拼接屏场景数组大小, 用户填写
	int					nRetBlockCollectionCount;		// 返回的拼接屏场景数量
    EM_COLLECTION_TYPE  emType;                         // 预案类型
} CFG_MONITORWALL_COLLECTION_SINGLE;

// 电视墙预案列表, 表示某个电视墙对应的多个预案
typedef struct tagCFG_MONITORWALL_COLLECTION_LIST
{
	CFG_MONITORWALL_COLLECTION_SINGLE* pstuCollections;	// 预案数组, 用户分配内存,大小为sizeof(CFG_MONITORWALL_COLLECTION_SINGLE)*nMaxCollectionCount
	int					nMaxCollectionCount;			// 预案数组大小, 用户填写
	int					nRetCollectionCount;			// 返回的预案数量
} CFG_MONITORWALL_COLLECTION;

// 视频输入边界配置
typedef struct tagCFG_VIDEO_IN_BOUNDARY 
{
	CFG_RECT			stuBoundary;					// 边界
} CFG_VIDEO_IN_BOUNDARY;

// 和相机对接的区域屏配置,是数组,元素最大值是DH_PRODUCTION_DEFNITION.nMaxParkingSpaceScreen)
typedef struct tagCFG_PARKINGSPACE_SCREEN_INFO
{
	char                szAddress[MAX_PATH];            // 区域屏地址或域名
	int                 nPort;                          // 区域屏端口
	char                szAuthorization[MAX_PATH];      // 权限字
    char                szDeviceNo[MAX_PATH];           // 设备序号
	BOOL                bEnable;                        // 屏配置是否启用
} CFG_PARKINGSPACE_SCREEN_INFO;

// 车位设置(专有车位和普通车位设置),是数组,元素最大值是DH_PRODUCTION_DEFNITION.nMaxRoadWays)
typedef struct tagCFG_PARKINGSPACE_STATUS_INFO
{
	int                  nLaneID;                        // 车位号
	int                  nLaneType;                      // 0:普通车位 1:专有车位
} CFG_PARKINGSPACE_STATUS_INFO;

#define CFG_MAX_BINARY_NUM      128						// 自定义数据最大个数

// 平台自定义信息
typedef struct tagCFG_CLIENT_CUSTOM_INFO
{
	char                szDescription[MAX_PATH];        // 描述信息,不同平台自定义描述信息,目前支持"LiFang"
	char*               pData;                          // 自定义数据缓冲, 数据中间不能存在二进制的0, 也就是字符'\0'
	int                 nDataLen;                       // 用户申请的长度, 不同平台自己确定
    bool                abBinary;                       // false表示pData和nDataLen有效, 而nBinaryNum和dwBinary无效
                                                        // true表示pData和nDataLen无效, 而nBinaryNum和dwBinary有效
    BYTE                byReserved[3];
    int                 nBinaryNum;                     // dwBinary数组有效成员个数
    DWORD               dwBinary[CFG_MAX_BINARY_NUM];   // 自定义数据
} CFG_CLIENT_CUSTOM_INFO;

// 刻录格式配置,兼容性考虑:无此配置时默认DHAV格式
typedef struct tagCFG_BURN_RECORD_FORMAT
{
	char                 szRecordPack[MAX_PATH];         // 码流打包模式:目前支持"DHAV","PS"
}CFG_BURN_RECORD_FORMAT;

// 多光盘同步刻录(对应 CFG_MULTIBURN_INFO) 是一个数组,每一个元素表示一组多光盘同步刻录及校验
typedef struct tagCFG_MULTIBURN_INFO
{
	BOOL                 bEnable;                        // 此配置使能开关
    BOOL                 bDataCheck;                     // 多光盘一致性校验使能
    char                 szDataCheckSpeed[MAX_PATH];     // 校验速度 "High":高速(头尾数据校验),"Normal":正常(随机数据校验),"Low":低速 (全盘数据校验)
}CFG_MULTIBURN_INFO;

// 单个网络存储服务器限制配置
typedef struct tagCFG_REMOTE_STORAGE_LIMIT
{
    char				        szName[MAX_NAME_LEN];                       // 名称
    int							nFileLen;									// 文件长度 单位,MB
	int							nInterval;									// 相邻文件时间间隔 单位,秒
	CFG_CHANNEL_TIME_SECTION	*pstuChnTime;        	                    // 存储时间段数组,用户分配内存,大小为sizeof(CFG_CHANNEL_TIME_SECTION)*nMaxChnCount
	int                         nMaxChnCount;                               // 最大通道数,用户填写
    int                         nRetChnCount;                               // 返回的通道数,保存设置时的有效通道数
}CFG_REMOTE_STORAGE_LIMIT;

// 网络存储服务器限制配置
typedef struct tagCFG_REMOTE_STORAGELIMIT_GROUP
{
	CFG_REMOTE_STORAGE_LIMIT    stuRemoteStorageLimit[MAX_NAS_NUM];         // 网络存储服务器配置数组
    int                         nLimitCount;                                // 有效的网络服务器数
}CFG_REMOTE_STORAGELIMIT_GROUP;

// 获取刻录管理能力集
typedef struct tagCFG_CAP_BURN_MANAGER	
{
    BOOL                 bSupportMultiBurn;              // 是否支持多光盘同步刻录
    int                  nMultiBurnGroups;               // 支持几组同步刻录
}CFG_CAP_BURN_MANAGER;

// 录像能力信息
typedef struct tagCFG_CAP_RECORD_INFO	
{
	BOOL  bSupportHoliday;				                 //录像计划是否支持假日功能
	BOOL  bSupportExtraRecordMode;						 //是否支持设置辅码流录像模式	
	DWORD dwMaxPreRecordTime;							 //最大预录时间
	DWORD dwMaxRemoteBitrate;							 //最大接入总码流,单位kbps
	DWORD dwMaxRemoteRawBitrate;						 //最大接入祼码流(包括路数、分辨率、帧率,色深按16bpp计算)
    DWORD dwMaxStreams;                                  //最大录像码流个数
} CFG_CAP_RECORD_INFO;

//-------------------------------编码加密---------------------------------
typedef  enum tagCFG_ENCRYPT_ALGO_TYPE
{
	ALGO_TYPE_AES	 , 
	ALGO_TYPE_UNKNOW ,
}CFG_ENCRYPT_ALGO_TYPE;

// 码流加密算法工作模式
typedef enum  tagCFG_ENCRYPT_ALGO_WORKMODE
{
	ENCRYPT_ALGO_WORKMODE_ECB,     // ECB模式
	ENCRYPT_ALGO_WORKMODE_CBC,     // CBC模式
	ENCRYPT_ALGO_WORKMODE_CFB,     // CFB模式
	ENCRYPT_ALGO_WORKMODE_OFB,     // OFB模式
	ENCRYPT_ALGO_WORKMODE_UNKNOW ,
}CFG_ENCRYPT_ALGO_WORKMODE;

typedef union tagCFG_ENCRYPT_KEY_INFO
{
	BYTE byAesKey[AES_KEY_LEN];							// aes密钥
}CFG_ENCRYPT_KEY_INFO;

//码流加密配置信息
typedef struct tagCFG_STREAM_ENCRYPT_INFO
{
	BOOL						bEncryptEnable;		// 是否加密
	CFG_ENCRYPT_ALGO_TYPE		emEncrptAlgoType;	// 加密算法类型: 参见枚举类型CFG_ENCRYPT_ALGO_TYPE
	CFG_ENCRYPT_ALGO_WORKMODE	emAlgoWorkMode;		// 工作模式,参考枚举类型 CFG_ENCRYPT_ALGO_WORKMODE
	WORD						wEncryptLenth;		// 密钥长度,当前为AES算法类型时,表示密钥位数(目前支持128,192,256位三种, 如: wEncryptLenth为128,则密钥信息ENCRYPT_KEY_INFO里的byAesKey[0]~[15])
	CFG_ENCRYPT_KEY_INFO		stuEncryptKeys;		// 通道的密钥信息 
	CFG_NET_TIME				stuPreTime;			// 加密计划的开始时间
}CFG_STREAM_ENCRYPT_INFO;

//码流加密配置通道信息
typedef struct tagCFG_ENCODE_ENCRYPT_CHN_INFO
{
	int						 nChannelID;					// 通道号(0开始)
	CFG_STREAM_ENCRYPT_INFO *pstEncodeEncryptInfo;			// 每个通道的配置列表,用户需配置
												            // 申请内存大小为sizeof(CFG_STREAM_ENCRYPT_INFO)*nMaxEncryptInputs
	BYTE					 nMaxEncryptInputs; 
	BYTE					 nRetEncryptOutputs;			// 解析出CFG_STREAM_ENCRYPT的个数
}CFG_ENCODE_ENCRYPT_CHN_INFO;


//编码自适应策略类型
typedef  enum tagCFG_ENCRYPT_POLICY_TYPE
{
	ENCRYPT_POLICY_UNKNOWN ,		//未知
	ENCRYPT_POLICY_NONE ,		//无策略,不开启自适应功能
	ENCRYPT_POLICY_QUALITY ,    //画质优先,优先保证分辨率,降低帧率
	ENCRYPT_POLICY_FLUENCY ,	//流畅优先,优先保证流畅性,降低分辨率
}CFG_ENCRYPT_POLICY_TYPE;

//编码流畅优先策略
typedef enum tagCFG_ENCRYPT_FLUENCY_MODE
{
	ENCRYPT_FLUENCY_UNKNOWN ,		//未知
	ENCRYPT_FLUENCY_FAST ,			//快恢复(网速变好时,立即恢复)
	ENCRYPT_FLUENCY_SLOW ,			//慢恢复(同一时间只能有一个通道恢复)
	ENCRYPT_FLUENCY_SYNC ,			//同步恢复(如果有通道下降,则其它通道不恢复)
	ENCRYPT_FLUENCY_SLOWSYNC ,		//慢同步恢复(结合慢恢复和同步恢复)
}CFG_ENCRYPT_FLUENCY_MODE;

//编码自适应配置
typedef struct tagCFG_ENCODE_ADAPT_INFO
{
	CFG_ENCRYPT_POLICY_TYPE		emPolicyType;		//自适应策略类型
	CFG_ENCRYPT_FLUENCY_MODE	emFluencyMode;		//流畅优先策略
}CFG_ENCODE_ADAPT_INFO;

// 变倍设置基本信息单元
typedef struct tagCFG_VIDEO_IN_ZOOM_UNIT
{
	int         nSpeed;									 //变倍速率(0~7)
	BOOL		bDigitalZoom;							 //是否数字变倍
	int			nZoomLimit;								 //当前速率下最大变倍上限(0~13)。
    EM_LIGHT_SCENE  emLightScene;                        //光照场景名称
} CFG_VIDEO_IN_ZOOM_UNIT;

// 单通道变倍设置基本信息
typedef struct tagCFG_VIDEO_IN_ZOOM	
{
	int						nChannelIndex;				 //通道号
	int						nVideoInZoomRealNum;		 //配置使用个数
	CFG_VIDEO_IN_ZOOM_UNIT  stVideoInZoomUnit[MAX_VIDEO_IN_ZOOM];		 //通道变速配置单元信息
	
} CFG_VIDEO_IN_ZOOM;

// 抓图配置
typedef struct tagCFG_SNAP_INFO 
{
	CFG_TIME_SCHEDULE		stuTimeSchedule;			// 时间表, 每个时间段掩码按位定义如下: 
														// Bit0-定时抓图
														// Bit1-动态检测抓图
														// Bit2-报警抓图
														// Bit3-卡号抓图
														// Bit4~Bit31-保留
} CFG_SNAP_INFO;

//云台转动角度范围,单位:度
typedef struct tagCFG_PTZ_MOTION_RANGE
{
	int                 nHorizontalAngleMin;       // 水平角度范围最小值,单位:度
	int                 nHorizontalAngleMax;       // 水平角度范围最大值,单位:度
	int                 nVerticalAngleMin;          // 垂直角度范围最小值,单位:度
	int                 nVerticalAngleMax;          // 垂直角度范围最大值,单位:度
}CFG_PTZ_MOTION_RANGE;

//支持的焦距模式对应枚举
typedef enum tagSUPPORT_FOCUS_MODE
{
    ENUM_SUPPORT_FOCUS_CAR        = 1,                // 看清车模式         
	ENUM_SUPPORT_FOCUS_PLATE      = 2,                // 看清车牌模式 
	ENUM_SUPPORT_FOCUS_PEOPLE     = 3,                // 看清人模式     
	ENUM_SUPPORT_FOCUS_FACE       = 4,                // 看清人脸模式     
}EM_SUPPORT_FOCUS_MODE;

//云台转动角度范围,单位:度
typedef struct tagCFG_PTZ_LIGHTING_CONTROL
{
	char                szMode[CFG_COMMON_STRING_32];  // 手动灯光控制模式
	                                                   // on-off":直接开关模式,
	                                                   // "adjustLight":手动调节亮度模式

	DWORD               dwNearLightNumber;             // 近光灯组数量
	DWORD               dwFarLightNumber;              // 远光灯组数量
}CFG_PTZ_LIGHTING_CONTROL;

//云台-区域扫描能力集
typedef struct tagCFG_PTZ_AREA_SCAN
{
	BOOL                bIsSupportAutoAreaScan;     // 是否支持区域扫描	
	WORD				wScanNum;		    		// 区域扫描的个数
}CFG_PTZ_AREA_SCAN;

// 遮挡块形状类型
typedef enum tagNET_EM_MASK_TYPE
{
	NET_EM_MASK_UNKNOWN,			// 未知
	NET_EM_MASK_RECT,				// 矩形
	NET_EM_MASK_POLYGON,			// 多边形
} NET_EM_MASK_TYPE;

// 马赛克类型
typedef enum tagNET_EM_MOSAIC_TYPE
{
	NET_EM_MOSAIC_UNKNOWN	= 0,				// 未知
	NET_EM_MOSAIC_8			= 8,				// [8x8大小] 马赛克
	NET_EM_MOSAIC_16		= 16,				// [16x16大小] 马赛克
	NET_EM_MOSAIC_24		= 24,				// [24x24大小] 马赛克
	NET_EM_MOSAIC_32		= 32,				// [32x32大小] 马赛克
} NET_EM_MOSAIC_TYPE;

#define MAX_MASKTYPE_COUNT	8
#define MAX_MOSAICTYPE_COUNT	8
// 隐私遮挡能力集
typedef struct tagCFG_PTZ_PRIVACY_MASKING
{
	BOOL				bPrivacyMasking;					// 是否支持隐私遮挡设置
	BOOL				bSetColorSupport;					// 是否支持遮挡块颜色设置
	BOOL				abMaskType;							// emMaskType是否有效
	int					nMaskTypeCount;						// 实际支持的遮挡块形状个数
	NET_EM_MASK_TYPE	emMaskType[MAX_MASKTYPE_COUNT];		// 支持的遮挡块形状,没有该项配置时默认支持矩形
	BOOL				bSetMosaicSupport;					// 是否支持马赛克遮挡块设置
	BOOL				bSetColorIndependent;				// 是否支持遮挡块颜色相互独立(bSetColorSupport为true时该能力有效)
	BOOL				abMosaicType;						// emMosaicType是否有效
	int					nMosaicTypeCount;					// 实际支持的马赛克类型个数
	NET_EM_MOSAIC_TYPE	emMosaicType[MAX_MOSAICTYPE_COUNT];	// 支持的马赛克类型(SetMosaicSupport为true时该能力有效,没有该项配置时默认支持24x24大小马赛克)
} CFG_PTZ_PRIVACY_MASKING;

// 图像测距能力
typedef struct tagCFG_PTZ_MEASURE_DISTANCE
{
	BOOL				bSupport;							// 是否支持图像测距
	BOOL				bOsdEnable;							// 是否将图像测距结果数据叠加至码流
	int					nDisplayMin;						// 图像测距信息的最小显示时长, 单位秒
	int					nDisplayMax;						// 图像测距信息的最大显示时长, 单位秒
} CFG_PTZ_MEASURE_DISTANCE;

// 支持的云台动作类型
typedef struct tagCFG_PTZ_ACTION_CAPS
{
	BOOL				bSupportPan;					// 是否支持水平移动
	BOOL				bSupportTile;					// 是否支持垂直移动
	BOOL				bSupportZoom;					// 是否支持变倍
	BYTE				byReserved[116];				// 预留
}CFG_PTZ_ACTION_CAPS;

// 支持的云台精确定位方式类型
typedef struct tagCFG_PTZ_ABSOLUTELY_CAPS
{
	BOOL				bSupportNormal;					// 是否支持归一化定位
	BOOL				bSupportReal;					// 是否支持实际参数值定位
	BYTE				byReserved[120];				// 预留
}CFG_PTZ_ABSOLUTELY_CAPS;

// 绝对控制云台能力
typedef struct tagCFG_PTZ_MOVE_ABSOLUTELY_CAP
{
	CFG_PTZ_ACTION_CAPS stuPTZ;							// 支持的云台动作类型
	CFG_PTZ_ABSOLUTELY_CAPS stuType;					// 支持的云台精确定位方式类型
	BYTE				byReserved[768];				// 预留
}CFG_PTZ_MOVE_ABSOLUTELY_CAP;

//获取云台能力集信息
typedef struct tagCFG_PTZ_PROTOCOL_CAPS_INFO
{
	int                 nStructSize;
    BOOL                bPan;                       // 是否支持云台水平摆动
	BOOL                bTile;                      // 是否支持云台垂直摆动
	BOOL                bZoom;                      // 是否支持云台变倍
	BOOL                bIris;                      // 是否支持云台光圈调节
	BOOL                bPreset;                    // 是否支持预置点
	BOOL                bRemovePreset;              // 是否支持清除预置点
	BOOL                bTour;                      // 是否支持自动巡航线路
	BOOL                bRemoveTour;                // 是否支持清除巡航
	BOOL                bPattern;                   // 是否支持轨迹线路
	BOOL                bAutoPan;                   // 是否支持自动水平摆动
	BOOL                bAutoScan;                  // 是否支持自动扫描
	BOOL                bAux;                       // 是否支持辅助功能
	BOOL                bAlarm;                     // 是否支持报警功能
	BOOL                bLight;                     // 是否支持灯光, 内容见下面"stuPtzLightingControl",该字段已废除使用
	BOOL                bWiper;                     // 是否支持雨刷
	BOOL                bFlip;                      // 是否支持镜头翻转
	BOOL                bMenu;                      // 是否支持云台内置菜单
	BOOL                bMoveRelatively;            // 是否支持云台按相对坐标定位
	BOOL                bMoveAbsolutely;            // 是否支持云台按绝对坐标定位
    BOOL                bMoveDirectly;              // 是否支持云台按三维坐标定位
	BOOL                bReset;                     // 是否支持云台复位
	BOOL                bGetStatus;                 // 是否支持获取云台运动状态及方位坐标
	BOOL                bSupportLimit;              // 是否支持限位
	BOOL                bPtzDevice;                 // 是否支持云台设备
	BOOL                bIsSupportViewRange;        // 是否支持云台可视域

	WORD				wCamAddrMin;		    	// 通道地址的最小值
	WORD				wCamAddrMax;			    // 通道地址的最大值
	WORD				wMonAddrMin;    			// 监视地址的最小值
	WORD				wMonAddrMax;	    		// 监视地址的最大值
	WORD				wPresetMin;			    	// 预置点的最小值
	WORD				wPresetMax;				    // 预置点的最大值
	WORD				wTourMin;    				// 自动巡航线路的最小值
	WORD				wTourMax;	    			// 自动巡航线路的最大值
	WORD				wPatternMin;	    		// 轨迹线路的最小值
	WORD				wPatternMax;		    	// 轨迹线路的最大值
	WORD				wTileSpeedMin;			    // 垂直速度的最小值
	WORD				wTileSpeedMax;    			// 垂直速度的最大值
	WORD				wPanSpeedMin;	    		// 水平速度的最小值
	WORD				wPanSpeedMax;		    	// 水平速度的最大值
	WORD				wAutoScanMin;			    // 自动扫描的最小值
	WORD				wAutoScanMax;    			// 自动扫描的最大值
	WORD				wAuxMin;		    		// 辅助功能的最小值
	WORD				wAuxMax;			    	// 辅助功能的最大值

	DWORD				dwInterval;				    // 发送命令的时间间隔
	DWORD				dwType;				        // 协议的类型,0-本地云台,1-远程云台
	DWORD				dwAlarmLen;				    // 协议的报警长度
	DWORD				dwNearLightNumber;		    // 近光灯组数量,0~4,为0时表示不支持
	DWORD				dwFarLightNumber;		    // 远光灯组数量,0~4,为0时表示不支持

	DWORD               dwSupportViewRangeType;     // 支持的可视域数据获取方式掩码,从低位到高位依次数,目前支持
	                                                // 第1位:为1表示支持"ElectronicCompass" 电子罗盘方式

	DWORD               dwSupportFocusMode;         // 支持的支持的焦距模式掩码,从低位到高位依次数,见#EM_SUPPORT_FOCUS_MODE
	                  
	char				szName[MAX_PROTOCOL_NAME_LEN];                       // 操作的协议名
	char                szAuxs[CFG_COMMON_STRING_32][CFG_COMMON_STRING_32];  //云台辅助功能名称列表

	CFG_PTZ_MOTION_RANGE stuPtzMotionRange;         // 云台转动角度范围,单位:度
	CFG_PTZ_LIGHTING_CONTROL stuPtzLightingControl; // 灯光控制内容,该字段已废除使用
	BOOL				bSupportPresetTimeSection;	// 是否支持预置点时间段配置的功能
    BOOL                bFocus;                     // 是否支持云台变焦
	CFG_PTZ_AREA_SCAN	stuPtzAreaScan;				// 区域扫描能力集
	CFG_PTZ_PRIVACY_MASKING		stuPtzPrivacyMasking;	// 隐私遮挡能力集
	CFG_PTZ_MEASURE_DISTANCE	stuPtzMeasureDistance;	// 图像测距能力集
	BOOL				bSupportPtzPatternOSD;		// 是否支持云台巡迹OSD叠加
	BOOL				bSupportPtzRS485DetectOSD;	// 是否支持云台RS485检测OSD叠加
	BOOL				bSupportPTZCoordinates;		// 是否支持云台坐标叠加
	BOOL				bSupportPTZZoom;			// 是否支持云台变倍叠加
	BOOL				bDirectionDisplay;			// 是否支持云台方向状态显示
	DWORD				dwZoomMax;					// 变倍最大值
	DWORD				dwZoomMin;					// 变倍最小值
	CFG_PTZ_MOVE_ABSOLUTELY_CAP	stuMoveAbsolutely;	// 绝对控制云台能力,bMoveAbsolutely==TRUE 时有效
}CFG_PTZ_PROTOCOL_CAPS_INFO;

//串口支持的云台协议
typedef struct tagRS_PROTOCOL_InFO
{
	int					nRSProtocolNum;														//串口支持的云台协议个数
	char				szRSProtocol[CFG_COMMON_STRING_32][CFG_COMMON_STRING_32];			//串口支持的云台协议名称
}RS_PROTOCOL_InFO;

//同轴支持的云台协议
typedef struct tagCOAXOAL_PROTOTOL_INFO
{
	int					nCoaxialProtocolNum;													//同轴支持的云台协议个数
	char				szCoaxialProtocol[CFG_COMMON_STRING_32][CFG_COMMON_STRING_32];			//同轴支持的云台协议名称
}COAXOAL_PROTOTOL_INFO;

//获取该云台实际能够使用的协议,按介质区分
typedef struct tagCFG_CAP_PTZ_PROTOCOL
{
	unsigned int			nStructSize;
	RS_PROTOCOL_InFO		stuRSProtocolInfo;			//串口支持的云台协议信息
	COAXOAL_PROTOTOL_INFO	stuCoaxialProtocolInfo;		//同轴支持的云台协议信息
}CFG_CAP_PTZ_PROTOCOL;

// 特殊用途目录定义
typedef struct tagCFG_SPECIAL_DIR_INFO 
{
	char				szBackgroudImageDir[MAX_PATH];	// 屏幕底图目录
	char				szWindowIconDir[MAX_PATH];		// 窗口图标目录
	char				szEventVoiceDir[MAX_PATH];		// 报警语音提示音频文件存放目录
} CFG_SPECIAL_DIR_INFO;


// 关机后延时自动开机配置
typedef struct tagCFG_AUTO_STARTUP_DELAY_INFO
{
	BOOL	bEnable;		//功能是否打开           
	int		nDelay;			//关机后延时开机时间,单位:分钟(取值范围[30, 255])       
}CFG_AUTO_STARTUP_DELAY_INFO;

// 透雾模式枚举
typedef enum tagCFG_DEFOG_MODE
{
	EM_DEFOG_MODE_UNKNOW, //未知方式
	EM_DEFOG_MODE_OFF,    //关闭
	EM_DEFOG_MODE_AUTO,	  //自动
	EM_DEFOG_MODE_MANAL   //手动
}CFG_DEFOG_MODE;

//大气光模式枚举
typedef enum tagCFG_LIGHT_INTENSITY_MODE
{
	EM_LIGHT_INTENSITY_MODE_UNKNOW,//未知方式
	EM_LIGHT_INTENSITY_MODE_AUTO,  //自动
	EM_LIGHT_INTENSITY_MODE_MANUL, //手动
}CFG_LIGHT_INTENSITY_MODE;


//透雾设置配置信息,对应结构体 CFG_VIDEOINDEFOG
typedef struct tagCFG_VIDEOINDEFOG
{
	CFG_DEFOG_MODE				emDefogMode;//透雾模式
	int							nIntensity; //强度(0-100)
	CFG_LIGHT_INTENSITY_MODE	emLightIntensityMode;//大气光模式
	int							nLightIntensityLevel;//大气光强度(0-15)
	BOOL						bCamDefogEnable;//光学去雾使能 (TRUE使能,FALSE去使能)
}CFG_VIDEOINDEFOG;

//单个通道对应的透雾配置信息 
typedef struct tagCFG_VIDEOINDEFOG_LIST
{
	int							nVideoInDefogNum;						// 每个通道实际透雾配置个数
	CFG_VIDEOINDEFOG			stVideoInDefog[CFG_MAX_VIDEO_IN_DEFOG];	//每个通道对应的透雾配置数组
}CFG_VIDEOINDEFOG_LIST;

// RTMP配置
// 配置主要用于推送码流至Flash Media Server服务器。
// 结构体参数按一定规则生成url
typedef struct tagCFG_RTMP_INFO
{
	BOOL		bEnable;									// RTMP配置是否开启
	char		szAddr[MAX_ADDRESS_LEN];					// RTMP服务器地址
	int			nPort;										// RTMP服务器端口
	int			nMainChnNum;								// 主码流通道个数
	int			szMainChannel[AV_CFG_Max_Channel_Num];		// 启用主码流通道号列表:每个成员表示对应的通道需要上传到RTMP服务器,通道号从0开始
	int			nExtraChnNum;								// 辅码流通道个数
	int			szExtraChannel[AV_CFG_Max_Channel_Num];		// 启用辅码流通道号列表:每个成员表示对应的通道需要上传到RTMP服务器,通道号从0开始
	char		szCustomPath[MAX_ADDRESS_LEN];				// 定制路径名
	char		szStreamPath[MAX_ADDRESS_LEN];				// 码流路径前缀:不同通道以后缀数字区分
}CFG_RTMP_INFO;

// 每个频率段上的均衡器配置信息
typedef struct tagCFG_EQUALIZER_EACH_FREQUENCY
{
	int		nMinFrequency;		// 均衡器本段的最小频率,单位HZ,最小可取到0
	int		nMaxFrequency;		// 均衡器本段的最大频率,单位HZ,最大可取到20K
	int		nGain;				// 均衡器本段的增益
} CFG_EQUALIZER_EACH_FREQUENCY;

// 对应音频输出通道上所有频率段上的配置
typedef struct tagCFG_EQUALIZER_INFO
{
	int								nAudioOutChn;								// 音频输出通道号,最大通道号为16
	int								nFrequencyCount;							// 实际频率段个数
	CFG_EQUALIZER_EACH_FREQUENCY	stuFrequency[MAX_FREQUENCY_COUNT];			// 对应音频输出通道上所有频率段上的配置
} CFG_EQUALIZER_INFO;

// 音频输出均衡器配置(对应CFG_CMD_AUDIO_OUTEQUALIZER)
typedef struct tagCFG_AUDIO_OUTEQUALIZER_INFO
{
	int						nChannelNum;										// 需要配置的音频通道数
	CFG_EQUALIZER_INFO		stuEqualizerInfo[MAX_OUTAUDIO_CHANNEL_COUNT];		// 每个音频输出通道上的均衡器的配置信息
} CFG_AUDIO_OUT_EQUALIZER_INFO;

// 每个音频输出通道上的音频抑制配置
typedef struct tagCFG_SUPPRESSION_INFO
{
	int			nAudioOutChn;				// 音频输出通道,最大通道号为16
	BOOL		bAutoFrequencyControl;		// 啸叫抑制使能
	BOOL		bAutoEchoCancellation;		// 回声消除使能
} CFG_SUPPRESSION_INFO;

// 音频抑制配置信息(对应CFG_CMD_AUDIO_OUT_SUPPRESSION)
typedef struct tagCFG_AUDIO_OUT_SUPPRESSION_INFO
{
	int							nChannelNum;									// 需要配置的音频通道数
	CFG_SUPPRESSION_INFO		stuSuppressionInfo[MAX_OUTAUDIO_CHANNEL_COUNT];	// 每个音频输出通道上的音频抑制配置
} CFG_AUDIO_OUT_SUPPRESSION_INFO;

// 每个音频输入通道上的音频控制配置
typedef struct tagCFG_IN_CONTROL_EACH_AUDIO
{
	int 		nAudioInChn;			// 音频输入通道号,最大通道号 为32
	BOOL		bPower;					// 供电使能
	BOOL		bSquishSuppression;		// 静噪功能使能
} CFG_IN_CONTROL_EACH_AUDIO;

// 音频输入控制配置(对应CFG_CMD_AUDIO_INCONTROL)
typedef struct tagCFG_AUDIO_IN_CONTROL_INFO
{
	int								nChannelNum;										// 需要配置的音频通道数
	CFG_IN_CONTROL_EACH_AUDIO		stuInControl[MAX_INAUDIO_CHANNEL_COUNT];			// 每个音频输入通道上的音频控制配置
} CFG_AUDIO_IN_CONTROL_INFO;

// 视频输入能力集(CFG_CAP_CMD_VIDEOINPUT_EX)扩展配置
typedef struct tagCFG_CAP_VIDEOINPUT_INFO_EX
{
	BOOL            bSupportDefog;                          // 是否支持透雾功能
	BOOL			bSupportABFFunction;					// 是否支持自动调后焦功能
	BOOL			bSupportImageStabilization;				// 是否支持电子防抖功能

	BOOL			bSupportKillShutLine;					// 是否支持消除快门线功能
	int             nMinKillShutLine;						// 可配的最小值
	int			    nMaxKillShutLine;						// 可配的最大值

    BOOL            bSupportVideoInColor;	                //是否支持图像设置能力		 
    BOOL            bSupportBrightness;                 	//是否支持亮度	
    BOOL            bSupportContrast;                       //是否支持对比度       	
    BOOL            bSupportSaturation;                     //是否支持饱和度	
    BOOL            bSupportHue;                            //是否支持色度	
    BOOL            bSupportVideoInFocus;                   //是否支持聚焦设置
    BOOL			bLightingControl;						//是否支持红外灯控制
	BYTE            bReserved[3];                           //字节对齐
}CFG_CAP_VIDEOINPUT_INFO_EX;

// CAN过滤配置
#define MAX_CAN_COUNT	16			// 最大CAN个数

// CAN 过滤策略
typedef enum tagCFG_CAN_POLICY_METHOD
{
	CFG_CAN_POLICY_METHOD_UNKONW,		// 未知策略
	CFG_CAN_POLICY_METHOD_NONE,			// 无过滤
	CFG_CAN_POLICY_METHOD_WHITE,		// 白名单
	CFG_CAN_POLICY_METHOD_BLACK,		// 黑名单
}CFG_CAN_POLICY_METHOD;

typedef struct tagCFG_CANFILTER_INFO
{
	int						nResponseTimeout;			// 等待应答超时(单位:毫秒), 发送数据后,等待3000毫秒后,结束该路透传
	int						nRequestTimeout;			// 接收请求应答超时(单位:毫秒), 超过指定时间未收到数据,认为请求结束
	int						nFilterPIDCount;			// 数据号个数
	int						nRetFiterPIDCount;			// 返回数据号个数
	int*					pnFilterPID;				// 过滤数据号
	CFG_CAN_POLICY_METHOD	emPolicy;					// 过滤策略
														// 如果是白名单,上报包含PID的数据
														// 如果是黑名单,上报不含PID的数据
														// 无过滤则所有数据都上报																
}CFG_CANFILTER_INFO;

typedef struct tagCFG_CANFILTER_LIST
{
	int						nCANCount;			// CAN个数
	int						nRetCANCount;		// 设备返回CAN个数
	CFG_CANFILTER_INFO		stuCANFilter[MAX_CAN_COUNT];			
}CFG_CANFILTER_LIST;

// 聚焦极限对应枚举
typedef enum tagEM_FOCUS_LIMIT_SELECT_MODE
{
    EM_FOCUS_LIMIT_MODE_MANUAL,                // "Manual" 自动
    EM_FOCUS_LIMIT_MODE_AUTO,                  // "Auto"手动
    EM_FOCUS_LIMIT_MODE_INVALID
}EM_FOCUS_LIMIT_SELECT_MODE;

// 聚焦设置基本信息单元
typedef struct tagCFG_VIDEO_IN_FOCUS_UNIT
{
	int                        nMode;                   // 聚焦模式, 0-关闭, 1-辅助聚焦, 2-自动聚焦, 3-半自动聚焦, 4-手动聚焦
	int                        nSensitivity;            // 聚焦灵敏度, 0-高, 1-默认, 2-低
	int                        nIRCorrection;           // 红外光聚焦修正, 0-不修正, 1-修正, 2-自动修正
	EM_FOCUS_LIMIT_SELECT_MODE emFocusMode;             // 聚焦极限
	int	                       nFocusLimit;				// 聚焦极限值, 单位毫米
} CFG_VIDEO_IN_FOCUS_UNIT;

// 单通道聚焦设置基本信息
typedef struct tagCFG_VIDEO_IN_FOCUS	
{
	int						 nChannelIndex;				             // 通道号
	int						 nVideoInFocusRealNum;		             // 配置使用个数
	CFG_VIDEO_IN_FOCUS_UNIT  stVideoInFocusUnit[MAX_VIDEO_IN_FOCUS]; //通道聚焦配置单元信息
	
} CFG_VIDEO_IN_FOCUS;

typedef enum tagEM_ANALYSE_MODE
{
	EM_ANALYSE_MODE_REAL_STREAM,                            // 实时流模式     
	EM_ANALYSE_MODE_RECORDFILE_STREAM,                      // 录像文件流模式
	EM_ANALYSE_MODE_PICFILE_STREAM,                         // 图片文件流模式
}EM_ANALYSE_MODE;

// 智能分析模式
typedef struct tagCFG_ANALYSE_MODE
{
	EM_ANALYSE_MODE emMode;                                 // 分析模式,详见EM_ANALYSE_MODE 
}CFG_ANALYSE_MODE;

// 云台控制预置点结构
typedef struct tagPTZ_PRESET
{
	BOOL                 bEnable;                             // 该预置点是否生效
	char                 szName[MAX_PTZ_PRESET_NAME_LEN];     // 预置点名称
	CFG_PTZ_SPACE_UNIT   stPosition;                          // 预置点的坐标和放大倍数
}PTZ_PRESET;

// 云台预置点配置对应结构
typedef struct tagPTZ_PRESET_INFO
{
	DWORD              dwMaxPtzPresetNum;                     // 最大预置点个数
	DWORD              dwRetPtzPresetNum;                     // 实际使用预置点个数
	PTZ_PRESET         *pstPtzPreset;                         // 预置点信息(根据最大个数申请内存)
}PTZ_PRESET_INFO;

// 语音激励音频通道配置
typedef struct tagCFG_AUDIO_SPIRIT_CHANNE
{
	int				nChannel;				// 语音激励联动视频通道号
	int				nPriority;				// 语音激励优先级, 1~10
	int				nPreset;				// 对应的视频摄像机的预置点, 与云台一致0~255
} CFG_AUDIO_SPIRIT_CHANNEL;

// 语音激励联动项
typedef struct tagCFG_AUDIO_SPIRIT_LINKAGE 
{
	int				nOutputNum;				// 矩阵输出口数量
	int				nOutputChanel[CFG_MAX_LOWER_MATRIX_OUTPUT];	// 同步大画面输出到(多个)矩阵输出口
} CFG_AUDIO_SPIRIT_LINKAGE;

// 语音激励
typedef struct tagCFG_AUDIO_SPIRIT 
{
	BOOL				bEnable;			// 使能
	int					nAudioLimit;		// 激励音量阈值, 0~100
	int					nDelayTime;			// 激励延时时间, 单位: 秒
	CFG_AUDIO_SPIRIT_CHANNEL* pstuChannels;	// 语音激励音频通道属性,由用户申请内存,大小为sizeof(CFG_AUDIO_SPIRIT_CHANNEL)*nChannelCount
	int					nChannelCount;		// 音频通道数
	CFG_AUDIO_SPIRIT_LINKAGE stuLinkage;	// 激励联动项
} CFG_AUDIO_SPIRIT;

// 音频输出通道对应的输入通道信息
typedef struct tagCFG_AUDIO_OUT_CHN
{
	BOOL	bEnable;									// 表示当前输出通道是否有效
	int		nInputChn;									// 当前输出通道上的输入通道个数(bEnable为TRUE时有效)
	short	snInputChannels[CFG_MAX_AUDIO_MATRIX_INPUT];// 当前输出通道上的输入通道数组(bEnable为TRUE时有效)
} CFG_AUDIO_OUT_CHN;

// 音频矩阵下的输出通道信息
typedef struct tagCFG_AUDIO_MATRIX_INFO
{
	BOOL				bEnable;										// 表示当前矩阵是否有效
	int 				nAudioOutChn;									// 当前矩阵下的音频输出通道个数(bEnable为TRUE时有效)
	CFG_AUDIO_OUT_CHN	stuAudioOutChn[CFG_MAX_AUDIO_MATRIX_OUTPUT];	// 当前矩阵下的音频输出通道数组(bEnable为TRUE时有效)
} CFG_AUDIO_MATRIX_INFO;

// 音频矩阵配置信息
typedef struct tagCFG_AUDIO_MATRIX
{
	int						nAudioMatrix;	// 获取/设置的有效音频矩阵数量,最多4个
	CFG_AUDIO_MATRIX_INFO	stuAudioMatrix[CFG_MAX_AUDIO_MATRIX_NUM];	// 音频矩阵配置数组
} CFG_AUDIO_MATRIX;


//一个音频输出通道对应的静音输入通道
typedef struct tagCFG_AUDIO_SILENCE_INPUTCHN
{
	int 		nMatrix;		//此音频输出通道所处的矩阵号,从0开始
	int 		nOutChannel;	//此音频输出通道号,从0开始
	int 		nInputChnConut;	//被静音的输入通道的个数
	short  		snInputChannel[CFG_MAX_AUDIO_MATRIX_INPUT]; // 被静音的输入通道
}CFG_AUDIO_SILENCE_INPUT_CHN;


//静音矩阵配置信息
typedef struct tagCFG_AUDIO_MATRIX_SILENCE
{
	int 						 nMaxInputListCount;	// 需要获取/设置的静音的输出通道数量,既用户分配并赋给pstSilenceInputChn的CFG_AUDIO_SILENCE_INPUTCHN 结构个数
	int							 nRetInputListCountOut;	// 实际获取到的输出通道数量,设置配置时此成员无意义
	CFG_AUDIO_SILENCE_INPUT_CHN *pstSilenceInputChn; 	// 各个音频输出通道对应的静音输入通道,用户分配,大小为sizeof(CFG_AUDIO_SILENCE_INPUT_CHN)*nMaxInputListCount
} CFG_AUDIO_MATRIX_SILENCE;

// 合成通道配置(对应CFG_CMD_COMPOSE_CHANNEL)
typedef struct tagCFG_COMPOSE_CHANNEL 
{
	CFG_SPLITMODE	emSplitMode;			// 分割模式
	int				nChannelCombination[MAX_VIDEO_CHANNEL_NUM]; // 割模式下的各子窗口显示内容
	int				nChannelCount;			// 分割窗口数量
} CFG_COMPOSE_CHANNEL;

// 下位矩阵输出配置
typedef struct tagCFG_LOWER_MATRIX_OUTPUT
{
	char					szName[CFG_COMMON_STRING_128]; // 输出通道名称
	CFG_SPLITMODE			emSplitMode;		// 分割模式
	int						nInputs[CFG_MAX_LOWER_MATRIX_INPUT]; // 输入通道组
	int						nInputCount;		// 输入通道数
} CFG_LOWER_MATRIX_OUTPUT;

// 下位矩阵信息
typedef struct tagCFG_LOWER_MATRIX_INFO 
{
	int						nOutputCount;			// 输出通道数
	CFG_LOWER_MATRIX_OUTPUT	stuOutputs[CFG_MAX_LOWER_MATRIX_OUTPUT]; // 输出通道配置
} CFG_LOWER_MATRIX_INFO;

// 下位矩阵配置
typedef struct tagCFG_LOWER_MATRIX_LIST
{
	int						nMatrixCount;		// 下位矩阵数量
	CFG_LOWER_MATRIX_INFO	stuMatrix[CFG_MAX_LOWER_MATRIX_NUM]; // 下位矩阵数组
} CFG_LOWER_MATRIX_LIST;

// 开始与结束日期
typedef struct tagCFG_DAYTIME_INFO
{
	int					nBeginMonth;		// 开始时间 月份
	int					nBeginDay;			// 开始时间 日期
	int					nEndMonth;			// 结束时间 月份
	int					nEndDay;			// 结束时间	日期
}CFG_DAYTIME_INFO;

// 时间段限速值配置
typedef struct tagCFG_TIMESPEEDLIMIT_INFO
{
	BOOL				bEnable;			// 速度限制开启
	CFG_DAYTIME_INFO	stuDayTime;			// 时间段开始与结束日期
	int					nDaySpeedLimit;		// 白天限速值,单位km/h
	int					nNightSpeedLimit;	// 晚上限速值,单位km/h
	CFG_TIME_SECTION	stuTimeSection;		// 白天时间段范围,掩码无效
}CFG_TIMESPEEDLIMIT_INFO;

typedef struct tagCFG_TIMESPEEDLIMIT_LIST
{
	int						nTimeSpeedLimitCount;		// 限速时间段个数
	CFG_TIMESPEEDLIMIT_INFO stuTimeSpeedLimit[MAX_TIMESPEEDLIMIT_NUM];
}CFG_TIMESPEEDLIMIT_LIST;

// 语音提示时间
typedef struct tagCFG_ALERTTIME_INFO
{
	int				nHour;				// 小时
	int				nMinute;			// 分钟
}CFG_ALERTTIME_INFO;

// 语音提示配置
typedef struct tagCFG_VOICEALERT_INFO
{
	CFG_ALERTTIME_INFO	stuAlertTime;							// 语音提醒时间点,定时提醒
	int					nIntervalTime;							// 提醒间隔时,单位秒
	char				szWarnText[CFG_COMMON_STRING_256];		// 语音提醒内容,用户自定义
}CFG_VOICEALERT_INFO;

typedef struct tagCFG_VOICEALERT_LIST
{
	int					nVoiceAlertCount;					// 语音提示个数
	CFG_VOICEALERT_INFO stuVoiceAlert[MAX_VOICEALERT_NUM];
}CFG_VOICEALERT_LIST;



// 红外面板按键
typedef struct tagCFG_INFRARED_KEY 
{
	char			szName[CFG_COMMON_STRING_32];	// 面板按键名称
	char			szText[CFG_COMMON_STRING_64];	// 面板按键显示文字,按钮label
} CFG_INFRARED_KEY;

// 红外面板模板
typedef struct tagCFG_INFRARED_BOARD_TEMPLATE 
{
	unsigned int	nID;							// 面板模板编号
	char			szName[CFG_COMMON_STRING_64];	// 面板品牌型号定义
	unsigned int	nCategory;						// 面板类型, 大类, 0-DVD, 1-TV
	int				nKeyNum;						// 面板按键数量
	CFG_INFRARED_KEY stuKeys[CFG_MAX_INFRARED_KEY_NUM];	// 面板按键
} CFG_INFRARED_BOARD_TEMPLATE;

// 红外面板模板组
typedef struct tagCFG_INFRARED_BOARD_TEMPLATE_GROUP 
{
	int			nTemplateNum;		// 模板数量
	CFG_INFRARED_BOARD_TEMPLATE stuTemplates[CFG_MAX_INFRARED_BOARD_TEMPLATE_NUM];	// 红外面板模板
} CFG_INFRARED_BOARD_TEMPLATE_GROUP;

// 红外面板
typedef struct tagCFG_INFRARED_BOARD 
{
	unsigned int	nID;							// 面板编号, 唯一标示
	char			szName[CFG_COMMON_STRING_64];	// 面板控制外设名称, 用户自定义
	unsigned int	nCategory;						// 面板类型, 0-DVD, 1-TV
	int				nCommPort;						// 红外通讯端口
	unsigned int	nTemplateID;					// 关联的模板ID
} CFG_INFRARED_BOARD;

// 红外面板组
typedef struct tagCFG_INFRARED_BOARD_GROUP
{
	int				nBoardNum;						// 红外面板数量
	CFG_INFRARED_BOARD stuBoards[CFG_MAX_INFRARED_BOARD_NUM];	// 红外面板信息		
} CFG_INFRARED_BOARD_GROUP;

// 设备保活配置
typedef struct tagCFG_DEVICEKEEPALIVE_INFO
{
	BOOL	bEnable;		// 开启保活使能
	int		nInterval;		// 保活时间间隔,必须是>=10的值,单位:秒
	int		nFailTimes;		// 保活失败次数,保活失败次数到达该值认为设备断线
	int		nWaitBootTime;	// 等待外设加电后启动后检测保活心跳,单位:秒
}CFG_DEVICEKEEPALIVE_INFO;

// 设备曝光配置基本信息
typedef struct tagCFG_VIDEOIN_EXPOSURE_BASE
{
    BOOL        bSlowShutter;           // 慢快门使能

    BYTE        byExposureMode;         // 曝光模式调节, 0- 默认自动,1- 低噪声,2- 防拖影,3- 50Hz防闪烁
                                        // 4- 60Hz防闪烁, 5- 光圈优先, 6- 手动, 7- 增益优先, 8- 快门优先

    BYTE        byAntiFlicker;			// 防闪烁模式 0-Outdoor 1-50Hz防闪烁 2-60Hz防闪烁
    BYTE        byCompensation;         // 曝光补偿, [0~14]
    BYTE        byAutoGainMax;          // 自动增益上限, [0, 2]
    BYTE        byGain;                 // 增益档位, [0, 15]
    BYTE        bySlowAutoExposure;     // 慢曝光, [0, 15]
    BYTE        bybyReserv[2];          // 字节对齐
    int         byExposureSpeed;        // 曝光速度等级:0-自动曝光,1-曝光等级1,2-曝光等级2…n-1最大曝光等级数 n带时间上下限的自动曝光 n+1自定义时间手动曝光 (n为支持的曝光等级)
    BYTE        bySlowSpeed;            // 慢曝光等级
    BYTE        byIris;                 // 光圈设置, [0~100]
    BYTE        byBacklight;            // 背光补偿: 取值范围取决于设备能力集: 0-关闭 1-启用 2-指定区域背光补偿
    BYTE        byWideDynamicRange;     // 宽动态值 0-关闭,1~100-为真实范围值
    BYTE        byWideDynamicRangeMode; // 宽动态模式, 0:关闭; 1:手动调节; 2:自动调节
    BYTE        byGlareInhibition;      // 强光抑制, 0:关闭; 1:弱; 2:中; 3:强
    BYTE        byDoubleExposure;       // 双快门支持, 0:不支持; 1:支持双快门全帧率; 2:支持双快门半帧率; 3:支持双快门全帧率和半帧率
    BYTE        byReserved;             // 字节对齐
    int         nRecoveryTime;          // 自动曝光恢复, 0-表示不恢复, 其他表示恢复的时间, 单位为秒

    float       fValue1;                // 自动曝光时间下限或者手动曝光自定义时间, [0.1~80ms]
    float       fValue2;                // 自动曝光时间上限, 需不小于下限, [0.1~80ms]

    CFG_RECT    stuBacklightRegion;     // 背光补偿区域
    BYTE		byIrisMin;				// 光圈区间下限[0~100]
    BYTE		byIrisMax;				// 光圈区间上限,取值不小于byIrisMin[0~100]
    BYTE		byGainMin;				// 手动(区间)登陆下限
    BYTE		byGainMax;				// 手动(区间)登陆下限
}CFG_VIDEOIN_EXPOSURE_BASE;

// 设备曝光配置
typedef struct tagCFG_VIDEOIN_EXPOSURE_INFO
{
    DWORD                       dwMaxExposureNum;       // 配置的最大个数
    DWORD                       dwRetExposureNum;       // 实际使用的最大个数(查询时返回实际解析个数, 封装时按照此值个数封装)
    CFG_VIDEOIN_EXPOSURE_BASE   *pstuVideoInExposure;   // 曝光配置信息,由用户申请内存,大小为sizeof(CFG_VIDEOIN_EXPOSURE_BASE)*dwMaxExposureNum
}CFG_VIDEOIN_EXPOSURE_INFO;

#define BACKLIGHT_CONFIG_COUNT	3	// 光线环境配置个数

// 背光模式
typedef enum tagEM_VIDEOIN_BACKLIGHT_MODE
{
	EM_BACKLIGHT_UNKNOW,			// 未知模式
	EM_BACKLIGHT_OFF,				// 关闭
	EM_BACKLIGHT_BACKLIGHT,			// 背光补偿
	EM_BACKLIGHT_GLAREINHIBITION,	// 强光抑制
	EM_BACKLIGHT_WIDEDYNAMIC,		// 宽动态
	EM_BACKLIGHT_SSA,				// 场景自适应
} EM_VIDEOIN_BACKLIGHT_MODE;

// 背光补偿模式,当背光模式为Backlight时有效
typedef enum tagEM_BACKLIGHT_MODE
{
	EM_BACKLIGHT_UNKONW,			// 未知模式
	EM_BACKLIGHT_DEFAULT,			// 默认模式
	EM_BACKLIGHT_REGION,			// 自定义区域模式
} EM_BACKLIGHT_MODE;

// SSA对比度调节模式,当背光模式为SSA时有效
typedef enum tagEM_INTENSITY_MODE
{
	EM_INTENSITY_UNKNOW,			// 未知模式
	EM_INTENSITY_DISABLE,			// 关闭
	EM_INTENSITY_AUTO,				// 自动
	EM_INTENSITY_MANUAL,			// 手动
} EM_INTENSITY_MODE;

// 环境光线配置信息
typedef struct tagCFG_VIDEOIN_BACKLIGHT_BASE
{
	EM_VIDEOIN_BACKLIGHT_MODE		emMode;				// 背光模式
	EM_BACKLIGHT_MODE				emBacklightMode;	// 背光补偿模式,当emMode == EM_BACKLIGHT_BACKLIGHT时有效
	CFG_RECT						stuBacklightRegion; // 背光补偿区域,当emBacklightMode == EM_BACKLIGHT_REGION时有效
	int								nWideDynamicRange;	// 宽动态值,emMode == EM_BACKLIGHT_WIDEDYNAMIC时有效
	int								nGlareInhibition;	// 强光抑制,emMode == EM_BACKLIGHT_GLAREINHIBITION时有效
	EM_INTENSITY_MODE				emInitensityMode;	// SSA对比度调节模式,emMode==EM_BACKLIGHT_SSA时有效
	int								nIntensity;			// SSA手动调整强度值,emInitensityMode==EM_INTENSITY_MANUAL时有效
} CFG_VIDEOIN_BACKLIGHT_BASE;

// 环境光线配置
typedef struct tagCFG_VIDEOIN_BACKLIGHT_INFO
{
	// 环境光线配置信息,0-白天1-夜晚 2-普通
	CFG_VIDEOIN_BACKLIGHT_BASE		stuVideoInBackLight[BACKLIGHT_CONFIG_COUNT];
} CFG_VIDEOIN_BACKLIGHT_INFO;

//////////////////////////////////////////////////////////////////////////
// 门禁基本配置

// 自定义开门方式
typedef enum tagCFG_DOOR_OPEN_METHOD
{
	CFG_DOOR_OPEN_METHOD_UNKNOWN                        = 0,
	CFG_DOOR_OPEN_METHOD_PWD_ONLY						= 1,    // 只允许密码开锁
	CFG_DOOR_OPEN_METHOD_CARD							= 2,    // 只允许刷卡开锁
	CFG_DOOR_OPEN_METHOD_PWD_OR_CARD					= 3,    // 密码或刷卡开锁
	CFG_DOOR_OPEN_METHOD_CARD_FIRST						= 4,    // 先刷卡后密码开锁
	CFG_DOOR_OPEN_METHOD_PWD_FIRST						= 5,    // 先密码后刷卡开锁
	CFG_DOOR_OPEN_METHOD_SECTION						= 6,    // 分时段开门
    CFG_DOOR_OPEN_METHOD_FINGERPRINTONLY                = 7,    // 仅指纹开锁
    CFG_DOOR_OPEN_METHOD_PWD_OR_CARD_OR_FINGERPRINT     = 8,    // 密码或刷卡或指纹开锁
    CFG_DOOR_OPEN_METHOD_PWD_AND_CARD_AND_FINGERPINT    = 9,    // 密码+刷卡+指纹组合开锁
    CFG_DOOR_OPEN_METHOD_PWD_AND_FINGERPRINT            = 10,   // 密码+指纹组合开锁
    CFG_DOOR_OPEN_METHOD_CARD_AND_FINGERPRINT           = 11,   // 刷卡+指纹开锁
    CFG_DOOR_OPEN_METHOD_MULTI_PERSON                   = 12,   // 多人开锁
    CFG_DOOR_OPEN_METHOD_FACEIDCARD						= 13,   // 人证对比
    CFG_DOOR_OPEN_METHOD_FACEIDCARD_AND_IDCARD			= 14,	// 身份证+ 人证比对
    CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_CARD_OR_FINGER	= 15,	// 人证比对或刷卡或指纹
    CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FINGER	= 16,	// (身份证+认证比对)或刷卡或指纹
    CFG_DOOR_OPEN_METHOD_USERID_AND_PWD                 = 17,   // UserID+密码
    CFG_DOOR_OPEN_METHOD_FACE_ONLY                      = 18,   // 只允许人脸开锁
    CFG_DOOR_OPEN_METHOD_FACE_AND_PWD                   = 19,   // 人脸+密码开锁
    CFG_DOOR_OPEN_METHOD_FINGERPRINT_AND_PWD            = 20,   // 指纹+密码开锁
    CFG_DOOR_OPEN_METHOD_FINGERPRINT_AND_FACE           = 21,   // 指纹+人脸开锁
    CFG_DOOR_OPEN_METHOD_CARD_AND_FACE                  = 22,   // 刷卡+人脸开锁
    CFG_DOOR_OPEN_METHOD_FACE_OR_PWD                    = 23,   // 人脸或密码开锁
    CFG_DOOR_OPEN_METHOD_FINGERPRINT_OR_PWD             = 24,   // 指纹或密码开锁
    CFG_DOOR_OPEN_METHOD_FINGERPRINT_OR_FACE            = 25,   // 指纹或人脸开锁
    CFG_DOOR_OPEN_METHOD_CARD_OR_FACE                   = 26,   // 刷卡或人脸开锁
    CFG_DOOR_OPEN_METHOD_CARD_OR_FINGERPRINT            = 27,   // 刷卡或指纹开锁
    CFG_DOOR_OPEN_METHOD_FINGERPRINT_AND_FACE_AND_PWD   = 28,   // 指纹+人脸+密码开锁
    CFG_DOOR_OPEN_METHOD_CARD_AND_FACE_AND_PWD          = 29,   // 刷卡+人脸+密码开锁
    CFG_DOOR_OPEN_METHOD_CARD_AND_FINGERPRINT_AND_PWD   = 30,   // 刷卡+指纹+密码开锁
    CFG_DOOR_OPEN_METHOD_CARD_AND_PWD_AND_FACE          = 31,   // 卡+指纹+人脸组合开锁
    CFG_DOOR_OPEN_METHOD_FINGERPRINT_OR_FACE_OR_PWD     = 32,   // 指纹或人脸或密码
    CFG_DOOR_OPEN_METHOD_CARD_OR_FACE_OR_PWD               = 33,   // 卡或人脸或密码开锁
    CFG_DOOR_OPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE    = 34,   // 卡或指纹或人脸开锁
    CFG_DOOR_OPEN_METHOD_CARD_AND_FINGERPRINT_AND_FACE_AND_PWD  = 35,   // 卡+指纹+人脸+密码组合开锁 
    CFG_DOOR_OPEN_METHOD_CARD_OR_FINGERPRINT_OR_FACE_OR_PWD     = 36,   // 卡或指纹或人脸或密码开锁
    CFG_DOOR_OPEN_METHOD_FACEIPCARDANDIDCARD_OR_CARD_OR_FACE    = 37,   //(身份证+人证比对)或 刷卡 或 人脸
    CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_CARD_OR_FACE        = 38,   // 人证比对 或 刷卡(二维码) 或 人脸
	CFG_DOOR_OPEN_METHOD_CARDANDPWD_OR_FINGERPRINTANDPWD   = 39,   // (卡+密码)或(指纹+密码)默认为2
	CFG_DOOR_OPEN_METHOD_PHOTO_OR_FACE					= 40,	//	人证(照片)或人脸
	CFG_DOOR_OPEN_METHOD_FINGERPRINT					= 41,	//	人证(指纹)
	CFG_DOOR_OPEN_METHOD_PHOTO_AND_FINGERPRINT			= 42,	//	人证(照片+指纹)
	CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_CARD_OR_FINGERPRINT_OR_FACE_OR_PASSWORD = 43,	// 人证或刷卡或指纹或人脸或密码
	CFG_DOOR_OPEN_METHOD_MULTI_USER_TYPE				= 44,	// 多用户类型
	CFG_DOOR_OPEN_METHOD_FACEIDCARD_OR_HEALTHCODE		= 45,	// 人证或健康码
}CFG_DOOR_OPEN_METHOD;


// 门禁单双向配置类型
typedef enum tagCFG_ACCESS_PROPERTY_TYPE
{
    CFG_ACCESS_PROPERTY_UNKNOWN = 0,
    CFG_ACCESS_PROPERTY_BIDIRECT,       // 双向门禁
    CFG_ACCESS_PROPERTY_UNIDIRECT,      // 单向门禁
}CFG_ACCESS_PROPERTY_TYPE;

#define CFG_MAX_ABLOCK_DOORS_NUM        8                       // 最大的门禁的互锁门通道数

// 门禁的AB互锁的组
typedef struct tagCFG_ABLOCK_DOOR_INFO 
{
    int                 nDoor;                                  // 有效互锁门的个数
    int                 anDoor[CFG_MAX_ABLOCK_DOORS_NUM];       // 互锁的门的通道号
}CFG_ABLOCK_DOOR_INFO;

#define CFG_MAX_ABLOCK_GROUP_NUM        8                       // 最大的互锁组数

// 门禁的AB互锁功能, 多个门通道,只有其他B通道都关闭,唯一的A通道才打开
typedef struct tagCFG_ABLOCK_INFO 
{
    BOOL                bEnable;                                // 使能
    int                 nDoors;                                 // 有效互锁组数
    CFG_ABLOCK_DOOR_INFO stuDoors[CFG_MAX_ABLOCK_GROUP_NUM];    // 互锁组信息
}CFG_ABLOCK_INFO;

// 通行模式
typedef enum tagEM_PASS_MODE
{
    EM_PASS_MODE_UNKNOWN = -1,                                   // 未知
    EM_PASS_MODE_IN_AUTHORIZATION_OUT_AUTHORIZATION,             // 进授权出授权 
    EM_PASS_MODE_IN_AUTHORIZATION_OUT_FREE,                      // 进授权出自由 
    EM_PASS_MODE_IN_AUTHORIZATION_OUT_FORBID,                    // 进授权出禁止 
    EM_PASS_MODE_IN_FREE_OUT_AUTHORIZATION,                      // 进自由出授权
    EM_PASS_MODE_IN_FREE_OUT_FREE,                               // 进自由出自由 
    EM_PASS_MODE_IN_FREE_OUT_FORBID,                             // 进自由出禁止
    EM_PASS_MODE_IN_FORBID_OUT_AUTHORIZATION,                    // 进禁止出授权
    EM_PASS_MODE_IN_FORBID_OUT_FREE,                             // 进禁止出自由
    EM_PASS_MODE_IN_FORBID_OUT_FORBID,                           // 进禁止出禁止
} EM_PASS_MODE;

// 闸机防冲撞模式
typedef enum tagEM_COLLISION_MODE
{
    EM_COLLISION_MODE_UNKNOWN = -1,                               
    EM_COLLISION_MODE_2S,                                       // 2s松开离合                            
    EM_COLLISION_MODE_5S,                                       // 5s松开离合
    EM_COLLISION_MODE_LEAVING,                                  // 人员离开松开离合
} EM_COLLISION_MODE;

// 闸机断电以后门摆动放向
typedef enum tagEM_DIRECTION_AFTER_POWER_OFF
{
    EM_DIRECTION_AFTER_POWER_OFF_UNKNOWN = -1,                  // 未知         
    EM_DIRECTION_AFTER_POWER_OFF_IN,                            // 进门方向                                
    EM_DIRECTION_AFTER_POWER_OFF_OUT,                           // 出门方向    
} EM_DIRECTION_AFTER_POWER_OFF;

// 工作模式
typedef enum tagEM_ASG_WORK_MODE
{
    EM_ASG_WORK_MODE_UNKNOWN  = -1,                             // 未知
    EM_ASG_WORK_MODE_CLOSE,                                     // 常闭模式
    EM_ASG_WORK_MODE_OPEN,                                      // 常开模式        
} EM_ASG_WORK_MODE;

// 启动模式
typedef enum tagEM_STARTUP_MODE
{   
    EM_STARTUP_MODE_UNKNOWN  = -1,                              // 未知
    EM_STARTUP_MODE_NORMAL,                                     // 正常启动模式
    EM_STARTUP_MODE_ZERO_SETTING,                               // 零位设置启动模式
    EM_STARTUP_MODE_AGING_TEST,                                 // 老化测试启动模式   
} EM_STARTUP_MODE;

// 闸机类型    
typedef enum tagEM_GATE_TYPE
{   
    EM_GATE_TYPE_UNKNOWN  = -1,                                 // 未知
    EM_GATE_TYPE_SWING,                                         // 摆闸
    EM_GATE_TYPE_WING,                                          // 翼闸   
} EM_GATE_TYPE;

// 通道宽度
typedef enum tagEM_CHANNEL_WIDTH
{
    EM_CHANNEL_WIDTH_UNKNOWN = -1,                              // 未知
    EM_CHANNEL_WIDTH_600,                                       // 600mm
    EM_CHANNEL_WIDTH_700,                                       // 700mm
    EM_CHANNEL_WIDTH_800,                                       // 800mm
    EM_CHANNEL_WIDTH_900,                                       // 900mm
    EM_CHANNEL_WIDTH_1000,                                      // 1000mm
    EM_CHANNEL_WIDTH_1100,                                      // 1100mm
    EM_CHANNEL_WIDTH_1200,                                      // 1200mm
} EM_CHANNEL_WIDTH;

// 门通道控制闸机参数
typedef struct tagCFG_ACCESS_CONTROL_ASG
{
    EM_PASS_MODE                                    emPassMode;                              // 通行模式
    UINT                                            nOpenDoorSpeed;                          // 开门速度档位, 范围:0-7, 对应1-8档
    UINT                                            nPassTimeOut;                            // 通行超时时间, 范围:2-60, 单位:秒
    UINT                                            nCloseDelayTime;                         // 延时关门时间, 范围:0-60, 单位:秒
    UINT                                            nSecurityLevel;                          // 闸机安全等级, 范围:0-4, 对应1-5级
    BOOL                                            bSecondOpenEnable;                       // 二次开启功能开关;False:关闭, True:开启
    BOOL                                            bMemoryModeEnable;                       // 记忆功能开关;False:关闭, True:开启
    EM_COLLISION_MODE                               emCollisionMode;                         // 闸机防冲撞模式
    UINT                                            nVolumeLevel;                            // 设备音量等级共8档, 范围:0-7, 0级表示静音
    EM_DIRECTION_AFTER_POWER_OFF                    emDirectionAfterPowerOff;                // 闸机断电以后门摆动放向
    EM_ASG_WORK_MODE                                emWorkMode;                              // 工作模式
    EM_STARTUP_MODE                                 emStartUpMode;                           // 启动模式
    int                                             nMasterWingAngleAdjust;                  // 主机侧门翼零位微调角度,进门方向右手边为主机侧门翼
    int                                             nSlaveWingAngleAdjust;                   // 从机侧门翼零位微调角度,进门方向左手边为从机侧门翼
    EM_GATE_TYPE                                    emGateType;                              // 闸机类型   
    EM_CHANNEL_WIDTH                                emChannelWidth;                          // 通道宽度
    BYTE                                            byReserved[128];                         // 保留字节                                       
} CFG_ACCESS_CONTROL_ASG;

// 语音ID
typedef enum tagCFG_EM_VOICE_ID
{
	CFG_EM_VOICE_ID_UNKNOWN = -1,						// 未知
	CFG_EM_VOICE_ID_VERIFY_SUCCESS,						// 验证成功(默认)
	CFG_EM_VOICE_ID_OPENDOOR_SUCCESS,					// 开门成功
	CFG_EM_VOICE_ID_UNLOCK_SUCCESS,						// 开锁成功
	CFG_EM_VOICE_ID_SWIPECARD_SUCCESS,					// 刷卡成功
	CFG_EM_VOICE_ID_WELCOME,							// 欢迎光临
	CFG_EM_VOICE_ID_WELCOME_BACK,						// 欢迎再次光临
	CFG_EM_VOICE_ID_THANKS,								// 谢谢
	CFG_EM_VOICE_ID_CUSTOMIZED_VOICE,					// 自定义
}CFG_EM_VOICE_ID;

// 门禁开门语音信息
typedef struct tagCFG_ACCESS_VOICE_INFO
{
	CFG_EM_VOICE_ID			emVoiceID;					// 语音ID
	char					szVoiceContent[128];		// 语音内容
	char					szFileName[128];			// 语音文件路径及名称
	BYTE					byReserved[1024];			// 预留字段
}CFG_ACCESS_VOICE_INFO;

// 门禁开门提示音
typedef struct tagCFG_ACCESS_VOICE
{
	CFG_EM_VOICE_ID			emCurrentVoiceID;			// 当前播放语音ID
	CFG_ACCESS_VOICE_INFO	arrayVoiceInfo[16];			// 语音列表	
	UINT					nVoiceCount;				// arrayVoiceInfo 个数 
	BYTE					byReserved[1024];			// 预留字段
}CFG_ACCESS_VOICE;

// 门禁基本配置
typedef struct tagCFG_ACCESS_GENERAL_INFO
{
	char                szOpenDoorAudioPath[MAX_ADDRESS_LEN];   // 开门音频文件路径
	char                szCloseDoorAudioPath[MAX_ADDRESS_LEN];  // 关门音频文件路径
	char                szInUsedAuidoPath[MAX_ADDRESS_LEN];     // 有人音频文件路径
	char                szPauseUsedAudioPath[MAX_ADDRESS_LEN];  // 暂停使用音频文件路径 
	char                szNotClosedAudioPath[MAX_ADDRESS_LEN];  // 门未关音频文件路径
	char                szWaitingAudioPath[MAX_ADDRESS_LEN];    // 等待提示音频文件路径
	int                 nUnlockReloadTime;                      // 开锁命令响应间隔时间,单位秒,取值10、15(默认值)、20
	int                 nUnlockHoldTime;                        // 开锁输出保持时间,单位秒,取值1、2(默认)、3、4、5、6、9、15。 

	// 能力
	bool                abProjectPassword;
    bool                abAccessProperty;
    bool                abABLockInfo;
	BYTE				byReserved;

	char				szProjectPassword[MAX_PASSWORD_LEN];	// 工程密码
    CFG_ACCESS_PROPERTY_TYPE emAccessProperty;                  // 门禁通道单双向配置
    CFG_ABLOCK_INFO     stuABLockInfo;                          // AB互锁信息
	char				szDuressPassword[MAX_PASSWORD_LEN];		// 胁迫密码
	BOOL				bDuressEnable;							// 胁迫使能
    BOOL				bCustomPasswordEnable;                // 是否启用个性化密码
    char				szCommonPassword[MAX_PASSWORD_LEN];	// 公共密码
    UINT                nPeakTimeSection;                   // 梯控高峰时间段, 值为CFG_ACCESS_TIMESCHEDULE_INFO配置的数组下标
    BOOL                bPeakState;                         // 是否为梯控高峰期, TRUE:高峰期, FALSE:平峰期
    UINT                nRemoteAuthTimeOut;                 // 远程校验超时时间,单位:秒, 默认值:5秒,范围[1-15]
	BYTE				arrFloorPermission[64];				// 楼层权限信息,每一个bit对应一个楼层,bit值1表示公共层,0表示权限楼层	
	int 				nFloorPermission;					// arrFloorPermission 数组个数
    CFG_ACCESS_CONTROL_ASG   stuAccessControlASG;               // 门通道控制闸机参数
	CFG_ACCESS_VOICE	stuAccessVoice;						// 门禁开门提示音
}CFG_ACCESS_GENERAL_INFO;

// 门禁状态
typedef enum CFG_ACCESS_STATE
{
	ACCESS_STATE_NORMAL,                                        // 普通
	ACCESS_STATE_CLOSEALWAYS,                                   // 常关
    ACCESS_STATE_OPENALWAYS,                                    // 常开 
                                                                // 常开常闭状态下,Opendoor开门无效.
    ACCESS_STATE_NOPERSONNC,                                    // 无人状态常闭
    ACCESS_STATE_NOPERSONNO                                     // 无人状态常开
}CFG_ACCESS_STATE; 

// 门禁模式
typedef enum CFG_ACCESS_MODE
{
	ACCESS_MODE_HANDPROTECTED,                                  // 防夹模式
	ACCESS_MODE_SAFEROOM,                                       // 防护房间模式    
	ACCESS_MODE_OTHER,                                          // 其它
}CFG_ACCESS_MODE;


// 分时段开门
typedef struct tagCFG_DOOROPEN_TIMESECTION_INFO
{
	CFG_TIME_PERIOD			stuTime;				// 时间段
	CFG_DOOR_OPEN_METHOD	emDoorOpenMethod;		// 开门模式
}CFG_DOOROPEN_TIMESECTION_INFO;

#define MAX_DOOR_TIME_SECTION		4				// 门禁每天分时时间段最大个数

// 首卡权限验证通过后的门禁状态
typedef enum CFG_ACCESS_FIRSTENTER_STATUS
{
	ACCESS_FIRSTENTER_STATUS_UNKNOWN,	// 未知状态
	ACCESS_FIRSTENTER_STATUS_KEEPOPEN,	// KeepOpen-首卡权限验证通过后,门保持常开
	ACCESS_FIRSTENTER_STATUS_NORMAL		// Normal-首卡权限验证通过后,其他用户才能刷卡(指纹等)验证通过
}CFG_ACCESS_FIRSTENTER_STATUS;

// 首卡开门信息
typedef struct tagCFG_ACCESS_FIRSTENTER_INFO
{
	BOOL							bEnable;	// 在指定的时间,只有拥有首卡权限的用户验证通过后,其他的用户才能刷卡(指纹等)进入,TRUE 使能 FALSE 关闭
	CFG_ACCESS_FIRSTENTER_STATUS	emStatus;	// 首卡权限验证通过后的门禁状态
	int								nTimeIndex;	// 需要首卡验证的时间段, 值为通道号
}CFG_ACCESS_FIRSTENTER_INFO;

// 远程开门验证
typedef struct tagCFG_REMOTE_DETAIL_INFO 
{
    int                 nTimeOut;                       // 超时时间, 0表示永久等待, 其他值表示超时时间(单位为秒)
    BOOL                bTimeOutDoorStatus;             // 超时后的门状态, TRUE:打开, FALSE:关闭
}CFG_REMOTE_DETAIL_INFO;

// TimeOut info for handicap
typedef struct tagCFG_HANDICAP_TIMEOUT_INFO
{
    int                 nUnlockHoldInterval;            // 门锁保持时间(自动关门时间),单位毫秒,[250, 60000]  
    int                 nCloseTimeout;                  // 关门超时时间, 超过阈值未关会触发报警,单位秒,[0,9999];0表示不检测超时
}CFG_HANDICAP_TIMEOUT_INFO;

// 开门远程验证
typedef struct tagCFG_AUTO_REMOTE_CHECK_INFO
{
    BOOL                bEnable;                        // 使能项, TRUE: 开启, FALSE: 关闭
    int                 nTimeSechdule;                  // 对应CFG_CMD_ACCESSTIMESCHEDULE配置的通道号
}CFG_AUTO_REMOTE_CHECK_INFO;

// 门禁协议
typedef enum tagCFG_EM_ACCESS_PROTOCOL
{
	CFG_EM_ACCESS_PROTOCOL_UNKNOWN,						// 未知
	CFG_EM_ACCESS_PROTOCOL_LOCAL,						// 本机开关量控制
	CFG_EM_ACCESS_PROTOCOL_SERIAL,						// 串口协议
	CFG_EM_ACCESS_PROTOCOL_REMOTE,						// 门禁udp开锁
}CFG_EM_ACCESS_PROTOCOL;

// 串口协议下的具体协议功能
typedef enum tagCFG_EM_SERIAL_PROTOCOL_TYPE
{
	CFG_EM_SERIAL_PROTOCOL_TYPE_UNKNOWN = -1,					// 未知
	CFG_EM_SERIAL_PROTOCOL_TYPE_UNUSED,							// 未使用
	CFG_EM_SERIAL_PROTOCOL_TYPE_DAHUA_ACCESS_485,				// 门禁485
	CFG_EM_SERIAL_PROTOCOL_TYPE_LADDER_CONTROL,					// 梯控
	CFG_EM_SERIAL_PROTOCOL_TYPE_REMOTE_READ_HEAD,				// 远距离读头
}CFG_EM_SERIAL_PROTOCOL_TYPE;

// 大华门禁udp开锁信息
typedef struct tagCFG_ACCESS_CONTROL_UDP_INFO
{
	char				szAddress[CFG_MAX_ACCESS_CONTROL_ADDRESS_LEN];			// 地址
	int					nPort;													// 端口
}CFG_ACCESS_CONTROL_UDP_INFO;

// 当前门采集状态
typedef enum tagEM_CFG_CARD_STATE
{
	EM_CFG_CARD_STATE_UNKNOWN = -1,				// 未知
	EM_CFG_CARD_STATE_SWIPE,					// 门禁刷卡
	EM_CFG_CARD_STATE_COLLECTION,				// 门禁采集卡
}EM_CFG_CARD_STATE;

// 门禁事件配置
typedef struct tagCFG_ACCESS_EVENT_INFO
{
	char                szChannelName[MAX_NAME_LEN];	// 门禁通道名称
	CFG_ACCESS_STATE    emState;						// 门禁状态
	CFG_ACCESS_MODE     emMode;							// 门禁模式
	int					nEnableMode;					// 门禁使能电平值, 0:低电平有效(断电启动); 1:高电平有效(通电启动);
	BOOL                bSnapshotEnable;				// 事件联动抓图使能
	
    // 能力
	bool                abDoorOpenMethod;
    bool                abUnlockHoldInterval;
	bool                abCloseTimeout;
	bool                abOpenAlwaysTimeIndex;
    bool                abCloseAlwaysTimeIndex;
	bool                abHolidayTimeIndex;
	bool                abBreakInAlarmEnable;
	bool				abRepeatEnterAlarmEnable;
	bool                abDoorNotClosedAlarmEnable;
	bool				abDuressAlarmEnable;
	bool                abDoorTimeSection;
	bool				abSensorEnable;
	bool				abFirstEnterEnable;
    bool                abRemoteCheck;
    bool                abRemoteDetail;
    bool                abHandicapTimeOut;
    bool                abCheckCloseSensor;
    bool                abAutoRemoteCheck;
    BYTE                reverse[2];

	CFG_DOOR_OPEN_METHOD	emDoorOpenMethod;			// 开门方式
	int					nUnlockHoldInterval;			// 门锁保持时间(自动关门时间),单位毫秒,[250, 20000]
	int					nCloseTimeout;					// 关门超时时间, 超过阈值未关会触发报警,单位秒,[0,9999];0表示不检测超时
	int					nOpenAlwaysTimeIndex;			// 常开时间段, 值为CFG_ACCESS_TIMESCHEDULE_INFO配置的数组下标
    int                 nCloseAlwaysTimeIndex;          // 常关时间段, 值为CFG_ACCESS_TIMESCHEDULE_INFO配置的数组下标
	int					nHolidayTimeRecoNo;				// 假期内时间段, 值为假日记录集的记录编号,对应NET_RECORDSET_HOLIDAY的nRecNo
	BOOL				bBreakInAlarmEnable;			// 闯入报警使能
	BOOL				bRepeatEnterAlarm;				// 反潜报警使能
	BOOL				bDoorNotClosedAlarmEnable;		// 门未关报警使能
	BOOL				bDuressAlarmEnable;				// 胁迫报警使能
	CFG_DOOROPEN_TIMESECTION_INFO	stuDoorTimeSection[WEEK_DAY_NUM][MAX_DOOR_TIME_SECTION];// 分时段开门信息
	BOOL				bSensorEnable;					// 门磁使能
	CFG_ACCESS_FIRSTENTER_INFO stuFirstEnterInfo;		// 首卡开门信息
    BOOL                bRemoteCheck;                   // 是否需要平台验证, TRUE表示权限通过后必须要平台验证后才能开门, FALSE表示权限验证通过后可立即开门
    CFG_REMOTE_DETAIL_INFO  stuRemoteDetail;            // 与bRemoteCheck配合使用, 如果远端验证未应答, 设定的设备超时时间到后, 是正常开门还是不开门
    CFG_HANDICAP_TIMEOUT_INFO   stuHandicapTimeOut;     // 针对残疾人的开门参数
    BOOL                bCloseCheckSensor;              // 闭锁前是否检测门磁
                                                        // true:则当开锁保持时间计时结束后,只有监测到有效门磁信号时,才可以恢复关闭锁的动作。
                                                        // 反之,如果开锁保持时间已到,但未检测到有效门磁信号,则一直保持开锁状态;
                                                        // false(默认):则直接按照设定的开锁保持时间进行开锁保持和恢复关闭的动作。
    CFG_AUTO_REMOTE_CHECK_INFO  stuAutoRemoteCheck;     // 开门远程验证, 如果开启, 在该时间段内, 设备通过多人组合开门事件通知到平台确认是否可以开门
    BOOL                bLocalControlEnable;            // 本地控制启用, TRUE  启用   FALSE 停用
    BOOL                bRemoteControlEnable;           // 远程控制启用, TRUE  启用   FALSE 停用
    int                 nSensorDelay;                   // 传感器输出延时,超过此时间判断有人, 单位:秒。 0~10
    int                 nHumanStatusSensitivity;        // 人状态变化检测灵敏度,在此时间内,判断有人 单位: 秒。 0~300
    int                 nDetectSensitivity;             // 传感器本身的检测灵敏度  单位:%, 0~100
	BOOL				bLockTongueEnable;				// 锁舌使能
	int                 nABLockRoute;                   // AB互锁路线与AB互锁的index对应;-1代表无效
    int                 nDoorNotClosedReaderAlarmTime;  // 门未关超时读卡器报警, 单位:秒
	BOOL				bEnable;						// 使能项,此通道配置是否启用,TRUE为使能,FALSE为关闭
	char				szSN[CFG_MAX_SN_LEN];			// 无线设备序列号,只获取,不能设置
	int					nCloseDuration;					// 门闭合时间,单位:秒
	int					nUnlockReloadInterval;			// 开锁命令响应间隔时间,单位:毫秒
	CFG_EM_ACCESS_PROTOCOL		  emAccessProtocol;			// 门禁协议
	CFG_EM_SERIAL_PROTOCOL_TYPE	  emProtocolType;			// 串口协议下的具体协议功能,当emAccessProtocol为CFG_EM_ACCESS_PROTOCOL_SERIAL时有效
	CFG_ACCESS_CONTROL_UDP_INFO	  stuAccessControlUdpInfo;  // 门禁udp开锁信息,当emAccessProtocol为CFG_EM_ACCESS_PROTOCOL_REMOTE时有效
	unsigned int				  nEntranceLockChannel;		// 门禁控制器下的子通道,当emAccessProtocol为CFG_EM_ACCESS_PROTOCOL_REMOTE时有效
	BOOL						  bSnapshotUpload;			// 使能项,抓图是否上传,TRUE为抓图上传,FALSE为抓图不上传
	unsigned int				  nSnapUploadPos;			// 抓图上传地址,对应的是NAS配置项的下标,NAS配置为CFG_CMD_NASEX
    BOOL                bCustomPasswordEnable;              // 是否启用个性化密码
    int                 nRepeatEnterTime;                   // 重复进入时间,0~180秒,0表示不启用
    int                 nCardNoConvert;                     // 卡号转换,0:不需要转换,1:字节取反,2:按HIDpro转换
    BOOL                bUnAuthorizedMaliciousSwipEnable;   // 未授权恶意刷卡事件使能
    BOOL                bFakeLockedAlarmEnable;             // 假锁报警使能
	EM_CFG_CARD_STATE	emReadCardState;					// 当前门采集状态
	BOOL				bHelmetEnable;						// 是否检测安全帽
}CFG_ACCESS_EVENT_INFO;


// 门禁刷卡时间段,对此配置,通道号实际表示配置索引
typedef struct tagCFG_ACCESS_TIMESCHEDULE_INFO 
{
	CFG_TIME_SECTION		stuTime[WEEK_DAY_NUM][MAX_DOOR_TIME_SECTION];	// 刷卡时间段
	BOOL					bEnable;										// 时间段使能开关
    char                    szName[CFG_COMMON_STRING_128];                  // 自定义名称
}CFG_ACCESS_TIMESCHEDULE_INFO;

//////////////////////////////////////////////////////////////////////////
// 无线网络连接配置

// 每日流量控制策略
enum EM_CFG_DAY3GFLUXTACTIC
{
	EM_CFG_DAY3GFLUXTACTIC_BYFLUX = 0,	// 按流量
	EM_CFG_DAY3GFLUXTACTIC_BYTIME,		// 按时间
};

// 接入的网络名称
enum EM_CFG_APN
{
	EM_CFG_APN_CTNET = 0,				// 中国电信
	EM_CFG_APN_CMNET,					// 中国移动
	EM_CFG_APN_UNINET,					// 中国联通
};

// 流量报警策略
enum EM_CFG_DAY3GFLUXACTION
{
	EM_CFG_DAY3GFLUXACTION_NOTHING = 0,	// 无动作
	EM_CFG_DAY3GFLUXACTION_3GNETDOWN,	// 3G下线
};

// 流量使用策略
typedef enum tagEM_CFG_3GFLUXTACTIC
{
	EM_3GFLUXTACTIC_UNKNOWN = -1,		// 未知类型
	EM_3GFLUXTACTIC_BYFLUX,				// 按月包流量
	EM_3GFLUXTACTIC_BYTIME,				// 按月包时长
}EM_CFG_3GFLUXTACTIC;

// 鉴权模式
typedef enum tagEM_CFG_AUTHMODE
{
	EM_AUTHMODE_NO,						// 不需要鉴权
	EM_AUTHMODE_PAP,					// PAP鉴权
	EM_AUTHMODE_CHAP,					// CHAP鉴权
}EM_CFG_AUTHMODE;

// 工作模式选择
typedef enum tagEM_CFG_WORKMODE
{
	EM_WORKMODE_UNKNOWN = -1,
	EM_WORKMODE_CDMA1X,					// "CDMA1x"
	EM_WORKMODE_EVDO,					// "EVDO"
	EM_WORKMODE_TDSCDMA,				// "TD-SCDMA"
	EM_WORKMODE_WCDMA,					// "WCDMA"
	EM_WORKMODE_EDGE,					// "EDGE"
	EM_WORKMODE_TDDLTE,					// "TDD-LTE"
	EM_WORKMODE_FDDLTE,					// "FDD-LTE"
}EM_CFG_WORKMODE;

typedef struct tagCFG_WIRELESS_INFO
{
	BOOL			        bEnable;					                // 2G网络使能
	int				        nKeepAlive;						            // 保活时间, 单位为秒,0表示一直连接,不自动断开
	EM_CFG_APN		        emAPN;							            // 接入的2G网络名称
	char			        szUseName[MAX_USERNAME_LEN];	            // 用户名
	char			        szPassword[MAX_PASSWORD_LEN];	            // 密码
	EM_CFG_DAY3GFLUXTACTIC	emDay3GFluxTactic;		                    // 每日流量控制策略
	DWORD			        dwDay3GFluxUp;					            // 每日流量使用上限, MB或者分钟
	DWORD			        dwDay3GFluxUse;					            // 当日的已用流量, MB或者分钟
    EM_CFG_DAY3GFLUXACTION	emDay3GFluxAction;		                    // 流量报警策略
	CFG_TIME_SECTION        stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];// 拨号时间段
	EM_CFG_AUTHMODE			emAuthMode;									// 鉴权模式
	char					szAPNName[MAX_CFG_APN_NAME];				// 接入网络名
	unsigned int			n3GFlux;									// 实际使用流量, [0,65535]MB或者分钟
	EM_CFG_3GFLUXTACTIC		em3GFluxTactic;								// 流量使用策略
	unsigned int			n3GFluxUp;									// 流量使用上限
	EM_CFG_WORKMODE			emWorkMode;									// 工作模式选择
	char					szDailNumber[MAX_CFG_DAIL_NUMBER];			// 拨号号码
	BOOL					bActivate;									// 是否已经被语音或短信激活
}CFG_WIRELESS_INFO;

#define MAX_CONNECTION_TYPE_LEN		32	// 连接方式的名字长度

// 登报时间类型
enum emCFG_REPORTWEEKDAY
{
	emReportWeekDay_DoNotReport = -1,	// 不登报
	emReportWeekDay_Sunday,				// 每周日定时登报
	emReportWeekDay_Monday,				// 每周一定时登报
	emReportWeekDay_Tuesday,			// 每周二定时登报
	emReportWeekDay_Wednesday,			// 每周三定时登报
	emReportWeekDay_Thursday,			// 每周四定时登报
	emReportWeekDay_Friday,				// 每周五定时登报
	emReportWeekDay_Saturday,			// 每周六定时登报
	emReportWeekDay_Everyday,			// 每天定时登报
};

// 报警服务器的配置
typedef struct tagCFG_ALARMSERVER_INFO
{
	BOOL			bEnable;								// 使能
	char			szProtocol[MAX_PROTOCOL_NAME_LEN];		// 协议类型, 目前支持"DAHUA"
	char			szConnection[MAX_CONNECTION_TYPE_LEN];	// 连接方式
	char			szAddress[MAX_ADDRESS_LEN];				// IP地址或网络名
	int				nPort;									// 端口号
	char			szUserName[MAX_USERNAME_LEN];			// 用户名
	char			szPsw[MAX_PASSWORD_LEN];				// 密码
	emCFG_REPORTWEEKDAY	emReportWeekDay;					// 登报日
	int				nHour;									// 登报时间点的时
	int				nMinute;								// 登报时间点的分
	int				nSecond;								// 登报时间点的秒
}CFG_ALARMSERVER_INFO;

#define MAX_ALARMSERVER_NUM		8

// 报警主机使用的报警中心及备用中心的配置
typedef struct tagCFG_ALARMCENTER_INFO
{
	CFG_ALARMSERVER_INFO	stuMainServer;						// 报警主机使用的报警中心服务器
	int						nBackupAlarmServerNum;				// 备用报警中心服务器的数目
	CFG_ALARMSERVER_INFO	stuBackupAlarmServer[MAX_ALARMSERVER_NUM];	// 备用报警中心服务器的配置
}CFG_ALARMCENTER_INFO;

//////////////////////////////////////////////////////////////////////////
// 布防、撤防配置

#define	MAX_SCENE_COUNT	8		//	最大情景模式个数

// 情景模式
typedef enum tagemCFG_SCENE_MODE
{	
	emCFG_SCENE_MODE_UNKNOWN,			// 未知模式
	emCFG_SCENE_MODE_OUTDOOR,			// 外出模式
	emCFG_SCENE_MODE_INDOOR,			// 在家模式
    emCFG_SCENE_MODE_WHOLE ,            // 全局模式
    emCFG_SCENE_MODE_RIGHTNOW,          // 立即模式
    emCFG_SCENE_MODE_AUTO,              // 自动模式
    emCFG_SCENE_MODE_FORCE,             // 强制模式
	emCFG_SCENE_MODE_SLEEPING,			// 就寝模式
	emCFG_SCENE_MODE_CUSTOM,			// 自定义模式
}emCFG_SCENE_MODE;

typedef struct tagCFG_SCENE_INFO
{
	emCFG_SCENE_MODE emName;							// 模式名
	int				 nAlarmInChannelsCount;				// 报警通道个数
	int				 nRetAlarmInChannelsCount;			// 实际返回的报警通道个数
	int*			 pnAlarmInChannels;					// 启用的报警输入通道号列表,需用户分配内存,大小为sizeof(int)*nAlarmInChannelsCount
}CFG_SCENE_INFO;

// 布防撤防配置, 对应命令(CFG_CMD_COMMGLOBAL)
// 产品型号不为AS5008时, 启用bSceneEnable和emCurrentScene, 不启用nSceneCount和stuScense[MAX_SCENE_COUNT]
// 产品型号为AS5008时, 不启用bSceneEnable和emCurrentScene, 启用nSceneCount和stuScense[MAX_SCENE_COUNT]
typedef struct tagCFG_COMMGLOBAL_INFO
{
    BOOL                bEnable;                            // TRUE: 布防; FALSE: 撤防; 作用于整台设备,不区分通道
    BOOL                bSceneEnable;                       // 是否启用情景模式
    emCFG_SCENE_MODE    emCurrentScene;                     // 当前选择的情景模式
    int                 nSceneCount;                        // 情景模式有效个数
    CFG_SCENE_INFO      stuScense[MAX_SCENE_COUNT];         // 情景模式定义,每个模式对应一个配置
}CFG_COMMGLOBAL_INFO;

#define MAX_ALARM_LIMITS_NUM    8                                   // 报警限值最大个数

// 模拟量报警输入通道配置
typedef struct tagCFG_ANALOGALARM_INFO	// =>CFG_CMD_ANALOGALARM
{
	BOOL				bEnable;									// 使能开关(整台设备处于布防且该通道非使能时为旁路)
	char				szChnName[MAX_CHANNELNAME_LEN];				// 报警通道名称
	float				fUpperLimit;								// 量程上限
	float				fLowerLimit;								// 量程下限
	int					nSensitivity;								// 灵敏度, 单位:百分比
	float				fCompensation;								// 补偿值, 根据传感器类型而定
	float				fLimit1;									// 报警限1, 不建议使用, 建议使用fAlarmLimits字段
	float				fLimit2;									// 报警限2, 不建议使用, 建议使用fAlarmLimits字段
	float				fLimit3;									// 报警限3, 不建议使用, 建议使用fAlarmLimits字段
	float				fLimit4;									// 报警限4, 不建议使用, 建议使用fAlarmLimits字段
	BYTE				byMode;										// 报警模式, 掩码表示, 可能如下值1111、1110、1100、1000、0000
																	// 1表示超过报警阈值,0表示低于报警阈值
																	// 模式从左到右分别对应4个报警阈值, 依次递增
																	// 例:1110表示超过第1、2、3个报警阈值, 并低于第4个报警阈值
	BYTE				byReserve[3];								// 保留字节
	CFG_ALARM_MSG_HANDLE	stuEventHandler;						// 报警联动
	CFG_TIME_SECTION	stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];// 事件响应时间段,时间段获取和设置以此成员为准,忽略 stuEventHandler 中的 stuTimeSection
	EM_SENSE_METHOD		emSense;									// 传感器方式
	char				szSensorType[CFG_COMMON_STRING_64];			// 传感器类型
    int                 nSlot;                                      // 根地址, 0表示本地通道, 1表示连接在第一个串口上的扩展通道, 2、3...以此类推, -1表示无效
	int                 nLevel1;                                    // 第一级级联地址, 表示连接在第nSlot串口上的第nLevel1个探测器或仪表, 从0开始, -1表示无效
    bool                abLevel2;                                   // 表示nLevel2字段是否存在
    int                 nLevel2;                                    // 第二级级联地址, 表示连接在第nLevel1个的仪表上的探测器序号, 从0开始
    int                 nAlamrLimits;                               // 有效的报警限值个数
    float               fAlarmLimits[MAX_ALARM_LIMITS_NUM];         // 报警限值
    int                 nNotifyInterval;                            // 模拟量上传周期, 单位: 秒
    int                 nAlarmInterval;                             // 触发上下限后的上传周期, 单位: 秒
}CFG_ANALOGALARM_INFO;

// 输出有效模式
typedef enum tagEM_ALARMOUT_POLE
{
   EM_ALARMOUT_POLE_UNKNOWN,                                        // 未知
   EM_ALARMOUT_POLE_LOW,                                            // 低电平有效
   EM_ALARMOUT_POLE_HIGH,                                           // 高电平有效
} EM_ALARMOUT_POLE;

// 报警输出通道的状态的配置
typedef struct tagCFG_ALARMOUT_INFO		// =>CFG_CMD_ALARMOUT
{
	int					nChannelID;									// 报警通道号(0开始)
	char				szChnName[MAX_CHANNELNAME_LEN];				// 报警通道名称
	char				szOutputType[MAX_NAME_LEN];					// 输出类型, 用户自定义
	int					nOutputMode;								// 输出模式, 0-自动报警, 1-强制报警, 2-关闭报警, 3- 开关模式
    int                 nPulseDelay;                                // 脉冲模式输出时间, 单位为秒(0-255秒)
    int                 nSlot;                                      // 根地址, 0表示本地通道, 1表示连接在第一个串口上的扩展通道, 2、3...以此类推, -1表示无效
    int                 nLevel1;                                    // 第一级级联地址, 表示连接在第nSlot串口上的第nLevel1个探测器或仪表, 从0开始, -1表示无效
    bool                abLevel2;                                   // 表示nLevel2字段是否存在
    int                 nLevel2;                                    // 第二级级联地址, 表示连接在第nLevel1个的仪表上的探测器序号, 从0开始
    EM_ALARMOUT_POLE    emPole;                                     // 输出有效模式
}CFG_ALARMOUT_INFO;


// 时区定义(NTP)
typedef enum __EM_CFG_TIME_ZONE_TYPE
{
	EM_CFG_TIME_ZONE_0,								// {0, 0*3600,"GMT+00:00"}
	EM_CFG_TIME_ZONE_1,								// {1, 1*3600,"GMT+01:00"}
	EM_CFG_TIME_ZONE_2,								// {2, 2*3600,"GMT+02:00"}
	EM_CFG_TIME_ZONE_3,								// {3, 3*3600,"GMT+03:00"}
	EM_CFG_TIME_ZONE_4,								// {4, 3*3600+1800,"GMT+03:30"}
	EM_CFG_TIME_ZONE_5,								// {5, 4*3600,"GMT+04:00"}
	EM_CFG_TIME_ZONE_6,								// {6, 4*3600+1800,"GMT+04:30"}
	EM_CFG_TIME_ZONE_7,								// {7, 5*3600,"GMT+05:00"}
	EM_CFG_TIME_ZONE_8,								// {8, 5*3600+1800,"GMT+05:30"}
	EM_CFG_TIME_ZONE_9,								// {9, 5*3600+1800+900,"GMT+05:45"}
	EM_CFG_TIME_ZONE_10,							// {10, 6*3600,"GMT+06:00"}
	EM_CFG_TIME_ZONE_11,							// {11, 6*3600+1800,"GMT+06:30"}
	EM_CFG_TIME_ZONE_12,							// {12, 7*3600,"GMT+07:00"}
	EM_CFG_TIME_ZONE_13,							// {13, 8*3600,"GMT+08:00"}
	EM_CFG_TIME_ZONE_14,							// {14, 9*3600,"GMT+09:00"}
	EM_CFG_TIME_ZONE_15,							// {15, 9*3600+1800,"GMT+09:30"}
	EM_CFG_TIME_ZONE_16,							// {16, 10*3600,"GMT+10:00"}
	EM_CFG_TIME_ZONE_17,							// {17, 11*3600,"GMT+11:00"}
	EM_CFG_TIME_ZONE_18,							// {18, 12*3600,"GMT+12:00"}
	EM_CFG_TIME_ZONE_19,							// {19, 13*3600,"GMT+13:00"}
	EM_CFG_TIME_ZONE_20,							// {20, -1*3600,"GMT-01:00"}
	EM_CFG_TIME_ZONE_21,							// {21, -2*3600,"GMT-02:00"}
	EM_CFG_TIME_ZONE_22,							// {22, -3*3600,"GMT-03:00"}
	EM_CFG_TIME_ZONE_23,							// {23, -3*3600-1800,"GMT-03:30"}
	EM_CFG_TIME_ZONE_24,							// {24, -4*3600,"GMT-04:00"}
	EM_CFG_TIME_ZONE_25,							// {25, -5*3600,"GMT-05:00"}
	EM_CFG_TIME_ZONE_26,							// {26, -6*3600,"GMT-06:00"}
	EM_CFG_TIME_ZONE_27,							// {27, -7*3600,"GMT-07:00"}
	EM_CFG_TIME_ZONE_28,							// {28, -8*3600,"GMT-08:00"}
	EM_CFG_TIME_ZONE_29,							// {29, -9*3600,"GMT-09:00"}
	EM_CFG_TIME_ZONE_30,							// {30, -10*3600,"GMT-10:00"}
	EM_CFG_TIME_ZONE_31,							// {31, -11*3600,"GMT-11:00"}
	EM_CFG_TIME_ZONE_32,							// {32, -12*3600,"GMT-12:00"}
    EM_CFG_TIME_ZONE_33,							// {33, -4*3600-1800,"GMT-4:30"}
    EM_CFG_TIME_ZONE_34,							// {34, 10.5*3600,"GMT+10:30"}
    EM_CFG_TIME_ZONE_35,							// {35, 14*3600, "GMT+14:00"}
    EM_CFG_TIME_ZONE_36,							// {36, -9*3600-1800,"GMT-09:30"}
    EM_CFG_TIME_ZONE_37,							// {37, 8*3600+1800,"GMT+08:30"}
    EM_CFG_TIME_ZONE_38,							// {38, 8*3600+2700,"GMT+08:45"}
    EM_CFG_TIME_ZONE_39,							// {39, 12*3600+2700,"GMT+12:45"}
}EM_CFG_TIME_ZONE_TYPE;

// NTP服务器
typedef struct tagCFG_NTP_SERVER
{
    BOOL                bEnable;
    char				szAddress[MAX_ADDRESS_LEN];					// IP地址或网络名
	int					nPort;										// 端口号
}CFG_NTP_SERVER;

// 时间同步服务器配置
typedef struct tagCFG_NTP_INFO
{
	BOOL				bEnable;									// 使能开关
	char				szAddress[MAX_ADDRESS_LEN];					// IP地址或网络名
	int					nPort;										// 端口号
	int					nUpdatePeriod;								// 更新周期,单位为分钟
	EM_CFG_TIME_ZONE_TYPE emTimeZoneType;							// 时区
	char				szTimeZoneDesc[MAX_NAME_LEN];				// 时区描述
    int                 nSandbyServerNum;                           // 实际备用NTP服务器个数
    CFG_NTP_SERVER      stuStandbyServer[MAX_NTP_SERVER];           // 备选NTP服务器地址
    int                 nTolerance;                                 // (机器人使用)表示设置的时间和当前时间的容差,单位为秒,如果设置的时间和当前的时间在容差范围内,则不更新当前时间。0 表示每次都修改。
}CFG_NTP_INFO;

// 警号配置
typedef struct tagCFG_ALARMBELL_INFO
{
    int                 nPersistentTime;                            // 警号输出持续时间, 单位: 分钟(0-99), 0 表示响一下就停止
}CFG_ALARMBELL_INFO;

#define MAX_MSG_NUMBER_LEN	32				// 短信号码的最大长度
#define MAX_RECEIVER_NUM	100				// 接收短信用户的最大数目

// 短信类型
typedef enum tagEM_MSG_TYPE
{
	EM_MSG_UNKNOWN = 0,												// 未知类型
	EM_MSG_SMS,														// SMS短信
	EM_MSG_MMS,														// MMS彩信
}EM_MSG_TYPE;

// 系统事件触发彩信/短信发送的配置
typedef struct tagCFG_EVENT_MSG_SENDING_INFO
{
	BOOL				bEnable;									// 使能开关
	EM_MSG_TYPE			emMsgType;									// 发送的信息的类型
	char				szTitle[MAX_NAME_LEN];						// 标题, 也就是短信/彩信的第一行文字
	DWORD				dwReceiverCount;							// 收信人号码的个数
	char				szReceiverNumbersList[MAX_RECEIVER_NUM][MAX_MSG_NUMBER_LEN];// 收信人号码
}CFG_EVENT_MSG_SENDING_INFO;

// 移动相关业务配置
typedef struct tagCFG_MOBILE_INFO
{
	CFG_EVENT_MSG_SENDING_INFO	stuEventMsgSending;					// 系统时间触发的发送短信/彩信的配置
}CFG_MOBILE_INFO;

#define MAX_CONTACT_NUM		100				// 联系人最大数目

// 电话语音提醒配置
typedef struct tagCFG_PHONEEVENTNOTIFY_INFO
{
	BOOL				bEnable;									// 使能开关
	DWORD				dwContactCount;								// 呼叫号码的个数
	char				szContactNumbersList[MAX_CONTACT_NUM][MAX_MSG_NUMBER_LEN];// 呼叫号码列表
}CFG_PHONEEVENTNOTIFY_INFO;

// 电话报警中心配置
enum CFG_EM_SIGNALTRANSMIT_MODE
{
	CFG_EM_SIGNALTRANSMIT_ERROR = 0,								// 未知模式
	CFG_EM_SIGNALTRANSMIT_DTMF_5S,									// "DTMF 5/S" - DTMF模式慢拨
	CFG_EM_SIGNALTRANSMIT_DTMF_10S,									// "DTMF 10/S" - DTMF模式快拨
};
enum CFG_EM_PSTN_PROTOCOL_TYPE
{
	CFG_EM_PSTN_PROTOCOL_ERROR = 0,									// 未知类型
	CFG_EM_PSTN_PROTOCOL_CID,										// "CID" - Contact ID Protocol
};
typedef struct tagCFG_PSTN_ALARM_SERVER_INFO
{
	char							szName[MAX_NAME_LEN];						// 电话报警中心名称
	char							szNumber[MAX_PHONE_NUMBER_LEN];				// 电话报警中心接收机号码
																				// "057188888888PPP888",格式为[号码][停顿时间][分机号码],其中P表示停顿2秒。
	CFG_EM_PSTN_PROTOCOL_TYPE		emProtocol;									// 协议类型,
	CFG_EM_SIGNALTRANSMIT_MODE		emMode;										// 信号传输模式																															
	int								nTryCount;									// 拨号尝试次数
	int								nDelay;										// 拨号延时,单位:秒
	char							szAccount[MAX_PHONE_NUMBER_LEN];			// 用户号码
}CFG_PSTN_ALARM_SERVER_INFO;

// 事件上报优先级
typedef enum tagCFG_EM_PSTN_ALARM_CENTER_RULE
{
	CFG_EM_PSTN_ALARM_CENTER_UNKNOWN,		// 未知
	CFG_EM_PSTN_ALARM_CENTER_NONE,			// 不上报
	CFG_EM_PSTN_ALARM_CENTER_REGULARTEL,	// 电话中心1
	CFG_EM_PSTN_ALARM_CENTER_SPLITTEL,		// 先电话中心1,失败电话中心2
	CFG_EM_PSTN_ALARM_CENTER_DOUBLETEL,		// 电话中心1、2同时拨打
	CFG_EM_PSTN_ALARM_CENTER_REGULARIP,		// 网路中心1
	CFG_EM_PSTN_ALARM_CENTER_SPLITIP,		// 先网络中心1,失败网络中心2
	CFG_EM_PSTN_ALARM_CENTER_DOUBLEIP,		// 网络中心1、2同时上报
	CFG_EM_PSTN_ALARM_CENTER_DOUBLEMIX,		// 网络中心1和电话中心1
	CFG_EM_PSTN_ALARM_CENTER_IPTOTEL,		// 先网络中心1,失败电话中心1
	CFG_EM_PSTN_ALARM_CENTER_TELTOIP		// 先电话中心,失败网络中心
}CFG_EM_PSTN_ALARM_CENTER_RULE;
typedef struct tagCFG_PSTN_ALARM_CENTER_INFO
{
	BOOL						bEnable;								// 使能开关
	int							nServerCount;							// 电话报警服务器个数
	CFG_PSTN_ALARM_SERVER_INFO	stuPSTNAlarmServer[MAX_PSTN_SERVER_NUM];		// 电话报警服务器
	CFG_EM_PSTN_ALARM_CENTER_RULE	emRule;								// 事件上报优先级
}CFG_PSTN_ALARM_CENTER_INFO;

// 音量输入配置
typedef struct tagCFG_AUDIO_INPUT_VOLUME
{
	int				nAudioInputCount;									// 实际音频输入通道个数
	char			szAudioInputVolume[MAX_AUDIO_INPUT_NUM];			// 每个元素对应一个音频输入通道的音量值,范围[0, 100]
}CFG_AUDIO_INPUT_VOLUME;


// 音量输出配置
typedef struct tagCFG_AUDIO_OUTPUT_VOLUME
{
	int				nAudioOutputCount;									// 实际音频输出通道个数
	char			szAudioOutputVolume[MAX_AUDIO_OUTPUT_NUM];			// 每个元素对应一个音频输出通道的音量值,范围[0, 100]
}CFG_AUDIO_OUTPUT_VOLUME;

//指示灯控制配置
typedef struct tagCFG_LIGHT_GLOBAL
{
	int				nLightGlobalCount;									// 指示灯数量
	BOOL			bLightEnable[MAX_LIGHT_GLOBAL_NUM];					// 指示灯开关状态数组
}CFG_LIGHT_GLOBAL;

// 混合音频音量配置
typedef struct tagCFG_AUDIO_MIX_VOLUME
{
	int				nAudioMixCount;									// 实际混合音频通道个数
	char			szAudioMixVolume[MAX_AUDIO_MIX_NUM];			// 每个元素对应一个专用的音频混音通道的音量值,范围[0, 100]
}CFG_AUDIO_MIX_VOLUME;



// 报警键盘配置
typedef struct tagCFG_ALARMKEYBOARD_INFO
{
	BOOL			bEnable;								// 使能开关
	char			szProtocolName[MAX_PROTOCOL_NAME_LEN];	// 协议名称
	int				nPort;									// 使用的串口端口号
	int				nAddress;								// 设备地址,如果串口上挂了多个串口设备,通过这个地址区分
	CFG_COMM_PROP	stuCommAttr;							// 串口属性
}CFG_ALARMKEYBOARD_INFO;

// 获取文件管理能力
typedef struct tagCFG_CAP_FILEMANAGER
{
	int			nMaxUploadFileSize;		// 最大的上传文件的大小, 单位: 字节
}CFG_CAP_FILEMANAGER;

// 录像延时配置信息
typedef struct tagCFG_RECORD_LATCH
{
	BOOL			bEnable;				// 表示有无此项,true表示有此项,false表示无此项
	int 			nRecordLatchMin;		// 录像延时最小值
	int				nRecordLatchMax;		// 录像延时最大值
} CFG_RECORD_LATCH;

// 报警输出延时配置信息
typedef struct tagCFG_ALARMOUT_LATCH
{
	BOOL			bEnable;				// 表示有无此项,true表示有此项,false表示无此项
	int				nAlarmOutLatchMin;		// 报警输出延时最小值
	int				nAlarmOutLatchMax;		// 报警输出延时最大值
} CFG_ALARMOUT_LATCH;

// 去抖动配置信息
typedef struct tagCFG_DEJITTER_RANGE
{
	BOOL			bEnable;				// 表示有无此项,true表示有此项,false表示无此项
	int				nDejitterMin;			// 去抖动最小允许值
	int				nDejitterMax;			// 去抖动最大允许值
} CFG_DEJITTER_RANGE;

// 获取设备报警联动能力
typedef struct tagCFG_CAP_EVENTMANAGER_INFO
{
	BOOL				bTimeSectionEnable;                               // 是否支持时间事件响应
	BOOL				bRecordEnable;                                    // 是否支持录像
	BOOL				bAlarmOutEnable;                                  // 是否支持报警输出
	BOOL				bPtzLinkEnable;                                   // 是否支持云台联动
	BOOL				bSnapshotEnable;                                  // 是否支持快照
	BOOL				bMailEnable;                                      // 是否支持发送邮件
	BOOL				bBeepEnable;                                      // 是否支持蜂鸣
	BOOL				bDejitterEnable;                                  // 是否支持去抖动
	BOOL				bTipEnable;										  // 是否支持本地消息框提示
	BOOL				bMonitorTourEnable;								  // 是否支持轮询联动配置
	BOOL				bMMSEnable;										  // 是否支持短消息
	BOOL				bSupportAlarmBell;								  // 是否支持警号输出
	BOOL				bSupportAccessControl;							  // 是否支持门禁控制
	BOOL				bSupportAlarmServer;							  // 是否支持上传至报警服务器
	BOOL				bSupportPtzLinkDelay;							  // 是否支持云台联动延迟
	BOOL				bSupportPSTNAlarmServer;						  // 是否支持上传至电话报警中心
    BOOL                bVoiceEnable;                                     // 是否支持语音播报提示
	BOOL				bLogEnable;										  // 是否支持联动日志
	CFG_RECORD_LATCH	stuRecordLatch;									  // 录像延时信息
	CFG_ALARMOUT_LATCH	stuAlarmOutLatch;								  // 报警输出延时信息
	CFG_DEJITTER_RANGE	stuDejitterRange;								  // 去抖动信息
	DWORD				nSupportDisableLinkage;							  // 支持哪些联动项一键撤防
																		  // bit0表示支持撤防蜂鸣
																		  // bit1表示支持撤防本地提示
																		  // bit2表示支持撤防报警输出
																		  // bit3表示支持撤防邮件
					   													  // bit4表示支持撤防报警上传
                                                                          // bit5表示支持撤防声音输出
                                                                          // bit6表示支持撤防白光灯输出
	DWORD				nSupportDisableLinkageTimeSection;				  // 支持周期撤防
	                                                                      // bit0表示支持周期撤防
}CFG_CAP_EVENTMANAGER_INFO;

// 电源故障配置
typedef struct tagCFG_POWERFAULT_ONE
{
	BOOL			bEnable;									// 使能开关
	CFG_ALARM_MSG_HANDLE stuEventHandler;						// 报警联动
    int             nDetectionPeriod;                           // 电源故障检测周期 单位秒
    BOOL            bEncodeBlend;                               // 是否叠加OSD报警图标    
    CFG_RECT        stuPosition;                                // 位置
}CFG_POWERFAULT_ONE;

typedef struct tagCFG_POWERFAULT_INFO
{
	int				nPowerCount;								// 电源个数
	CFG_POWERFAULT_ONE stuPowerFault[MAX_POWER_NUM];			// 报警联动
}CFG_POWERFAULT_INFO;

// 机箱入侵报警(防拆报警)配置
typedef struct tagCFG_CHASSISINTRUSION_INFO
{
	BOOL			bEnable;									// 使能开关
	CFG_ALARM_MSG_HANDLE stuEventHandler;						// 报警联动
}CFG_CHASSISINTRUSION_INFO;

// 紧急事件配置
typedef struct tagCFG_URGENCY_INFO 
{
	BOOL			bEnable;									// 使能开关
	CFG_ALARM_MSG_HANDLE stuEventHandler;						// 报警联动
}CFG_URGENCY_INFO;

/************************************************************************
** 扩展报警模块
***********************************************************************/
// 扩展模块报警输入配置
typedef struct tagCFG_EXALARMINPUT_INFO
{
	CFG_ALARMIN_INFO		stuAlarmIn;						// 报警输入参数,详见 CFG_ALARMIN_INFO
	
}CFG_EXALARMINPUT_INFO;

// 扩展模块报警输出配置
typedef struct tagCFG_EXALARMOUTPUT_INFO
{
	char		szChnName[MAX_CHANNELNAME_LEN];				// 报警通道名称
	int			nOutputMode;								// 输出模式, 0-自动报警, 1-强制报警, 2-关闭报警
}CFG_EXALARMOUTPUT_INFO;

// 扩展模块报警盒配置
typedef struct tagCFG_EXALARMBOX_INFO
{
	BOOL			bEnable;								// 使能开关
	char			szProtocolName[MAX_PROTOCOL_NAME_LEN];	// 协议名称
	int				nPort;									// 使用的串口端口号
	int				nAddress;								// 设备地址
	CFG_COMM_PROP	stuCommAttr;							// 串口属性
}CFG_EXALARMBOX_INFO;

// 扩展报警盒协议类型
enum CFG_EM_EXALARM_PROTOCOL_TYPE
{
	CFG_EM_EXALARM_PROTOCOL_ERROR,								// 未知类型
	CFG_EM_EXALARM_PROTOCOL_DH_ALARMBOX,						// DH_AlarmBox 大华报警盒协议
};


// 扩展模块报警能力集
typedef struct tagCFG_CAP_EXALARM_INFO
{	
	int					 nAlarmInCount;											// 扩展报警模块输入个数
	int					 nAlarmOutCount;										// 扩展报警模块速出个数
	int				 	 nMaxDelay;												// 延时防区的最大延时时间,单位为秒,只有支持延时防区时此字段才有效。
	int					 nDefenceAreaTypeNum;									// 防区类型种类数,为0表示无此字段时报警输入不作为防区使用。
	EM_CFG_DEFENCEAREATYPE	emDefenceAreaType[MAX_ALARM_DEFENCE_TYPE_NUM];		// 支持防区类型 
	int					 nExAlarmChannelNum;									// 扩展模块报警通道数,为了保持兼容性,此为0时表示每个通道支持所有类型的传感器
	CFG_EXALARM_SENSE_METHOD stuExAlarmChannel[MAX_EXALARM_CHANNEL_NUM];		// 报警通道集合
	int					 nProtocolNum;											// 支持的协议种类
	CFG_EM_EXALARM_PROTOCOL_TYPE emProtocolType[MAX_EXALARMBOX_PROTOCOL_NUM];	// 扩展报警模块报警盒支持的协议类型	
}CAP_EXALARM_INFO;

// 扩展模块报警盒能力集
typedef struct tagCFG_CAP_EXALARMBOX_INFO 
{
	int nAlarmInCount; // 扩展报警模块输入个数
	int nAlarmOutCount; // 扩展报警模块输出个数 
}CFG_CAP_EXALARMBOX_INFO; 

// 查询记录能力集能力集
typedef struct tagCFG_CAP_RECORDFINDER_INFO 
{
	int nMaxPageSize; // 最大分页条数 
}CFG_CAP_RECORDFINDER_INFO;


// 传感器采样 ==>CFG_CMD_SENSORSAMPLING
typedef struct  tagCFG_SENSORSAMPLING_INFO 
{
	int			nDetectionPeriod;			// 检查周期, 单位:秒,按检测周期实时上传温度状态
	int			nStorageItem;				// 存储信息量, 单位:条数,设备本地以写文件方式,可导出(0~5000)
}CFG_SENSORSAMPLING_INFO;

// 环网 ==>CFG_CMD_STP
typedef struct tagCFG_STP_INFO 
{
	BOOL			bEnable;				// 使能
}CFG_STP_INFO;

#define DH_MAX_ZONE_NUM					(256)	// 最大防区数目
#define DH_MAX_PUBLIC_SUBSYSTEM_NUM		(256)    // 最大公共子系统数目

typedef struct tagCFG_ALARM_SUBSYSTEM_MSG_HANDLE
{
    BOOL          bAlarmOutEnable;             // 报警输出使能
    BOOL          bAlarmBellEnable;            // 警号输出使能
    int           nAlarmOutChannelNum;         // 报警输出通道号个数
    int           nAlarmOutChannels[256];      // 报警输出通道号列表
}CFG_ALARM_SUBSYSTEM_MSG_HANDLE;

// 报警子系统配置 ==>CFG_CMD_ALARM_SUBSYSTEM
typedef struct tagCFG_ALARM_SUBSYSTEM_INFO 
{
	char		szName[CFG_COMMON_STRING_128];	// 名称
	int			nZoneNum;						// 本地防区数目
	int			anZone[DH_MAX_ZONE_NUM];		// 本地防区号
	int			nExZoneNum;						// 扩展防区数目
	int			anExZone[DH_MAX_ZONE_NUM];		// 扩展防区号
	int			nDisableDelay;					// 延时撤防时间(进入延时), 单位为秒
	int			nEnableDelay;					// 延时布防时间(退出延时), 单位为秒
	BOOL		bIsPublic;						// 是否为公共子系统
	int			nPublicSubSystem;				// 公共所属的子系统数目
	int			anPublicSubSystem[DH_MAX_PUBLIC_SUBSYSTEM_NUM];// 公共所属的关联子系统
    CFG_ALARM_SUBSYSTEM_MSG_HANDLE stuEventHandler;       // 报警联动
}CFG_ALARM_SUBSYSTEM_INFO;

// 电池电压低配置 ==>CFG_CMD_BATTERY_LOW_POWER
typedef struct tagCFG_BATTERY_LOW_POWER_INFO 
{
	BOOL		bEnable;						// 使能
	CFG_ALARM_MSG_HANDLE stuEventHandler;		// 报警联动
}CFG_BATTERY_LOW_POWER_INFO;


// 抓图通道联动外设配置 ==>CFG_CMD_SNAPLINKAGE
typedef struct tagCFG_SNAPLINKAGE_INFO 
{
    int         nChannelNum;                    // 视频通道关联的模拟量通道数目
    int         anAnalogAlarm[DH_MAX_ZONE_NUM]; // 视频通道关联的模量通道号
}CFG_SNAPLINKAGE_INFO;

// 视频输入配置
typedef struct tagCFG_AUDIO_INPUT 
{
    char        szAudioSource[CFG_COMMON_STRING_256];   // 输入音频源. 如果音频通道的输入是由多路合成,用|分割.
                                                        // 例:"Mic|LineIn|Remote" 表示此音频通道由Mic、LineIn和远程通道的音频输入构成.
                                                        // "Coaxial" 同轴口音频
                                                        // "BNC" 本地BNC口音频
                                                        // "HDCVI_BNC" 远程HDCVI设备音频
                                                        // "LineIn" 线性输入
                                                        // "Mic" 麦克风输入
                                                        // "MicOut" 麦克输出
                                                        // "Remote" 远程通道(仅对画中画通道有意义,表示画中画主画面为远程通道时,将当前远程通道的音频作为音频输入)
}CFG_AUDIO_INPUT;

// 邮件上报设备状况
typedef struct tagCFG_HEALTHREPORT_INFO 
{
    BOOL			bEnable;				// 使能
    int             nInterval;              // 邮件发送间隔,单位为秒,范围:0~3600
}CFG_HEALTHREPORT_INFO;

// 邮件发送配置 ==>CFG_CMD_EMAIL
typedef struct tagCFG_EMAIL_INFO 
{
    BOOL			bEnable;				                            // 使能
    BOOL            bSslEnable;                                         // 是否需要SSL加密
    BOOL            bTlsEnable;                                         // 是否需要TLS加密
    char            szAddress[MAX_ADDRESS_LEN];                         // SMTP服务器IP地址或网络名
    int             nPort;                                              // 端口号
    char            szUserName[MAX_USERNAME_LEN];                       // 帐户名
    char            szPassword[MAX_PASSWORD_LEN];                       // 密码
    BOOL            bAnonymous;                                         // 匿名邮件,true匿名,false非匿名
    char            szSendAddress[MAX_ADDRESS_LEN];                     // 发件人地址
    int             nRetReciversNum;                                    // 有效收件人数
    char            szReceivers[MAX_RECEIVER_NUM][MAX_ADDRESS_LEN];     // 收件人列表
    char            szTitle[MAX_MAILTITLE_LEN];                         // 邮件标题关键字
    BOOL            bOnlyAttachment;                                    // 事件联动邮件,只发送带附件的邮件
    BOOL            bAttachEnable;                                      // 邮件附件使能
    int             nSendInterv;                                        // 同一事件的最小邮件发送间隔,单位为秒
    
    bool            abHealthReport;                                     // 能力,为true时,stuHealthReport有效
    BYTE            byReserved[3];
    CFG_HEALTHREPORT_INFO   stuHealthReport;                            // 邮件上报设备状况
	BOOL				bAuthentication;								// 是否开启邮件鉴权,TRUE表示需要有用户名和密码先登入到SMTP服务器;FALSE表示不需要用户名和密码,直接通过SMTP服务器转发发送邮件
}CFG_EMAIL_INFO;

#define MAX_TRANSFER_SERVER_NUM          10                             // 最大传输服务器个数
// 传输离线文件配置
typedef struct tagTRAFFIC_TRANSFER_OFFLINE_INFO
{
    BOOL            bEnable;                                                // 使能
    int             nType;                                                  // 0: 使用IP地址; 1:使用MAC地址
    int             nIpAddrNum;                                             // 返回的IP地址个数
    char            szIpAddr[MAX_TRANSFER_SERVER_NUM][MAX_ADDRESS_LEN];     // IP地址或网络名
    int             nMacAddrNum;                                            // 返回的mac地址个数
    char            szClientID[MAX_TRANSFER_SERVER_NUM][MAX_ADDRESS_LEN];   // mac地址

}TRAFFIC_TRANSFER_OFFLINE_INFO;

#define MAX_DEVCOMM_NUM          16                                     // 最大串口个数
// 订阅串口数据配置-单个串口配置
typedef struct tagCFG_DEVCOMM_SUBSCRIBE_INFO
{
    int             nReadCycle;                                         // 串口读取间隔,单位: 秒    
}CFG_DEVCOMM_SUBSCRIBE_INFO;

// 订阅串口数据配置
typedef struct tagCFG_DEVCOMM_SUBSCRIBE
{
    int                             nSubscribeInfoNum;                  // 串口数据配置个数
    CFG_DEVCOMM_SUBSCRIBE_INFO      stuSubscribeInfo[MAX_DEVCOMM_NUM];  // 订阅串口数据配置,是一个数组,每个元素对应一个串口    
}CFG_DEVCOMM_SUBSCRIBE;

// 车位状态对应的车位指示灯
typedef enum tagEM_CFG_PARKINGSPACE_LIGHT_COLOR
{
    EM_CFG_PARKINGSPACE_LIGHT_RED,                                      // 红色
    EM_CFG_PARKINGSPACE_LIGHT_YELLOW,                                   // 黄色
    EM_CFG_PARKINGSPACE_LIGHT_BLUE,                                     // 蓝色 
    EM_CFG_PARKINGSPACE_LIGHT_GREEN,                                    // 绿色
    EM_CFG_PARKINGSPACE_LIGHT_PURPLE,                                   // 紫色
    EM_CFG_PARKINGSPACE_LIGHT_WHITE,                                    // 白色
    EM_CFG_PARKINGSPACE_LIGHT_PINK,                                     // 粉色
}EM_CFG_PARKINGSPACE_LIGHT_COLOR;

// 指示灯状态
typedef enum tagEM_CFG_PARKINGSPACE_LIGHT_STATE
{
    EM_CFG_PARKINGSPACE_LIGHT_OFF,                                      // 灭
    EM_CFG_PARKINGSPACE_LIGHT_ON,                                       // 亮
    EM_CFG_PARKINGSPACE_LIGHT_GLINT,                                    // 闪烁
}EM_CFG_PARKINGSPACE_LIGHT_STATE;

#define CFG_MAX_PARKINGSPACE_LIGHT_NUM      8
#define CFG_MAX_NET_PORT_NUM                4 
typedef struct tagCFG_PARKINGSPACE_LIGHT_STATE
{
    BYTE                            bySpaceFreeLinght[CFG_MAX_PARKINGSPACE_LIGHT_NUM];      // 车位空闲状态灯色,颜色枚举值作为数组下标,数组元素值表示指示灯状态,如bySpaceFreeLinght[0]=1,表示红色指示灯亮
    BYTE                            bySpaceFullLinght[CFG_MAX_PARKINGSPACE_LIGHT_NUM];      // 车位满状态灯色,颜色枚举值作为数组下标,数组元素值表示指示灯状态,如bySpaceFullLinght[1]=1,表示黄色指示灯亮
    BYTE                            bySpaceOverLineLight[CFG_MAX_PARKINGSPACE_LIGHT_NUM];   // 车位压线状态灯色,颜色枚举值作为数组下标,数组元素值表示指示灯状态
    BYTE                            bySpaceOrderLight[CFG_MAX_PARKINGSPACE_LIGHT_NUM];      // 车位预定状态灯色,颜色枚举值作为数组下标,数组元素值表示指示灯状态
    int                             nNetPortNum;                                            // 网口数
    BYTE                            byNetPortAbortLight[CFG_MAX_NET_PORT_NUM][CFG_MAX_PARKINGSPACE_LIGHT_NUM];    // 网口断开状态灯色
    BYTE                            bySpaceSpecialLight[CFG_MAX_PARKINGSPACE_LIGHT_NUM];    // 车位专用状态灯色,颜色枚举值作为数组下表,数组元素值表示指示灯状态
}CFG_PARKINGSPACE_LIGHT_STATE;

// 空调工作模式
typedef enum tagEM_CFG_AIRCONDITION_MODE
{
    EM_CFG_AIRCONDITION_MODE_UNKNOWN = 0,
    EM_CFG_AIRCONDITION_MODE_AUTO,             // 自动
    EM_CFG_AIRCONDITION_MODE_HOT,              // 制热
    EM_CFG_AIRCONDITION_MODE_COLD,             // 制冷
    EM_CFG_AIRCONDITION_MODE_WET,              // 除湿
    EM_CFG_AIRCONDITION_MODE_WIND,             // 通风
} EM_CFG_AIRCONDITION_MODE;

// 空调送风模式
typedef enum tagEM_CFG_AIRCONDITION_WINDMODE
{
    EM_CFG_AIRCONDITION_WINDMODE_UNKNOWN = 0,
    EM_CFG_AIRCONDITION_WINDMODE_STOP,            // 停止
    EM_CFG_AIRCONDITION_WINDMODE_AUTO,            // 自动
    EM_CFG_AIRCONDITION_WINDMODE_HIGH,            // 高速
    EM_CFG_AIRCONDITION_WINDMODE_MIDDLE,          // 中速
    EM_CFG_AIRCONDITION_WINDMODE_LOW,             // 低速
} EM_CFG_AIRCONDITION_WINDMODE;

// 串口地址
typedef struct tagCFG_COMMADDR_INFO
{
    int                 nAddressNum;                            // 串口地址个数
    int 				nAddress[MAX_ADDRESS_NUM];              // 地址描述,不同厂商地址位不同,用数组表示
}CFG_COMMADDR_INFO;

// 空调设备配置详情
typedef struct tagCFG_AIRCONDITION_DETAIL
{
    char				szDeviceID[MAX_DEVICE_ID_LEN];			// 设备编码,惟一标识符
    char                szName[MAX_DEVICE_MARK_LEN];            // 设备描述
    char                szBrand[MAX_BRAND_NAME_LEN];            // 设备品牌
    CFG_COMMADDR_INFO   stuCommAddr;                            // 串口地址
    int                 nState;                                 // 设备状态: 1-打开,0-关闭
    int                 nRange;                                 // 幅度值(温度)单位:摄氏度
    EM_CFG_AIRCONDITION_MODE        emAirconditionMode;         // 空调工作模式
    EM_CFG_AIRCONDITION_WINDMODE    emAirconditionWindMode;     // 空调送风模式
}CFG_AIRCONDITION_DETAIL;

// 空调设备配置(对应CFG_CMD_AIRCONDITION命令)
typedef struct tagCFG_AIRCONDITION_INFO
{
    int                         nAirConditionNum;                        // 空调设备个数
    CFG_AIRCONDITION_DETAIL 	stuAirConditions[MAX_AIRCONDITION_NUM];	 // 空调设备配置详情, 数组表示
}CFG_AIRCONDITION_INFO;

// 灯光设备类型
typedef enum tagEM_LIGHT_TYPE
{
    EM_LIGHT_TYPE_UNKNOWN,                                      // 未知类型
    EM_LIGHT_TYPE_COMMLIGHT,                                    // 普通灯光
    EM_LIGHT_TYPE_LEVELLIGHT,                                   // 可调光
}EM_LIGHT_TYPE;

// 灯光设备配置信息 (对应 CFG_CMD_LIGHT )
typedef struct tagCFG_LIGHT_INFO
{
    char                szDeviceID[MAX_DEVICE_ID_LEN];          // 设备编码,惟一标识符
    char                szName[MAX_DEVICE_MARK_LEN];            // 设备描述
    char                szBrand[MAX_BRAND_NAME_LEN];            // 设备品牌
    CFG_COMMADDR_INFO   stuCommAddr;                            // 串口地址
    int                 nPositionID;                            // 设备在区域中编号
    CFG_POLYGON         stuPosition;                            // 坐标
    int                 nState;                                 // 设备状态: 1-打开,0-关闭
    int                 nRange;                                 // 灯亮度幅度值 0-7 , emType 为 EM_LIGHT_TYPE_ADJUSTABLE 有意义
    EM_LIGHT_TYPE       emType;                                 // 灯光设备类型
}CFG_LIGHT_INFO;

// 窗帘设备配置信息 (对应 CFG_CMD_CURTAIN )
typedef struct tagCFG_CURTAIN_INFO
{
    char                szDeviceID[MAX_DEVICE_ID_LEN];          // 设备编码,惟一标识符
    char                szName[MAX_DEVICE_MARK_LEN];            // 设备描述
    char                szBrand[MAX_BRAND_NAME_LEN];            // 设备品牌
    CFG_COMMADDR_INFO   stuCommAddr;                            // 串口地址
    int                 nPositionID;                            // 设备在区域中编号
    CFG_POLYGON         stuPosition;                            // 坐标
    int                 nState;                                 // 设备状态: 1-打开,0-关闭 
}CFG_CURTAIN_INFO;

// 新风配置信息 (对应 CFG_CMD_FRESH_AIR )
typedef struct tagCFG_FRESH_AIR_INFO
{
    char                szDeviceID[MAX_DEVICE_ID_LEN];          // 设备编码,惟一标识符
    char                szName[MAX_DEVICE_MARK_LEN];            // 设备描述
    char                szBrand[MAX_BRAND_NAME_LEN];            // 设备品牌
    CFG_COMMADDR_INFO   stuCommAddr;                            // 串口地址   
}CFG_FRESH_AIR_INFO;

// 地暖配置信息 (对应 CFG_CMD_GROUND_HEAT)
typedef struct tagCFG_GROUND_HEAT_INFO
{
    char                szDeviceID[MAX_DEVICE_ID_LEN];          // 设备编码,惟一标识符
    char                szName[MAX_DEVICE_MARK_LEN];            // 设备描述
    char                szBrand[MAX_BRAND_NAME_LEN];            // 设备品牌
    CFG_COMMADDR_INFO   stuCommAddr;                            // 串口地址   
    int                 nState;                                 // 设备状态: 1-打开,0-关闭   
    int                 nRange;                                 // 幅度值(温度)单位:摄氏度
}CFG_GROUND_HEAT_INFO;

// 智能家居情景模式
typedef enum tagEM_SMARTHOME_SCENE_MODE
{
    EM_SMARTHOME_SCENE_MODE_UNKNOWN,                            // 未知
    EM_SMARTHOME_SCENE_MODE_AT_HOME,                            // 在家
    EM_SMARTHOME_SCENE_MODE_LEAVE_HOME,                         // 离开
    EM_SMARTHOME_SCENE_MODE_IN_SLEEPING,                        // 睡眠
}EM_SMARTHOME_SCENE_MODE;

// 情景详细信息
typedef struct tagCFG_PROFILE_INFO
{
    int                 nSceneID;                               // 情景ID
    char                szBrand[MAX_BRAND_NAME_LEN];            // 厂家名称
    EM_SMARTHOME_SCENE_MODE emScene;                            // 情景模式
    CFG_COMMADDR_INFO   stuCommAddr;                            // 串口地址
}CFG_PROFILE_INFO;

#define MAX_SMARTHOME_PROFILE_COUNT     54                      // 智能家居最大情景模式个数

// 情景模式配置 (对应 CFG_CMD_SCENE_MODE)
typedef struct tagCFG_SCENE_MODE_INFO
{
    int                nCurrentID;                              // 当前情景模式ID号
    int                nProfileCount;                           // 情景模式个数
    CFG_PROFILE_INFO   stuProfiles[MAX_SMARTHOME_PROFILE_COUNT];// 情景模式信息
}CFG_SCENE_MODE_INFO;

//压缩回放配置信息
typedef struct tagCFG_COMPRESS_PLAY_INFO
{
    BOOL                bEnable;                // 使能
	CFG_CAPTURE_SIZE    emResolution;           // 视频分辨率
	unsigned int        nBitRate;               // 视频固定码流值(kbps), 范围:192~1024
}CFG_COMPRESS_PLAY_INFO;

// 系统类型
typedef enum tagEM_CFG_BUILDING_SYSTEM_TYPE
{
    EM_CFG_BUILDING_SYSTEM_TYPE_UNKNOWN = 0,        // 未知
    EM_CFG_BUILDING_SYSTEM_TYPE_DIGITAL,            // 数字系统
    EM_CFG_BUILDING_SYSTEM_TYPE_ANALOG,             // 模拟系统
}EM_CFG_BUILDING_SYSTEM_TYPE;

// VTO 楼层配置(对应 CFG_CMD_BUILDING 命令)
typedef struct tagCFG_BUILDING_INFO
{
    char                            szIssueNumber[CFG_COMMON_STRING_16];                // 期号,范围:0 ~ 99
    char                            szSectionNumber[CFG_COMMON_STRING_16];              // 区号,范围:0 ~ 99
    char                            szBuildingNumber[CFG_COMMON_STRING_16];             // 楼号,范围:0 ~ 999
    char                            szBuildingUnitNumber[CFG_COMMON_STRING_16];         // 楼内单元号,范围:0 ~ 9
    char                            szSectionUnitNumber[CFG_COMMON_STRING_16];          // 小区单元编号,范围:0 ~ 999
    int                             nUnitFloorNumber;                                   // 单元楼层数,范围:0 ~ 99
    int                             nFloorPerRoomNumber;                                // 一层房间数,范围:0 ~ 99
    BOOL                            bCreateRoomEnable;                                  // 创建房间号使能
    EM_CFG_BUILDING_SYSTEM_TYPE     emSystemType;                                       // 系统类型
    BOOL                            bEnableSection;                                     // 区号使能
    int                             nBuildingNumBit;                                    // 楼号长度
    int                             nTotalRoomNumber;                                   // 房间总数,最大值为9999
    char                            szBuildingName[CFG_COMMON_STRING_64];               // 门口机别名
}CFG_BUILDING_INFO;

//VTO 楼层扩展配置(对应 CFG_CMD_BUILDING_EXTERNAL 命令)
typedef struct tagCFG_BUILDING_EXTERNAL_INFO
{
    int                                     nFloorCount;                                            // 单元总层数
    int                                     nRoomCount;                                             // 每层房间数
    int                                     nBeginNumberCount;                                      // 获取/设置时,对应的开始房间号的有效个数
    // 获取时,当获取的开始房间号个数超过MAX_FLOOR_NUM,前MAX_FLOOR_NUM个有效
    // 设置时,当设置的开始房间号个数超过MAX_FLOOR_NUM,前MAX_FLOOR_NUM个有效
    char                                    szBeginNumber[MAX_FLOOR_NUM][CFG_COMMON_STRING_16];     // 开始的房间号,nBeginNumber[0] 为第一层开始房间号,nBeginNumber[1] 为第二层开始房间号,
    int                                     nTotalBuildingNumber;                                   // 小区总幢数,范围:0 ~ 99
    int                                     nBuildingPerUintNumber;                                 // 每幢单元数,范围:0 ~ 9
}CFG_BUILDING_EXTERNAL_INFO;

//拨号规则(对应 CFG_CMD_DIALRULE 命令)
typedef struct tagCFG_DIALRULE_INFO
{
    BOOL                            bBuildingModeEnable;            //幢模式使能
    BOOL                            bUnitModeEnable;                //单元模式使能
    BOOL                            bExtentionModeEnable;           //分机模式使能
    char                            cSeperator;                     //拨号分隔符, 如 "#", "-"
    BYTE				            byReserved[3];				    //字节对齐
}CFG_DIALRULE_INFO;

// 车辆油箱配置
typedef struct tagCFG_OIL_MASS_INFO
{
    int                 nTankVolume;            // 油箱容积,单位:升
    int                 nNotifyIntervalTime;    // 上报油箱信息间隔时间,单位:秒
    int                 nLowOil;                // 油量液位低报警百分比(例:低于20%则报警),单位:百分比,0-100
    int                 nAlarmIntervalTime;     // 上报油量液位低的报警时间间隔(即报警后,每隔一段时间就重复报警),单位:秒
}CFG_OIL_MASS_INFO; 

// MAC冲突事件报警配置
typedef struct tagCFG_MACCONFLICT_INFO 
{
    BOOL                bEnable;                // 使能开关
    CFG_ALARM_MSG_HANDLE stuEventHandler;       // 报警联动
}CFG_MACCONFLICT_INFO;

// 登陆锁定配置(对应 CFG_CMD_USERLOCKALARM)
typedef struct tagCFG_USERLOCKALARM_INFO
{
	CFG_ALARM_MSG_HANDLE stuEventHandler;       // 报警联动
}CFG_USERLOCKALARM_INFO;

// 登陆失败报警配置(对应 CFG_CMD_LOGIN_FAILURE_ALARM)
typedef struct tagCFG_LOGIN_FAILURE_ALARM
{
	BOOL				 bEnable;			    // 登陆失败报警使能开关,TRUE为打开,FALSE为关闭
	int					 nTryLoginTimes;		// 尝试登陆次数,若登陆密码错误次数达到尝试次数后,启动报警联动
	CFG_ALARM_MSG_HANDLE stuEventHandler;       // 报警联动
}CFG_LOGIN_FAILURE_ALARM;

// 空闲动作功能枚举
typedef enum tagEM_CFG_IDLEMOTION_FUNCTION
{
    EM_CFG_IDLEMOTION_FUNCTION_NONE = 0,         // 无
    EM_CFG_IDLEMOTION_FUNCTION_PRESET,           // 预置点
    EM_CFG_IDLEMOTION_FUNCTION_SCAN,             // 自动线扫
    EM_CFG_IDLEMOTION_FUNCTION_TOUR,             // 巡航
    EM_CFG_IDLEMOTION_FUNCTION_PATTERN,          // 自动巡迹
} EM_CFG_IDLEMOTION_FUNCTION;

// 空闲动作配置信息
typedef struct tagCFG_IDLE_MOTION_INFO
{
    BOOL                        bEnable;         // 使能
    int                         nTime;           // 启动空闲动作的时间1~60分钟
    EM_CFG_IDLEMOTION_FUNCTION  emFunction;      // 空闲动作功能,见枚举 EM_CFG_IDLEMOTION_FUNCTION
    int                         nPresetId;       // 预置点编号,   范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wPresetMin和wPresetMax
    int                         nScanId;         // 自动线扫编号, 范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wAutoScanMin和wAutoScanMax
    int                         nTourId;         // 巡航编号,     范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wTourMin和wTourMax
    int                         nPatternId;      // 自动巡迹编号, 范围参照CFG_PTZ_PROTOCOL_CAPS_INFO的wPatternMin和wPatternMax
	int							nSecond;		 // 启动空闲动作的时长(秒数)范围0-59秒,总时长为nTime * 60 + nSecond
}CFG_IDLE_MOTION_INFO;

// 电视墙预案轮巡配置
typedef struct tagCFG_MONITORWALL_COLLECTION_TOUR_INFO
{
    int                 nInterval;               // 轮巡间隔时间, 单位秒
    int                 nCollectionNum;          // 预案轮巡组中包含的预案数量
    char                szCollectionGroup[CFG_MAX_COLLECTION_NUM][CFG_COMMON_STRING_128]; // 预案轮巡组内容, 每一项是预案的名称
}CFG_MONITORWALL_COLLECTION_TOUR_INFO;

// PSTN掉线事件配置
typedef struct tagCFG_PSTN_BREAK_LINE_INFO
{
    BOOL                bEnable;                // 使能开关
    CFG_ALARM_MSG_HANDLE stuEventHandler;       // 报警联动
}CFG_PSTN_BREAK_LINE_INFO;

// 网络采集设备配置, 对应CFG_CMD_NET_COLLECTION命令
typedef struct tagCFG_NET_COLLECTION_INFO
{
    char                szIp[MAX_ADDRESS_LEN];  // IP
	int                 nPort;                  // 端口
}CFG_NET_COLLECTION_INFO;

// 物理接口类型
typedef enum tagEM_CFG_INTERFACE_TYPE
{
    EM_CFG_INTERFACE_TYPE_UNKNOWN = 0,
	EM_CFG_INTERFACE_TYPE_COMM,                 // Comm类型, 即串口, 对应CFG_COMMGROUP_INFO配置
	EM_CFG_INTERFACE_TYPE_NETCOLLECTION,        // NetCollection类型, 即网络采集点, 对应CFG_NET_COLLECTION_INFO配置
}EM_CFG_INTERFACE_TYPE;

// 虚拟Slot节点与具体物理设备的对应关系, 对应CFG_CMD_ALARM_SLOT_BOND命令
// 由于第一个通道(即通道0)已经于本地通道绑定,故无法设置;
// 其他通道对应Slot节点序号, 元素内容为相应物理接口
typedef struct tagCFG_ALARM_SLOT_BOND_INFO
{
    EM_CFG_INTERFACE_TYPE   emType;             // 物理接口类型
	int                     nIndex;	            // 通道号, 从0开始
	                                            // 类型为EM_CFG_INTERFACE_TYPE_COMM时, 表示CFG_COMMGROUP_INFO配置的数组下标;
	                                            // 类型为EM_CFG_INTERFACE_TYPE_NETCOLLECTION时, 表示CFG_NET_COLLECTION_INFO配置的数组下标;
}CFG_ALARM_SLOT_BOND_INFO;

#define CFG_MAX_CTRLTYPE_NUM       16            // 最大道闸控制方式
// 道闸控制方式枚举
typedef enum tagEM_CFG_TRAFFICSTROBE_CTRTYPE
{
    EM_CFG_CTRTYPE_UNKNOWN = 0,                 // 未定义
    EM_CFG_CTRTYPE_TRAFFICTRUSTLIST,            // 通过白名单控制是否开闸;只有白名单内车辆才开闸
    EM_CFG_CTRTYPE_ALLSNAPCAR,                  // 针对所有抓拍车辆都开闸
    EM_CFG_CTRTYPE_ORDER,                       // 通过上层下发的命令开闸
} EM_CFG_TRAFFICSTROBE_CTRTYPE;

// 所有车开闸种类
typedef enum tagEM_CFG_ALL_SNAP_CAR
{
	EM_CFG_ALL_SNAP_CAR_UNKNOWN,				// 未知开闸种类
	EM_CFG_ALL_SNAP_CAR_PLATE,					// 所有有牌车车辆
	EM_CFG_ALL_SNAP_CAR_NOPLATE,				// 所有无牌车车辆
}EM_CFG_ALL_SNAP_CAR;

// 道闸配置信息(对应 CFG_CMD_TRAFFICSTROBE 命令)
typedef struct tagCFG_TRAFFICSTROBE_INFO
{
    BOOL                            bEnable;                            // 使能
    int                             nCtrlTypeCount;                     // 道闸控制方式个数
    EM_CFG_TRAFFICSTROBE_CTRTYPE    emCtrType[CFG_MAX_CTRLTYPE_NUM];    // 道闸控制方式,见枚举 EM_CFG_TRAFFICSTROBE_CTRTYPE
    CFG_ALARM_MSG_HANDLE            stuEventHandler;					// 开启道闸联动参数
    CFG_ALARM_MSG_HANDLE            stuEventHandlerClose;               // 关闭道闸联动参数
	int								nAllSnapCarCount;					// 所有车开闸种类个数
	EM_CFG_ALL_SNAP_CAR				emAllSnapCar[MAX_ALL_SNAP_CAR_COUNT];	// 所有车开闸种类				
}CFG_TRAFFICSTROBE_INFO;

#define CFG_MAX_PLATEENABLE_NUM       16        // 最大使能过车车牌播报个数
#define CFG_MAX_TRAFFICVOICE_NUM      8         // 最大语音播报配置个数
// 使能过车车牌播报功能枚举
typedef enum tagEM_CFG_PLATEENABLE_TYPE
{
    EM_CFG_PLATEENABLE_UNKNOWN = 0,             // 未定义
    EM_CFG_PLATEENABLE_TIPS,                    // 播放欢迎词
    EM_CFG_PLATEENABLE_PLATE,                   // 播放车牌
} EM_CFG_PLATEENABLE_TYPE;

// 智能交通语音播报信息
typedef struct tagCFG_TRAFFICVOICE_BROADCAST_INFO
{
    int                             nEnableCount;                       // 使能播报个数
    EM_CFG_PLATEENABLE_TYPE         emEnable[CFG_MAX_PLATEENABLE_NUM];  // 使能过车车牌播报,见枚举 EM_CFG_PLATEENABLE_TYPE
    char                            szNormalCar[MAX_PATH];              // 普通车辆过车播报内容,例如:播报语音文件"欢迎光临.wav"
    char                            szTrustCar[MAX_PATH];               // 信任车辆过车播报内容,例如:播报语音文件"欢迎光临.wav"
    char                            szSuspiciousCar[MAX_PATH];          // 嫌疑车辆过车播报内容,例如:播报语音文件"非注册车辆.wav"
}CFG_TRAFFICVOICE_BROADCAST_INFO;

// 智能交通语音播报配置(对应 CFG_CMD_TRAFFICVOICE 命令)
typedef struct tagCFG_TRAFFICVOICE_BROADCAST
{
    int                             nTrafficVoiceNum;                           // 语音播报配置个数
    CFG_TRAFFICVOICE_BROADCAST_INFO stuTrafficVoices[CFG_MAX_TRAFFICVOICE_NUM];	// 语音播报配置详情, 数组表示
}CFG_TRAFFICVOICE_BROADCAST;

// 停车时间配置
typedef struct tagCFG_STANDING_TIME_INFO
{
    BOOL                        bEnable;         // 是否启用停车超时报警功能
    int                         nUpperlimit;     // 停留时间上限, 单位:分钟
    int                         nInterval;       // DH_ALARM_VEHICLE_STANDING_OVER_TIME事件上报间隔, 单位:秒, -1表示不需要重复上报
} CFG_STANDING_TIME_INFO;

// 电子围栏报警时间段信息
typedef struct tagENCLOSURE_TIME_SCHEDULE_INFO
{
    int                         nEnclosureID;                                          // 围栏的ID号
    CFG_TIME_SECTION            stuTimeSection[MAX_TIME_SCHEDULE_NUM][MAX_REC_TSECT];  // 事件响应时间段
} ENCLOSURE_TIME_SCHEDULE_INFO;

// 电子围栏最大数量
#define MAX_ENCLOSURE_NUM 128

// 电子围栏报警时间段配置
typedef struct tagCFG_ENCLOSURE_TIME_SCHEDULE_INFO
{
    int                                nEnclosureInfoCount;                     // 围栏数量
    ENCLOSURE_TIME_SCHEDULE_INFO       stuEnclosureInfo[MAX_ENCLOSURE_NUM];     // 围栏信息
    char                               szVersion[CFG_COMMON_STRING_64];         // 围栏时间段配置版本号
} CFG_ENCLOSURE_TIME_SCHEDULE_INFO;

// 停车场出入口控制器工作模式
typedef enum tagEM_ECK_WORK_MODE_TYPE
{
    EM_ECK_WORK_MODE_UNKNOWN = 0,
    EM_ECK_WORK_MODE_IMPORT,                                    // 入口控制机
    EM_ECK_WORK_MODE_EXPORT,                                    // 出口控制机
}EM_ECK_WORK_MODE_TYPE;

// 停车场出入口控制器开闸模式
typedef enum tagEM_ECK_STROBE_MODE_TYPE
{
    EM_ECK_STROBE_MODE_UNKNOWN = 0,
    EM_ECK_STROBE_MODE_ON,                                      // 始终开闸
    EM_ECK_STROBE_MODE_OFF,                                     // 始终关闸
    EM_ECK_STROBE_MODE_AUTO,                                    // 自动开关闸
}EM_ECK_STROBE_MODE_TYPE;

// 停车场出入口控制器滚动屏初始滚动速度
typedef enum tagEM_ECK_LED_SPEED_TYPE
{
    EM_ECK_LED_SPEED_UNKNOWN = 0,
    EM_ECK_LED_SPEED_LOW,                                       // 慢
    EM_ECK_LED_SPEED_NORMAL,                                    // 正常
    EM_ECK_LED_SPEED_HIGH,                                      // 快
}EM_ECK_LED_SPEED_TYPE;

// 停车场出入口控制器LED滚动屏配置
typedef struct tagCFG_ECK_LED_INFO 
{
    EM_ECK_LED_SPEED_TYPE   emLEDSpeed;                         // LED滚动屏初始滚动速度
    char                    szCustomData[CFG_COMMON_STRING_512];// LED滚动屏初始自定义字符, 有效长度0-256字节
}CFG_ECK_LED_INFO;

// 停车场出入口控制器配置
typedef struct tagCFG_ECKCONFIG_INFO 
{
    EM_ECK_WORK_MODE_TYPE   emWorkMode;                         // 工作模式
    EM_ECK_STROBE_MODE_TYPE emStrobeMode;                       // 开闸模式
    BOOL                    bForceOffline;                      // 强制脱机开关, TRUE:强制脱机工作, FALSE:接受平台控制工作
    BOOL                    bLoopSence;                         // 地感功能开关, TRUE:开启地感功能, FALSE:关闭地感功能
    CFG_ECK_LED_INFO        stuLED;                             // 滚动屏幕配置
}CFG_ECKCONFIG_INFO;

// 箭头指向
typedef enum tagEM_DIRECTION
{
    EM_DIRECTION_UNKNOWN,
    EM_DIRECTION_LEFT,                                          // 左
    EM_DIRECTION_UPLEFT,                                        // 左上
    EM_DIRECTION_UP,                                            // 上
    EM_DIRECTION_UPRIGHT,                                       // 右上
    EM_DIRECTION_RIGHT,                                         // 右
    EM_DIRECTION_DOWNRIGHT,                                     // 右下
    EM_DIRECTION_DOWN,                                          // 下
    EM_DIRECTION_DOWNLEFT,                                      // 左下
}EM_DIRECTION;

// 箭头相对于数字的位置
typedef enum tagEM_GUIDESCREEN_POS
{
    EM_GUIDESCREEN_POS_UNKNOWN,
    EM_GUIDESCREEN_POS_LEFT,                                    // 左侧
    EM_GUIDESCREEN_POS_RIGHT,                                   // 右侧
}EM_GUIDESCREEN_POS;

// 诱导屏内容是否滚动
typedef enum tagEM_GUIDESCREEN_ROLL
{
    EM_GUIDESCREEN_ROLL_UNKNOWN,
    EM_GUIDESCREEN_ROLL_DISABLE,                                // 不滚动
    EM_GUIDESCREEN_ROLL_ENABLE,                                 // 滚动
}EM_GUIDESCREEN_ROLL;

// 诱导屏箭头设置
typedef struct tagCFG_GUISCREEN_ARROW
{
    EM_DIRECTION            emDirect;                           // 箭头指向
    EM_GUIDESCREEN_POS      emPos;                              // 箭头相对于数字的位置
    EM_GUIDESCREEN_ROLL     emRoll;                             // 是否滚动
}CFG_GUISCREEN_ARROW;

#define CFG_GUIDE_SCREEN_NUM_MAX (8)                            // 诱导屏最大数量

// 诱导屏系统配置(对应 CFG_CMD_GUIDESCREEN 命令)
typedef struct tagCFG_GUIDESCREEN_INFO
{
    char                    szText[CFG_COMMON_STRING_128];      // 上下屏时,上屏显示内容
                                                                // 英文或常用中文汉字,中文需要GB2312编码,长度不超过64字节
    int                     nArrowNum;                          // 箭头标志数量
    CFG_GUISCREEN_ARROW     stuArrow[CFG_GUIDE_SCREEN_NUM_MAX]; // 箭头标志设置, 对应的屏从左至右依次排列
}CFG_GUIDESCREEN_INFO;

// 停车场出入口刷卡报警事件配置(对应CFG_CMD_PARKING_CARD命令)
typedef struct tagCFG_PARKING_CARD_INFO
{
    BOOL                            bEnable;                // 是否启用
    CFG_ALARM_MSG_HANDLE            stuEventHandler;        // 报警联动
} CFG_PARKING_CARD_INFO;

// 报警方式, 即通过什么方式发出的报警
typedef enum tagEM_CFG_RCEMERGENCY_MODE_TYPE
{
    EM_CFG_RCEMERGENCY_MODE_UNKNOWN = 0,
    EM_CFG_RCEMERGENCY_MODE_KEYBOARD,                       // 键盘
    EM_CFG_RCEMERGENCY_MODE_WIRELESS_CONTROL,               // 遥控器
}EM_CFG_RCEMERGENCY_MODE_TYPE;

// 紧急救助报警类型
typedef enum tagEM_CFG_RCEMERGENCY_CALL_TYPE
{
    EM_CFG_RCEMERGENCY_CALL_UNKNOWN = 0,
    EM_CFG_RCEMERGENCY_CALL_FIRE,                           // 火警
    EM_CFG_RCEMERGENCY_CALL_DURESS,                         // 胁迫
    EM_CFG_RCEMERGENCY_CALL_ROBBER,                         // 匪警
    EM_CFG_RCEMERGENCY_CALL_MEDICAL,                        // 医疗
}EM_CFG_RCEMERGENCY_CALL_TYPE;

// 紧急呼叫报警事件配置(对应 CFG_CMD_RCEMERGENCYCALL 命令)
typedef struct tagCFG_RCEMERGENCY_CALL_INFO 
{
    BOOL                            bEnable;                // 是否启用
    EM_CFG_RCEMERGENCY_MODE_TYPE    emMode;                 // 报警方式
    EM_CFG_RCEMERGENCY_CALL_TYPE    emAlarmType;            // 报警类型
    CFG_ALARM_MSG_HANDLE            stuEventHandler;        // 报警联动
}CFG_RCEMERGENCY_CALL_INFO;

// 车道信息上报配置(对应 CFG_CMD_LANES_STATE_REPORT 命令)
typedef struct tagCFG_LANES_STATE_REPORT
{
    BOOL                bEnable;        //上报使能	true:上报使能 ,false:上报不使能
    int                 nPeriod;        //上报周期	单位:秒
}CFG_LANES_STATE_REPORT;

#define CFG_MAX_USER_ID_LEN                     32              // 门禁卡用户ID最大长度
#define CFG_MAX_METHODEX_NUM                    4               // 开门方式扩展最大个数

// 多人组合开门的开门方式
typedef enum tagEM_CFG_OPEN_DOOR_GROUP_METHOD
{
    EM_CFG_OPEN_DOOR_GROUP_METHOD_UNKNOWN = 0,
    EM_CFG_OPEN_DOOR_GROUP_METHOD_CARD,                         // 刷卡
    EM_CFG_OPEN_DOOR_GROUP_METHOD_PWD,                          // 密码
    EM_CFG_OPEN_DOOR_GROUP_METHOD_FINGERPRINT,                  // 指纹
    EM_CFG_OPEN_DOOR_GROUP_METHOD_ANY,                          // 任意组合方式开门
    EM_CFG_OPEN_DOOR_GROUP_METHOD_FACE,                         // 人脸
}EM_CFG_OPEN_DOOR_GROUP_METHOD;

// 多人组合开门组详细信息
typedef struct tagCFG_OPEN_DOOR_GROUP_DETAIL 
{
    char                            szUserID[CFG_MAX_USER_ID_LEN];       // 用户ID
    EM_CFG_OPEN_DOOR_GROUP_METHOD   emMethod;                            // 开门方式
    int                             nMethodExNum;                        // 开门方式扩展个数
    EM_CFG_OPEN_DOOR_GROUP_METHOD   emMethodEx[CFG_MAX_METHODEX_NUM];    // 开门方式扩展
}CFG_OPEN_DOOR_GROUP_DETAIL;

#define CFG_MAX_OPEN_DOOR_GROUP_DETAIL_NUM      64               // 每一组多人开门组合的最大人数

// 多人组合开门组信息
typedef struct tagCFG_OPEN_DOOR_GROUP 
{
    int                         nUserCount;                     // 用户数目,表示需要组合才能开门的人数
    int                         nGroupNum;                      // 有效组数目
    CFG_OPEN_DOOR_GROUP_DETAIL  stuGroupDetail[CFG_MAX_OPEN_DOOR_GROUP_DETAIL_NUM];// 多人组合开门组的详细信息
    BOOL                        bGroupDetailEx;                         //  TRUE: stuGroupDetail 字段无效、pstuGroupDetailEx字段有效, FALSE: stuGroupDetail 字段有效、pstuGroupDetailEx字段无效
    int					        nMaxGroupDetailNum;              // 多人组合开门组的详细信息最大个数
    CFG_OPEN_DOOR_GROUP_DETAIL	    *pstuGroupDetailEx;              /* 多人组合开门组的详细信息扩展, 由用户申请内存, 大小为sizeof(CFG_OPEN_DOOR_GROUP_DETAIL)*nMaxUserCount, 
                                                                    当多人组合开门组的详细信息个数大于 CFG_MAX_OPEN_DOOR_GROUP_DETAIL_NUM 时使用此字段 */
}CFG_OPEN_DOOR_GROUP;

#define CFG_MAX_OPEN_DOOR_GROUP_NUM             4               // 多人开门组合的最大组合数

// 多人多开门方式组合(对应 CFG_CMD_OPEN_DOOR_GROUP 命令),表示每个通道的组合信息,
// 第一个通道的组合的开门优先级最高,后面依次递减
typedef struct tagCFG_OPEN_DOOR_GROUP_INFO 
{
    int                         nGroup;                         // 有效组合数
    CFG_OPEN_DOOR_GROUP         stuGroupInfo[CFG_MAX_OPEN_DOOR_GROUP_NUM];// 多人开门组合信息
}CFG_OPEN_DOOR_GROUP_INFO;

#define MAX_READER_ID_LEN                       32              // 读卡器ID最大长度

// 开门路线的每个节点的信息
typedef struct tagCFG_DOOR_ROUTE_NODE_INFO
{
    char                        szReaderID[MAX_READER_ID_LEN];  // 读卡器ID,即门禁控制器相连的读卡器的ID
}CFG_DOOR_ROUTE_NODE_INFO;

// 每条开门路线最大节点(读卡器数目)
#define MAX_DOOR_ROUTE_NODE_NUM     8

// 门数组集合信息,按照数组下标从小到大顺序,表示开门路线
typedef struct tagCFG_DOOR_ROUTE_INFO
{
    int                         nDoors;                             // 开门路线有效节点数
    CFG_DOOR_ROUTE_NODE_INFO    stuDoors[MAX_DOOR_ROUTE_NODE_NUM];  // 开门路线节点信息
	UINT                        nResetTime;                         // 反潜重置时间,单位:分钟,0表示不重置 
}CFG_DOOR_ROUTE_INFO;

#define MAX_OPEN_DOOR_ROUTE_NUM                 16                  // 最大开门路线数目

// 开门路线集合,或称防反潜路线配置(对应 CFG_CMD_OPEN_DOOR_ROUTE 命令)
typedef struct tagCFG_OPEN_DOOR_ROUTE_INFO
{
    int                         nDoorList;
    CFG_DOOR_ROUTE_INFO         stuDoorList[MAX_OPEN_DOOR_ROUTE_NUM];
	int							nTimeSection;                       // 反潜路径对应时间段, 即CFG_ACCESS_TIMESCHEDULE_INFO的数组下标   
	UINT                        nResetTime;                         // 反潜重置时间,单位:分钟,0表示不重置。无效字段,废除
}CFG_OPEN_DOOR_ROUTE_INFO;

#define MAX_BURNPLAN_DEVICES_NUM                     32
#define MAX_BURNPLAN_CHANNELS_NUM                     32

// 刻录流格式
typedef enum tagEM_CFG_BURNPLAN_RECORDPACK_TYPE
{
    EM_CFG_BURNPLAN_RECORDPACK_TYPE_UNKNOWN,        // 未知
    EM_CFG_BURNPLAN_RECORDPACK_TYPE_DHAV,           // "DHAV"
    EM_CFG_BURNPLAN_RECORDPACK_TYPE_PS,             // "PS"
    EM_CFG_BURNPLAN_RECORDPACK_TYPE_ASF,            // "ASF"
    EM_CFG_BURNPLAN_RECORDPACK_TYPE_MP4,            // "MP4"
    EM_CFG_BURNPLAN_RECORDPACK_TYPE_TS,             // "TS"
}EM_CFG_BURNPLAN_RECORDPACK_TYPE;

// 刻录模式
typedef enum tagEM_CFG_BURNPLAN_MODE
{
    EM_CFG_BURNPLAN_MODE_UNKNOWN,           // 未知
    EM_CFG_BURNPLAN_MODE_SYNC,              // 同步: "Sync"
    EM_CFG_BURNPLAN_MODE_TURN,              // 轮流:  "Turn"
    EM_CFG_BURNPLAN_MODE_CYCLE,             // 循环:  "Cycle"
}EM_CFG_BURNPLAN_MODE;

// 刻录计划信息
typedef struct tagCFG_BURNPLAN_DETAIL
{
    int                                 nSessionId;                             // 审讯室
    int                                 nDevicesNum;                            // 参与该会话的设备列表有效个数
    int                                 nDevices[MAX_BURNPLAN_DEVICES_NUM];     // 参与该会话的设备列表
    int                                 nChannelsNum;                           // 刻录的视频通道有效个数
    int                                 nChannels[MAX_BURNPLAN_CHANNELS_NUM];   // 刻录的视频通道
    EM_CFG_BURNPLAN_RECORDPACK_TYPE     emRecordpack;                           // 刻录流格式
    EM_CFG_BURNPLAN_MODE                emMode;                                 // 刻录模式
    CFG_NET_TIME                        stuStarttime;                           // 刻录开始时间
}CFG_BURNPLAN_DETAIL;

#define MAX_BURNPLAN_DETAIL_NUM          32

// 刻录计划配置(对应CFG_BURNPLAN_INFO)
typedef struct tagCFG_BURNPLAN_INFO
{
    int                         nBurnPlanDetailNum;                                 // 刻录计划信息列表有效个数
    CFG_BURNPLAN_DETAIL         stuBurnPlanDetail[MAX_BURNPLAN_DETAIL_NUM];         // 刻录计划信息列表
}CFG_BURNPLAN_INFO;

typedef struct tagCFG_SCADA_DEV_INFO 
{
    BOOL                            bEnable;                // 是否启用
    char                            szDevType[CFG_COMMON_STRING_64];// 设备类型
    char                            szDevName[CFG_COMMON_STRING_64];// 设备名称, 唯一标示设备用
    int                             nSlot;                  // 虚拟槽位号, 详见AlarmSlotBond配置
    int                             nLevel;                 // 如果Slot绑定的是NetCollection类型的话,该字段为-1
    CFG_ALARM_MSG_HANDLE            stuEventHandler;        // 报警联动
}CFG_SCADA_DEV_INFO;

// 通道相关信息
typedef struct tagCFG_VSP_GAYS_CHANNEL_INFO
{
    char                            szId[CFG_COMMON_STRING_64];             // 通道编号	字符串(24位)
    int                             nAlarmLevel;                            // 报警级别[1,6]	整型
}CFG_VSP_GAYS_CHANNEL_INFO;

// 报警相关信息
typedef struct tagCFG_VSP_GAYS_ALARM_INFO
{
    char                            szId[CFG_COMMON_STRING_64];             // 通道编号	字符串(24位)
    int                             nAlarmLevel;                            // 报警级别[1,6]	整型
}CFG_VSP_GAYS_ALARM_INFO;

// 公安一所平台接入配置(CFG_CMD_VSP_GAYS)
typedef struct tagCFG_VSP_GAYS_INFO
{
    BOOL                            bEnable;                                // 是否使能,TRUE使能,FALSE不使能
    char                            szSipSvrId[CFG_COMMON_STRING_64];       // SIP服务器编号	字符串(24位)
    char                            szDomain[CFG_COMMON_STRING_256];        // SIP域	字符串(128位)
    char                            szSipSvrIp[CFG_COMMON_STRING_32];       // SIP服务器IP	字符串(16位)
    char                            szDeviceId[CFG_COMMON_STRING_64];       // 设备编号,也是注册用户名	字符串(24位)
    char                            szPassword[CFG_COMMON_STRING_64];       // 注册密码,密文	字符串(24位)
    unsigned short                  nLocalSipPort;                          // 本地SIP服务端口	无符号短整型
    unsigned short                  nSipSvrPort;                            // SIP服务器端口	无符号短整型
    int                             nSipRegExpires;                         // 注册有效期	整型
    int                             nKeepAliveCircle;                       // 心跳周期	整型
    int                             nMaxTimeoutTimes;                       // 最大心跳超时次数	整型
    char                            szCivilCode[CFG_COMMON_STRING_64];      // 行政区划代码	字符串(24位)
    char                            szIntervideoID[CFG_COMMON_STRING_64];   // 接入模块识别码	字符串(24位)
    unsigned short                  nChannelSum;                            // 通道数	无符号短整型
    unsigned short                  nAlarmInSum;                            // 外部报警输入数	无符号短整型
    CFG_VSP_GAYS_CHANNEL_INFO       stuChannelInfo[MAX_VIDEO_CHANNEL_NUM];  // 通道相关信息	数组,有效个数同channelSum
    CFG_VSP_GAYS_ALARM_INFO         stuAlarmInfo[MAX_ALARM_CHANNEL_NUM];    // 报警相关信息	数组,有效个数同alarmInSum
}CFG_VSP_GAYS_INFO;

// 音频检测报警配置(CFG_CMD_AUDIODETECT)
typedef struct tagCFG_AUDIO_DETECT_INFO
{
    BOOL                            bEnable;                                // 是否使能,TRUE使能,FALSE不使能
    int                             nMinVolume;                             // 音量下限
    int                             nMaxVolume;                             // 音量上限
    BOOL                            bAnomalyDetect;                         // 声音异常检测使能
    int                             nAnomalySensitive;                      // 声音异常检测灵敏度值	取值范围1~100
    BOOL                            bMutationDetect;                        // 声强突变检测使能
    int                             nMutationThreold;                       // 声强突变检测阈值	取值范围1~100
    CFG_ALARM_MSG_HANDLE            stuEventHandler;						// 联动配置
    BOOL                            bIntensityDetect;                       // 音频强度检测使能
    unsigned int                    nIntensityDecibelGate;                  // 音频强度检测分贝阈值, 单位分贝, 取值范围0~90
}CFG_AUDIO_DETECT_INFO;

// VTS呼叫配置(对应命令 CFG_CMD_VTS_CALL_INFO)
typedef struct tagCFG_VTS_CALL_INFO 
{
    CFG_TIME_SECTION                stuCallEnableTime;                      // 允许呼叫VTS的时间段
}CFG_VTS_CALL_INFO;

// 设备列表配置中每个设备的信息
typedef struct tagCFG_DEV_LIST
{
    char                            szDevType[CFG_COMMON_STRING_128];       // 设备类型, 支持: "VTT", "VTS"
    char                            szDevName[CFG_COMMON_STRING_128];       // 设备名称
    char                            szIP[MAX_ADDRESS_LEN];                  // ip地址
    int                             nPort;                                  // 端口号
    char                            szUser[CFG_COMMON_STRING_64];           // 用户名
    char                            szPassword[CFG_COMMON_STRING_64];       // 密码
    char                            szDevID[CFG_COMMON_STRING_128];         // 设备ID号, 必须唯一
    char                            szParentID[CFG_COMMON_STRING_128];      // 父节点ID, 必须唯一
}CFG_DEV_LIST;

// 设备列表配置(对应命令 CFG_CMD_DEV_LIST_INFO)
typedef struct tagCFG_DEV_LIST_INFO 
{
    CFG_DEV_LIST*                   pstuDevList;                            // 配置信息, 用户分配内存,大小为sizeof(CFG_DEV_LIST)*dwDevListMaxCount
    DWORD                           dwDevListMaxCount;                      // pstuDevList分配内存的有效结构体个数
    DWORD                           dwDevListRetCount;                      // 实际返回的结构体个数, 解析成结构体时有效
}CFG_DEV_LIST_INFO;

#define MAX_CALIBRATE_MATRIX_LEN    8       // 标定矩阵最大长度

#define MAX_CALIBRATE_MATRIX_EX_LEN 32      // 标定矩阵最大长度(扩展)
#define MAX_POINT_PAIR_LEN			10		// 主从跟踪标定点对数组最大长度

// 主从式跟踪器标定矩阵配置(对应 CFG_CMD_CALIBRATE_MATRIX 命令)
typedef struct tagCFG_CALIBRATE_MATRIX_INFO 
{
    char                szSlaveSN[CFG_COMMON_STRING_128];                   // 从设备序列号
    DWORD               dwMatrixLen;                                        // 标定矩阵中有效dword个数
    DWORD               dwMatrix[MAX_CALIBRATE_MATRIX_LEN];                 // 标定矩阵, 是一个128字节的二进制串, 为提高解析效率, 保存为32个uint32_t值
}CFG_CALIBRATE_MATRIX_INFO;

// 主相机标定点坐标(8192坐标系)
typedef struct tagCFG_MASTER_POINT
{
	int 	nX;
	int		nY;
} CFG_MASTER_POINT;

// 从相机(球机)标定点坐标(ptz归一化坐标)
typedef struct tagCFG_SLAVE_POINT
{
	float                    fPositionX;           //云台水平运动位置
	float                    fPositionY;           //云台垂直运动位置
	float                    fZoom;
} CFG_SLAVE_POINT;


//主从跟踪标定点对配置
typedef struct tagCFG_POINT_PAIR
{
    CFG_MASTER_POINT     	stuMasterPoint;           // 主相机标定点,8192坐标系
    CFG_SLAVE_POINT			stuSlavePoint;            // 从相机(球机)标定点,PTZ归一化坐标
} CFG_POINT_PAIR;

// 主从跟踪器标定配置具体值
typedef struct tagCFG_CALIBRATE_MATRIX_ELEMENT
{
	char                szMasterSN[CFG_COMMON_STRING_128];		// 主设备序列号(可选)
    char                szSlaveSN[CFG_COMMON_STRING_128];		// 从设备序列号
    DWORD               dwMatrixLen;							// 标定矩阵中有效dword个数
    DWORD               dwMatrix[MAX_CALIBRATE_MATRIX_EX_LEN];	// 标定矩阵, 是一个128字节的二进制串, 为提高解析效率, 保存为32个uint32_t值
    DWORD               dwPointPairNum;							// 主从跟踪标定点对的数量
    CFG_POINT_PAIR      stuPointPair[MAX_POINT_PAIR_LEN];		// 主从跟踪标定点对(可选),是一个数组,最多保存10组标定点对
	BOOL				bExpectRatio;							// 表示是否需要期望倍率配置
	float               szExpectRatio[2];						// 期望倍率(可选,当bExpectRatio为TRUE时有效), 第一个值为云台T坐标,归一化[-1.0, 1.0],第二个值为比例
} CFG_CALIBRATE_MATRIX_ELEMENT;

// 主从式跟踪器标定矩阵扩展配置(对应 CFG_CMD_CALIBRATE_MATRIX命令)
typedef struct tagCFG_CALIBRATE_MATRIX_EX_INFO 
{
    DWORD							 nMaxCalibElement;			// 主从跟踪器标定矩阵配置元素最大个数
	DWORD							 nRetCalibElement;			// 主从跟踪器标定矩阵配置元素实际个数
	CFG_CALIBRATE_MATRIX_ELEMENT	*pstCaliMatrixElement;		// 主从跟踪器标定矩阵配置每个元素值,由用户申请内存,大小为sizeof(CFG_CALIBRATE_MATRIX_ELEMENT)*nMaxCalibElement
} CFG_CALIBRATE_MATRIX_EX_INFO;

// 防区延时配置(对应 CFG_CMD_DEFENCE_AREA_DELAY 命令)
typedef struct tagCFG_DEFENCE_AREA_DELAY_INFO 
{
    int                 nEnterDelay1;           // 有进入延时的防区类型,除防区类型EM_CFG_DefenceAreaType_Entrance2外, 都使用此进入延时
    int                 nEnterDelay2;           // 只有防区类型为EM_CFG_DefenceAreaType_Entrance2, 才会使用此进入延时
    int                 nExitDelay;             // 所有有退出延时的防区, 都使用此退出延时
}CFG_DEFENCE_AREA_DELAY_INFO;

// 热成像增益模式
typedef enum tagCFG_THERMO_GAIN_MODE 
{
    CFG_THERMO_GAIN_MODE_UNKNOWN,
    CFG_THERMO_GAIN_MODE_HIGHTEMP,                      // 高温
    CFG_THERMO_GAIN_MODE_LOWTEMP,                       // 低温
    CFG_THERMO_GAIN_MODE_AUTO,                          // 自动
} CFG_THERMO_GAIN_MODE;

// 热成像自动增益设置
typedef struct tagCFG_THERMO_AUTO_GAIN
{
    int                         nLowToHigh;             // 温度超过此设定值时,自动切换到高温模式
    int                         nLHROI;                 // 由低温切换到高温时的ROI 百分比0~100
    int                         nHighToLow;             // 温度下降到此设定值时,自动切换到低温模式
    int                         nHLROI;             	// 由高温切换到低温时的ROI 百分比0~100
} CFG_THERMO_AUTO_GAIN;

//增益设置
typedef struct tagCFG_THERMO_GAIN
{
    int                         nAgc;                   // 自动增益控制 [0-255]具体取值范围由能力决定
    int                         nAgcMaxGain;            // 最大自动增益 [0-255]具体取值范围由能力决定
    int                         nAgcPlateau;            // 增益均衡 具体取值范围由能力决定
}CFG_THERMO_GAIN;

// 热成像配置,单个模式的配置
typedef struct tagCFG_THERMOGRAPHY_OPTION
{
	int                         nEZoom;                 // 倍数
	int                         nThermographyGamma;     // 伽马值
	int                         nColorization;	        // 伪彩色,见 NET_THERMO_COLORIZATION
	int                         nSmartOptimizer;        // 智能场景优化指数 0 ~100, 具体取值范围由能力决定
    BOOL                        bOptimizedRegion;       // 是否开启感兴趣区域,只有感兴趣区域内的信息会被纳入统计用来做自动亮度调整(AGC) 
	int                         nOptimizedROIType;      // 感兴趣区域类型,见 NET_THERMO_ROI
	int                         nCustomRegion;          // 自定义区域个数
	CFG_RECT                    stCustomRegions[64];    // 自定义区域,仅在 nOptimizedROIType 为 NET_THERMO_ROI_CUSTOM 时有效
    char                        Reserved[256];          // 此保留字段确保此结构布局与 NET_THERMO_GRAPHY_INFO 相同
    CFG_THERMO_GAIN             stuLowTempGain;         // 低温下的增益设置
    int                         nGainMode;              // 增益模式,参见 CFG_THERMO_GAIN_MODE
    CFG_THERMO_AUTO_GAIN        stAutoGain;             // 自动增益设置,只在增益模式为 CFG_THERMO_GAIN_MODE_AUTO 有效
    CFG_THERMO_GAIN             stuHighTempGain;        // 高温下的增益设置
    int                         nBaseBrightness;        // 基准亮度
    int                         nStretchIntensity;      // 拉伸强度
    CFG_RECT                    stuContrastRect;        // 区域增强位置,增加本区域与周边的对比度,8192坐标系
} CFG_THERMOGRAPHY_OPTION;

// 热成像配置
typedef struct tagCFG_THERMOGRAPHY_INFO
{
	int                         nModeCount;             // 模式个数,目前只有一个
	CFG_THERMOGRAPHY_OPTION     stOptions[16];          // 对应不同模式的配置
} CFG_THERMOGRAPHY_INFO;

// 平场聚焦校准模式
typedef enum tagEM_FLAT_FIELD_CORRECTION_MODE
{
    EM_FLAT_FIELD_CORRECTION_UNKNOWN,                   //  未知模式,用于表示GetNewDevConfig获取到的未知模式,SetNewDevConfig不可使用该模式
    EM_FLAT_FIELD_CORRECTION_AUTO,                      // "Auto":自动平场聚焦校准
    EM_FLAT_FIELD_CORRECTION_MANUAL,                    // "Manual":手动平场聚焦校准
}EM_FLAT_FIELD_CORRECTION_MODE;

// 平场聚焦校准
typedef struct tagCFG_FLAT_FIELD_CORRECTION_INFO
{
    EM_FLAT_FIELD_CORRECTION_MODE   emMode;             // 平场聚焦校准模式,详见EM_FLAT_FIELD_CORRECTION_MODE
    int                             nPeriod;            // 自动切换周期,单位为秒,数值范围参考NET_OUT_THERMO_GETCAPS中的stFFCPeriod
} CFG_FLAT_FIELD_CORRECTION_INFO;

// 热成像视频融合配置
typedef struct tagCFG_THERMO_FUSION_INFO
{
    unsigned int                unMode;                 // 热成像图像融合模式,0原始热成像图像,1 与可见光融合模式
    unsigned int                unRate;                 // 热成像图像融合率,当Mode=1时有效,0~100数值越大可见光的占比越大
} CFG_THERMO_FUSION_INFO;

// 热成像摄像头属性的局部对比度增强配置
typedef struct tagCFG_LCE_STATE_INFO
{
    unsigned int              unLCEValue;               // 局部对比度增强状态值 范围[0,128]
    unsigned int              unHistGramValue;          // 直方图Y轴数据线性度,值越大图像灰度分布越宽,值越小灰度分布越集中,范围[0,32]
} CFG_LCE_STATE_INFO;

// 统计量类型
typedef enum tagCFG_STATISTIC_TYPE
{
	CFG_STATISTIC_TYPE_UNKNOWN,
	CFG_STATISTIC_TYPE_VAL, // 具体值
	CFG_STATISTIC_TYPE_MAX, // 最大
	CFG_STATISTIC_TYPE_MIN, // 最小
	CFG_STATISTIC_TYPE_AVR, // 平均
	CFG_STATISTIC_TYPE_STD, // 标准
	CFG_STATISTIC_TYPE_MID, // 中间
	CFG_STATISTIC_TYPE_ISO, // ISO
} CFG_STATISTIC_TYPE;

// 比较运算结果
typedef enum tagCFG_COMPARE_RESULT
{
	CFG_COMPARE_RESULT_UNKNOWN,
	CFG_COMPARE_RESULT_BELOW, // 低于
	CFG_COMPARE_RESULT_MATCH, // 匹配
	CFG_COMPARE_RESULT_ABOVE, // 高于
} CFG_COMPARE_RESULT;

// 测温点报警设置
typedef struct tagRADIOMETRY_ALARMSETTING 
{
	int                         nId;                    // 报警唯一编号	报警编号统一编码
	BOOL                        bEnable;                // 是否开启该点报警
    int                         nResultType;            // 测温报警结果类型,见 CFG_STATISTIC_TYPE,可取值:
                                                        // 点测温:具体值,
                                                        // 线测温:最大, 最小, 平均
                                                        // 区域测温:最大, 最小, 平均, 标准, 中间, ISO
	int                         nAlarmCondition;        // 报警条件,见 CFG_COMPARE_RESULT
	float                       fThreshold;             // 报警阈值温度	浮点数
	float                       fHysteresis;            // 温度误差,浮点数,比如0.1 表示正负误差在0.1范围内
	int                         nDuration;              // 阈值温度持续时间	单位:秒
} CFG_RADIOMETRY_ALARMSETTING;

// 测温规则本地参数配置
typedef struct tagRADIOMETRY_LOCALPARAM
{
	BOOL                        bEnable;                // 是否启用本地配置
	float                       fObjectEmissivity;      // 目标辐射系数	浮点数 0~1
	int                         nObjectDistance;        // 目标距离	
	int                         nRefalectedTemp;        // 目标反射温度
} CFG_RADIOMETRY_LOCALPARAM;

// 区域测温的子类型
typedef enum tagEM_CFG_AREA_SUBTYPE
{
	EM_CFG_AREA_SUBTYPE_UNKNOWN,		
	EM_CFG_AREA_SUBTYPE_RECT,		// 矩形
	EM_CFG_AREA_SUBTYPE_ELLIPSE,	// 椭圆
	EM_CFG_AREA_SUBTYPE_POLYGON,	// 多边形
} EM_CFG_AREA_SUBTYPE;

// 测温规则
typedef struct tagCFG_RADIOMETRY_RULE
{
	BOOL                        bEnable;                // 测温使能
	int                         nPresetId;              // 预置点编号
	int                         nRuleId;                // 规则编号
	char                        szName[128];            // 自定义名称
	int                         nMeterType;             // 测温模式的类型,见 NET_RADIOMETRY_METERTYPE
	CFG_POLYGON                 stCoordinates[64];      // 测温点坐标	使用相对坐标体系,取值均为0~8191
	int                         nCoordinateCnt;         // 测温点坐标实际个数
	int                         nSamplePeriod;          // 温度采样周期	单位 : 秒
	CFG_RADIOMETRY_ALARMSETTING stAlarmSetting[64];     // 测温点报警设置
	int                         nAlarmSettingCnt;       // 测温点报警设置实际个数
	CFG_RADIOMETRY_LOCALPARAM   stLocalParameters;      // 本地参数配置
	EM_CFG_AREA_SUBTYPE			emAreaSubType;			// 区域测温的子类型			
} CFG_RADIOMETRY_RULE;

// 测温规则配置结构
typedef struct tagCFG_RADIOMETRY_RULE_INFO
{
    int                         nCount;                 // 规则个数
    CFG_RADIOMETRY_RULE         stRule[512];			// 测温规则
} CFG_RADIOMETRY_RULE_INFO;

// 温度统计
typedef struct tagCFG_TEMP_STATISTICS
{
	BOOL                        bEnable;                // 是否开启温度统计
	char                        szName[128];            // 测温项的名字
	int                         nMeterType;             // 测温模式的类型,见 NET_RADIOMETRY_METERTYPE
	int                         nPeriod;                // 保存温度数据周期
} CFG_TEMP_STATISTICS;

// 温度统计配置结构
typedef struct tagCFG_TEMP_STATISTICS_INFO
{
	int                         nCount;                 // 个数
	CFG_TEMP_STATISTICS         stStatistics[64];       // 温度统计
} CFG_TEMP_STATISTICS_INFO;

// 温度单位
typedef enum tagCFG_TEMPERATURE_UNIT
{
	TEMPERATURE_UNIT_UNKNOWN,
	TEMPERATURE_UNIT_CENTIGRADE, // 摄氏度
	TEMPERATURE_UNIT_FAHRENHEIT, // 华氏度
} CFG_TEMPERATURE_UNIT;

// 热成像测温全局配置
typedef struct tagCFG_THERMOMETRY_INFO
{
    int                         nRelativeHumidity;          // 相对湿度
    float                       fAtmosphericTemperature;    // 大气温度
    float                       fObjectEmissivity;          // 物体辐射系数
    int                         nObjectDistance;            // 物体距离
    float                       fReflectedTemperature;      // 物体反射温度
    int                         nTemperatureUnit;           // 温度单位,见 TEMPERATURE_UNIT
    BOOL                        bIsothermEnable;            // 色标功能使能
    int                         nMinLimitTemp;              // 等温线下限温度值
    int                         nMediumTemp;                // 等温线中位温度值	
    int                         nMaxLimitTemp;              // 等温线上限温度值
    int                         nSaturationTemp;            // 等温线饱和温度值
    CFG_RECT                    stIsothermRect;             // 色温条矩形区域(OSD 位置),使用相对坐标体系,取值均为0-8191
    BOOL                        bColorBarDisplay;           // 是否显示色标条(OSD 叠加)
    BOOL                        bHotSpotFollow;             // 是否开启热点探测追踪使能
    BOOL                        bTemperEnable;              // 测温开关
    CFG_RGBA                    stHighCTMakerColor;         // 高色温标注颜色
    CFG_RGBA                    stLowCTMakerColor;          // 低色温标注颜色
} CFG_THERMOMETRY_INFO;

// 近光灯信息
typedef struct tagCFG_NEARLIGHT_INFO
{
    BOOL                bEnable;                // 是否使能,TRUE使能,FALSE不使能
    DWORD               dwLightPercent;         // 灯光亮度百分比值(0~100)
    DWORD               dwAnglePercent;         // 灯光角度百分比值(0~100)
}CFG_NEARLIGHT_INFO;

// 远光灯信息
typedef struct tagCFG_FARLIGHT_INFO 
{
    BOOL                bEnable;                // 是否使能,TRUE使能,FALSE不使能
    DWORD               dwLightPercent;         // 灯光亮度百分比值(0~100)
    DWORD               dwAnglePercent;         // 灯光角度百分比值(0~100)
}CFG_FARLIGHT_INFO;

// 灯光模式
typedef enum tagEM_CFG_LIGHTING_MODE
{
    EM_CFG_LIGHTING_MODE_UNKNOWN,               // 未知
    EM_CFG_LIGHTING_MODE_MANUAL,                // 手动
    EM_CFG_LIGHTING_MODE_ZOOMPRIO,              // 倍率优先
    EM_CFG_LIGHTING_MODE_TIMING,                // 定时模式
    EM_CFG_LIGHTING_MODE_AUTO,                  // 自动
    EM_CFG_LIGHTING_MODE_OFF,                   // 关闭模式
}EM_CFG_LIGHTING_MODE;

#define MAX_LIGHTING_NUM         16

// 灯光设置详情
typedef struct tagCFG_LIGHTING_DETAIL
{
    int                                 nCorrection;                     // 灯光补偿 (0~4) 倍率优先时有效
    int                                 nSensitive;                      // 灯光灵敏度(0~5)倍率优先时有效,默认为3
    EM_CFG_LIGHTING_MODE                emMode;                          // 灯光模式
    int                                 nNearLight;                      // 近光灯有效个数
    CFG_NEARLIGHT_INFO                  stuNearLights[MAX_LIGHTING_NUM]; // 近光灯列表
    int                                 nFarLight;                       // 远光灯有效个数
    CFG_FARLIGHT_INFO                   stuFarLights[MAX_LIGHTING_NUM];  // 远光灯列表
}CFG_LIGHTING_DETAIL;

#define MAX_LIGHTING_DETAIL_NUM  16

// 灯光设置(对应 CFG_CMD_LIGHTING 命令)
typedef struct tagCFG_LIGHTING_INFO
{
    int                         nLightingDetailNum;                         // 灯光设置有效个数
    CFG_LIGHTING_DETAIL         stuLightingDetail[MAX_LIGHTING_DETAIL_NUM]; // 灯光设置信息列表
}CFG_LIGHTING_INFO;

// 灯光计划设置(对应 CFG_CMD_LIGHTINGSCHEDULE 命令),当 CFG_CMD_LIGHTING 配置中Mode为Timing时有效
typedef struct tagCFG_LIGHTINGSCHEDULE_INFO
{
    CFG_TIME_SCHEDULE           stuTimeSchedule;                            // 报警计划
}CFG_LIGHTINGSCHEDULE_INFO;

// 雨刷工作模式
typedef enum tagEM_CFG_RAINBRUSHMODE_MODE
{
    EM_CFG_RAINBRUSHMODE_MODE_UNKNOWN,          // 未知
    EM_CFG_RAINBRUSHMODE_MODE_MANUAL,           // 手动模式
    EM_CFG_RAINBRUSHMODE_MODE_TIMING,           // 定时模式
	EM_CFG_RAINBRUSHMODE_MODE_AUTO,				// 自动感应模式
}EM_CFG_RAINBRUSHMODE_MODE;

// 雨刷使能电平模式
typedef enum tagEM_CFG_RAINBRUSHMODE_ENABLEMODE
{
    EM_CFG_RAINBRUSHMODE_ENABLEMODE_UNKNOWN,     // 未知
    EM_CFG_RAINBRUSHMODE_ENABLEMODE_LOW,         // 低电平有效(常闭)
    EM_CFG_RAINBRUSHMODE_ENABLEMODE_HIGH,        // 高电平有效(常开)
}EM_CFG_RAINBRUSHMODE_ENABLEMODE;

// 雨刷模式相关配置(对应 CFG_RAINBRUSHMODE_INFO 命令)
typedef struct tagCFG_RAINBRUSHMODE_INFO
{
    EM_CFG_RAINBRUSHMODE_MODE       emMode;         // 雨刷工作模式
    EM_CFG_RAINBRUSHMODE_ENABLEMODE emEnableMode;   // 雨刷使能电平模式
    int                             nPort;          // 雨刷使用的IO端口,-1表示未接入设备,-2表示该字段无效(设备未传送该字段)
	int								nSensitivity;	// 雨刷灵敏度, 只有当mode为Auto时有效, 范围[0, 10]
}CFG_RAINBRUSHMODE_INFO;

#define MAX_EMERGENCY_REOCRD_CLIENT_NUM         8       // 可以紧急录像存储的最大客户端数

// 客户端的紧急录像配置信息
typedef struct tagCFG_EMERGENCY_RECORD_CLIENT 
{
    char        szDevID[CFG_COMMON_STRING_128];         // 客户端字符串标识作为对象名称,可以是客户端mac地址,若客户端是设备,则使用设备序列号
    BOOL        bEnable;                                // 使能
    int         nMaxTime;                               // 拉流异常断开之后进行紧急存储的最大时间, 
}CFG_EMERGENCY_RECORD_CLIENT;

// 紧急录像存储配置(对应 CFG_CMD_EMERGENCY_RECORD_FOR_PULL)
typedef struct tagCFG_EMERGENCY_RECORD_FOR_PULL_INFO 
{
    int         nClientNum;                             // 有效客户端紧急录像配置个数
    CFG_EMERGENCY_RECORD_CLIENT stuEmRecordInfo[MAX_EMERGENCY_REOCRD_CLIENT_NUM];// 客户端紧急录像配置信息 
}CFG_EMERGENCY_RECORD_FOR_PULL_INFO;

// 高频次报警
typedef struct tagCFG_HIGH_FREQUENCY 
{
    int         nPeriod;                            // 统计周期, 以秒为单位, 默认30分钟(1800s)
    int         nMaxCount;                          // 在对应统计周期内最大允许上报报警数
}CFG_HIGH_FREQUENCY;

// 告警屏蔽规则配置(对应 CFG_CMD_ALARM_SHIELD_RULE)
typedef struct tagCFG_ALARM_SHIELD_RULE_INFO 
{
    CFG_HIGH_FREQUENCY  stuHighFreq;                // 高频次报警, 在一定周期内允许上报的报警次数,以此过滤对于报警的频繁上报导致信息干扰
}CFG_ALARM_SHIELD_RULE_INFO;

#define CFG_MAX_VIDEOIN_ANALYSER_NUM        3       // 每个视频通道内的最大视频分析器数量
#define CFG_MAX_ANALYSE_RULE_GROUP_NUM      8       // 视频分析规则组最大数量

// 智能分析规则组, 一个组中包含同类型的多条规则
typedef struct tagCFG_ANALYSERULE_GROUP
{
    DWORD				dwRuleType;					// 规则类型,详见dhnetsdk.h中"智能分析事件类型"
    int                 nRuleStructSize;            // 规则类型对应的规则结构的大小, parse时的输出参数, packet时是输入参数
    BOOL                bEnable;                    // 使能
    BOOL                bEventHandlerEnable;        // 报警联动使能, TRUE规则组报警联动使能, 组内所有规则使用共同的联动项; FALSE使用规则中各自的联动项
    CFG_ALARM_MSG_HANDLE stuEventHandler;			// 规则组报警联动
    CFG_TIME_SCHEDULE   stuEventTimeSection;        // 规则组报警联动时间表
    int                 nRuleNum;                   // 规则数量, parse时的输出参数, packet时是输入参数
    char*               pRuleBuf;                   // 规则缓冲, 需要用户分配内存, 用于存放规则信息
                                                    // 如规则类型为警戒线, pRuleBuf的内容就是多个CFG_CROSSLINE_INFO
    int                 nRuleBufSize;               // 规则缓冲大小, 用户填写
}CFG_ANALYSERULE_GROUP;

// 视频分析器信息
typedef struct tagCFG_VIDEO_IN_ANALYSER_INFO
{
    CFG_ANALYSEGLOBAL_INFO  stuGlobal;              // 全局配置
    CFG_ANALYSEMODULES_INFO stuModules;             // 模块配置
    CFG_ANALYSERULE_GROUP	stuRuleGroup[CFG_MAX_ANALYSE_RULE_GROUP_NUM]; // 规则配置, 数组内元素的规则缓冲需要用户分配内存
    int                     nRuleGroupNum;          // 规则组数量
}CFG_VIDEOIN_ANALYSER_INFO;

// 视频通道内的智能规则, 该结构体很大, 使用时在堆中分配内存
typedef struct tagCFG_VIDEO_IN_ANALYSE_RULE_INFO
{
    int                     nAnalyserNum;                               // 分析器数量
    CFG_VIDEOIN_ANALYSER_INFO stuAnalysers[CFG_MAX_VIDEOIN_ANALYSER_NUM]; // 分析器信息
}CFG_VIDEOIN_ANALYSE_RULE_INFO;

typedef enum tagEM_CFG_ACCESS_WORD_MODE
{
    EM_CFG_ACCESS_WORD_MODE_UNKNOWN,                // 未知
    EM_CFG_ACCESS_WORD_MODE_NORMAL,                 // "Normal" 正常模式
    EM_CFG_ACCESS_WORD_MODE_CLEAN,                  // "Clean"  打扫模式
    EM_CFG_ACCESS_WORD_MODE_DECORATION,             // "Decoration"  装修模式
    EM_CFG_ACCESS_WORD_MODE_UNUSED,                 // "Unused" 停用模式
    EM_CFG_ACCESS_WORD_MODE_OUTSTANDING,            // "Outstanding" 欠费模式
}EM_CFG_ACCESS_WORD_MODE;

// 门锁工作模式(对应 CFG_CMD_ACCESS_WORK_MODE)
typedef struct tagCFG_ACCESS_WORK_MODE_INFO 
{
    EM_CFG_ACCESS_WORD_MODE  emMode;                // 工作模式
}CFG_ACCESS_WORK_MODE_INFO;

// 对讲远程方时间限制
typedef struct tagCFG_VIDEO_TALK_TIME_LIMIT
{
    int                                 nMaxRingingTime;      // 来电振铃最大时长,超时自动挂断, 1-600秒
    int                                 nMaxConnectingTime;   // 最大通话时长,超时自动挂断, 1-600分钟
    UINT                                nMaxLeaveWordTime;    // 最大自动留言时长,超时自动结束,1-600秒
} CFG_VIDEO_TALK_TIME_LIMIT;

// 远程设备类型
typedef enum tagEM_CFG_VT_TYPE
{
    EM_CFG_VT_TYPE_VTH = 0,                                   // VTH
    EM_CFG_VT_TYPE_VTO,                                       // VTO
    EM_CFG_VT_TYPE_VTS,                                       // VTS
    EM_CFG_VT_TYPE_MAX,
} EM_CFG_VT_TYPE;

// 视频对讲电话通用配置(CFG_CMD_VIDEO_TALK_PHONE_GENERAL)
typedef struct tagCFG_VIDEO_TALK_PHONE_GENERAL
{
    char                                szRingFile[MAX_PATH];               // 铃声文件路径
    int                                 nRingVolume;                        // 铃音音量, 0-100
    int                                 nTalkVolume;                        // 通话音量, 0-100
    CFG_NET_TIME                        stuDisableRingStartTime;            // 免扰开始时间
    CFG_NET_TIME                        stuDisableRingEndTime;              // 免扰结束时间
    CFG_VIDEO_TALK_TIME_LIMIT           stuTimeLimit[EM_CFG_VT_TYPE_MAX];   // 每个元素对应一种远程设备类型,当前只有VTS有效
                                                                            // 0-VTH,1-VTO,2-VTS
    int                                 nMaxMonitorTime;                    // 监视最大时长,超时自动结束, 1-600分钟
    int                                 nMaxRecordTime;                     // 录像最大时长,超时自动结束, 15-300秒
    BOOL                                bSnapEnable;                        // 呼叫联动抓图使能
                                                                            // 抓图后上传路径见配置项RecordStoragePoint的EventSnapShot
    BOOL                                bRingSoundEnable;                   // 呼叫铃声使能
    char                                szVthRingFile[CFG_COMMON_STRING_128];   // 室内机被室内机呼叫的铃声文件
    UINT                                nVthRingVolume;                     // 室内机被室内机呼叫铃声音量
    BOOL                                bLeaveMsgSoundEnable;               // 留影留言提示声使能
    BOOL                                bSilenceEnable;                     // 是否静音
    UINT                                nMaxMonitorIPCTime;                 // IPC监视最大时长,超时自动结束,0-10小时,单位为秒
    UINT                                nReviseTime;                        // 免扰时间使用,当系统时间改变的时候,增加这个时间来产生新的免扰结束时间,单位秒
    BOOL                                bTalkRecordUpload;                  // 呼叫记录是否上传
    UINT                                nSnapShotCount;                     // 呼叫抓拍图片张数,1-5张
    BOOL                                bRemoteControl;                     // 是否接受远程控制操作
                                                                            // true时,在客户端可远程操作设备上智能家居设备、设备的布撤防动作。
    BOOL                                bLeaveMessageEnable;                // 留言记录是否开启
    BOOL                                bLeaveMessageUpload;                // 留言记录是否上传
    BOOL                                bLocalVideoEnable;                  // 本地视频是否开启
    BOOL                                bPublishInfoOverlayingEnable;       // 公告信息叠加使能控制                                 
} CFG_VIDEO_TALK_PHONE_GENERAL;

// 抓图合成配置
typedef struct tagCFG_TRAFFIC_SNAP_MOSAIC_INFO
{
    BOOL                                bEnable;                            // 是否做图片合成
    int                                 nPicCompressRate;                   // 图片压缩比,10-100
    BOOL                                bUploadNormalSnap;                  // 是否上传原始图片
} CFG_TRAFFIC_SNAP_MOSAIC_INFO;

// 交通抓拍次数
#define TRAFFIC_SNAP_COUNT 4

// 抓拍设置,对应一个规则
typedef struct tagCFG_SNAPSHOT_RULE
{
    int                                 nType;                              // 见 dhnetsdk.h 中“智能分析事件类型”宏定义
    int                                 nRepeatInterval;                    // 1~1440,单位:分钟,默认1440
    int                                 nSnapShotType[TRAFFIC_SNAP_COUNT];  // 抓拍类型数组,0:未定义,1:近景,2:远景
    int                                 nSingleInterval[TRAFFIC_SNAP_COUNT];// 抓图时间间隔数组,
                                                                            // 第一个时间:5~180 默认10 (违章停车规则有效)单位秒
                                                                            // 第二、三、四个时间:1秒~60分默认20秒
} CFG_SNAPSHOT_RULE;

// 抓拍设置,对应一个场景
typedef struct tagCFG_SCENE_SNAPSHOT_RULE
{
    int                                 nPresetID;                          // 场景预置点号
    int                                 nCount;                             // 规则个数
    CFG_SNAPSHOT_RULE                   stRule[32];                         // 单规则设置
} CFG_SCENE_SNAPSHOT_RULE;

// 场景抓拍设置
typedef struct tagCFG_SCENE_SNAPSHOT_RULE_INFO
{
    int                                 nCount;                             // 场景个数
    CFG_SCENE_SNAPSHOT_RULE             stScene[32];                        // 单场景配置
} CFG_SCENE_SNAPSHOT_RULE_INFO;

#define CFG_MAX_PTZTOUR_NUM             64          // 巡航路径数量
#define CFG_MAX_PTZTOUR_PRESET_NUM      64          // 巡航路径包含的预置点数量

// 巡航路径中的预置点
typedef struct tagCFG_PTZTOUR_PRESET 
{
    int             nPresetID;              // 预置点编号
    int             nDuration;              // 在改预置点的停留时间, 单位秒
    int             nSpeed;                 // 到达该预置点的转动速度, 1~10
} CFG_PTZTOUR_PRESET;

// 巡航路径
typedef struct tagCFG_PTZTOUR_SINGLE 
{
    BOOL                        bEnable;                                    // 使能
    char                        szName[CFG_COMMON_STRING_64];               // 名称
    int                         nPresetsNum;                                // 预置点数量
    CFG_PTZTOUR_PRESET          stPresets[CFG_MAX_PTZTOUR_PRESET_NUM];      // 该路径包含的预置点参数
} CFG_PTZTOUR_SINGLE;

// 云台巡航路径配置
typedef struct tagCFG_PTZTOUR_INFO 
{
    int                         nCount;                                     // 巡航路径数量
    CFG_PTZTOUR_SINGLE          stTours[CFG_MAX_PTZTOUR_NUM];               // 巡航路径, 每个通道包含多条巡航路径
} CFG_PTZTOUR_INFO;

// 门口机类型
typedef enum tagEM_CFG_VTO_TYPE
{
    EM_CFG_VTO_TYPE_UNKNOW =0   , //未知
    EM_CFG_VTO_TYPE_VTO         , //单元门口机
    EM_CFG_VTO_TYPE_WALL        , //围墙机
	EM_CFG_VTO_TYPE_MAX			,
}EM_CFG_VTO_TYPE;

// 门口机信息
typedef struct tagCFG_VTO_INFO 
{
    BOOL            bEnable;                                    // 使能
    char            szID[CFG_COMMON_STRING_64];                 // 门口机标识
    char            szIP[CFG_COMMON_STRING_64];                 // IP地址
    unsigned int    nPort;                                      // 端口
    EM_CFG_VTO_TYPE emType;                                     // 门口机类型
    char            szMidNum[CFG_COMMON_STRING_32];             // 门口机中号
    char            szMachineAddress[CFG_COMMON_STRING_128];    // 门口机所处位置
    char            szLoginUsername[CFG_COMMON_STRING_32];      // 三代登录用户名
    char            szLoginPassWord[CFG_COMMON_STRING_32];      // 三代登录密码    
    char            szRingFile[CFG_COMMON_STRING_256];          //门口机呼叫室内机,室内机的铃声文件	
    int             nRingVolume;                                // 室内机的铃声大小
    
    BYTE            byReserved[4];                              // 用于字节对齐
    BOOL            bUseEx;                                     // 扩展的用户名和密码是否有效
    char            szLoginUsernameEx[CFG_COMMON_STRING_128];   // 三代登录用户名扩展,设备当前最大支持32位长度且不包含'\0',改动是为了兼容设备 
    char            szLoginPassWordEx[CFG_COMMON_STRING_128];   // 三代登录密码扩展,设备当前最大支持32位长度且不包含'\0',改动是为了兼容设备
}CFG_VTO_INFO;

// 门口机信息列表
typedef struct tagCFG_VTO_LIST 
{
    int             nVTONum;                            // 门口机数量
    CFG_VTO_INFO    stuVTOInfos[CFG_MAX_VTO_NUM];       // 门口机信息
}CFG_VTO_LIST;

//触摸屏坐标点
typedef struct tagCFG_TS_POINT
{
    unsigned int     nX;     //坐标范围[0 - 65535]
    unsigned int     nY;     //坐标范围[0 - 65535]
}CFG_TS_POINT;

//触摸屏校准配置
typedef struct tagCFG_TSPOINT_INFO
{
    CFG_TS_POINT         stDisplay[TS_POINT_NUM];         //显示坐标,现在只支持3个点
    CFG_TS_POINT         stScreen[TS_POINT_NUM];          //屏幕坐标,现在只支持3个点
}CFG_TSPOINT_INFO;

//室内机类型
typedef enum tagEM_CFG_VTH_TYPE
{
    EM_CFG_VTH_TYPE_UNKNOW=0 ,   // 未知
    EM_CFG_VTH_TYPE_MAIN     ,   // 主室内机
    EM_CFG_VTH_TYPE_SUB      ,   // 子室内机
}EM_CFG_VTH_TYPE;

//设备使用场景
typedef enum tagEM_CFG_VTH_APPTYPE
{
    EM_CFG_VTH_APPTYPE_UNKNOW=0 , //未知
    EM_CFG_VTH_APPTYPE_COMMON   , //正常室内机
    EM_CFG_VTH_APPTYPE_MANAGER  , //管理中心
}EM_CFG_VTH_APPTYPE;

//室内机号码信息
typedef struct tagCFG_VTH_NUMBER_INFO
{
    char                szShortNumber[CFG_COMMON_STRING_32];    // 短号 范围[1,9999],标示不同室内机;如果是室内分机,短号则为"9901-N" N为1,2,3.
    char                szMiddleNumber[CFG_COMMON_STRING_32];   // 中号 格式:小区号(1位)+幢号(2位)+单元号(1位)+短号(4位)
    char                szVirtualNumber[CFG_COMMON_STRING_32];  // 室内机虚号 网络呼叫时,此设备对外的号码,如同手机号码
    EM_CFG_VTH_TYPE     emVthType;                              // 室内机类型
    char                szMainNumber[CFG_COMMON_STRING_32];     // 主房间号 范围[1,9999] emVthType为EM_CFG_VTH_TYPE_SUB时有效 
    char                szSubNumber[CFG_COMMON_STRING_32];      // 分机号   范围[1,5]    emVthType为是EM_CFG_VTH_TYPE_SUB时有效
    char                szMainDeviceIP[CFG_COMMON_STRING_64];   // 主室内机IP  用于子室内的配置同步给主室内机 emVthType 是EM_CFG_VTH_TYPE_SUB时有效,
    EM_CFG_VTH_APPTYPE  emVthAppType;                           // 设备使用场景
	int					nLockState;								// 锁定状态,0表示不锁定,默认值; 1表示锁定
	char			    szUsername[MAX_USERNAME_LEN];			// 三代用户名
	char				szPassword[MAX_PASSWORD_LEN];			// 三代密码
}CFG_VTH_NUMBER_INFO;

// GPS工作模式
typedef enum tagEM_CFG_GPS_MODE
{
    EM_CFG_GPS_MODE_UNKNOWN,
    EM_CFG_GPS_MODE_GPS,                                                    // GPS
    EM_CFG_GPS_MODE_BEIDOU,                                                 // BEIDOU
    EM_CFG_GPS_MODE_GLONASS,                                                // GLONASS
    EM_CFG_GPS_MODE_MIX,                                                    // MIX
    EM_CFG_GPS_MODE_END,                                                    // 仅用于标识总数
} EM_CFG_GPS_MODE;

// 平台类型
typedef enum tagEM_CFG_TRANSFER_PLATFORM
{
    EM_CFG_TRANSFER_PLATFORM_UNKNOWN,
    EM_CFG_TRANSFER_PLATFORM_DSS,                                           // DSS
    EM_CFG_TRANSFER_PLATFORM_JTBB,                                          // JTBB
    EM_CFG_TRANSFER_PLATFORM_END,                                           // 仅用于标识总数
} EM_CFG_TRANSFER_PLATFORM;

// 单个GPS配置
typedef struct tagCFG_GPS_INFO
{
    BOOL                        bEnable;                                    // 是否使能
    int                         nSampleInterval;                            // 硬件采集周期, 单位毫秒
    int                         nNotifyInterval;                            // 应用程序通知周期, 单位毫秒
    BOOL                        bSyncTime;                                  // 是否将GPS时间同步到设备
    EM_CFG_GPS_MODE             emCurMode;                                  // 模块当前工作模式
    int                         nSupportModes;                              // 支持的定位模式数量
    EM_CFG_GPS_MODE             emSupportModes[EM_CFG_GPS_MODE_END];        // 模块支持的定位模式
    char                        szCurModule[CFG_COMMON_STRING_64];          // 当前模块厂家类型标志
    BOOL                        bShowLocation;                              // 是否支持地理位置显示
    int                         nSaveDays;                                  // GPS保存天数,用于补传, 单位:天,范围:0-365
    int                         nTransferPlatform;                          // 支持补传的平台数量
    EM_CFG_TRANSFER_PLATFORM    emTransferPlatform[EM_CFG_TRANSFER_PLATFORM_END];   // 支持补传的平台,数据接收方
} CFG_GPS_INFO;

#define CFG_GPS_INFO_MAX        16

// GPS配置
typedef struct tagCFG_GPS_INFO_ALL
{
    int                         nGps;                                       // GPS个数
    CFG_GPS_INFO                stGps[CFG_GPS_INFO_MAX];                    // GPS配置, 每个GPS设备对应一个配置
} CFG_GPS_INFO_ALL;


// VTO设备类型
typedef enum tagNET_CFG_VTO_TYPE
{
	NET_CFG_VTO_TYPE_UNKNOWN = 0,							// 未知
	NET_CFG_VTO_TYPE_VILLA,									// 1 别墅机
	NET_CFG_VTO_TYPE_DOOR,                                  // 2 门口机
	NET_CFG_VTO_TYPE_LADDER,                                // 3 梯控机
    NET_CFG_VTO_TYPE_APART,                                 // 4 模块化门口机
    NET_CFG_VTO_TYPE_SECOND,                                // 5 二次确认机
    NET_CFG_VTO_TYPE_FACE,                                  // 6 人脸录入机
    NET_CFG_VTO_TYPE_CONTROLLER,                            // 7 控制器
	NET_CFG_VTO_TYPE_MAX,
} NET_CFG_VTO_TYPE;

// 门口机类型

//VTO基本信息
typedef struct tagCFG_VTO_BASIC_INFO
{
	 char			  szNumber[AV_CFG_DeviceNo_Len];	// 门口机编号
	 NET_CFG_VTO_TYPE emCfgVtoType;						// 设备类型
	 EM_CFG_VTO_TYPE  emType;							// 门口机类型 1单元门口机 2围墙机
	 char			  szAnalogVersion[CFG_COMMON_STRING_64]; // 模拟系统版本
	 BOOL			  bFaceDetect;						// 人脸识别使 1开启 0关闭
	 int			  nPositon;							// VTO所在楼层位置 Int32, 0 表示无效												
														// 1,2,…表示地上一层,二层 -1,-2,…表示地下一层,二层
}CFG_VTO_BASIC_INFO;

typedef enum tagEM_CFG_SHORTCUT_CALL_POSITION_TYPE
{
    EM_CFG_SHORTCUT_CALL_POSITION_TYPE_UNKNOWN,         // 未知
    EM_CFG_SHORTCUT_CALL_POSITION_TYPE_SUPERMARKET,     // 超市
    EM_CFG_SHORTCUT_CALL_POSITION_TYPE_RESTAURANT,      // 餐厅
    EM_CFG_SHORTCUT_CALL_POSITION_TYPE_HOSPITAL,        // 医院
    EM_CFG_SHORTCUT_CALL_POSITION_TYPE_MANAGER,         // 管理中心
    EM_CFG_SHORTCUT_CALL_POSITION_TYPE_CUSTOM,          // 自定义
    EM_CFG_SHORTCUT_CALL_POSITION_TYPE_FRUITSTORE,      // 水果店
}EM_CFG_SHORTCUT_CALL_POSITION_TYPE;

//快捷号信息
typedef struct tagCFG_SHORTCUT_CALL
{
    char			                    szCallNumber[CFG_COMMON_STRING_64];	// 快捷号
    EM_CFG_SHORTCUT_CALL_POSITION_TYPE  emPositionType;						// 地点类型
}CFG_SHORTCUT_CALL;

//快捷号配置
typedef struct tagCFG_SHORTCUT_CALL_INFO
{
    int                 nMaxNum;                        // 最大结构体个数,与 pShortcutCallInfo 指向结构体个数保持一致
    CFG_SHORTCUT_CALL*  pShortcutCallInfo;              // 用于存储快捷号信息的结构体指针,由用户申请
    int                 nValidNum;                      // 有效结构体个数,获取时由sdk填写,设置时由用户填写
}CFG_SHORTCUT_CALL_INFO;

// 记录集GPSLocation的版本号
typedef struct tagCFG_LOCATION_VER_INFO
{
    unsigned int        nVer;                           // 版本号
} CFG_LOCATION_VER_INFO;

// 设备可访问地址过滤配置 CFG_CMD_PARKING_SPACE_ACCESS_FILTER
typedef struct tagCFG_PARKING_SPACE_ACCESS_FILTER_INFO
{
    BOOL                    bEnable;                                                // 过滤使能
    int                     nTrustListNum;                                          // 白名单IP数量
    char                    szTrustList[CFG_MAX_TRUST_LIST][CFG_FILTER_IP_LEN];	    // 白名单 是一个数组,每一个是IP
} CFG_PARKING_SPACE_ACCESS_FILTER_INFO;

// 工作时间配置 CFG_CMD_WORK_TIME
typedef struct tagCFG_WORK_TIME_INFO
{
    BOOL                bEnable;                        // 为TRUE时该配置生效,非工作时间上报DH_ALARM_BUS_DRIVE_AFTER_WORK事件,为FALSE时该配置无效
    CFG_TIME            stWorkTimeBegin;                // 开始工作时间
    CFG_TIME            stWorkTimeEnd;                  // 结束工作时间
    DWORD               dwOutTimeBegin;                 // 开始外出及维修时间, utc秒
    DWORD               dwOutTimeEnd;                   // 结束外出及维修时间, utc秒
} CFG_WORK_TIME_INFO;

// 车位监管状态
typedef enum tagEM_CFG_LANE_STATUS
{
    EM_CFG_LANE_STATUS_UNKOWN = -1,                     // 状态未知
    EM_CFG_LANE_STATUS_UNSUPERVISE = 0,                 // 不监管
    EM_CFG_LANE_STATUS_SUPERVISE = 1,                   // 监管
}EM_CFG_LANE_STATUS;

#define MAX_LANES_NUM               64                  // 灯组监管车位的最多个数

// 单个车位指示灯本机配置 
typedef struct tagCFG_PARKING_SPACE_LIGHT_GROUP_INFO
{
    BOOL                bEnable;                            // 为TRUE时该配置生效,为FALSE时该配置无效
    EM_CFG_LANE_STATUS  emLaneStatus[MAX_LANES_NUM];        // 灯组监管的车位,下标表示车位号
    int                 nLanesNum;                          // 有效的车位数量(可以设为监管或不监管的车位数量)
    BOOL                bAcceptNetCtrl;                     // 是否接受远程控制    
}CFG_PARKING_SPACE_LIGHT_GROUP_INFO;

#define MAX_LIGHT_GROUP_INFO_NUM        8                   // 车位指示灯本机配置的最多个数

// 车位指示灯本机配置 CFG_CMD_PARKING_SPACE_LIGHT_GROUP
typedef struct tagCFG_PARKING_SPACE_LIGHT_GROUP_INFO_ALL
{
    int                                         nCfgNum;                                            // 获取到的配置个数
    CFG_PARKING_SPACE_LIGHT_GROUP_INFO          stuLightGroupInfo[MAX_LIGHT_GROUP_INFO_NUM];        // 车位指示灯本机配置
}CFG_PARKING_SPACE_LIGHT_GROUP_INFO_ALL;

// 自定义音频配置(CFG_CMD_CUSTOM_AUDIO)
typedef struct tagCFG_CUSTOM_AUDIO 
{
    char                szPlateNotInDB[MAX_PATH];           // 车牌未在数据库的告警音频路径
}CFG_CUSTOM_AUDIO;


// 雷达配置——车速
typedef struct tagCFG_RADAR_CARSPEED 
{
    int                 nTriggerLower;                  // 触发值下限
    int                 nTriggerUpper;                  // 触发值上限
    int                 nLimitLower;                    // 限速值下限
    int                 nLimitUpper;                    // 限速值上限
} CFG_RADAR_CARSPEED;

// 大华雷达配置 CFG_CMD_DHRADER_PP
typedef struct tagCFG_DAHUA_RADAR
{
    int                 nAngle;                         // 角度,用于修正雷达探头安装的角度造成的速度误差 单位度,范围0~45
    BOOL                bLowSpeed;                      // 是否启用低限速,为 TRUE 时,CFG_RADAR_CARSPEED 结构中各下限值有效
    BOOL                bSpeedForSize;                  // 是否启用大小车限速,为 FALSE 时仅小车速度配置(stuSmallCarSpeed)有效
    CFG_RADAR_CARSPEED  stuSmallCarSpeed;               // 小车速度配置,bSpeedForSize 为 TRUE 时 nTriggerLower 成员同时也代表中车和大车的触发值下限
    CFG_RADAR_CARSPEED  stuMediumCarSpeed;              // 中车速度配置,bSpeedForSize 为 TRUE 时有效,但 nTriggerLower 成员始终无效
    CFG_RADAR_CARSPEED  stuBigCarSpeed;                 // 大车速度配置,bSpeedForSize 为 TRUE 时有效,但 nTriggerLower 成员始终无效
    char                szName[256];                    // 设备安装地址
    int                 nSensitivity;                   // 灵敏度 范围0~5,0最高
    int                 nDetectMode;                    // 检测模式,取值:-1 无意义 0 前向来车 1 前向去车 2 后向来车 3 后向去车 4 前向双向 5 后向双向
} CFG_DAHUA_RADAR;

// 设备通过wifi模块扫描周围无线设备配置 CFG_CMD_WIFI_SEARCH
typedef struct tagCFG_WIFI_SEARCH_INFO
{
    BOOL                bEnable;                        // 是否生效
    int                 nPeriod;                        // 事件上报周期, 单位秒
	BOOL				bOptimizNotification;			// 默认值是false,置false时,搜索到的设备状态每次均全部上报,置true时,搜索到的设备状态在未超过PD中OptimizationPeriod取值周期时,只上报新增/离开的设备状态;超过PD中OptimizationPeriod取值周期时,当次需上报搜索到的全部设备状态

} CFG_WIFI_SEARCH_INFO;

// 车载设备通信模块34G切换使能配置(CFG_CMD_G3G4AUTOCHANGE)       
typedef struct tagCFG_G3G4AUTOCHANGE
{
    BOOL                bEnable;                            // 是否开启3G到4G自动切换功能  为TRUE时该配置生效,为FALSE时该配置无效       
}CFG_G3G4AUTOCHANGE;


#define MAX_POS_CODE_LENGTH             32                                      // 刷卡器校验码最大长度
#define MAX_ARRAY_POS_CODE              10                                      // 刷卡器校验码数组最大个数

// 刷卡器校验码校验配置(对应 CFG_CMD_CHECKCODE)
typedef struct tagCFG_CHECKCODE_INFO 
{
    BOOL                    bEnable;                                            // 使能
    int                     nCodeCount;                                         // 数组中有 有效值 的个数
    char                    szCode[MAX_ARRAY_POS_CODE][MAX_POS_CODE_LENGTH];    // 刷卡器校验码数组
}CFG_CHECKCODE_INFO;

// 四川移动看店启迪平台配置(对应 CFG_CMD_VSP_SCYDKD)
typedef struct tagCFG_VSP_SCYDKD_INFO
{
    BOOL                    bEnable;                            // 使能
    char                    szServerIP[128];                    // 注册请求的服务器IP地址
    int                     nServerPort;                        // 注册请求的服务器端口号
    char                    szDeviceID[32];                     // 视频输入设备ID
    char                    szUserName[32];                     // 启迪平台用户名
}CFG_VSP_SCYDKD_INFO;

// 云台开机动作配置
typedef struct tagCFG_PTZ_POWERUP_INFO 
{
    BOOL                    bEnable;                            // 开机动作开关标志
    int                     nFunction;                          // 开机功能,-1 表示继续断电前的动作,其他可取值见 EM_PTZ_ACTION
    int                     nScanId;                            // 自动线扫编号
    int                     nPresetId;                          // 预置点编号
    int                     nPatternId;                         // 自动巡迹编号
    int                     nTourId;                            // 巡航编号
} CFG_PTZ_POWERUP_INFO;

// VTH中远程IPC配置
#define MAX_REMOTE_IPC_NUM 64    // 最大可配置的远程IPC个数

// 远端IPC协议类型
typedef enum tagEM_CFG_REMOTE_IPC_DEVICE_PROTOCOL
{
    EM_CFG_REMOTE_IPC_DEVICE_PROTOCOL_UNKNOWN = 0,      // 未知
    EM_CFG_REMOTE_IPC_DEVICE_PROTOCOL_HIKVISION,        // 海康
    EM_CFG_REMOTE_IPC_DEVICE_PROTOCOL_PRIVATE3,         // 私有三代协议
}EM_CFG_REMOTE_IPC_DEVICE_PROTOCOL;

// 远端IPC码流类型
typedef enum tagEM_CFG_REMOTE_IPC_DEVICE_STREAMTYPE
{
    EM_CFG_REMOTE_IPC_DEVICE_STREAM_TYPE_UNKNOWN = 0,      // 未知
    EM_CFG_REMOTE_IPC_DEVICE_STREAM_TYPE_MAIN,             // 主码流
    EM_CFG_REMOTE_IPC_DEVICE_STREAM_TYPE_EXTRA1,           // 辅码流
}EM_CFG_REMOTE_IPC_DEVICE_STREAMTYPE;

#define MAX_REMOTEIPCINFO_IPADDR_LEN        128     // 远程IPC IP地址最大长度
#define MAX_REMOTEIPCINFO_MACADDR_LEN       64      // 远程IPC MAC地址最大长度
#define MAX_REMOTEIPCINFO_USERNAME_LEN      128     // 远程IPC用户名最大长度
#define MAX_REMOTEIPCINFO_USERPSW_LENGTH    128     // 远程IPC密码最大长度

// 远端IPC依赖设备类型
typedef enum tagEM_CFG_REMOTE_IPC_RELY_TYPE
{
    EM_CFG_REMOTE_IPC_RELY_TYPE_UNKNOWN = 0,      // 未知
    EM_CFG_REMOTE_IPC_RELY_TYPE_IPC,              // IPC
    EM_CFG_REMOTE_IPC_RELY_TYPE_NVR,              // NVR
}EM_CFG_REMOTE_IPC_RELY_TYPE;

// 远端IPC信息
typedef struct tagCFG_REMOTE_IPC_INFO
{
    char		                        szIP[MAX_REMOTEIPCINFO_IPADDR_LEN];	            // 设备IP
    char                                szMac[MAX_REMOTEIPCINFO_MACADDR_LEN];           // MAC地址
    char		                        szUser[MAX_REMOTEIPCINFO_USERNAME_LEN];	        // 用户名
	char		                        szPassword[MAX_REMOTEIPCINFO_USERPSW_LENGTH];   // 密码
	int	                                nPort;					                        // 端口
	EM_CFG_REMOTE_IPC_DEVICE_PROTOCOL   emProtocol;                                     // 协议类型
	EM_CFG_REMOTE_IPC_DEVICE_STREAMTYPE emStreamType;                                   // 媒体流类型
	int                                 nChannel;                                       // 通道号
	EM_CFG_REMOTE_IPC_RELY_TYPE         emIPCRely;                                      // 依赖设备类型
}CFG_REMOTE_IPC_INFO;

// VTH中远程IPC配置结构体, 对应 CFG_CMD_VTH_REMOTE_IPC_INFO
// 该配置是全局的,不区分通道
typedef struct tagCFG_VTH_REMOTE_IPC_INFO
{
    int nRemoteIPCNum;                                              // 远端IPC个数
    CFG_REMOTE_IPC_INFO stuCfgRemoteIpcInfo[MAX_REMOTE_IPC_NUM];    // 远端IPC信息
}CFG_VTH_REMOTE_IPC_INFO;

// 球机机芯日夜单时间段配置
typedef struct tagDAYNIGHT_INFO
{
    int                     nType;                              // 切换类型,1 - 电子,2 - 机械,通常采用滤光片(ICR)
    int                     nMode;                              // 彩转黑模式,1-总是彩色,2-自动,根据亮度切换,3-总是黑白,4-光敏电阻,5-根据增益切换,6-外部报警输入,7–外部IO输入
    int                     nSensitivity;                       // 彩转黑灵敏度,可取值 0~7
    int                     nDelay;                             // 日夜模式切换延时时间,可取值3~30,单位秒
} DAYNIGHT_INFO;

// 球机机芯日夜配置
typedef struct tagCFG_VIDEOIN_DAYNIGHT_INFO
{
    DAYNIGHT_INFO           stuSection[VIDEOIN_TSEC_NUM];       // 不同时间段配置,按顺序分别对应:普通、白天、黑夜
} CFG_VIDEOIN_DAYNIGHT_INFO;

// 单个纯音频通道的组成
typedef struct tagCFG_AUDIO_MIX_CHANNEL_INFO
{
    int                    nChannelNum;                              // 音频输入通道个数
    int                    nCombination[32];                         // 音频输入通道列表
}CFG_AUDIO_MIX_CHANNEL_INFO;

// 配置定义每个纯音频通道的组成(对应 CFG_CMD_AUDIO_MIX_CHANNEL)
typedef struct tagCFG_AUDIO_MIX_CHANNEL_INFO_ALL
{

    int                           nMixChnInfoNum;                     // 纯音频通道配置个数
    CFG_AUDIO_MIX_CHANNEL_INFO    stuMixChnInfo[16];                  // 纯音频通道配置 
}CFG_AUDIO_MIX_CHANNEL_INFO_ALL;

#define CFG_AUDIOTOUCH_PITCH_INVALID_VALUE    -999                    //变音配置中的nPitch的无效值
#define CFG_AUDIOTOUCH_PITCH_MIN_VALUE        -50                     //变音配置中的nPitch的最小值
#define CFG_AUDIOTOUCH_PITCH_MAX_VALUE         50                     //变音配置中的nPitch的最大值
// 单个音频通道变音配置
typedef struct tagCFG_AUDIO_TOUCH_INFO
{
    int                           nPitch;                             // 变音的值 -50~50,0表示不变音  当该通道中没有变音配置时,则nPitch为无效值 CFG_AUDIOTOUCH_INVALID_VALUE     
}CFG_AUDIO_TOUCH_INFO;

// 音频通道变音配置 (对应 CFG_CMD_AUDIO_TOUCH)
typedef struct tagCFG_AUDIO_TOUCH_INFO_ALL
{
    BOOL                          bEnable;                            // 使能
    int                           nAudioTouchNum;                     // 音频通道变音配置个数
    CFG_AUDIO_TOUCH_INFO          stuTouchInfo[64];                   // 音频通道变音配置
}CFG_AUDIO_TOUCH_INFO_ALL;

//虚焦检测配置
typedef struct tagCFG_UNFOCUSDETECT_INFO
{
    BOOL                    bEnable;                        //虚焦检测使能:TRUE 开启,FALSE 关闭
    int                     nSensitivity;                   //灵敏度    1~100
    CFG_ALARM_MSG_HANDLE    stuEventHandler;			    //报警联动
    CFG_TIME_SECTION	    stuTimeSection[WEEK_DAY_NUM][MAX_REC_TSECT];   // 事件响应时间段,时间段获取和设置以此成员为准,忽略 stuEventHandler 中的 stuTimeSection
}CFG_UNFOCUSDETECT_INFO;

// 马赛克叠加配置(对应CFG_CMD_VIDEO_MOSAIC)
/*视频叠加马赛克,和PrivacyMasking(云台隐私遮挡)的差别在于,
VideoMosaic叠加的马赛克位置是固定的,而云台叠加的马赛克
在云台旋转后,马赛克区域会反向偏移,即始终遮挡住同一物体。*/
typedef struct tagCFG_VIDEO_MOSAIC_INFO
{
	BOOL			bEnable;					// 马赛克叠加使能
	int				nMosaic;					// 马赛克颗粒大小,从能力项取值,颗粒越大与原始图像差异越大,反之越接近
	int				nRectCount;					// 实际配置的马赛克区域个数
	CFG_RECT		stuRect[MAX_RECT_COUNT];	// 马赛克区域,使用相对坐标体系,取值均为0~8192
} CFG_VIDEO_MOSAIC_INFO;

// 场景变更检测配置
typedef struct tagCFG_MOVE_DETECT_INFO
{
	BOOL					bEnable;			// 场景变更检测使能
	int						nSensitivity;		// 检测灵敏度, 0~100
	CFG_ALARM_MSG_HANDLE	stuEventHandler;	// 侦测联动信息
} CFG_MOVE_DETECT_INFO;

typedef enum tagEM_CFG_ATMCONTROLLER_MODE
{
    EM_CFG_ATMCONTROLLER_MODE_UNKNOWN = 0,        //未知
    EM_CFG_ATMCONTROLLER_MODE_CLOSE,              //关闭
    EM_CFG_ATMCONTROLLER_MODE_OPEN,               //开启
    EM_CFG_ATMCONTROLLER_MODE_LINKAGE,            //人体探测联动模式
}EM_CFG_ATMCONTROLLER_MODE;

// 防护舱照明灯控制配置
typedef struct tagCFG_FLOODLIGHT_CONTROLMODE_INFO
{
    EM_CFG_ATMCONTROLLER_MODE emControlMode;          //控制模式
}CFG_FLOODLIGHT_CONTROLMODE_INFO;

//防护舱风扇控制配置
typedef struct tagCFG_AIRFAN_CONTROLMODE_INFO
{
    EM_CFG_ATMCONTROLLER_MODE emControlMode;          //控制模式
}CFG_AIRFAN_CONTROLMODE_INFO;

// EAP方法
typedef enum tagEM_CFG_EAP_METHOD
{
    EM_CFG_EAP_METHOD_UNKNOWN,                            // UnKnown
    EM_CFG_EAP_METHOD_PEAP,                               // PEAP
    EM_CFG_EAP_METHOD_TLS,                                // TLS
    EM_CFG_EAP_METHOD_TTLS,                               // TTLS
} EM_CFG_EAP_METHOD;

// EAP身份验证方法
typedef enum tagEM_CFG_EAP_AUTH_TYPE
{
    EM_CFG_EAP_AUTH_TYPE_UNKNOWN,                            // UnKnown
    EM_CFG_EAP_AUTH_TYPE_NONE,                               // NONE
    EM_CFG_EAP_AUTH_TYPE_PAP,                                // PAP
    EM_CFG_EAP_AUTH_TYPE_MSCHAP,                             // MSCHAP
    EM_CFG_EAP_AUTH_TYPE_MSCHAPV2,                           // MSCHAPV2
    EM_CFG_EAP_AUTH_TYPE_GTC,                                // GTC
} EM_CFG_EAP_AUTH_TYPE;

// 无线设备认证方式
typedef enum tagEM_CFG_WIRELESS_AUTHENTICATION
{
    EM_CFG_WIRELESS_AUTHENTICATION_UNKNOWN,                             // UnKnown
    EM_CFG_WIRELESS_AUTHENTICATION_OPEN,                                // OPEN
    EM_CFG_WIRELESS_AUTHENTICATION_SHARED,                              // SHARED
    EM_CFG_WIRELESS_AUTHENTICATION_WPA,                                 // WPA
    EM_CFG_WIRELESS_AUTHENTICATION_WPAPSK,                              // WPA-PSK
    EM_CFG_WIRELESS_AUTHENTICATION_WPA2,                                // WPA2
    EM_CFG_WIRELESS_AUTHENTICATION_WPA2PSK,                             // WPA2-PSK
    EM_CFG_WIRELESS_AUTHENTICATION_WPANONE,                             // WPA-NONE
    EM_CFG_WIRELESS_AUTHENTICATION_WPAPSK_WPA2PSK,                      // WPA-PSK|WPA2-PSK
    EM_CFG_WIRELESS_AUTHENTICATION_WPA_WPA2,                            // WPA|WPA2
    EM_CFG_WIRELESS_AUTHENTICATION_WPA_WPAPSK,                          // WPA | WPA-PSK
    EM_CFG_WIRELESS_AUTHENTICATION_WPA2_WPA2PSK,                        // WPA2|WPA2-PSK
    EM_CFG_WIRELESS_AUTHENTICATION_WPA_WPAPSK_WPA2_WPA2PSK,             // WPA|WPA-PSK|WPA2|WPA2-PSK
} EM_CFG_WIRELESS_AUTHENTICATION;

// 无线数据加密方式
typedef enum tagEM_CFG_WIRELESS_DATA_ENCRYPT
{
    EM_CFG_WIRELESS_DATA_ENCRYPT_UNKNOWN,                            // UnKnown
    EM_CFG_WIRELESS_DATA_ENCRYPT_NONE,                               // NONE
    EM_CFG_WIRELESS_DATA_ENCRYPT_WEP,                                // WEP
    EM_CFG_WIRELESS_DATA_ENCRYPT_TKIP,                               // TKIP
    EM_CFG_WIRELESS_DATA_ENCRYPT_AES,                                // AES(CCMP)
    EM_CFG_WIRELESS_DATA_ENCRYPT_TKIP_AES,                           // TKIP+AES
} EM_CFG_WIRELESS_DATA_ENCRYPT;

// 单个WLAN配置EAP
typedef struct tagCFG_WLAN_EAP
{
    EM_CFG_EAP_METHOD       emMethod;                           // EAP方法
    EM_CFG_EAP_AUTH_TYPE    emAuthType;                         // EAP身份验证方法
    char                    szIdentity[MAX_USERNAME_LEN];       // 身份
    char                    szAnonymousID[MAX_USERNAME_LEN];    // 匿名身份
    char                    szPassword[MAX_PASSWORD_LEN];       // 密码
    char                    szCaCert[512];                      // CA证书
    char                    szUserCert[512];                    // 用户证书 
} CFG_WLAN_EAP;

// 单个WLAN配置Network
typedef struct tagCFG_WLAN_NETWORK
{
    char                    szIPAddress[AV_CFG_IP_Address_Len_EX];        // IP
    char                    szSubnetMask[AV_CFG_IP_Address_Len_EX];       // 子网掩码
    char                    szDefaultGateway[AV_CFG_IP_Address_Len_EX];   // 网关
    BOOL                    bDhcpEnable;                              // 是否开启DHCP
    char                    szDnsServers[2][AV_CFG_IP_Address_Len_EX];    // DNS服务器
} CFG_WLAN_NETWORK;

// 单个WLAN配置
typedef struct tagCFG_WLAN_INFO
{
    char                    szWlanName[CFG_COMMON_STRING_32];   // Wlan名称, 只能获取不能修改
    BOOL                    bEnable;                            // WIFI网卡使能开关, TRUE打开, FALSE关闭
    char                    szSSID[CFG_MAX_SSID_LEN];           // 网络名称(SSID)
    BOOL                    bConnectEnable;                     // 手动连接开关, TRUE手动连接, FALSE手动断开
    BOOL                    bLinkEnable;                        // 自动连接开关, TRUE不自动连接, FALSE自动连接, IPC无意义
    int                     nLinkMode;                          // 连接模式, 0: auto, 1: adhoc, 2: Infrastructure
    int                     nEncryption;                        // 加密模式, 0: off, 1: on, 2: WEP-OPEN, 3: WEP-SHARED, 4: WPA-TKIP, 5: WPA-PSK-TKIP, 6: WPA2-TKIP, 7: WPA2-PSK-TKIP, 8: WPA-AES, 9: WPA-PSK-AES, 10: WPA2-AES, 11: WPA2-PSK-AES, 12: Auto
                                                                /* 二代byAuthMode  , byEncrAlgr  与三代映射关系
                                                                                                                Authentication认证方式  DataEncryption数据加密方式  Encryption加密模式
                                                                                                                OPEN                    NONE                        "On" 
                                                                                                                OPEN                    WEP                         "WEP-OPEN"
                                                                                                                SHARD                   WEP                         "WEP-SHARED"
                                                                                                                WPA                     TKIP                        "WPA-TKIP"
                                                                                                                WPA-PSK                 TKIP                        "WPA-PSK-TKIP"
                                                                                                                WPA2                    TKIP                        "WPA2-TKIP"
                                                                                                                WPA2-PSK                TKIP                        "WPA2-PSK-TKIP"
                                                                                                                WPA                     AES(CCMP)                   "WPA-AES"
                                                                                                                WPA-PSK                 AES(CCMP)                   "WPA-PSK-AES"
                                                                                                                WPA2                    AES(CCMP)                   "WPA2-AES"
                                                                                                                WPA2-PSK                AES(CCMP)                   "WPA2-PSK-AES"
                                                                                                                WPA                     TKIP+AES( mix Mode)         "WPA-TKIP"或者"WPA-AES"
                                                                                                                WPA-PSK                 TKIP+AES( mix Mode)         "WPA-PSK-TKIP"或者"WPA-PSK-AES"
                                                                                                                WPA2                    TKIP+AES( mix Mode)         "WPA2-TKIP"或者"WPA2-AES"
                                                                                                                WPA2-PSK                TKIP+AES( mix Mode)         "WPA2-PSK-TKIP"或者"WPA2-PSK-AES"
                                                                                                                */
    EM_CFG_WIRELESS_AUTHENTICATION emAuthentication;            // 认证方式,  暂时没用
    EM_CFG_WIRELESS_DATA_ENCRYPT   emDataEncryption;            // 数据加密方式, 暂时没用
    int                     nKeyType;                           // 密码类型, 0: Hex, 1: ASCII
    int                     nKeyID;                             // 秘钥索引, 取值0~3
    char                    szKeys[4][32];                      // 四组密码
    BOOL                    bKeyFlag;                           // 密码是否已经设置
    CFG_WLAN_EAP            stuEap;                             // EAP
    CFG_WLAN_NETWORK        stuNetwork;                         // Network
} CFG_WLAN_INFO;

// WLAN配置(对应 CFG_CMD_WLAN)
typedef struct tagCFG_NETAPP_WLAN
{
    int                     nNum;                               // stuWlanInfo有效的WLAN配置个数
    CFG_WLAN_INFO           stuWlanInfo[8];                     // WLAN配置信息
} CFG_NETAPP_WLAN;

// 新增Smart264 编码方式
typedef struct tagCFG_SMART_ENCODE_INFO
{
	BOOL				bSmartH264;							    //标识是否开启SmartH264
	BYTE                byReserved[256];						//预留字段
} CFG_SMART_ENCODE_INFO;

// 车载高速报警配置
typedef struct tagCFG_VEHICLE_HIGHSPEED_INFO
{
	BOOL                    bEnable;							// 高速报警使能
	int						nSpeedHighLine;						// 高速上限报警值 单位:Km/h
	int						nTime;								// 超速后持续多长时间报警 单位:秒
	int						nAlertSpeed;						// 预警速度  单位:Km/h
	int						nInstantSpeed;						// 瞬时超速速度  单位:Km/h
	CFG_ALARM_MSG_HANDLE    stuEventHandler;			        // 报警联动
} CFG_VEHICLE_HIGHSPEED_INFO;

// 车载低速报警配置
typedef struct tagCFG_VEHICLE_LOWSPEED_INFO
{
	BOOL                    bEnable;							// 低速报警使能
	int						nSpeedLowLine;						// 低速上限报警值 单位:Km/h
	int						nTime;								// 低速后持续多长时间报警 单位:秒
	int						nSpeedMotion;						// 低速动检速度值,低于此值开启动检  单位:Km/h
	CFG_ALARM_MSG_HANDLE    stuEventHandler;			        // 报警联动
} CFG_VEHICLE_LOWSPEED_INFO;

// 单个个人电话接机配置信息
typedef struct tagCFG_PSTN_PERSON_SERVER_INFO
{
    char					szName[MAX_NAME_LEN];						// 个人电话名称
    char					szNumber[MAX_PHONE_NUMBER_LEN];				// 个人电话接收机号码
}CFG_PSTN_PERSON_SERVER_INFO;

// 个人电话接机配置信息
typedef struct tagCFG_PSTN_PERSON_SERVER_INFO_ALL
{
    BOOL                            bEnable;                                    // 个人电话接机配置使能
    int                             nServerCount;                               // 有效的个人电话接机配置信息个数,目前最多支持3个
    CFG_PSTN_PERSON_SERVER_INFO     stuPSTNPersonServer[MAX_PSTN_SERVER_NUM];   // 个人电话接机配置信息数组,每个元素对应一个个人电话配置
                                                                                // 最多支持多少个人电话,通过获取报警能力集(CLIENT_QueryNewSystemInfo对应宏CFG_CAP_ALARM) 获取有效电话个数
}CFG_PSTN_PERSON_SERVER_INFO_ALL;

// 布撤防联动配置信息
typedef struct tagCFG_ARMLINK_INFO
{
    BOOL                            bMMSEnable;                                 // 是否发送短消息(默认发送)
    CFG_PSTN_ALARM_SERVER	        stuPSTNAlarmServer;						    // 电话报警中心联动信息
    BOOL                            bPersonAlarmEnable;                         // 是否向私人联系人打电话(向PSTNPersonServer配置中的联系人发报警语音)
	int								nAlarmOutChannels[256];						// 报警输出通道号列表
	int								nAlarmOutChannelNum;						// 报警输出通道号个数
}CFG_ARMLINK_INFO;

// PSTN 测试计划配置
typedef struct tagCFG_PSTN_TESTPLAN_INFO
{
    BOOL                  bAlarmEnable;                             // 报警使能
    int                   nPeriod;                                  // 报警周期 单位:小时
    int                   nAlarmServerCount;                        // 需要测试的报警电话中心个数
    int                   nAlarmServer[MAX_PSTN_SERVER_NUM];        // 需要测试的报警电话中心序号,从0开始
}CFG_PSTN_TESTPLAN_INFO;

//单防区布撤防使能配置
typedef struct tagCFG_DEFENCE_ARMMODE_INFO
{
    BOOL                bEnableDefenceArm;                          // 单防区布撤防使能
}CFG_DEFENCE_ARMMODE_INFO;

//探测器安装工作模式
typedef enum tagEM_CFG_SENSORMODE_TYPE
{
    EM_CFG_SENSORMODE_TYPE_UNKNOWN,
    EM_CFG_SENSORMODE_TYPE_TWOSTATE,                                // 二态
    EM_CFG_SENSORMODE_TYPE_FOURSTATE,                               // 四态
}EM_CFG_SENSORMODE_TYPE;

//探测器安装工作模式配置
typedef struct tagCFG_SENSORMODE_INFO
{
    EM_CFG_SENSORMODE_TYPE                 emState;                 //探测器安装工作模式         
}CFG_SENSORMODE_INFO;

// 防护舱Led显示计划配置
typedef struct tagCFG_CABINLED_TIME_SCHEDULE
{
    BOOL                    bEnable;                                // 防护舱Led显示计划配置使能项
}CFG_CABINLED_TIME_SCHEDULE;

// 警灯状态
typedef enum tagEM_ALARMLAMP_MODE
{
    EM_ALARMLAMP_MODE_UNKNOWN = -1,                                 // 未知
    EM_ALARMLAMP_MODE_OFF,                                          // 灭
    EM_ALARMLAMP_MODE_ON,                                           // 亮
    EM_ALARMLAMP_MODE_BLINK,                                        // 闪烁
}EM_ALARMLAMP_MODE;

// 警灯配置(对应 CFG_CMD_ALARMLAMP)
typedef struct tagCFG_ALARMLAMP_INFO
{
    EM_ALARMLAMP_MODE      emAlarmLamp;                             // 警灯状态
}CFG_ALARMLAMP_INFO;

// 雷达测速配置 智能楼宇专用(对应 CFG_CMD_RADAR_SPEED_MEASURE)
typedef struct tagCFG_RADAR_SPEED_MEASURE_INFO
{
    float                   fSpeedMeasureLimit;                     // 测速下限值,只有达到此速度值,雷达才能检测(单位:km/h)
    float                   fSpeedUpperLimit;                       // 超速报警值,超过此值上报报警(单位:km/h)

}CFG_RADAR_SPEED_MEASURE_INFO;


// 激光测距配置
typedef struct tagCFG_LASER_DIST_MEASURE_INFO
{
    BOOL                            bEncodeBlend;                   // 叠加到主码流视频编码    
    BOOL                            bEnable;                        // 使能,是否打开激光测距功能
}CFG_LASER_DIST_MEASURE_INFO;




// 气象信息叠加配置
typedef struct tagCFG_CFG_CMD_ATMOSPHERE_OSD_INFO
{
    BOOL                            bEncodeBlendEnable;             // 是否叠加到视频码流,true开启,false关闭
    UINT                            nMask;                          // 1显示 0不显示
                                                                    // bit0: 风速 
                                                                    // bit1: 风向
                                                                    // bit2: 湿度
                                                                    // bit3:温度
                                                                    // bit4:大气压强
                                                                    // bit5:日照强度
}CFG_CMD_ATMOSPHERE_OSD_INFO;

// 福山油田4G流量阈值及模式配置(对应 CFG_CMD_OIL_4G_OVERFLOW)
typedef struct tagCFG_OIL_4G_OVERFLOW_INFO
{
	int								nFlowRateMode;					// 4G流量的模式,1手动,0-自动,默认自动
	int								nFlowRateMax;					// 4G流量的阈值,单位为(MB), 默认值为60*1024(MB)
}CFG_OIL_4G_OVERFLOW_INFO;

// 福山油田4G流量OSD叠加配置(对应 CFG_CMD_OIL_VIDEOWIDGET_4G_FLOW)
typedef struct tagCFG_OIL_VIDEOWIDGET_4G_FLOW_INFO
{
    BOOL                            bEncodeBlend;                   // 叠加到主码流视频编码使能
	CFG_RECT						stuRect;						// 叠加的区域坐标
}CFG_OIL_VIDEOWIDGET_4G_FLOW_INFO;

#define CFG_PARK_SPACE_STATE_TYPE_NUM      3                        // 车位状态类型个数 具体类型为 车位无车 车位有车 车位预定

// 车位检测器外接指示灯配置信息
typedef struct tagCFG_PARK_SPACE_OUT_LIGHT_INFO
{
    EM_CFG_PARKINGSPACE_LIGHT_STATE stNormalSpace[CFG_PARK_SPACE_STATE_TYPE_NUM][CFG_MAX_PARKINGSPACE_LIGHT_NUM];  // 普通车位灯状态信息
                                                                                                                   // 数组第一维度表示车位状态 0-车位无车 1-车位有车 2-车位预定
                                                                                                                   // 数组第二维度表示指示灯颜色 从0到5分别表示 红 黄 蓝 绿 紫 白  
    EM_CFG_PARKINGSPACE_LIGHT_STATE stSpecialSpace[CFG_PARK_SPACE_STATE_TYPE_NUM][CFG_MAX_PARKINGSPACE_LIGHT_NUM]; // 特殊车位灯状态信息 规则同上
}CFG_PARK_SPACE_OUT_LIGHT_INFO;

//门禁文字提示显示配置(对应CFG_CMD_ACCESS_TEXTDISPLAY)
typedef struct tagCFG_ACCESS_TEXTDISPLAY_INFO
{
	char szOpenSucceedText[MAX_ACCESS_TEXTDISPLAY_LEN];              //开门成功显示的文字信息
	char szOpenFailedText[MAX_ACCESS_TEXTDISPLAY_LEN];               //开门失败显示的文字信息
}CFG_ACCESS_TEXTDISPLAY_INFO;

// 门口机呼叫规则
typedef enum tagEM_CFG_ROOM_RULE
{
    EM_CFG_ROOM_RULE_UNKNOW,                                        // 未知
	EM_CFG_ROOM_RULE_SERIAL,                                        // Serial 连续房间号,有些国外使用1~100的房号
	EM_CFG_ROOM_RULE_NOSERIAL,                                      // NoSerial 非连续房间号,比如国内的301,502
}EM_CFG_ROOM_RULE;

// VTO呼叫配置扩展信息
typedef struct tagCFG_VTO_CALL_INFO_EXTEND
{
	char                            szMainVTOIP[MAX_ADDRESS_LEN];               //主门口机IP
	BOOL                            bGroupCallEnable;                           //群呼开关
	char                            szManagerNumber[MAX_PHONE_NUMBER_LEN];      //管理机号码
	char                            szUrgentNumber[MAX_PHONE_NUMBER_LEN];       //紧急呼叫号码
	CFG_TIME_SECTION                stuTimeSection;                             //呼叫VTS时间段 
	unsigned int                    nMaxExtensionIndex;                         //门口机上可以设置的最大室内机分机序号 序号从1开始
    EM_CFG_ROOM_RULE                emRoomRule;                                 //门口机支持连续房间号呼叫和非连续房间号呼叫2套规则
}CFG_VTO_CALL_INFO_EXTEND;

//杭师大视频加密项目,涉及IPC和NVR 加密配置信息,
typedef struct tagCFG_NETNVR_ENCRYPT_CHANNEL_INFO
{
	BOOL						bEncryptEnable;					// 音视频是否加密
	BOOL						bMatchNvrEnable;				// NVR配对使能
	char						szNvrAddress[16];				// NVR 的IP地址
	DWORD						nMatchPort;						// 配对端口
	DWORD						nTalkPort;						// 协商端口
	char						szDevID[32];					// IPC设备序列号	
}CFG_NETNVR_ENCRYPT_CHANNEL_INFO;

//杭师大视频加密项目,涉及IPC和NVR 加密配置信息,,对应 CFG_CMD_NETNVR_ENCRYPT
typedef struct tagCFG_NETNVR_ENCRYPT_INFO
{
	int									nChannelID;									// 通道号(0开始)
	int									nNvrEncryptNum;								// 每个通道实际加密信息配置个数
	CFG_NETNVR_ENCRYPT_CHANNEL_INFO		stuNvrEncryptInfo[CFG_MAX_NVR_ENCRYPT_COUNT];// 每个通道对应的加密信息配置数组,主、辅1、2、3码流
}CFG_NETNVR_ENCRYPT_INFO;

// 频闪灯端口信息
typedef struct tagCFG_LAMP_PORT_INFO
{
    int					nValidPortNum;						// 频闪灯配置个数
    char				szPort[8];							// 频闪灯的端口号,灯组内可能包含多个灯
}CFG_LAMP_PORT_INFO;

// 单个频闪灯配置信息
typedef struct tagCFG_SINGLE_STROBOSCOPIC_LAMP_INFO
{
	CFG_FLASH_CONTROL	stuLampInfo;						// 频闪灯的配置信息
	int					nStroboscopicMode;					// 频闪模式,低于最大闪光频率,0表示根据需要闪光
	int					nPreTime;							// 频闪灯提前时间,单位us
	int					nPulseWidth;						// 频闪灯脉宽,单位us
	int					nDelayTime;							// 延时闪时间,单位us,负数表示提前闪光
	int					nFrequency;							// 频闪灯的工作频率,单位HZ,譬如50HZ, 100HZ 
	CFG_LAMP_PORT_INFO	stuPortInfo;						// 频闪灯端口配置信息
}CFG_SINGLE_STROBOSCOPIC_LAMP_INFO;

// 频闪灯配置(对应 CFG_CMD_STROBOSCOPIC_LAMP)
typedef struct tagCFG_STROBOSCOPIC_LAMP_INFO
{
    int									nValidConfigNum;	// 频闪灯配置个数
    CFG_SINGLE_STROBOSCOPIC_LAMP_INFO   stuStroboInfo[8];	// 频闪灯配置信息
}CFG_STROBOSCOPIC_LAMP_INFO;

// Https服务配置
typedef struct tagCFG_HTTPS_INFO
{
    BOOL                                bEnable;                                    // 服务使能
    int                                 nPort;                                      // 端口号
    char                                szRootCertificatePath[CFG_COMMON_STRING_128];                 // 根证书绝对路径
    char                                szCountry[CFG_COMMON_STRING_8];                               // 国家
    char                                szState[CFG_COMMON_STRING_64];                                // 洲名或省名
    char                                szLocatity[CFG_COMMON_STRING_64];                             // 位置
    char                                szOrganization[CFG_COMMON_STRING_64];                         // 组织名称
    char                                szOrganizationUnit[CFG_COMMON_STRING_64];                    // 组织单元名称
    char                                szCommonName[CFG_COMMON_STRING_128];                          // CN字段,是域名或者IP
    char                                szEmail[CFG_COMMON_STRING_128];                               // 邮箱
    char                                szName[CFG_COMMON_STRING_128];                                // 公司名称
    char                                szPath[CFG_COMMON_STRING_128];                                // 服务器证书地址
    int                                 nUsefulLife;                                // 证书有效期
}CFG_HTTPS_INFO;

// 编码配置
typedef struct tagCFG_ADAPT_ENCODE_INFO
{
    int                             nIPSmoothness;                   // 编码I/P帧的平滑度,范围1~100,1表示平滑,100表示画质优先
    int                             nAdjustEnable;                   // 自适应调整使能,1开启 0关闭。主码流暂不支持此字段
}CFG_ADAPT_ENCODE_INFO;

// 网络自适应编码配置
typedef struct tagCFG_NET_AUTO_ADAPT_ENCODE
{
    CFG_ADAPT_ENCODE_INFO    stuMainStream[MAX_VIDEOSTREAM_NUM];	 // 主码流,0-普通录像,1-动检录像,2-报警录像,暂只支持普通录像
    CFG_ADAPT_ENCODE_INFO	 stuExtraStream[MAX_VIDEOSTREAM_NUM];    // 辅码流,0-辅码流1,1-辅码流2,2-辅码流3
}CFG_NET_AUTO_ADAPT_ENCODE;

// 组合通道
typedef struct tagCFG_COMBINATION_CHANNEL
{
    int                                 nMaxChannel;    // 最大通道数
    int                                 nReturnChannel; // 实际返回通道数
    int                                 *pnChannel;     // 通道信息
}CFG_COMBINATION_CHANNEL;

// 分割模式
typedef struct tagCFG_FREESPLIT_INFO
{
    CFG_SPLITMODE                       emSplitMode;        // 分割模式
    int                                 nMaxCombination;    // 最大组合个数
    int                                 nReturnCombination; // 实际组合个数
    CFG_COMBINATION_CHANNEL             *pstuCombination;   // 组合信息
}CFG_FREESPLIT_INFO;

// 自由分割模式的窗口配置
typedef struct tagCFG_FREECOMBINATION_INFO
{
    int                 nMaxSplit;      // 最大分割模式数
    int                 nReturnSplit;   // 实际分割模式数
    CFG_FREESPLIT_INFO  *pstuSplit;     // 自由分割模式信息
}CFG_FREECOMBINATION_INFO;

// 设备协议类型
typedef enum tagCFG_EM_DEVICE_PROTOCOL
{
	CFG_EM_PROTOCOL_PRIVATE3,                   // 私有3代协议,Dahua3
	CFG_EM_PROTOCOL_ONVIF,                      // Onvif    		
}CFG_EM_DEVICE_PROTOCOL;

// 平台侧监视IPC配置 CFG_CMD_PLATFORM_MONITOR_IPC
typedef struct tagCFG_PLATFORMMONITORIPC_INFO
{
	BOOL					bEnable;                        // 使能
	char					szDevIpAddress[MAX_NAME_LEN];	// 设备ip地址
	int						nPort;                          // 端口
	char					szUserName[MAX_USERNAME_LEN];	// 用户名
	char					szPassword[MAX_PASSWORD_LEN];	// 密码
	CFG_EM_STREAM_TYPE		emStreamType;                   // 码流类型
	CFG_EM_DEVICE_PROTOCOL  emProtocol;                     // 协议类型
	int						nChannelID;                     // 通道号
}CFG_PLATFORMMONITORIPC_INFO;

#define MAX_AREA_COUNT	8		// 最大区域个数

// 物联网红外检测配置(对应CFG_CMD_IOT_INFRARED_DETECT)
typedef struct tagCFG_IOT_INFRARED_DETECT_INFO
{
	BOOL					bEnable[MAX_AREA_COUNT];				// 区域使能,表示是否开启检测,共8个区域
	int						nDetectRadius;							// 检测半径,单位厘米
} CFG_IOT_INFRARED_DETECT_INFO;

// 物联网录像联动配置(对应CFG_CMD_IOT_RECORD_HANDLE)
typedef struct tagCFG_IOT_RECORD_HANDLE_INFO
{
	BOOL					bEnable;								//  使能,表示是否开启录像联动
	int						nRecordTime;							// 联动录像时间,单位秒
} CFG_IOT_RECORD_HANDLE_INFO;

// 物联网抓图联动配置(对应CFG_CMD_IOT_SNAP_HANDLE)
typedef struct tagCFG_IOT_SNAP_HANDLE_INFO
{
	BOOL					bEnable;								// 使能,表示是否开启抓图联动
	int						nSnapNum;								// 联动抓图张数
} CFG_IOT_SNAP_HANDLE_INFO;

// 呼叫转移配置
typedef struct tagCFG_CALLFORWARD_INFO
{
    BOOL                    bAlwaysForwardEnable;                           // 强制转移使能
    char                    szAlwaysForwardNumber[MAX_PHONE_NUMBER_LEN];    // 强制转移号码
    BOOL                    bBusyForwardEnable;                             // 呼叫遇忙转移使能
    char                    szBusyForwardNumber[MAX_PHONE_NUMBER_LEN];      // 呼叫遇忙转移号码
    BOOL                    bNoAnswerForwardEnable;                         // 呼叫无应答转移使能
    char                    szNoAnswerForwardNumber[MAX_PHONE_NUMBER_LEN];  // 呼叫无应答转移号码
}CFG_CALLFORWARD_INFO;

// 门铃配置对应CFD_CMD_DOORBELLSOUND
typedef struct tagCFG_DOOR_BELLSOUND_INFO
{
    BOOL                    bSilenceEnable;                   // 是否静音true 静音false 不静音
    UINT                    nRingVolume;                      // 铃声音量取值范围0~100
    char                    szRingFile[CFG_COMMON_STRING_64]; // 铃声文件现在只支持"A","B","C"三个文件只能选择一个文件
}CFG_DOOR_BELLSOUND_INFO;

//telnet 配置对应CFG_CMD_TELNET
typedef struct tagCFG_TELNET_INFO
{
    BOOL                    bEnable;                   // telnet使能开关true使能false去使能
}CFG_TELNET_INFO;

//显示异常信息的叠加配置 对应结构体 CFG_OSD_SYSABNORMAL_INFO
typedef struct tagCFG_OSD_SYSABNORMAL_INFO
{
	AV_CFG_Color		stuBackColor;					// 背景色
	AV_BOOL				bEncodeBlend;					// 叠加到主码流
	AV_CFG_Color		stuFrontColor;					// 前景色
	AV_BOOL				bPreviewBlend;					// 叠加到预览视频
	AV_CFG_Rect			stuRect;						// 区域, 坐标取值0~8191
	int					nDisplayTime;					// 显示时间,单位为s,如果为0表示一直显示
	AV_BOOL				bNetAbort;						// 是否显示网络断开,true为显示,false为不显示
	AV_BOOL				bIPConflict;					// 是否显示IP冲突,true为显示,false为不显示
	AV_BOOL				bVoltageStatus;					// 是否显示电压异常,true为显示,false为不显示
	AV_BOOL             bOutputCurrentStatus;			// 是否显示对外供电电流异常,true为显示,false为不显示
	AV_BOOL				bSDHotPlug;						// 是否显示SD卡插入、拔出、异常,true为显示,false为不显示
	AV_BOOL				bSDLowSpace;					// 是否显示SD卡空间不足,true为显示,false为不显示
	AV_BOOL				bSDFailure;						// 是否显示SD卡出错,true为显示,false为不显示
	AV_BOOL				bDestroy;						// 是否显示破坏检测,true为显示,false为不显示
}CFG_OSD_SYSABNORMAL_INFO;

// 视频编码物件配置(对应结构体 CFG_VIDEO_WIDGET2_INFO)
typedef struct tagCFG_VIDEO_WIDGET2_INFO
{
	int					nOSDLineSpacing;				//行间距倍数,倍数的基准默认是当前字体高度的十分之一,取值范围为0~5,默认值为0
}CFG_VIDEO_WIDGET2_INFO;

// 人数统计叠加OSD配置(对应结构体 CFG_VIDEOWIDGET_NUMBERSTAT_INFO)
typedef struct tagCFG_VIDEOWIDGET_NUMBERSTAT_INFO
{
	AV_BOOL				bEncodeBlend;					// 叠加到主码流,值为false的标题不能设置到底层API
	AV_CFG_Color		stuFrontColor;					// 前景色
	AV_CFG_Color		stuBackColor;					// 背景色
	EM_TITLE_TEXT_ALIGN emTextAlign;                    // 标题对齐方式
	AV_CFG_Rect			stuRect;						// 区域, 坐标取值0~8192
	AV_BOOL				bShowEnterNum;					// 是否显示进入人数
	AV_BOOL				bShowExitNum;					// 是否显示离开人数
}CFG_VIDEOWIDGET_NUMBERSTAT_INFO;

// 马赛克类型
typedef enum tagEM_MOSAIC_TYPE
{
	EM_MOSAIC_TYPE_INVALID,								// 无效的马赛克类型
	EM_MOSAIC_TYPE_NO,									// 不打马赛克
	EM_MOSAIC_TYPE_8,									// [8x8大小] 马赛克
	EM_MOSAIC_TYPE_16,									// [16x16大小] 马赛克
	EM_MOSAIC_TYPE_24,									// [24x24大小] 马赛克
	EM_MOSAIC_TYPE_32,									// [32x32大小] 马赛克
}EM_MOSAIC_TYPE;

// 形状类型
typedef enum tagEM_SHAPE_TYPE
{
	EM_SHAPE_TYPE_INVALID,								// 无效的类型
	EM_SHAPE_TYPE_RECT,									// 矩形
	EM_SHAPE_TYPE_POLYGON,								// 多边形
}EM_SHAPE_TYPE;

//云台控制坐标单元
typedef struct tagPTZ_SPEED
{
    float                  fPositionX;           //云台水平方向速率,归一化到-1~1
    float                  fPositionY;           //云台垂直方向速率,归一化到-1~1
    float                  fZoom;                //云台光圈放大倍率,归一化到 0~1
    char                   szReserve[32];        //预留32字节
}PTZ_SPEED;

// 区域;各边距按整长8192的比例
typedef struct 
{
	long             left;
	long             top;
	long             right;
	long             bottom;
} DH_RECT_REGION, *LPDH_RECT_REGION;

// 隐私遮挡配置信息
typedef struct tagCGF_MASKING_INFO
{
	BOOL					bEnable;							// 隐私遮挡开关标志 true开,false关
	PTZ_SPEED				stuPosition;						// 云台方向与放大倍数
	EM_SHAPE_TYPE			stuShapeType;						// 形状类型
	DH_RECT_REGION			stuRect;							// 矩形区域, 坐标取值0~8192
	int						nPolygonPoint;						// 多边形顶点数
	CFG_POLYGON				stuPolygon[MAX_POLYGON_NUM];		// 多边形顶点坐标,坐标取值0~8192
	AV_CFG_Color			stuColor;							// 遮挡块色
	EM_MOSAIC_TYPE			stuMosaicType;						// 遮挡块马赛克类型,马赛克时遮挡块色字段无效
    double                  dViewAngle;                         // 球机水平视场角, 范围[0.0, 360.0],单位:度
}CGF_MASKING_INFO;

// 单通道隐私遮挡设置(对应结构体 CFG_PRIVACY_MASKING_INFO)
typedef struct tagCFG_PRIVACY_MASKING_INFO
{
	int nMaskingInfoCount;														// 隐私遮挡配置个数
	CGF_MASKING_INFO stuMaskingInfo[MAX_PRIVACY_MASKING_COUNT];					// 隐私遮挡配置信息
}CFG_PRIVACY_MASKING_INFO;

// 设备信息配置(对应结构体 CFG_DEVICE_INFO)
typedef struct tagCFG_DEVICE_INFO
{
	char szSerial[CFG_COMMON_STRING_64];				// 产品系列名称,IPC型号IPC开头,球机型号SD开头,其它类同
	char szMode[CFG_COMMON_STRING_64];					// 设备型号
	char szResolution[CFG_COMMON_STRING_16];            // 机芯分辨率
	char szCameraID[CFG_COMMON_STRING_16];              // 机芯ID
}CFG_DEVICE_INFO;

#define CFG_MAX_POLICE_ID_MAP_NUM 64                    // 最大警员ID和设备通道映射关系数量

// 警员ID和设备通道映射关系信息(对应 CFG_CMD_POLICEID_MAP_INFO)
typedef struct tagCFG_POLICEID_MAP_INFO
{
    char    szPoliceID[CFG_MAX_POLICE_ID_MAP_NUM][CFG_COMMON_STRING_32];				// 警员ID
    int     nIDCount;                                                                   // ID数目
    
}CFG_POLICEID_MAP_INFO;

//GPS未定位配置(对应 CFG_CMD_GPS_NOT_ALIGNED)
typedef struct tagCFG_GPS_NOT_ALIGNED_INFO
{
	BOOL		                 bEnable;						// 使能
	DWORD      	                 dwNotifyTimes;                 // GPS未定位持续时间,超过该时间则触发报警,单位秒
	CFG_ALARM_MSG_HANDLE         stuEventHandler;	        	// 报警联动 
}CFG_GPS_NOT_ALIGNED_INFO;

//网络未连接(包括wifi,3G/4G)配置(对应 CFG_CMD_WIRELESS_NOT_CONNECTED)
typedef struct tagCFG_WIRELESS_NOT_CONNECTED_INFO
{
	BOOL		                 bEnable;						// 使能
	DWORD      	                 dwNotifyTimes;                 // 网络未连接(包括wifi,3G/4G)持续时间,超过该时间则触发报警,单位秒
	CFG_ALARM_MSG_HANDLE         stuEventHandler;		        // 报警联动 
}CFG_WIRELESS_NOT_CONNECTED_INFO;

// 微云常规容量告警配置(对应 CFG_CMD_MCS_GENERAL_CAPACITY_LOW)
typedef struct tagCFG_MCS_GENERAL_CAPACITY_LOW
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_GENERAL_CAPACITY_LOW;

// 微云存储节点下线配置(对应 CFG_CMD_MCS_DATA_NODE_OFFLINE)
typedef struct tagCFG_MCS_DATA_NODE_OFFLINE
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_DATA_NODE_OFFLINE;

// 微云磁盘下线告警配置(对应 CFG_CMD_MCS_DISK_OFFLINE)
typedef struct tagCFG_MCS_DISK_OFFLINE
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_DISK_OFFLINE;

// 微云磁盘变慢告警配置(对应 CFG_CMD_MCS_DISK_SLOW)
typedef struct tagCFG_MCS_DISK_SLOW
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_DISK_SLOW;

//微云磁盘损坏告警配置(对应 CFG_CMD_MCS_DISK_BROKEN)
typedef struct tagCFG_MCS_DISK_BROKEN
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_DISK_BROKEN;

// 微云磁盘未知错误告警配置(对应 CFG_CMD_MCS_DISK_UNKNOW_ERROR)
typedef struct tagCFG_MCS_DISK_UNKNOW_ERROR
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_DISK_UNKNOW_ERROR;

// 微云元数据服务器异常告警配置(对应 CFG_CMD_MCS_METADATA_SERVER_ABNORMAL)
typedef struct tagCFG_MCS_METADATA_SERVER_ABNORMAL
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_METADATA_SERVER_ABNORMAL;

// 微云目录服务器异常告警配置(对应 CFG_CMD_MCS_CATALOG_SERVER_ABNORMAL)
typedef struct tagCFG_MCS_CATALOG_SERVER_ABNORMAL
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_CATALOG_SERVER_ABNORMAL;

// 微云常规容量告警恢复告警配置(对应 CFG_CMD_MCS_GENERAL_CAPACITY_RESUME)
typedef struct tagCFG_MCS_GENERAL_CAPACITY_RESUME
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_GENERAL_CAPACITY_RESUME;

// 微云存储节点上线告警配置(对应 CFG_CMD_MCS_DATA_NODE_ONLINE)
typedef struct tagCFG_MCS_DATA_NODE_ONLINE
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_DATA_NODE_ONLINE;

// 微云磁盘上线告警配置(对应 CFG_CMD_MCS_DISK_ONLINE)
typedef struct tagCFG_MCS_DISK_ONLINE
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_DISK_ONLINE;

// 微云元数据备机上线告警配置(对应 CFG_CMD_MCS_METADATA_SLAVE_ONLINE)
typedef struct tagCFG_MCS_METADATA_SLAVE_ONLINE
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_METADATA_SLAVE_ONLINE;

// 微云目录服务器上线告警配置(对应 CFG_CMD_MCS_CATALOG_SERVER_ONLINE)
typedef struct tagCFG_MCS_CATALOG_SERVER_ONLINE
{
	BOOL						bEnable;						// 使能开关,true为打开;false为关闭,默认值 	
	CFG_ALARM_MSG_HANDLE        stuEventHandler;				// 报警联动     
}CFG_MCS_CATALOG_SERVER_ONLINE;

// SecurityAlarms客户定制功能,隐私保护
typedef struct tagCFG_SECURITY_ALARMS_PRIVACY
{
    char                        szCode[CFG_COMMON_STRING_64];   // 隐私保护密码
    BOOL                        bEnable;                        // 是否开启隐私保护
}CFG_SECURITY_ALARMS_PRIVACY;

// 门禁卡预欠费配置
typedef struct tagCFG_ACCESSCONTROL_DELAYSTRATEGY
{
    BOOL                    bEnable;                                    // 是否启用
    int                     nPreArrearsTerm;                            // 预欠费期限,单位:天
    int                     nArrearsTerm;                               // 欠费期限,单位:天
}CFG_ACCESSCONTROL_DELAYSTRATEGY;


// 无人机禁飞时段 配置 ( 对应 CFG_CMD_NO_FLY_TIME )
typedef struct tagCFG_NO_FLY_TIME_INFO
{
    BOOL		                 bEnable;						// 禁飞时段使能
    CFG_ALARM_MSG_HANDLE         stuEventHandler;		        // 报警联动 
}CFG_NO_FLY_TIME_INFO;


// 密码重置功能 配置 ( 对应 CFG_CMD_PWD_RESET )
typedef struct tagCFG_PWD_RESET_INFO
{
    BOOL		                 bEnable;						// 密码重置功能使能
}CFG_PWD_RESET_INFO;


// 网络监视中断事件配置( 对应结构体 CFG_NET_MONITOR_ABORT_INFO )
typedef struct tagCFG_NET_MONITOR_ABORT_INFO
{
	BOOL		                bEnable;			// 使能开关
    CFG_ALARM_MSG_HANDLE		stuEventHandler;	// 报警联动 
} CFG_NET_MONITOR_ABORT_INFO;

// 本地扩展报警 配置 ( 对应 CFG_CMD_LOCAL_EXT_ALARM )
typedef struct tagCFG_LOCAL_EXT_ALARME_INFO
{
    BOOL		            bEnable;						        // 使能
    int                     nSensorType;					        // 传感器类型 0,常闭 1,常开
    char                    szAlarmChannelName[CFG_COMMON_STRING_64];      // 报警通道名称
    CFG_ALARM_MSG_HANDLE    stuEventHandler;		                // 报警联动 
}CFG_LOCAL_EXT_ALARME_INFO;

#define		MAX_INVITE_NUMBER_LIST		16
// 视频对讲电话基础配置( 对应 CFG_CMD_VIDEO_TALK_PHONE_BASIC )
typedef struct tagCFG_VIDEO_TALK_PHONE_BASIC_INFO
{
	BOOL					bAlarmOutputEnable;													// 呼叫联动报警输出使能
	BOOL					bNoAnswerTransferPlatformEnable;									// 呼叫无应答转移平台使能
	BOOL					bEachCallEnable;													// 户户通话使能
	BOOL					bAutoAnswerEnable;													// 自动接听使能
	int						nInviteNumberList;													// 主叫房间列表个数
	char					szInviteNumberList[MAX_INVITE_NUMBER_LIST][CFG_COMMON_STRING_16];	// 主叫房间列表
    BOOL                    bVTOCallSoundEnable;                                                // 是否开启门口机回铃使能
    char                    szVTOCallSound[CFG_COMMON_STRING_128];                              // 门口机回铃铃声路径
    BOOL                    bEnableCall;                                                        // 呼叫使能 
} CFG_VIDEO_TALK_PHONE_BASIC_INFO;

// 语言种类
typedef enum tagEM_LANGUAGE_TYPE
{
    EM_LANGUAGE_ENGLISH,                // 英文    
    EM_LANGUAGE_CHINESE_SIMPLIFIED,     // 简体中文    
    EM_LANGUAGE_CHINESE_TRADITIONAL,    // 繁体中文    
    EM_LANGUAGE_ITALIAN,                // 意大利文    
    EM_LANGUAGE_SPANISH,                // 西班牙文
    EM_LANGUAGE_JAPANESE,               // 日文版    
    EM_LANGUAGE_RUSSIAN,                // 俄文版        
    EM_LANGUAGE_FRENCH,                 // 法文版        
    EM_LANGUAGE_GERMAN,                 // 德文版        
    EM_LANGUAGE_PORTUGUESE,             // 葡萄牙语    
    EM_LANGUAGE_TURKEY,                 // 土尔其语    
    EM_LANGUAGE_POLISH,                 // 波兰语    
    EM_LANGUAGE_ROMANIAN,               // 罗马尼亚    
    EM_LANGUAGE_HUNGARIAN,              // 匈牙利语    
    EM_LANGUAGE_FINNISH,                // 芬兰语    
    EM_LANGUAGE_ESTONIAN,               // 爱沙尼亚语    
    EM_LANGUAGE_KOREAN,                 // 韩语    
    EM_LANGUAGE_FARSI,                  // 波斯语     
    EM_LANGUAGE_DANSK,                  // 丹麦语
    EM_LANGUAGE_CZECHISH,               // 捷克文
    EM_LANGUAGE_BULGARIA,               // 保加利亚文
    EM_LANGUAGE_SLOVAKIAN,              // 斯洛伐克语
    EM_LANGUAGE_SLOVENIA,               // 斯洛文尼亚文
    EM_LANGUAGE_CROATIAN,               // 克罗地亚语
    EM_LANGUAGE_DUTCH,                  // 荷兰语
    EM_LANGUAGE_GREEK,                  // 希腊语
    EM_LANGUAGE_UKRAINIAN,              // 乌克兰语
    EM_LANGUAGE_SWEDISH,                // 瑞典语
    EM_LANGUAGE_SERBIAN,                // 塞尔维亚语
    EM_LANGUAGE_VIETNAMESE,             // 越南语
    EM_LANGUAGE_LITHUANIAN,             // 立陶宛语
    EM_LANGUAGE_FILIPINO,               // 菲律宾语
    EM_LANGUAGE_ARABIC,                 // 阿拉伯语
    EM_LANGUAGE_CATALAN,                // 加泰罗尼亚语
    EM_LANGUAGE_LATVIAN,                // 拉脱维亚语
    EM_LANGUAGE_THAI,                   // 泰语
    EM_LANGUAGE_HEBREW,                 // 希伯来语
    EM_LANGUAGE_Bosnian,                // 波斯尼亚文
} EM_LANGUAGE_TYPE;

// 支持的最大语言个数
#define	MAX_SUPPORTED_LANGUAGE	32
// 手机推送消息的翻译目标语言配置 (对应 CFG_APP_EVENT_LANGUAGE_INFO )
typedef struct tagCFG_APP_EVENT_LANGUAGE_INFO
{
	EM_LANGUAGE_TYPE		emCurrLanguage;														// 推送消息需要翻译成的目标语言
	int						nSupportLanguageCount;												// 设备支持的语言个数
	EM_LANGUAGE_TYPE		emLanguage[MAX_SUPPORTED_LANGUAGE];									// 设备支持翻译的语言列表
} CFG_APP_EVENT_LANGUAGE_INFO;

// dropbox token配置( 对应CFG_CMD_DROPBOXTOKEN)
typedef struct tagCFG_DROPBOXTOKEN_INFO
{
    char                    szDropBoxToken[CFG_COMMON_STRING_128];                               // dropbox token
    BOOL                    bKeyValid;                                                           // token valid
}CFG_DROPBOXTOKEN_INFO;

// PtzDevice 配置( 对应 CFG_CMD_PTZDEVICE)
typedef struct tagCFG_PTZDEVICE_INFO
{
    CFG_COMM_PROP		    stuAttribute;							                             // 串口属性
	int					    nAddress;								                             // 设备地址
    int                     nPort;                                                               // 串口端口号
    int                     nCurrentMode;                                                        // 控制模式,0:软件模式 1:硬件模式
    char				    szProtocolName[MAX_NAME_LEN];			                             // 协议名
}CFG_PTZDEVICE_INFO;

// DevLocation 配置( 对应CFG_CMD_DEVLOCATION)
typedef struct tagCFG_DEVLOCATION_INFO
{
    UINT							unLongitude;							                    // 经度 单位百万分之一度,范围0-360度
	UINT							unLatitude;								                    // 纬度 单位百万分之一度,范围0-360度
    double                          dbAltitude;                                                 // 海拔 单位米
    BOOL                            bConfigEnable;                                              // true:GPS信息按照配置上报
	float							fHeight;													// 设备高度 单位米
}CFG_DEVLOCATION_INFO;

// FireWarningExt 配置( 对应CFG_CMD_FIRE_WARNING_EXT)
typedef struct tagCFG_FIREWARNING_EXT_INFO
{
	BOOL			bVisualOverviewEnable;	// 可见光通道是否需要全景图
	BOOL			bVisualDetailEnable;	// 可见光通道是否需要细节图
	UINT			nThermoSnapTimes;		// 热成像通道抓图张数
}CFG_FIREWARNING_EXT_INFO;

// 标定信息单元
typedef struct tagCFG_CALIBRATE_UNIT_INFO
{
	UINT		nHeight;			// 分辨率高
	UINT		nWidth;				// 分辨率宽
	float		nPosition[3];		// 云台位置(P/T/Z 归一化)
	UINT		nLocation[2];		// 标定点坐标
	UINT		nHFOV;				// 横向视场角(单位:0.01度)
	UINT		nVFOV;				// 纵向视场角(单位:0.01度)
}CFG_CALIBRATE_UNIT_INFO;

// 标定基本信息
typedef struct tagCFG_CALIBRATE_INFO
{
	CFG_CALIBRATE_UNIT_INFO stuCalibrateUnitInfo[5][2];		//标定信息单元
	int nInfoNum;			//标定数量
}CFG_CALIBRATE_INFO;

// 标定点信息
typedef struct tagCFG_LOCATION_CALIBRATE_POINT_INFO
{
	UINT		nID;							// 标定点ID
	char		szName[CFG_COMMON_STRING_128];	// 标定点名称
	BOOL		bEnable;						// 使能
	UINT		nLongitude;						// 经度
	UINT		nLatitude;						// 纬度
	double		fAltitude;						// 海拔
	CFG_CALIBRATE_INFO	stuCalibrateInfo;		// 标定点基本信息
	BYTE		byReserved1[4];					// 字节对齐
}CFG_LOCATION_CALIBRATE_POINT_INFO;

//LocationCalibrate 配置( 对应CFG_CMD_LOCATION_CALIBRATE)
#define MAX_CALIBRATE_POINT_NUM 64 // 最大标定点个数
typedef struct tagCFG_LOCATION_CALIBRATE_INFO
{
	UINT		nVisualMaxHFOV;				// 可见光横向视角
	UINT		nVisualMaxVFOV;				// 可见光纵向视角
	UINT		nThermoMaxHFOV;				// 热成像横向视角
	UINT		nThermoMaxVFOV;				// 热成像纵向视角
	CFG_LOCATION_CALIBRATE_POINT_INFO	stuPointInfo[MAX_CALIBRATE_POINT_NUM];	// 标定点信息
	int			nPointNum;					// 标定点个数
	BYTE		byReserved1[4];				// 字节对齐
}CFG_LOCATION_CALIBRATE_INFO;


// 怠速配置(对应 CFG_CMD_IDLINGTIME)
typedef struct tagCFG_IDLINGTIME_INFO
{
	int						nIdlingTimeThreshold;		// 怠速停留阈值,单位:秒
	int						nSpeedThreshold;			// 怠速判断最大速度,单位:km/h
}CFG_IDLINGTIME_INFO;

// 汽车行驶状态配置(对应 CFG_CMD_CARDIVERSTATE)
typedef struct tagCFG_CARDIVERSTATE_INFO
{
	int						nAccelerationThreshold;		// 急加速阀值,单位:0.1m/s^2
	int						nDecelerationThreshold;		// 急减速阀值,单位:0.1m/s^2
}CFG_CARDIVERSTATE_INFO;

// 车载配置(对应 CFG_CMD_VEHICLE)
typedef struct tagCFG_VEHICLE_INFO
{
	char					szPlateNumber[CFG_MAX_PLATE_NUMBER_LEN];			// 车牌内容
}CFG_VEHICLE_INFO;

//智能家居场景列表配置(对应CFG_CMD_SMARTHOME_SCENELIST)
typedef struct tagCFG_SMARTHOME_SCENELIST_INFO
{
	DWORD							dwSize;				//结构体大小
	char							szSceneID[32];		//场景ID
	char 							szName[128];		//场景名称
}CFG_SMARTHOME_SCENELIST_INFO;


typedef enum tagEM_CFG_LC_LIGHT_TYPE
{
	EM_CFG_LC_LIGHT_TYPEUNKNOWN,						//未知
	EM_CFG_LC_LIGHT_TYPE_INFRAREDLIGHT,					//红外灯
	EM_CFG_LC_LIGHT_TYPE_WIHTELIGHT,					//白光灯
	EM_CFG_LC_LIGHT_TYPE_LASERLIGHT,					//激光灯
}EM_CFG_LC_LIGHT_TYPE;


typedef enum tagEM_CFG_LC_MODE
{
	EM_CFG_LC_MODE_UNKNOWN,								//未知
	EM_CFG_LC_MODE_MANUAL,								//手动
	EM_CFG_LC_MODE_ZOOMPRIO,							//倍率优先
	EM_CFG_LC_MODE_TIMING,								//定时
	EM_CFG_LC_MODE_AUTO,								//自动
	EM_CFG_LC_MODE_OFF,									//关闭灯光
	EM_CFG_LC_MODE_EXCLUSIVEMANUAL,						//支持多种灯光
	EM_CFG_LC_MODE_SMARTLIGHT,							//智能灯光
	EM_CFG_LC_MODE_LINKING,								//事件联动
	EM_CFG_LC_MODE_DUSKTODAWN,							//光敏
    EM_CFG_LC_MODE_FORCEON,                             //强制打开灯光 
}EM_CFG_LC_MODE;

#define CFG_LC_LIGHT_COUNT 4			//灯光组灯光数量

//灯光信息
typedef struct tagNET_LIGHT_INFO
{
	int			nLight;						//亮度百分比
	int			nAngle;						//激光灯角度归一化值
}NET_LIGHT_INFO;

//补光灯灵敏度配置信息单元
typedef struct tagCFG_LIGHTING_V2_UNIT
{
	EM_CFG_LC_LIGHT_TYPE	emLightType;					//灯光类型
	EM_CFG_LC_MODE			emMode;							//灯光模式
	int					nCorrection;					//灯光补偿
	int					nSensitive;						//灯光灵敏度
	int					nLightSwitchDelay;				//补光灯开关延时
	NET_LIGHT_INFO		anNearLight[CFG_LC_LIGHT_COUNT];	//近光灯组信息
	int					nNearLightLen;					//近光灯组数量
	NET_LIGHT_INFO		anMiddleLight[CFG_LC_LIGHT_COUNT];	//中光灯组信息
	int					nMiddleLightLen;				//中光灯组数量
	NET_LIGHT_INFO		anFarLight[CFG_LC_LIGHT_COUNT];		//远光灯组信息
	int					nFarLightLen;					//远光灯组数量
    BYTE                byReserved[128];			    //预留字节	
}CFG_LIGHTING_V2_UNIT;
#define LC_LIGHT_TYPE_NUM 3
//白天黑夜补光灯灵敏度配置
typedef struct tagCFG_LIGHTING_V2_DAYNIGHT
{
	CFG_LIGHTING_V2_UNIT		anLightInfo[LC_LIGHT_TYPE_NUM];			//各类型灯光信息
	int							nLightInfoLen;							//灯光类型数量
}CFG_LIGHTING_V2_DAYNIGHT;

#define CFG_LC_LIGHT_CONFIG 8                               // 白天黑夜对应灯光配置最大个数
//补光灯灵敏度配置
typedef struct tagCFG_LIGHTING_V2_INFO
{
	int							nChannel;					// 通道
    int                         nDNLightInfoNum;            // 白天黑夜对应灯光配置数量             
	CFG_LIGHTING_V2_DAYNIGHT	anDNLightInfo[CFG_LC_LIGHT_CONFIG];			// 白天黑夜对应灯光配置
                                                                            // 从元素0开始分别表示 白天、夜晚、普通、顺光、一般逆光、强逆光、低照度、自定义
}CFG_LIGHTING_V2_INFO;

#define MAX_KBUSER_NUM				    100				    // 操作员用户最大个数

//操作员用户信息
typedef struct tagCFG_KBUSER_PASSWORD_INFO
{
    UINT                                       nUserCode;                        // 键盘用户编号
    char                                       szPassword[7];                     // 键盘用户密码
    BYTE                                      bReserved[257];                   // 保留字节
}CFG_KBUSER_PASSWORD_INFO; 

//键盘操作员用户配置(对应CFG_CMD_KBUSER_PASSWORD)
typedef struct tagCFG_KBUSER_USERS_INFO
{
    DWORD							             dwSize;				          // 结构体大小
    int                                          nKbuserNum;                         // 操作员用户个数,一般默认支持的最大个数为32
    CFG_KBUSER_PASSWORD_INFO                       stuKbuserPassword[MAX_KBUSER_NUM];             // 操作员用户信息
}CFG_KBUSER_USERS_INFO;
//金库服务状态
typedef enum tagEM_GOLD_SERVICE
{
	EM_GOLD_SERVICE_UNKNOWN = -1,		//未知
	EM_GOLD_SERVICE_CLOSE,				//关闭
	EM_GOLD_SERVICE_OPEN,				//开启
	EM_GOLD_SERVICE_OTHER,				//其他
}EM_GOLD_SERVICE;
//门禁区域
typedef enum tagEM_GUARD_AREA
{
	EM_GUARD_AREA_UNKNOWN,			//未知
	EM_GUARD_AREA_HANDOVER,			//交接区
	EM_GUARD_AREA_CASH,				//现金区
	EM_GUARD_AREA_NOBLEMETAL,		//贵金属区
	EM_GUARD_AREA_DEPOSIT,			//寄存库
	EM_GUARD_AREA_CUSTODY,			//代保管库
	EM_GUARD_AREA_CHECK,			//清分整点区
	EM_GUARD_AREA_GOLDSPLIT,		//黄金分割区
	EM_GUARD_AREA_GODLSALE,			//黄金寄售区
	EM_GUARD_AREA_LOAD,				//装卸区
	EM_GUARD_AREA_BUSINESS,			//营业区
	EM_GUARD_AREA_OFFICE,			//办公区
	EM_GUARD_AREA_DUTYROOM,			//监控值班室
	EM_GUARD_AREA_OTHER,			//其他
	EM_GUARD_AREA_VOUCHER,			//凭证库
	EM_GUARD_AREA_ISSUE,			//发行库
	EM_GUARD_AREA_ACCOUNT,			//账务处理区
}EM_GUARD_AREA;
//门禁类型
typedef enum tagEM_GUARD_TYPE
{
	EM_GUARD_TYPE_UNKNOWN,			//未知
	EM_GUARD_TYPE_VAULT,			//金库区
	EM_GUARD_TYPE_WORK,				//工作区
}EM_GUARD_TYPE;
//OEM数据
typedef struct tagCFG_ACCESS_OEM_DATA
{
	char				szZoneNo[6];			//地区号
	BYTE				byReserved1[2];			//对齐字节
	char				szBrNo[6];				//网点号
	BYTE				byReserved2[2];			//对齐字节
	EM_GUARD_AREA		emGuardArea;			//门禁区域
	BYTE				byReserved3[1];			//对齐字节
	EM_GUARD_TYPE		emGuardType;			//门禁类型
	BYTE				byReserved4[1];			//对齐字节
	char				szCorpId[11];			//厂商标识
	BYTE				byReserved5[1];			//对齐字节
	char				szDeviceType[6];		//设备类型
	BYTE				byReserved6[2];			//对齐字节
	char				szLastModTime[20];		//最后修改时间
	char				szLastModUser[11];		//最后修改人
	BYTE				byReserved7[1];			//对齐字节
	EM_GOLD_SERVICE		emService;				//金库服务状态
	BYTE				byReserved[128];		//保留字节
}CFG_ACCESS_OEM_DATA;
//工行金库门禁配置
typedef struct tagCFG_ACCESS_OEM_INFO
{
	char					szCorporation[CFG_COMMON_STRING_32];		//OEM对象
	unsigned int			nSuiteNumber;								//OEM套件号
	CFG_ACCESS_OEM_DATA		stuData;									//OEM信息
	BYTE					byReserved[1024];							//保留字节
}CFG_ACCESS_OEM_INFO;
//热成像特有的机芯降噪配置
typedef struct tagCFG_THERM_DENOISE_INFO
{
	BOOL							bEnable;					// 机芯降噪使能
	UINT							nDenoiseValue;				// 降噪等级0-100, bEnable为TRUE时有效
	BYTE							byReserved[128];			// 保留字节
}CFG_THERM_DENOISE_INFO;

typedef struct tagCFG_THERM_DENOISE
{
	CFG_THERM_DENOISE_INFO			stuThermDenoiseInfo[3];		// [0]:白天,[1]:黑夜,[2]:普通
	BYTE							byReserved[1024];			// 保留字节
}CFG_THERM_DENOISE;

// 灯光工作模式
typedef enum tagEM_LAMP_WORK_MODE
{
    EM_LAMP_UNKNOWN = -1,		// 未知
    EM_LAMP_NO_FLASH,			// 静止闪光
    EM_LAMP_ALWAYS_FLASH,		// 始终闪光
    EM_LAMP_AUTO_FLASH,         // 自动闪光
}EM_LAMP_WORK_MODE;

// 灯光自动模式
typedef enum tagEM_LAMP_AUTO_TYPE
{
    EM_LAMP_AUTO_UNKNOWN,			// 未知
    EM_LAMP_AUTO_TIMEING,			// 按时间控制开关
    EM_LAMP_ALWAYS_BRIGHTNESS,		// 按亮度
    EM_LAMP_AUTO_SPACE_STATE,       // 车辆刚驶入时设备亮灯,一定时间后关闭。时间值由程序调试取最优值,暂不开放。
    EM_LAMP_AUTO_ICRCUT,            // 亮灯绑定在ICR切换上,根据ICR状态开关
}EM_LAMP_AUTO_TYPE;

// 交通灯光配置
typedef struct tagTRAFFIC_CONSTATE_LAMP_CONFIG
{
    UINT                    nLightMask;                 // 灯控掩码,某些灯上有6个灯泡,可设置部分灯亮,按位表示。1表示亮,0表示灭
    UINT                    nBrightness;                // 常亮灯亮度[0,100]
    UINT                    nPreValue;                  // 亮度预设值, 环境亮度低于此值,常亮灯开始工作
    EM_LAMP_WORK_MODE		emLampMode;			        // 灯光工作模式
    EM_LAMP_AUTO_TYPE       emAutoMode;                 // 自动模式下的工作类型
	CFG_TIME_SCHEDULE       stuTimeSchedule;			// 时间段配置
    BYTE					byReserved[1024];	        // 保留字节
}TRAFFIC_CONSTATE_LAMP_CONFIG;

// 智能交通灯光配置
typedef struct tagCFG_CONSTANT_LAMP_INFO
{
    UINT                         nTrafficLampNum;    // 智能交通灯光配置个数
    TRAFFIC_CONSTATE_LAMP_CONFIG stuTrafficLamp[16];	 // 灯光的配置数组
}CFG_CONSTANT_LAMP_INFO;

// 线圈工作模式
typedef enum tagEM_TRAFFOCIO_WORKMODE
{
    EM_TRAFFOCIO_UNKNOWN = -1,			// 未知
    EM_TRAFFOCIO_SINGLE_COIL,			// 单线圈工作模式
    EM_TRAFFOCIO_DOUBLE_COIL_SPEED,		// 双线圈测试模式
    EM_TRAFFOCIO_DOUBLE_COIL_TRAFFIC,	// 双线圈交通模式
}EM_TRAFFOCIO_WORKMODE;


// 线圈触发方式
typedef enum tagEM_COIL_TRIGGER_MODE
{
    EM_TRIGGER_UNKNOWN = -1,		// 未知
    EM_TRIGGER_NO_TRIGGER,			// 不触发
    EM_TRIGGER_RISING_EDGE,			// 上升沿
    EM_TRIGGER_FALLING_EDGE,		// 下降沿
    EM_TRIGGER_RISING_FALLING,		// 上升下降沿
}EM_COIL_TRIGGER_MODE;

// 线圈配置类型
typedef enum tagEM_COIL_CONFIG_TYEP
{
    EM_COIL_CONFIG_UNKNOWN = -1,		// 未知
    EM_COIL_CONFIG_GATE,	    		// 卡口配置类型
    EM_COIL_CONFIG_ELE_POLICE,			// 电警配置类型
}EM_COIL_CONFIG_TYEP;


// 抓拍时机
typedef enum tagEM_SNAP_TRIGGER_MODE
{
    EM_SNAP_TRIGGER_UNKNOWN = -1,		// 未知
    EM_SNAP_TRIGGER_NO_TRIGGER,		    // 不触发
    EM_SNAP_TRIGGER_IN_TRIGGER,		    // 入线圈触发
    EM_SNAP_TRIGGER_OUT_TRIGGER,		// 出线圈触发
    EM_SNAP_TRIGGER_INOUT_TRIGGER,		// 出入线圈都触发
}EM_SNAP_TRIGGER_MODE;

// 红灯方向
typedef enum tagEM_RED_DIRECTION
{
    EM_RED_DIRECTION_UNKNOWN = -1,		// 未知
    EM_RED_DIRECTION_NO_RELATED,        // 不关联
    EM_RED_DIRECTION_LEFT,              // 左转红灯
    EM_RED_DIRECTION_STRAIGT,           // 直行红灯
    EM_RED_DIRECTION_RIGHT,             // 右转红灯
    EM_RED_DIRECTION_WAIT_LEFT,         // 待左
    EM_RED_DIRECTION_WAIT_RIGHT,        // 待右
    EM_RED_DIRECTION_STRAIGT_LEFT,      // 直行左转
    EM_RED_DIRECTION_STRAIGT_RIGHT,     // 直行右转,电警有效
}EM_RED_DIRECTION;


// 车道的线圈属性
typedef struct tagCFG_TRAFFICIO_LANES_COILS
{
    UINT                        nCoilID;                // 线圈ID
    EM_COIL_TRIGGER_MODE        emTriggerMode;          // 触发方式
    EM_COIL_CONFIG_TYEP         emType;                 // 配置类型
    UINT                        nDelayFlashID;          // 延时闪光灯序号,范围0~5,0表示不延时任何闪光灯
    UINT                        nFlashSerialID;         // 闪光灯序号,范围0~5,0表示不打开闪光灯
    EM_RED_DIRECTION            emRedDirection;         // 红灯方向
    UINT                        nNextTriggerTime;       // 下次触发时间
    UINT                        nDelayTriggerTime;      // 延时触发时间,ms为单位,0表示立即触发
    EM_SNAP_TRIGGER_MODE        emSnapTriggerMode;      // 抓拍时机
}CFG_TRAFFICIO_LANES_COILS;

// 交通线圈的车道属性
typedef struct tagCFG_TRAFFICIO_LANES
{
    UINT                        nLaneNumber;            // 车道号,车道号范围是0-7
    UINT                        nCarScheme;             // 卡口配置方案,具体的方案索引,具体方案含义参考打包环境local.png
    EM_TRAFFOCIO_WORKMODE       emWorkMode;             // 工作方式
    int                         nLanesCoils;            // 线圈配置的个数
    CFG_TRAFFICIO_LANES_COILS   stuLanesCoils[32];      // 线圈配置
    BYTE					    byReserved[2048];	    // 保留字节
}CFG_TRAFFICIO_LANES;

// 线圈IO配置
typedef struct tagCFG_TRAFFIC_IO
{
    BOOL                bEnable;                 // 使能
    UINT                nLanes;                  // 车道数量
    CFG_TRAFFICIO_LANES stuTrafficIoLanes[16];   // 车道配置
}CFG_TRAFFIC_IO;

// 预案关联的一项配置
typedef struct tagNET_COLLECTION_NAME_INFOS
{
    char        szName[32];                         // 配置名称
    char        szVideoName[32];                    // 视频预案的名称
    char        szAdditionalName[32];               // 附加预案的名称
    char        szControlID[32];                    // 控制编号
    BYTE		byReserved[64];	                    // 保留字节
}NET_COLLECTION_NAME_INFOS;

// 预案关联的一项配置
typedef struct tagNET_MONITOR_WALL_COLLECTION_MAP_INFO
{
   NET_COLLECTION_NAME_INFOS        stuCollection[32];          // 预案配置,一个电视墙可以配置32个预案
   int                              nCollectionCount;           // 预案配置的个数
   BYTE		                        byReserved[132];	        // 保留字节
}NET_MONITOR_WALL_COLLECTION_MAP_INFO;

// 电视墙预关联配置,一维数组,每一个元素对应一个电视墙对应结构体
typedef struct tagCFG_MONITOR_WALL_COLLECTION_MAP_INFO
{   
    DWORD                                   dwSize;                             // 结构体大小
    BOOL                                    bAllMonitorWall;                    // 是否为全电视墙的设置(只在设置时有效),TRUE表示对所有电视墙进行设置(chennal 为-1);FALSE表示对指定电视墙进行处理(chennal 为非-1)。
    BYTE                                    byReserved[4];                      // 保留字节,用于字节对齐
    int                                     nWallCount;                         // 电视墙的个数
    NET_MONITOR_WALL_COLLECTION_MAP_INFO    stuMonitorWallCollectioInfo[16];    // 电视墙预案信息,16表示最多支持16个电视墙墙的预案配置
}CFG_MONITOR_WALL_COLLECTION_MAP_INFO;

// 视频码流类型
typedef enum tagEM_INPUT_STREAM_TYPE
{
    EM_INPUT_STREAM_UNKNOWN,		    // 未知
    EM_INPUT_STREAM_MAIN,		        // “Main”-主码流
    EM_INPUT_STREAM_EXTRA1,		        // “Extra1”-辅码流1
    EM_INPUT_STREAM_EXTRA2,		        // “Extra2”-辅码流2
    EM_INPUT_STREAM_EXTRA3,		        // “Extra3”-辅码流3
}EM_INPUT_STREAM_TYPE;

// 设备连接方式
typedef enum tagEM_CONNECTING_METHOD
{
    EM_CONNECTING_UNKNOWN,		        // 未知
    EM_CONNECTING_DIRECT,		        // “Direct”, 直连设备
    EM_CONNECTING_VIADSS,		        // “ViaDSS”, 经过大华平台连接设
}EM_CONNECTING_METHOD;

// 级联权限验证信息,级联预览用
typedef struct tagNET_CASCADE_AUTHENTICATOR
{
    char            szUserName[128];        // 用户名
    char            szPassWord[128];        // 密码
    char            szSerialNo[64];         // 验证设备序列号
    BYTE            bReserver[128];         // 保留字节
}NET_CASCADE_AUTHENTICATOR;

// 输入视频信息
typedef struct tagNET_VIDEO_INPUT_INFO
{
    char                            szDevice[32];           // 设备唯一标志
    UINT                            nChannel;               // 视频输入通道号
    UINT                            nInterval;              // 轮巡时间间隔,单位秒,范围[5,120]
    EM_INPUT_STREAM_TYPE            emStream;               // 视频码流类型
    EM_CONNECTING_METHOD            emConnectingMethod;     // 设备连接方式
    NET_CASCADE_AUTHENTICATOR       stuCascadeAuthenticator; //级联权限验证信息,级联预览用
    AV_CFG_RemoteDevice             stuDevice;              // 设备详细信息,只可获取不可更改
    BYTE		                    byReserved[256];	    // 保留字节
}NET_VIDEO_INPUT_INFO;

// 预案关联的一项配置
typedef struct tagNET_VIDEO_INPUT_GROUP_INFO
{
    char                            szName[32];             // 输入组名称
    char                            szControlID[32];        // 控制编号
    BYTE		                    byReserved1[4];	        // 保留字节,用于字节对齐
    int                             nListCount;             // 视频输入列表的数量        
    NET_VIDEO_INPUT_INFO            stuVideoInput[64];      // 视频输入信息数组,最多支持64个
    BYTE		                    byReserved[256];	    // 保留字节
}NET_VIDEO_INPUT_GROUP_INFO;

// 视频输入组配置
typedef struct tagCFG_VIDEO_INPUT_GROUP_INFO
{   
    DWORD                           dwSize;                 // 结构体大小
    BYTE		                    byReserved1[4];	        // 保留字节,用于字节对齐
    int					            nMaxGroupCount;			// 组信息设置数组大小, 用户填写
    int					            nRetGroupCount;			// 返回的组信息数量
    NET_VIDEO_INPUT_GROUP_INFO*     pGroupInfo;             // 输入组对象,用户自己申请内存
}CFG_VIDEO_INPUT_GROUP_INFO;

// 门超时未关配置
typedef struct tagCFG_DOOR_NOT_CLOSE_INFO
{
	BOOL							bEnable;				// 使能开关
	CFG_ALARM_MSG_HANDLE			stuEventHandler;		// 报警联动
}CFG_DOOR_NOT_CLOSE_INFO;

// 闯入报警配置
typedef struct tagCFG_BREAK_IN_INFO
{
	BOOL							bEnable;				// 使能开关
	CFG_ALARM_MSG_HANDLE			stuEventHandler;		// 报警联动
}CFG_BREAK_IN_INFO;

// 反潜回报警配置
typedef struct tagCFG_ANTI_PASSBACK_INFO
{
	BOOL							bEnable;				// 使能开关
	CFG_ALARM_MSG_HANDLE			stuEventHandler;		// 报警联动
}CFG_ANTI_PASSBACK_INFO;


// 胁迫报警配置
typedef struct tagCFG_DURESS_INFO
{
	BOOL							bEnable;				// 使能开关
	int								nDelayLinkTime;			// 延时联动时间,单位秒,范围1-300秒
	CFG_ALARM_MSG_HANDLE			stuEventHandler;		// 报警联动
}CFG_DURESS_INFO;


// 非法超次报警报警配置
typedef struct tagCFG_DOOR_MALICIOUS_ACCESSCONTROL_INFO
{
	BOOL							bEnable;				// 使能开关
	int								nLimitedTimes;			// 限制次数,范围2-30
	CFG_ALARM_MSG_HANDLE			stuEventHandler;		// 报警联动
}CFG_DOOR_MALICIOUS_ACCESSCONTROL_INFO;


// 标准黑体源异常报警配置
typedef struct tagCFG_REGULATOR_DETECT_INFO
{
	BOOL							bEnable;				// 使能开关
	int								nSensitivity;			// 灵敏度, 1-100
	CFG_ALARM_MSG_HANDLE			stuEventHandler;		// 报警联动
}CFG_REGULATOR_DETECT_INFO;

/************************************************************************
** 接口定义
***********************************************************************/
// 报警事件类型根据dhnetsdk.h解析出来的报警类型(pAlarmInfo, pBuffer内存由SDK内部申请释放)
typedef int  (CALLBACK *fALARMEvent)(DWORD dwAlarmType, void* pAlarmInfo, DWORD dwStructSize, BYTE *pBuffer, DWORD dwBufSize, LDWORD dwUser);

// 回调方式进行数据解析,dwDataType表示数据解析得到类型(pDataInfo, pBuffer内存由SDK内部申请释放) 
typedef int  (CALLBACK *fAnalyzerData)(DWORD dwDataType, void* pDataInfo, DWORD dwStructSize, BYTE *pBuffer, DWORD dwBufSize, LDWORD dwUser);

// 解析查询到的配置信息(szInBuffer,lpOutBuffer内存由用户申请释放)
CLIENT_CFG_API BOOL  CALL_METHOD CLIENT_ParseData(char* szCommand, char* szInBuffer, LPVOID lpOutBuffer, DWORD dwOutBufferSize, void* pReserved);

// 组成要设置的配置信息(lpInBuffer,szOutBuffer内存由用户申请释放)
CLIENT_CFG_API BOOL  CALL_METHOD CLIENT_PacketData(char* szCommand, LPVOID lpInBuffer, DWORD dwInBufferSize, char* szOutBuffer, DWORD dwOutBufferSize);

// 录像报警事件解析(lpInBuffer内存由用户申请释放)
CLIENT_CFG_API BOOL  CALL_METHOD CLIENT_ParseAnalyzerEventData(LPVOID lpInBuffer, DWORD dwInBufferSize, fALARMEvent cbEvent, LDWORD dwUser);

// 回调方式数据解析(lpInBuffer内存由用户申请释放)
CLIENT_CFG_API BOOL CALL_METHOD CLIENT_ParseDataByCallback(LPVOID lpInBuffer, DWORD dwInBufferSize, fAnalyzerData cbAnalyzer, LDWORD dwUser);

// 解析获取到的智能全局配置/智能模板配置/指定大类下的智能规则配置(szInBuffer内存由用户申请释放)
CLIENT_CFG_API BOOL CALL_METHOD CLIENT_ParseVideoInAnalyse(char* szCommand, EM_SCENE_TYPE emSceneType, char *szInBuffer, DWORD dwInBufferSize, LPVOID lpOutParam, DWORD dwOutParamSize);


#ifdef __cplusplus
}
#endif

#endif // DHCONFIGSDK_H