#include "speed_to_servoMotor.h"
#include "ptz_header_file.h"
#include "servoMotor.h"


#ifdef PTZ_SERVO_MOTOR

//电机数据解析任务互斥量
BSP_OS_SEM g_horiMotorMutex;
BSP_OS_SEM g_vertMotorMutex;

/*!
    \brief      水平电机接收任务
    \param[in]  none
    \param[out] none 
    \retval     none
*/
static void ptz_recv_hori_servo_task()
{
    CPU_INT08U  err;

    while(1) {
        OSSemPend(g_horiMotorMutex, 0, &err);

        


    }
}

/*!
    \brief      俯仰电机接收任务
    \param[in]  none
    \param[out] none
    \retval     none
*/
static void ptz_recv_vert_servo_task()
{
    CPU_INT08U  err;

    while(1) {
        OSSemPend(g_vertMotorMutex, 0, &err);



    }
}

static OS_STK  task_recv_hori_servo_stk[TASK_RECV_HORI_SERVO_STK_SIZE];
static OS_STK  task_recv_vert_servo_stk[TASK_RECV_HORI_SERVO_STK_SIZE];
static  void  creat_task_servo_recv_task(void)
{
   CPU_INT08U  task_err;   
   CPU_INT08U  name_err;

   task_err = OSTaskCreateExt((void (*)(void *)) ptz_recv_hori_servo_task,
		   (void           *) 0,
		   (OS_STK         *)&task_recv_hori_servo_stk[TASK_RECV_HORI_SERVO_STK_SIZE - 1],
		   (INT8U           ) TASK_RECV_HORI_SERVO_PRIO,                   
		   (INT16U          ) TASK_RECV_HORI_SERVO_PRIO,
		   (OS_STK         *)&task_recv_hori_servo_stk[0],
		   (INT32U          ) TASK_RECV_HORI_SERVO_STK_SIZE,
		   (void           *) 0,
		   (INT16U          )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
    #if (OS_TASK_NAME_EN > 0)
    OSTaskNameSet(TASK_VERT_PID_PRIO, "ptz_recv_hori_servo_task", &name_err);
    #endif
       
    if ((task_err == OS_ERR_NONE) && (name_err == OS_ERR_NONE)) {
        pdebug(DEBUG_LEVEL_INFO,"create ptz_recv_hori_servo_task  success...\n\r");
	} else { 
        pdebug(DEBUG_LEVEL_FATAL,"create ptz_recv_hori_servo_task  failed...\n\r");
	}

   task_err = OSTaskCreateExt((void (*)(void *)) ptz_recv_vert_servo_task,           
		   (void           *) 0,
		   (OS_STK         *)&task_recv_vert_servo_stk[TASK_RECV_HORI_SERVO_STK_SIZE - 1],
		   (INT8U           ) TASK_RECV_VERT_SERVO_PRIO,                   
		   (INT16U          ) TASK_RECV_VERT_SERVO_PRIO,
		   (OS_STK         *)&task_recv_vert_servo_stk[0],
		   (INT32U          ) TASK_RECV_HORI_SERVO_STK_SIZE,
		   (void           *) 0,
		   (INT16U          )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
    #if (OS_TASK_NAME_EN > 0)
    OSTaskNameSet(TASK_VERT_PID_PRIO, "ptz_recv_vert_servo_task", &name_err);
    #endif
       
    if ((task_err == OS_ERR_NONE) && (name_err == OS_ERR_NONE)) {
        pdebug(DEBUG_LEVEL_INFO,"create ptz_recv_vert_servo_task  success...\n\r");
	} else { 
        pdebug(DEBUG_LEVEL_FATAL,"create ptz_recv_vert_servo_task  failed...\n\r");
	}
}


void Init_ServoMotorRecv(void)
{
    g_horiMotorMutex = OSSemCreate(1);
    g_vertMotorMutex = OSSemCreate(1);

    creat_task_servo_recv_task();
}

#endif
