示例#1
0
void firmware()
{
	/* Thread code to be added here */
	unsigned char print = 0xff;
	open_drivers();
	
	attach_drivers();
	set_uart_baudrate(hUART);
	vos_delay_msecs(1500);
	
	//write_uart(hUART,&print,1);

	tcbUSBBRI = vos_create_thread_ex(30,2048,USBBRI_attach,"USBBRI_attach",0);
	tcbUSBTMC = vos_create_thread_ex(30,2048,USBTMC_attach,"USBTMC_attach",0);
}
示例#2
0
void firmware()
{
	/* Thread code to be added here */

	// communications ioctl request blocks
	common_ioctl_cb_t uart_iocb;

	usbHostHID_ioctl_t	hid_iocb;
	usbhost_device_handle ifDev; 				// device handle
	usbhost_ioctl_cb_t hc_iocb;					// Host Controller ioctl request block
	unsigned char byteCount,status;
	unsigned short num_read;

	do
	{
		open_drivers();
		
		// UART set baud rate
		uart_iocb.ioctl_code = VOS_IOCTL_UART_SET_BAUD_RATE;
		uart_iocb.set.uart_baud_rate = DEF_UART_BAUD;
		vos_dev_ioctl(hUART, &uart_iocb);
		
		do
		{
			vos_delay_msecs(1000);
			// wait for enumeration to complete
//			message("Waiting for enumeration\r\n");
			status = usbhost_connect_state(hUSBHOST_2);
			
		} while (status != PORT_STATE_ENUMERATED);

		if (status == PORT_STATE_ENUMERATED)
		{
//			message("Enumeration complete\r\n");
			vos_gpio_set_port_mode(GPIO_PORT_A, 0b00000100); // A2 на выход
			vos_gpio_write_port(GPIO_PORT_A, 0b00000100); // зажечь светодиод
			
			attach_drivers();
			if (hUSBHOST_HID == NULL)
			{
//				message("No Wingman Found - code ");
//				number(status);
//				message(eol);
				break;
			}


			// get report descriptor
			hid_iocb.descriptorType = USB_DESCRIPTOR_TYPE_REPORT;
			hid_iocb.descriptorIndex = USB_HID_DESCRIPTOR_INDEX_ZERO;
			hid_iocb.Length = 0x40;
			hid_iocb.get.data=&buf[0];
			hid_iocb.ioctl_code = VOS_IOCTL_USBHOSTHID_GET_DESCRIPTOR;
			status = vos_dev_ioctl(hUSBHOST_HID, &hid_iocb);
			if (status != USBHOSTHID_OK)
			{
//				message("Get report descriptor failed - code ");
//				number(status);
//				message(eol);
				break;
			}

			// set idle
			hid_iocb.reportID = USB_HID_REPORT_ID_ZERO;
			hid_iocb.idleDuration = 0x20;
			hid_iocb.ioctl_code = VOS_IOCTL_USBHOSTHID_SET_IDLE;
			status = vos_dev_ioctl(hUSBHOST_HID, &hid_iocb);
			if (status != USBHOSTHID_OK)
			{
//				message("Set Idle failed - code ");
//				number(status);
//				message(eol);
				break;
			}


			// get idle
			hid_iocb.reportID = USB_HID_REPORT_ID_ZERO;
			hid_iocb.get.data=&buf[0];
			hid_iocb.ioctl_code = VOS_IOCTL_USBHOSTHID_GET_IDLE;
			status = vos_dev_ioctl(hUSBHOST_HID, &hid_iocb);
			if (status != USBHOSTHID_OK)
			{
//				message("Get Idle failed - code ");
//				number(status);
//				message(eol);
				break;
			}

			if (status == USBHOSTHID_OK)
			{
					while (1)
					{
						if (vos_dev_read(hUSBHOST_HID, buf, 8, &num_read) == USBHOSTHID_OK)
						{

							for (byteCount = 0; byteCount < num_read; byteCount++)
							{
								number(buf[byteCount]);
							}
//							message(eol);
						}
						else
						{
//							message("USB Read Failed - code ");
//							number(status);
//							message(eol);
							break;
						}
					}


			}

//		message("Disconnected!\r\n");
		vos_gpio_write_port(GPIO_PORT_A, 0b00000000); // погасить все

		} // end of if PORT_STATE_ENUMERATED


		vos_dev_close(hUSBHOST_HID);
		close_drivers();
	} while (1);


}