2020-08-01 21:05:35 +08:00
|
|
|
/**
|
|
|
|
* @file Device.h
|
2020-08-25 14:39:05 +08:00
|
|
|
* @author Rick Chan
|
2020-08-01 21:05:35 +08:00
|
|
|
* @brief
|
|
|
|
* @version 0.1
|
|
|
|
* @date 2020-04-01
|
|
|
|
*
|
|
|
|
* @copyright Copyright (c) 2020
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#ifndef DEVICE_H
|
|
|
|
#define DEVICE_H
|
|
|
|
|
|
|
|
#include "Type.h"
|
|
|
|
|
|
|
|
typedef enum DEVID
|
|
|
|
{
|
|
|
|
EC_DEV_FST = -1,
|
|
|
|
EC_DEV_DEMO00 = 0,
|
|
|
|
EC_DEV_DEMO01 = 1,
|
|
|
|
EC_DEV_DEMO10 = 2,
|
|
|
|
EC_DEV_DEMO11 = 3,
|
|
|
|
EC_DEV_END
|
|
|
|
}EU_DEVID;
|
|
|
|
|
|
|
|
typedef void (*IntHdl)(uint32_t id, void* arg);
|
|
|
|
|
|
|
|
typedef enum PW_LEVEL
|
|
|
|
{
|
|
|
|
EC_PW_S0, // Normal
|
|
|
|
EC_PW_S1, // Sleep
|
|
|
|
EC_PW_S2, // Stop
|
|
|
|
EC_PW_S3, // Standby
|
|
|
|
EC_PW_S4, // Poweroff
|
|
|
|
}EU_PW_LEVEL;
|
|
|
|
|
|
|
|
typedef struct DEVICE
|
|
|
|
{
|
|
|
|
uint32_t Opened;
|
|
|
|
EU_ERR (*Init)(struct DEVICE*); // Unnecessary
|
|
|
|
EU_ERR (*Open)(struct DEVICE*); // Necessary
|
|
|
|
void (*Close)(struct DEVICE*); // Unnecessary
|
|
|
|
int64_t (*Read)(struct DEVICE*, void*, void*, int64_t, uint32_t); // Unnecessary
|
|
|
|
int64_t (*Write)(struct DEVICE*, void*, void*, int64_t, uint32_t); // Unnecessary
|
|
|
|
int (*Seek)(struct DEVICE*, int); // Unnecessary
|
|
|
|
EU_ERR (*IOCtl)(struct DEVICE*, uint32_t, void*, void*); // Unnecessary
|
|
|
|
EU_ERR (*PwCtl)(struct DEVICE*, EU_PW_LEVEL); // Unnecessary
|
|
|
|
EU_ERR (*EnInt)(struct DEVICE*, void*, IntHdl, void*); // Unnecessary
|
|
|
|
EU_ERR (*DisInt)(struct DEVICE*, void*); // Unnecessary
|
|
|
|
void* Prv; // Unnecessary
|
|
|
|
}ST_DEVICE;
|
|
|
|
|
|
|
|
|
|
|
|
void DevInit(void);
|
|
|
|
EU_ERR DevOpen(EU_DEVID id);
|
|
|
|
void DevClose(EU_DEVID id);
|
|
|
|
int64_t DevRead(EU_DEVID id, void* ex, void* buf, int64_t nbytes, uint32_t timeout);
|
|
|
|
int64_t DevWrite(EU_DEVID id, void* ex, void* buf, int64_t nbytes, uint32_t timeout);
|
|
|
|
EU_ERR DevIOCtl(EU_DEVID id, uint32_t ctl, void* ex, void* data);
|
|
|
|
EU_ERR DevPwCtl(EU_DEVID id, EU_PW_LEVEL level);
|
|
|
|
EU_ERR DevEnInt(EU_DEVID id, void* ex, IntHdl handle, void* arg);
|
|
|
|
EU_ERR DevDisInt(EU_DEVID id, void* ex);
|
|
|
|
|
|
|
|
typedef enum IOCTL
|
|
|
|
{
|
|
|
|
EC_IOCTL_DEMO_CTL0,
|
|
|
|
EC_IOCTL_DEMO_CTL1,
|
|
|
|
EC_IOCTL_DEM1_CTL1
|
|
|
|
}EU_IOCTL;
|
|
|
|
|
|
|
|
#endif // DEVICE_H
|