40 lines
1.1 KiB
C
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);
|