⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpc5200usbtool.c

📁 MPC5200 BSP 支持ATA,USB, I2C,扩展网口
💻 C
📖 第 1 页 / 共 3 页
字号:
mouseUnreg:    if (usbMouseDynamicAttachUnRegister (mseAttachCallback, (pVOID) fout) != OK)	fprintf (fout, "usbMouseDynamicAttachUnRegister() returned ERROR\n");    if (pMseSioChan != NULL)	if ((*pMseSioChan->pDrvFuncs->callbackInstall) (pMseSioChan, 	    SIO_CALLBACK_PUT_MOUSE_REPORT, NULL, NULL) != OK)	    {	    fprintf (fout, "callbackInstall() returned ERROR.\n");	    }mouseDown:    if (usbMouseDevShutdown () != OK)	fprintf (fout, "usbMouseDevShutdown() returned ERROR\n");    return RET_CONTINUE;    }#endif	#ifdef INCLUDE_USB_MS_BULKONLY#ifndef BULK_NAME#define BULK_NAME         "BULK"#endif#ifndef BULK_DRIVE_NAME1#define BULK_DRIVE_NAME1         "H:"#endif#ifndef BULK_DRIVE_NAME2#define BULK_DRIVE_NAME2         "I:"#endif#ifndef BULK_DRIVE_NAME3#define BULK_DRIVE_NAME3         "J:"#endif#ifndef BULK_DRIVE_NAME4#define BULK_DRIVE_NAME4         "K:"#endif#define BULK_DRIVE_HIDDEN_SECS  63#define BULK_DRIVE_BUFFER_SIZE  32#define BULK_DRIVE_DISPLAY_INTERVAL 10485760LOCAL THREAD_HANDLE     bulkTaskId;LOCAL QUEUE_HANDLE 	bulkCallbackQueue;LOCAL USB_MESSAGE  	bulkDeviceStatus;LOCAL BLK_DEV		* pBulkBlkDev = NULL;	LOCAL DOS_VOL_DESC	* pBulkDosVol = NULL;	LOCAL USBD_NODE_ID      bulkNodeId;LOCAL CBIO_DEV_ID				cbio,cbio1;LOCAL int 							dcacheSize = 0x30000;LOCAL int								fdiskNum =0;LOCAL STATUS bulkMountDrive    (    USBD_NODE_ID attachCode,                FILE *fout    )    {    pBulkBlkDev = (BLK_DEV *) usbBulkBlkDevCreate (bulkNodeId, /*	pBulkBlkDev = (BLK_DEV *) usbSFFBulkBlkDevCreate (bulkNodeId, */#ifdef INCLUDE_DOSFS						 NULL, 						 NULL,#else						 NULL, 						 BULK_DRIVE_HIDDEN_SECS, #endif						 USB_SCSI_FLAG_READ_WRITE10);					/* USB_SFF_FLAG_READ_WRITE10); */						 /* pBulkBlkDev = (BLK_DEV *) usbCbiUfiBlkDevCreate (bulkNodeId);  */  /* notice! */  if (pBulkBlkDev == NULL)	{        fprintf (fout, "usbBulkBlkDevCreate() returned ERROR\n");				return ERROR;	}#if 0    pBulkDosVol = dosFsDevInit (BULK_DRIVE_NAME,  pBulkBlkDev, NULL);    if (pBulkDosVol == NULL)	{        fprintf (fout, "dosFsDevInit() returned ERROR\n");				return ERROR;	}#endif		if( fdiskNum >=1 )		{			if((cbio = dcacheDevCreate(pBulkBlkDev, NULL, dcacheSize, BULK_NAME)) == NULL)			{				fprintf (fout, "dcacheDevCreate returned ERROR\n");				return ERROR;			}		}		else			return ERROR;		if( fdiskNum >=1 )		{			if((cbio1 = dpartDevCreate(cbio, fdiskNum, usrFdiskPartRead)) == NULL)			{				fprintf (fout, "dpartDevCreate returned ERROR\n");				return ERROR;			}		}			else			return ERROR;		if( fdiskNum >=1 )		{			if( dosFsDevCreate ("H:", dpartPartGet (cbio1, 0),8, 0) == ERROR )			{				fprintf (fout, "dosFsDevCreate H: returned ERROR\n");				return (ERROR);			}		}		if( fdiskNum >=2 )		{			if( dosFsDevCreate ("I:", dpartPartGet (cbio1, 1),8, 0) == ERROR )			{				fprintf (fout, "dosFsDevCreate I: returned ERROR\n");				return (ERROR);			}		}		if( fdiskNum >=3 )		{			if( dosFsDevCreate ("J:", dpartPartGet (cbio1, 2),8, 0) == ERROR )			{				fprintf (fout, "dosFsDevCreate J: returned ERROR\n");				return (ERROR);			}		}		if( fdiskNum >=4 )		{			if( dosFsDevCreate ("K:", dpartPartGet (cbio1, 3),8, 0) == ERROR )			{				fprintf (fout, "dosFsDevCreate K: returned ERROR\n");				return (ERROR);			}		}		 return OK;    }	LOCAL VOID bulkAttachCallback    (    pVOID arg,			        USBD_NODE_ID nodeId,	        UINT16 attachCode		       )    {    FILE *fout = (FILE *) arg;    usbQueuePut (bulkCallbackQueue,                 (UINT16) nodeId,		                 attachCode,			                 (UINT32) NULL,		                 5000);    } LOCAL VOID bulkClientThread    (    pVOID param    )    {    FILE *fout = (FILE *) param;    DEV_HDR *hdr;    while (1)        {        usbQueueGet (bulkCallbackQueue, &bulkDeviceStatus, OSS_BLOCK);		if (bulkDeviceStatus.wParam == USB_BULK_ATTACH)	    {	    bulkNodeId = (USBD_NODE_ID) bulkDeviceStatus.msg;			    if (usbBulkDevLock (bulkNodeId) != OK)/*    if (usbSFFBulkDevLock (bulkNodeId) != OK)   *//*    if (usbCbiUfiDevLock (bulkNodeId) != OK)   */                fprintf (fout, "usbBulkDevLock() returned ERROR\n");	    if (bulkMountDrive(bulkNodeId, fout) != OK)                fprintf (fout, "bulkMountDrive() returned ERROR\n");            fprintf (fout, "Bulk Device Installed as %s\n", BULK_NAME);	    }	else if (bulkDeviceStatus.wParam == USB_BULK_REMOVE)	    {	    bulkNodeId = (USBD_NODE_ID) bulkDeviceStatus.msg;	    	    			if ( (hdr = iosDevFind (BULK_NAME, NULL)) != NULL )            {                iosDevDelete (hdr);                fprintf (fout, "Bulk deleted\n");            }		            if ( (hdr = iosDevFind (BULK_DRIVE_NAME1, NULL)) != NULL )            {                iosDevDelete (hdr);                fprintf (fout, "Fdisk H: deleted\n");            }            if ( (hdr = iosDevFind (BULK_DRIVE_NAME2, NULL)) != NULL )            {                iosDevDelete (hdr);                fprintf (fout, "Fdisk I: deleted\n");            }            if ( (hdr = iosDevFind (BULK_DRIVE_NAME3, NULL)) != NULL )            {                iosDevDelete (hdr);                fprintf (fout, "Fdisk J: deleted\n");            }            if ( (hdr = iosDevFind (BULK_DRIVE_NAME4, NULL)) != NULL )            {                iosDevDelete (hdr);                fprintf (fout, "Fdisk K: deleted\n");            }		    if (usbBulkDevUnlock (bulkNodeId) != OK)/*		if (usbSFFBulkDevUnlock (bulkNodeId) != OK)	*//*		if (usbCbiUfiDevUnlock (bulkNodeId) != OK)	*/		{                fprintf (fout, "usbBulkDevUnlock() returned ERROR\n");		return;		}            fprintf (fout, "%s removed and uninstalled from FS\n", BULK_NAME);	    			bulkNodeId = NULL;            pBulkDosVol = NULL;            cbio = NULL;            cbio1 = NULL;            fdiskNum = 0;	    }	}    }LOCAL UINT16 cmdBulkInit    (    pVOID Param,		    char **ppCmd,		    FILE *fin,			    FILE *fout			    )        {     OSS_THREAD_SLEEP (1);				*ppCmd = GetHexToken (*ppCmd, &fdiskNum, 1); 				if ((fdiskNum > 4)||(fdiskNum < 1))		{			fprintf (fout, "Fdisk number is not correct!\n");			return;		}			    if (usbBulkDevInit () == OK)/*  if (usbSFFBulkDevInit () == OK)  *//*  if (usbCbiUfiDevInit () == OK)  */	fprintf (fout, "usbBulkDevInit() returned OK\n");    else	fprintf (fout, "usbBulkDevInit() returned ERROR\n");      if (usbQueueCreate (128, &bulkCallbackQueue)!=OK)        {	fprintf (fout, "usbQueueCreate() returned ERROR\n");	return;	}    if (OSS_THREAD_CREATE (bulkClientThread,                           (pVOID) fout,                           OSS_PRIORITY_INTERRUPT,                           "tBulkClnt",                           &bulkTaskId) != OK)	{	fprintf (fout, "usbBulkDevInit() TaskSpawn Error...!\n");	return;	}      if (usbBulkDynamicAttachRegister (bulkAttachCallback, (pVOID) fout) != OK)/*  if (usbSFFBulkDynamicAttachRegister (bulkAttachCallback, (pVOID) fout) != OK) *//*  if (usbCbiUfiDynamicAttachRegister (bulkAttachCallback, (pVOID) fout) != OK) */	fprintf (fout, "usbBulkDynamicAttachRegister() returned ERROR!\n");    return RET_CONTINUE;    }#ifdef INCLUDE_DOSFSLOCAL UINT16 cmdBulkFormat    (    pVOID Param,		    char **ppCmd,		    FILE *fin,			    FILE *fout			    )        {    int  ix = 0; 		*ppCmd = GetHexToken (*ppCmd, &ix, 1);  		 		if ((ix >fdiskNum)||(ix < 1)) 		{ 				fprintf (fout, " Fdisk Number formatted is not correct!\n"); 				return ERROR; 		}        if (pBulkBlkDev == NULL)		{        fprintf (fout, "cmdBulkFormat() ERROR USB Bulk Device not initialized\n");				return ERROR;		}		if (ix ==1)		{    	if (dosFsVolFormat(BULK_DRIVE_NAME1, DOS_OPT_FAT32, NULL)==ERROR)			{        fprintf (fout, "cmdBulkFormat() ERROR formating\n");				return ERROR;			}		}		if (ix ==2)		{    	if (dosFsVolFormat(BULK_DRIVE_NAME2, DOS_OPT_FAT32, NULL)==ERROR)			{        fprintf (fout, "cmdBulkFormat() ERROR formating\n");				return ERROR;			}		}		if (ix ==3)		{    	if (dosFsVolFormat(BULK_DRIVE_NAME3, DOS_OPT_FAT32, NULL)==ERROR)			{        fprintf (fout, "cmdBulkFormat() ERROR formating\n");				return ERROR;			}		}		if (ix ==4)		{    	if (dosFsVolFormat(BULK_DRIVE_NAME4, DOS_OPT_FAT32, NULL)==ERROR)			{        fprintf (fout, "cmdBulkFormat() ERROR formating\n");				return ERROR;			}		}    return RET_CONTINUE;    }#endifLOCAL UINT16 bulkWrite    (    long  bytes,    FILE *fin,			    FILE *fout			    )        {      char    *ptr;    int     fd;    UINT32  i;    UINT32  len=1;    fd = open("H:/usbDiskTest", O_CREAT | O_WRONLY, 0);    if (fd == ERROR)	fprintf (fout, "bulkWrite() error opening file\n");    else	fprintf (fout, "bulkWrite() file opened for write\n");     for (i=1; i<=bytes; i++)     {     		if((i%2)==0)        	*ptr ='a';        else        	*ptr ='5';        if (len != write(fd,ptr,1))        {                fprintf (fout, "bulkWrite() error writing %u to file\n",i);                close(fd);                return ERROR;  			}     }    close(fd);    fprintf (fout, "bulkWrite() wrote %u bytes to file\n",i-1);    return RET_CONTINUE;    }LOCAL UINT16 bulkRead    (    long  bytes,    FILE *fin,			    FILE *fout			    )        {    char    buffer[BULK_DRIVE_BUFFER_SIZE];    char 		*ptr;    int     fd;    int     i; 	  int     len;       fd = open("H:/usbDiskTest", O_RDONLY, 0);    if (fd == ERROR)	fprintf (fout, "bulkRead() error opening file\n");    else	fprintf (fout, "bulkRead() file opened for read\n"); 		    while ((len=read(fd,buffer,BULK_DRIVE_BUFFER_SIZE)) > 0)        {        	for (i=0;i<len;i++)        	{        		ptr = (buffer+i);        		if (bytes != 0)       				fprintf (fout, "%c", *ptr);       		}       		if (bytes != 0)       			fprintf (fout, "\n");        }		fprintf (fout, "Read File ended\n");    close(fd);        return RET_CONTINUE;    }LOCAL UINT16 cmdBulkWrite    (    pVOID Param,		    char **ppCmd,		    FILE *fin,			    FILE *fout			    )        {     long    bytes=0;    *ppCmd = GetHexToken (*ppCmd, &bytes, 1);    bulkWrite(bytes,fin,fout);    return RET_CONTINUE;    }LOCAL UINT16 cmdBulkRead    (    pVOID Param,		    char **ppCmd,		    FILE *fin,			    FILE *fout			    )        {        long    bytes=0;    *ppCmd = GetHexToken (*ppCmd, &bytes, 1);    bulkRead(bytes,fin,fout);    return RET_CONTINUE;    }LOCAL UINT16 cmdBulkShow    (    pVOID Param,		    char **ppCmd,		    FILE *fin,			    FILE *fout			    )        {    usbBulkDevIoctl(pBulkBlkDev, USB_BULK_DESCRIPTOR_GET, 0);  /*usbSFFBulkDevIoctl(pBulkBlkDev, USB_SFF_BULK_DESCRIPTOR_GET, 0); */  /*usbCbiUfiDevIoctl(pBulkBlkDev, USB_UFI_ALL_DESCRIPTOR_GET, 0); */    return RET_CONTINUE;    }LOCAL UINT16 cmdfdiskShow    (    pVOID Param,		    char **ppCmd,		    FILE *fin,			    FILE *fout			    )        {		int   fnum=0;    *ppCmd = GetHexToken (*ppCmd, &fnum, 1);    if ((fnum>fdiskNum)||(fnum<1))    {    	fprintf (fout, " Fdisk Number formatted is not correct!\n"); 			return ERROR;	 		} 		if(fnum == 1) 			{ 				dosFsShow("H:",0); 			} 		if(fnum == 2) 			{ 				dosFsShow("I:",0); 			} 		if(fnum == 3) 			{ 				dosFsShow("J:",0); 			} 		if(fnum == 4) 			{ 				dosFsShow("K:",0); 			}    return RET_CONTINUE;    }    LOCAL UINT16 cmdBulkDown    (    pVOID Param,		    char **ppCmd,		    FILE *fin,			    FILE *fout			    )    {    if (usbBulkDynamicAttachUnregister (bulkAttachCallback, (pVOID) fout) != OK)/*	if (usbSFFBulkDynamicAttachUnregister (bulkAttachCallback, (pVOID) fout) != OK)*//*	if (usbCbiUfiDynamicAttachUnregister (bulkAttachCallback, (pVOID) fout) != OK)*/	fprintf (fout, "usbBulkDynamicAttachUnregister() returned ERROR\n");    OSS_THREAD_DESTROY (bulkTaskId);#if 0     if (usbQueueDestroy (&bulkCallbackQueue)!=OK)        {	fprintf (fout, "usbQueueDestroy() returned ERROR\n");	return;	}#endif    if (usbBulkDevShutDown (OK) == OK)	fprintf (fout, "usbBulkDevShutDown() returned OK\n");    else	fprintf (fout, "usbBulkDevShutDown() returned ERROR\n");    return RET_CONTINUE;    }#endif	#endif	LOCAL CMD_DESCR cmdTable [] =    {    #ifdef INCLUDE_USB    {"UsbInit", 4, "UsbInit", "Initialize USBD", cmdUsbInit},    {"UsbDown", 4, "UsbDown", "Shut down USBD", cmdUsbDown},    {"Attach", 2, "Attach Mpc5200", "Attaches HCD to USBD", cmdAttach},    {"Detach", 2, "Detach Mpc5200", "Detaches HCD from USBD", cmdDetach},    {"UsbEnum", 4, "UsbEnum", "Enumerate USBs attached to system", cmdUsbEnum},    {"UsbStats", 4, "UsbStats n", "Display statistics for bus connected to node n", cmdUsbStats},    {"stats", 4, NULL, NULL, cmdUsbStats},    {"GetConfig", 4, "GetConfig n", "Get USB configuration for node n", cmdGetConfig},    {"gc", 2, NULL, NULL, cmdGetConfig},    {"SetConfig", 4, "SetConfig n v", "Set USB configuration to v for node n", cmdSetConfig},    {"sc", 2, NULL, NULL, cmdSetConfig},    {"GetInterface", 4, "GetInterface n i", "Get alt. setting for node n interface i",	cmdGetInterface},    {"gi", 2, NULL, NULL, cmdGetInterface},    {"SetInterface", 4, "SetInterface n i as", "Set alt. setting as for node n interface i",	cmdSetInterface},    {"si", 2, NULL, NULL, cmdSetInterface},    {"GetStatus", 4, "GetStatus n typ idx len", "Get USB status typ/idx for node n", cmdGetStatus},    {"gs", 2, NULL, NULL, cmdGetStatus},    {"GetAddress", 4, "GetAddress n", "Get USB address for node n", cmdGetAddress},    {"ga", 2, NULL, NULL, cmdGetAddress},    {"SetAddress", 4, "SetAddress n a", "Set USB address to a for node n", cmdSetAddress},    {"sa", 2, NULL, NULL, cmdSetAddress},    {"SetFeature", 4, "SetFeature n t fs idx", "Set USB feature t/fs/idx on node n", 	cmdSetFeature},    {"sf", 2, NULL, NULL, cmdSetFeature},    {"ClrFeature", 4, "ClrFeature n t fs idx", "Clear USB feature t/fs/idx on node n",	cmdClrFeature},    {"cf", 2, NULL, NULL, cmdClrFeature},    {"GetDescr", 4, "GetDescr n rt t idx l len", "Get USB descr rt/t/idx (lang = l) on node n",	cmdGetDescr},    {"gd", 2, NULL, NULL, cmdGetDescr},    #endif#ifdef INCLUDE_USB_KEYBOARD    {"kbdInit", 4, "kbdInit", "Initializes USB keyboard application", cmdKbdInit},    {"kbdDown", 4, "kbdDown", "Shuts down USB keyboard application", cmdKbdDown},    {"kbdPoll", 4, "kbdPoll", "Polls USB keyboard  for input", cmdKbdPoll},#endif#ifdef INCLUDE_USB_MOUSE    {"mouseTest", 6, "mouseTest", "Tests USB mouse application", cmdMouseTest},#endif#ifdef INCLUDE_USB_MS_BULKONLY    {"bulkInit", 5, "bulkInit [n]", "Initializes USB Mass Storage (Bulk) driver with Fdisk Number [n]", cmdBulkInit},#ifdef INCLUDE_DOSFS    {"bulkFormat", 5, "bulkFormat", "Formats USB Mass Storage (Bulk) disk in FAT32", cmdBulkFormat},#endif    {"bulkWrite", 5, "bulkWrite [n]", "Writes n bytes to File in USB Mass Storage (Bulk)", cmdBulkWrite},    {"bulkRead", 5, "bulkRead [n]", "Reads and print contents in File from USB Mass Storage (Bulk)", cmdBulkRead},    {"bulkDown", 5, "bulkDown", "Shuts down USB Mass Storage (Bulk) driver", cmdBulkDown},    {"bulkShow", 6, "bulkShow", "Shows USB Mass Storage (Bulk)device descriptor", cmdBulkShow},    {"fdiskShow", 6, "fdiskShow [n]", "Shows USB Mass Storage (Bulk)device Disk Part [n]", cmdfdiskShow},#endif    {"Help", 4, "Help/?", "Displays list of supported commands.", CmdParserHelpFunc},    {"?", 1, NULL, NULL, CmdParserHelpFunc},    {"Exit", 4, "Exit/Quit/Bye", "Exits program.", CmdParserExitFunc},    {"Quit", 1, NULL, NULL, CmdParserExitFunc},    {"Bye", 3, NULL, NULL, CmdParserExitFunc},    {NULL, 0, NULL, NULL, NULL}    };UINT16 usbTool (void)    {    UINT16 s;		    setvbuf (stdin, NULL, _IONBF, 0);    setvbuf (stdout, NULL, _IONBF, 0);    fprintf (stdout, PGM_NAME ": " PGM_DESCR ", version " PGM_VERSION "\n"	PGM_COPYRIGHT "\n\n");		 cmdUsbInit(0,0,0,stdout);   while ((s = PromptAndExecCmd (NULL, PROMPT, stdin, stdout, cmdTable)) 	== RET_CONTINUE)	;    if (s == RET_OK)	fprintf (stdout, PGM_NAME " terminating normally.\n");    else if (s == RET_ERROR)	fprintf (stdout, PGM_NAME " terminating with error.\n");    else	fprintf (stdout, PGM_NAME " terminating with code %d.\n", s);    return s;    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -