circuitpython/shared-bindings/synthio/Math.h
2024-05-17 14:56:28 -04:00

40 lines
1.1 KiB
C

// This file is part of the CircuitPython project: https://circuitpython.org
//
// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries
//
// SPDX-License-Identifier: MIT
#pragma once
#include "py/obj.h"
typedef enum {
OP_SUM,
OP_ADD_SUB,
OP_PRODUCT,
OP_MUL_DIV,
OP_SCALE_OFFSET,
OP_OFFSET_SCALE,
OP_LERP,
OP_CONSTRAINED_LERP,
OP_DIV_ADD,
OP_ADD_DIV,
OP_MID,
OP_MIN,
OP_MAX,
OP_ABS
} synthio_math_operation_t;
typedef struct synthio_math_obj synthio_math_obj_t;
extern const mp_obj_type_t synthio_math_type;
extern const mp_obj_type_t synthio_math_operation_type;
mp_obj_t common_hal_synthio_math_get_input_obj(synthio_math_obj_t *self, size_t i);
void common_hal_synthio_math_set_input_obj(synthio_math_obj_t *self, size_t i, mp_obj_t arg, qstr argname);
synthio_math_operation_t common_hal_synthio_math_get_operation(synthio_math_obj_t *self);
void common_hal_synthio_math_set_operation(synthio_math_obj_t *self, synthio_math_operation_t arg);
mp_float_t common_hal_synthio_math_get_value(synthio_math_obj_t *self);
mp_float_t common_hal_synthio_math_tick(mp_obj_t self_in);