/*
 * cc_controller.h
 *
 *  Created on: Jun 11, 2025
 *      Author: janik
 */

#ifndef INC_CC_CONTROLLER_H_
#define INC_CC_CONTROLLER_H_

#include <stdint.h>
#include <math.h>

typedef struct {
    float gain;            // Step per unit error
    float min_step;        // Minimum step size (in float)
    float max_step;        // Maximum step size (in float)
    float output_f;        // Internal float output
    uint16_t out_min;      // DAC min
    uint16_t out_max;      // DAC max
} CCController;

void CC_Init(CCController *cc, float gain, float min_step, float max_step,
             uint16_t out_min, uint16_t out_max, float initial_output);

uint16_t CC_Update(CCController *cc, float target, float measurement);



#endif /* INC_CC_CONTROLLER_H_ */
