static void * Status_Ctrl_Thread_Func(void * arg)
{
    unsigned char *cmd = (unsigned char *)arg;
    unsigned cmd_timeout = 100;    //unit is ms
    unsigned retry_time = 3;
    unsigned short ack_data = SDK_ERR_NO_RESPONSE;
    static const char err[4][16] = {{"timeout"},{"cmd refused"},{"cmd not support"},{"didn't get ack"}};

    while(1)
    {
        status_ctrl_cmd_data.cmd_sequence ++;
        status_ctrl_cmd_data.cmd_data = *cmd;
        Save_Status_Ctrl_Return_Code(SDK_ERR_NO_RESPONSE);
        DJI_Pro_App_Send_Data(2,1,MY_CTRL_CMD_SET, API_CMD_REQUEST,(unsigned char*)&status_ctrl_cmd_data,
                              sizeof(status_ctrl_cmd_data),DJI_Pro_Status_Ctrl_CallBack,cmd_timeout, retry_time);
        /* first stage poll */
        usleep(cmd_timeout * retry_time * 1000);
        ack_data = Get_Status_Ctrl_Return_Code();
        if(ack_data == SDK_ERR_NO_RESPONSE || ack_data == SDK_ERR_COMMAND_NOT_SUPPORTED
                || ack_data == REQ_TIME_OUT || ack_data == REQ_REFUSE)
        {
            printf("%s,line %d,Status Ctrl %d: %s. Return error 0x%X\n",__func__,__LINE__,
                   status_ctrl_cmd_data.cmd_data,
                   &err[((ack_data&0x100)>>7)|(ack_data&0x1)][0],
                    ack_data);
            if(p_status_ctrl_interface)
            {
                p_status_ctrl_interface(ack_data);
            }
            break;
        }
        else if(ack_data == 0x0002)
Esempio n. 2
0
void transparent_transission_send(uint8_t* pbuf, uint16_t len)
{    //透传发送!!!
    DJI_Pro_App_Send_Data(0 , 0, MY_ACTIVATION_SET, 0xFE, pbuf, len,NULL,0,1);                                        
    //printf("[send_data],send len %d data %s\n", len, pbuf);
}