/*
*Copyright (C),2023 , NANOCHAP
*File name:   ENS1_WAVEGEN.H          
*Author:      
*Version:     V1.0 
*Date:        2023-11-                   
*Description: 波形生成器电刺激功能
*Function List: 
     1  int wavegen_driverA_sine_test(CMSDK_WAVE_GEN_TypeDef *CMSDK_WAVEGEN_DRVA, uint16_t incount);
     2  void wavegen_Stop(CMSDK_WAVE_GEN_TypeDef *CMSDK_WAVEGEN_DRVA);
     3  void wavegen_Init(void);
     4  void wavegen_Start(void);
History: 
1.V1.0
Date:          
Author: 
Modification: 初版
*/

#ifndef ENS1_WAVEGEN_H
#define ENS1_WAVEGEN_H

#include "CMSDK_CM0.h"
#include "my_header.h"

// 波形生成器驱动器A正弦波测试
int wavegen_driverA_sine_test(CMSDK_WAVE_GEN_TypeDef *CMSDK_WAVEGEN_DRVA, uint16_t incount);

// 停止波形生成器
void wavegen_Stop(CMSDK_WAVE_GEN_TypeDef *CMSDK_WAVEGEN_DRVA);

// 初始化波形生成器
void wavegen_Init(void);

// 启动波形生成器
void wavegen_Start(void);

// 电刺激参数配置
typedef struct {
    uint16_t frequency;      // 频率 (Hz)
    uint16_t duration;       // 持续时间 (ms)
    uint16_t intensity;      // 强度 (0-255)
    uint16_t rest_time;      // 休息时间 (ms)
    uint16_t silent_time;    // 静默时间 (ms)
    
    // 缓进缓出控制参数
    uint8_t ramp_up_time;     // 缓进时间：2秒
    uint8_t hold_time;        // 保持时间：6秒
    uint8_t ramp_down_time;   // 缓出时间：2秒
    uint8_t enable_ramp;      // 启用渐进控制
} EMS_Config_TypeDef;

// 电刺激控制函数
void EMS_Configure(EMS_Config_TypeDef *config);
void EMS_Start(void);
void EMS_Stop(void);
void EMS_UpdateIntensity(uint16_t intensity);
void EMS_Process(void);
void EMS_Process_Ramp(void);  // 缓进缓出处理函数

#endif
