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

📄 devclnt.h

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 H
字号:
/* -*-C-*- * * $Revision: 1.3 $ *   $Author: mgray $ *     $Date: 1996/07/12 16:46:03 $ * * Copyright (c) 1996 Advanced RISC Machines Limited. * All Rights Reserved. * *   Project: ANGEL * *     Title: Public client interface to devices */#ifndef angel_devclnt_h#define angel_devclnt_h/* * This header exports the public interface to Angel-compliant device * drivers. * * They are intended to be used solely by Angel, not by the User * Application.  See devappl.h for the User Application interface to * the device drivers. */#include "devices.h"/* General purpose constants, macros, enums, typedefs *//* * possible channels at device level * * XXX * * these are used as array indices, so be specific about their values */typedef enum DevChanID {  DC_DBUG = 0,                  /* reliable debug packets                                 * containing SDBG, CLIB,UDBG, etc.) */  DC_APPL = 1,                  /* application packets */  DC_NUM_CHANNELS} DevChanID;/* Publically-accessible globals *//* none *//* Public functions *//* * Function: angel_DeviceWrite *  Purpose: The main entry point for asynchronous writes to a device. * *   Params: *              Input: devID     index of the device to write to *                     buff      data to write *                     length    how much data to write *                     callback  callback here when write finished *                                or error *                     cb_data   data to be passed to callback *                     chanID    device channel to use *             Output: - *             In/Out: - * *            Returns: DE_OKAY     write request is underway            *                     DE_NO_DEV   no such device                       *                     DE_BAD_DEV  device does not support angel writes *                     DE_BAD_CHAN no such device channel               *                     DE_BUSY     device busy with another write       *                     DE_INVAL    silly length                         * *      Reads globals: - *   Modifies globals: - * * Other side effects: - * * Commence asynchronous transmission of a buffer on a device.  The * callback will occur when the write completes or if there is an * error. * * This must be called for each packet to be sent. */DevError angel_DeviceWrite(DeviceID devID, p_Buffer buff,                           unsigned length, DevWrite_CB_Fn callback,                           void *cb_data, DevChanID chanID);/* * Function: angel_DeviceRegisterRead *  Purpose: The main entry point for asynchronous reads from a device. * *   Params: *              Input: devID     index of the device to read from *                     callback  callback here when read finished *                                or error *                     cb_data   data to be passed to callback *                     get_buff  callback to be used to acquire buffer *                                for incoming packets *                     getb_data data to be passed to get_buff *                     chanID    device channel to use *             Output: - *             In/Out: - * *            Returns: DE_OKAY     read request is underway            *                     DE_NO_DEV   no such device                       *                     DE_BAD_DEV  device does not support angel reads *                     DE_BAD_CHAN no such device channel               *                     DE_BUSY     device busy with another read       *                     DE_INVAL    silly length                         * *      Reads globals: - *   Modifies globals: - * * Other side effects: - * * Register asynchronous packet read from a device.  The callback will * occur when the read completes or if there is an error. * * This is persistent: the read remains registered for all incoming * packets on the device channel. */DevError angel_DeviceRegisterRead(DeviceID devID,                                  DevRead_CB_Fn callback, void *cb_data,                                  DevGetBuff_Fn get_buff, void *getb_data,                                  DevChanID chanID);/* * Function: angel_DeviceControl *  Purpose: Call a control function for a device * *   Params: *              Input: devID     index of the device to control to *                     op        operation to perform *                     arg       parameter depending on op * *            Returns: DE_OKAY     control request is underway            *                     DE_NO_DEV   no such device                       *                     DE_BAD_OP   device does not support operation * *      Reads globals: - *   Modifies globals: - * * Other side effects: - * * Have a device perform a control operation.  Extra parameters vary  * according to the operation requested. */DevError angel_DeviceControl(DeviceID devID, DeviceControl op, void *arg);/* * Function: angel_ReceiveMode *  Purpose: enable or disable reception across all devices * *   Params: *              Input: mode   choose enable or disable * * Pass the mode parameter to the receive_mode control method of each device */void angel_ReceiveMode(DevRecvMode mode);/* * Function: angel_ResetDevices *  Purpose: reset all devices * *   Params: none * * Call the reset control method for each device */void angel_ResetDevices(void);/* * Function: angel_InitialiseDevices *  Purpose: initialise the device driver layer * *   Params: none * * Set up the device driver layer and call the init method for each device */void angel_InitialiseDevices(void);/* * Function: angel_IsAngelDevice *  Purpose: Find out if a device supports Angel packets * *   Params: *              Input: devID     index of the device to control to * *            Returns: TRUE      supports Angel packets *                     FALSE     raw device * *      Reads globals: - *   Modifies globals: - * * Other side effects: - */bool angel_IsAngelDevice(DeviceID devID);#if !defined(MINIMAL_ANGEL) || MINIMAL_ANGEL == 0/* * Function: angel_ApplDeviceHandler *  Purpose: The entry point for User Application Device Driver requests *           in a full functiionality version of Angel. *           It will never be called directly by the User Application, *           but gets called indirectly, via the SWI handler. * *  Params: *      Input: swi_r0    Argument to SWI indicating that  *                       angel_ApplDeviceHandler was to be called.  This *                       will not be used in this function, but is needed *                       by the SWI handler. *             arg_blk   pointer to block of arguments *                       arg_blk[0] is one of *                       angel_SWIreason_ApplDevice_{Read,Write,Yield} *                       which indicates which angel_Device* fn is to *                       be called.  arg_blk[1] - arg_blk[n] are the *                       arguments to the corresponding *                       angel_ApplDevice* function. *             Output: - *             In/Out: - * *            Returns:   whatever the specified angel_Device* function *                       returns. * *      Reads globals: - *   Modifies globals: - * * Other side effects: - * * This has the side effects of angel_Device{Read,Write,Yield} * depending upon which is operation is specified as described above. */DevError angel_ApplDeviceHandler(  unsigned swi_r0, unsigned *arg_blk);#endif /* ndef MINIMAL_ANGEL */#endif /* ndef angel_devclnt_h *//* EOF devclnt.h */

⌨️ 快捷键说明

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