mirror of
https://github.com/xtacocorex/CHIP_IO
synced 2025-07-20 04:43:21 +00:00
adding the code to py_pwm.c to get the error data out of c_pwm.c. general code cleanup. this should close #56 as the softpwm code had the error string support already in it
This commit is contained in:
@ -127,7 +127,6 @@ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwar
|
|||||||
init_module();
|
init_module();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (direction != INPUT && direction != OUTPUT)
|
if (direction != INPUT && direction != OUTPUT)
|
||||||
{
|
{
|
||||||
PyErr_SetString(PyExc_ValueError, "An invalid direction was passed to setup()");
|
PyErr_SetString(PyExc_ValueError, "An invalid direction was passed to setup()");
|
||||||
|
@ -73,14 +73,12 @@ static PyObject *py_start_channel(PyObject *self, PyObject *args, PyObject *kwar
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (duty_cycle < 0.0 || duty_cycle > 100.0)
|
if (duty_cycle < 0.0 || duty_cycle > 100.0) {
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_ValueError, "duty_cycle must have a value from 0.0 to 100.0");
|
PyErr_SetString(PyExc_ValueError, "duty_cycle must have a value from 0.0 to 100.0");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frequency <= 0.0)
|
if (frequency <= 0.0) {
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_ValueError, "frequency must be greater than 0.0");
|
PyErr_SetString(PyExc_ValueError, "frequency must be greater than 0.0");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -90,8 +88,12 @@ static PyObject *py_start_channel(PyObject *self, PyObject *args, PyObject *kwar
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pwm_start(key, duty_cycle, frequency, polarity))
|
if (pwm_start(key, duty_cycle, frequency, polarity) < 0) {
|
||||||
|
char err[2000];
|
||||||
|
snprintf(err, sizeof(err), "Unable to start PWM: %s (%s)", channel, get_error_msg());
|
||||||
|
PyErr_SetString(PyExc_ValueError, err);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
}
|
}
|
||||||
@ -112,7 +114,12 @@ static PyObject *py_stop_channel(PyObject *self, PyObject *args, PyObject *kwarg
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pwm_disable(key);
|
if (pwm_disable(key) < 0) {
|
||||||
|
char err[2000];
|
||||||
|
snprintf(err, sizeof(err), "PWM: %s issue: (%s)", channel, get_error_msg());
|
||||||
|
PyErr_SetString(PyExc_ValueError, err);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
}
|
}
|
||||||
@ -130,8 +137,7 @@ static PyObject *py_set_duty_cycle(PyObject *self, PyObject *args, PyObject *kwa
|
|||||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|f", kwlist, &channel, &duty_cycle))
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|f", kwlist, &channel, &duty_cycle))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (duty_cycle < 0.0 || duty_cycle > 100.0)
|
if (duty_cycle < 0.0 || duty_cycle > 100.0) {
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_ValueError, "duty_cycle must have a value from 0.0 to 100.0");
|
PyErr_SetString(PyExc_ValueError, "duty_cycle must have a value from 0.0 to 100.0");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -142,7 +148,9 @@ static PyObject *py_set_duty_cycle(PyObject *self, PyObject *args, PyObject *kwa
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pwm_set_duty_cycle(key, duty_cycle) == -1) {
|
if (pwm_set_duty_cycle(key, duty_cycle) == -1) {
|
||||||
PyErr_SetString(PyExc_RuntimeError, "You must start() the PWM channel first");
|
char err[2000];
|
||||||
|
snprintf(err, sizeof(err), "PWM: %s issue: (%s)", channel, get_error_msg());
|
||||||
|
PyErr_SetString(PyExc_ValueError, err);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,20 +178,20 @@ static PyObject *py_set_pulse_width_ns(PyObject *self, PyObject *args, PyObject
|
|||||||
|
|
||||||
// Get the period out of the data struct
|
// Get the period out of the data struct
|
||||||
int rtn = pwm_get_period_ns(key, &period_ns);
|
int rtn = pwm_get_period_ns(key, &period_ns);
|
||||||
if (rtn == -1)
|
if (rtn == -1) {
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_ValueError, "period unable to be obtained");
|
PyErr_SetString(PyExc_ValueError, "period unable to be obtained");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pulse_width_ns < 0.0 || pulse_width_ns > period_ns)
|
if (pulse_width_ns < 0.0 || pulse_width_ns > period_ns) {
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_ValueError, "pulse width must have a value from 0 to period");
|
PyErr_SetString(PyExc_ValueError, "pulse width must have a value from 0 to period");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pwm_set_pulse_width_ns(key, pulse_width_ns) == -1) {
|
if (pwm_set_pulse_width_ns(key, pulse_width_ns) < 0) {
|
||||||
PyErr_SetString(PyExc_RuntimeError, "You must start() the PWM channel first");
|
char err[2000];
|
||||||
|
snprintf(err, sizeof(err), "PWM: %s issue: (%s)", channel, get_error_msg());
|
||||||
|
PyErr_SetString(PyExc_ValueError, err);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,8 +211,7 @@ static PyObject *py_set_frequency(PyObject *self, PyObject *args, PyObject *kwar
|
|||||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|f", kwlist, &channel, &frequency))
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|f", kwlist, &channel, &frequency))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (frequency <= 0.0)
|
if (frequency <= 0.0) {
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_ValueError, "frequency must be greater than 0.0");
|
PyErr_SetString(PyExc_ValueError, "frequency must be greater than 0.0");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -214,8 +221,10 @@ static PyObject *py_set_frequency(PyObject *self, PyObject *args, PyObject *kwar
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pwm_set_frequency(key, frequency) == -1) {
|
if (pwm_set_frequency(key, frequency) < 0) {
|
||||||
PyErr_SetString(PyExc_RuntimeError, "You must start() the PWM channel first");
|
char err[2000];
|
||||||
|
snprintf(err, sizeof(err), "PWM: %s issue: (%s)", channel, get_error_msg());
|
||||||
|
PyErr_SetString(PyExc_ValueError, err);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,8 +244,7 @@ static PyObject *py_set_period_ns(PyObject *self, PyObject *args, PyObject *kwar
|
|||||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|k", kwlist, &channel, &period_ns))
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|k", kwlist, &channel, &period_ns))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (period_ns <= 0)
|
if (period_ns <= 0) {
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_ValueError, "period must be greater than 0ns");
|
PyErr_SetString(PyExc_ValueError, "period must be greater than 0ns");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -246,8 +254,10 @@ static PyObject *py_set_period_ns(PyObject *self, PyObject *args, PyObject *kwar
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pwm_set_period_ns(key, period_ns) == -1) {
|
if (pwm_set_period_ns(key, period_ns) < 0) {
|
||||||
PyErr_SetString(PyExc_RuntimeError, "You must start() the PWM channel first");
|
char err[2000];
|
||||||
|
snprintf(err, sizeof(err), "PWM: %s issue: (%s)", channel, get_error_msg());
|
||||||
|
PyErr_SetString(PyExc_ValueError, err);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,14 +83,12 @@ static PyObject *py_start_channel(PyObject *self, PyObject *args, PyObject *kwar
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (duty_cycle < 0.0 || duty_cycle > 100.0)
|
if (duty_cycle < 0.0 || duty_cycle > 100.0) {
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_ValueError, "duty_cycle must have a value from 0.0 to 100.0");
|
PyErr_SetString(PyExc_ValueError, "duty_cycle must have a value from 0.0 to 100.0");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frequency <= 0.0)
|
if (frequency <= 0.0) {
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_ValueError, "frequency must be greater than 0.0");
|
PyErr_SetString(PyExc_ValueError, "frequency must be greater than 0.0");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -100,8 +98,7 @@ static PyObject *py_start_channel(PyObject *self, PyObject *args, PyObject *kwar
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (softpwm_start(key, duty_cycle, frequency, polarity) < 0)
|
if (softpwm_start(key, duty_cycle, frequency, polarity) < 0) {
|
||||||
{
|
|
||||||
printf("softpwm_start failed");
|
printf("softpwm_start failed");
|
||||||
char err[2000];
|
char err[2000];
|
||||||
snprintf(err, sizeof(err), "Error starting softpwm on pin %s (%s)", key, get_error_msg());
|
snprintf(err, sizeof(err), "Error starting softpwm on pin %s (%s)", key, get_error_msg());
|
||||||
@ -146,8 +143,7 @@ static PyObject *py_set_duty_cycle(PyObject *self, PyObject *args, PyObject *kwa
|
|||||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|f", kwlist, &channel, &duty_cycle))
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|f", kwlist, &channel, &duty_cycle))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (duty_cycle < 0.0 || duty_cycle > 100.0)
|
if (duty_cycle < 0.0 || duty_cycle > 100.0) {
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_ValueError, "duty_cycle must have a value from 0.0 to 100.0");
|
PyErr_SetString(PyExc_ValueError, "duty_cycle must have a value from 0.0 to 100.0");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -178,8 +174,7 @@ static PyObject *py_set_frequency(PyObject *self, PyObject *args, PyObject *kwar
|
|||||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|f", kwlist, &channel, &frequency))
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|f", kwlist, &channel, &frequency))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if ((frequency <= 0.0) || (frequency > 10000.0))
|
if ((frequency <= 0.0) || (frequency > 10000.0)) {
|
||||||
{
|
|
||||||
PyErr_SetString(PyExc_ValueError, "frequency must be greater than 0.0 and less than 10000.0");
|
PyErr_SetString(PyExc_ValueError, "frequency must be greater than 0.0 and less than 10000.0");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user