mirror of
https://github.com/pine64/bl_iot_sdk.git
synced 2024-11-01 23:28:17 +00:00
271 lines
7.5 KiB
C
271 lines
7.5 KiB
C
|
/*
|
||
|
* Copyright (C) 2015-2017 Alibaba Group Holding Limited
|
||
|
*/
|
||
|
|
||
|
#ifndef AOS_VFS_H
|
||
|
#define AOS_VFS_H
|
||
|
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/stat.h>
|
||
|
#include "vfs_dir.h"
|
||
|
#include "vfs_inode.h"
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/*section for ADC IOCTRL*/
|
||
|
#define IOCTL_ADC_TRIGGER_DISABLE (0)
|
||
|
#define IOCTL_ADC_TRIGGER_ENABLE_HIGH_LEVEL (1)
|
||
|
#define IOCTL_ADC_TRIGGER_ENABLE_LOW_LEVEL (2)
|
||
|
#define IOCTL_ADC_TRIGGER_ENABLE_LEVEL_CUSTOM_HIGHER (3)
|
||
|
#define IOCTL_ADC_TRIGGER_ENABLE_LEVEL_CUSTOM_LOWER (4)
|
||
|
|
||
|
/* section for ROMFS IOCCTRL */
|
||
|
#define IOCTL_ROMFS_GET_FILEBUF (1)
|
||
|
|
||
|
/*section for GPIO IOCTRL*/
|
||
|
#define IOCTL_GPIO_PULL_UP (0) /* PULLUP */
|
||
|
#define IOCTL_GPIO_PULL_DOWN (1) /* PULLDOWN */
|
||
|
#define IOCTL_GPIO_PULL_NONE (2) /* PULLNONE */
|
||
|
|
||
|
/*section for GPIO OUTPUT*/
|
||
|
#define OUTPUT_LOW (0) /* low level output */
|
||
|
#define OUTPUT_HIGH (1) /* high level output */
|
||
|
#define OUTPUT_TOGGLE (2) /* toggle output */
|
||
|
|
||
|
/**
|
||
|
* Init vfs.
|
||
|
*
|
||
|
* @param[in] NULL
|
||
|
*
|
||
|
* @return 0 on success, negative error on failure.
|
||
|
*/
|
||
|
int vfs_init(void);
|
||
|
|
||
|
/**
|
||
|
* Open the file or device by its path.
|
||
|
*
|
||
|
* @param[in] path the path of the file or device to open.
|
||
|
* @param[in] flags the mode of open operation.
|
||
|
*
|
||
|
* @return the new file descriptor, negative error on failure.
|
||
|
*/
|
||
|
int aos_open(const char *path, int flags);
|
||
|
|
||
|
/**
|
||
|
* Close the file or device by its file descriptor.
|
||
|
*
|
||
|
* @param[in] fd the file descriptor of the file or device.
|
||
|
*
|
||
|
* @return 0 on success, negative error on failure.
|
||
|
*/
|
||
|
int aos_close(int fd);
|
||
|
|
||
|
/**
|
||
|
* Read the contents of a file or device into a buffer.
|
||
|
*
|
||
|
* @param[in] fd the file descriptor of the file or device.
|
||
|
* @param[in] nbytes the number of bytes to read.
|
||
|
* @param[out] buf the buffer to read in to.
|
||
|
*
|
||
|
* @return The number of bytes read, 0 at end of file, negative error on failure.
|
||
|
*/
|
||
|
ssize_t aos_read(int fd, void *buf, size_t nbytes);
|
||
|
|
||
|
/**
|
||
|
* Write the contents of a buffer to file or device.
|
||
|
*
|
||
|
* @param[in] fd the file descriptor of the file or device.
|
||
|
* @param[in] nbytes the number of bytes to write.
|
||
|
* @param[in] buf the buffer to write from.
|
||
|
*
|
||
|
* @return The number of bytes written, negative error on failure.
|
||
|
*/
|
||
|
ssize_t aos_write(int fd, const void *buf, size_t nbytes);
|
||
|
|
||
|
/**
|
||
|
* This is a wildcard API for sending controller specific commands.
|
||
|
*
|
||
|
* @param[in] fd the file descriptior of the file or device.
|
||
|
* @param[in] cmd A controller specific command.
|
||
|
* @param[in] arg Argument to the command, interpreted according to the command.
|
||
|
*
|
||
|
* @return any return from the command.
|
||
|
*/
|
||
|
int aos_ioctl(int fd, int cmd, unsigned long arg);
|
||
|
|
||
|
/**
|
||
|
* A mechanism to multiplex input/output over a set of file descriptors.
|
||
|
* For every file descriptor provided, poll() examines it for any events registered for that particular file descriptor.
|
||
|
*
|
||
|
* @param[in] fds a point to the array of pollfd struct carrying a file descriptor and bitmasks of events.
|
||
|
* @param[in] nfhs number of file descriptors.
|
||
|
* @param[in] timeout timer value to timeout or -1 for loop forever.
|
||
|
*
|
||
|
* @return number of file descriptors selected (for which revents is non-zero). 0 if timed out with nothing selected. -1 for error.
|
||
|
*/
|
||
|
int aos_poll(struct pollfd *fds, int nfds, int timeout);
|
||
|
|
||
|
/**
|
||
|
* Performs one of the operations described below on the open file descriptor, The operation is determined by cmd.
|
||
|
*
|
||
|
* @param[in] fd the file descriptor of the file or device.
|
||
|
* @param[in] cmd the operation of the file or device.
|
||
|
* @param[in] val it depends on whether cmd need params.
|
||
|
*
|
||
|
* @return 0 on success, negative error on failure.
|
||
|
*/
|
||
|
int aos_fcntl(int fd, int cmd, int val);
|
||
|
|
||
|
/**
|
||
|
* Move the file position to a given offset from a given location.
|
||
|
*
|
||
|
* @param[in] fd the file descriptor of the file.
|
||
|
* @param[in] offset The offset from whence to move to.
|
||
|
* @param[in] whence The start of where to seek.
|
||
|
* SEEK_SET to start from beginning of file.
|
||
|
* SEEK_CUR to start from current position in file.
|
||
|
* SEEK_END to start from end of file.
|
||
|
*
|
||
|
* @return The new offset of the file.
|
||
|
*/
|
||
|
off_t aos_lseek(int fd, off_t offset, int whence);
|
||
|
|
||
|
/**
|
||
|
* Flush any buffers associated with the file.
|
||
|
*
|
||
|
* @param[in] fd the file descriptor of the file.
|
||
|
*
|
||
|
* @return 0 on success, negative error code on failure.
|
||
|
*/
|
||
|
int aos_sync(int fd);
|
||
|
|
||
|
/**
|
||
|
* Store information about the file in a stat structure.
|
||
|
*
|
||
|
* @param[in] path The path of the file to find information about.
|
||
|
* @param[out] st The stat buffer to write to.
|
||
|
*
|
||
|
* @return 0 on success, negative error code on failure.
|
||
|
*/
|
||
|
int aos_stat(const char *path, struct stat *st);
|
||
|
|
||
|
/**
|
||
|
* Remove a file from the filesystem.
|
||
|
*
|
||
|
* @param[in] path The path of the file to remove.
|
||
|
*
|
||
|
* @return 0 on success, negative error code on failure.
|
||
|
*/
|
||
|
int aos_unlink(const char *path);
|
||
|
|
||
|
/**
|
||
|
* Rename a file in the filesystem.
|
||
|
*
|
||
|
* @param[in] oldpath The path of the file to rename.
|
||
|
* @param[in] newpath The path to rename it to.
|
||
|
*
|
||
|
* @return 0 on success, negative error code on failure.
|
||
|
*/
|
||
|
int aos_rename(const char *oldpath, const char *newpath);
|
||
|
|
||
|
/**
|
||
|
* Open a directory on the filesystem.
|
||
|
*
|
||
|
* @param[in] path the path of the directory to open.
|
||
|
*
|
||
|
* @return a point of directory stream on success, NULL on failure.
|
||
|
*/
|
||
|
aos_dir_t *aos_opendir(const char *path);
|
||
|
|
||
|
/**
|
||
|
* Close a directory.
|
||
|
*
|
||
|
* @param[in] dir the handle of the directory to close.
|
||
|
*
|
||
|
* @return 0 on success, negative error code on failure.
|
||
|
*/
|
||
|
int aos_closedir(aos_dir_t *dir);
|
||
|
|
||
|
/**
|
||
|
* Read the next directory entry.
|
||
|
*
|
||
|
* @param[in] dir the handle of the directory to read.
|
||
|
*
|
||
|
* @return a pointer to a dirent structure.
|
||
|
*/
|
||
|
aos_dirent_t *aos_readdir(aos_dir_t *dir);
|
||
|
|
||
|
/**
|
||
|
* Create the directory, if they do not already exist.
|
||
|
*
|
||
|
* @param[in] path the path of the directory.
|
||
|
*
|
||
|
* @return 0 on success, negative error code on failure.
|
||
|
*/
|
||
|
int aos_mkdir(const char *path);
|
||
|
|
||
|
/**
|
||
|
* Remove a directory.
|
||
|
*
|
||
|
* @param[in] path the path of the directory.
|
||
|
*
|
||
|
* @return 0 on success, negative error code on failure.
|
||
|
*/
|
||
|
int aos_rmdir(const char *path);
|
||
|
|
||
|
/**
|
||
|
* Reset the position of a directory stream to the beginning of a directory.
|
||
|
*
|
||
|
* @param[in] dir the handle of the directory.
|
||
|
*
|
||
|
* @return none.
|
||
|
*/
|
||
|
void aos_rewinddir(aos_dir_t *dir);
|
||
|
|
||
|
/**
|
||
|
* Obtain the current location associated with the directory stream specified by dirp.
|
||
|
*
|
||
|
* @param[in] dir the handle of the directory.
|
||
|
*
|
||
|
* @return 0 on success, negative error code on failure.
|
||
|
*/
|
||
|
long aos_telldir(aos_dir_t *dir);
|
||
|
|
||
|
/**
|
||
|
* Reset the position of a directory stream to the beginning of a directory.
|
||
|
*
|
||
|
* @param[in] dir the handle of the directory.
|
||
|
* @param[in] loc the position of the directory.
|
||
|
*
|
||
|
* @return none.
|
||
|
*/
|
||
|
void aos_seekdir(aos_dir_t *dir, long loc);
|
||
|
|
||
|
/**
|
||
|
* Store information about the file system in a statfs structure.
|
||
|
*
|
||
|
* @param[in] path The path of the file system to find information about.
|
||
|
* @param[out] buf The statfs buffer to write to.
|
||
|
*
|
||
|
* @return 0 on success, negative error code on failure.
|
||
|
*/
|
||
|
int aos_statfs(const char *path, struct statfs *buf);
|
||
|
|
||
|
/**
|
||
|
* get access info.
|
||
|
*
|
||
|
* @param path The path of the file.
|
||
|
* @param mode the info to get.
|
||
|
*
|
||
|
* @return 0 on success, negative error code on failure.
|
||
|
*/
|
||
|
int aos_access(const char *path, int amode);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* AOS_VFS_H */
|