/*
 * Copyright 2020 Free Software Foundation, Inc.
 *
 * This file is part of GNU Radio
 *
 * SPDX-License-Identifier: GPL-3.0-or-later
 *
 */

/***********************************************************************************/
/* This file is automatically generated using bindtool and can be manually edited  */
/* The following lines can be configured to regenerate this file during cmake      */
/* If manual edits are made, the following tags should be modified accordingly.    */
/* BINDTOOL_GEN_AUTOMATIC(1)                                                       */
/* BINDTOOL_USE_PYGCCXML(0)                                                        */
/* BINDTOOL_HEADER_FILE(dvb_config.h)                                        */
/* BINDTOOL_HEADER_FILE_HASH(a51e9bda5f13b96d3d09d0347395379e)                     */
/***********************************************************************************/

#include <pybind11/complex.h>
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>

namespace py = pybind11;

#include <gnuradio/dtv/dvb_config.h>
// pydoc.h is automatically generated in the build directory
#include <dvb_config_pydoc.h>

void bind_dvb_config(py::module& m)
{


    py::enum_<::gr::dtv::dvb_standard_t>(m, "dvb_standard_t")
        .value("STANDARD_DVBS2", ::gr::dtv::STANDARD_DVBS2) // 0
        .value("STANDARD_DVBT2", ::gr::dtv::STANDARD_DVBT2) // 1
        .export_values();
    py::enum_<::gr::dtv::dvb_code_rate_t>(m, "dvb_code_rate_t")
        .value("C1_4", ::gr::dtv::C1_4)                         // 0
        .value("C1_3", ::gr::dtv::C1_3)                         // 1
        .value("C2_5", ::gr::dtv::C2_5)                         // 2
        .value("C1_2", ::gr::dtv::C1_2)                         // 3
        .value("C3_5", ::gr::dtv::C3_5)                         // 4
        .value("C2_3", ::gr::dtv::C2_3)                         // 5
        .value("C3_4", ::gr::dtv::C3_4)                         // 6
        .value("C4_5", ::gr::dtv::C4_5)                         // 7
        .value("C5_6", ::gr::dtv::C5_6)                         // 8
        .value("C7_8", ::gr::dtv::C7_8)                         // 9
        .value("C8_9", ::gr::dtv::C8_9)                         // 10
        .value("C9_10", ::gr::dtv::C9_10)                       // 11
        .value("C13_45", ::gr::dtv::C13_45)                     // 12
        .value("C9_20", ::gr::dtv::C9_20)                       // 13
        .value("C90_180", ::gr::dtv::C90_180)                   // 14
        .value("C96_180", ::gr::dtv::C96_180)                   // 15
        .value("C11_20", ::gr::dtv::C11_20)                     // 16
        .value("C100_180", ::gr::dtv::C100_180)                 // 17
        .value("C104_180", ::gr::dtv::C104_180)                 // 18
        .value("C26_45", ::gr::dtv::C26_45)                     // 19
        .value("C18_30", ::gr::dtv::C18_30)                     // 20
        .value("C28_45", ::gr::dtv::C28_45)                     // 21
        .value("C23_36", ::gr::dtv::C23_36)                     // 22
        .value("C116_180", ::gr::dtv::C116_180)                 // 23
        .value("C20_30", ::gr::dtv::C20_30)                     // 24
        .value("C124_180", ::gr::dtv::C124_180)                 // 25
        .value("C25_36", ::gr::dtv::C25_36)                     // 26
        .value("C128_180", ::gr::dtv::C128_180)                 // 27
        .value("C13_18", ::gr::dtv::C13_18)                     // 28
        .value("C132_180", ::gr::dtv::C132_180)                 // 29
        .value("C22_30", ::gr::dtv::C22_30)                     // 30
        .value("C135_180", ::gr::dtv::C135_180)                 // 31
        .value("C140_180", ::gr::dtv::C140_180)                 // 32
        .value("C7_9", ::gr::dtv::C7_9)                         // 33
        .value("C154_180", ::gr::dtv::C154_180)                 // 34
        .value("C11_45", ::gr::dtv::C11_45)                     // 35
        .value("C4_15", ::gr::dtv::C4_15)                       // 36
        .value("C14_45", ::gr::dtv::C14_45)                     // 37
        .value("C7_15", ::gr::dtv::C7_15)                       // 38
        .value("C8_15", ::gr::dtv::C8_15)                       // 39
        .value("C32_45", ::gr::dtv::C32_45)                     // 40
        .value("C2_9_VLSNR", ::gr::dtv::C2_9_VLSNR)             // 41
        .value("C1_5_MEDIUM", ::gr::dtv::C1_5_MEDIUM)           // 42
        .value("C11_45_MEDIUM", ::gr::dtv::C11_45_MEDIUM)       // 43
        .value("C1_3_MEDIUM", ::gr::dtv::C1_3_MEDIUM)           // 44
        .value("C1_5_VLSNR_SF2", ::gr::dtv::C1_5_VLSNR_SF2)     // 45
        .value("C11_45_VLSNR_SF2", ::gr::dtv::C11_45_VLSNR_SF2) // 46
        .value("C1_5_VLSNR", ::gr::dtv::C1_5_VLSNR)             // 47
        .value("C4_15_VLSNR", ::gr::dtv::C4_15_VLSNR)           // 48
        .value("C1_3_VLSNR", ::gr::dtv::C1_3_VLSNR)             // 49
        .value("C_OTHER", ::gr::dtv::C_OTHER)                   // 50
        .export_values();
    py::enum_<::gr::dtv::dvb_framesize_t>(m, "dvb_framesize_t")
        .value("FECFRAME_SHORT", ::gr::dtv::FECFRAME_SHORT)   // 0
        .value("FECFRAME_NORMAL", ::gr::dtv::FECFRAME_NORMAL) // 1
        .value("FECFRAME_MEDIUM", ::gr::dtv::FECFRAME_MEDIUM) // 2
        .export_values();
    py::enum_<::gr::dtv::dvb_constellation_t>(m, "dvb_constellation_t")
        .value("MOD_QPSK", ::gr::dtv::MOD_QPSK)                     // 0
        .value("MOD_16QAM", ::gr::dtv::MOD_16QAM)                   // 1
        .value("MOD_64QAM", ::gr::dtv::MOD_64QAM)                   // 2
        .value("MOD_256QAM", ::gr::dtv::MOD_256QAM)                 // 3
        .value("MOD_8PSK", ::gr::dtv::MOD_8PSK)                     // 4
        .value("MOD_8APSK", ::gr::dtv::MOD_8APSK)                   // 5
        .value("MOD_16APSK", ::gr::dtv::MOD_16APSK)                 // 6
        .value("MOD_8_8APSK", ::gr::dtv::MOD_8_8APSK)               // 7
        .value("MOD_32APSK", ::gr::dtv::MOD_32APSK)                 // 8
        .value("MOD_4_12_16APSK", ::gr::dtv::MOD_4_12_16APSK)       // 9
        .value("MOD_4_8_4_16APSK", ::gr::dtv::MOD_4_8_4_16APSK)     // 10
        .value("MOD_64APSK", ::gr::dtv::MOD_64APSK)                 // 11
        .value("MOD_8_16_20_20APSK", ::gr::dtv::MOD_8_16_20_20APSK) // 12
        .value("MOD_4_12_20_28APSK", ::gr::dtv::MOD_4_12_20_28APSK) // 13
        .value("MOD_128APSK", ::gr::dtv::MOD_128APSK)               // 14
        .value("MOD_256APSK", ::gr::dtv::MOD_256APSK)               // 15
        .value("MOD_BPSK", ::gr::dtv::MOD_BPSK)                     // 16
        .value("MOD_BPSK_SF2", ::gr::dtv::MOD_BPSK_SF2)             // 17
        .value("MOD_8VSB", ::gr::dtv::MOD_8VSB)                     // 18
        .value("MOD_OTHER", ::gr::dtv::MOD_OTHER)                   // 19
        .export_values();
    py::enum_<::gr::dtv::dvb_guardinterval_t>(m, "dvb_guardinterval_t")
        .value("GI_1_32", ::gr::dtv::GI_1_32)     // 0
        .value("GI_1_16", ::gr::dtv::GI_1_16)     // 1
        .value("GI_1_8", ::gr::dtv::GI_1_8)       // 2
        .value("GI_1_4", ::gr::dtv::GI_1_4)       // 3
        .value("GI_1_128", ::gr::dtv::GI_1_128)   // 4
        .value("GI_19_128", ::gr::dtv::GI_19_128) // 5
        .value("GI_19_256", ::gr::dtv::GI_19_256) // 6
        .export_values();

    // This will allow enum values to be passed int values
    py::implicitly_convertible<int, gr::dtv::dvb_standard_t>();
    py::implicitly_convertible<int, gr::dtv::dvb_code_rate_t>();
    py::implicitly_convertible<int, gr::dtv::dvb_framesize_t>();
    py::implicitly_convertible<int, gr::dtv::dvb_constellation_t>();
    py::implicitly_convertible<int, gr::dtv::dvb_guardinterval_t>();
}
