/*
 *  test activation
 */
void test_activation_ack_cmd_callback(ProHeader *header)
{
	/*
		#define	ACTIVATION_SUCCESS		0x0000
		#define PARAM_ERROR				0x0001
		#define DATA_ENC_ERROR			0x0002
		#define NEW_DEVICE_TRY_AGAIN	0x0003
		#define DJI_APP_TIMEOUT			0x0004
		#define DJI_APP_NO_INTERNET		0x0005
		#define SERVER_REFUSED			0x0006
		#define LEVEL_ERROR				0x0007
	*/
	unsigned short ack_data;
	printf("Sdk_ack_cmd0_callback,sequence_number=%d,session_id=%d,data_len=%d\n", header->sequence_number, header->session_id, header->length - EXC_DATA_SIZE);
	memcpy((unsigned char *)&ack_data,(unsigned char *)&header->magic, (header->length - EXC_DATA_SIZE));

	if( is_sys_error(ack_data))
	{
		printf("[DEBUG] SDK_SYS_ERROR!!! \n");
	}
	else
	{
		char result[][50]={{"ACTIVATION_SUCCESS"},{"PARAM_ERROR"},{"DATA_ENC_ERROR"},{"NEW_DEVICE_TRY_AGAIN"},{"DJI_APP_TIMEOUT"},{" DJI_APP_NO_INTERNET"},{"SERVER_REFUSED"},{"LEVEL_ERROR"}};
		printf("[ACTIVATION] Activation result: %s \n", *(result+ack_data));

		activation_status_s = (unsigned char)ack_data;

		if(ack_data == 0)
		{
			Pro_Config_Comm_Encrypt_Key(key);
			printf("[ACTIVATION] set key %s\n",key);
		}
		else if(ack_data == 3)
		{
			/* new device, try again when activation is failed */
			alarm(2);
		}
	}
}
void cmd_callback_fun(unsigned short *ack)
{
	/*
	*	#define	REQ_TIME_OUT			0x0000
		#define REQ_REFUSE				0x0001
		#define CMD_RECIEVE				0x0002
		#define STATUS_CMD_EXECUTING	0x0003
		#define STATUS_CMD_EXE_FAIL		0x0004
		#define STATUS_CMD_EXE_SUCCESS	0x0005
	*/
	unsigned short ack_data = *ack;

	if( is_sys_error(ack_data))
	{
		printf("[DEBUG] SDK_SYS_ERROR!!! \n");
	}
	else
	{
		printf("[DEBUG] recv_ack %#x \n", ack_data);
		char result[6][50]={{"REQ_TIME_OUT"},{"REQ_REFUSE"},{"CMD_RECIEVE"},{"STATUS_CMD_EXECUTING"},{"STATUS_CMD_EXE_FAIL"},{"STATUS_CMD_EXE_SUCCESS"}};
		printf("random_test Cmd result: %s \n", *(result+ack_data));
	}
	cmd_send_flag = 1;
}
/*
 * random test cmd
 */
void random_test_ack_cmd_callback(ProHeader *header)
{
	/*
	*	#define	REQ_TIME_OUT			0x0000
		#define REQ_REFUSE			0x0001
		#define CMD_RECIEVE			0x0002
		#define STATUS_CMD_EXECUTING		0x0003
		#define STATUS_CMD_EXE_FAIL		0x0004
		#define STATUS_CMD_EXE_SUCCESS		0x0005
	*/
	unsigned short ack_data;
	printf("Sdk_ack_cmd0_callback,sequence_number=%d,session_id=%d,data_len=%d\n", header->sequence_number, header->session_id, header->length - EXC_DATA_SIZE);
	memcpy((unsigned char *)&ack_data,(unsigned char *)&header->magic, (header->length - EXC_DATA_SIZE));

	if( is_sys_error(ack_data))
	{
		printf("[DEBUG] SDK_SYS_ERROR!!! \n");
	}
	else
	{
		char result[6][50]={{"REQ_TIME_OUT"},{"REQ_REFUSE"},{"CMD_RECIEVE"},{"STATUS_CMD_EXECUTING"},{"STATUS_CMD_EXE_FAIL"},{"STATUS_CMD_EXE_SUCCESS"}};
		printf("random_test Cmd result: %s \n", *(result+ack_data));
	}
}
示例#4
0
static void * CmdRecvThread(void * arg)
{
    arg = arg;  //For eliminating the warning messages.
    while(1)
	{
		if(cmd_unit.is_send_cmd)
		{
			printf("[DEBUG] in send\n");
			cmd_unit.is_send_cmd = 0;
			App_Send_Data(2,1,MY_CTRL_CMD_SET, API_CMD_REQUEST,(uint8_t*)&cmd_unit.cmd,sizeof(cmd_unit.cmd),sdk_ack_cmd_callback, 10, 0);
			printf("[DEBUG] send req cmd ok\n");
			sleep(2);
			if( (cmd_unit.ack_result&0xFF00) == 0xFF00 )
			{
				cmd_unit.ack_callback(&cmd_unit.ack_result);
				continue;
			}
			else if(cmd_unit.ack_result == REQ_TIME_OUT)
			{
				printf("[DEBUG] recv ack cmd time out \n");
				cmd_unit.ack_callback(&cmd_unit.ack_result);
				continue;
			}
			else if(cmd_unit.ack_result == REQ_REFUSE)
			{
				cmd_unit.ack_callback(&cmd_unit.ack_result);
				continue;
			}
			else if (cmd_unit.ack_result == CMD_RECIEVE)
			{
				printf("[DEBUG] CMD_RECIEVE \n");

				uint8_t req_status = cmd_unit.cmd.cmd_sequence; // can be anything
				sleep(7);
				App_Send_Data(2, 1,MY_CTRL_CMD_SET, API_CMD_STATUS_REQUEST,(uint8_t*)&req_status,sizeof(uint8_t),sdk_ack_cmd_callback, 10, 0);
				printf("[DEBUG] send req status ok\n");
				sleep(1);
				printf("[DEBUG] recv ack1 status ok\n");
				if( is_sys_error(cmd_unit.ack_result))
				{
					printf("SDK_SYS_ERROR!!! \n");
					continue;
				}
				else
				{
					cmd_unit.ack_callback(&cmd_unit.ack_result);
				}
				
				// for debug
				if(cmd_unit.ack_result != STATUS_CMD_EXE_SUCCESS)
				{
					printf("[DEBUG] WARNING CMD UN-SECCUSS\n");
				}
				
			}
		}
		else
		{
			usleep(100000);
		}
	}
	return NULL;
}