26#define PyInt_AsLong PyLong_AsLong
30 T obj_ptr = (T)PyCapsule_GetPointer(pyobj, type_ptr.c_str());
31 if (obj_ptr ==
nullptr) {
32 AERROR <<
"PyObjectToPtr failed,type->" << type_ptr <<
"pyobj: " << pyobj;
39 PyObject* pyobj_regist_fun =
nullptr;
40 unsigned int oneshot = 0;
41 if (!PyArg_ParseTuple(args,
const_cast<char*
>(
"kOI:cyber_new_PyTimer"),
42 &period, &pyobj_regist_fun, &oneshot)) {
43 AERROR <<
"cyber_new_PyTimer parsetuple failed!";
48 void (*callback_fun)() = (
void (*)())0;
49 callback_fun = (void (*)())
PyInt_AsLong(pyobj_regist_fun);
50 PyTimer* pytimer =
new PyTimer(period, callback_fun, oneshot != 0);
51 return PyCapsule_New(pytimer,
"apollo_cybertron_pytimer",
nullptr);
56 return PyCapsule_New(pytimer,
"apollo_cybertron_pytimer",
nullptr);
60 PyObject* pyobj_timer =
nullptr;
61 if (!PyArg_ParseTuple(args,
const_cast<char*
>(
"O:cyber_delete_PyTimer"),
67 auto* pytimer =
reinterpret_cast<PyTimer*
>(
68 PyCapsule_GetPointer(pyobj_timer,
"apollo_cybertron_pytimer"));
69 if (
nullptr == pytimer) {
70 AERROR <<
"cyber_delete_PyTimer:timer ptr is null!";
80 PyObject* pyobj_timer =
nullptr;
81 if (!PyArg_ParseTuple(args,
const_cast<char*
>(
"O:cyber_delete_PyTimer"),
87 auto* pytimer =
reinterpret_cast<PyTimer*
>(
88 PyCapsule_GetPointer(pyobj_timer,
"apollo_cybertron_pytimer"));
89 if (
nullptr == pytimer) {
90 AERROR <<
"cyber_delete_PyTimer:timer ptr is null!";
100 PyObject* pyobj_timer =
nullptr;
101 if (!PyArg_ParseTuple(args,
const_cast<char*
>(
"O:cyber_delete_PyTimer"),
107 auto* pytimer =
reinterpret_cast<PyTimer*
>(
108 PyCapsule_GetPointer(pyobj_timer,
"apollo_cybertron_pytimer"));
109 if (
nullptr == pytimer) {
110 AERROR <<
"cyber_delete_PyTimer:timer ptr is null!";
120 PyObject* pyobj_timer =
nullptr;
122 PyObject* pyobj_regist_fun =
nullptr;
123 unsigned int oneshot = 0;
125 void (*callback_fun)() = (
void (*)())0;
127 if (!PyArg_ParseTuple(args,
128 const_cast<char*
>(
"OkOI:cyber_PyTimer_set_option"),
129 &pyobj_timer, &period, &pyobj_regist_fun, &oneshot)) {
135 PyObjectToPtr<PyTimer*>(pyobj_timer,
"apollo_cybertron_pytimer");
136 callback_fun = (void (*)())
PyInt_AsLong(pyobj_regist_fun);
137 if (
nullptr == pytimer) {
138 AERROR <<
"cyber_PyTimer_set_option ptr is null!";
143 pytimer->
set_option(period, callback_fun, oneshot != 0);
149static PyMethodDef _cyber_timer_methods[] = {
157 {
nullptr,
nullptr, 0,
nullptr}
162 static struct PyModuleDef module_def = {
163 PyModuleDef_HEAD_INIT,
164 "_cyber_timer_wrapper",
167 _cyber_timer_methods,
174 return PyModule_Create(&module_def);
void set_option(uint32_t period, void(*func)(), bool oneshot)
PyObject * cyber_new_PyTimer(PyObject *self, PyObject *args)
PyObject * cyber_delete_PyTimer(PyObject *self, PyObject *args)
PyObject * cyber_PyTimer_start(PyObject *self, PyObject *args)
T PyObjectToPtr(PyObject *pyobj, const std::string &type_ptr)
PyObject * cyber_PyTimer_set_option(PyObject *self, PyObject *args)
PyObject * cyber_new_PyTimer_noparam(PyObject *self, PyObject *args)
PyMODINIT_FUNC PyInit__cyber_timer_wrapper(void)
Init function of this module
PyObject * cyber_PyTimer_stop(PyObject *self, PyObject *args)