aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python/lib_periphs.cpp
blob: 030752ede9cc268a869d4e763b3b6bd040f5b79e (plain)
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
#include "lib_periphs.hpp"
#include "lmk04828.hpp"
#include <mpm/spi_iface.hpp>
#include <boost/python.hpp>

namespace bp = boost::python;

void export_lmk(){
    //Register submodule types
    bp::object lmk_module(bp::handle<>(bp::borrowed(PyImport_AddModule("libpyusrp_periphs.lmk"))));
    bp::scope().attr("lmk") = lmk_module;
    bp::scope io_scope = lmk_module;

    bp::class_<lmk04828_iface, boost::shared_ptr<lmk04828_iface>, boost::noncopyable >("lmk04828_iface", bp::no_init)
               .def("make", &lmk04828_iface::make)
               .def("verify_chip_id", &lmk04828_iface::verify_chip_id)
               .def("init", &lmk04828_iface::init)
               .def("send_sysref_pulse", &lmk04828_iface::send_sysref_pulse)
               ;
}

void export_spi(){
    //Register submodule types
    bp::object spi_module(bp::handle<>(bp::borrowed(PyImport_AddModule("libpyusrp_periphs.spi"))));
    bp::scope().attr("spi") = spi_module;
    bp::scope io_scope = spi_module;

    bp::class_<mpm::spi_iface, boost::noncopyable>("spi_iface", bp::no_init)
        .def("write_byte", &mpm::spi_iface::write_byte)
        .def("write_bytes", &mpm::spi_iface::write_bytes)
        .def("read_byte", &mpm::spi_iface::read_byte)
        .def("write_field", &mpm::spi_iface::write_field)
        .def("read_field", &mpm::spi_iface::read_field)
        .def("get_wire_mode", &mpm::spi_iface::get_wire_mode)
        .def("get_endianness", &mpm::spi_iface::get_endianness)
        .def("get_chip_select", &mpm::spi_iface::get_chip_select)
        ;

    bp::enum_<mpm::spi_iface::spi_endianness_t>("spi_endianness")
        .value("lsb_first", mpm::spi_iface::spi_endianness_t::LSB_FIRST)
        .value("msb_first", mpm::spi_iface::spi_endianness_t::MSB_FIRST)
        ;

    bp::enum_<mpm::spi_iface::spi_wire_mode_t>("spi_wire_mode")
        .value("three_wire_mode", mpm::spi_iface::spi_wire_mode_t::THREE_WIRE_MODE)
        .value("four_wire_mode", mpm::spi_iface::spi_wire_mode_t::FOUR_WIRE_MODE)
        ;
}