We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Easylogger 一些代码并不是可跨平台移植的,导致可移植的代码和port之间界限不是很清晰
比如elog_file.c使用了libc fopen/fwrite这些函数,虽然libc是标准的,但实际情况是很多嵌入式平台上没有,而使用的如fatfs, littefs等FS接口。进而要求用户手动改elog_file.c文件,其中关于file rotation的部分比较容易出错。最近在一个平台上使用easylogger的时候做了一些修改,在elog_file.c中使用一组自定义的简单文件接口,而在elog_file_port.c中只需要实现这些接口即可
elog_file_port.h
#define ELOG_FILE_INVALID_HANDLE -1 typedef int ElogFileHandle; /* file port */ ElogErrCode elog_file_port_init(void); #ifdef ELOG_FILE_LOCK_ENABLE void elog_file_port_lock(void); void elog_file_port_unlock(void); #define ELOG_FILE_LOCK() elog_file_port_lock() #define ELOG_FILE_UNLOCK() elog_file_port_unlock() #else #define ELOG_FILE_LOCK() #define ELOG_FILE_UNLOCK() #endif void elog_file_port_deinit(void); ElogFileHandle elog_file_port_open_file_append_mode(const char *file_name); bool elog_file_port_is_file_exist(const char *file_name); size_t elog_file_port_get_file_size(ElogFileHandle handle); size_t elog_file_port_write_file(ElogFileHandle handle, const uint8_t *buffer, size_t size); void elog_file_port_remove_file(const char *file_name); void elog_file_port_rename_file(const char* old_file_name, const char* new_file_name); void elog_file_port_close_file(ElogFileHandle handle);
具体这些接口的命名和实现可以讨论, 如果认可这种方式,可以进一步讨论接口机命名,我可以进一步提供PR,包含几个常见文件系统port.
类似的情况还有elog_async.c中包含pthread的代码,如果不支持pthread,用户要修改elog_async.c,并理解async是怎么实现的。如果能有port层,无需理解实现只要按照接口要求实现线程、信号的操作即可。(这个我目前没有实现吗,只是拿出来举例)
The text was updated successfully, but these errors were encountered:
Sorry, something went wrong.
No branches or pull requests
Easylogger 一些代码并不是可跨平台移植的,导致可移植的代码和port之间界限不是很清晰
比如elog_file.c使用了libc fopen/fwrite这些函数,虽然libc是标准的,但实际情况是很多嵌入式平台上没有,而使用的如fatfs, littefs等FS接口。进而要求用户手动改elog_file.c文件,其中关于file rotation的部分比较容易出错。最近在一个平台上使用easylogger的时候做了一些修改,在elog_file.c中使用一组自定义的简单文件接口,而在elog_file_port.c中只需要实现这些接口即可
elog_file_port.h
具体这些接口的命名和实现可以讨论, 如果认可这种方式,可以进一步讨论接口机命名,我可以进一步提供PR,包含几个常见文件系统port.
类似的情况还有elog_async.c中包含pthread的代码,如果不支持pthread,用户要修改elog_async.c,并理解async是怎么实现的。如果能有port层,无需理解实现只要按照接口要求实现线程、信号的操作即可。(这个我目前没有实现吗,只是拿出来举例)
The text was updated successfully, but these errors were encountered: