📄 mscdbridge.h
字号:
/************************************************************* * Philips USB Mass Storage Bridge Interface * * (c) 2002 Koninklijke Philips Electronics N.V., All rights reserved * * This source code and any compilation or derivative thereof is the * proprietary information of Koninklijke Philips Electronics N.V. * and is confidential in nature. * Under no circumstances is this software to be exposed to or placed * under an Open Source License of any type without the expressed * written permission of Koninklijke Philips Electronics N.V. * * File Name: mscdbridge.h * * History: * * Version Date Author Comments * ------------------------------------------------- * 1.0 09/23/02 SYARRA Initial Creation * * Note: use tab space 4 *************************************************************/#ifndef __MSCDBRIDGE_H__ #define __MSCDBRIDGE_H__/* Mass Storage Class Driver Request Block */typedef struct mscd_req { struct mscd_req *next; // next request in the queue unsigned char req_type; // request type unsigned char status; // status of the request unsigned char *data_buff; // data buffer pointer unsigned long req_data_len; // requested data length unsigned long res_data_len; // response data length void (*complete)(struct mscd_req *req); // pointer to completion callback routine void *priv_data; // sender private data} mscd_req_t;/* Mass storage class driver bridge request is similar to mass storage class driver req */typedef mscd_req_t mscdbridge_req_t;#define mscd_fill_req(req, type, buff, req_len, callback, priv) \ (req)->next = NULL; \ (req)->req_type = type; \ (req)->status = 0xFF; \ (req)->data_buff = buff; \ (req)->req_data_len = req_len; \ (req)->res_data_len = 0x00; \ (req)->complete = callback; \ (req)->priv_data = priv/* mscd_req req_type field values */#define MSCDBRIDGE_INIT 0x00 // mass storage brigde init#define MSCDBRIDGE_DEINIT 0x01 // mass storage brigde de-init#define MSCDBRIDGE_RESET 0x02 // Reset mass storage device#define MSCD_COMMAND 0x03 // receive ms command#define MSCD_COMMAND_RES 0x04 // send command response#define MSCD_READ 0x05 // Read from USB host#define MSCD_WRITE 0x06 // write to USB host/* mscd_req status field values */#define MSCD_SUCCESS 0x00#define MSCD_FAILED 0x01#define MSCD_ERROR 0x02#define MSCD_PENDING 0x04/* * functional Interface mass storage bridge -> mass storage class driver * * In linux the following requests are processed by the mass storage class driver * MSCD_READ * MSCD_WRITE * * The response to the request is sent in the call back functions. */extern int devmscd_submit_req(mscd_req_t *req);extern int devmscd_cancel_req(mscd_req_t *req);/* * functional Interface mass storage class driver -> mass storage bridge * In linux implementation it is assumed that these functions return * immediately (because they are being executed in ISR context. Might be * bridge bridge should run under seperate thread.) If a call back function is * provided, the result of the request will be sent in the call back function * or else the return value is treated as the result of the request * * The following requests should be processed by the bridge * MSBRIDGE_INIT * MSBRIDGE_DEINIT * MSBRIDGE_OPEN * MSBRIDGE_CLOSE * MSBRIDGE_RESET * MSCD_COMMAND */extern int mscdbridge_submit_req(mscdbridge_req_t *req);extern int mscdbridge_cancel_req(mscdbridge_req_t *req);#endif /* __MSCDBRIDGE_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -