MicroShellというライブラリのバッファ編集機能に惹かれて強引にSerialクラスっぽくラップしたもの
https://www.cubeatsystems.com/microshell/index.html 様に感謝 やっつけすぎて申し訳ないが技量が足りない...
MicroShell.cpp
- Committer:
- beingblock
- Date:
- 2017-10-19
- Revision:
- 0:ff53d8f5146a
File content as of revision 0:ff53d8f5146a:
#include "MicroShell.h" #include "core/microshell.h" Serial *msh_con = NULL; MICROSHELL msh_struct; MSCORE_ACTION msh_action; void msh_putc(char c) { msh_con -> putc(c); } char msh_getc(void) { return msh_con -> getc(); } void msh_act_hook(MSCORE_ACTION action) { msh_action = action; } MicroShell::MicroShell(PinName tx, PinName rx, int baud) { if(msh_con==NULL) { msh_con = new Serial(tx,rx,baud); microshell_init(&msh_struct, msh_putc, msh_getc, msh_act_hook); } } void MicroShell::putc(int c) { msh_putc(c); } void MicroShell::puts(const char *s) { while (*s) { msh_putc(*s++); } } int MicroShell::getc() { return msh_getc(); } char *MicroShell::gets(char *s, int size) { return microshell_getline(&msh_struct, s, size); } int MicroShell::printf(const char* format, ...) { int ret; va_list args; va_start(args, format); ret = msh_con -> vprintf(format, args); va_end(args); return ret; } int MicroShell::scanf(const char* format, ...) { char buf[256]; microshell_getline(&msh_struct, buf, sizeof(buf)); int ret; va_list args; va_start(args, format); ret = vsscanf(buf, format, args); va_end(args); return ret; } int MicroShell::vprintf(const char* format, std::va_list args) { int ret; ret = msh_con -> vprintf(format, args); return ret; } int MicroShell::vscanf(const char* format, std::va_list args) { char buf[256]; microshell_getline(&msh_struct, buf, sizeof(buf)); int ret; ret = vsscanf(buf, format, args); return ret; }