/*
* Valve.c
*
* Created on: 2025年3月7日
* Author: mis
*/
/* Includes ------------------------------------------------------------------*/
#include "Valve.h"
#include "..\Main\include.h"
#include <stddef.h>
/* Private define ------------------------------------------------------------*/
#define Valve_MappingData_Max 20 //阀体地址映射数据最大长度
#define Massage_ActionTime 15*60*100 //10ms单位
/* Private typedef -----------------------------------------------------------*/
/*!< 阀体点位映射环形队列 */
typedef struct
{
uint16_t Head;
uint16_t Tail;
uint16_t Length;
uint32_t Data[Valve_MappingData_Max];
} Valve_Mapping_List;
static Valve_Mapping_List ValveMappingList = {0}; //阀体点位映射环形队列
extern const Massage_Mode_TypeDef Massage_Mode[Massage_Mode_Max]; //按摩气袋动作功能表
/*!< 按摩动作执行回调函数 */
static void Massage_Knead_Process_1(void);
static void Massage_Knead_Process_2(void);
static void Massage_Knead_Process_3(void);
static void Massage_Knead_Process_4(void);
static void Massage_Knead_Process_4_1(void);
static void Massage_Knead_Process_4_2(void);
static void Massage_Knead_Process_5(void);
static void Massage_Knead_Process_6(void);
static void Massage_Knead_Process_7(void);
static void Massage_Knead_Process_8(void);
static void Massage_Knead_Process_9(void);
static void Massage_Knead_Process_10(void);
static void Massage_Knead_Process_11(void);
static void Massage_Knead_Process_12(void);
static void Massage_Knead_Process_13(void);
static void Massage_Knead_Process_14(void);
static void Massage_Knead_Process_15(void);
static void Massage_Knead_Process_off(void);
static Action_Callback MassageKnead[MassageKnead_Mode_Max] =
{
[MassageKnead_Mode_1] = Massage_Knead_Process_1,
[MassageKnead_Mode_2] = Massage_Knead_Process_2,
[MassageKnead_Mode_3] = Massage_Knead_Process_3,
[MassageKnead_Mode_4] = Massage_Knead_Process_4,
[MassageKnead_Mode_4_1] = Massage_Knead_Process_4_1,
[MassageKnead_Mode_4_2] = Massage_Knead_Process_4_2,
[MassageKnead_Mode_5] = Massage_Knead_Process_5,
[MassageKnead_Mode_6] = Massage_Knead_Process_6,
[MassageKnead_Mode_7] = Massage_Knead_Process_7,
[MassageKnead_Mode_8] = Massage_Knead_Process_8,
[MassageKnead_Mode_9] = Massage_Knead_Process_9,
[MassageKnead_Mode_10] = Massage_Knead_Process_10,
[MassageKnead_Mode_11] = Massage_Knead_Process_11,
[MassageKnead_Mode_12] = Massage_Knead_Process_12,
[MassageKnead_Mode_13] = Massage_Knead_Process_13,
[MassageKnead_Mode_14] = Massage_Knead_Process_14,
[MassageKnead_Mode_15] = Massage_Knead_Process_15,
[MassageKnead_Mode_off] = Massage_Knead_Process_off,
};
/*!< 按摩气袋动作执行调度表 */
Massage_TypeDef Massage =
{
.Mode = &Massage_Mode[0],
.CurrAction = NULL,
.NextAction = NULL,
.KeepTime = Massage_ActionTime,
.CurrTime = 0,
.StepTime = 0,
.ActionCount = 0,
.ActionNumber = 0,
.Strength = Massage_Strength_2,
.ActionMapping = 0,
.LastMapping = 0,
};
/*!< 揉捏按摩动作执行调度表 */
Massage_Knead_TypeDef Massage_Knead =
{
.SupportTimeUp = {200, 200, 200, 300, 350, 400}, //背部上支撑气袋充气时间
.KneadTimeUp = {2, 2, 2, 2, 2, 2}, //背部小气袋充气时间
.SupportTimeCount = 0,
.ActionCount = 0,
.ActionFlag = 0,
.Massage = &Massage,
.Action_CB = NULL,
};
/*!< 侧翼动作执行调度表 */
BackWing_TypeDef BackWing =
{
.InTimer = {50, 80, 100, 120, 140, 160}, //侧翼充气时间
.OutTimer = {6000, 6000, 6000, 6000, 6000, 6000}, //侧翼泄气时间
.TimerCount = 0,
.ActionType = BackWing_None,
.Strength = Wing_Strength_1,
.State = BackWing_Stop,
};
/* Private function prototypes -----------------------------------------------*/
/**
* @brief Valve_MappingData_WriteList -- 写入阀体映射地址数据列表
* @param Data:映射地址数据写入
* @retval none
*/
void Valve_MappingData_WriteList(uint32_t Data)
{
if(ValveMappingList.Length >= Valve_MappingData_Max)
{
return;
}
ValveMappingList.Data[ValveMappingList.Tail] = Data;
ValveMappingList.Tail = (ValveMappingList.Tail + 1)%Valve_MappingData_Max;
ValveMappingList.Length++;
}
/**
* @brief Valve_MappingData_ReadList -- 读取阀体映射地址数据列表
* @param Data:映射地址数据
* @retval none
*/
void Valve_MappingData_ReadList(uint32_t *Data)
{
if(ValveMappingList.Length == 0)
{
*Data = 0xFFFFFFFF;
return;
}
*Data = ValveMappingList.Data[ValveMappingList.Head];
ValveMappingList.Head = (ValveMappingList.Head + 1)%Valve_MappingData_Max;
ValveMappingList.Length--;
}
/**
* @brief Massage_Mode_Set -- massage设置模式
* @param ID:按摩id
* @retval none
*/
void Massage_Mode_Set(uint8_t ID)
{
if(ID < Massage_Knead_Action_Max)
{
if(ID < Massage_Mode_Max)
{
/*!< 如果是普通按摩需要把揉捏按摩停止 */
MassageKnead_Stop();
}
Wing_Stop();
Massage.ActionNumber = Massage_Mode[ID].ActionStep;
Massage.CurrAction = &Massage_Mode[ID].Parameter[0];
if(Massage.ActionNumber > 1)
{
Massage.NextAction = &Massage_Mode[ID].Parameter[1];
}
else
{
Massage.NextAction = &Massage_Mode[ID].Parameter[0];
}
Massage.ActionCount = 0;
Massage.ID = ID;
Massage.StepTime = 0;
Massage.CurrTime = 0;
Massage.ActionMapping = 0;
Massage.LastMapping = 0;
}
}
/**
* @brief MassageKnead_Mode_Set -- massage揉捏设置模式
* @param ID:按摩id
* @retval none
*/
void MassageKnead_Mode_Set(uint8_t ID)
{
if(ID < MassageKnead_Mode_Max)
{
/*!< 揉捏按摩需要把普通按摩停止 */
Massage_Stop();
Wing_Stop();
if(Massage_Knead.ActionFlag == 0)
Massage_Knead.ActionCount = 0;
else if(Massage_Knead.ActionFlag == 1)
Massage_Knead.ActionCount = 0;
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.Action_CB = &MassageKnead[ID];
}
}
/**
* @brief Massage_Stop -- 按摩停止
* @param none
* @retval none
*/
void Massage_Stop(void)
{
Massage.CurrAction = NULL;
Massage.NextAction = NULL;
Massage.ActionCount = 0;
Massage.ActionNumber = 0;
Massage.CurrTime = 0;
Massage.ActionMapping = 0;
Massage.LastMapping = 0;
Massage.StepTime = 0;
Massage.ModeActionCount = 0;
Valve_MappingData_WriteList(Massage.ActionMapping);
}
void Massage_Stop_1(uint32_t Data)
{
Massage.CurrAction = NULL;
Massage.NextAction = NULL;
Massage.ActionCount = 0;
Massage.ActionNumber = 0;
Massage.CurrTime = 0;
Massage.ActionMapping = 0;
Massage.LastMapping = 0;
Massage.StepTime = 0;
Massage.ModeActionCount = 0;
Valve_MappingData_WriteList(Data);
}
/**
* @brief MassageKnead_Stop -- 揉捏按摩停止
* @param none
* @retval none
*/
void MassageKnead_Stop(void)
{
Massage_Knead.ActionCount = 0;
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.Action_CB = &MassageKnead[MassageKnead_Mode_off];
}
/**
* @brief Wing_Stop -- 侧翼停止
* @param none
* @retval none
*/
void Wing_Stop(void)
{
BackWing.TimerCount = 0;
BackWing.ActionType = BackWing_None;
}
/**
* @brief Massage_Strength_Set -- massage设置强度
* @param Strength:按摩强度
* @retval none
*/
void Massage_Strength_Set(Massage_Strength Strength)
{
if(Strength < Massage_Strength_Max)
{
Massage.StepTime = 0;
Massage.Strength = Strength;
}
}
/**
* @brief Wing_Set -- 侧翼设置
* @param WingMode:侧翼类型
* @param WingState:侧翼模式
* @retval none
*/
void Wing_Set(Wing_ModeTypeDef WingMode, Wing_State WingState)
{
if(WingMode < BackWing_None)
{
Massage_Stop();
MassageKnead_Stop();
BackWing.ActionType = WingMode;
BackWing.State = WingState;
}
}
/**
* @brief Wing_StrengthSet -- 侧翼强度设置
* @param Strength:动作强度
* @retval none
*/
void Wing_StrengthSet(Wing_Strength Strength)
{
if(Strength < Wing_Strength_Max)
{
BackWing.Strength = Strength;
}
}
/**
* @brief Massage_Set_Mapping -- 按摩设置阀体工作映射
* @param Mapping:阀体映射地址
* @param State:阀体映射状态
* @retval none
*/
static void Massage_Set_Mapping(uint32_t Mapping, Massage_State State)
{
if(State == Massage_Infate)
{
Massage.ActionMapping |= Mapping;
}
else
{
Massage.ActionMapping &= ~Mapping;
}
}
/**
* @brief BackWing_Process -- 侧翼执行动作
* @param none
* @retval none
*/
void BackWing_Process(void)
{
if(BackWing.ActionType == BackWing_None)
{
return;
}
BackWing.TimerCount++;
switch(BackWing.State)
{
case BackWing_Start:
if(BackWing.TimerCount == 1)
{
if(BackWing.ActionType == BackWing_Left)
{
Gasholder_IN;
BACK_SIDE_L_IN;
}
else if(BackWing.ActionType == BackWing_Right)
{
Gasholder_IN;
BACK_SIDE_R_IN;
}
}
else if(BackWing.TimerCount >= BackWing.InTimer[BackWing.Strength])
{
if(BackWing.ActionType == BackWing_Left)
{
BACK_SIDE_L_HOLD;
}
else if(BackWing.ActionType == BackWing_Right)
{
BACK_SIDE_R_HOLD;
}
Wing_Stop();
Gasholder_HOLD;
}
break;
case BackWing_Stop:
if(BackWing.TimerCount == 1)
{
if(BackWing.ActionType == BackWing_Left)
{
//Gasholder_OUT;
BACK_SIDE_L_OUT;
}
else if(BackWing.ActionType == BackWing_Right)
{
//Gasholder_OUT;
BACK_SIDE_R_OUT;
}
}
else if(BackWing.TimerCount >= BackWing.OutTimer[BackWing.Strength])
{
if(BackWing.ActionType == BackWing_Left)
{
BACK_SIDE_L_HOLD;
}
else if(BackWing.ActionType == BackWing_Right)
{
BACK_SIDE_R_HOLD;
}
Wing_Stop();
Gasholder_HOLD;
}
break;
}
}
/**
* @brief Massage_Process -- 阀体执行动作
* @param none
* @retval none
*/
void Massage_Process(void)
{
/*!< 执行揉捏按摩前先执行前置动作 */
if(Massage_Knead.Action_CB != NULL)
{
Massage_Knead.Action_CB[0]();
}
/*!< 当前执行的按摩动作为空直接返回 */
if(Massage.CurrAction == NULL)
{
return;
}
/*!< 按摩时间超过设置的时间直接返回 */
if(++Massage.CurrTime >= Massage.KeepTime)
{
Massage_Stop();
return;
}
Massage.StepTime++;
/*!< 执行第一次按摩动作 */
if(Massage.ActionCount == 0 && Massage.StepTime == 1)
{
if(Massage.CurrAction != NULL)
{
Massage_Set_Mapping(Massage.CurrAction->Mapping, Massage_Infate);
}
}
/*!< 执行提前打开的气袋点位 */
if(Massage.StepTime == Massage.CurrAction->KeepTime[Massage.Strength] - Massage.NextAction->AheadOPenTime[Massage.Strength]) //提前打开下一个按摩步骤
{
/*!< 按摩动作执行有具体数量(0x00为无限循环),达到次数时就不需要提前打开下一个按摩点位 */
if(Massage.Mode[Massage.ID].ActionCount != Massage_ModeActionCount_Max)
{
if(Massage.ModeActionCount < Massage.Mode[Massage.ID].ActionCount)
{
if(Massage.NextAction != NULL)
{
Massage_Set_Mapping(Massage.NextAction->Mapping, Massage_Infate);
}
}
}
else if(Massage.Mode[Massage.ID].ActionCount == Massage_ModeActionCount_Max)
{
if(Massage.NextAction != NULL)
{
Massage_Set_Mapping(Massage.NextAction->Mapping, Massage_Infate);
}
}
}
/*!< 当前按摩点位时间到了 */
if(Massage.StepTime == Massage.CurrAction->KeepTime[Massage.Strength])
{
/*!< 关闭当前步骤的按摩阀体 */
if(Massage.CurrAction != NULL)
{
Massage_Set_Mapping(Massage.CurrAction->Mapping, Massage_Leakage);
}
Massage.ActionCount++;
/*!< 计算当前步骤和下一次的步骤 */
if(Massage.ActionCount == Massage.ActionNumber - 1)
{
Massage.CurrAction = &Massage.Mode[Massage.ID].Parameter[Massage.ActionCount];
Massage.NextAction = &Massage.Mode[Massage.ID].Parameter[0];
}
else if(Massage.ActionCount > Massage.ActionNumber - 1)
{
Massage.ActionCount = 0;
Massage.CurrAction = &Massage.Mode[Massage.ID].Parameter[Massage.ActionCount];
if(Massage.ActionNumber > 1)
{
Massage.NextAction = &Massage.Mode[Massage.ID].Parameter[Massage.ActionCount + 1];
}
else
{
Massage.CurrAction = &Massage.Mode[Massage.ID].Parameter[Massage.ActionCount];
}
/*!< 按摩步骤有的执行数就需要在达到执行数的时候关闭当前按摩 */
if(Massage.Mode[Massage.ID].ActionCount != Massage_ModeActionCount_Max)
{
if(++Massage.ModeActionCount >= Massage.Mode[Massage.ID].ActionCount)
{
Massage_Stop();
}
}
}
else
{
Massage.CurrAction = &Massage.Mode[Massage.ID].Parameter[Massage.ActionCount];
Massage.NextAction = &Massage.Mode[Massage.ID].Parameter[Massage.ActionCount + 1];
}
Massage.StepTime = 0;
}
/*!< 按摩点位映射 */
if(Massage.LastMapping != Massage.ActionMapping)
{
Valve_MappingData_WriteList(Massage.ActionMapping);
}
Massage.LastMapping = Massage.ActionMapping;
}
//小米揉捏
static void Massage_Knead_Process_1(void)
{
switch(Massage_Knead.ActionCount)
{
case 0: //支撑气袋充气
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
BACK_SIDE_Surface_L_IN;
CUSHION_L_IN;
}
else if(Massage_Knead.SupportTimeCount == Massage_Knead.SupportTimeUp[Massage_Knead.Massage->Strength])
{
BACK_SIDE_Surface_L_HOLD;
CUSHION_L_HOLD;
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
case 1: //小气袋充气
if(Massage.CurrAction == NULL)
{
Massage_Knead.SupportTimeCount++;
//if(Massage_Knead.SupportTimeCount == 1)
{
PM.UC.L34 = 1;
PM.UC.L35 = 1;
PM.UC.L9 = 1;
PM.UC.L8 = 1;
PM.UC.L6 = 1;
PM.UC.L4 = 1;
}
//else if(Massage_Knead.SupportTimeCount == Massage_Knead.KneadTimeUp[Massage_Knead.Massage->Strength])
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 2;
}
}
break;
case 2:
if(Massage.CurrAction == NULL)
{
Massage_Mode_Set(MassageKnead_Action_1);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 3;
}
break;
case 3:
if(Massage.CurrAction == NULL)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 0;
}
break;
case 4:
break;
}
}
//小米双滑背
static void Massage_Knead_Process_2(void)
{
switch(Massage_Knead.ActionCount)
{
case 0: //支撑气袋充气
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
BACK_SIDE_Surface_L_IN;
CUSHION_L_IN;
}
else if(Massage_Knead.SupportTimeCount == 200)
{
BACK_SIDE_Surface_L_HOLD;
CUSHION_L_HOLD;
Massage_Mode_Set(MassageKnead_Action_2);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
case 1: //小气袋充气
if(Massage.CurrAction == NULL)
{
}
break;
}
}
//小米伸展
static void Massage_Knead_Process_3(void)
{
switch(Massage_Knead.ActionCount)
{
case 0: //支撑气袋充气
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
BACK_SIDE_Surface_L_IN;
CUSHION_L_IN;
}
else if(Massage_Knead.SupportTimeCount == Massage_Knead.SupportTimeUp[Massage_Knead.Massage->Strength])
{
BACK_SIDE_Surface_L_HOLD;
CUSHION_L_HOLD;
Massage_Mode_Set(MassageKnead_Action_3);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
case 1: //小气袋充气
if(Massage.CurrAction == NULL)
{
}
break;
}
}
//小米指压筋膜枪
static void Massage_Knead_Process_4(void)
{
#define yuchongshijian 100
#define zhixingshijian 300
switch(Massage_Knead.ActionCount)
{
case 0:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_1);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian)
{
Massage_Mode_Set(MassageKnead_Action_4_1);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
case 1:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_2);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian)
{
Massage_Mode_Set(MassageKnead_Action_4_2);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 2;
}
break;
case 2:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_3);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian)
{
Massage_Mode_Set(MassageKnead_Action_4);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 3;
}
break;
case 3:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_4);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian)
{
Massage_Mode_Set(MassageKnead_Action_5);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 4;
}
break;
case 4:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_5);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian)
{
Massage_Mode_Set(MassageKnead_Action_6);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 5;
}
break;
case 5:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_6);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian)
{
Massage_Mode_Set(MassageKnead_Action_7);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 0;
}
break;
}
}
//小米揉捏筋膜枪
static void Massage_Knead_Process_4_1(void)
{
#define yuchongshijian1 80
#define zhixingshijian1 300
#define diqidaiyuchong1 300
switch(Massage_Knead.ActionCount)
{
case 0:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
BACK_SIDE_Surface_L_IN;
CUSHION_L_IN;
}
else if(Massage_Knead.SupportTimeCount == diqidaiyuchong1)
{
BACK_SIDE_Surface_L_HOLD;
CUSHION_L_HOLD;
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
case 1:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_7);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian1)
{
Massage_Mode_Set(MassageKnead_Action_7_1);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian1 + zhixingshijian1)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 2;
}
break;
case 2:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_9);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian1)
{
Massage_Mode_Set(MassageKnead_Action_7_2);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian1 + zhixingshijian1)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 3;
}
break;
case 3:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_11);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian1)
{
Massage_Mode_Set(MassageKnead_Action_7_3);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian1 + zhixingshijian1)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 4;
}
break;
case 4:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_9);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian)
{
Massage_Mode_Set(MassageKnead_Action_7_2);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 5;
}
break;
case 5:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_8);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian)
{
Massage_Mode_Set(MassageKnead_Action_7_4);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 6;
}
break;
case 6:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_10);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian)
{
Massage_Mode_Set(MassageKnead_Action_7_5);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 7;
}
break;
case 7:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_12);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian)
{
Massage_Mode_Set(MassageKnead_Action_7_6);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 8;
}
break;
case 8:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_10);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian)
{
Massage_Mode_Set(MassageKnead_Action_7_4);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
}
}
//小米双动揉捏筋膜枪
static void Massage_Knead_Process_4_2(void)
{
#define yuchongshijian2 100
#define zhixingshijian2 300
#define diqidaiyuchong2 300
switch(Massage_Knead.ActionCount)
{
case 0:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
BACK_SIDE_Surface_L_IN;
CUSHION_L_IN;
}
else if(Massage_Knead.SupportTimeCount == diqidaiyuchong2)
{
BACK_SIDE_Surface_L_HOLD;
CUSHION_L_HOLD;
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
case 1:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_7 | Valve_Point_8 | Valve_Point_9 | Valve_Point_10);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian2)
{
Massage_Mode_Set(MassageKnead_Action_7_7);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian2 + zhixingshijian2)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 2;
}
break;
case 2:
#if 0
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_9 | Valve_Point_10 | Valve_Point_11 | Valve_Point_12);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian2)
{
Massage_Mode_Set(MassageKnead_Action_7_8);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian2 + zhixingshijian2)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
#endif
break;
case 3:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_11 | Valve_Point_12);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian2)
{
Massage_Mode_Set(MassageKnead_Action_7_9);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian2 + zhixingshijian2)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
}
}
//单滑背
static void Massage_Knead_Process_5(void)
{
switch(Massage_Knead.ActionCount)
{
case 0: //支撑气袋充气
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
BACK_SIDE_Surface_L_IN;
CUSHION_L_IN;
}
else if(Massage_Knead.SupportTimeCount == Massage_Knead.SupportTimeUp[Massage_Knead.Massage->Strength])
{
BACK_SIDE_Surface_L_HOLD;
CUSHION_L_HOLD;
Massage_Mode_Set(MassageKnead_Action_8);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
case 1: //小气袋充气
if(Massage.CurrAction == NULL)
{
}
break;
}
}
//理想L9双滑背
static void Massage_Knead_Process_6(void)
{
switch(Massage_Knead.ActionCount)
{
case 0: //支撑气袋充气
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 100)
{
BACK_SIDE_L_IN;
BACK_SIDE_R_IN;
}
else if(Massage_Knead.SupportTimeCount == Massage_Knead.SupportTimeUp[Massage_Knead.Massage->Strength]+100)
{
BACK_SIDE_L_HOLD;
BACK_SIDE_R_HOLD;
Massage_Knead.ActionFlag = 1;
Massage_Knead.ActionCount = 1;
Massage_Knead.SupportTimeCount = 0;
}
break;
case 1:
Massage_Mode_Set(MassageKnead_Action_9);
Massage_Knead.ActionCount = 2;
break;
case 2:
if(Massage.CurrAction == NULL)
{
}
break;
}
}
//理想L9单滑背
static void Massage_Knead_Process_7(void)
{
switch(Massage_Knead.ActionCount)
{
case 0: //支撑气袋充气
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 100)
{
BACK_SIDE_L_IN;
BACK_SIDE_R_IN;
}
else if(Massage_Knead.SupportTimeCount == Massage_Knead.SupportTimeUp[Massage_Knead.Massage->Strength]+100)
{
BACK_SIDE_L_HOLD;
BACK_SIDE_R_HOLD;
Massage_Knead.ActionFlag = 1;
Massage_Knead.ActionCount = 1;
Massage_Knead.SupportTimeCount = 0;
}
break;
case 1:
Massage_Mode_Set(MassageKnead_Action_10);
Massage_Knead.ActionCount = 2;
break;
case 2:
if(Massage.CurrAction == NULL)
{
}
break;
}
}
//理想L9背部指压
static void Massage_Knead_Process_8(void)
{
switch(Massage_Knead.ActionCount)
{
case 0: //支撑气袋充气
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 100)
{
BACK_SIDE_L_IN;
BACK_SIDE_R_IN;
}
else if(Massage_Knead.SupportTimeCount == Massage_Knead.SupportTimeUp[Massage_Knead.Massage->Strength]+100)
{
BACK_SIDE_L_HOLD;
BACK_SIDE_R_HOLD;
Massage_Knead.ActionFlag = 1;
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
case 1:
Massage_Mode_Set(MassageKnead_Action_11);
Massage_Knead.ActionCount = 2;
break;
case 2:
if(Massage.CurrAction == NULL)
{
}
break;
}
}
//理想L9腰部筋膜枪
static void Massage_Knead_Process_9(void)
{
#define yuchongshijian 100
#define zhixingshijian 300
switch(Massage_Knead.ActionCount)
{
case 0:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 100)
{
BACK_SIDE_L_IN;
}
else if(Massage_Knead.SupportTimeCount == 300)
{
BACK_SIDE_L_HOLD;
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
Massage_Knead.ActionFlag = 1;
}
break;
case 1:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_9 | Valve_Point_8 | Valve_Point_11 | Valve_Point_12);
}
else if(Massage_Knead.SupportTimeCount == 70)
{
Massage_Mode_Set(MassageKnead_Action_23);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 2;
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
}
break;
case 2:
break;
}
}
//理想L9肩部筋膜枪
static void Massage_Knead_Process_10(void)
{
#define yuchongshijian 100
#define zhixingshijian 300
switch(Massage_Knead.ActionCount)
{
case 0:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 100)
{
BACK_SIDE_R_IN;
}
else if(Massage_Knead.SupportTimeCount == Massage_Knead.SupportTimeUp[Massage_Knead.Massage->Strength]+200)
{
BACK_SIDE_R_HOLD;
Massage_Knead.ActionFlag = 1;
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
case 1:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_2 | Valve_Point_3 | Valve_Point_5 | Valve_Point_6);
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian)
{
Massage_Mode_Set(MassageKnead_Action_15);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 2;
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 2;
}
break;
case 2:
break;
}
}
//理想L9靠背加强揉捏
static void Massage_Knead_Process_11(void)
{
switch(Massage_Knead.ActionCount)
{
case 0: //支撑气袋充气
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 100)
{
BACK_SIDE_R_IN;
}
else if(Massage_Knead.SupportTimeCount == Massage_Knead.SupportTimeUp[Massage_Knead.Massage->Strength]+100)
{
BACK_SIDE_R_HOLD;
Massage_Knead.ActionFlag = 1;
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
// Massage_Stop_1(Valve_Point_1 | Valve_Point_2 | Valve_Point_3 | \
// Valve_Point_4 | Valve_Point_5 | Valve_Point_6);
}
else if(Massage_Knead.SupportTimeCount == Massage_Knead.SupportTimeUp[Massage_Knead.Massage->Strength]+160)
{
}
break;
case 1:
Massage_Mode_Set(MassageKnead_Action_12);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 2;
break;
case 2:
if(Massage.CurrAction == NULL)
{
BACK_SIDE_R_OUT;
Massage_Knead.ActionCount = 3;
}
break;
case 3:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 100)
{
BACK_SIDE_L_IN;
}
else if(Massage_Knead.SupportTimeCount == Massage_Knead.SupportTimeUp[Massage_Knead.Massage->Strength]+100)
{
BACK_SIDE_L_HOLD;
Massage_Mode_Set(MassageKnead_Action_13);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 4;
// Massage_Stop_1(Valve_Point_7 | Valve_Point_8 | Valve_Point_9 | \
// Valve_Point_10 | Valve_Point_11 | Valve_Point_12);
}
else if(Massage_Knead.SupportTimeCount == Massage_Knead.SupportTimeUp[Massage_Knead.Massage->Strength]+160)
{
Massage_Mode_Set(MassageKnead_Action_13);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 4;
}
break;
case 4:
if(Massage.CurrAction == NULL)
{
BACK_SIDE_L_OUT;
Massage_Knead.ActionCount = 0;
}
break;
}
}
//理想L9座部加强揉捏
static void Massage_Knead_Process_12(void)
{
switch(Massage_Knead.ActionCount)
{
case 0: //支撑气袋充气
//Massage_Knead.SupportTimeCount++;
//if(Massage_Knead.SupportTimeCount == 100)
{
// Massage_Stop_1(Valve_Point_13 | Valve_Point_14 | Valve_Point_15 | \
// Valve_Point_16 | Valve_Point_17 | Valve_Point_18);
}
//else if(Massage_Knead.SupportTimeCount == 160)
{
Massage_Mode_Set(MassageKnead_Action_14);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
case 1:
if(Massage.CurrAction == NULL)
{
}
break;
}
}
//理想L9全背揉捏
static void Massage_Knead_Process_13(void)
{
switch(Massage_Knead.ActionCount)
{
case 0: //支撑气袋充气
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 100)
{
BACK_SIDE_L_IN;
BACK_SIDE_R_IN;
}
else if(Massage_Knead.SupportTimeCount == Massage_Knead.SupportTimeUp[Massage_Knead.Massage->Strength]+100)
{
BACK_SIDE_L_HOLD;
BACK_SIDE_R_HOLD;
Massage_Mode_Set(MassageKnead_Action_27);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
}
break;
case 1:
if(Massage.CurrAction == NULL)
{
}
break;
}
}
//捶腰
static void Massage_Knead_Process_14(void)
{
#define yuchongshijian 100
#define zhixingshijian 300
switch(Massage_Knead.ActionCount)
{
case 0:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 100)
{
BACK_SIDE_L_IN;
}
else if(Massage_Knead.SupportTimeCount == 300)
{
BACK_SIDE_L_HOLD;
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
Massage_Knead.ActionFlag = 1;
}
break;
case 1:
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
Massage_Stop_1(Valve_Point_9 | Valve_Point_8 | Valve_Point_11 | Valve_Point_12);
}
else if(Massage_Knead.SupportTimeCount == 70)
{
Massage_Mode_Set(MassageKnead_Action_28);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 2;
}
else if(Massage_Knead.SupportTimeCount == yuchongshijian + zhixingshijian)
{
}
break;
case 2:
break;
}
}
//558深度指压
static void Massage_Knead_Process_15(void)
{
switch(Massage_Knead.ActionCount)
{
case 0: //支撑气袋充气
Massage_Mode_Set(MassageKnead_Action_29);
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.ActionCount = 1;
break;
case 1:
if(Massage.CurrAction == NULL)
{
}
break;
}
}
//按摩关闭
static void Massage_Knead_Process_off(void)
{
switch(Massage_Knead.ActionCount)
{
case 0: //支撑气袋充气
Massage_Knead.SupportTimeCount++;
if(Massage_Knead.SupportTimeCount == 1)
{
BACK_SIDE_L_OUT;
BACK_SIDE_R_OUT
//BACK_SIDE_Surface_L_OUT;
//CUSHION_L_OUT;
}
else if(Massage_Knead.SupportTimeCount == 4000)
{
//BACK_SIDE_Surface_L_OUT;
//CUSHION_L_OUT;
//BACK_SIDE_Surface_L_HOLD;
//CUSHION_L_HOLD;
BACK_SIDE_L_HOLD;
BACK_SIDE_R_HOLD;
Massage_Knead.SupportTimeCount = 0;
//Massage_Knead.ActionCount = 1;
Massage_Knead.ActionFlag = 0;
}
break;
case 1: //小气袋充气
//BACK_SIDE_Surface_L_OUT;
//CUSHION_L_OUT;
Massage_Knead.ActionCount = 0;
Massage_Knead.SupportTimeCount = 0;
Massage_Knead.Action_CB = NULL;
break;
}
}
/*
* Valve.h
*
* Created on: 2025年3月7日
* Author: mis
*/
#ifndef APP_CONTROL_VALVE_VALVE_H_
#define APP_CONTROL_VALVE_VALVE_H_
/* Includes ------------------------------------------------------------------*/
#include <stdint.h>
/* Private define ------------------------------------------------------------*/
#define Massage_Knead_USE //是否有揉捏按摩
#define Massage_ModeActionCount_Max 0x00 //按摩最大步骤数,按摩一直循环
#define Valve_Point_1 0x00000001
#define Valve_Point_2 0x00000002
#define Valve_Point_3 0x00000004
#define Valve_Point_4 0x00000008
#define Valve_Point_5 0x00000010
#define Valve_Point_6 0x00000020
#define Valve_Point_7 0x00000040
#define Valve_Point_8 0x00000080
#define Valve_Point_9 0x00000100
#define Valve_Point_10 0x00000200
#define Valve_Point_11 0x00000400
#define Valve_Point_12 0x00000800
#define Valve_Point_13 0x00001000
#define Valve_Point_14 0x00002000
#define Valve_Point_15 0x00004000
#define Valve_Point_16 0x00008000
#define Valve_Point_17 0x00010000
#define Valve_Point_18 0x00020000
#define Valve_Point_19 0x00040000
#define Valve_Point_20 0x00080000
#define Valve_Point_21 0x00100000
#define Valve_Point_22 0x00200000
#define Valve_Point_23 0x00400000
#define Valve_Point_24 0x00800000
#define Valve_Point_25 0x01000000
#define Valve_Point_26 0x02000000
#define Valve_Point_27 0x04000000
#define Valve_Point_28 0x08000000
#define Valve_Point_29 0x10000000
#define Valve_Point_30 0x20000000
#define Valve_Point_31 0x40000000
#define Valve_Point_32 0x80000000
/* Private typedef -----------------------------------------------------------*/
typedef void (*Action_Callback)(void);
typedef enum
{
Massage_Infate = 0, //按摩充气
Massage_Leakage, //按摩泄气
} Massage_State;
typedef enum
{
Lumbar_Infate = 0, //腰托充气
Lumbar_Leakage, //腰托泄气
Lumbar_Keep, //腰托保持
} Lumbar_State;
typedef enum
{
BackWing_Start = 0,
BackWing_Stop,
} Wing_State;
typedef enum
{
Massage_Strength_1 = 0, //按摩强度--500ms
Massage_Strength_2, //按摩强度--1000ms
Massage_Strength_3, //按摩强度--1500ms
Massage_Strength_4, //按摩强度--2000ms
Massage_Strength_5, //按摩强度--2500ms
Massage_Strength_6, //按摩强度--3000ms
Massage_Strength_Max
} Massage_Strength;
typedef enum
{
Wing_Strength_1 = 0, //侧翼强度--500ms
Wing_Strength_2, //侧翼强度--800ms
Wing_Strength_3, //侧翼强度--1000ms
Wing_Strength_4, //侧翼强度--1200ms
Wing_Strength_5, //侧翼强度--1400ms
Wing_Strength_6, //侧翼强度--1600ms
Wing_Strength_Max
} Wing_Strength;
typedef struct
{
uint32_t Mapping; //按摩阀体映射地址
uint16_t AheadOPenTime[Massage_Strength_Max]; //按摩阀体提前开启时间
uint16_t KeepTime[Massage_Strength_Max]; //按摩阀体保持时间
} Massage_Parameter;
typedef struct
{
uint16_t ActionCount; //执行步数
uint16_t ActionStep; //按摩模式动作步骤
const Massage_Parameter *Parameter; //按摩模式首地址
} Massage_Mode_TypeDef;
typedef enum
{
Massage_Mode_1 = 0, //传统按摩模式一:波浪
Massage_Mode_2, //传统按摩模式二:脉冲
Massage_Mode_3, //传统按摩模式三:猫步
Massage_Mode_4, //传统按摩模式四:单排
Massage_Mode_5, //传统按摩模式五:舒缓
Massage_Mode_Max,
MassageKnead_Action_1, //揉捏
MassageKnead_Action_2, //双滑背
MassageKnead_Action_3, //伸展
MassageKnead_Action_4_1, //小米筋膜枪点1
MassageKnead_Action_4_2, //小米筋膜枪点2
MassageKnead_Action_4, //小米筋膜枪点3
MassageKnead_Action_5, //小米筋膜枪点4
MassageKnead_Action_6, //小米筋膜枪点5
MassageKnead_Action_7, //小米筋膜枪点6
MassageKnead_Action_7_1, //小米筋膜枪点7
MassageKnead_Action_7_2, //小米筋膜枪点8
MassageKnead_Action_7_3, //小米筋膜枪点9
MassageKnead_Action_7_4, //小米筋膜枪点10
MassageKnead_Action_7_5, //小米筋膜枪点11
MassageKnead_Action_7_6, //小米筋膜枪点12
MassageKnead_Action_7_7, //小米筋膜枪点10
MassageKnead_Action_7_8, //小米筋膜枪点11
MassageKnead_Action_7_9, //小米筋膜枪点12
MassageKnead_Action_8, //单滑背
MassageKnead_Action_9, //理想L9双滑背
MassageKnead_Action_10, //理想L9单滑背
MassageKnead_Action_11, //理想L9背部指压
MassageKnead_Action_12, //理想L9肩部揉捏
MassageKnead_Action_13, //理想L9腰部揉捏
MassageKnead_Action_14, //理想L9座部揉捏
MassageKnead_Action_15, //理想L9筋膜枪点1
MassageKnead_Action_16, //理想L9筋膜枪点2
MassageKnead_Action_17, //理想L9筋膜枪点3
MassageKnead_Action_18, //理想L9筋膜枪点4
MassageKnead_Action_19, //理想L9筋膜枪点5
MassageKnead_Action_20, //理想L9筋膜枪点6
MassageKnead_Action_21, //理想L9筋膜枪点7
MassageKnead_Action_22, //理想L9筋膜枪点8
MassageKnead_Action_23, //理想L9筋膜枪点9
MassageKnead_Action_24, //理想L9筋膜枪点10
MassageKnead_Action_25, //理想L9筋膜枪点11
MassageKnead_Action_26, //理想L9筋膜枪点12
MassageKnead_Action_27, //理想L9全背
MassageKnead_Action_28, //理想L9捶背
MassageKnead_Action_29, //558深度指压
Massage_Knead_Action_Max,
} Massage_ModeTypeDef;
typedef enum
{
MassageKnead_Mode_1, //小米揉捏
MassageKnead_Mode_2, //小米单滑背
MassageKnead_Mode_3, //小米伸展
MassageKnead_Mode_4, //小米指压筋膜枪
MassageKnead_Mode_4_1, //小米揉捏筋膜枪
MassageKnead_Mode_4_2, //小米揉捏筋膜枪
MassageKnead_Mode_5, //小米双滑背
MassageKnead_Mode_6, //理想L9双滑背
MassageKnead_Mode_7, //理想L9单滑背
MassageKnead_Mode_8, //理想L9背部指压
MassageKnead_Mode_9, //理想L9腰部筋膜枪
MassageKnead_Mode_10, //理想L9肩部筋膜枪
MassageKnead_Mode_11, //理想L9靠背加强揉捏
MassageKnead_Mode_12, //理想L9坐垫加强揉捏
MassageKnead_Mode_13, //理想L9全身背部揉捏
MassageKnead_Mode_14, //理想L9捶腰
MassageKnead_Mode_15, //558深度指压
MassageKnead_Mode_off,
MassageKnead_Mode_Max
} MassageKnead_ModeTypeDef;
typedef enum
{
BackWing_Left = 0,
BackWing_Right,
BackWing_None
} Wing_ModeTypeDef;
typedef struct
{
const Massage_Mode_TypeDef *Mode; //按摩模式
const Massage_Parameter *CurrAction; //当前按摩模式步骤
const Massage_Parameter *NextAction; //当前按摩模式下一个步骤
uint8_t ID; //当前按摩模式ID
uint8_t ModeActionCount;
const uint32_t KeepTime; //按摩总时间
uint16_t StepTime; //当前按摩步骤时间计数
uint32_t CurrTime; //当前按摩总时间计数
uint16_t ActionCount; //当前按摩模式步骤计数
uint16_t ActionNumber; //当前按摩模式总步骤
Massage_Strength Strength; //按摩强度
uint32_t ActionMapping; //当前阀体动作映射
uint32_t LastMapping; //上一次阀体动作映射
} Massage_TypeDef;
typedef struct
{
const uint16_t SupportTimeUp[Massage_Strength_Max]; //背部上支撑气袋充气时间
const uint16_t KneadTimeUp[Massage_Strength_Max]; //背部小气袋充气时间
uint16_t SupportTimeCount; //支撑气袋充气时间计数
uint16_t ActionCount; //气袋运行周期
uint8_t ActionFlag;
Massage_TypeDef *Massage; //揉捏气袋参数
Action_Callback *Action_CB; //揉捏模式执行回调函数
} Massage_Knead_TypeDef;
typedef struct
{
const uint16_t InTimer[Wing_Strength_Max]; //侧翼充气时间
const uint16_t OutTimer[Wing_Strength_Max]; //侧翼泄气时间
uint16_t TimerCount; //侧翼充泄气计数
Wing_Strength Strength; //侧翼充气强度
Wing_ModeTypeDef ActionType; //侧翼类型
Wing_State State; //侧翼状态
} BackWing_TypeDef;
/* Private function prototypes -----------------------------------------------*/
extern Massage_TypeDef Massage;
void Valve_MappingData_WriteList(uint32_t Data);
void Valve_MappingData_ReadList(uint32_t *Data);
void Massage_Mode_Set(uint8_t ID);
void MassageKnead_Mode_Set(uint8_t ID);
void Wing_Set(Wing_ModeTypeDef WingMode, Wing_State WingState);
void Massage_Stop(void);
void MassageKnead_Stop(void);
void Wing_Stop(void);
void Massage_Strength_Set(Massage_Strength Strength);
void Wing_StrengthSet(Wing_Strength Strength);
void BackWing_Process(void);
void Massage_Process(void);
extern void Valve_Action_Process(void);
#endif /* APP_CONTROL_VALVE_VALVE_H_ */
/*
* ValveIf.c
*
* Created on: 2025年3月7日
* Author: mis
*/
#include "..\Main\include.h"
#include <stddef.h>
#define Massage_Point_Mode 1 //0--十点按摩 1--6点按摩
#define Valve_Ctrl_Max 21
#if (Massage_Point_Mode == 0)
#define Massage_Mode1_AheadOpenTime {5, 5, 5, 5, 5}
#define Massage_Mode1_KeepTime {10, 15, 20, 25, 30}
#define Massage_Mode2_AheadOpenTime {5, 5, 5, 5, 5}
#define Massage_Mode2_KeepTime {10, 15, 20, 25, 30}
#define Massage_Mode3_AheadOpenTime {5, 5, 5, 5, 5}
#define Massage_Mode3_KeepTime {10, 15, 20, 25, 30}
#define Massage_Mode4_AheadOpenTime {5, 5, 5, 5, 5}
#define Massage_Mode4_KeepTime {10, 15, 20, 25, 30}
#define Massage_Mode5_AheadOpenTime {5, 5, 5, 5, 5}
#define Massage_Mode5_KeepTime {10, 15, 20, 25, 30}
#elif (Massage_Point_Mode == 1)
#define Massage_Mode1_AheadOpenTime {0, 0, 0, 0, 0, 0} //波浪模式
#define Massage_Mode1_KeepTime {50, 100, 150, 200, 250, 300}
#define Massage_Mode2_AheadOpenTime {0, 0, 0, 0, 0, 0} //脉冲模式
#define Massage_Mode2_KeepTime {50, 100, 150, 200, 250, 300}
#define Massage_Mode3_AheadOpenTime {0, 50, 50, 50, 50, 50} //猫步模式
#define Massage_Mode3_KeepTime {50, 100, 150, 200, 250, 300}
#define Massage_Mode4_AheadOpenTime {0, 50, 50, 50, 50, 50}
#define Massage_Mode4_KeepTime {50, 100, 150, 200, 250, 300}
#define Massage_Mode5_AheadOpenTime {0, 50, 50, 50, 50, 50}
#define Massage_Mode5_KeepTime {50, 100, 150, 200, 250, 300}
#endif
#define MassgeKnead_SetNumber 6
#define MassageKnead_Mode1_AheadOpenTime {2, 8, 11, 23, 5, 20} //揉捏按摩时间参数
#define MassageKnead_Mode1_KeepTime {20, 30, 40, 80, 90, 80}
#define MassageKnead_Mode2_AheadOpenTime {0, 20, 30, 20, 20, 20} //滑背按摩时间参数
#define MassageKnead_Mode2_KeepTime {18, 50, 80, 90, 80, 80}
#define MassageKnead_Mode2_AheadOpenTime1 {8, 20, 30, 20, 20, 20} //滑背揉捏按摩揉捏参数
#define MassageKnead_Mode2_KeepTime1 {18, 40, 60, 90, 80, 80}
#define MassageKnead_Mode3_AheadOpenTime {8, 10, 23, 20, 20, 20} //伸展按摩参数
#define MassageKnead_Mode3_KeepTime {18, 40, 80, 80, 80, 80}
#define MassageKnead_Mode4_AheadOpenTime {0, 20, 30, 20, 20, 20} //伸展按摩拓展单元按摩参数
#define MassageKnead_Mode4_KeepTime {18, 50, 80, 90, 80, 80}
#define MassageKnead_Mode4_AheadOpenTime1 {8, 20, 30, 20, 20, 20} //伸展揉捏拓展参数
#define MassageKnead_Mode4_KeepTime1 {18, 40, 60, 90, 80, 80}
#define MassageGun_Mode1_AheadOpenTime {0, 0, 0, 0, 0, 0} //小米指压筋膜枪时间参数
#define MassageGun_Mode1_KeepTime {5, 4, 3, 10, 10, 10}
#define MassageGun_Mode1_AheadOpenTime1 {0, 0, 0, 0, 0, 0} //小米指压筋膜枪泄气时间参数
#define MassageGun_Mode1_KeepTime1 {8, 6, 5, 10, 10, 10}
#define MassageGun_Mode2_AheadOpenTime {0, 0, 0, 0, 0, 0} //小米揉捏筋膜枪时间参数
#define MassageGun_Mode2_KeepTime {5, 4, 3, 10, 10, 10}
#define MassageGun_Mode2_AheadOpenTime1 {0, 0, 0, 0, 0, 0} //小米揉捏筋膜枪泄气时间参数
#define MassageGun_Mode2_KeepTime1 {8, 6, 5, 10, 10, 10}
#define MassageGun_Mode3_AheadOpenTime {0, 0, 0, 0, 0, 0} //小米双揉捏筋膜枪时间参数
#define MassageGun_Mode3_KeepTime {10, 7, 6, 10, 10, 10}
#define MassageGun_Mode3_AheadOpenTime1 {0, 0, 0, 0, 0, 0} //小米双揉捏筋膜枪泄气时间参数
#define MassageGun_Mode3_KeepTime1 {3, 3, 2, 10, 10, 10}
#define MassageKnead_Mode5_AheadOpenTime {8, 20, 30, 20, 20, 20} //理想L9双滑背按摩时间参数
#define MassageKnead_Mode5_KeepTime {18, 40, 60, 90, 80, 80}
#define MassageKnead_Mode6_AheadOpenTime {8, 20, 30, 20, 20, 20} //理想L9单滑背按摩时间参数
#define MassageKnead_Mode6_KeepTime {18, 40, 60, 90, 80, 80}
#define MassageKnead_Mode7_AheadOpenTime {0, 0, 0, 20, 20, 20} //理想L9背部指压按摩时间参数
#define MassageKnead_Mode7_KeepTime {100, 200, 300, 90, 80, 80}
#define MassageKnead_Mode8_AheadOpenTime {6, 8, 11, 20, 20, 20} //理想L9肩部揉捏按摩时间参数
#define MassageKnead_Mode8_KeepTime {20, 30, 40, 90, 80, 80}
#define MassageKnead_Mode9_AheadOpenTime {6, 8, 11, 20, 20, 20} //理想L9腰部揉捏按摩时间参数
#define MassageKnead_Mode9_KeepTime {20, 30, 40, 90, 80, 80}
#define MassageKnead_Mode10_AheadOpenTime {6, 8, 11, 20, 20, 20} //理想L9座部揉捏按摩时间参数
#define MassageKnead_Mode10_KeepTime {20, 30, 40, 90, 80, 80}
#define MassageKnead_Mode11_AheadOpenTime {0, 0, 0, 0, 0, 0} //理想L9筋膜枪
#define MassageKnead_Mode11_KeepTime {5, 7, 9, 10, 10, 10}
#define MassageKnead_Mode12_AheadOpenTime {0, 0, 0, 0, 0, 0} //理想L9--CE
#define MassageKnead_Mode12_KeepTime {100, 100, 100, 10, 10, 10}
#define Massage_Mode6_AheadOpenTime {0, 0, 0, 0, 0, 0} //波浪模式
#define Massage_Mode6_KeepTime {50, 100, 150, 200, 250, 300}
/* Private typedef -----------------------------------------------------------*/
//传统按摩
static const Massage_Parameter Massage_Para_Mode_1[] = //波浪按摩
{
{.Mapping = Valve_Point_1 | Valve_Point_2, .AheadOPenTime = Massage_Mode1_AheadOpenTime, .KeepTime = Massage_Mode1_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_4, .AheadOPenTime = Massage_Mode1_AheadOpenTime, .KeepTime = Massage_Mode1_KeepTime},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = Massage_Mode1_AheadOpenTime, .KeepTime = Massage_Mode1_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_4, .AheadOPenTime = Massage_Mode1_AheadOpenTime, .KeepTime = Massage_Mode1_KeepTime},
#if (Massage_Point_Mode == 0)
{.Mapping = Valve_Point_7 | Valve_Point_8, .AheadOPenTime = Massage_Mode1_AheadOpenTime, .KeepTime = Massage_Mode1_KeepTime},
{.Mapping = Valve_Point_9 | Valve_Point_10, .AheadOPenTime = Massage_Mode1_AheadOpenTime, .KeepTime = Massage_Mode1_KeepTime},
#endif
};
static const Massage_Parameter Massage_Para_Mode_2[] = //脉冲按摩
{
{.Mapping = Valve_Point_1, .AheadOPenTime = Massage_Mode2_AheadOpenTime, .KeepTime = Massage_Mode2_KeepTime},
{.Mapping = Valve_Point_2, .AheadOPenTime = Massage_Mode2_AheadOpenTime, .KeepTime = Massage_Mode2_KeepTime},
{.Mapping = Valve_Point_3, .AheadOPenTime = Massage_Mode2_AheadOpenTime, .KeepTime = Massage_Mode2_KeepTime},
{.Mapping = Valve_Point_4, .AheadOPenTime = Massage_Mode2_AheadOpenTime, .KeepTime = Massage_Mode2_KeepTime},
{.Mapping = Valve_Point_5, .AheadOPenTime = Massage_Mode2_AheadOpenTime, .KeepTime = Massage_Mode2_KeepTime},
{.Mapping = Valve_Point_6, .AheadOPenTime = Massage_Mode2_AheadOpenTime, .KeepTime = Massage_Mode2_KeepTime},
#if (Massage_Point_Mode == 0)
{.Mapping = Valve_Point_7, .AheadOPenTime = Massage_Mode2_AheadOpenTime, .KeepTime = Massage_Mode2_KeepTime},
{.Mapping = Valve_Point_8, .AheadOPenTime = Massage_Mode2_AheadOpenTime, .KeepTime = Massage_Mode2_KeepTime},
{.Mapping = Valve_Point_9, .AheadOPenTime = Massage_Mode2_AheadOpenTime, .KeepTime = Massage_Mode2_KeepTime},
{.Mapping = Valve_Point_10, .AheadOPenTime = Massage_Mode2_AheadOpenTime, .KeepTime = Massage_Mode2_KeepTime},
#endif
};
static const Massage_Parameter Massage_Para_Mode_3[] = //猫步按摩
{
{.Mapping = Valve_Point_1 | Valve_Point_2, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_4, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#if (Massage_Point_Mode == 0)
{.Mapping = Valve_Point_7 | Valve_Point_8, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_9 | Valve_Point_10, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#endif
{.Mapping = Valve_Point_1 | Valve_Point_2, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_4, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#if (Massage_Point_Mode == 0)
{.Mapping = Valve_Point_7 | Valve_Point_8, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_9 | Valve_Point_10, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#endif
{.Mapping = Valve_Point_1 | Valve_Point_2, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_4, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#if (Massage_Point_Mode == 0)
{.Mapping = Valve_Point_7 | Valve_Point_8, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_9 | Valve_Point_10, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#endif
{.Mapping = Valve_Point_1, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_2, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_3, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_4, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_5, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_6, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#if (Massage_Point_Mode == 0)
{.Mapping = Valve_Point_7, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_8, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_9, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_10, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#endif
{.Mapping = Valve_Point_1, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_2, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_3, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_4, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_5, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_6, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#if (Massage_Point_Mode == 0)
{.Mapping = Valve_Point_7, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_8, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_9, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_10, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#endif
{.Mapping = Valve_Point_1, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_2, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_3, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_4, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_5, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_6, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#if (Massage_Point_Mode == 0)
{.Mapping = Valve_Point_7, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_8, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_9, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_10, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#endif
{.Mapping = Valve_Point_1 | Valve_Point_3, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_2 | Valve_Point_4, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_5, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_4 | Valve_Point_6, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#if (Massage_Point_Mode == 0)
{.Mapping = Valve_Point_5 | Valve_Point_7, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_6 | Valve_Point_8, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_9, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_8 | Valve_Point_10, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#endif
{.Mapping = Valve_Point_1 | Valve_Point_3, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_2 | Valve_Point_4, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_5, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_4 | Valve_Point_6, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#if (Massage_Point_Mode == 0)
{.Mapping = Valve_Point_5 | Valve_Point_7, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_6 | Valve_Point_8, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_9, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_8 | Valve_Point_10, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#endif
{.Mapping = Valve_Point_1 | Valve_Point_3, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_2 | Valve_Point_4, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_5, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_4 | Valve_Point_6, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#if (Massage_Point_Mode == 0)
{.Mapping = Valve_Point_5 | Valve_Point_7, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_6 | Valve_Point_8, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_9, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
{.Mapping = Valve_Point_8 | Valve_Point_10, .AheadOPenTime = Massage_Mode3_AheadOpenTime, .KeepTime = Massage_Mode3_KeepTime},
#endif
};
static const Massage_Parameter Massage_Para_Mode_4[] = //单排按摩
{
{.Mapping = Valve_Point_1 | Valve_Point_2, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_4, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_1 | Valve_Point_2, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_4, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_1 | Valve_Point_2, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_4, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_1, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_2, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_3, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_4, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_5, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_6, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_1, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_2, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_3, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_4, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_5, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_6, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_1, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_2, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_3, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_4, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_5, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_6, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_1 | Valve_Point_3, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_2 | Valve_Point_4, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_5, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_4 | Valve_Point_6, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_1 | Valve_Point_3, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_2 | Valve_Point_4, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_5, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_4 | Valve_Point_6, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_1 | Valve_Point_3, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_2 | Valve_Point_4, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_5, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
{.Mapping = Valve_Point_4 | Valve_Point_6, .AheadOPenTime = Massage_Mode4_AheadOpenTime, .KeepTime = Massage_Mode4_KeepTime},
};
static const Massage_Parameter Massage_Para_Mode_5[] = //舒缓按摩
{
{.Mapping = Valve_Point_7 | Valve_Point_8, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_9 | Valve_Point_10, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_8, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_9 | Valve_Point_10, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_8, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_9 | Valve_Point_10, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_7, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_8, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_9, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_10, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_7, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_8, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_9, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_10, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_7, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_8, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_9, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_10, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_9, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_8 | Valve_Point_10, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_9, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_8 | Valve_Point_10, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_9, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
{.Mapping = Valve_Point_8 | Valve_Point_10, .AheadOPenTime = Massage_Mode5_AheadOpenTime, .KeepTime = Massage_Mode5_KeepTime},
};
static const Massage_Parameter Massage_Para_Mode_6_1[] =
{
{.Mapping = Valve_Point_1, .AheadOPenTime = MassageGun_Mode1_AheadOpenTime, .KeepTime = MassageGun_Mode1_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode1_AheadOpenTime1, .KeepTime = MassageGun_Mode1_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_6_2[] =
{
{.Mapping = Valve_Point_2, .AheadOPenTime = MassageGun_Mode1_AheadOpenTime, .KeepTime = MassageGun_Mode1_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode1_AheadOpenTime1, .KeepTime = MassageGun_Mode1_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_6[] =
{
{.Mapping = Valve_Point_3, .AheadOPenTime = MassageGun_Mode1_AheadOpenTime, .KeepTime = MassageGun_Mode1_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode1_AheadOpenTime1, .KeepTime = MassageGun_Mode1_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_7[] =
{
{.Mapping = Valve_Point_4, .AheadOPenTime = MassageGun_Mode1_AheadOpenTime, .KeepTime = MassageGun_Mode1_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode1_AheadOpenTime1, .KeepTime = MassageGun_Mode1_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_8[] =
{
{.Mapping = Valve_Point_5, .AheadOPenTime = MassageGun_Mode1_AheadOpenTime, .KeepTime = MassageGun_Mode1_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode1_AheadOpenTime1, .KeepTime = MassageGun_Mode1_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_9[] =
{
{.Mapping = Valve_Point_6, .AheadOPenTime = MassageGun_Mode1_AheadOpenTime, .KeepTime = MassageGun_Mode1_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode1_AheadOpenTime1, .KeepTime = MassageGun_Mode1_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_9_1[] =
{
{.Mapping = Valve_Point_7, .AheadOPenTime = MassageGun_Mode2_AheadOpenTime, .KeepTime = MassageGun_Mode2_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode2_AheadOpenTime1, .KeepTime = MassageGun_Mode2_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_9_2[] =
{
{.Mapping = Valve_Point_9, .AheadOPenTime = MassageGun_Mode2_AheadOpenTime, .KeepTime = MassageGun_Mode2_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode2_AheadOpenTime1, .KeepTime = MassageGun_Mode2_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_9_3[] =
{
{.Mapping = Valve_Point_11, .AheadOPenTime = MassageGun_Mode2_AheadOpenTime, .KeepTime = MassageGun_Mode2_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode2_AheadOpenTime1, .KeepTime = MassageGun_Mode2_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_9_4[] =
{
{.Mapping = Valve_Point_8, .AheadOPenTime = MassageGun_Mode2_AheadOpenTime, .KeepTime = MassageGun_Mode2_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode2_AheadOpenTime1, .KeepTime = MassageGun_Mode2_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_9_5[] =
{
{.Mapping = Valve_Point_10, .AheadOPenTime = MassageGun_Mode2_AheadOpenTime, .KeepTime = MassageGun_Mode2_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode2_AheadOpenTime1, .KeepTime = MassageGun_Mode2_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_9_6[] =
{
{.Mapping = Valve_Point_12, .AheadOPenTime = MassageGun_Mode2_AheadOpenTime, .KeepTime = MassageGun_Mode2_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode2_AheadOpenTime1, .KeepTime = MassageGun_Mode2_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_9_7[] =
{
{.Mapping = Valve_Point_7 | Valve_Point_8 | Valve_Point_9 | Valve_Point_10, .AheadOPenTime = MassageGun_Mode3_AheadOpenTime, .KeepTime = MassageGun_Mode3_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode3_AheadOpenTime1, .KeepTime = MassageGun_Mode3_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_9_8[] =
{
{.Mapping = Valve_Point_9 | Valve_Point_10 | Valve_Point_11 | Valve_Point_12, .AheadOPenTime = MassageGun_Mode3_AheadOpenTime, .KeepTime = MassageGun_Mode3_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode3_AheadOpenTime1, .KeepTime = MassageGun_Mode3_KeepTime1},
};
static const Massage_Parameter Massage_Para_Mode_9_9[] =
{
{.Mapping = Valve_Point_11 | Valve_Point_12, .AheadOPenTime = MassageGun_Mode3_AheadOpenTime, .KeepTime = MassageGun_Mode3_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageGun_Mode3_AheadOpenTime1, .KeepTime = MassageGun_Mode3_KeepTime1},
};
//揉捏按摩
static const Massage_Parameter Massage_Para_Mode_Knead1[] = //揉捏
{
{.Mapping = Valve_Point_7 | Valve_Point_8, .AheadOPenTime = MassageKnead_Mode1_AheadOpenTime, .KeepTime = MassageKnead_Mode1_KeepTime},
{.Mapping = Valve_Point_9 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode1_AheadOpenTime, .KeepTime = MassageKnead_Mode1_KeepTime},
{.Mapping = Valve_Point_11 | Valve_Point_12, .AheadOPenTime = MassageKnead_Mode1_AheadOpenTime, .KeepTime = MassageKnead_Mode1_KeepTime},
};
static const Massage_Parameter Massage_Para_Mode_Knead2[] = //双滑背
{
{.Mapping = Valve_Point_1 | Valve_Point_2, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_4, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = {18, 50, 80, 90, 80, 80}},
{.Mapping = Valve_Point_7 | Valve_Point_8, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_9 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_11 | Valve_Point_12, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_9 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_7 | Valve_Point_8, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = {18, 80, 80, 90, 80, 80}},
{.Mapping = Valve_Point_3 | Valve_Point_4, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
};
static const Massage_Parameter Massage_Para_Mode_Knead3[] = //伸展
{
{.Mapping = Valve_Point_7 | Valve_Point_8 | Valve_Point_5 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode3_AheadOpenTime, .KeepTime = {18, 40, 300, 80, 80, 80}},
{.Mapping = Valve_Point_9 | Valve_Point_10 | Valve_Point_3 | Valve_Point_4, .AheadOPenTime = {8, 5, 23, 20, 20, 20}, .KeepTime = {18, 40, 60, 80, 80, 80}},
{.Mapping = Valve_Point_11 | Valve_Point_12 | Valve_Point_1 | Valve_Point_2, .AheadOPenTime = MassageKnead_Mode3_AheadOpenTime, .KeepTime = {18, 40, 300, 80, 80, 80}},
{.Mapping = Valve_Point_9 | Valve_Point_10 | Valve_Point_3 | Valve_Point_4, .AheadOPenTime = {8, 5, 23, 20, 20, 20}, .KeepTime = {18, 40, 60, 80, 80, 80}},
};
static const Massage_Parameter Massage_Para_Mode_Knead4[] = //单滑背
{
{.Mapping = Valve_Point_1, .AheadOPenTime = {10, 30, 40, 20, 20, 20}, .KeepTime = MassageKnead_Mode2_KeepTime},
{.Mapping = Valve_Point_3, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
{.Mapping = Valve_Point_5, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
{.Mapping = Valve_Point_7, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_9, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_11, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_12, .AheadOPenTime = {10, 30, 40, 20, 20, 20}, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_10, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_8, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_6, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
{.Mapping = Valve_Point_4, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
{.Mapping = Valve_Point_2, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
#if 0
{.Mapping = Valve_Point_1 | Valve_Point_2, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_4, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_8, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_9 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_11 | Valve_Point_12, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_9 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_7 | Valve_Point_8, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime1, .KeepTime = MassageKnead_Mode2_KeepTime1},
{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_4, .AheadOPenTime = MassageKnead_Mode2_AheadOpenTime, .KeepTime = MassageKnead_Mode2_KeepTime},
#endif
};
//理想L9双滑背
static const Massage_Parameter Massage_Para_Mode_Knead5[] =
{
#if 0
{.Mapping = Valve_Point_1 | Valve_Point_4, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_9 | Valve_Point_12, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = {28, 50, 70, 90, 80, 80}},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = {35, 35, 35, 35, 10, 10}},
{.Mapping = Valve_Point_2 | Valve_Point_5, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_9 | Valve_Point_12, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = {28, 50, 70, 90, 80, 80}},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = {35, 35, 35, 10, 10, 10}},
#endif
{.Mapping = Valve_Point_1 | Valve_Point_4, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_2 | Valve_Point_5, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_8 | Valve_Point_11, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_9 | Valve_Point_12, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_8 | Valve_Point_11, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_7 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
{.Mapping = Valve_Point_2 | Valve_Point_5, .AheadOPenTime = MassageKnead_Mode5_AheadOpenTime, .KeepTime = MassageKnead_Mode5_KeepTime},
};
//理想L9单滑背
static const Massage_Parameter Massage_Para_Mode_Knead6[] =
{
{.Mapping = Valve_Point_2, .AheadOPenTime = MassageKnead_Mode6_AheadOpenTime, .KeepTime = MassageKnead_Mode6_KeepTime},
{.Mapping = Valve_Point_1, .AheadOPenTime = MassageKnead_Mode6_AheadOpenTime, .KeepTime = MassageKnead_Mode6_KeepTime},
{.Mapping = Valve_Point_3, .AheadOPenTime = MassageKnead_Mode6_AheadOpenTime, .KeepTime = MassageKnead_Mode6_KeepTime},
{.Mapping = Valve_Point_7, .AheadOPenTime = MassageKnead_Mode6_AheadOpenTime, .KeepTime = MassageKnead_Mode6_KeepTime},
{.Mapping = Valve_Point_8, .AheadOPenTime = MassageKnead_Mode6_AheadOpenTime, .KeepTime = MassageKnead_Mode6_KeepTime},
//{.Mapping = Valve_Point_9, .AheadOPenTime = MassageKnead_Mode6_AheadOpenTime, .KeepTime = MassageKnead_Mode6_KeepTime},
//{.Mapping = Valve_Point_12, .AheadOPenTime = MassageKnead_Mode6_AheadOpenTime, .KeepTime = MassageKnead_Mode6_KeepTime},
{.Mapping = Valve_Point_11, .AheadOPenTime = MassageKnead_Mode6_AheadOpenTime, .KeepTime = MassageKnead_Mode6_KeepTime},
{.Mapping = Valve_Point_10, .AheadOPenTime = MassageKnead_Mode6_AheadOpenTime, .KeepTime = MassageKnead_Mode6_KeepTime},
{.Mapping = Valve_Point_6, .AheadOPenTime = MassageKnead_Mode6_AheadOpenTime, .KeepTime = MassageKnead_Mode6_KeepTime},
{.Mapping = Valve_Point_4, .AheadOPenTime = MassageKnead_Mode6_AheadOpenTime, .KeepTime = MassageKnead_Mode6_KeepTime},
{.Mapping = Valve_Point_5, .AheadOPenTime = MassageKnead_Mode6_AheadOpenTime, .KeepTime = MassageKnead_Mode6_KeepTime},
};
//理想L9背部指压
static const Massage_Parameter Massage_Para_Mode_Knead7[] =
{
{.Mapping = Valve_Point_1 | Valve_Point_4 | Valve_Point_7 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode7_AheadOpenTime, .KeepTime = MassageKnead_Mode7_KeepTime},
// {.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode12_AheadOpenTime, .KeepTime = MassageKnead_Mode12_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_6 | Valve_Point_9 | Valve_Point_12, .AheadOPenTime = MassageKnead_Mode7_AheadOpenTime, .KeepTime = MassageKnead_Mode7_KeepTime},
// {.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode12_AheadOpenTime, .KeepTime = MassageKnead_Mode12_KeepTime},
{.Mapping = Valve_Point_2 | Valve_Point_5 | Valve_Point_8 | Valve_Point_11, .AheadOPenTime = MassageKnead_Mode7_AheadOpenTime, .KeepTime = MassageKnead_Mode7_KeepTime},
// {.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode12_AheadOpenTime, .KeepTime = MassageKnead_Mode12_KeepTime},
//{.Mapping = Valve_Point_5 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode7_AheadOpenTime, .KeepTime = MassageKnead_Mode7_KeepTime},
// {.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode12_AheadOpenTime, .KeepTime = MassageKnead_Mode12_KeepTime},
// {.Mapping = Valve_Point_3 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode7_AheadOpenTime, .KeepTime = MassageKnead_Mode7_KeepTime},
// {.Mapping = Valve_Point_7 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode7_AheadOpenTime, .KeepTime = MassageKnead_Mode7_KeepTime},
// {.Mapping = Valve_Point_9 | Valve_Point_12, .AheadOPenTime = MassageKnead_Mode7_AheadOpenTime, .KeepTime = MassageKnead_Mode7_KeepTime},
// {.Mapping = Valve_Point_8 | Valve_Point_11, .AheadOPenTime = MassageKnead_Mode7_AheadOpenTime, .KeepTime = MassageKnead_Mode7_KeepTime},
// {.Mapping = Valve_Point_3 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode7_AheadOpenTime, .KeepTime = MassageKnead_Mode7_KeepTime},
// {.Mapping = Valve_Point_2 | Valve_Point_5, .AheadOPenTime = MassageKnead_Mode7_AheadOpenTime, .KeepTime = MassageKnead_Mode7_KeepTime},
};
//理想L9肩部揉捏
static const Massage_Parameter Massage_Para_Mode_Knead8[] =
{
{.Mapping = Valve_Point_2 | Valve_Point_5, .AheadOPenTime = MassageKnead_Mode8_AheadOpenTime, .KeepTime = MassageKnead_Mode8_KeepTime},
{.Mapping = Valve_Point_1 | Valve_Point_4, .AheadOPenTime = MassageKnead_Mode8_AheadOpenTime, .KeepTime = MassageKnead_Mode8_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode8_AheadOpenTime, .KeepTime = MassageKnead_Mode8_KeepTime},
};
//理想L9腰部揉捏
static const Massage_Parameter Massage_Para_Mode_Knead9[] =
{
{.Mapping = Valve_Point_7 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode9_AheadOpenTime, .KeepTime = MassageKnead_Mode9_KeepTime},
{.Mapping = Valve_Point_9 | Valve_Point_12, .AheadOPenTime = MassageKnead_Mode9_AheadOpenTime, .KeepTime = MassageKnead_Mode9_KeepTime},
{.Mapping = Valve_Point_8 | Valve_Point_11, .AheadOPenTime = MassageKnead_Mode9_AheadOpenTime, .KeepTime = MassageKnead_Mode9_KeepTime},
};
//理想L9座部揉捏--预留
static const Massage_Parameter Massage_Para_Mode_Knead10[] =
{
{.Mapping = Valve_Point_13 | Valve_Point_16, .AheadOPenTime = MassageKnead_Mode10_AheadOpenTime, .KeepTime = MassageKnead_Mode10_KeepTime},
{.Mapping = Valve_Point_15 | Valve_Point_18, .AheadOPenTime = MassageKnead_Mode10_AheadOpenTime, .KeepTime = MassageKnead_Mode10_KeepTime},
{.Mapping = Valve_Point_14 | Valve_Point_17, .AheadOPenTime = MassageKnead_Mode10_AheadOpenTime, .KeepTime = MassageKnead_Mode10_KeepTime},
};
//理想L9筋膜枪点1
static const Massage_Parameter Massage_Para_Mode_Knead11[] =
{
{.Mapping = Valve_Point_2 | Valve_Point_3 | Valve_Point_5 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
//{.Mapping = Valve_Point_1 | Valve_Point_3 | Valve_Point_4 | Valve_Point_6, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//理想L9筋膜枪点2
static const Massage_Parameter Massage_Para_Mode_Knead12[] =
{
{.Mapping = Valve_Point_2, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//理想L9筋膜枪点3
static const Massage_Parameter Massage_Para_Mode_Knead13[] =
{
{.Mapping = Valve_Point_3, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//理想L9筋膜枪点4
static const Massage_Parameter Massage_Para_Mode_Knead14[] =
{
{.Mapping = Valve_Point_4, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//理想L9筋膜枪点5
static const Massage_Parameter Massage_Para_Mode_Knead15[] =
{
{.Mapping = Valve_Point_5, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//理想L9筋膜枪点6
static const Massage_Parameter Massage_Para_Mode_Knead16[] =
{
{.Mapping = Valve_Point_6, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//理想L9筋膜枪点7
static const Massage_Parameter Massage_Para_Mode_Knead17[] =
{
{.Mapping = Valve_Point_7, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//理想L9筋膜枪点8
static const Massage_Parameter Massage_Para_Mode_Knead18[] =
{
{.Mapping = Valve_Point_8, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//理想L9筋膜枪点9
static const Massage_Parameter Massage_Para_Mode_Knead19[] =
{
{.Mapping = Valve_Point_9 | Valve_Point_8 | Valve_Point_11 | Valve_Point_12, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//理想L9筋膜枪点10
static const Massage_Parameter Massage_Para_Mode_Knead20[] =
{
{.Mapping = Valve_Point_10, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//理想L9筋膜枪点11
static const Massage_Parameter Massage_Para_Mode_Knead21[] =
{
{.Mapping = Valve_Point_11, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//理想L9筋膜枪点12
static const Massage_Parameter Massage_Para_Mode_Knead22[] =
{
{.Mapping = Valve_Point_12, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//理想L9全背揉捏
static const Massage_Parameter Massage_Para_Mode_Knead23[] =
{
{.Mapping = Valve_Point_2 | Valve_Point_5 | Valve_Point_7 | Valve_Point_10, .AheadOPenTime = MassageKnead_Mode8_AheadOpenTime, .KeepTime = MassageKnead_Mode8_KeepTime},
{.Mapping = Valve_Point_1 | Valve_Point_4 | Valve_Point_9 | Valve_Point_12, .AheadOPenTime = MassageKnead_Mode8_AheadOpenTime, .KeepTime = MassageKnead_Mode8_KeepTime},
{.Mapping = Valve_Point_3 | Valve_Point_6 | Valve_Point_8 | Valve_Point_11, .AheadOPenTime = MassageKnead_Mode8_AheadOpenTime, .KeepTime = MassageKnead_Mode8_KeepTime},
};
//理想L9捶腰
static const Massage_Parameter Massage_Para_Mode_Knead24[] =
{
{.Mapping = Valve_Point_9 | Valve_Point_8, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_11 | Valve_Point_12, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
{.Mapping = Valve_Point_32, .AheadOPenTime = MassageKnead_Mode11_AheadOpenTime, .KeepTime = MassageKnead_Mode11_KeepTime},
};
//558深度指压
static const Massage_Parameter Massage_Para_Mode_Knead25[] =
{
{.Mapping = Valve_Point_1, .AheadOPenTime = Massage_Mode6_AheadOpenTime, .KeepTime = Massage_Mode6_KeepTime},
{.Mapping = Valve_Point_2, .AheadOPenTime = Massage_Mode6_AheadOpenTime, .KeepTime = Massage_Mode6_KeepTime},
{.Mapping = Valve_Point_3, .AheadOPenTime = Massage_Mode6_AheadOpenTime, .KeepTime = Massage_Mode6_KeepTime},
{.Mapping = Valve_Point_4, .AheadOPenTime = Massage_Mode6_AheadOpenTime, .KeepTime = Massage_Mode6_KeepTime},
{.Mapping = Valve_Point_5, .AheadOPenTime = Massage_Mode6_AheadOpenTime, .KeepTime = Massage_Mode6_KeepTime},
{.Mapping = Valve_Point_6, .AheadOPenTime = Massage_Mode6_AheadOpenTime, .KeepTime = Massage_Mode6_KeepTime},
{.Mapping = Valve_Point_7, .AheadOPenTime = Massage_Mode6_AheadOpenTime, .KeepTime = Massage_Mode6_KeepTime},
{.Mapping = Valve_Point_8, .AheadOPenTime = Massage_Mode6_AheadOpenTime, .KeepTime = Massage_Mode6_KeepTime},
{.Mapping = Valve_Point_9, .AheadOPenTime = Massage_Mode6_AheadOpenTime, .KeepTime = Massage_Mode6_KeepTime},
{.Mapping = Valve_Point_10, .AheadOPenTime = Massage_Mode6_AheadOpenTime, .KeepTime = Massage_Mode6_KeepTime},
};
const Massage_Mode_TypeDef Massage_Mode[Massage_Knead_Action_Max] =
{
[Massage_Mode_1] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_1)/sizeof(Massage_Para_Mode_1[0]), .Parameter = &Massage_Para_Mode_1[0]},
[Massage_Mode_2] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_2)/sizeof(Massage_Para_Mode_2[0]), .Parameter = &Massage_Para_Mode_2[0]},
[Massage_Mode_3] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_3)/sizeof(Massage_Para_Mode_3[0]), .Parameter = &Massage_Para_Mode_3[0]},
[Massage_Mode_4] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_6)/sizeof(Massage_Para_Mode_6[0]), .Parameter = &Massage_Para_Mode_6[0]},
[Massage_Mode_5] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_7)/sizeof(Massage_Para_Mode_7[0]), .Parameter = &Massage_Para_Mode_7[0]},
[MassageKnead_Action_1] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead1)/sizeof(Massage_Para_Mode_Knead1[0]), .Parameter = &Massage_Para_Mode_Knead1[0]},
[MassageKnead_Action_2] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead2)/sizeof(Massage_Para_Mode_Knead2[0]), .Parameter = &Massage_Para_Mode_Knead2[0]},
[MassageKnead_Action_3] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead3)/sizeof(Massage_Para_Mode_Knead3[0]), .Parameter = &Massage_Para_Mode_Knead3[0]},
[MassageKnead_Action_4_1] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_6_1)/sizeof(Massage_Para_Mode_6_1[0]), .Parameter = &Massage_Para_Mode_6_1[0]},
[MassageKnead_Action_4_2] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_6_2)/sizeof(Massage_Para_Mode_6_2[0]), .Parameter = &Massage_Para_Mode_6_2[0]},
[MassageKnead_Action_4] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_6)/sizeof(Massage_Para_Mode_6[0]), .Parameter = &Massage_Para_Mode_6[0]},
[MassageKnead_Action_5] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_7)/sizeof(Massage_Para_Mode_7[0]), .Parameter = &Massage_Para_Mode_7[0]},
[MassageKnead_Action_6] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_8)/sizeof(Massage_Para_Mode_8[0]), .Parameter = &Massage_Para_Mode_8[0]},
[MassageKnead_Action_7] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_9)/sizeof(Massage_Para_Mode_9[0]), .Parameter = &Massage_Para_Mode_9[0]},
[MassageKnead_Action_7_1] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_9_1)/sizeof(Massage_Para_Mode_9_1[0]), .Parameter = &Massage_Para_Mode_9_1[0]},
[MassageKnead_Action_7_2] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_9_2)/sizeof(Massage_Para_Mode_9_2[0]), .Parameter = &Massage_Para_Mode_9_2[0]},
[MassageKnead_Action_7_3] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_9_3)/sizeof(Massage_Para_Mode_9_3[0]), .Parameter = &Massage_Para_Mode_9_3[0]},
[MassageKnead_Action_7_4] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_9_4)/sizeof(Massage_Para_Mode_9_4[0]), .Parameter = &Massage_Para_Mode_9_4[0]},
[MassageKnead_Action_7_5] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_9_5)/sizeof(Massage_Para_Mode_9_5[0]), .Parameter = &Massage_Para_Mode_9_5[0]},
[MassageKnead_Action_7_6] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_9_6)/sizeof(Massage_Para_Mode_9_6[0]), .Parameter = &Massage_Para_Mode_9_6[0]},
[MassageKnead_Action_7_7] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_9_7)/sizeof(Massage_Para_Mode_9_7[0]), .Parameter = &Massage_Para_Mode_9_7[0]},
[MassageKnead_Action_7_8] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_9_8)/sizeof(Massage_Para_Mode_9_8[0]), .Parameter = &Massage_Para_Mode_9_8[0]},
[MassageKnead_Action_7_9] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_9_9)/sizeof(Massage_Para_Mode_9_9[0]), .Parameter = &Massage_Para_Mode_9_9[0]},
[MassageKnead_Action_8] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead4)/sizeof(Massage_Para_Mode_Knead4[0]), .Parameter = &Massage_Para_Mode_Knead4[0]},
//理想L9按摩模式, 分别为双滑背、单滑背、背部指压、肩部揉捏、腰部揉捏、座部揉捏、1-12筋膜枪气袋
[MassageKnead_Action_9] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead5)/sizeof(Massage_Para_Mode_Knead5[0]), .Parameter = &Massage_Para_Mode_Knead5[0]},
[MassageKnead_Action_10] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead6)/sizeof(Massage_Para_Mode_Knead6[0]), .Parameter = &Massage_Para_Mode_Knead6[0]},
[MassageKnead_Action_11] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead7)/sizeof(Massage_Para_Mode_Knead7[0]), .Parameter = &Massage_Para_Mode_Knead7[0]},
[MassageKnead_Action_12] = {.ActionCount = 21, .ActionStep = sizeof(Massage_Para_Mode_Knead8)/sizeof(Massage_Para_Mode_Knead8[0]), .Parameter = &Massage_Para_Mode_Knead8[0]},
[MassageKnead_Action_13] = {.ActionCount = 21, .ActionStep = sizeof(Massage_Para_Mode_Knead9)/sizeof(Massage_Para_Mode_Knead9[0]), .Parameter = &Massage_Para_Mode_Knead9[0]},
[MassageKnead_Action_14] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead10)/sizeof(Massage_Para_Mode_Knead10[0]), .Parameter = &Massage_Para_Mode_Knead10[0]},
[MassageKnead_Action_15] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead11)/sizeof(Massage_Para_Mode_Knead11[0]), .Parameter = &Massage_Para_Mode_Knead11[0]},
[MassageKnead_Action_16] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead12)/sizeof(Massage_Para_Mode_Knead12[0]), .Parameter = &Massage_Para_Mode_Knead12[0]},
[MassageKnead_Action_17] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead13)/sizeof(Massage_Para_Mode_Knead13[0]), .Parameter = &Massage_Para_Mode_Knead13[0]},
[MassageKnead_Action_18] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead14)/sizeof(Massage_Para_Mode_Knead14[0]), .Parameter = &Massage_Para_Mode_Knead14[0]},
[MassageKnead_Action_19] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead15)/sizeof(Massage_Para_Mode_Knead15[0]), .Parameter = &Massage_Para_Mode_Knead15[0]},
[MassageKnead_Action_20] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead16)/sizeof(Massage_Para_Mode_Knead16[0]), .Parameter = &Massage_Para_Mode_Knead16[0]},
[MassageKnead_Action_21] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead17)/sizeof(Massage_Para_Mode_Knead17[0]), .Parameter = &Massage_Para_Mode_Knead17[0]},
[MassageKnead_Action_22] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead18)/sizeof(Massage_Para_Mode_Knead18[0]), .Parameter = &Massage_Para_Mode_Knead18[0]},
[MassageKnead_Action_23] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead19)/sizeof(Massage_Para_Mode_Knead19[0]), .Parameter = &Massage_Para_Mode_Knead19[0]},
[MassageKnead_Action_24] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead20)/sizeof(Massage_Para_Mode_Knead20[0]), .Parameter = &Massage_Para_Mode_Knead20[0]},
[MassageKnead_Action_25] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead21)/sizeof(Massage_Para_Mode_Knead21[0]), .Parameter = &Massage_Para_Mode_Knead21[0]},
[MassageKnead_Action_26] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead22)/sizeof(Massage_Para_Mode_Knead22[0]), .Parameter = &Massage_Para_Mode_Knead22[0]},
[MassageKnead_Action_27] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead23)/sizeof(Massage_Para_Mode_Knead23[0]), .Parameter = &Massage_Para_Mode_Knead23[0]},
[MassageKnead_Action_28] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead24)/sizeof(Massage_Para_Mode_Knead24[0]), .Parameter = &Massage_Para_Mode_Knead24[0]},
[MassageKnead_Action_29] = {.ActionCount = Massage_ModeActionCount_Max, .ActionStep = sizeof(Massage_Para_Mode_Knead25)/sizeof(Massage_Para_Mode_Knead25[0]), .Parameter = &Massage_Para_Mode_Knead25[0]},
};
//阀体映射地址动作回调函数
static void valve_ctrl_point_1(uint16_t Val);
static void valve_ctrl_point_2(uint16_t Val);
static void valve_ctrl_point_3(uint16_t Val);
static void valve_ctrl_point_4(uint16_t Val);
static void valve_ctrl_point_5(uint16_t Val);
static void valve_ctrl_point_6(uint16_t Val);
static void valve_ctrl_point_7(uint16_t Val);
static void valve_ctrl_point_8(uint16_t Val);
static void valve_ctrl_point_9(uint16_t Val);
static void valve_ctrl_point_10(uint16_t Val);
static void valve_ctrl_point_11(uint16_t Val);
static void valve_ctrl_point_12(uint16_t Val);
static void valve_ctrl_point_13(uint16_t Val);
static void valve_ctrl_point_14(uint16_t Val);
static void valve_ctrl_point_15(uint16_t Val);
static void valve_ctrl_point_16(uint16_t Val);
static void valve_ctrl_point_17(uint16_t Val);
static void valve_ctrl_point_18(uint16_t Val);
static void valve_ctrl_point_19(uint16_t Val);
static void valve_ctrl_point_20(uint16_t Val);
typedef void (*Vavle_Ctrl_Callback)(uint16_t Val);
static const Vavle_Ctrl_Callback ValveCtrl[] =
{
[0] = valve_ctrl_point_1, //按摩点位1,揉捏点位1
[1] = valve_ctrl_point_2, //按摩点位2,揉捏点位1
[2] = valve_ctrl_point_3, //按摩点位3,揉捏点位1
[3] = valve_ctrl_point_4, //按摩点位4,揉捏点位1
[4] = valve_ctrl_point_5, //按摩点位5,揉捏点位1
[5] = valve_ctrl_point_6, //按摩点位6,揉捏点位1
[6] = valve_ctrl_point_7, //按摩点位7,揉捏点位1
[7] = valve_ctrl_point_8, //按摩点位8,揉捏点位1
[8] = valve_ctrl_point_9, //按摩点位9,揉捏点位1
[9] = valve_ctrl_point_10, //按摩点位10,揉捏点位1
[10] = valve_ctrl_point_11,
[11] = valve_ctrl_point_12,
[12] = valve_ctrl_point_13,
[13] = valve_ctrl_point_14,
[14] = valve_ctrl_point_15,
[15] = valve_ctrl_point_16,
[16] = valve_ctrl_point_17,
[17] = valve_ctrl_point_18,
// [18] = valve_ctrl_point_19,
// [19] = valve_ctrl_point_20,
};
/* Private function prototypes -----------------------------------------------*/
/**
* @brief Valve_Action_Process -- 阀体动作
* @param none
* @retval none
*/
void Valve_Action_Process(void)
{
#define Valve_Open_Val 1
#define Valve_Close_Val 0
static uint32_t valve_data = 0;
uint8_t i;
Valve_MappingData_ReadList(&valve_data);
if(valve_data == 0xFFFFFFFF)
{
return;
}
for(i = 0; i < sizeof(ValveCtrl)/sizeof(ValveCtrl[0]); i++)
{
if(ValveCtrl[i] == NULL)
{
continue;
}
if(valve_data & (1 << i))
{
//添加电磁阀爬坡算法。。。
ValveCtrl[i](Valve_Open_Val);
}
else
{
ValveCtrl[i](Valve_Close_Val);
}
}
}
//电磁映射回调函数
static void valve_ctrl_point_1(uint16_t Val)
{
PM.UC.L31 = Val;
}
static void valve_ctrl_point_2(uint16_t Val)
{
PM.UC.L12 = Val;
}
static void valve_ctrl_point_3(uint16_t Val)
{
PM.UC.L32 = Val;
}
static void valve_ctrl_point_4(uint16_t Val)
{
PM.UC.L11 = Val;
}
static void valve_ctrl_point_5(uint16_t Val)
{
PM.UC.L33 = Val;
}
static void valve_ctrl_point_6(uint16_t Val)
{
PM.UC.L10 = Val;
}
static void valve_ctrl_point_7(uint16_t Val)
{
PM.UC.L34 = Val;
}
static void valve_ctrl_point_8(uint16_t Val)
{
PM.UC.L9 = Val;
}
static void valve_ctrl_point_9(uint16_t Val)
{
PM.UC.L35 = Val;
}
static void valve_ctrl_point_10(uint16_t Val)
{
PM.UC.L8 = Val;
}
static void valve_ctrl_point_11(uint16_t Val)
{
PM.UC.L6 = Val;
}
static void valve_ctrl_point_12(uint16_t Val)
{
PM.UC.L4 = Val;
}
static void valve_ctrl_point_13(uint16_t Val)
{
PM.UC.L2 = Val;
}
static void valve_ctrl_point_14(uint16_t Val)
{
PM.UC.L13 = Val;
}
static void valve_ctrl_point_15(uint16_t Val)
{
PM.UC.L15 = Val;
}
static void valve_ctrl_point_16(uint16_t Val)
{
PM.UC.L17 = Val;
}
static void valve_ctrl_point_17(uint16_t Val)
{
PM.UC.L19 = Val;
}
static void valve_ctrl_point_18(uint16_t Val)
{
PM.UC.L21 = Val;
}
static void valve_ctrl_point_19(uint16_t Val)
{
//PM.UC.L21 = Val;
}
static void valve_ctrl_point_20(uint16_t Val)
{
//PM.UC.L23 = Val;
}